🔧 npm update
This commit is contained in:
113
node_modules/magic-string/README.md
generated
vendored
113
node_modules/magic-string/README.md
generated
vendored
@@ -1,7 +1,7 @@
|
||||
# magic-string
|
||||
|
||||
<a href="https://travis-ci.org/Rich-Harris/magic-string">
|
||||
<img src="http://img.shields.io/travis/Rich-Harris/magic-string.svg"
|
||||
<a href="https://github.com/Rich-Harris/magic-string/actions/workflows/test.yml">
|
||||
<img src="https://img.shields.io/github/actions/workflow/status/Rich-Harris/magic-string/test.yml"
|
||||
alt="build status">
|
||||
</a>
|
||||
<a href="https://npmjs.org/package/magic-string">
|
||||
@@ -28,7 +28,7 @@ npm i magic-string
|
||||
To use in browser, grab the [magic-string.umd.js](https://unpkg.com/magic-string/dist/magic-string.umd.js) file and add it to your page:
|
||||
|
||||
```html
|
||||
<script src='magic-string.umd.js'></script>
|
||||
<script src="magic-string.umd.js"></script>
|
||||
```
|
||||
|
||||
(It also works with various module systems, if you prefer that sort of thing - it has a dependency on [vlq](https://github.com/Rich-Harris/vlq).)
|
||||
@@ -39,7 +39,7 @@ These examples assume you're in node.js, or something similar:
|
||||
|
||||
```js
|
||||
import MagicString from 'magic-string';
|
||||
import fs from 'fs'
|
||||
import fs from 'fs';
|
||||
|
||||
const s = new MagicString('problems = 99');
|
||||
|
||||
@@ -53,9 +53,9 @@ s.prepend('var ').append(';'); // most methods are chainable
|
||||
s.toString(); // 'var answer = 42;'
|
||||
|
||||
const map = s.generateMap({
|
||||
source: 'source.js',
|
||||
file: 'converted.js.map',
|
||||
includeContent: true
|
||||
source: 'source.js',
|
||||
file: 'converted.js.map',
|
||||
includeContent: true,
|
||||
}); // generates a v3 sourcemap
|
||||
|
||||
fs.writeFileSync('converted.js', s.toString());
|
||||
@@ -66,14 +66,32 @@ You can pass an options argument:
|
||||
|
||||
```js
|
||||
const s = new MagicString(someCode, {
|
||||
// these options will be used if you later call `bundle.addSource( s )` - see below
|
||||
filename: 'foo.js',
|
||||
indentExclusionRanges: [/*...*/],
|
||||
// market source as ignore in DevTools, see below #Bundling
|
||||
ignoreList: false
|
||||
// these options will be used if you later call `bundle.addSource( s )` - see below
|
||||
filename: 'foo.js',
|
||||
indentExclusionRanges: [
|
||||
/*...*/
|
||||
],
|
||||
// mark source as ignore in DevTools, see below #Bundling
|
||||
ignoreList: false,
|
||||
// adjust the incoming position - see below
|
||||
offset: 0,
|
||||
});
|
||||
```
|
||||
|
||||
## Properties
|
||||
|
||||
### s.offset
|
||||
|
||||
Sets the offset property to adjust the incoming position for the following APIs: `slice`, `update`, `overwrite`, `appendLeft`, `prependLeft`, `appendRight`, `prependRight`, `move`, `reset`, and `remove`.
|
||||
|
||||
Example usage:
|
||||
|
||||
```ts
|
||||
const s = new MagicString('hello world', { offset: 0 });
|
||||
s.offset = 6;
|
||||
s.slice() === 'world';
|
||||
```
|
||||
|
||||
## Methods
|
||||
|
||||
### s.addSourcemapLocation( index )
|
||||
@@ -86,11 +104,11 @@ Appends the specified content to the end of the string. Returns `this`.
|
||||
|
||||
### s.appendLeft( index, content )
|
||||
|
||||
Appends the specified `content` at the `index` in the original string. If a range *ending* with `index` is subsequently moved, the insert will be moved with it. Returns `this`. See also `s.prependLeft(...)`.
|
||||
Appends the specified `content` at the `index` in the original string. If a range _ending_ with `index` is subsequently moved, the insert will be moved with it. Returns `this`. See also `s.prependLeft(...)`.
|
||||
|
||||
### s.appendRight( index, content )
|
||||
|
||||
Appends the specified `content` at the `index` in the original string. If a range *starting* with `index` is subsequently moved, the insert will be moved with it. Returns `this`. See also `s.prependRight(...)`.
|
||||
Appends the specified `content` at the `index` in the original string. If a range _starting_ with `index` is subsequently moved, the insert will be moved with it. Returns `this`. See also `s.prependRight(...)`.
|
||||
|
||||
### s.clone()
|
||||
|
||||
@@ -104,15 +122,15 @@ Generates a sourcemap object with raw mappings in array form, rather than encode
|
||||
|
||||
Generates a [version 3 sourcemap](https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit). All options are, well, optional:
|
||||
|
||||
* `file` - the filename where you plan to write the sourcemap
|
||||
* `source` - the filename of the file containing the original source
|
||||
* `includeContent` - whether to include the original content in the map's `sourcesContent` array
|
||||
* `hires` - whether the mapping should be high-resolution. Hi-res mappings map every single character, meaning (for example) your devtools will always be able to pinpoint the exact location of function calls and so on. With lo-res mappings, devtools may only be able to identify the correct line - but they're quicker to generate and less bulky. You can also set `"boundary"` to generate a semi-hi-res mappings segmented per word boundary instead of per character, suitable for string semantics that are separated by words. If sourcemap locations have been specified with `s.addSourcemapLocation()`, they will be used here.
|
||||
- `file` - the filename where you plan to write the sourcemap
|
||||
- `source` - the filename of the file containing the original source
|
||||
- `includeContent` - whether to include the original content in the map's `sourcesContent` array
|
||||
- `hires` - whether the mapping should be high-resolution. Hi-res mappings map every single character, meaning (for example) your devtools will always be able to pinpoint the exact location of function calls and so on. With lo-res mappings, devtools may only be able to identify the correct line - but they're quicker to generate and less bulky. You can also set `"boundary"` to generate a semi-hi-res mappings segmented per word boundary instead of per character, suitable for string semantics that are separated by words. If sourcemap locations have been specified with `s.addSourcemapLocation()`, they will be used here.
|
||||
|
||||
The returned sourcemap has two (non-enumerable) methods attached for convenience:
|
||||
|
||||
* `toString` - returns the equivalent of `JSON.stringify(map)`
|
||||
* `toUrl` - returns a DataURI containing the sourcemap. Useful for doing this sort of thing:
|
||||
- `toString` - returns the equivalent of `JSON.stringify(map)`
|
||||
- `toUrl` - returns a DataURI containing the sourcemap. Useful for doing this sort of thing:
|
||||
|
||||
```js
|
||||
code += '\n//# sourceMappingURL=' + map.toUrl();
|
||||
@@ -166,39 +184,45 @@ Prepends the string with the specified content. Returns `this`.
|
||||
|
||||
### s.prependLeft ( index, content )
|
||||
|
||||
Same as `s.appendLeft(...)`, except that the inserted content will go *before* any previous appends or prepends at `index`
|
||||
Same as `s.appendLeft(...)`, except that the inserted content will go _before_ any previous appends or prepends at `index`
|
||||
|
||||
### s.prependRight ( index, content )
|
||||
|
||||
Same as `s.appendRight(...)`, except that the inserted content will go *before* any previous appends or prepends at `index`
|
||||
Same as `s.appendRight(...)`, except that the inserted content will go _before_ any previous appends or prepends at `index`
|
||||
|
||||
### s.replace( regexpOrString, substitution )
|
||||
|
||||
String replacement with RegExp or string. When using a RegExp, replacer function is also supported. Returns `this`.
|
||||
|
||||
```ts
|
||||
import MagicString from 'magic-string'
|
||||
import MagicString from 'magic-string';
|
||||
|
||||
const s = new MagicString(source)
|
||||
const s = new MagicString(source);
|
||||
|
||||
s.replace('foo', 'bar')
|
||||
s.replace(/foo/g, 'bar')
|
||||
s.replace(/(\w)(\d+)/g, (_, $1, $2) => $1.toUpperCase() + $2)
|
||||
s.replace('foo', 'bar');
|
||||
s.replace(/foo/g, 'bar');
|
||||
s.replace(/(\w)(\d+)/g, (_, $1, $2) => $1.toUpperCase() + $2);
|
||||
```
|
||||
|
||||
The differences from [`String.replace`]((https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace)):
|
||||
The differences from [`String.replace`](<(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace)>):
|
||||
|
||||
- It will always match against the **original string**
|
||||
- It mutates the magic string state (use `.clone()` to be immutable)
|
||||
|
||||
### s.replaceAll( regexpOrString, substitution )
|
||||
|
||||
Same as `s.replace`, but replace all matched strings instead of just one.
|
||||
If `substitution` is a regex, then it must have the global (`g`) flag set, or a `TypeError` is thrown. Matches the behavior of the bultin [`String.property.replaceAll`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll).
|
||||
If `regexpOrString` is a regex, then it must have the global (`g`) flag set, or a `TypeError` is thrown. Matches the behavior of the builtin [`String.property.replaceAll`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll). Returns `this`.
|
||||
|
||||
### s.remove( start, end )
|
||||
|
||||
Removes the characters from `start` to `end` (of the original string, **not** the generated string). Removing the same content twice, or making removals that partially overlap, will cause an error. Returns `this`.
|
||||
|
||||
### s.reset( start, end )
|
||||
|
||||
Resets the characters from `start` to `end` (of the original string, **not** the generated string).
|
||||
It can be used to restore previously removed characters and discard unwanted changes.
|
||||
|
||||
### s.slice( start, end )
|
||||
|
||||
Returns the content of the generated string that corresponds to the slice between `start` and `end` of the original string. Throws error if the indices are for characters that were already removed.
|
||||
@@ -243,31 +267,32 @@ To concatenate several sources, use `MagicString.Bundle`:
|
||||
const bundle = new MagicString.Bundle();
|
||||
|
||||
bundle.addSource({
|
||||
filename: 'foo.js',
|
||||
content: new MagicString('var answer = 42;')
|
||||
filename: 'foo.js',
|
||||
content: new MagicString('var answer = 42;'),
|
||||
});
|
||||
|
||||
bundle.addSource({
|
||||
filename: 'bar.js',
|
||||
content: new MagicString('console.log( answer )')
|
||||
filename: 'bar.js',
|
||||
content: new MagicString('console.log( answer )'),
|
||||
});
|
||||
|
||||
// Sources can be marked as ignore-listed, which provides a hint to debuggers
|
||||
// to not step into this code and also don't show the source files depending
|
||||
// on user preferences.
|
||||
bundle.addSource({
|
||||
filename: 'some-3rdparty-library.js',
|
||||
content: new MagicString('function myLib(){}'),
|
||||
ignoreList: false // <--
|
||||
})
|
||||
filename: 'some-3rdparty-library.js',
|
||||
content: new MagicString('function myLib(){}'),
|
||||
ignoreList: false, // <--
|
||||
});
|
||||
|
||||
// Advanced: a source can include an `indentExclusionRanges` property
|
||||
// alongside `filename` and `content`. This will be passed to `s.indent()`
|
||||
// - see documentation above
|
||||
|
||||
bundle.indent() // optionally, pass an indent string, otherwise it will be guessed
|
||||
.prepend('(function () {\n')
|
||||
.append('}());');
|
||||
bundle
|
||||
.indent() // optionally, pass an indent string, otherwise it will be guessed
|
||||
.prepend('(function () {\n')
|
||||
.append('}());');
|
||||
|
||||
bundle.toString();
|
||||
// (function () {
|
||||
@@ -277,9 +302,9 @@ bundle.toString();
|
||||
|
||||
// options are as per `s.generateMap()` above
|
||||
const map = bundle.generateMap({
|
||||
file: 'bundle.js',
|
||||
includeContent: true,
|
||||
hires: true
|
||||
file: 'bundle.js',
|
||||
includeContent: true,
|
||||
hires: true,
|
||||
});
|
||||
```
|
||||
|
||||
@@ -288,7 +313,7 @@ As an alternative syntax, if you a) don't have `filename` or `indentExclusionRan
|
||||
```js
|
||||
const bundle = new MagicString.Bundle();
|
||||
const source = new MagicString(someCode, {
|
||||
filename: 'foo.js'
|
||||
filename: 'foo.js',
|
||||
});
|
||||
|
||||
bundle.addSource(source);
|
||||
|
||||
475
node_modules/magic-string/dist/magic-string.cjs.d.ts
generated
vendored
475
node_modules/magic-string/dist/magic-string.cjs.d.ts
generated
vendored
@@ -1,264 +1,289 @@
|
||||
export interface BundleOptions {
|
||||
intro?: string;
|
||||
separator?: string;
|
||||
intro?: string;
|
||||
separator?: string;
|
||||
}
|
||||
|
||||
export interface SourceMapOptions {
|
||||
/**
|
||||
* Whether the mapping should be high-resolution.
|
||||
* Hi-res mappings map every single character, meaning (for example) your devtools will always
|
||||
* be able to pinpoint the exact location of function calls and so on.
|
||||
* With lo-res mappings, devtools may only be able to identify the correct
|
||||
* line - but they're quicker to generate and less bulky.
|
||||
* You can also set `"boundary"` to generate a semi-hi-res mappings segmented per word boundary
|
||||
* instead of per character, suitable for string semantics that are separated by words.
|
||||
* If sourcemap locations have been specified with s.addSourceMapLocation(), they will be used here.
|
||||
*/
|
||||
hires?: boolean | 'boundary';
|
||||
/**
|
||||
* The filename where you plan to write the sourcemap.
|
||||
*/
|
||||
file?: string;
|
||||
/**
|
||||
* The filename of the file containing the original source.
|
||||
*/
|
||||
source?: string;
|
||||
/**
|
||||
* Whether to include the original content in the map's sourcesContent array.
|
||||
*/
|
||||
includeContent?: boolean;
|
||||
/**
|
||||
* Whether the mapping should be high-resolution.
|
||||
* Hi-res mappings map every single character, meaning (for example) your devtools will always
|
||||
* be able to pinpoint the exact location of function calls and so on.
|
||||
* With lo-res mappings, devtools may only be able to identify the correct
|
||||
* line - but they're quicker to generate and less bulky.
|
||||
* You can also set `"boundary"` to generate a semi-hi-res mappings segmented per word boundary
|
||||
* instead of per character, suitable for string semantics that are separated by words.
|
||||
* If sourcemap locations have been specified with s.addSourceMapLocation(), they will be used here.
|
||||
*/
|
||||
hires?: boolean | 'boundary';
|
||||
/**
|
||||
* The filename where you plan to write the sourcemap.
|
||||
*/
|
||||
file?: string;
|
||||
/**
|
||||
* The filename of the file containing the original source.
|
||||
*/
|
||||
source?: string;
|
||||
/**
|
||||
* Whether to include the original content in the map's sourcesContent array.
|
||||
*/
|
||||
includeContent?: boolean;
|
||||
}
|
||||
|
||||
export type SourceMapSegment =
|
||||
| [number]
|
||||
| [number, number, number, number]
|
||||
| [number, number, number, number, number];
|
||||
| [number]
|
||||
| [number, number, number, number]
|
||||
| [number, number, number, number, number];
|
||||
|
||||
export interface DecodedSourceMap {
|
||||
file: string;
|
||||
sources: string[];
|
||||
sourcesContent?: string[];
|
||||
names: string[];
|
||||
mappings: SourceMapSegment[][];
|
||||
x_google_ignoreList?: number[];
|
||||
file: string;
|
||||
sources: string[];
|
||||
sourcesContent?: string[];
|
||||
names: string[];
|
||||
mappings: SourceMapSegment[][];
|
||||
x_google_ignoreList?: number[];
|
||||
}
|
||||
|
||||
export class SourceMap {
|
||||
constructor(properties: DecodedSourceMap);
|
||||
constructor(properties: DecodedSourceMap);
|
||||
|
||||
version: number;
|
||||
file: string;
|
||||
sources: string[];
|
||||
sourcesContent?: string[];
|
||||
names: string[];
|
||||
mappings: string;
|
||||
x_google_ignoreList?: number[];
|
||||
version: number;
|
||||
file: string;
|
||||
sources: string[];
|
||||
sourcesContent?: string[];
|
||||
names: string[];
|
||||
mappings: string;
|
||||
x_google_ignoreList?: number[];
|
||||
debugId?: string;
|
||||
|
||||
/**
|
||||
* Returns the equivalent of `JSON.stringify(map)`
|
||||
*/
|
||||
toString(): string;
|
||||
/**
|
||||
* Returns a DataURI containing the sourcemap. Useful for doing this sort of thing:
|
||||
* `generateMap(options?: SourceMapOptions): SourceMap;`
|
||||
*/
|
||||
toUrl(): string;
|
||||
/**
|
||||
* Returns the equivalent of `JSON.stringify(map)`
|
||||
*/
|
||||
toString(): string;
|
||||
/**
|
||||
* Returns a DataURI containing the sourcemap. Useful for doing this sort of thing:
|
||||
* `generateMap(options?: SourceMapOptions): SourceMap;`
|
||||
*/
|
||||
toUrl(): string;
|
||||
}
|
||||
|
||||
export class Bundle {
|
||||
constructor(options?: BundleOptions);
|
||||
/**
|
||||
* Adds the specified source to the bundle, which can either be a `MagicString` object directly,
|
||||
* or an options object that holds a magic string `content` property and optionally provides
|
||||
* a `filename` for the source within the bundle, as well as an optional `ignoreList` hint
|
||||
* (which defaults to `false`). The `filename` is used when constructing the source map for the
|
||||
* bundle, to identify this `source` in the source map's `sources` field. The `ignoreList` hint
|
||||
* is used to populate the `x_google_ignoreList` extension field in the source map, which is a
|
||||
* mechanism for tools to signal to debuggers that certain sources should be ignored by default
|
||||
* (depending on user preferences).
|
||||
*/
|
||||
addSource(source: MagicString | { filename?: string, content: MagicString, ignoreList?: boolean }): Bundle;
|
||||
append(str: string, options?: BundleOptions): Bundle;
|
||||
clone(): Bundle;
|
||||
generateMap(options?: SourceMapOptions): Omit<SourceMap, 'sourcesContent'> & { sourcesContent: Array<string | null> };
|
||||
generateDecodedMap(options?: SourceMapOptions): Omit<DecodedSourceMap, 'sourcesContent'> & { sourcesContent: Array<string | null> };
|
||||
getIndentString(): string;
|
||||
indent(indentStr?: string): Bundle;
|
||||
indentExclusionRanges: ExclusionRange | Array<ExclusionRange>;
|
||||
prepend(str: string): Bundle;
|
||||
toString(): string;
|
||||
trimLines(): Bundle;
|
||||
trim(charType?: string): Bundle;
|
||||
trimStart(charType?: string): Bundle;
|
||||
trimEnd(charType?: string): Bundle;
|
||||
isEmpty(): boolean;
|
||||
length(): number;
|
||||
constructor(options?: BundleOptions);
|
||||
/**
|
||||
* Adds the specified source to the bundle, which can either be a `MagicString` object directly,
|
||||
* or an options object that holds a magic string `content` property and optionally provides
|
||||
* a `filename` for the source within the bundle, as well as an optional `ignoreList` hint
|
||||
* (which defaults to `false`). The `filename` is used when constructing the source map for the
|
||||
* bundle, to identify this `source` in the source map's `sources` field. The `ignoreList` hint
|
||||
* is used to populate the `x_google_ignoreList` extension field in the source map, which is a
|
||||
* mechanism for tools to signal to debuggers that certain sources should be ignored by default
|
||||
* (depending on user preferences).
|
||||
*/
|
||||
addSource(
|
||||
source: MagicString | { filename?: string; content: MagicString; ignoreList?: boolean },
|
||||
): this;
|
||||
append(str: string, options?: BundleOptions): this;
|
||||
clone(): this;
|
||||
generateMap(
|
||||
options?: SourceMapOptions,
|
||||
): Omit<SourceMap, 'sourcesContent'> & { sourcesContent: Array<string | null> };
|
||||
generateDecodedMap(
|
||||
options?: SourceMapOptions,
|
||||
): Omit<DecodedSourceMap, 'sourcesContent'> & { sourcesContent: Array<string | null> };
|
||||
getIndentString(): string;
|
||||
indent(indentStr?: string): this;
|
||||
indentExclusionRanges: ExclusionRange | Array<ExclusionRange>;
|
||||
prepend(str: string): this;
|
||||
toString(): string;
|
||||
trimLines(): this;
|
||||
trim(charType?: string): this;
|
||||
trimStart(charType?: string): this;
|
||||
trimEnd(charType?: string): this;
|
||||
isEmpty(): boolean;
|
||||
length(): number;
|
||||
}
|
||||
|
||||
export type ExclusionRange = [ number, number ];
|
||||
export type ExclusionRange = [number, number];
|
||||
|
||||
export interface MagicStringOptions {
|
||||
filename?: string,
|
||||
indentExclusionRanges?: ExclusionRange | Array<ExclusionRange>;
|
||||
filename?: string;
|
||||
indentExclusionRanges?: ExclusionRange | Array<ExclusionRange>;
|
||||
offset?: number;
|
||||
}
|
||||
|
||||
export interface IndentOptions {
|
||||
exclude?: ExclusionRange | Array<ExclusionRange>;
|
||||
indentStart?: boolean;
|
||||
exclude?: ExclusionRange | Array<ExclusionRange>;
|
||||
indentStart?: boolean;
|
||||
}
|
||||
|
||||
export interface OverwriteOptions {
|
||||
storeName?: boolean;
|
||||
contentOnly?: boolean;
|
||||
storeName?: boolean;
|
||||
contentOnly?: boolean;
|
||||
}
|
||||
|
||||
export interface UpdateOptions {
|
||||
storeName?: boolean;
|
||||
overwrite?: boolean;
|
||||
storeName?: boolean;
|
||||
overwrite?: boolean;
|
||||
}
|
||||
|
||||
export default class MagicString {
|
||||
constructor(str: string, options?: MagicStringOptions);
|
||||
/**
|
||||
* Adds the specified character index (with respect to the original string) to sourcemap mappings, if `hires` is false.
|
||||
*/
|
||||
addSourcemapLocation(char: number): void;
|
||||
/**
|
||||
* Appends the specified content to the end of the string.
|
||||
*/
|
||||
append(content: string): MagicString;
|
||||
/**
|
||||
* Appends the specified content at the index in the original string.
|
||||
* If a range *ending* with index is subsequently moved, the insert will be moved with it.
|
||||
* See also `s.prependLeft(...)`.
|
||||
*/
|
||||
appendLeft(index: number, content: string): MagicString;
|
||||
/**
|
||||
* Appends the specified content at the index in the original string.
|
||||
* If a range *starting* with index is subsequently moved, the insert will be moved with it.
|
||||
* See also `s.prependRight(...)`.
|
||||
*/
|
||||
appendRight(index: number, content: string): MagicString;
|
||||
/**
|
||||
* Does what you'd expect.
|
||||
*/
|
||||
clone(): MagicString;
|
||||
/**
|
||||
* Generates a version 3 sourcemap.
|
||||
*/
|
||||
generateMap(options?: SourceMapOptions): SourceMap;
|
||||
/**
|
||||
* Generates a sourcemap object with raw mappings in array form, rather than encoded as a string.
|
||||
* Useful if you need to manipulate the sourcemap further, but most of the time you will use `generateMap` instead.
|
||||
*/
|
||||
generateDecodedMap(options?: SourceMapOptions): DecodedSourceMap;
|
||||
getIndentString(): string;
|
||||
constructor(str: string, options?: MagicStringOptions);
|
||||
/**
|
||||
* Adds the specified character index (with respect to the original string) to sourcemap mappings, if `hires` is false.
|
||||
*/
|
||||
addSourcemapLocation(char: number): void;
|
||||
/**
|
||||
* Appends the specified content to the end of the string.
|
||||
*/
|
||||
append(content: string): this;
|
||||
/**
|
||||
* Appends the specified content at the index in the original string.
|
||||
* If a range *ending* with index is subsequently moved, the insert will be moved with it.
|
||||
* See also `s.prependLeft(...)`.
|
||||
*/
|
||||
appendLeft(index: number, content: string): this;
|
||||
/**
|
||||
* Appends the specified content at the index in the original string.
|
||||
* If a range *starting* with index is subsequently moved, the insert will be moved with it.
|
||||
* See also `s.prependRight(...)`.
|
||||
*/
|
||||
appendRight(index: number, content: string): this;
|
||||
/**
|
||||
* Does what you'd expect.
|
||||
*/
|
||||
clone(): this;
|
||||
/**
|
||||
* Generates a version 3 sourcemap.
|
||||
*/
|
||||
generateMap(options?: SourceMapOptions): SourceMap;
|
||||
/**
|
||||
* Generates a sourcemap object with raw mappings in array form, rather than encoded as a string.
|
||||
* Useful if you need to manipulate the sourcemap further, but most of the time you will use `generateMap` instead.
|
||||
*/
|
||||
generateDecodedMap(options?: SourceMapOptions): DecodedSourceMap;
|
||||
getIndentString(): string;
|
||||
|
||||
/**
|
||||
* Prefixes each line of the string with prefix.
|
||||
* If prefix is not supplied, the indentation will be guessed from the original content, falling back to a single tab character.
|
||||
*/
|
||||
indent(options?: IndentOptions): MagicString;
|
||||
/**
|
||||
* Prefixes each line of the string with prefix.
|
||||
* If prefix is not supplied, the indentation will be guessed from the original content, falling back to a single tab character.
|
||||
*
|
||||
* The options argument can have an exclude property, which is an array of [start, end] character ranges.
|
||||
* These ranges will be excluded from the indentation - useful for (e.g.) multiline strings.
|
||||
*/
|
||||
indent(indentStr?: string, options?: IndentOptions): MagicString;
|
||||
indentExclusionRanges: ExclusionRange | Array<ExclusionRange>;
|
||||
/**
|
||||
* Prefixes each line of the string with prefix.
|
||||
* If prefix is not supplied, the indentation will be guessed from the original content, falling back to a single tab character.
|
||||
*/
|
||||
indent(options?: IndentOptions): this;
|
||||
/**
|
||||
* Prefixes each line of the string with prefix.
|
||||
* If prefix is not supplied, the indentation will be guessed from the original content, falling back to a single tab character.
|
||||
*
|
||||
* The options argument can have an exclude property, which is an array of [start, end] character ranges.
|
||||
* These ranges will be excluded from the indentation - useful for (e.g.) multiline strings.
|
||||
*/
|
||||
indent(indentStr?: string, options?: IndentOptions): this;
|
||||
indentExclusionRanges: ExclusionRange | Array<ExclusionRange>;
|
||||
|
||||
/**
|
||||
* Moves the characters from `start and `end` to `index`.
|
||||
*/
|
||||
move(start: number, end: number, index: number): MagicString;
|
||||
/**
|
||||
* Replaces the characters from `start` to `end` with `content`, along with the appended/prepended content in
|
||||
* that range. The same restrictions as `s.remove()` apply.
|
||||
*
|
||||
* The fourth argument is optional. It can have a storeName property — if true, the original name will be stored
|
||||
* for later inclusion in a sourcemap's names array — and a contentOnly property which determines whether only
|
||||
* the content is overwritten, or anything that was appended/prepended to the range as well.
|
||||
*
|
||||
* It may be preferred to use `s.update(...)` instead if you wish to avoid overwriting the appended/prepended content.
|
||||
*/
|
||||
overwrite(start: number, end: number, content: string, options?: boolean | OverwriteOptions): MagicString;
|
||||
/**
|
||||
* Replaces the characters from `start` to `end` with `content`. The same restrictions as `s.remove()` apply.
|
||||
*
|
||||
* The fourth argument is optional. It can have a storeName property — if true, the original name will be stored
|
||||
* for later inclusion in a sourcemap's names array — and an overwrite property which determines whether only
|
||||
* the content is overwritten, or anything that was appended/prepended to the range as well.
|
||||
*/
|
||||
update(start: number, end: number, content: string, options?: boolean | UpdateOptions): MagicString;
|
||||
/**
|
||||
* Prepends the string with the specified content.
|
||||
*/
|
||||
prepend(content: string): MagicString;
|
||||
/**
|
||||
* Same as `s.appendLeft(...)`, except that the inserted content will go *before* any previous appends or prepends at index
|
||||
*/
|
||||
prependLeft(index: number, content: string): MagicString;
|
||||
/**
|
||||
* Same as `s.appendRight(...)`, except that the inserted content will go *before* any previous appends or prepends at `index`
|
||||
*/
|
||||
prependRight(index: number, content: string): MagicString;
|
||||
/**
|
||||
* Removes the characters from `start` to `end` (of the original string, **not** the generated string).
|
||||
* Removing the same content twice, or making removals that partially overlap, will cause an error.
|
||||
*/
|
||||
remove(start: number, end: number): MagicString;
|
||||
/**
|
||||
* Returns the content of the generated string that corresponds to the slice between `start` and `end` of the original string.
|
||||
* Throws error if the indices are for characters that were already removed.
|
||||
*/
|
||||
slice(start: number, end: number): string;
|
||||
/**
|
||||
* Returns a clone of `s`, with all content before the `start` and `end` characters of the original string removed.
|
||||
*/
|
||||
snip(start: number, end: number): MagicString;
|
||||
/**
|
||||
* Trims content matching `charType` (defaults to `\s`, i.e. whitespace) from the start and end.
|
||||
*/
|
||||
trim(charType?: string): MagicString;
|
||||
/**
|
||||
* Trims content matching `charType` (defaults to `\s`, i.e. whitespace) from the start.
|
||||
*/
|
||||
trimStart(charType?: string): MagicString;
|
||||
/**
|
||||
* Trims content matching `charType` (defaults to `\s`, i.e. whitespace) from the end.
|
||||
*/
|
||||
trimEnd(charType?: string): MagicString;
|
||||
/**
|
||||
* Removes empty lines from the start and end.
|
||||
*/
|
||||
trimLines(): MagicString;
|
||||
/**
|
||||
* String replacement with RegExp or string.
|
||||
*/
|
||||
replace(regex: RegExp | string, replacement: string | ((substring: string, ...args: any[]) => string)): MagicString;
|
||||
/**
|
||||
* Same as `s.replace`, but replace all matched strings instead of just one.
|
||||
*/
|
||||
replaceAll(regex: RegExp | string, replacement: string | ((substring: string, ...args: any[]) => string)): MagicString;
|
||||
/**
|
||||
* Moves the characters from `start` and `end` to `index`.
|
||||
*/
|
||||
move(start: number, end: number, index: number): this;
|
||||
/**
|
||||
* Replaces the characters from `start` to `end` with `content`, along with the appended/prepended content in
|
||||
* that range. The same restrictions as `s.remove()` apply.
|
||||
*
|
||||
* The fourth argument is optional. It can have a storeName property — if true, the original name will be stored
|
||||
* for later inclusion in a sourcemap's names array — and a contentOnly property which determines whether only
|
||||
* the content is overwritten, or anything that was appended/prepended to the range as well.
|
||||
*
|
||||
* It may be preferred to use `s.update(...)` instead if you wish to avoid overwriting the appended/prepended content.
|
||||
*/
|
||||
overwrite(
|
||||
start: number,
|
||||
end: number,
|
||||
content: string,
|
||||
options?: boolean | OverwriteOptions,
|
||||
): this;
|
||||
/**
|
||||
* Replaces the characters from `start` to `end` with `content`. The same restrictions as `s.remove()` apply.
|
||||
*
|
||||
* The fourth argument is optional. It can have a storeName property — if true, the original name will be stored
|
||||
* for later inclusion in a sourcemap's names array — and an overwrite property which determines whether only
|
||||
* the content is overwritten, or anything that was appended/prepended to the range as well.
|
||||
*/
|
||||
update(start: number, end: number, content: string, options?: boolean | UpdateOptions): this;
|
||||
/**
|
||||
* Prepends the string with the specified content.
|
||||
*/
|
||||
prepend(content: string): this;
|
||||
/**
|
||||
* Same as `s.appendLeft(...)`, except that the inserted content will go *before* any previous appends or prepends at index
|
||||
*/
|
||||
prependLeft(index: number, content: string): this;
|
||||
/**
|
||||
* Same as `s.appendRight(...)`, except that the inserted content will go *before* any previous appends or prepends at `index`
|
||||
*/
|
||||
prependRight(index: number, content: string): this;
|
||||
/**
|
||||
* Removes the characters from `start` to `end` (of the original string, **not** the generated string).
|
||||
* Removing the same content twice, or making removals that partially overlap, will cause an error.
|
||||
*/
|
||||
remove(start: number, end: number): this;
|
||||
/**
|
||||
* Reset the modified characters from `start` to `end` (of the original string, **not** the generated string).
|
||||
*/
|
||||
reset(start: number, end: number): this;
|
||||
/**
|
||||
* Returns the content of the generated string that corresponds to the slice between `start` and `end` of the original string.
|
||||
* Throws error if the indices are for characters that were already removed.
|
||||
*/
|
||||
slice(start: number, end: number): string;
|
||||
/**
|
||||
* Returns a clone of `s`, with all content before the `start` and `end` characters of the original string removed.
|
||||
*/
|
||||
snip(start: number, end: number): this;
|
||||
/**
|
||||
* Trims content matching `charType` (defaults to `\s`, i.e. whitespace) from the start and end.
|
||||
*/
|
||||
trim(charType?: string): this;
|
||||
/**
|
||||
* Trims content matching `charType` (defaults to `\s`, i.e. whitespace) from the start.
|
||||
*/
|
||||
trimStart(charType?: string): this;
|
||||
/**
|
||||
* Trims content matching `charType` (defaults to `\s`, i.e. whitespace) from the end.
|
||||
*/
|
||||
trimEnd(charType?: string): this;
|
||||
/**
|
||||
* Removes empty lines from the start and end.
|
||||
*/
|
||||
trimLines(): this;
|
||||
/**
|
||||
* String replacement with RegExp or string.
|
||||
*/
|
||||
replace(
|
||||
regex: RegExp | string,
|
||||
replacement: string | ((substring: string, ...args: any[]) => string),
|
||||
): this;
|
||||
/**
|
||||
* Same as `s.replace`, but replace all matched strings instead of just one.
|
||||
*/
|
||||
replaceAll(
|
||||
regex: RegExp | string,
|
||||
replacement: string | ((substring: string, ...args: any[]) => string),
|
||||
): this;
|
||||
|
||||
lastChar(): string;
|
||||
lastLine(): string;
|
||||
/**
|
||||
* Returns true if the resulting source is empty (disregarding white space).
|
||||
*/
|
||||
isEmpty(): boolean;
|
||||
length(): number;
|
||||
lastChar(): string;
|
||||
lastLine(): string;
|
||||
/**
|
||||
* Returns true if the resulting source is empty (disregarding white space).
|
||||
*/
|
||||
isEmpty(): boolean;
|
||||
length(): number;
|
||||
|
||||
/**
|
||||
* Indicates if the string has been changed.
|
||||
*/
|
||||
hasChanged(): boolean;
|
||||
/**
|
||||
* Indicates if the string has been changed.
|
||||
*/
|
||||
hasChanged(): boolean;
|
||||
|
||||
original: string;
|
||||
/**
|
||||
* Returns the generated string.
|
||||
*/
|
||||
toString(): string;
|
||||
original: string;
|
||||
/**
|
||||
* Returns the generated string.
|
||||
*/
|
||||
toString(): string;
|
||||
|
||||
offset: number;
|
||||
}
|
||||
|
||||
171
node_modules/magic-string/dist/magic-string.cjs.js
generated
vendored
171
node_modules/magic-string/dist/magic-string.cjs.js
generated
vendored
@@ -96,6 +96,16 @@ class Chunk {
|
||||
this.intro = content + this.intro;
|
||||
}
|
||||
|
||||
reset() {
|
||||
this.intro = '';
|
||||
this.outro = '';
|
||||
if (this.edited) {
|
||||
this.content = this.original;
|
||||
this.storeName = false;
|
||||
this.edited = false;
|
||||
}
|
||||
}
|
||||
|
||||
split(index) {
|
||||
const sliceIndex = index - this.start;
|
||||
|
||||
@@ -117,7 +127,7 @@ class Chunk {
|
||||
// ' test'.trim()
|
||||
// split -> ' ' + 'test'
|
||||
// ✔️ edit -> '' + 'test'
|
||||
// ✖️ edit -> 'test' + ''
|
||||
// ✖️ edit -> 'test' + ''
|
||||
// TODO is this block necessary?...
|
||||
newChunk.edit('', false);
|
||||
this.content = '';
|
||||
@@ -186,8 +196,8 @@ class Chunk {
|
||||
}
|
||||
|
||||
function getBtoa() {
|
||||
if (typeof window !== 'undefined' && typeof window.btoa === 'function') {
|
||||
return (str) => window.btoa(unescape(encodeURIComponent(str)));
|
||||
if (typeof globalThis !== 'undefined' && typeof globalThis.btoa === 'function') {
|
||||
return (str) => globalThis.btoa(unescape(encodeURIComponent(str)));
|
||||
} else if (typeof Buffer === 'function') {
|
||||
return (str) => Buffer.from(str, 'utf-8').toString('base64');
|
||||
} else {
|
||||
@@ -210,6 +220,9 @@ class SourceMap {
|
||||
if (typeof properties.x_google_ignoreList !== 'undefined') {
|
||||
this.x_google_ignoreList = properties.x_google_ignoreList;
|
||||
}
|
||||
if (typeof properties.debugId !== 'undefined') {
|
||||
this.debugId = properties.debugId;
|
||||
}
|
||||
}
|
||||
|
||||
toString() {
|
||||
@@ -312,9 +325,12 @@ class Mappings {
|
||||
|
||||
addEdit(sourceIndex, content, loc, nameIndex) {
|
||||
if (content.length) {
|
||||
const contentLengthMinusOne = content.length - 1;
|
||||
let contentLineEnd = content.indexOf('\n', 0);
|
||||
let previousContentLineEnd = -1;
|
||||
while (contentLineEnd >= 0) {
|
||||
// Loop through each line in the content and add a segment, but stop if the last line is empty,
|
||||
// else code afterwards would fill one line too many
|
||||
while (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) {
|
||||
const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];
|
||||
if (nameIndex >= 0) {
|
||||
segment.push(nameIndex);
|
||||
@@ -351,27 +367,6 @@ class Mappings {
|
||||
let charInHiresBoundary = false;
|
||||
|
||||
while (originalCharIndex < chunk.end) {
|
||||
if (this.hires || first || sourcemapLocations.has(originalCharIndex)) {
|
||||
const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];
|
||||
|
||||
if (this.hires === 'boundary') {
|
||||
// in hires "boundary", group segments per word boundary than per char
|
||||
if (wordRegex.test(original[originalCharIndex])) {
|
||||
// for first char in the boundary found, start the boundary by pushing a segment
|
||||
if (!charInHiresBoundary) {
|
||||
this.rawSegments.push(segment);
|
||||
charInHiresBoundary = true;
|
||||
}
|
||||
} else {
|
||||
// for non-word char, end the boundary by pushing a segment
|
||||
this.rawSegments.push(segment);
|
||||
charInHiresBoundary = false;
|
||||
}
|
||||
} else {
|
||||
this.rawSegments.push(segment);
|
||||
}
|
||||
}
|
||||
|
||||
if (original[originalCharIndex] === '\n') {
|
||||
loc.line += 1;
|
||||
loc.column = 0;
|
||||
@@ -379,7 +374,29 @@ class Mappings {
|
||||
this.raw[this.generatedCodeLine] = this.rawSegments = [];
|
||||
this.generatedCodeColumn = 0;
|
||||
first = true;
|
||||
charInHiresBoundary = false;
|
||||
} else {
|
||||
if (this.hires || first || sourcemapLocations.has(originalCharIndex)) {
|
||||
const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];
|
||||
|
||||
if (this.hires === 'boundary') {
|
||||
// in hires "boundary", group segments per word boundary than per char
|
||||
if (wordRegex.test(original[originalCharIndex])) {
|
||||
// for first char in the boundary found, start the boundary by pushing a segment
|
||||
if (!charInHiresBoundary) {
|
||||
this.rawSegments.push(segment);
|
||||
charInHiresBoundary = true;
|
||||
}
|
||||
} else {
|
||||
// for non-word char, end the boundary by pushing a segment
|
||||
this.rawSegments.push(segment);
|
||||
charInHiresBoundary = false;
|
||||
}
|
||||
} else {
|
||||
this.rawSegments.push(segment);
|
||||
}
|
||||
}
|
||||
|
||||
loc.column += 1;
|
||||
this.generatedCodeColumn += 1;
|
||||
first = false;
|
||||
@@ -435,6 +452,7 @@ class MagicString {
|
||||
storedNames: { writable: true, value: {} },
|
||||
indentStr: { writable: true, value: undefined },
|
||||
ignoreList: { writable: true, value: options.ignoreList },
|
||||
offset: { writable: true, value: options.offset || 0 },
|
||||
});
|
||||
|
||||
this.byStart[0] = chunk;
|
||||
@@ -453,6 +471,8 @@ class MagicString {
|
||||
}
|
||||
|
||||
appendLeft(index, content) {
|
||||
index = index + this.offset;
|
||||
|
||||
if (typeof content !== 'string') throw new TypeError('inserted content must be a string');
|
||||
|
||||
this._split(index);
|
||||
@@ -468,6 +488,8 @@ class MagicString {
|
||||
}
|
||||
|
||||
appendRight(index, content) {
|
||||
index = index + this.offset;
|
||||
|
||||
if (typeof content !== 'string') throw new TypeError('inserted content must be a string');
|
||||
|
||||
this._split(index);
|
||||
@@ -483,7 +505,7 @@ class MagicString {
|
||||
}
|
||||
|
||||
clone() {
|
||||
const cloned = new MagicString(this.original, { filename: this.filename });
|
||||
const cloned = new MagicString(this.original, { filename: this.filename, offset: this.offset });
|
||||
|
||||
let originalChunk = this.firstChunk;
|
||||
let clonedChunk = (cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone());
|
||||
@@ -681,7 +703,7 @@ class MagicString {
|
||||
if (!warned.insertLeft) {
|
||||
console.warn(
|
||||
'magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead',
|
||||
); // eslint-disable-line no-console
|
||||
);
|
||||
warned.insertLeft = true;
|
||||
}
|
||||
|
||||
@@ -692,7 +714,7 @@ class MagicString {
|
||||
if (!warned.insertRight) {
|
||||
console.warn(
|
||||
'magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead',
|
||||
); // eslint-disable-line no-console
|
||||
);
|
||||
warned.insertRight = true;
|
||||
}
|
||||
|
||||
@@ -700,6 +722,10 @@ class MagicString {
|
||||
}
|
||||
|
||||
move(start, end, index) {
|
||||
start = start + this.offset;
|
||||
end = end + this.offset;
|
||||
index = index + this.offset;
|
||||
|
||||
if (index >= start && index <= end) throw new Error('Cannot move a selection inside itself');
|
||||
|
||||
this._split(start);
|
||||
@@ -742,10 +768,15 @@ class MagicString {
|
||||
}
|
||||
|
||||
update(start, end, content, options) {
|
||||
start = start + this.offset;
|
||||
end = end + this.offset;
|
||||
|
||||
if (typeof content !== 'string') throw new TypeError('replacement content must be a string');
|
||||
|
||||
while (start < 0) start += this.original.length;
|
||||
while (end < 0) end += this.original.length;
|
||||
if (this.original.length !== 0) {
|
||||
while (start < 0) start += this.original.length;
|
||||
while (end < 0) end += this.original.length;
|
||||
}
|
||||
|
||||
if (end > this.original.length) throw new Error('end is out of bounds');
|
||||
if (start === end)
|
||||
@@ -760,7 +791,7 @@ class MagicString {
|
||||
if (!warned.storeName) {
|
||||
console.warn(
|
||||
'The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string',
|
||||
); // eslint-disable-line no-console
|
||||
);
|
||||
warned.storeName = true;
|
||||
}
|
||||
|
||||
@@ -811,6 +842,8 @@ class MagicString {
|
||||
}
|
||||
|
||||
prependLeft(index, content) {
|
||||
index = index + this.offset;
|
||||
|
||||
if (typeof content !== 'string') throw new TypeError('inserted content must be a string');
|
||||
|
||||
this._split(index);
|
||||
@@ -826,6 +859,8 @@ class MagicString {
|
||||
}
|
||||
|
||||
prependRight(index, content) {
|
||||
index = index + this.offset;
|
||||
|
||||
if (typeof content !== 'string') throw new TypeError('inserted content must be a string');
|
||||
|
||||
this._split(index);
|
||||
@@ -841,8 +876,13 @@ class MagicString {
|
||||
}
|
||||
|
||||
remove(start, end) {
|
||||
while (start < 0) start += this.original.length;
|
||||
while (end < 0) end += this.original.length;
|
||||
start = start + this.offset;
|
||||
end = end + this.offset;
|
||||
|
||||
if (this.original.length !== 0) {
|
||||
while (start < 0) start += this.original.length;
|
||||
while (end < 0) end += this.original.length;
|
||||
}
|
||||
|
||||
if (start === end) return this;
|
||||
|
||||
@@ -864,6 +904,33 @@ class MagicString {
|
||||
return this;
|
||||
}
|
||||
|
||||
reset(start, end) {
|
||||
start = start + this.offset;
|
||||
end = end + this.offset;
|
||||
|
||||
if (this.original.length !== 0) {
|
||||
while (start < 0) start += this.original.length;
|
||||
while (end < 0) end += this.original.length;
|
||||
}
|
||||
|
||||
if (start === end) return this;
|
||||
|
||||
if (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');
|
||||
if (start > end) throw new Error('end must be greater than start');
|
||||
|
||||
this._split(start);
|
||||
this._split(end);
|
||||
|
||||
let chunk = this.byStart[start];
|
||||
|
||||
while (chunk) {
|
||||
chunk.reset();
|
||||
|
||||
chunk = end > chunk.end ? this.byStart[chunk.end] : null;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
lastChar() {
|
||||
if (this.outro.length) return this.outro[this.outro.length - 1];
|
||||
let chunk = this.lastChunk;
|
||||
@@ -905,9 +972,14 @@ class MagicString {
|
||||
return this.intro + lineStr;
|
||||
}
|
||||
|
||||
slice(start = 0, end = this.original.length) {
|
||||
while (start < 0) start += this.original.length;
|
||||
while (end < 0) end += this.original.length;
|
||||
slice(start = 0, end = this.original.length - this.offset) {
|
||||
start = start + this.offset;
|
||||
end = end + this.offset;
|
||||
|
||||
if (this.original.length !== 0) {
|
||||
while (start < 0) start += this.original.length;
|
||||
while (end < 0) end += this.original.length;
|
||||
}
|
||||
|
||||
let result = '';
|
||||
|
||||
@@ -1136,21 +1208,21 @@ class MagicString {
|
||||
if (searchValue.global) {
|
||||
const matches = matchAll(searchValue, this.original);
|
||||
matches.forEach((match) => {
|
||||
if (match.index != null)
|
||||
this.overwrite(
|
||||
match.index,
|
||||
match.index + match[0].length,
|
||||
getReplacement(match, this.original),
|
||||
);
|
||||
if (match.index != null) {
|
||||
const replacement = getReplacement(match, this.original);
|
||||
if (replacement !== match[0]) {
|
||||
this.overwrite(match.index, match.index + match[0].length, replacement);
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
const match = this.original.match(searchValue);
|
||||
if (match && match.index != null)
|
||||
this.overwrite(
|
||||
match.index,
|
||||
match.index + match[0].length,
|
||||
getReplacement(match, this.original),
|
||||
);
|
||||
if (match && match.index != null) {
|
||||
const replacement = getReplacement(match, this.original);
|
||||
if (replacement !== match[0]) {
|
||||
this.overwrite(match.index, match.index + match[0].length, replacement);
|
||||
}
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
@@ -1182,7 +1254,8 @@ class MagicString {
|
||||
index !== -1;
|
||||
index = original.indexOf(string, index + stringLength)
|
||||
) {
|
||||
this.overwrite(index, index + stringLength, replacement);
|
||||
const previous = original.slice(index, index + stringLength);
|
||||
if (previous !== replacement) this.overwrite(index, index + stringLength, replacement);
|
||||
}
|
||||
|
||||
return this;
|
||||
|
||||
2
node_modules/magic-string/dist/magic-string.cjs.js.map
generated
vendored
2
node_modules/magic-string/dist/magic-string.cjs.js.map
generated
vendored
File diff suppressed because one or more lines are too long
475
node_modules/magic-string/dist/magic-string.es.d.mts
generated
vendored
475
node_modules/magic-string/dist/magic-string.es.d.mts
generated
vendored
@@ -1,264 +1,289 @@
|
||||
export interface BundleOptions {
|
||||
intro?: string;
|
||||
separator?: string;
|
||||
intro?: string;
|
||||
separator?: string;
|
||||
}
|
||||
|
||||
export interface SourceMapOptions {
|
||||
/**
|
||||
* Whether the mapping should be high-resolution.
|
||||
* Hi-res mappings map every single character, meaning (for example) your devtools will always
|
||||
* be able to pinpoint the exact location of function calls and so on.
|
||||
* With lo-res mappings, devtools may only be able to identify the correct
|
||||
* line - but they're quicker to generate and less bulky.
|
||||
* You can also set `"boundary"` to generate a semi-hi-res mappings segmented per word boundary
|
||||
* instead of per character, suitable for string semantics that are separated by words.
|
||||
* If sourcemap locations have been specified with s.addSourceMapLocation(), they will be used here.
|
||||
*/
|
||||
hires?: boolean | 'boundary';
|
||||
/**
|
||||
* The filename where you plan to write the sourcemap.
|
||||
*/
|
||||
file?: string;
|
||||
/**
|
||||
* The filename of the file containing the original source.
|
||||
*/
|
||||
source?: string;
|
||||
/**
|
||||
* Whether to include the original content in the map's sourcesContent array.
|
||||
*/
|
||||
includeContent?: boolean;
|
||||
/**
|
||||
* Whether the mapping should be high-resolution.
|
||||
* Hi-res mappings map every single character, meaning (for example) your devtools will always
|
||||
* be able to pinpoint the exact location of function calls and so on.
|
||||
* With lo-res mappings, devtools may only be able to identify the correct
|
||||
* line - but they're quicker to generate and less bulky.
|
||||
* You can also set `"boundary"` to generate a semi-hi-res mappings segmented per word boundary
|
||||
* instead of per character, suitable for string semantics that are separated by words.
|
||||
* If sourcemap locations have been specified with s.addSourceMapLocation(), they will be used here.
|
||||
*/
|
||||
hires?: boolean | 'boundary';
|
||||
/**
|
||||
* The filename where you plan to write the sourcemap.
|
||||
*/
|
||||
file?: string;
|
||||
/**
|
||||
* The filename of the file containing the original source.
|
||||
*/
|
||||
source?: string;
|
||||
/**
|
||||
* Whether to include the original content in the map's sourcesContent array.
|
||||
*/
|
||||
includeContent?: boolean;
|
||||
}
|
||||
|
||||
export type SourceMapSegment =
|
||||
| [number]
|
||||
| [number, number, number, number]
|
||||
| [number, number, number, number, number];
|
||||
| [number]
|
||||
| [number, number, number, number]
|
||||
| [number, number, number, number, number];
|
||||
|
||||
export interface DecodedSourceMap {
|
||||
file: string;
|
||||
sources: string[];
|
||||
sourcesContent?: string[];
|
||||
names: string[];
|
||||
mappings: SourceMapSegment[][];
|
||||
x_google_ignoreList?: number[];
|
||||
file: string;
|
||||
sources: string[];
|
||||
sourcesContent?: string[];
|
||||
names: string[];
|
||||
mappings: SourceMapSegment[][];
|
||||
x_google_ignoreList?: number[];
|
||||
}
|
||||
|
||||
export class SourceMap {
|
||||
constructor(properties: DecodedSourceMap);
|
||||
constructor(properties: DecodedSourceMap);
|
||||
|
||||
version: number;
|
||||
file: string;
|
||||
sources: string[];
|
||||
sourcesContent?: string[];
|
||||
names: string[];
|
||||
mappings: string;
|
||||
x_google_ignoreList?: number[];
|
||||
version: number;
|
||||
file: string;
|
||||
sources: string[];
|
||||
sourcesContent?: string[];
|
||||
names: string[];
|
||||
mappings: string;
|
||||
x_google_ignoreList?: number[];
|
||||
debugId?: string;
|
||||
|
||||
/**
|
||||
* Returns the equivalent of `JSON.stringify(map)`
|
||||
*/
|
||||
toString(): string;
|
||||
/**
|
||||
* Returns a DataURI containing the sourcemap. Useful for doing this sort of thing:
|
||||
* `generateMap(options?: SourceMapOptions): SourceMap;`
|
||||
*/
|
||||
toUrl(): string;
|
||||
/**
|
||||
* Returns the equivalent of `JSON.stringify(map)`
|
||||
*/
|
||||
toString(): string;
|
||||
/**
|
||||
* Returns a DataURI containing the sourcemap. Useful for doing this sort of thing:
|
||||
* `generateMap(options?: SourceMapOptions): SourceMap;`
|
||||
*/
|
||||
toUrl(): string;
|
||||
}
|
||||
|
||||
export class Bundle {
|
||||
constructor(options?: BundleOptions);
|
||||
/**
|
||||
* Adds the specified source to the bundle, which can either be a `MagicString` object directly,
|
||||
* or an options object that holds a magic string `content` property and optionally provides
|
||||
* a `filename` for the source within the bundle, as well as an optional `ignoreList` hint
|
||||
* (which defaults to `false`). The `filename` is used when constructing the source map for the
|
||||
* bundle, to identify this `source` in the source map's `sources` field. The `ignoreList` hint
|
||||
* is used to populate the `x_google_ignoreList` extension field in the source map, which is a
|
||||
* mechanism for tools to signal to debuggers that certain sources should be ignored by default
|
||||
* (depending on user preferences).
|
||||
*/
|
||||
addSource(source: MagicString | { filename?: string, content: MagicString, ignoreList?: boolean }): Bundle;
|
||||
append(str: string, options?: BundleOptions): Bundle;
|
||||
clone(): Bundle;
|
||||
generateMap(options?: SourceMapOptions): Omit<SourceMap, 'sourcesContent'> & { sourcesContent: Array<string | null> };
|
||||
generateDecodedMap(options?: SourceMapOptions): Omit<DecodedSourceMap, 'sourcesContent'> & { sourcesContent: Array<string | null> };
|
||||
getIndentString(): string;
|
||||
indent(indentStr?: string): Bundle;
|
||||
indentExclusionRanges: ExclusionRange | Array<ExclusionRange>;
|
||||
prepend(str: string): Bundle;
|
||||
toString(): string;
|
||||
trimLines(): Bundle;
|
||||
trim(charType?: string): Bundle;
|
||||
trimStart(charType?: string): Bundle;
|
||||
trimEnd(charType?: string): Bundle;
|
||||
isEmpty(): boolean;
|
||||
length(): number;
|
||||
constructor(options?: BundleOptions);
|
||||
/**
|
||||
* Adds the specified source to the bundle, which can either be a `MagicString` object directly,
|
||||
* or an options object that holds a magic string `content` property and optionally provides
|
||||
* a `filename` for the source within the bundle, as well as an optional `ignoreList` hint
|
||||
* (which defaults to `false`). The `filename` is used when constructing the source map for the
|
||||
* bundle, to identify this `source` in the source map's `sources` field. The `ignoreList` hint
|
||||
* is used to populate the `x_google_ignoreList` extension field in the source map, which is a
|
||||
* mechanism for tools to signal to debuggers that certain sources should be ignored by default
|
||||
* (depending on user preferences).
|
||||
*/
|
||||
addSource(
|
||||
source: MagicString | { filename?: string; content: MagicString; ignoreList?: boolean },
|
||||
): this;
|
||||
append(str: string, options?: BundleOptions): this;
|
||||
clone(): this;
|
||||
generateMap(
|
||||
options?: SourceMapOptions,
|
||||
): Omit<SourceMap, 'sourcesContent'> & { sourcesContent: Array<string | null> };
|
||||
generateDecodedMap(
|
||||
options?: SourceMapOptions,
|
||||
): Omit<DecodedSourceMap, 'sourcesContent'> & { sourcesContent: Array<string | null> };
|
||||
getIndentString(): string;
|
||||
indent(indentStr?: string): this;
|
||||
indentExclusionRanges: ExclusionRange | Array<ExclusionRange>;
|
||||
prepend(str: string): this;
|
||||
toString(): string;
|
||||
trimLines(): this;
|
||||
trim(charType?: string): this;
|
||||
trimStart(charType?: string): this;
|
||||
trimEnd(charType?: string): this;
|
||||
isEmpty(): boolean;
|
||||
length(): number;
|
||||
}
|
||||
|
||||
export type ExclusionRange = [ number, number ];
|
||||
export type ExclusionRange = [number, number];
|
||||
|
||||
export interface MagicStringOptions {
|
||||
filename?: string,
|
||||
indentExclusionRanges?: ExclusionRange | Array<ExclusionRange>;
|
||||
filename?: string;
|
||||
indentExclusionRanges?: ExclusionRange | Array<ExclusionRange>;
|
||||
offset?: number;
|
||||
}
|
||||
|
||||
export interface IndentOptions {
|
||||
exclude?: ExclusionRange | Array<ExclusionRange>;
|
||||
indentStart?: boolean;
|
||||
exclude?: ExclusionRange | Array<ExclusionRange>;
|
||||
indentStart?: boolean;
|
||||
}
|
||||
|
||||
export interface OverwriteOptions {
|
||||
storeName?: boolean;
|
||||
contentOnly?: boolean;
|
||||
storeName?: boolean;
|
||||
contentOnly?: boolean;
|
||||
}
|
||||
|
||||
export interface UpdateOptions {
|
||||
storeName?: boolean;
|
||||
overwrite?: boolean;
|
||||
storeName?: boolean;
|
||||
overwrite?: boolean;
|
||||
}
|
||||
|
||||
export default class MagicString {
|
||||
constructor(str: string, options?: MagicStringOptions);
|
||||
/**
|
||||
* Adds the specified character index (with respect to the original string) to sourcemap mappings, if `hires` is false.
|
||||
*/
|
||||
addSourcemapLocation(char: number): void;
|
||||
/**
|
||||
* Appends the specified content to the end of the string.
|
||||
*/
|
||||
append(content: string): MagicString;
|
||||
/**
|
||||
* Appends the specified content at the index in the original string.
|
||||
* If a range *ending* with index is subsequently moved, the insert will be moved with it.
|
||||
* See also `s.prependLeft(...)`.
|
||||
*/
|
||||
appendLeft(index: number, content: string): MagicString;
|
||||
/**
|
||||
* Appends the specified content at the index in the original string.
|
||||
* If a range *starting* with index is subsequently moved, the insert will be moved with it.
|
||||
* See also `s.prependRight(...)`.
|
||||
*/
|
||||
appendRight(index: number, content: string): MagicString;
|
||||
/**
|
||||
* Does what you'd expect.
|
||||
*/
|
||||
clone(): MagicString;
|
||||
/**
|
||||
* Generates a version 3 sourcemap.
|
||||
*/
|
||||
generateMap(options?: SourceMapOptions): SourceMap;
|
||||
/**
|
||||
* Generates a sourcemap object with raw mappings in array form, rather than encoded as a string.
|
||||
* Useful if you need to manipulate the sourcemap further, but most of the time you will use `generateMap` instead.
|
||||
*/
|
||||
generateDecodedMap(options?: SourceMapOptions): DecodedSourceMap;
|
||||
getIndentString(): string;
|
||||
constructor(str: string, options?: MagicStringOptions);
|
||||
/**
|
||||
* Adds the specified character index (with respect to the original string) to sourcemap mappings, if `hires` is false.
|
||||
*/
|
||||
addSourcemapLocation(char: number): void;
|
||||
/**
|
||||
* Appends the specified content to the end of the string.
|
||||
*/
|
||||
append(content: string): this;
|
||||
/**
|
||||
* Appends the specified content at the index in the original string.
|
||||
* If a range *ending* with index is subsequently moved, the insert will be moved with it.
|
||||
* See also `s.prependLeft(...)`.
|
||||
*/
|
||||
appendLeft(index: number, content: string): this;
|
||||
/**
|
||||
* Appends the specified content at the index in the original string.
|
||||
* If a range *starting* with index is subsequently moved, the insert will be moved with it.
|
||||
* See also `s.prependRight(...)`.
|
||||
*/
|
||||
appendRight(index: number, content: string): this;
|
||||
/**
|
||||
* Does what you'd expect.
|
||||
*/
|
||||
clone(): this;
|
||||
/**
|
||||
* Generates a version 3 sourcemap.
|
||||
*/
|
||||
generateMap(options?: SourceMapOptions): SourceMap;
|
||||
/**
|
||||
* Generates a sourcemap object with raw mappings in array form, rather than encoded as a string.
|
||||
* Useful if you need to manipulate the sourcemap further, but most of the time you will use `generateMap` instead.
|
||||
*/
|
||||
generateDecodedMap(options?: SourceMapOptions): DecodedSourceMap;
|
||||
getIndentString(): string;
|
||||
|
||||
/**
|
||||
* Prefixes each line of the string with prefix.
|
||||
* If prefix is not supplied, the indentation will be guessed from the original content, falling back to a single tab character.
|
||||
*/
|
||||
indent(options?: IndentOptions): MagicString;
|
||||
/**
|
||||
* Prefixes each line of the string with prefix.
|
||||
* If prefix is not supplied, the indentation will be guessed from the original content, falling back to a single tab character.
|
||||
*
|
||||
* The options argument can have an exclude property, which is an array of [start, end] character ranges.
|
||||
* These ranges will be excluded from the indentation - useful for (e.g.) multiline strings.
|
||||
*/
|
||||
indent(indentStr?: string, options?: IndentOptions): MagicString;
|
||||
indentExclusionRanges: ExclusionRange | Array<ExclusionRange>;
|
||||
/**
|
||||
* Prefixes each line of the string with prefix.
|
||||
* If prefix is not supplied, the indentation will be guessed from the original content, falling back to a single tab character.
|
||||
*/
|
||||
indent(options?: IndentOptions): this;
|
||||
/**
|
||||
* Prefixes each line of the string with prefix.
|
||||
* If prefix is not supplied, the indentation will be guessed from the original content, falling back to a single tab character.
|
||||
*
|
||||
* The options argument can have an exclude property, which is an array of [start, end] character ranges.
|
||||
* These ranges will be excluded from the indentation - useful for (e.g.) multiline strings.
|
||||
*/
|
||||
indent(indentStr?: string, options?: IndentOptions): this;
|
||||
indentExclusionRanges: ExclusionRange | Array<ExclusionRange>;
|
||||
|
||||
/**
|
||||
* Moves the characters from `start and `end` to `index`.
|
||||
*/
|
||||
move(start: number, end: number, index: number): MagicString;
|
||||
/**
|
||||
* Replaces the characters from `start` to `end` with `content`, along with the appended/prepended content in
|
||||
* that range. The same restrictions as `s.remove()` apply.
|
||||
*
|
||||
* The fourth argument is optional. It can have a storeName property — if true, the original name will be stored
|
||||
* for later inclusion in a sourcemap's names array — and a contentOnly property which determines whether only
|
||||
* the content is overwritten, or anything that was appended/prepended to the range as well.
|
||||
*
|
||||
* It may be preferred to use `s.update(...)` instead if you wish to avoid overwriting the appended/prepended content.
|
||||
*/
|
||||
overwrite(start: number, end: number, content: string, options?: boolean | OverwriteOptions): MagicString;
|
||||
/**
|
||||
* Replaces the characters from `start` to `end` with `content`. The same restrictions as `s.remove()` apply.
|
||||
*
|
||||
* The fourth argument is optional. It can have a storeName property — if true, the original name will be stored
|
||||
* for later inclusion in a sourcemap's names array — and an overwrite property which determines whether only
|
||||
* the content is overwritten, or anything that was appended/prepended to the range as well.
|
||||
*/
|
||||
update(start: number, end: number, content: string, options?: boolean | UpdateOptions): MagicString;
|
||||
/**
|
||||
* Prepends the string with the specified content.
|
||||
*/
|
||||
prepend(content: string): MagicString;
|
||||
/**
|
||||
* Same as `s.appendLeft(...)`, except that the inserted content will go *before* any previous appends or prepends at index
|
||||
*/
|
||||
prependLeft(index: number, content: string): MagicString;
|
||||
/**
|
||||
* Same as `s.appendRight(...)`, except that the inserted content will go *before* any previous appends or prepends at `index`
|
||||
*/
|
||||
prependRight(index: number, content: string): MagicString;
|
||||
/**
|
||||
* Removes the characters from `start` to `end` (of the original string, **not** the generated string).
|
||||
* Removing the same content twice, or making removals that partially overlap, will cause an error.
|
||||
*/
|
||||
remove(start: number, end: number): MagicString;
|
||||
/**
|
||||
* Returns the content of the generated string that corresponds to the slice between `start` and `end` of the original string.
|
||||
* Throws error if the indices are for characters that were already removed.
|
||||
*/
|
||||
slice(start: number, end: number): string;
|
||||
/**
|
||||
* Returns a clone of `s`, with all content before the `start` and `end` characters of the original string removed.
|
||||
*/
|
||||
snip(start: number, end: number): MagicString;
|
||||
/**
|
||||
* Trims content matching `charType` (defaults to `\s`, i.e. whitespace) from the start and end.
|
||||
*/
|
||||
trim(charType?: string): MagicString;
|
||||
/**
|
||||
* Trims content matching `charType` (defaults to `\s`, i.e. whitespace) from the start.
|
||||
*/
|
||||
trimStart(charType?: string): MagicString;
|
||||
/**
|
||||
* Trims content matching `charType` (defaults to `\s`, i.e. whitespace) from the end.
|
||||
*/
|
||||
trimEnd(charType?: string): MagicString;
|
||||
/**
|
||||
* Removes empty lines from the start and end.
|
||||
*/
|
||||
trimLines(): MagicString;
|
||||
/**
|
||||
* String replacement with RegExp or string.
|
||||
*/
|
||||
replace(regex: RegExp | string, replacement: string | ((substring: string, ...args: any[]) => string)): MagicString;
|
||||
/**
|
||||
* Same as `s.replace`, but replace all matched strings instead of just one.
|
||||
*/
|
||||
replaceAll(regex: RegExp | string, replacement: string | ((substring: string, ...args: any[]) => string)): MagicString;
|
||||
/**
|
||||
* Moves the characters from `start` and `end` to `index`.
|
||||
*/
|
||||
move(start: number, end: number, index: number): this;
|
||||
/**
|
||||
* Replaces the characters from `start` to `end` with `content`, along with the appended/prepended content in
|
||||
* that range. The same restrictions as `s.remove()` apply.
|
||||
*
|
||||
* The fourth argument is optional. It can have a storeName property — if true, the original name will be stored
|
||||
* for later inclusion in a sourcemap's names array — and a contentOnly property which determines whether only
|
||||
* the content is overwritten, or anything that was appended/prepended to the range as well.
|
||||
*
|
||||
* It may be preferred to use `s.update(...)` instead if you wish to avoid overwriting the appended/prepended content.
|
||||
*/
|
||||
overwrite(
|
||||
start: number,
|
||||
end: number,
|
||||
content: string,
|
||||
options?: boolean | OverwriteOptions,
|
||||
): this;
|
||||
/**
|
||||
* Replaces the characters from `start` to `end` with `content`. The same restrictions as `s.remove()` apply.
|
||||
*
|
||||
* The fourth argument is optional. It can have a storeName property — if true, the original name will be stored
|
||||
* for later inclusion in a sourcemap's names array — and an overwrite property which determines whether only
|
||||
* the content is overwritten, or anything that was appended/prepended to the range as well.
|
||||
*/
|
||||
update(start: number, end: number, content: string, options?: boolean | UpdateOptions): this;
|
||||
/**
|
||||
* Prepends the string with the specified content.
|
||||
*/
|
||||
prepend(content: string): this;
|
||||
/**
|
||||
* Same as `s.appendLeft(...)`, except that the inserted content will go *before* any previous appends or prepends at index
|
||||
*/
|
||||
prependLeft(index: number, content: string): this;
|
||||
/**
|
||||
* Same as `s.appendRight(...)`, except that the inserted content will go *before* any previous appends or prepends at `index`
|
||||
*/
|
||||
prependRight(index: number, content: string): this;
|
||||
/**
|
||||
* Removes the characters from `start` to `end` (of the original string, **not** the generated string).
|
||||
* Removing the same content twice, or making removals that partially overlap, will cause an error.
|
||||
*/
|
||||
remove(start: number, end: number): this;
|
||||
/**
|
||||
* Reset the modified characters from `start` to `end` (of the original string, **not** the generated string).
|
||||
*/
|
||||
reset(start: number, end: number): this;
|
||||
/**
|
||||
* Returns the content of the generated string that corresponds to the slice between `start` and `end` of the original string.
|
||||
* Throws error if the indices are for characters that were already removed.
|
||||
*/
|
||||
slice(start: number, end: number): string;
|
||||
/**
|
||||
* Returns a clone of `s`, with all content before the `start` and `end` characters of the original string removed.
|
||||
*/
|
||||
snip(start: number, end: number): this;
|
||||
/**
|
||||
* Trims content matching `charType` (defaults to `\s`, i.e. whitespace) from the start and end.
|
||||
*/
|
||||
trim(charType?: string): this;
|
||||
/**
|
||||
* Trims content matching `charType` (defaults to `\s`, i.e. whitespace) from the start.
|
||||
*/
|
||||
trimStart(charType?: string): this;
|
||||
/**
|
||||
* Trims content matching `charType` (defaults to `\s`, i.e. whitespace) from the end.
|
||||
*/
|
||||
trimEnd(charType?: string): this;
|
||||
/**
|
||||
* Removes empty lines from the start and end.
|
||||
*/
|
||||
trimLines(): this;
|
||||
/**
|
||||
* String replacement with RegExp or string.
|
||||
*/
|
||||
replace(
|
||||
regex: RegExp | string,
|
||||
replacement: string | ((substring: string, ...args: any[]) => string),
|
||||
): this;
|
||||
/**
|
||||
* Same as `s.replace`, but replace all matched strings instead of just one.
|
||||
*/
|
||||
replaceAll(
|
||||
regex: RegExp | string,
|
||||
replacement: string | ((substring: string, ...args: any[]) => string),
|
||||
): this;
|
||||
|
||||
lastChar(): string;
|
||||
lastLine(): string;
|
||||
/**
|
||||
* Returns true if the resulting source is empty (disregarding white space).
|
||||
*/
|
||||
isEmpty(): boolean;
|
||||
length(): number;
|
||||
lastChar(): string;
|
||||
lastLine(): string;
|
||||
/**
|
||||
* Returns true if the resulting source is empty (disregarding white space).
|
||||
*/
|
||||
isEmpty(): boolean;
|
||||
length(): number;
|
||||
|
||||
/**
|
||||
* Indicates if the string has been changed.
|
||||
*/
|
||||
hasChanged(): boolean;
|
||||
/**
|
||||
* Indicates if the string has been changed.
|
||||
*/
|
||||
hasChanged(): boolean;
|
||||
|
||||
original: string;
|
||||
/**
|
||||
* Returns the generated string.
|
||||
*/
|
||||
toString(): string;
|
||||
original: string;
|
||||
/**
|
||||
* Returns the generated string.
|
||||
*/
|
||||
toString(): string;
|
||||
|
||||
offset: number;
|
||||
}
|
||||
|
||||
171
node_modules/magic-string/dist/magic-string.es.mjs
generated
vendored
171
node_modules/magic-string/dist/magic-string.es.mjs
generated
vendored
@@ -94,6 +94,16 @@ class Chunk {
|
||||
this.intro = content + this.intro;
|
||||
}
|
||||
|
||||
reset() {
|
||||
this.intro = '';
|
||||
this.outro = '';
|
||||
if (this.edited) {
|
||||
this.content = this.original;
|
||||
this.storeName = false;
|
||||
this.edited = false;
|
||||
}
|
||||
}
|
||||
|
||||
split(index) {
|
||||
const sliceIndex = index - this.start;
|
||||
|
||||
@@ -115,7 +125,7 @@ class Chunk {
|
||||
// ' test'.trim()
|
||||
// split -> ' ' + 'test'
|
||||
// ✔️ edit -> '' + 'test'
|
||||
// ✖️ edit -> 'test' + ''
|
||||
// ✖️ edit -> 'test' + ''
|
||||
// TODO is this block necessary?...
|
||||
newChunk.edit('', false);
|
||||
this.content = '';
|
||||
@@ -184,8 +194,8 @@ class Chunk {
|
||||
}
|
||||
|
||||
function getBtoa() {
|
||||
if (typeof window !== 'undefined' && typeof window.btoa === 'function') {
|
||||
return (str) => window.btoa(unescape(encodeURIComponent(str)));
|
||||
if (typeof globalThis !== 'undefined' && typeof globalThis.btoa === 'function') {
|
||||
return (str) => globalThis.btoa(unescape(encodeURIComponent(str)));
|
||||
} else if (typeof Buffer === 'function') {
|
||||
return (str) => Buffer.from(str, 'utf-8').toString('base64');
|
||||
} else {
|
||||
@@ -208,6 +218,9 @@ class SourceMap {
|
||||
if (typeof properties.x_google_ignoreList !== 'undefined') {
|
||||
this.x_google_ignoreList = properties.x_google_ignoreList;
|
||||
}
|
||||
if (typeof properties.debugId !== 'undefined') {
|
||||
this.debugId = properties.debugId;
|
||||
}
|
||||
}
|
||||
|
||||
toString() {
|
||||
@@ -310,9 +323,12 @@ class Mappings {
|
||||
|
||||
addEdit(sourceIndex, content, loc, nameIndex) {
|
||||
if (content.length) {
|
||||
const contentLengthMinusOne = content.length - 1;
|
||||
let contentLineEnd = content.indexOf('\n', 0);
|
||||
let previousContentLineEnd = -1;
|
||||
while (contentLineEnd >= 0) {
|
||||
// Loop through each line in the content and add a segment, but stop if the last line is empty,
|
||||
// else code afterwards would fill one line too many
|
||||
while (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) {
|
||||
const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];
|
||||
if (nameIndex >= 0) {
|
||||
segment.push(nameIndex);
|
||||
@@ -349,27 +365,6 @@ class Mappings {
|
||||
let charInHiresBoundary = false;
|
||||
|
||||
while (originalCharIndex < chunk.end) {
|
||||
if (this.hires || first || sourcemapLocations.has(originalCharIndex)) {
|
||||
const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];
|
||||
|
||||
if (this.hires === 'boundary') {
|
||||
// in hires "boundary", group segments per word boundary than per char
|
||||
if (wordRegex.test(original[originalCharIndex])) {
|
||||
// for first char in the boundary found, start the boundary by pushing a segment
|
||||
if (!charInHiresBoundary) {
|
||||
this.rawSegments.push(segment);
|
||||
charInHiresBoundary = true;
|
||||
}
|
||||
} else {
|
||||
// for non-word char, end the boundary by pushing a segment
|
||||
this.rawSegments.push(segment);
|
||||
charInHiresBoundary = false;
|
||||
}
|
||||
} else {
|
||||
this.rawSegments.push(segment);
|
||||
}
|
||||
}
|
||||
|
||||
if (original[originalCharIndex] === '\n') {
|
||||
loc.line += 1;
|
||||
loc.column = 0;
|
||||
@@ -377,7 +372,29 @@ class Mappings {
|
||||
this.raw[this.generatedCodeLine] = this.rawSegments = [];
|
||||
this.generatedCodeColumn = 0;
|
||||
first = true;
|
||||
charInHiresBoundary = false;
|
||||
} else {
|
||||
if (this.hires || first || sourcemapLocations.has(originalCharIndex)) {
|
||||
const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];
|
||||
|
||||
if (this.hires === 'boundary') {
|
||||
// in hires "boundary", group segments per word boundary than per char
|
||||
if (wordRegex.test(original[originalCharIndex])) {
|
||||
// for first char in the boundary found, start the boundary by pushing a segment
|
||||
if (!charInHiresBoundary) {
|
||||
this.rawSegments.push(segment);
|
||||
charInHiresBoundary = true;
|
||||
}
|
||||
} else {
|
||||
// for non-word char, end the boundary by pushing a segment
|
||||
this.rawSegments.push(segment);
|
||||
charInHiresBoundary = false;
|
||||
}
|
||||
} else {
|
||||
this.rawSegments.push(segment);
|
||||
}
|
||||
}
|
||||
|
||||
loc.column += 1;
|
||||
this.generatedCodeColumn += 1;
|
||||
first = false;
|
||||
@@ -433,6 +450,7 @@ class MagicString {
|
||||
storedNames: { writable: true, value: {} },
|
||||
indentStr: { writable: true, value: undefined },
|
||||
ignoreList: { writable: true, value: options.ignoreList },
|
||||
offset: { writable: true, value: options.offset || 0 },
|
||||
});
|
||||
|
||||
this.byStart[0] = chunk;
|
||||
@@ -451,6 +469,8 @@ class MagicString {
|
||||
}
|
||||
|
||||
appendLeft(index, content) {
|
||||
index = index + this.offset;
|
||||
|
||||
if (typeof content !== 'string') throw new TypeError('inserted content must be a string');
|
||||
|
||||
this._split(index);
|
||||
@@ -466,6 +486,8 @@ class MagicString {
|
||||
}
|
||||
|
||||
appendRight(index, content) {
|
||||
index = index + this.offset;
|
||||
|
||||
if (typeof content !== 'string') throw new TypeError('inserted content must be a string');
|
||||
|
||||
this._split(index);
|
||||
@@ -481,7 +503,7 @@ class MagicString {
|
||||
}
|
||||
|
||||
clone() {
|
||||
const cloned = new MagicString(this.original, { filename: this.filename });
|
||||
const cloned = new MagicString(this.original, { filename: this.filename, offset: this.offset });
|
||||
|
||||
let originalChunk = this.firstChunk;
|
||||
let clonedChunk = (cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone());
|
||||
@@ -679,7 +701,7 @@ class MagicString {
|
||||
if (!warned.insertLeft) {
|
||||
console.warn(
|
||||
'magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead',
|
||||
); // eslint-disable-line no-console
|
||||
);
|
||||
warned.insertLeft = true;
|
||||
}
|
||||
|
||||
@@ -690,7 +712,7 @@ class MagicString {
|
||||
if (!warned.insertRight) {
|
||||
console.warn(
|
||||
'magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead',
|
||||
); // eslint-disable-line no-console
|
||||
);
|
||||
warned.insertRight = true;
|
||||
}
|
||||
|
||||
@@ -698,6 +720,10 @@ class MagicString {
|
||||
}
|
||||
|
||||
move(start, end, index) {
|
||||
start = start + this.offset;
|
||||
end = end + this.offset;
|
||||
index = index + this.offset;
|
||||
|
||||
if (index >= start && index <= end) throw new Error('Cannot move a selection inside itself');
|
||||
|
||||
this._split(start);
|
||||
@@ -740,10 +766,15 @@ class MagicString {
|
||||
}
|
||||
|
||||
update(start, end, content, options) {
|
||||
start = start + this.offset;
|
||||
end = end + this.offset;
|
||||
|
||||
if (typeof content !== 'string') throw new TypeError('replacement content must be a string');
|
||||
|
||||
while (start < 0) start += this.original.length;
|
||||
while (end < 0) end += this.original.length;
|
||||
if (this.original.length !== 0) {
|
||||
while (start < 0) start += this.original.length;
|
||||
while (end < 0) end += this.original.length;
|
||||
}
|
||||
|
||||
if (end > this.original.length) throw new Error('end is out of bounds');
|
||||
if (start === end)
|
||||
@@ -758,7 +789,7 @@ class MagicString {
|
||||
if (!warned.storeName) {
|
||||
console.warn(
|
||||
'The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string',
|
||||
); // eslint-disable-line no-console
|
||||
);
|
||||
warned.storeName = true;
|
||||
}
|
||||
|
||||
@@ -809,6 +840,8 @@ class MagicString {
|
||||
}
|
||||
|
||||
prependLeft(index, content) {
|
||||
index = index + this.offset;
|
||||
|
||||
if (typeof content !== 'string') throw new TypeError('inserted content must be a string');
|
||||
|
||||
this._split(index);
|
||||
@@ -824,6 +857,8 @@ class MagicString {
|
||||
}
|
||||
|
||||
prependRight(index, content) {
|
||||
index = index + this.offset;
|
||||
|
||||
if (typeof content !== 'string') throw new TypeError('inserted content must be a string');
|
||||
|
||||
this._split(index);
|
||||
@@ -839,8 +874,13 @@ class MagicString {
|
||||
}
|
||||
|
||||
remove(start, end) {
|
||||
while (start < 0) start += this.original.length;
|
||||
while (end < 0) end += this.original.length;
|
||||
start = start + this.offset;
|
||||
end = end + this.offset;
|
||||
|
||||
if (this.original.length !== 0) {
|
||||
while (start < 0) start += this.original.length;
|
||||
while (end < 0) end += this.original.length;
|
||||
}
|
||||
|
||||
if (start === end) return this;
|
||||
|
||||
@@ -862,6 +902,33 @@ class MagicString {
|
||||
return this;
|
||||
}
|
||||
|
||||
reset(start, end) {
|
||||
start = start + this.offset;
|
||||
end = end + this.offset;
|
||||
|
||||
if (this.original.length !== 0) {
|
||||
while (start < 0) start += this.original.length;
|
||||
while (end < 0) end += this.original.length;
|
||||
}
|
||||
|
||||
if (start === end) return this;
|
||||
|
||||
if (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');
|
||||
if (start > end) throw new Error('end must be greater than start');
|
||||
|
||||
this._split(start);
|
||||
this._split(end);
|
||||
|
||||
let chunk = this.byStart[start];
|
||||
|
||||
while (chunk) {
|
||||
chunk.reset();
|
||||
|
||||
chunk = end > chunk.end ? this.byStart[chunk.end] : null;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
lastChar() {
|
||||
if (this.outro.length) return this.outro[this.outro.length - 1];
|
||||
let chunk = this.lastChunk;
|
||||
@@ -903,9 +970,14 @@ class MagicString {
|
||||
return this.intro + lineStr;
|
||||
}
|
||||
|
||||
slice(start = 0, end = this.original.length) {
|
||||
while (start < 0) start += this.original.length;
|
||||
while (end < 0) end += this.original.length;
|
||||
slice(start = 0, end = this.original.length - this.offset) {
|
||||
start = start + this.offset;
|
||||
end = end + this.offset;
|
||||
|
||||
if (this.original.length !== 0) {
|
||||
while (start < 0) start += this.original.length;
|
||||
while (end < 0) end += this.original.length;
|
||||
}
|
||||
|
||||
let result = '';
|
||||
|
||||
@@ -1134,21 +1206,21 @@ class MagicString {
|
||||
if (searchValue.global) {
|
||||
const matches = matchAll(searchValue, this.original);
|
||||
matches.forEach((match) => {
|
||||
if (match.index != null)
|
||||
this.overwrite(
|
||||
match.index,
|
||||
match.index + match[0].length,
|
||||
getReplacement(match, this.original),
|
||||
);
|
||||
if (match.index != null) {
|
||||
const replacement = getReplacement(match, this.original);
|
||||
if (replacement !== match[0]) {
|
||||
this.overwrite(match.index, match.index + match[0].length, replacement);
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
const match = this.original.match(searchValue);
|
||||
if (match && match.index != null)
|
||||
this.overwrite(
|
||||
match.index,
|
||||
match.index + match[0].length,
|
||||
getReplacement(match, this.original),
|
||||
);
|
||||
if (match && match.index != null) {
|
||||
const replacement = getReplacement(match, this.original);
|
||||
if (replacement !== match[0]) {
|
||||
this.overwrite(match.index, match.index + match[0].length, replacement);
|
||||
}
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
@@ -1180,7 +1252,8 @@ class MagicString {
|
||||
index !== -1;
|
||||
index = original.indexOf(string, index + stringLength)
|
||||
) {
|
||||
this.overwrite(index, index + stringLength, replacement);
|
||||
const previous = original.slice(index, index + stringLength);
|
||||
if (previous !== replacement) this.overwrite(index, index + stringLength, replacement);
|
||||
}
|
||||
|
||||
return this;
|
||||
|
||||
2
node_modules/magic-string/dist/magic-string.es.mjs.map
generated
vendored
2
node_modules/magic-string/dist/magic-string.es.mjs.map
generated
vendored
File diff suppressed because one or more lines are too long
284
node_modules/magic-string/dist/magic-string.umd.js
generated
vendored
284
node_modules/magic-string/dist/magic-string.umd.js
generated
vendored
@@ -98,6 +98,16 @@
|
||||
this.intro = content + this.intro;
|
||||
}
|
||||
|
||||
reset() {
|
||||
this.intro = '';
|
||||
this.outro = '';
|
||||
if (this.edited) {
|
||||
this.content = this.original;
|
||||
this.storeName = false;
|
||||
this.edited = false;
|
||||
}
|
||||
}
|
||||
|
||||
split(index) {
|
||||
const sliceIndex = index - this.start;
|
||||
|
||||
@@ -119,7 +129,7 @@
|
||||
// ' test'.trim()
|
||||
// split -> ' ' + 'test'
|
||||
// ✔️ edit -> '' + 'test'
|
||||
// ✖️ edit -> 'test' + ''
|
||||
// ✖️ edit -> 'test' + ''
|
||||
// TODO is this block necessary?...
|
||||
newChunk.edit('', false);
|
||||
this.content = '';
|
||||
@@ -197,6 +207,20 @@
|
||||
intToChar[i] = c;
|
||||
charToInt[c] = i;
|
||||
}
|
||||
function encodeInteger(builder, num, relative) {
|
||||
let delta = num - relative;
|
||||
delta = delta < 0 ? (-delta << 1) | 1 : delta << 1;
|
||||
do {
|
||||
let clamped = delta & 0b011111;
|
||||
delta >>>= 5;
|
||||
if (delta > 0)
|
||||
clamped |= 0b100000;
|
||||
builder.write(intToChar[clamped]);
|
||||
} while (delta > 0);
|
||||
return num;
|
||||
}
|
||||
|
||||
const bufLength = 1024 * 16;
|
||||
// Provide a fallback for older environments.
|
||||
const td = typeof TextDecoder !== 'undefined'
|
||||
? /* #__PURE__ */ new TextDecoder()
|
||||
@@ -216,68 +240,59 @@
|
||||
return out;
|
||||
},
|
||||
};
|
||||
function encode(decoded) {
|
||||
const state = new Int32Array(5);
|
||||
const bufLength = 1024 * 16;
|
||||
const subLength = bufLength - 36;
|
||||
const buf = new Uint8Array(bufLength);
|
||||
const sub = buf.subarray(0, subLength);
|
||||
let pos = 0;
|
||||
let out = '';
|
||||
for (let i = 0; i < decoded.length; i++) {
|
||||
const line = decoded[i];
|
||||
if (i > 0) {
|
||||
if (pos === bufLength) {
|
||||
out += td.decode(buf);
|
||||
pos = 0;
|
||||
}
|
||||
buf[pos++] = semicolon;
|
||||
}
|
||||
if (line.length === 0)
|
||||
continue;
|
||||
state[0] = 0;
|
||||
for (let j = 0; j < line.length; j++) {
|
||||
const segment = line[j];
|
||||
// We can push up to 5 ints, each int can take at most 7 chars, and we
|
||||
// may push a comma.
|
||||
if (pos > subLength) {
|
||||
out += td.decode(sub);
|
||||
buf.copyWithin(0, subLength, pos);
|
||||
pos -= subLength;
|
||||
}
|
||||
if (j > 0)
|
||||
buf[pos++] = comma;
|
||||
pos = encodeInteger(buf, pos, state, segment, 0); // genColumn
|
||||
if (segment.length === 1)
|
||||
continue;
|
||||
pos = encodeInteger(buf, pos, state, segment, 1); // sourcesIndex
|
||||
pos = encodeInteger(buf, pos, state, segment, 2); // sourceLine
|
||||
pos = encodeInteger(buf, pos, state, segment, 3); // sourceColumn
|
||||
if (segment.length === 4)
|
||||
continue;
|
||||
pos = encodeInteger(buf, pos, state, segment, 4); // namesIndex
|
||||
class StringWriter {
|
||||
constructor() {
|
||||
this.pos = 0;
|
||||
this.out = '';
|
||||
this.buffer = new Uint8Array(bufLength);
|
||||
}
|
||||
write(v) {
|
||||
const { buffer } = this;
|
||||
buffer[this.pos++] = v;
|
||||
if (this.pos === bufLength) {
|
||||
this.out += td.decode(buffer);
|
||||
this.pos = 0;
|
||||
}
|
||||
}
|
||||
return out + td.decode(buf.subarray(0, pos));
|
||||
flush() {
|
||||
const { buffer, out, pos } = this;
|
||||
return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out;
|
||||
}
|
||||
}
|
||||
function encodeInteger(buf, pos, state, segment, j) {
|
||||
const next = segment[j];
|
||||
let num = next - state[j];
|
||||
state[j] = next;
|
||||
num = num < 0 ? (-num << 1) | 1 : num << 1;
|
||||
do {
|
||||
let clamped = num & 0b011111;
|
||||
num >>>= 5;
|
||||
if (num > 0)
|
||||
clamped |= 0b100000;
|
||||
buf[pos++] = intToChar[clamped];
|
||||
} while (num > 0);
|
||||
return pos;
|
||||
function encode(decoded) {
|
||||
const writer = new StringWriter();
|
||||
let sourcesIndex = 0;
|
||||
let sourceLine = 0;
|
||||
let sourceColumn = 0;
|
||||
let namesIndex = 0;
|
||||
for (let i = 0; i < decoded.length; i++) {
|
||||
const line = decoded[i];
|
||||
if (i > 0)
|
||||
writer.write(semicolon);
|
||||
if (line.length === 0)
|
||||
continue;
|
||||
let genColumn = 0;
|
||||
for (let j = 0; j < line.length; j++) {
|
||||
const segment = line[j];
|
||||
if (j > 0)
|
||||
writer.write(comma);
|
||||
genColumn = encodeInteger(writer, segment[0], genColumn);
|
||||
if (segment.length === 1)
|
||||
continue;
|
||||
sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex);
|
||||
sourceLine = encodeInteger(writer, segment[2], sourceLine);
|
||||
sourceColumn = encodeInteger(writer, segment[3], sourceColumn);
|
||||
if (segment.length === 4)
|
||||
continue;
|
||||
namesIndex = encodeInteger(writer, segment[4], namesIndex);
|
||||
}
|
||||
}
|
||||
return writer.flush();
|
||||
}
|
||||
|
||||
function getBtoa() {
|
||||
if (typeof window !== 'undefined' && typeof window.btoa === 'function') {
|
||||
return (str) => window.btoa(unescape(encodeURIComponent(str)));
|
||||
if (typeof globalThis !== 'undefined' && typeof globalThis.btoa === 'function') {
|
||||
return (str) => globalThis.btoa(unescape(encodeURIComponent(str)));
|
||||
} else if (typeof Buffer === 'function') {
|
||||
return (str) => Buffer.from(str, 'utf-8').toString('base64');
|
||||
} else {
|
||||
@@ -300,6 +315,9 @@
|
||||
if (typeof properties.x_google_ignoreList !== 'undefined') {
|
||||
this.x_google_ignoreList = properties.x_google_ignoreList;
|
||||
}
|
||||
if (typeof properties.debugId !== 'undefined') {
|
||||
this.debugId = properties.debugId;
|
||||
}
|
||||
}
|
||||
|
||||
toString() {
|
||||
@@ -402,9 +420,12 @@
|
||||
|
||||
addEdit(sourceIndex, content, loc, nameIndex) {
|
||||
if (content.length) {
|
||||
const contentLengthMinusOne = content.length - 1;
|
||||
let contentLineEnd = content.indexOf('\n', 0);
|
||||
let previousContentLineEnd = -1;
|
||||
while (contentLineEnd >= 0) {
|
||||
// Loop through each line in the content and add a segment, but stop if the last line is empty,
|
||||
// else code afterwards would fill one line too many
|
||||
while (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) {
|
||||
const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];
|
||||
if (nameIndex >= 0) {
|
||||
segment.push(nameIndex);
|
||||
@@ -441,27 +462,6 @@
|
||||
let charInHiresBoundary = false;
|
||||
|
||||
while (originalCharIndex < chunk.end) {
|
||||
if (this.hires || first || sourcemapLocations.has(originalCharIndex)) {
|
||||
const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];
|
||||
|
||||
if (this.hires === 'boundary') {
|
||||
// in hires "boundary", group segments per word boundary than per char
|
||||
if (wordRegex.test(original[originalCharIndex])) {
|
||||
// for first char in the boundary found, start the boundary by pushing a segment
|
||||
if (!charInHiresBoundary) {
|
||||
this.rawSegments.push(segment);
|
||||
charInHiresBoundary = true;
|
||||
}
|
||||
} else {
|
||||
// for non-word char, end the boundary by pushing a segment
|
||||
this.rawSegments.push(segment);
|
||||
charInHiresBoundary = false;
|
||||
}
|
||||
} else {
|
||||
this.rawSegments.push(segment);
|
||||
}
|
||||
}
|
||||
|
||||
if (original[originalCharIndex] === '\n') {
|
||||
loc.line += 1;
|
||||
loc.column = 0;
|
||||
@@ -469,7 +469,29 @@
|
||||
this.raw[this.generatedCodeLine] = this.rawSegments = [];
|
||||
this.generatedCodeColumn = 0;
|
||||
first = true;
|
||||
charInHiresBoundary = false;
|
||||
} else {
|
||||
if (this.hires || first || sourcemapLocations.has(originalCharIndex)) {
|
||||
const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];
|
||||
|
||||
if (this.hires === 'boundary') {
|
||||
// in hires "boundary", group segments per word boundary than per char
|
||||
if (wordRegex.test(original[originalCharIndex])) {
|
||||
// for first char in the boundary found, start the boundary by pushing a segment
|
||||
if (!charInHiresBoundary) {
|
||||
this.rawSegments.push(segment);
|
||||
charInHiresBoundary = true;
|
||||
}
|
||||
} else {
|
||||
// for non-word char, end the boundary by pushing a segment
|
||||
this.rawSegments.push(segment);
|
||||
charInHiresBoundary = false;
|
||||
}
|
||||
} else {
|
||||
this.rawSegments.push(segment);
|
||||
}
|
||||
}
|
||||
|
||||
loc.column += 1;
|
||||
this.generatedCodeColumn += 1;
|
||||
first = false;
|
||||
@@ -525,6 +547,7 @@
|
||||
storedNames: { writable: true, value: {} },
|
||||
indentStr: { writable: true, value: undefined },
|
||||
ignoreList: { writable: true, value: options.ignoreList },
|
||||
offset: { writable: true, value: options.offset || 0 },
|
||||
});
|
||||
|
||||
this.byStart[0] = chunk;
|
||||
@@ -543,6 +566,8 @@
|
||||
}
|
||||
|
||||
appendLeft(index, content) {
|
||||
index = index + this.offset;
|
||||
|
||||
if (typeof content !== 'string') throw new TypeError('inserted content must be a string');
|
||||
|
||||
this._split(index);
|
||||
@@ -558,6 +583,8 @@
|
||||
}
|
||||
|
||||
appendRight(index, content) {
|
||||
index = index + this.offset;
|
||||
|
||||
if (typeof content !== 'string') throw new TypeError('inserted content must be a string');
|
||||
|
||||
this._split(index);
|
||||
@@ -573,7 +600,7 @@
|
||||
}
|
||||
|
||||
clone() {
|
||||
const cloned = new MagicString(this.original, { filename: this.filename });
|
||||
const cloned = new MagicString(this.original, { filename: this.filename, offset: this.offset });
|
||||
|
||||
let originalChunk = this.firstChunk;
|
||||
let clonedChunk = (cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone());
|
||||
@@ -771,7 +798,7 @@
|
||||
if (!warned.insertLeft) {
|
||||
console.warn(
|
||||
'magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead',
|
||||
); // eslint-disable-line no-console
|
||||
);
|
||||
warned.insertLeft = true;
|
||||
}
|
||||
|
||||
@@ -782,7 +809,7 @@
|
||||
if (!warned.insertRight) {
|
||||
console.warn(
|
||||
'magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead',
|
||||
); // eslint-disable-line no-console
|
||||
);
|
||||
warned.insertRight = true;
|
||||
}
|
||||
|
||||
@@ -790,6 +817,10 @@
|
||||
}
|
||||
|
||||
move(start, end, index) {
|
||||
start = start + this.offset;
|
||||
end = end + this.offset;
|
||||
index = index + this.offset;
|
||||
|
||||
if (index >= start && index <= end) throw new Error('Cannot move a selection inside itself');
|
||||
|
||||
this._split(start);
|
||||
@@ -832,10 +863,15 @@
|
||||
}
|
||||
|
||||
update(start, end, content, options) {
|
||||
start = start + this.offset;
|
||||
end = end + this.offset;
|
||||
|
||||
if (typeof content !== 'string') throw new TypeError('replacement content must be a string');
|
||||
|
||||
while (start < 0) start += this.original.length;
|
||||
while (end < 0) end += this.original.length;
|
||||
if (this.original.length !== 0) {
|
||||
while (start < 0) start += this.original.length;
|
||||
while (end < 0) end += this.original.length;
|
||||
}
|
||||
|
||||
if (end > this.original.length) throw new Error('end is out of bounds');
|
||||
if (start === end)
|
||||
@@ -850,7 +886,7 @@
|
||||
if (!warned.storeName) {
|
||||
console.warn(
|
||||
'The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string',
|
||||
); // eslint-disable-line no-console
|
||||
);
|
||||
warned.storeName = true;
|
||||
}
|
||||
|
||||
@@ -901,6 +937,8 @@
|
||||
}
|
||||
|
||||
prependLeft(index, content) {
|
||||
index = index + this.offset;
|
||||
|
||||
if (typeof content !== 'string') throw new TypeError('inserted content must be a string');
|
||||
|
||||
this._split(index);
|
||||
@@ -916,6 +954,8 @@
|
||||
}
|
||||
|
||||
prependRight(index, content) {
|
||||
index = index + this.offset;
|
||||
|
||||
if (typeof content !== 'string') throw new TypeError('inserted content must be a string');
|
||||
|
||||
this._split(index);
|
||||
@@ -931,8 +971,13 @@
|
||||
}
|
||||
|
||||
remove(start, end) {
|
||||
while (start < 0) start += this.original.length;
|
||||
while (end < 0) end += this.original.length;
|
||||
start = start + this.offset;
|
||||
end = end + this.offset;
|
||||
|
||||
if (this.original.length !== 0) {
|
||||
while (start < 0) start += this.original.length;
|
||||
while (end < 0) end += this.original.length;
|
||||
}
|
||||
|
||||
if (start === end) return this;
|
||||
|
||||
@@ -954,6 +999,33 @@
|
||||
return this;
|
||||
}
|
||||
|
||||
reset(start, end) {
|
||||
start = start + this.offset;
|
||||
end = end + this.offset;
|
||||
|
||||
if (this.original.length !== 0) {
|
||||
while (start < 0) start += this.original.length;
|
||||
while (end < 0) end += this.original.length;
|
||||
}
|
||||
|
||||
if (start === end) return this;
|
||||
|
||||
if (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');
|
||||
if (start > end) throw new Error('end must be greater than start');
|
||||
|
||||
this._split(start);
|
||||
this._split(end);
|
||||
|
||||
let chunk = this.byStart[start];
|
||||
|
||||
while (chunk) {
|
||||
chunk.reset();
|
||||
|
||||
chunk = end > chunk.end ? this.byStart[chunk.end] : null;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
lastChar() {
|
||||
if (this.outro.length) return this.outro[this.outro.length - 1];
|
||||
let chunk = this.lastChunk;
|
||||
@@ -995,9 +1067,14 @@
|
||||
return this.intro + lineStr;
|
||||
}
|
||||
|
||||
slice(start = 0, end = this.original.length) {
|
||||
while (start < 0) start += this.original.length;
|
||||
while (end < 0) end += this.original.length;
|
||||
slice(start = 0, end = this.original.length - this.offset) {
|
||||
start = start + this.offset;
|
||||
end = end + this.offset;
|
||||
|
||||
if (this.original.length !== 0) {
|
||||
while (start < 0) start += this.original.length;
|
||||
while (end < 0) end += this.original.length;
|
||||
}
|
||||
|
||||
let result = '';
|
||||
|
||||
@@ -1226,21 +1303,21 @@
|
||||
if (searchValue.global) {
|
||||
const matches = matchAll(searchValue, this.original);
|
||||
matches.forEach((match) => {
|
||||
if (match.index != null)
|
||||
this.overwrite(
|
||||
match.index,
|
||||
match.index + match[0].length,
|
||||
getReplacement(match, this.original),
|
||||
);
|
||||
if (match.index != null) {
|
||||
const replacement = getReplacement(match, this.original);
|
||||
if (replacement !== match[0]) {
|
||||
this.overwrite(match.index, match.index + match[0].length, replacement);
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
const match = this.original.match(searchValue);
|
||||
if (match && match.index != null)
|
||||
this.overwrite(
|
||||
match.index,
|
||||
match.index + match[0].length,
|
||||
getReplacement(match, this.original),
|
||||
);
|
||||
if (match && match.index != null) {
|
||||
const replacement = getReplacement(match, this.original);
|
||||
if (replacement !== match[0]) {
|
||||
this.overwrite(match.index, match.index + match[0].length, replacement);
|
||||
}
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
@@ -1272,7 +1349,8 @@
|
||||
index !== -1;
|
||||
index = original.indexOf(string, index + stringLength)
|
||||
) {
|
||||
this.overwrite(index, index + stringLength, replacement);
|
||||
const previous = original.slice(index, index + stringLength);
|
||||
if (previous !== replacement) this.overwrite(index, index + stringLength, replacement);
|
||||
}
|
||||
|
||||
return this;
|
||||
|
||||
2
node_modules/magic-string/dist/magic-string.umd.js.map
generated
vendored
2
node_modules/magic-string/dist/magic-string.umd.js.map
generated
vendored
File diff suppressed because one or more lines are too long
57
node_modules/magic-string/package.json
generated
vendored
57
node_modules/magic-string/package.json
generated
vendored
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "magic-string",
|
||||
"version": "0.30.5",
|
||||
"version": "0.30.17",
|
||||
"description": "Modify strings, generate sourcemaps",
|
||||
"keywords": [
|
||||
"string",
|
||||
@@ -14,6 +14,7 @@
|
||||
"author": "Rich Harris",
|
||||
"main": "./dist/magic-string.cjs.js",
|
||||
"module": "./dist/magic-string.es.mjs",
|
||||
"sideEffects": false,
|
||||
"jsnext:main": "./dist/magic-string.es.mjs",
|
||||
"types": "./dist/magic-string.cjs.d.ts",
|
||||
"exports": {
|
||||
@@ -28,37 +29,35 @@
|
||||
"index.d.ts",
|
||||
"README.md"
|
||||
],
|
||||
"scripts": {
|
||||
"build": "rollup -c && cp ./src/index.d.ts ./dist/magic-string.es.d.mts && cp ./src/index.d.ts ./dist/magic-string.cjs.d.ts",
|
||||
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s",
|
||||
"format": "prettier --single-quote --print-width 100 --use-tabs --write src/*.js src/**/*.js",
|
||||
"lint": "eslint src test && publint",
|
||||
"prepare": "npm run build",
|
||||
"prepublishOnly": "npm run lint && rm -rf dist && npm test",
|
||||
"release": "bumpp -x \"npm run changelog\" --all --commit --tag --push && npm publish",
|
||||
"pretest": "npm run build",
|
||||
"test": "mocha",
|
||||
"bench": "npm run build && node benchmark/index.mjs",
|
||||
"watch": "rollup -cw"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@rollup/plugin-node-resolve": "^15.2.0",
|
||||
"@rollup/plugin-replace": "^5.0.2",
|
||||
"@eslint/js": "^9.16.0",
|
||||
"@rollup/plugin-node-resolve": "^15.3.0",
|
||||
"@rollup/plugin-replace": "^5.0.7",
|
||||
"benchmark": "^2.1.4",
|
||||
"bumpp": "^9.2.0",
|
||||
"bumpp": "^9.9.1",
|
||||
"conventional-changelog-cli": "^3.0.0",
|
||||
"eslint": "^8.47.0",
|
||||
"mocha": "^10.2.0",
|
||||
"prettier": "^3.0.2",
|
||||
"publint": "^0.2.1",
|
||||
"rollup": "^3.28.0",
|
||||
"source-map-js": "^1.0.2",
|
||||
"source-map-support": "^0.5.21"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
"eslint": "^9.16.0",
|
||||
"prettier": "^3.4.2",
|
||||
"publint": "^0.2.12",
|
||||
"rollup": "^3.29.5",
|
||||
"source-map-js": "^1.2.1",
|
||||
"source-map-support": "^0.5.21",
|
||||
"vitest": "^2.1.8"
|
||||
},
|
||||
"dependencies": {
|
||||
"@jridgewell/sourcemap-codec": "^1.4.15"
|
||||
"@jridgewell/sourcemap-codec": "^1.5.0"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "rollup -c",
|
||||
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s",
|
||||
"format": "prettier --single-quote --print-width 100 --use-tabs --write .",
|
||||
"lint": "eslint src test && publint",
|
||||
"lint:fix": "eslint src test --fix",
|
||||
"release": "bumpp -x \"npm run changelog\" --all --commit --tag --push && npm publish",
|
||||
"pretest": "npm run build",
|
||||
"test": "vitest run",
|
||||
"test:dev": "vitest",
|
||||
"bench": "npm run build && node benchmark/index.mjs",
|
||||
"watch": "rollup -cw"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user