mirror of
https://github.com/pure-admin/vue-pure-admin.git
synced 2025-11-21 14:13:36 +08:00
docs:更新文档
This commit is contained in:
21
node_modules/rollup-plugin-dynamic-import-variables/LICENSE
generated
vendored
Normal file
21
node_modules/rollup-plugin-dynamic-import-variables/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020 Lars den Bakker
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
155
node_modules/rollup-plugin-dynamic-import-variables/README.md
generated
vendored
Normal file
155
node_modules/rollup-plugin-dynamic-import-variables/README.md
generated
vendored
Normal file
@@ -0,0 +1,155 @@
|
||||
# Rollup plugin dynamic import variables
|
||||
|
||||
Plugin to support variables in dynamic imports in Rollup.
|
||||
|
||||
Turns:
|
||||
|
||||
```js
|
||||
function importLocale(locale) {
|
||||
return import(`./locales/${locale}.js`);
|
||||
}
|
||||
```
|
||||
|
||||
Into:
|
||||
|
||||
```js
|
||||
function __variableDynamicImportRuntime__(path) {
|
||||
switch (path) {
|
||||
case './locales/en-GB.js':
|
||||
return import('./locales/en-GB.js');
|
||||
case './locales/en-US.js':
|
||||
return import('./locales/en-US.js');
|
||||
case './locales/nl-NL.js':
|
||||
return import('./locales/nl-NL.js');
|
||||
default:
|
||||
throw new Error('Unknown variable dynamic import: ' + path);
|
||||
}
|
||||
}
|
||||
|
||||
function importLocale(locale) {
|
||||
return __variableDynamicImportRuntime__(`./locales/${locale}.js`);
|
||||
}
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
import dynamicImportVariables from 'rollup-plugin-dynamic-import-variables';
|
||||
|
||||
export default {
|
||||
plugins: [
|
||||
dynamicImportVariables({
|
||||
// options
|
||||
}),
|
||||
],
|
||||
};
|
||||
```
|
||||
|
||||
### Options
|
||||
|
||||
#### include
|
||||
|
||||
Files to include in this plugin (default all).
|
||||
|
||||
#### exclude
|
||||
|
||||
Files to exclude in this plugin (default none).
|
||||
|
||||
#### warnOnError
|
||||
|
||||
By default, the plugin quits the build process when it encounters an error. If you set this option to true, it will throw a warning instead and leave the code untouched.
|
||||
|
||||
## How it works
|
||||
|
||||
When a dynamic import contains a concatenated string, the variables of the string are replaced with a glob pattern. This glob pattern is evaluated during the build, and any files found are added to the rollup bundle. At runtime, the correct import is returned for the full concatenated string.
|
||||
|
||||
Some example patterns and the glob they produce:
|
||||
|
||||
```js
|
||||
`./locales/${locale}.js` -> './locales/*.js'
|
||||
```
|
||||
|
||||
```js
|
||||
`./${folder}/${name}.js` -> './*/*.js'
|
||||
```
|
||||
|
||||
```js
|
||||
`./module-${name}.js` -> './module-*.js'
|
||||
```
|
||||
|
||||
```js
|
||||
`./modules-${name}/index.js` -> './modules-*/index.js'
|
||||
```
|
||||
|
||||
```js
|
||||
'./locales/' + locale + '.js' -> './locales/*.js'
|
||||
```
|
||||
|
||||
```js
|
||||
'./locales/' + locale + foo + bar '.js' -> './locales/*.js'
|
||||
```
|
||||
|
||||
```js
|
||||
'./locales/' + `${locale}.js` -> './locales/*.js'
|
||||
```
|
||||
|
||||
```js
|
||||
'./locales/' + `${foo + bar}.js` -> './locales/*.js'
|
||||
```
|
||||
|
||||
## Limitations
|
||||
|
||||
To know what to inject in the rollup bundle, we have to be able to do some static analysis on the code and make some assumptions about the possible imports. For example, if you use just a variable you could in theory import anything from your entire file system.
|
||||
|
||||
```js
|
||||
function importModule(path) {
|
||||
// who knows what will be imported here?
|
||||
return import(path);
|
||||
}
|
||||
```
|
||||
|
||||
To help static analysis, and to avoid possible foot guns, we are limited to a couple of rules:
|
||||
|
||||
### Imports must start with `./` or `../`.
|
||||
|
||||
All imports must start relative to the importing file. The import should not start with a variable, an absolute path or a bare import:
|
||||
|
||||
```js
|
||||
// Not allowed
|
||||
import(bar);
|
||||
import(`${bar}.js`);
|
||||
import(`/foo/${bar}.js`);
|
||||
import(`some-library/${bar}.js`);
|
||||
```
|
||||
|
||||
### Imports must end with a file extension
|
||||
|
||||
A folder may contain files you don't intend to import. We, therefore, require imports to end with a file extension in the static parts of the import.
|
||||
|
||||
```js
|
||||
// Not allowed
|
||||
import(`./foo/${bar}`);
|
||||
// allowed
|
||||
import(`./foo/${bar}.js`);
|
||||
```
|
||||
|
||||
### Imports to your own directory must specify a filename pattern
|
||||
|
||||
If you import your own directory you likely end up with files you did not intend to import, including your own module. It is therefore required to give a more specific filename pattern:
|
||||
|
||||
```js
|
||||
// not allowed
|
||||
import(`./${foo}.js`);
|
||||
// allowed
|
||||
import(`./module-${foo}.js`);
|
||||
```
|
||||
|
||||
### Globs only go one level deep
|
||||
|
||||
When generating globs, each variable in the string is converted to a glob `*` with a maximum of one star per directory depth. This avoids unintentionally adding files from many directories to your import.
|
||||
|
||||
In the example below this generates `./foo/*/*.js` and not `./foo/**/*.js`.
|
||||
|
||||
```js
|
||||
import(`./foo/${x}${y}/${z}.js`);
|
||||
```
|
||||
99
node_modules/rollup-plugin-dynamic-import-variables/index.js
generated
vendored
Normal file
99
node_modules/rollup-plugin-dynamic-import-variables/index.js
generated
vendored
Normal file
@@ -0,0 +1,99 @@
|
||||
const path = require('path');
|
||||
const { walk } = require('estree-walker');
|
||||
const MagicString = require('magic-string');
|
||||
const globby = require('globby');
|
||||
const { createFilter } = require('@rollup/pluginutils');
|
||||
const {
|
||||
dynamicImportToGlob,
|
||||
VariableDynamicImportError,
|
||||
} = require('./src/dynamic-import-to-glob');
|
||||
|
||||
function dynamicImportVariables({ include, exclude, warnOnError } = {}) {
|
||||
const filter = createFilter(include, exclude);
|
||||
|
||||
return {
|
||||
name: 'rollup-plugin-dynamic-import-variables',
|
||||
transform(code, id) {
|
||||
if (!filter(id)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const parsed = this.parse(code);
|
||||
|
||||
let dynamicImportIndex = -1;
|
||||
let ms;
|
||||
|
||||
walk(parsed, {
|
||||
enter: (node) => {
|
||||
if (node.type !== 'ImportExpression') {
|
||||
return;
|
||||
}
|
||||
dynamicImportIndex += 1;
|
||||
|
||||
try {
|
||||
// see if this is a variable dynamic import, and generate a glob expression
|
||||
const glob = dynamicImportToGlob(
|
||||
node.source,
|
||||
code.substring(node.start, node.end)
|
||||
);
|
||||
|
||||
if (!glob) {
|
||||
// this was not a variable dynamic import
|
||||
return;
|
||||
}
|
||||
|
||||
// execute the glob
|
||||
const result = globby.sync(glob, { cwd: path.dirname(id) });
|
||||
const paths = result.map((r) =>
|
||||
r.startsWith('./') || r.startsWith('../') ? r : `./${r}`
|
||||
);
|
||||
|
||||
// create magic string if it wasn't created already
|
||||
ms = ms || new MagicString(code);
|
||||
// unpack variable dynamic import into a function with import statements per file, rollup
|
||||
// will turn these into chunks automatically
|
||||
ms.prepend(
|
||||
`function __variableDynamicImportRuntime${dynamicImportIndex}__(path) {
|
||||
switch (path) {
|
||||
${paths.map((p) => ` case '${p}': return import('${p}');`).join('\n ')}
|
||||
default: return Promise.reject(new Error("Unknown variable dynamic import: " + path));
|
||||
}
|
||||
}\n\n`
|
||||
);
|
||||
// call the runtime function instead of doing a dynamic import, the import specifier will
|
||||
// be evaluated at runtime and the correct import will be returned by the injected function
|
||||
ms.overwrite(
|
||||
node.start,
|
||||
node.start + 6,
|
||||
`__variableDynamicImportRuntime${dynamicImportIndex}__`
|
||||
);
|
||||
} catch (error) {
|
||||
if (error instanceof VariableDynamicImportError) {
|
||||
// TODO: line number
|
||||
if (warnOnError) {
|
||||
this.warn(error);
|
||||
} else {
|
||||
this.error(error);
|
||||
}
|
||||
} else {
|
||||
this.error(error);
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
if (ms && dynamicImportIndex !== -1) {
|
||||
return {
|
||||
code: ms.toString(),
|
||||
map: ms.generateMap({
|
||||
file: id,
|
||||
includeContent: true,
|
||||
hires: true,
|
||||
}),
|
||||
};
|
||||
}
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = dynamicImportVariables;
|
||||
315
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/CHANGELOG.md
generated
vendored
Normal file
315
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/CHANGELOG.md
generated
vendored
Normal file
@@ -0,0 +1,315 @@
|
||||
# @rollup/pluginutils ChangeLog
|
||||
|
||||
## v3.1.0
|
||||
|
||||
_2020-06-05_
|
||||
|
||||
### Bugfixes
|
||||
|
||||
- fix: resolve relative paths starting with "./" (#180)
|
||||
|
||||
### Features
|
||||
|
||||
- feat: add native node es modules support (#419)
|
||||
|
||||
### Updates
|
||||
|
||||
- refactor: replace micromatch with picomatch. (#306)
|
||||
- chore: Don't bundle micromatch (#220)
|
||||
- chore: add missing typescript devDep (238b140)
|
||||
- chore: Use readonly arrays, add TSDoc (#187)
|
||||
- chore: Use typechecking (2ae08eb)
|
||||
|
||||
## v3.0.10
|
||||
|
||||
_2020-05-02_
|
||||
|
||||
### Bugfixes
|
||||
|
||||
- fix: resolve relative paths starting with "./" (#180)
|
||||
|
||||
### Updates
|
||||
|
||||
- refactor: replace micromatch with picomatch. (#306)
|
||||
- chore: Don't bundle micromatch (#220)
|
||||
- chore: add missing typescript devDep (238b140)
|
||||
- chore: Use readonly arrays, add TSDoc (#187)
|
||||
- chore: Use typechecking (2ae08eb)
|
||||
|
||||
## v3.0.9
|
||||
|
||||
_2020-04-12_
|
||||
|
||||
### Updates
|
||||
|
||||
- chore: support Rollup v2
|
||||
|
||||
## v3.0.8
|
||||
|
||||
_2020-02-01_
|
||||
|
||||
### Bugfixes
|
||||
|
||||
- fix: resolve relative paths starting with "./" (#180)
|
||||
|
||||
### Updates
|
||||
|
||||
- chore: add missing typescript devDep (238b140)
|
||||
- chore: Use readonly arrays, add TSDoc (#187)
|
||||
- chore: Use typechecking (2ae08eb)
|
||||
|
||||
## v3.0.7
|
||||
|
||||
_2020-02-01_
|
||||
|
||||
### Bugfixes
|
||||
|
||||
- fix: resolve relative paths starting with "./" (#180)
|
||||
|
||||
### Updates
|
||||
|
||||
- chore: Use readonly arrays, add TSDoc (#187)
|
||||
- chore: Use typechecking (2ae08eb)
|
||||
|
||||
## v3.0.6
|
||||
|
||||
_2020-01-27_
|
||||
|
||||
### Bugfixes
|
||||
|
||||
- fix: resolve relative paths starting with "./" (#180)
|
||||
|
||||
## v3.0.5
|
||||
|
||||
_2020-01-25_
|
||||
|
||||
### Bugfixes
|
||||
|
||||
- fix: bring back named exports (#176)
|
||||
|
||||
## v3.0.4
|
||||
|
||||
_2020-01-10_
|
||||
|
||||
### Bugfixes
|
||||
|
||||
- fix: keep for(const..) out of scope (#151)
|
||||
|
||||
## v3.0.3
|
||||
|
||||
_2020-01-07_
|
||||
|
||||
### Bugfixes
|
||||
|
||||
- fix: createFilter Windows regression (#141)
|
||||
|
||||
### Updates
|
||||
|
||||
- test: fix windows path failure (0a0de65)
|
||||
- chore: fix test script (5eae320)
|
||||
|
||||
## v3.0.2
|
||||
|
||||
_2020-01-04_
|
||||
|
||||
### Bugfixes
|
||||
|
||||
- fix: makeLegalIdentifier - potentially unsafe input for blacklisted identifier (#116)
|
||||
|
||||
### Updates
|
||||
|
||||
- docs: Fix documented type of createFilter's include/exclude (#123)
|
||||
- chore: update minor linting correction (bcbf9d2)
|
||||
|
||||
## 3.0.1
|
||||
|
||||
- fix: Escape glob characters in folder (#84)
|
||||
|
||||
## 3.0.0
|
||||
|
||||
_2019-11-25_
|
||||
|
||||
- **Breaking:** Minimum compatible Rollup version is 1.20.0
|
||||
- **Breaking:** Minimum supported Node version is 8.0.0
|
||||
- Published as @rollup/plugins-image
|
||||
|
||||
## 2.8.2
|
||||
|
||||
_2019-09-13_
|
||||
|
||||
- Handle optional catch parameter in attachScopes ([#70](https://github.com/rollup/rollup-pluginutils/pulls/70))
|
||||
|
||||
## 2.8.1
|
||||
|
||||
_2019-06-04_
|
||||
|
||||
- Support serialization of many edge cases ([#64](https://github.com/rollup/rollup-pluginutils/issues/64))
|
||||
|
||||
## 2.8.0
|
||||
|
||||
_2019-05-30_
|
||||
|
||||
- Bundle updated micromatch dependency ([#60](https://github.com/rollup/rollup-pluginutils/issues/60))
|
||||
|
||||
## 2.7.1
|
||||
|
||||
_2019-05-17_
|
||||
|
||||
- Do not ignore files with a leading "." in createFilter ([#62](https://github.com/rollup/rollup-pluginutils/issues/62))
|
||||
|
||||
## 2.7.0
|
||||
|
||||
_2019-05-15_
|
||||
|
||||
- Add `resolve` option to createFilter ([#59](https://github.com/rollup/rollup-pluginutils/issues/59))
|
||||
|
||||
## 2.6.0
|
||||
|
||||
_2019-04-04_
|
||||
|
||||
- Add `extractAssignedNames` ([#59](https://github.com/rollup/rollup-pluginutils/issues/59))
|
||||
- Provide dedicated TypeScript typings file ([#58](https://github.com/rollup/rollup-pluginutils/issues/58))
|
||||
|
||||
## 2.5.0
|
||||
|
||||
_2019-03-18_
|
||||
|
||||
- Generalize dataToEsm type ([#55](https://github.com/rollup/rollup-pluginutils/issues/55))
|
||||
- Handle empty keys in dataToEsm ([#56](https://github.com/rollup/rollup-pluginutils/issues/56))
|
||||
|
||||
## 2.4.1
|
||||
|
||||
_2019-02-16_
|
||||
|
||||
- Remove unnecessary dependency
|
||||
|
||||
## 2.4.0
|
||||
|
||||
_2019-02-16_
|
||||
Update dependencies to solve micromatch vulnerability ([#53](https://github.com/rollup/rollup-pluginutils/issues/53))
|
||||
|
||||
## 2.3.3
|
||||
|
||||
_2018-09-19_
|
||||
|
||||
- Revert micromatch update ([#43](https://github.com/rollup/rollup-pluginutils/issues/43))
|
||||
|
||||
## 2.3.2
|
||||
|
||||
_2018-09-18_
|
||||
|
||||
- Bumb micromatch dependency ([#36](https://github.com/rollup/rollup-pluginutils/issues/36))
|
||||
- Bumb dependencies ([#41](https://github.com/rollup/rollup-pluginutils/issues/41))
|
||||
- Split up tests ([#40](https://github.com/rollup/rollup-pluginutils/issues/40))
|
||||
|
||||
## 2.3.1
|
||||
|
||||
_2018-08-06_
|
||||
|
||||
- Fixed ObjectPattern scope in attachScopes to recognise { ...rest } syntax ([#37](https://github.com/rollup/rollup-pluginutils/issues/37))
|
||||
|
||||
## 2.3.0
|
||||
|
||||
_2018-05-21_
|
||||
|
||||
- Add option to not generate named exports ([#32](https://github.com/rollup/rollup-pluginutils/issues/32))
|
||||
|
||||
## 2.2.1
|
||||
|
||||
_2018-05-21_
|
||||
|
||||
- Support `null` serialization ([#34](https://github.com/rollup/rollup-pluginutils/issues/34))
|
||||
|
||||
## 2.2.0
|
||||
|
||||
_2018-05-11_
|
||||
|
||||
- Improve white-space handling in `dataToEsm` and add `prepare` script ([#31](https://github.com/rollup/rollup-pluginutils/issues/31))
|
||||
|
||||
## 2.1.1
|
||||
|
||||
_2018-05-09_
|
||||
|
||||
- Update dependencies
|
||||
|
||||
## 2.1.0
|
||||
|
||||
_2018-05-08_
|
||||
|
||||
- Add `dataToEsm` helper to create named exports from objects ([#29](https://github.com/rollup/rollup-pluginutils/issues/29))
|
||||
- Support literal keys in object patterns ([#27](https://github.com/rollup/rollup-pluginutils/issues/27))
|
||||
- Support function declarations without id in `attachScopes` ([#28](https://github.com/rollup/rollup-pluginutils/issues/28))
|
||||
|
||||
## 2.0.1
|
||||
|
||||
_2017-01-03_
|
||||
|
||||
- Don't add extension to file with trailing dot ([#14](https://github.com/rollup/rollup-pluginutils/issues/14))
|
||||
|
||||
## 2.0.0
|
||||
|
||||
_2017-01-03_
|
||||
|
||||
- Use `micromatch` instead of `minimatch` ([#19](https://github.com/rollup/rollup-pluginutils/issues/19))
|
||||
- Allow `createFilter` to take regexes ([#5](https://github.com/rollup/rollup-pluginutils/issues/5))
|
||||
|
||||
## 1.5.2
|
||||
|
||||
_2016-08-29_
|
||||
|
||||
- Treat `arguments` as a reserved word ([#10](https://github.com/rollup/rollup-pluginutils/issues/10))
|
||||
|
||||
## 1.5.1
|
||||
|
||||
_2016-06-24_
|
||||
|
||||
- Add all declarators in a var declaration to scope, not just the first
|
||||
|
||||
## 1.5.0
|
||||
|
||||
_2016-06-07_
|
||||
|
||||
- Exclude IDs with null character (`\0`)
|
||||
|
||||
## 1.4.0
|
||||
|
||||
_2016-06-07_
|
||||
|
||||
- Workaround minimatch issue ([#6](https://github.com/rollup/rollup-pluginutils/pull/6))
|
||||
- Exclude non-string IDs in `createFilter`
|
||||
|
||||
## 1.3.1
|
||||
|
||||
_2015-12-16_
|
||||
|
||||
- Build with Rollup directly, rather than via Gobble
|
||||
|
||||
## 1.3.0
|
||||
|
||||
_2015-12-16_
|
||||
|
||||
- Use correct path separator on Windows
|
||||
|
||||
## 1.2.0
|
||||
|
||||
_2015-11-02_
|
||||
|
||||
- Add `attachScopes` and `makeLegalIdentifier`
|
||||
|
||||
## 1.1.0
|
||||
|
||||
2015-10-24\*
|
||||
|
||||
- Add `addExtension` function
|
||||
|
||||
## 1.0.1
|
||||
|
||||
_2015-10-24_
|
||||
|
||||
- Include dist files in package
|
||||
|
||||
## 1.0.0
|
||||
|
||||
_2015-10-24_
|
||||
|
||||
- First release
|
||||
21
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/LICENSE
generated
vendored
Normal file
21
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2019 RollupJS Plugin Contributors (https://github.com/rollup/plugins/graphs/contributors)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
237
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/README.md
generated
vendored
Normal file
237
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/README.md
generated
vendored
Normal file
@@ -0,0 +1,237 @@
|
||||
[npm]: https://img.shields.io/npm/v/@rollup/pluginutils
|
||||
[npm-url]: https://www.npmjs.com/package/@rollup/pluginutils
|
||||
[size]: https://packagephobia.now.sh/badge?p=@rollup/pluginutils
|
||||
[size-url]: https://packagephobia.now.sh/result?p=@rollup/pluginutils
|
||||
|
||||
[![npm][npm]][npm-url]
|
||||
[![size][size]][size-url]
|
||||
[](https://liberamanifesto.com)
|
||||
|
||||
# @rollup/pluginutils
|
||||
|
||||
A set of utility functions commonly used by 🍣 Rollup plugins.
|
||||
|
||||
## Requirements
|
||||
|
||||
This plugin requires an [LTS](https://github.com/nodejs/Release) Node version (v8.0.0+) and Rollup v1.20.0+.
|
||||
|
||||
## Install
|
||||
|
||||
Using npm:
|
||||
|
||||
```console
|
||||
npm install @rollup/pluginutils --save-dev
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
import utils from '@rollup/pluginutils';
|
||||
//...
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
Available utility functions are listed below:
|
||||
|
||||
_Note: Parameter names immediately followed by a `?` indicate that the parameter is optional._
|
||||
|
||||
### addExtension
|
||||
|
||||
Adds an extension to a module ID if one does not exist.
|
||||
|
||||
Parameters: `(filename: String, ext?: String)`<br>
|
||||
Returns: `String`
|
||||
|
||||
```js
|
||||
import { addExtension } from '@rollup/pluginutils';
|
||||
|
||||
export default function myPlugin(options = {}) {
|
||||
return {
|
||||
resolveId(code, id) {
|
||||
// only adds an extension if there isn't one already
|
||||
id = addExtension(id); // `foo` -> `foo.js`, `foo.js -> foo.js`
|
||||
id = addExtension(id, '.myext'); // `foo` -> `foo.myext`, `foo.js -> `foo.js`
|
||||
}
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
### attachScopes
|
||||
|
||||
Attaches `Scope` objects to the relevant nodes of an AST. Each `Scope` object has a `scope.contains(name)` method that returns `true` if a given name is defined in the current scope or a parent scope.
|
||||
|
||||
Parameters: `(ast: Node, propertyName?: String)`<br>
|
||||
Returns: `Object`
|
||||
|
||||
See [rollup-plugin-inject](https://github.com/rollup/rollup-plugin-inject) or [rollup-plugin-commonjs](https://github.com/rollup/rollup-plugin-commonjs) for an example of usage.
|
||||
|
||||
```js
|
||||
import { attachScopes } from '@rollup/pluginutils';
|
||||
import { walk } from 'estree-walker';
|
||||
|
||||
export default function myPlugin(options = {}) {
|
||||
return {
|
||||
transform(code) {
|
||||
const ast = this.parse(code);
|
||||
|
||||
let scope = attachScopes(ast, 'scope');
|
||||
|
||||
walk(ast, {
|
||||
enter(node) {
|
||||
if (node.scope) scope = node.scope;
|
||||
|
||||
if (!scope.contains('foo')) {
|
||||
// `foo` is not defined, so if we encounter it,
|
||||
// we assume it's a global
|
||||
}
|
||||
},
|
||||
leave(node) {
|
||||
if (node.scope) scope = scope.parent;
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
### createFilter
|
||||
|
||||
Constructs a filter function which can be used to determine whether or not certain modules should be operated upon.
|
||||
|
||||
Parameters: `(include?: <minmatch>, exclude?: <minmatch>, options?: Object)`<br>
|
||||
Returns: `String`
|
||||
|
||||
#### `include` and `exclude`
|
||||
|
||||
Type: `String | RegExp | Array[...String|RegExp]`<br>
|
||||
|
||||
A valid [`minimatch`](https://www.npmjs.com/package/minimatch) pattern, or array of patterns. If `options.include` is omitted or has zero length, filter will return `true` by default. Otherwise, an ID must match one or more of the `minimatch` patterns, and must not match any of the `options.exclude` patterns.
|
||||
|
||||
#### `options`
|
||||
|
||||
##### `resolve`
|
||||
|
||||
Type: `String | Boolean | null`
|
||||
|
||||
Optionally resolves the patterns against a directory other than `process.cwd()`. If a `String` is specified, then the value will be used as the base directory. Relative paths will be resolved against `process.cwd()` first. If `false`, then the patterns will not be resolved against any directory. This can be useful if you want to create a filter for virtual module names.
|
||||
|
||||
#### Usage
|
||||
|
||||
```js
|
||||
import { createFilter } from '@rollup/pluginutils';
|
||||
|
||||
export default function myPlugin(options = {}) {
|
||||
// assume that the myPlugin accepts options of `options.include` and `options.exclude`
|
||||
var filter = createFilter(options.include, options.exclude, {
|
||||
resolve: '/my/base/dir'
|
||||
});
|
||||
|
||||
return {
|
||||
transform(code, id) {
|
||||
if (!filter(id)) return;
|
||||
|
||||
// proceed with the transformation...
|
||||
}
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
### dataToEsm
|
||||
|
||||
Transforms objects into tree-shakable ES Module imports.
|
||||
|
||||
Parameters: `(data: Object)`<br>
|
||||
Returns: `String`
|
||||
|
||||
#### `data`
|
||||
|
||||
Type: `Object`
|
||||
|
||||
An object to transform into an ES module.
|
||||
|
||||
#### Usage
|
||||
|
||||
```js
|
||||
import { dataToEsm } from '@rollup/pluginutils';
|
||||
|
||||
const esModuleSource = dataToEsm(
|
||||
{
|
||||
custom: 'data',
|
||||
to: ['treeshake']
|
||||
},
|
||||
{
|
||||
compact: false,
|
||||
indent: '\t',
|
||||
preferConst: false,
|
||||
objectShorthand: false,
|
||||
namedExports: true
|
||||
}
|
||||
);
|
||||
/*
|
||||
Outputs the string ES module source:
|
||||
export const custom = 'data';
|
||||
export const to = ['treeshake'];
|
||||
export default { custom, to };
|
||||
*/
|
||||
```
|
||||
|
||||
### extractAssignedNames
|
||||
|
||||
Extracts the names of all assignment targets based upon specified patterns.
|
||||
|
||||
Parameters: `(param: Node)`<br>
|
||||
Returns: `Array[...String]`
|
||||
|
||||
#### `param`
|
||||
|
||||
Type: `Node`
|
||||
|
||||
An `acorn` AST Node.
|
||||
|
||||
#### Usage
|
||||
|
||||
```js
|
||||
import { extractAssignedNames } from '@rollup/pluginutils';
|
||||
import { walk } from 'estree-walker';
|
||||
|
||||
export default function myPlugin(options = {}) {
|
||||
return {
|
||||
transform(code) {
|
||||
const ast = this.parse(code);
|
||||
|
||||
walk(ast, {
|
||||
enter(node) {
|
||||
if (node.type === 'VariableDeclarator') {
|
||||
const declaredNames = extractAssignedNames(node.id);
|
||||
// do something with the declared names
|
||||
// e.g. for `const {x, y: z} = ... => declaredNames = ['x', 'z']
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
### makeLegalIdentifier
|
||||
|
||||
Constructs a bundle-safe identifier from a `String`.
|
||||
|
||||
Parameters: `(str: String)`<br>
|
||||
Returns: `String`
|
||||
|
||||
#### Usage
|
||||
|
||||
```js
|
||||
import { makeLegalIdentifier } from '@rollup/pluginutils';
|
||||
|
||||
makeLegalIdentifier('foo-bar'); // 'foo_bar'
|
||||
makeLegalIdentifier('typeof'); // '_typeof'
|
||||
```
|
||||
|
||||
## Meta
|
||||
|
||||
[CONTRIBUTING](/.github/CONTRIBUTING.md)
|
||||
|
||||
[LICENSE (MIT)](/LICENSE)
|
||||
447
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/dist/cjs/index.js
generated
vendored
Normal file
447
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/dist/cjs/index.js
generated
vendored
Normal file
@@ -0,0 +1,447 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
||||
|
||||
var path = require('path');
|
||||
var pm = _interopDefault(require('picomatch'));
|
||||
|
||||
const addExtension = function addExtension(filename, ext = '.js') {
|
||||
let result = `${filename}`;
|
||||
if (!path.extname(filename))
|
||||
result += ext;
|
||||
return result;
|
||||
};
|
||||
|
||||
function walk(ast, { enter, leave }) {
|
||||
return visit(ast, null, enter, leave);
|
||||
}
|
||||
|
||||
let should_skip = false;
|
||||
let should_remove = false;
|
||||
let replacement = null;
|
||||
const context = {
|
||||
skip: () => should_skip = true,
|
||||
remove: () => should_remove = true,
|
||||
replace: (node) => replacement = node
|
||||
};
|
||||
|
||||
function replace(parent, prop, index, node) {
|
||||
if (parent) {
|
||||
if (index !== null) {
|
||||
parent[prop][index] = node;
|
||||
} else {
|
||||
parent[prop] = node;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function remove(parent, prop, index) {
|
||||
if (parent) {
|
||||
if (index !== null) {
|
||||
parent[prop].splice(index, 1);
|
||||
} else {
|
||||
delete parent[prop];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function visit(
|
||||
node,
|
||||
parent,
|
||||
enter,
|
||||
leave,
|
||||
prop,
|
||||
index
|
||||
) {
|
||||
if (node) {
|
||||
if (enter) {
|
||||
const _should_skip = should_skip;
|
||||
const _should_remove = should_remove;
|
||||
const _replacement = replacement;
|
||||
should_skip = false;
|
||||
should_remove = false;
|
||||
replacement = null;
|
||||
|
||||
enter.call(context, node, parent, prop, index);
|
||||
|
||||
if (replacement) {
|
||||
node = replacement;
|
||||
replace(parent, prop, index, node);
|
||||
}
|
||||
|
||||
if (should_remove) {
|
||||
remove(parent, prop, index);
|
||||
}
|
||||
|
||||
const skipped = should_skip;
|
||||
const removed = should_remove;
|
||||
|
||||
should_skip = _should_skip;
|
||||
should_remove = _should_remove;
|
||||
replacement = _replacement;
|
||||
|
||||
if (skipped) return node;
|
||||
if (removed) return null;
|
||||
}
|
||||
|
||||
for (const key in node) {
|
||||
const value = (node )[key];
|
||||
|
||||
if (typeof value !== 'object') {
|
||||
continue;
|
||||
}
|
||||
|
||||
else if (Array.isArray(value)) {
|
||||
for (let j = 0, k = 0; j < value.length; j += 1, k += 1) {
|
||||
if (value[j] !== null && typeof value[j].type === 'string') {
|
||||
if (!visit(value[j], node, enter, leave, key, k)) {
|
||||
// removed
|
||||
j--;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else if (value !== null && typeof value.type === 'string') {
|
||||
visit(value, node, enter, leave, key, null);
|
||||
}
|
||||
}
|
||||
|
||||
if (leave) {
|
||||
const _replacement = replacement;
|
||||
const _should_remove = should_remove;
|
||||
replacement = null;
|
||||
should_remove = false;
|
||||
|
||||
leave.call(context, node, parent, prop, index);
|
||||
|
||||
if (replacement) {
|
||||
node = replacement;
|
||||
replace(parent, prop, index, node);
|
||||
}
|
||||
|
||||
if (should_remove) {
|
||||
remove(parent, prop, index);
|
||||
}
|
||||
|
||||
const removed = should_remove;
|
||||
|
||||
replacement = _replacement;
|
||||
should_remove = _should_remove;
|
||||
|
||||
if (removed) return null;
|
||||
}
|
||||
}
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
const extractors = {
|
||||
ArrayPattern(names, param) {
|
||||
for (const element of param.elements) {
|
||||
if (element)
|
||||
extractors[element.type](names, element);
|
||||
}
|
||||
},
|
||||
AssignmentPattern(names, param) {
|
||||
extractors[param.left.type](names, param.left);
|
||||
},
|
||||
Identifier(names, param) {
|
||||
names.push(param.name);
|
||||
},
|
||||
MemberExpression() { },
|
||||
ObjectPattern(names, param) {
|
||||
for (const prop of param.properties) {
|
||||
// @ts-ignore Typescript reports that this is not a valid type
|
||||
if (prop.type === 'RestElement') {
|
||||
extractors.RestElement(names, prop);
|
||||
}
|
||||
else {
|
||||
extractors[prop.value.type](names, prop.value);
|
||||
}
|
||||
}
|
||||
},
|
||||
RestElement(names, param) {
|
||||
extractors[param.argument.type](names, param.argument);
|
||||
}
|
||||
};
|
||||
const extractAssignedNames = function extractAssignedNames(param) {
|
||||
const names = [];
|
||||
extractors[param.type](names, param);
|
||||
return names;
|
||||
};
|
||||
|
||||
const blockDeclarations = {
|
||||
const: true,
|
||||
let: true
|
||||
};
|
||||
class Scope {
|
||||
constructor(options = {}) {
|
||||
this.parent = options.parent;
|
||||
this.isBlockScope = !!options.block;
|
||||
this.declarations = Object.create(null);
|
||||
if (options.params) {
|
||||
options.params.forEach((param) => {
|
||||
extractAssignedNames(param).forEach((name) => {
|
||||
this.declarations[name] = true;
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
addDeclaration(node, isBlockDeclaration, isVar) {
|
||||
if (!isBlockDeclaration && this.isBlockScope) {
|
||||
// it's a `var` or function node, and this
|
||||
// is a block scope, so we need to go up
|
||||
this.parent.addDeclaration(node, isBlockDeclaration, isVar);
|
||||
}
|
||||
else if (node.id) {
|
||||
extractAssignedNames(node.id).forEach((name) => {
|
||||
this.declarations[name] = true;
|
||||
});
|
||||
}
|
||||
}
|
||||
contains(name) {
|
||||
return this.declarations[name] || (this.parent ? this.parent.contains(name) : false);
|
||||
}
|
||||
}
|
||||
const attachScopes = function attachScopes(ast, propertyName = 'scope') {
|
||||
let scope = new Scope();
|
||||
walk(ast, {
|
||||
enter(n, parent) {
|
||||
const node = n;
|
||||
// function foo () {...}
|
||||
// class Foo {...}
|
||||
if (/(Function|Class)Declaration/.test(node.type)) {
|
||||
scope.addDeclaration(node, false, false);
|
||||
}
|
||||
// var foo = 1
|
||||
if (node.type === 'VariableDeclaration') {
|
||||
const { kind } = node;
|
||||
const isBlockDeclaration = blockDeclarations[kind];
|
||||
// don't add const/let declarations in the body of a for loop #113
|
||||
const parentType = parent ? parent.type : '';
|
||||
if (!(isBlockDeclaration && /ForOfStatement/.test(parentType))) {
|
||||
node.declarations.forEach((declaration) => {
|
||||
scope.addDeclaration(declaration, isBlockDeclaration, true);
|
||||
});
|
||||
}
|
||||
}
|
||||
let newScope;
|
||||
// create new function scope
|
||||
if (/Function/.test(node.type)) {
|
||||
const func = node;
|
||||
newScope = new Scope({
|
||||
parent: scope,
|
||||
block: false,
|
||||
params: func.params
|
||||
});
|
||||
// named function expressions - the name is considered
|
||||
// part of the function's scope
|
||||
if (func.type === 'FunctionExpression' && func.id) {
|
||||
newScope.addDeclaration(func, false, false);
|
||||
}
|
||||
}
|
||||
// create new block scope
|
||||
if (node.type === 'BlockStatement' && !/Function/.test(parent.type)) {
|
||||
newScope = new Scope({
|
||||
parent: scope,
|
||||
block: true
|
||||
});
|
||||
}
|
||||
// catch clause has its own block scope
|
||||
if (node.type === 'CatchClause') {
|
||||
newScope = new Scope({
|
||||
parent: scope,
|
||||
params: node.param ? [node.param] : [],
|
||||
block: true
|
||||
});
|
||||
}
|
||||
if (newScope) {
|
||||
Object.defineProperty(node, propertyName, {
|
||||
value: newScope,
|
||||
configurable: true
|
||||
});
|
||||
scope = newScope;
|
||||
}
|
||||
},
|
||||
leave(n) {
|
||||
const node = n;
|
||||
if (node[propertyName])
|
||||
scope = scope.parent;
|
||||
}
|
||||
});
|
||||
return scope;
|
||||
};
|
||||
|
||||
// Helper since Typescript can't detect readonly arrays with Array.isArray
|
||||
function isArray(arg) {
|
||||
return Array.isArray(arg);
|
||||
}
|
||||
function ensureArray(thing) {
|
||||
if (isArray(thing))
|
||||
return thing;
|
||||
if (thing == null)
|
||||
return [];
|
||||
return [thing];
|
||||
}
|
||||
|
||||
function getMatcherString(id, resolutionBase) {
|
||||
if (resolutionBase === false) {
|
||||
return id;
|
||||
}
|
||||
// resolve('') is valid and will default to process.cwd()
|
||||
const basePath = path.resolve(resolutionBase || '')
|
||||
.split(path.sep)
|
||||
.join('/')
|
||||
// escape all possible (posix + win) path characters that might interfere with regex
|
||||
.replace(/[-^$*+?.()|[\]{}]/g, '\\$&');
|
||||
// Note that we use posix.join because:
|
||||
// 1. the basePath has been normalized to use /
|
||||
// 2. the incoming glob (id) matcher, also uses /
|
||||
// otherwise Node will force backslash (\) on windows
|
||||
return path.posix.join(basePath, id);
|
||||
}
|
||||
const createFilter = function createFilter(include, exclude, options) {
|
||||
const resolutionBase = options && options.resolve;
|
||||
const getMatcher = (id) => id instanceof RegExp
|
||||
? id
|
||||
: {
|
||||
test: (what) => {
|
||||
// this refactor is a tad overly verbose but makes for easy debugging
|
||||
const pattern = getMatcherString(id, resolutionBase);
|
||||
const fn = pm(pattern, { dot: true });
|
||||
const result = fn(what);
|
||||
return result;
|
||||
}
|
||||
};
|
||||
const includeMatchers = ensureArray(include).map(getMatcher);
|
||||
const excludeMatchers = ensureArray(exclude).map(getMatcher);
|
||||
return function result(id) {
|
||||
if (typeof id !== 'string')
|
||||
return false;
|
||||
if (/\0/.test(id))
|
||||
return false;
|
||||
const pathId = id.split(path.sep).join('/');
|
||||
for (let i = 0; i < excludeMatchers.length; ++i) {
|
||||
const matcher = excludeMatchers[i];
|
||||
if (matcher.test(pathId))
|
||||
return false;
|
||||
}
|
||||
for (let i = 0; i < includeMatchers.length; ++i) {
|
||||
const matcher = includeMatchers[i];
|
||||
if (matcher.test(pathId))
|
||||
return true;
|
||||
}
|
||||
return !includeMatchers.length;
|
||||
};
|
||||
};
|
||||
|
||||
const reservedWords = 'break case class catch const continue debugger default delete do else export extends finally for function if import in instanceof let new return super switch this throw try typeof var void while with yield enum await implements package protected static interface private public';
|
||||
const builtins = 'arguments Infinity NaN undefined null true false eval uneval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Symbol Error EvalError InternalError RangeError ReferenceError SyntaxError TypeError URIError Number Math Date String RegExp Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array Map Set WeakMap WeakSet SIMD ArrayBuffer DataView JSON Promise Generator GeneratorFunction Reflect Proxy Intl';
|
||||
const forbiddenIdentifiers = new Set(`${reservedWords} ${builtins}`.split(' '));
|
||||
forbiddenIdentifiers.add('');
|
||||
const makeLegalIdentifier = function makeLegalIdentifier(str) {
|
||||
let identifier = str
|
||||
.replace(/-(\w)/g, (_, letter) => letter.toUpperCase())
|
||||
.replace(/[^$_a-zA-Z0-9]/g, '_');
|
||||
if (/\d/.test(identifier[0]) || forbiddenIdentifiers.has(identifier)) {
|
||||
identifier = `_${identifier}`;
|
||||
}
|
||||
return identifier || '_';
|
||||
};
|
||||
|
||||
function stringify(obj) {
|
||||
return (JSON.stringify(obj) || 'undefined').replace(/[\u2028\u2029]/g, (char) => `\\u${`000${char.charCodeAt(0).toString(16)}`.slice(-4)}`);
|
||||
}
|
||||
function serializeArray(arr, indent, baseIndent) {
|
||||
let output = '[';
|
||||
const separator = indent ? `\n${baseIndent}${indent}` : '';
|
||||
for (let i = 0; i < arr.length; i++) {
|
||||
const key = arr[i];
|
||||
output += `${i > 0 ? ',' : ''}${separator}${serialize(key, indent, baseIndent + indent)}`;
|
||||
}
|
||||
return `${output}${indent ? `\n${baseIndent}` : ''}]`;
|
||||
}
|
||||
function serializeObject(obj, indent, baseIndent) {
|
||||
let output = '{';
|
||||
const separator = indent ? `\n${baseIndent}${indent}` : '';
|
||||
const entries = Object.entries(obj);
|
||||
for (let i = 0; i < entries.length; i++) {
|
||||
const [key, value] = entries[i];
|
||||
const stringKey = makeLegalIdentifier(key) === key ? key : stringify(key);
|
||||
output += `${i > 0 ? ',' : ''}${separator}${stringKey}:${indent ? ' ' : ''}${serialize(value, indent, baseIndent + indent)}`;
|
||||
}
|
||||
return `${output}${indent ? `\n${baseIndent}` : ''}}`;
|
||||
}
|
||||
function serialize(obj, indent, baseIndent) {
|
||||
if (obj === Infinity)
|
||||
return 'Infinity';
|
||||
if (obj === -Infinity)
|
||||
return '-Infinity';
|
||||
if (obj === 0 && 1 / obj === -Infinity)
|
||||
return '-0';
|
||||
if (obj instanceof Date)
|
||||
return `new Date(${obj.getTime()})`;
|
||||
if (obj instanceof RegExp)
|
||||
return obj.toString();
|
||||
if (obj !== obj)
|
||||
return 'NaN'; // eslint-disable-line no-self-compare
|
||||
if (Array.isArray(obj))
|
||||
return serializeArray(obj, indent, baseIndent);
|
||||
if (obj === null)
|
||||
return 'null';
|
||||
if (typeof obj === 'object')
|
||||
return serializeObject(obj, indent, baseIndent);
|
||||
return stringify(obj);
|
||||
}
|
||||
const dataToEsm = function dataToEsm(data, options = {}) {
|
||||
const t = options.compact ? '' : 'indent' in options ? options.indent : '\t';
|
||||
const _ = options.compact ? '' : ' ';
|
||||
const n = options.compact ? '' : '\n';
|
||||
const declarationType = options.preferConst ? 'const' : 'var';
|
||||
if (options.namedExports === false ||
|
||||
typeof data !== 'object' ||
|
||||
Array.isArray(data) ||
|
||||
data instanceof Date ||
|
||||
data instanceof RegExp ||
|
||||
data === null) {
|
||||
const code = serialize(data, options.compact ? null : t, '');
|
||||
const magic = _ || (/^[{[\-\/]/.test(code) ? '' : ' '); // eslint-disable-line no-useless-escape
|
||||
return `export default${magic}${code};`;
|
||||
}
|
||||
let namedExportCode = '';
|
||||
const defaultExportRows = [];
|
||||
for (const [key, value] of Object.entries(data)) {
|
||||
if (key === makeLegalIdentifier(key)) {
|
||||
if (options.objectShorthand)
|
||||
defaultExportRows.push(key);
|
||||
else
|
||||
defaultExportRows.push(`${key}:${_}${key}`);
|
||||
namedExportCode += `export ${declarationType} ${key}${_}=${_}${serialize(value, options.compact ? null : t, '')};${n}`;
|
||||
}
|
||||
else {
|
||||
defaultExportRows.push(`${stringify(key)}:${_}${serialize(value, options.compact ? null : t, '')}`);
|
||||
}
|
||||
}
|
||||
return `${namedExportCode}export default${_}{${n}${t}${defaultExportRows.join(`,${n}${t}`)}${n}};${n}`;
|
||||
};
|
||||
|
||||
// TODO: remove this in next major
|
||||
var index = {
|
||||
addExtension,
|
||||
attachScopes,
|
||||
createFilter,
|
||||
dataToEsm,
|
||||
extractAssignedNames,
|
||||
makeLegalIdentifier
|
||||
};
|
||||
|
||||
exports.addExtension = addExtension;
|
||||
exports.attachScopes = attachScopes;
|
||||
exports.createFilter = createFilter;
|
||||
exports.dataToEsm = dataToEsm;
|
||||
exports.default = index;
|
||||
exports.extractAssignedNames = extractAssignedNames;
|
||||
exports.makeLegalIdentifier = makeLegalIdentifier;
|
||||
436
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/dist/es/index.js
generated
vendored
Normal file
436
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/dist/es/index.js
generated
vendored
Normal file
@@ -0,0 +1,436 @@
|
||||
import { extname, sep, resolve, posix } from 'path';
|
||||
import pm from 'picomatch';
|
||||
|
||||
const addExtension = function addExtension(filename, ext = '.js') {
|
||||
let result = `${filename}`;
|
||||
if (!extname(filename))
|
||||
result += ext;
|
||||
return result;
|
||||
};
|
||||
|
||||
function walk(ast, { enter, leave }) {
|
||||
return visit(ast, null, enter, leave);
|
||||
}
|
||||
|
||||
let should_skip = false;
|
||||
let should_remove = false;
|
||||
let replacement = null;
|
||||
const context = {
|
||||
skip: () => should_skip = true,
|
||||
remove: () => should_remove = true,
|
||||
replace: (node) => replacement = node
|
||||
};
|
||||
|
||||
function replace(parent, prop, index, node) {
|
||||
if (parent) {
|
||||
if (index !== null) {
|
||||
parent[prop][index] = node;
|
||||
} else {
|
||||
parent[prop] = node;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function remove(parent, prop, index) {
|
||||
if (parent) {
|
||||
if (index !== null) {
|
||||
parent[prop].splice(index, 1);
|
||||
} else {
|
||||
delete parent[prop];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function visit(
|
||||
node,
|
||||
parent,
|
||||
enter,
|
||||
leave,
|
||||
prop,
|
||||
index
|
||||
) {
|
||||
if (node) {
|
||||
if (enter) {
|
||||
const _should_skip = should_skip;
|
||||
const _should_remove = should_remove;
|
||||
const _replacement = replacement;
|
||||
should_skip = false;
|
||||
should_remove = false;
|
||||
replacement = null;
|
||||
|
||||
enter.call(context, node, parent, prop, index);
|
||||
|
||||
if (replacement) {
|
||||
node = replacement;
|
||||
replace(parent, prop, index, node);
|
||||
}
|
||||
|
||||
if (should_remove) {
|
||||
remove(parent, prop, index);
|
||||
}
|
||||
|
||||
const skipped = should_skip;
|
||||
const removed = should_remove;
|
||||
|
||||
should_skip = _should_skip;
|
||||
should_remove = _should_remove;
|
||||
replacement = _replacement;
|
||||
|
||||
if (skipped) return node;
|
||||
if (removed) return null;
|
||||
}
|
||||
|
||||
for (const key in node) {
|
||||
const value = (node )[key];
|
||||
|
||||
if (typeof value !== 'object') {
|
||||
continue;
|
||||
}
|
||||
|
||||
else if (Array.isArray(value)) {
|
||||
for (let j = 0, k = 0; j < value.length; j += 1, k += 1) {
|
||||
if (value[j] !== null && typeof value[j].type === 'string') {
|
||||
if (!visit(value[j], node, enter, leave, key, k)) {
|
||||
// removed
|
||||
j--;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else if (value !== null && typeof value.type === 'string') {
|
||||
visit(value, node, enter, leave, key, null);
|
||||
}
|
||||
}
|
||||
|
||||
if (leave) {
|
||||
const _replacement = replacement;
|
||||
const _should_remove = should_remove;
|
||||
replacement = null;
|
||||
should_remove = false;
|
||||
|
||||
leave.call(context, node, parent, prop, index);
|
||||
|
||||
if (replacement) {
|
||||
node = replacement;
|
||||
replace(parent, prop, index, node);
|
||||
}
|
||||
|
||||
if (should_remove) {
|
||||
remove(parent, prop, index);
|
||||
}
|
||||
|
||||
const removed = should_remove;
|
||||
|
||||
replacement = _replacement;
|
||||
should_remove = _should_remove;
|
||||
|
||||
if (removed) return null;
|
||||
}
|
||||
}
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
const extractors = {
|
||||
ArrayPattern(names, param) {
|
||||
for (const element of param.elements) {
|
||||
if (element)
|
||||
extractors[element.type](names, element);
|
||||
}
|
||||
},
|
||||
AssignmentPattern(names, param) {
|
||||
extractors[param.left.type](names, param.left);
|
||||
},
|
||||
Identifier(names, param) {
|
||||
names.push(param.name);
|
||||
},
|
||||
MemberExpression() { },
|
||||
ObjectPattern(names, param) {
|
||||
for (const prop of param.properties) {
|
||||
// @ts-ignore Typescript reports that this is not a valid type
|
||||
if (prop.type === 'RestElement') {
|
||||
extractors.RestElement(names, prop);
|
||||
}
|
||||
else {
|
||||
extractors[prop.value.type](names, prop.value);
|
||||
}
|
||||
}
|
||||
},
|
||||
RestElement(names, param) {
|
||||
extractors[param.argument.type](names, param.argument);
|
||||
}
|
||||
};
|
||||
const extractAssignedNames = function extractAssignedNames(param) {
|
||||
const names = [];
|
||||
extractors[param.type](names, param);
|
||||
return names;
|
||||
};
|
||||
|
||||
const blockDeclarations = {
|
||||
const: true,
|
||||
let: true
|
||||
};
|
||||
class Scope {
|
||||
constructor(options = {}) {
|
||||
this.parent = options.parent;
|
||||
this.isBlockScope = !!options.block;
|
||||
this.declarations = Object.create(null);
|
||||
if (options.params) {
|
||||
options.params.forEach((param) => {
|
||||
extractAssignedNames(param).forEach((name) => {
|
||||
this.declarations[name] = true;
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
addDeclaration(node, isBlockDeclaration, isVar) {
|
||||
if (!isBlockDeclaration && this.isBlockScope) {
|
||||
// it's a `var` or function node, and this
|
||||
// is a block scope, so we need to go up
|
||||
this.parent.addDeclaration(node, isBlockDeclaration, isVar);
|
||||
}
|
||||
else if (node.id) {
|
||||
extractAssignedNames(node.id).forEach((name) => {
|
||||
this.declarations[name] = true;
|
||||
});
|
||||
}
|
||||
}
|
||||
contains(name) {
|
||||
return this.declarations[name] || (this.parent ? this.parent.contains(name) : false);
|
||||
}
|
||||
}
|
||||
const attachScopes = function attachScopes(ast, propertyName = 'scope') {
|
||||
let scope = new Scope();
|
||||
walk(ast, {
|
||||
enter(n, parent) {
|
||||
const node = n;
|
||||
// function foo () {...}
|
||||
// class Foo {...}
|
||||
if (/(Function|Class)Declaration/.test(node.type)) {
|
||||
scope.addDeclaration(node, false, false);
|
||||
}
|
||||
// var foo = 1
|
||||
if (node.type === 'VariableDeclaration') {
|
||||
const { kind } = node;
|
||||
const isBlockDeclaration = blockDeclarations[kind];
|
||||
// don't add const/let declarations in the body of a for loop #113
|
||||
const parentType = parent ? parent.type : '';
|
||||
if (!(isBlockDeclaration && /ForOfStatement/.test(parentType))) {
|
||||
node.declarations.forEach((declaration) => {
|
||||
scope.addDeclaration(declaration, isBlockDeclaration, true);
|
||||
});
|
||||
}
|
||||
}
|
||||
let newScope;
|
||||
// create new function scope
|
||||
if (/Function/.test(node.type)) {
|
||||
const func = node;
|
||||
newScope = new Scope({
|
||||
parent: scope,
|
||||
block: false,
|
||||
params: func.params
|
||||
});
|
||||
// named function expressions - the name is considered
|
||||
// part of the function's scope
|
||||
if (func.type === 'FunctionExpression' && func.id) {
|
||||
newScope.addDeclaration(func, false, false);
|
||||
}
|
||||
}
|
||||
// create new block scope
|
||||
if (node.type === 'BlockStatement' && !/Function/.test(parent.type)) {
|
||||
newScope = new Scope({
|
||||
parent: scope,
|
||||
block: true
|
||||
});
|
||||
}
|
||||
// catch clause has its own block scope
|
||||
if (node.type === 'CatchClause') {
|
||||
newScope = new Scope({
|
||||
parent: scope,
|
||||
params: node.param ? [node.param] : [],
|
||||
block: true
|
||||
});
|
||||
}
|
||||
if (newScope) {
|
||||
Object.defineProperty(node, propertyName, {
|
||||
value: newScope,
|
||||
configurable: true
|
||||
});
|
||||
scope = newScope;
|
||||
}
|
||||
},
|
||||
leave(n) {
|
||||
const node = n;
|
||||
if (node[propertyName])
|
||||
scope = scope.parent;
|
||||
}
|
||||
});
|
||||
return scope;
|
||||
};
|
||||
|
||||
// Helper since Typescript can't detect readonly arrays with Array.isArray
|
||||
function isArray(arg) {
|
||||
return Array.isArray(arg);
|
||||
}
|
||||
function ensureArray(thing) {
|
||||
if (isArray(thing))
|
||||
return thing;
|
||||
if (thing == null)
|
||||
return [];
|
||||
return [thing];
|
||||
}
|
||||
|
||||
function getMatcherString(id, resolutionBase) {
|
||||
if (resolutionBase === false) {
|
||||
return id;
|
||||
}
|
||||
// resolve('') is valid and will default to process.cwd()
|
||||
const basePath = resolve(resolutionBase || '')
|
||||
.split(sep)
|
||||
.join('/')
|
||||
// escape all possible (posix + win) path characters that might interfere with regex
|
||||
.replace(/[-^$*+?.()|[\]{}]/g, '\\$&');
|
||||
// Note that we use posix.join because:
|
||||
// 1. the basePath has been normalized to use /
|
||||
// 2. the incoming glob (id) matcher, also uses /
|
||||
// otherwise Node will force backslash (\) on windows
|
||||
return posix.join(basePath, id);
|
||||
}
|
||||
const createFilter = function createFilter(include, exclude, options) {
|
||||
const resolutionBase = options && options.resolve;
|
||||
const getMatcher = (id) => id instanceof RegExp
|
||||
? id
|
||||
: {
|
||||
test: (what) => {
|
||||
// this refactor is a tad overly verbose but makes for easy debugging
|
||||
const pattern = getMatcherString(id, resolutionBase);
|
||||
const fn = pm(pattern, { dot: true });
|
||||
const result = fn(what);
|
||||
return result;
|
||||
}
|
||||
};
|
||||
const includeMatchers = ensureArray(include).map(getMatcher);
|
||||
const excludeMatchers = ensureArray(exclude).map(getMatcher);
|
||||
return function result(id) {
|
||||
if (typeof id !== 'string')
|
||||
return false;
|
||||
if (/\0/.test(id))
|
||||
return false;
|
||||
const pathId = id.split(sep).join('/');
|
||||
for (let i = 0; i < excludeMatchers.length; ++i) {
|
||||
const matcher = excludeMatchers[i];
|
||||
if (matcher.test(pathId))
|
||||
return false;
|
||||
}
|
||||
for (let i = 0; i < includeMatchers.length; ++i) {
|
||||
const matcher = includeMatchers[i];
|
||||
if (matcher.test(pathId))
|
||||
return true;
|
||||
}
|
||||
return !includeMatchers.length;
|
||||
};
|
||||
};
|
||||
|
||||
const reservedWords = 'break case class catch const continue debugger default delete do else export extends finally for function if import in instanceof let new return super switch this throw try typeof var void while with yield enum await implements package protected static interface private public';
|
||||
const builtins = 'arguments Infinity NaN undefined null true false eval uneval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Symbol Error EvalError InternalError RangeError ReferenceError SyntaxError TypeError URIError Number Math Date String RegExp Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array Map Set WeakMap WeakSet SIMD ArrayBuffer DataView JSON Promise Generator GeneratorFunction Reflect Proxy Intl';
|
||||
const forbiddenIdentifiers = new Set(`${reservedWords} ${builtins}`.split(' '));
|
||||
forbiddenIdentifiers.add('');
|
||||
const makeLegalIdentifier = function makeLegalIdentifier(str) {
|
||||
let identifier = str
|
||||
.replace(/-(\w)/g, (_, letter) => letter.toUpperCase())
|
||||
.replace(/[^$_a-zA-Z0-9]/g, '_');
|
||||
if (/\d/.test(identifier[0]) || forbiddenIdentifiers.has(identifier)) {
|
||||
identifier = `_${identifier}`;
|
||||
}
|
||||
return identifier || '_';
|
||||
};
|
||||
|
||||
function stringify(obj) {
|
||||
return (JSON.stringify(obj) || 'undefined').replace(/[\u2028\u2029]/g, (char) => `\\u${`000${char.charCodeAt(0).toString(16)}`.slice(-4)}`);
|
||||
}
|
||||
function serializeArray(arr, indent, baseIndent) {
|
||||
let output = '[';
|
||||
const separator = indent ? `\n${baseIndent}${indent}` : '';
|
||||
for (let i = 0; i < arr.length; i++) {
|
||||
const key = arr[i];
|
||||
output += `${i > 0 ? ',' : ''}${separator}${serialize(key, indent, baseIndent + indent)}`;
|
||||
}
|
||||
return `${output}${indent ? `\n${baseIndent}` : ''}]`;
|
||||
}
|
||||
function serializeObject(obj, indent, baseIndent) {
|
||||
let output = '{';
|
||||
const separator = indent ? `\n${baseIndent}${indent}` : '';
|
||||
const entries = Object.entries(obj);
|
||||
for (let i = 0; i < entries.length; i++) {
|
||||
const [key, value] = entries[i];
|
||||
const stringKey = makeLegalIdentifier(key) === key ? key : stringify(key);
|
||||
output += `${i > 0 ? ',' : ''}${separator}${stringKey}:${indent ? ' ' : ''}${serialize(value, indent, baseIndent + indent)}`;
|
||||
}
|
||||
return `${output}${indent ? `\n${baseIndent}` : ''}}`;
|
||||
}
|
||||
function serialize(obj, indent, baseIndent) {
|
||||
if (obj === Infinity)
|
||||
return 'Infinity';
|
||||
if (obj === -Infinity)
|
||||
return '-Infinity';
|
||||
if (obj === 0 && 1 / obj === -Infinity)
|
||||
return '-0';
|
||||
if (obj instanceof Date)
|
||||
return `new Date(${obj.getTime()})`;
|
||||
if (obj instanceof RegExp)
|
||||
return obj.toString();
|
||||
if (obj !== obj)
|
||||
return 'NaN'; // eslint-disable-line no-self-compare
|
||||
if (Array.isArray(obj))
|
||||
return serializeArray(obj, indent, baseIndent);
|
||||
if (obj === null)
|
||||
return 'null';
|
||||
if (typeof obj === 'object')
|
||||
return serializeObject(obj, indent, baseIndent);
|
||||
return stringify(obj);
|
||||
}
|
||||
const dataToEsm = function dataToEsm(data, options = {}) {
|
||||
const t = options.compact ? '' : 'indent' in options ? options.indent : '\t';
|
||||
const _ = options.compact ? '' : ' ';
|
||||
const n = options.compact ? '' : '\n';
|
||||
const declarationType = options.preferConst ? 'const' : 'var';
|
||||
if (options.namedExports === false ||
|
||||
typeof data !== 'object' ||
|
||||
Array.isArray(data) ||
|
||||
data instanceof Date ||
|
||||
data instanceof RegExp ||
|
||||
data === null) {
|
||||
const code = serialize(data, options.compact ? null : t, '');
|
||||
const magic = _ || (/^[{[\-\/]/.test(code) ? '' : ' '); // eslint-disable-line no-useless-escape
|
||||
return `export default${magic}${code};`;
|
||||
}
|
||||
let namedExportCode = '';
|
||||
const defaultExportRows = [];
|
||||
for (const [key, value] of Object.entries(data)) {
|
||||
if (key === makeLegalIdentifier(key)) {
|
||||
if (options.objectShorthand)
|
||||
defaultExportRows.push(key);
|
||||
else
|
||||
defaultExportRows.push(`${key}:${_}${key}`);
|
||||
namedExportCode += `export ${declarationType} ${key}${_}=${_}${serialize(value, options.compact ? null : t, '')};${n}`;
|
||||
}
|
||||
else {
|
||||
defaultExportRows.push(`${stringify(key)}:${_}${serialize(value, options.compact ? null : t, '')}`);
|
||||
}
|
||||
}
|
||||
return `${namedExportCode}export default${_}{${n}${t}${defaultExportRows.join(`,${n}${t}`)}${n}};${n}`;
|
||||
};
|
||||
|
||||
// TODO: remove this in next major
|
||||
var index = {
|
||||
addExtension,
|
||||
attachScopes,
|
||||
createFilter,
|
||||
dataToEsm,
|
||||
extractAssignedNames,
|
||||
makeLegalIdentifier
|
||||
};
|
||||
|
||||
export default index;
|
||||
export { addExtension, attachScopes, createFilter, dataToEsm, extractAssignedNames, makeLegalIdentifier };
|
||||
1
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/dist/es/package.json
generated
vendored
Normal file
1
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/dist/es/package.json
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"type":"module"}
|
||||
79
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/node_modules/estree-walker/CHANGELOG.md
generated
vendored
Normal file
79
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/node_modules/estree-walker/CHANGELOG.md
generated
vendored
Normal file
@@ -0,0 +1,79 @@
|
||||
# changelog
|
||||
|
||||
## 1.0.1
|
||||
|
||||
* Relax node type to `BaseNode` ([#17](https://github.com/Rich-Harris/estree-walker/pull/17))
|
||||
|
||||
## 1.0.0
|
||||
|
||||
* Don't cache child keys
|
||||
|
||||
## 0.9.0
|
||||
|
||||
* Add `this.remove()` method
|
||||
|
||||
## 0.8.1
|
||||
|
||||
* Fix pkg.files
|
||||
|
||||
## 0.8.0
|
||||
|
||||
* Adopt `estree` types
|
||||
|
||||
## 0.7.0
|
||||
|
||||
* Add a `this.replace(node)` method
|
||||
|
||||
## 0.6.1
|
||||
|
||||
* Only traverse nodes that exist and have a type ([#9](https://github.com/Rich-Harris/estree-walker/pull/9))
|
||||
* Only cache keys for nodes with a type ([#8](https://github.com/Rich-Harris/estree-walker/pull/8))
|
||||
|
||||
## 0.6.0
|
||||
|
||||
* Fix walker context type
|
||||
* Update deps, remove unncessary Bublé transformation
|
||||
|
||||
## 0.5.2
|
||||
|
||||
* Add types to package
|
||||
|
||||
## 0.5.1
|
||||
|
||||
* Prevent context corruption when `walk()` is called during a walk
|
||||
|
||||
## 0.5.0
|
||||
|
||||
* Export `childKeys`, for manually fixing in case of malformed ASTs
|
||||
|
||||
## 0.4.0
|
||||
|
||||
* Add TypeScript typings ([#3](https://github.com/Rich-Harris/estree-walker/pull/3))
|
||||
|
||||
## 0.3.1
|
||||
|
||||
* Include `pkg.repository` ([#2](https://github.com/Rich-Harris/estree-walker/pull/2))
|
||||
|
||||
## 0.3.0
|
||||
|
||||
* More predictable ordering
|
||||
|
||||
## 0.2.1
|
||||
|
||||
* Keep `context` shape
|
||||
|
||||
## 0.2.0
|
||||
|
||||
* Add ES6 build
|
||||
|
||||
## 0.1.3
|
||||
|
||||
* npm snafu
|
||||
|
||||
## 0.1.2
|
||||
|
||||
* Pass current prop and index to `enter`/`leave` callbacks
|
||||
|
||||
## 0.1.1
|
||||
|
||||
* First release
|
||||
48
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/node_modules/estree-walker/README.md
generated
vendored
Normal file
48
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/node_modules/estree-walker/README.md
generated
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
# estree-walker
|
||||
|
||||
Simple utility for walking an [ESTree](https://github.com/estree/estree)-compliant AST, such as one generated by [acorn](https://github.com/marijnh/acorn).
|
||||
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
npm i estree-walker
|
||||
```
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
var walk = require( 'estree-walker' ).walk;
|
||||
var acorn = require( 'acorn' );
|
||||
|
||||
ast = acorn.parse( sourceCode, options ); // https://github.com/acornjs/acorn
|
||||
|
||||
walk( ast, {
|
||||
enter: function ( node, parent, prop, index ) {
|
||||
// some code happens
|
||||
},
|
||||
leave: function ( node, parent, prop, index ) {
|
||||
// some code happens
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
Inside the `enter` function, calling `this.skip()` will prevent the node's children being walked, or the `leave` function (which is optional) being called.
|
||||
|
||||
Call `this.replace(new_node)` in either `enter` or `leave` to replace the current node with a new one.
|
||||
|
||||
Call `this.remove()` in either `enter` or `leave` to remove the current node.
|
||||
|
||||
## Why not use estraverse?
|
||||
|
||||
The ESTree spec is evolving to accommodate ES6/7. I've had a couple of experiences where [estraverse](https://github.com/estools/estraverse) was unable to handle an AST generated by recent versions of acorn, because it hard-codes visitor keys.
|
||||
|
||||
estree-walker, by contrast, simply enumerates a node's properties to find child nodes (and child lists of nodes), and is therefore resistant to spec changes. It's also much smaller. (The performance, if you're wondering, is basically identical.)
|
||||
|
||||
None of which should be taken as criticism of estraverse, which has more features and has been battle-tested in many more situations, and for which I'm very grateful.
|
||||
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
135
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/node_modules/estree-walker/dist/estree-walker.umd.js
generated
vendored
Normal file
135
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/node_modules/estree-walker/dist/estree-walker.umd.js
generated
vendored
Normal file
@@ -0,0 +1,135 @@
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
||||
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
||||
(factory((global.estreeWalker = {})));
|
||||
}(this, (function (exports) { 'use strict';
|
||||
|
||||
function walk(ast, { enter, leave }) {
|
||||
return visit(ast, null, enter, leave);
|
||||
}
|
||||
|
||||
let should_skip = false;
|
||||
let should_remove = false;
|
||||
let replacement = null;
|
||||
const context = {
|
||||
skip: () => should_skip = true,
|
||||
remove: () => should_remove = true,
|
||||
replace: (node) => replacement = node
|
||||
};
|
||||
|
||||
function replace(parent, prop, index, node) {
|
||||
if (parent) {
|
||||
if (index !== null) {
|
||||
parent[prop][index] = node;
|
||||
} else {
|
||||
parent[prop] = node;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function remove(parent, prop, index) {
|
||||
if (parent) {
|
||||
if (index !== null) {
|
||||
parent[prop].splice(index, 1);
|
||||
} else {
|
||||
delete parent[prop];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function visit(
|
||||
node,
|
||||
parent,
|
||||
enter,
|
||||
leave,
|
||||
prop,
|
||||
index
|
||||
) {
|
||||
if (node) {
|
||||
if (enter) {
|
||||
const _should_skip = should_skip;
|
||||
const _should_remove = should_remove;
|
||||
const _replacement = replacement;
|
||||
should_skip = false;
|
||||
should_remove = false;
|
||||
replacement = null;
|
||||
|
||||
enter.call(context, node, parent, prop, index);
|
||||
|
||||
if (replacement) {
|
||||
node = replacement;
|
||||
replace(parent, prop, index, node);
|
||||
}
|
||||
|
||||
if (should_remove) {
|
||||
remove(parent, prop, index);
|
||||
}
|
||||
|
||||
const skipped = should_skip;
|
||||
const removed = should_remove;
|
||||
|
||||
should_skip = _should_skip;
|
||||
should_remove = _should_remove;
|
||||
replacement = _replacement;
|
||||
|
||||
if (skipped) return node;
|
||||
if (removed) return null;
|
||||
}
|
||||
|
||||
for (const key in node) {
|
||||
const value = (node )[key];
|
||||
|
||||
if (typeof value !== 'object') {
|
||||
continue;
|
||||
}
|
||||
|
||||
else if (Array.isArray(value)) {
|
||||
for (let j = 0, k = 0; j < value.length; j += 1, k += 1) {
|
||||
if (value[j] !== null && typeof value[j].type === 'string') {
|
||||
if (!visit(value[j], node, enter, leave, key, k)) {
|
||||
// removed
|
||||
j--;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else if (value !== null && typeof value.type === 'string') {
|
||||
visit(value, node, enter, leave, key, null);
|
||||
}
|
||||
}
|
||||
|
||||
if (leave) {
|
||||
const _replacement = replacement;
|
||||
const _should_remove = should_remove;
|
||||
replacement = null;
|
||||
should_remove = false;
|
||||
|
||||
leave.call(context, node, parent, prop, index);
|
||||
|
||||
if (replacement) {
|
||||
node = replacement;
|
||||
replace(parent, prop, index, node);
|
||||
}
|
||||
|
||||
if (should_remove) {
|
||||
remove(parent, prop, index);
|
||||
}
|
||||
|
||||
const removed = should_remove;
|
||||
|
||||
replacement = _replacement;
|
||||
should_remove = _should_remove;
|
||||
|
||||
if (removed) return null;
|
||||
}
|
||||
}
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
exports.walk = walk;
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
})));
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"estree-walker.umd.js","sources":["../src/estree-walker.js"],"sourcesContent":["export function walk(ast, { enter, leave }) {\n\tvisit(ast, null, enter, leave);\n}\n\nlet shouldSkip = false;\nconst context = { skip: () => shouldSkip = true };\n\nexport const childKeys = {};\n\nconst toString = Object.prototype.toString;\n\nfunction isArray(thing) {\n\treturn toString.call(thing) === '[object Array]';\n}\n\nfunction visit(node, parent, enter, leave, prop, index) {\n\tif (!node) return;\n\n\tif (enter) {\n\t\tconst _shouldSkip = shouldSkip;\n\t\tshouldSkip = false;\n\t\tenter.call(context, node, parent, prop, index);\n\t\tconst skipped = shouldSkip;\n\t\tshouldSkip = _shouldSkip;\n\n\t\tif (skipped) return;\n\t}\n\n\tconst keys = childKeys[node.type] || (\n\t\tchildKeys[node.type] = Object.keys(node).filter(key => typeof node[key] === 'object')\n\t);\n\n\tfor (let i = 0; i < keys.length; i += 1) {\n\t\tconst key = keys[i];\n\t\tconst value = node[key];\n\n\t\tif (isArray(value)) {\n\t\t\tfor (let j = 0; j < value.length; j += 1) {\n\t\t\t\tvisit(value[j], node, enter, leave, key, j);\n\t\t\t}\n\t\t}\n\n\t\telse if (value && value.type) {\n\t\t\tvisit(value, node, enter, leave, key, null);\n\t\t}\n\t}\n\n\tif (leave) {\n\t\tleave(node, parent, prop, index);\n\t}\n}\n"],"names":[],"mappings":";;;;;;CAAO,SAAS,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;CAC5C,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAChC,CAAC;;CAED,IAAI,UAAU,GAAG,KAAK,CAAC;CACvB,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,MAAM,UAAU,GAAG,IAAI,EAAE,CAAC;;AAElD,AAAY,OAAC,SAAS,GAAG,EAAE,CAAC;;CAE5B,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;;CAE3C,SAAS,OAAO,CAAC,KAAK,EAAE;CACxB,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,gBAAgB,CAAC;CAClD,CAAC;;CAED,SAAS,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;CACxD,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO;;CAEnB,CAAC,IAAI,KAAK,EAAE;CACZ,EAAE,MAAM,WAAW,GAAG,UAAU,CAAC;CACjC,EAAE,UAAU,GAAG,KAAK,CAAC;CACrB,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;CACjD,EAAE,MAAM,OAAO,GAAG,UAAU,CAAC;CAC7B,EAAE,UAAU,GAAG,WAAW,CAAC;;CAE3B,EAAE,IAAI,OAAO,EAAE,OAAO;CACtB,EAAE;;CAEF,CAAC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;CAClC,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC;CACvF,EAAE,CAAC;;CAEH,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;CAC1C,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;CACtB,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;;CAE1B,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;CACtB,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;CAC7C,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;CAChD,IAAI;CACJ,GAAG;;CAEH,OAAO,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE;CAChC,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;CAC/C,GAAG;CACH,EAAE;;CAEF,CAAC,IAAI,KAAK,EAAE;CACZ,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;CACnC,EAAE;CACF,CAAC;;;;;;;;;;;;;"}
|
||||
67
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/node_modules/estree-walker/package.json
generated
vendored
Normal file
67
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/node_modules/estree-walker/package.json
generated
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
{
|
||||
"_args": [
|
||||
[
|
||||
"estree-walker@1.0.1",
|
||||
"J:\\Github\\CURD-TS"
|
||||
]
|
||||
],
|
||||
"_development": true,
|
||||
"_from": "estree-walker@1.0.1",
|
||||
"_id": "estree-walker@1.0.1",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha1-MbxdYSyWtwQQa0d+bdXYqhOMtwA=",
|
||||
"_location": "/rollup-plugin-dynamic-import-variables/@rollup/pluginutils/estree-walker",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "version",
|
||||
"registry": true,
|
||||
"raw": "estree-walker@1.0.1",
|
||||
"name": "estree-walker",
|
||||
"escapedName": "estree-walker",
|
||||
"rawSpec": "1.0.1",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "1.0.1"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/rollup-plugin-dynamic-import-variables/@rollup/pluginutils"
|
||||
],
|
||||
"_resolved": "http://192.168.250.101:4873/estree-walker/-/estree-walker-1.0.1.tgz",
|
||||
"_spec": "1.0.1",
|
||||
"_where": "J:\\Github\\CURD-TS",
|
||||
"author": {
|
||||
"name": "Rich Harris"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/Rich-Harris/estree-walker/issues"
|
||||
},
|
||||
"description": "Traverse an ESTree-compliant AST",
|
||||
"devDependencies": {
|
||||
"@types/estree": "0.0.39",
|
||||
"mocha": "^5.2.0",
|
||||
"rollup": "^0.67.3",
|
||||
"rollup-plugin-sucrase": "^2.1.0",
|
||||
"typescript": "^3.6.3"
|
||||
},
|
||||
"files": [
|
||||
"src",
|
||||
"dist",
|
||||
"types",
|
||||
"README.md"
|
||||
],
|
||||
"homepage": "https://github.com/Rich-Harris/estree-walker#readme",
|
||||
"license": "MIT",
|
||||
"main": "dist/estree-walker.umd.js",
|
||||
"module": "src/estree-walker.js",
|
||||
"name": "estree-walker",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/Rich-Harris/estree-walker.git"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "tsc && rollup -c",
|
||||
"prepublishOnly": "npm run build && npm test",
|
||||
"test": "mocha --opts mocha.opts"
|
||||
},
|
||||
"types": "types/index.d.ts",
|
||||
"version": "1.0.1"
|
||||
}
|
||||
125
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/node_modules/estree-walker/src/estree-walker.js
generated
vendored
Normal file
125
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/node_modules/estree-walker/src/estree-walker.js
generated
vendored
Normal file
@@ -0,0 +1,125 @@
|
||||
function walk(ast, { enter, leave }) {
|
||||
return visit(ast, null, enter, leave);
|
||||
}
|
||||
|
||||
let should_skip = false;
|
||||
let should_remove = false;
|
||||
let replacement = null;
|
||||
const context = {
|
||||
skip: () => should_skip = true,
|
||||
remove: () => should_remove = true,
|
||||
replace: (node) => replacement = node
|
||||
};
|
||||
|
||||
function replace(parent, prop, index, node) {
|
||||
if (parent) {
|
||||
if (index !== null) {
|
||||
parent[prop][index] = node;
|
||||
} else {
|
||||
parent[prop] = node;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function remove(parent, prop, index) {
|
||||
if (parent) {
|
||||
if (index !== null) {
|
||||
parent[prop].splice(index, 1);
|
||||
} else {
|
||||
delete parent[prop];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function visit(
|
||||
node,
|
||||
parent,
|
||||
enter,
|
||||
leave,
|
||||
prop,
|
||||
index
|
||||
) {
|
||||
if (node) {
|
||||
if (enter) {
|
||||
const _should_skip = should_skip;
|
||||
const _should_remove = should_remove;
|
||||
const _replacement = replacement;
|
||||
should_skip = false;
|
||||
should_remove = false;
|
||||
replacement = null;
|
||||
|
||||
enter.call(context, node, parent, prop, index);
|
||||
|
||||
if (replacement) {
|
||||
node = replacement;
|
||||
replace(parent, prop, index, node);
|
||||
}
|
||||
|
||||
if (should_remove) {
|
||||
remove(parent, prop, index);
|
||||
}
|
||||
|
||||
const skipped = should_skip;
|
||||
const removed = should_remove;
|
||||
|
||||
should_skip = _should_skip;
|
||||
should_remove = _should_remove;
|
||||
replacement = _replacement;
|
||||
|
||||
if (skipped) return node;
|
||||
if (removed) return null;
|
||||
}
|
||||
|
||||
for (const key in node) {
|
||||
const value = (node )[key];
|
||||
|
||||
if (typeof value !== 'object') {
|
||||
continue;
|
||||
}
|
||||
|
||||
else if (Array.isArray(value)) {
|
||||
for (let j = 0, k = 0; j < value.length; j += 1, k += 1) {
|
||||
if (value[j] !== null && typeof value[j].type === 'string') {
|
||||
if (!visit(value[j], node, enter, leave, key, k)) {
|
||||
// removed
|
||||
j--;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else if (value !== null && typeof value.type === 'string') {
|
||||
visit(value, node, enter, leave, key, null);
|
||||
}
|
||||
}
|
||||
|
||||
if (leave) {
|
||||
const _replacement = replacement;
|
||||
const _should_remove = should_remove;
|
||||
replacement = null;
|
||||
should_remove = false;
|
||||
|
||||
leave.call(context, node, parent, prop, index);
|
||||
|
||||
if (replacement) {
|
||||
node = replacement;
|
||||
replace(parent, prop, index, node);
|
||||
}
|
||||
|
||||
if (should_remove) {
|
||||
remove(parent, prop, index);
|
||||
}
|
||||
|
||||
const removed = should_remove;
|
||||
|
||||
replacement = _replacement;
|
||||
should_remove = _should_remove;
|
||||
|
||||
if (removed) return null;
|
||||
}
|
||||
}
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
export { walk };
|
||||
144
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/node_modules/estree-walker/src/index.ts
generated
vendored
Normal file
144
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/node_modules/estree-walker/src/index.ts
generated
vendored
Normal file
@@ -0,0 +1,144 @@
|
||||
import { BaseNode } from "estree";
|
||||
|
||||
type WalkerContext = {
|
||||
skip: () => void;
|
||||
remove: () => void;
|
||||
replace: (node: BaseNode) => void;
|
||||
};
|
||||
|
||||
type WalkerHandler = (
|
||||
this: WalkerContext,
|
||||
node: BaseNode,
|
||||
parent: BaseNode,
|
||||
key: string,
|
||||
index: number
|
||||
) => void
|
||||
|
||||
type Walker = {
|
||||
enter?: WalkerHandler;
|
||||
leave?: WalkerHandler;
|
||||
}
|
||||
|
||||
export function walk(ast: BaseNode, { enter, leave }: Walker) {
|
||||
return visit(ast, null, enter, leave);
|
||||
}
|
||||
|
||||
let should_skip = false;
|
||||
let should_remove = false;
|
||||
let replacement: BaseNode = null;
|
||||
const context: WalkerContext = {
|
||||
skip: () => should_skip = true,
|
||||
remove: () => should_remove = true,
|
||||
replace: (node: BaseNode) => replacement = node
|
||||
};
|
||||
|
||||
function replace(parent: any, prop: string, index: number, node: BaseNode) {
|
||||
if (parent) {
|
||||
if (index !== null) {
|
||||
parent[prop][index] = node;
|
||||
} else {
|
||||
parent[prop] = node;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function remove(parent: any, prop: string, index: number) {
|
||||
if (parent) {
|
||||
if (index !== null) {
|
||||
parent[prop].splice(index, 1);
|
||||
} else {
|
||||
delete parent[prop];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function visit(
|
||||
node: BaseNode,
|
||||
parent: BaseNode,
|
||||
enter: WalkerHandler,
|
||||
leave: WalkerHandler,
|
||||
prop?: string,
|
||||
index?: number
|
||||
) {
|
||||
if (node) {
|
||||
if (enter) {
|
||||
const _should_skip = should_skip;
|
||||
const _should_remove = should_remove;
|
||||
const _replacement = replacement;
|
||||
should_skip = false;
|
||||
should_remove = false;
|
||||
replacement = null;
|
||||
|
||||
enter.call(context, node, parent, prop, index);
|
||||
|
||||
if (replacement) {
|
||||
node = replacement;
|
||||
replace(parent, prop, index, node);
|
||||
}
|
||||
|
||||
if (should_remove) {
|
||||
remove(parent, prop, index);
|
||||
}
|
||||
|
||||
const skipped = should_skip;
|
||||
const removed = should_remove;
|
||||
|
||||
should_skip = _should_skip;
|
||||
should_remove = _should_remove;
|
||||
replacement = _replacement;
|
||||
|
||||
if (skipped) return node;
|
||||
if (removed) return null;
|
||||
}
|
||||
|
||||
for (const key in node) {
|
||||
const value = (node as any)[key];
|
||||
|
||||
if (typeof value !== 'object') {
|
||||
continue;
|
||||
}
|
||||
|
||||
else if (Array.isArray(value)) {
|
||||
for (let j = 0, k = 0; j < value.length; j += 1, k += 1) {
|
||||
if (value[j] !== null && typeof value[j].type === 'string') {
|
||||
if (!visit(value[j], node, enter, leave, key, k)) {
|
||||
// removed
|
||||
j--;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else if (value !== null && typeof value.type === 'string') {
|
||||
visit(value, node, enter, leave, key, null);
|
||||
}
|
||||
}
|
||||
|
||||
if (leave) {
|
||||
const _replacement = replacement;
|
||||
const _should_remove = should_remove;
|
||||
replacement = null;
|
||||
should_remove = false;
|
||||
|
||||
leave.call(context, node, parent, prop, index);
|
||||
|
||||
if (replacement) {
|
||||
node = replacement;
|
||||
replace(parent, prop, index, node);
|
||||
}
|
||||
|
||||
if (should_remove) {
|
||||
remove(parent, prop, index);
|
||||
}
|
||||
|
||||
const removed = should_remove;
|
||||
|
||||
replacement = _replacement;
|
||||
should_remove = _should_remove;
|
||||
|
||||
if (removed) return null;
|
||||
}
|
||||
}
|
||||
|
||||
return node;
|
||||
}
|
||||
13
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/node_modules/estree-walker/types/index.d.ts
generated
vendored
Normal file
13
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/node_modules/estree-walker/types/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
import { BaseNode } from "estree";
|
||||
declare type WalkerContext = {
|
||||
skip: () => void;
|
||||
remove: () => void;
|
||||
replace: (node: BaseNode) => void;
|
||||
};
|
||||
declare type WalkerHandler = (this: WalkerContext, node: BaseNode, parent: BaseNode, key: string, index: number) => void;
|
||||
declare type Walker = {
|
||||
enter?: WalkerHandler;
|
||||
leave?: WalkerHandler;
|
||||
};
|
||||
export declare function walk(ast: BaseNode, { enter, leave }: Walker): BaseNode;
|
||||
export {};
|
||||
127
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/package.json
generated
vendored
Normal file
127
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/package.json
generated
vendored
Normal file
@@ -0,0 +1,127 @@
|
||||
{
|
||||
"_args": [
|
||||
[
|
||||
"@rollup/pluginutils@3.1.0",
|
||||
"J:\\Github\\CURD-TS"
|
||||
]
|
||||
],
|
||||
"_development": true,
|
||||
"_from": "@rollup/pluginutils@3.1.0",
|
||||
"_id": "@rollup/pluginutils@3.1.0",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha1-cGtFJO5tyLEDs8mVUz5a1oDAK5s=",
|
||||
"_location": "/rollup-plugin-dynamic-import-variables/@rollup/pluginutils",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "version",
|
||||
"registry": true,
|
||||
"raw": "@rollup/pluginutils@3.1.0",
|
||||
"name": "@rollup/pluginutils",
|
||||
"escapedName": "@rollup%2fpluginutils",
|
||||
"scope": "@rollup",
|
||||
"rawSpec": "3.1.0",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "3.1.0"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/rollup-plugin-dynamic-import-variables"
|
||||
],
|
||||
"_resolved": "http://192.168.250.101:4873/@rollup%2fpluginutils/-/pluginutils-3.1.0.tgz",
|
||||
"_spec": "3.1.0",
|
||||
"_where": "J:\\Github\\CURD-TS",
|
||||
"author": {
|
||||
"name": "Rich Harris",
|
||||
"email": "richard.a.harris@gmail.com"
|
||||
},
|
||||
"ava": {
|
||||
"compileEnhancements": false,
|
||||
"extensions": [
|
||||
"ts"
|
||||
],
|
||||
"require": [
|
||||
"ts-node/register"
|
||||
],
|
||||
"files": [
|
||||
"!**/fixtures/**",
|
||||
"!**/helpers/**",
|
||||
"!**/recipes/**",
|
||||
"!**/types.ts"
|
||||
]
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/rollup/plugins/issues"
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/estree": "0.0.39",
|
||||
"estree-walker": "^1.0.1",
|
||||
"picomatch": "^2.2.2"
|
||||
},
|
||||
"description": "A set of utility functions commonly used by Rollup plugins",
|
||||
"devDependencies": {
|
||||
"@rollup/plugin-commonjs": "^11.0.2",
|
||||
"@rollup/plugin-node-resolve": "^7.1.1",
|
||||
"@rollup/plugin-typescript": "^3.0.0",
|
||||
"@types/jest": "^24.9.0",
|
||||
"@types/node": "^12.12.25",
|
||||
"@types/picomatch": "^2.2.1",
|
||||
"typescript": "^3.7.5"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 8.0.0"
|
||||
},
|
||||
"exports": {
|
||||
"require": "./dist/cjs/index.js",
|
||||
"import": "./dist/es/index.js"
|
||||
},
|
||||
"files": [
|
||||
"dist",
|
||||
"types",
|
||||
"README.md",
|
||||
"LICENSE"
|
||||
],
|
||||
"homepage": "https://github.com/rollup/plugins/tree/master/packages/pluginutils#readme",
|
||||
"keywords": [
|
||||
"rollup",
|
||||
"plugin",
|
||||
"utils"
|
||||
],
|
||||
"license": "MIT",
|
||||
"main": "./dist/cjs/index.js",
|
||||
"module": "./dist/es/index.js",
|
||||
"name": "@rollup/pluginutils",
|
||||
"nyc": {
|
||||
"extension": [
|
||||
".js",
|
||||
".ts"
|
||||
]
|
||||
},
|
||||
"peerDependencies": {
|
||||
"rollup": "^1.20.0||^2.0.0"
|
||||
},
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/rollup/plugins.git"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "rollup -c",
|
||||
"ci:coverage": "nyc pnpm run test && nyc report --reporter=text-lcov > coverage.lcov",
|
||||
"ci:lint": "pnpm run build && pnpm run lint",
|
||||
"ci:lint:commits": "commitlint --from=${CIRCLE_BRANCH} --to=${CIRCLE_SHA1}",
|
||||
"ci:test": "pnpm run test -- --verbose",
|
||||
"lint": "pnpm run lint:js && pnpm run lint:docs && pnpm run lint:package",
|
||||
"lint:docs": "prettier --single-quote --write README.md",
|
||||
"lint:js": "eslint --fix --cache src test types --ext .js,.ts",
|
||||
"lint:package": "prettier --write package.json --plugin=prettier-plugin-package",
|
||||
"prebuild": "del-cli dist",
|
||||
"prepare": "pnpm run build",
|
||||
"prepublishOnly": "pnpm run lint && pnpm run build",
|
||||
"pretest": "pnpm run build -- --sourcemap",
|
||||
"test": "ava"
|
||||
},
|
||||
"type": "commonjs",
|
||||
"types": "types/index.d.ts",
|
||||
"version": "3.1.0"
|
||||
}
|
||||
86
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/types/index.d.ts
generated
vendored
Normal file
86
node_modules/rollup-plugin-dynamic-import-variables/node_modules/@rollup/pluginutils/types/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,86 @@
|
||||
// eslint-disable-next-line import/no-unresolved
|
||||
import { BaseNode } from 'estree';
|
||||
|
||||
export interface AttachedScope {
|
||||
parent?: AttachedScope;
|
||||
isBlockScope: boolean;
|
||||
declarations: { [key: string]: boolean };
|
||||
addDeclaration(node: BaseNode, isBlockDeclaration: boolean, isVar: boolean): void;
|
||||
contains(name: string): boolean;
|
||||
}
|
||||
|
||||
export interface DataToEsmOptions {
|
||||
compact?: boolean;
|
||||
indent?: string;
|
||||
namedExports?: boolean;
|
||||
objectShorthand?: boolean;
|
||||
preferConst?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* A valid `minimatch` pattern, or array of patterns.
|
||||
*/
|
||||
export type FilterPattern = ReadonlyArray<string | RegExp> | string | RegExp | null;
|
||||
|
||||
/**
|
||||
* Adds an extension to a module ID if one does not exist.
|
||||
*/
|
||||
export function addExtension(filename: string, ext?: string): string;
|
||||
|
||||
/**
|
||||
* Attaches `Scope` objects to the relevant nodes of an AST.
|
||||
* Each `Scope` object has a `scope.contains(name)` method that returns `true`
|
||||
* if a given name is defined in the current scope or a parent scope.
|
||||
*/
|
||||
export function attachScopes(ast: BaseNode, propertyName?: string): AttachedScope;
|
||||
|
||||
/**
|
||||
* Constructs a filter function which can be used to determine whether or not
|
||||
* certain modules should be operated upon.
|
||||
* @param include If `include` is omitted or has zero length, filter will return `true` by default.
|
||||
* @param exclude ID must not match any of the `exclude` patterns.
|
||||
* @param options Optionally resolves the patterns against a directory other than `process.cwd()`.
|
||||
* If a `string` is specified, then the value will be used as the base directory.
|
||||
* Relative paths will be resolved against `process.cwd()` first.
|
||||
* If `false`, then the patterns will not be resolved against any directory.
|
||||
* This can be useful if you want to create a filter for virtual module names.
|
||||
*/
|
||||
export function createFilter(
|
||||
include?: FilterPattern,
|
||||
exclude?: FilterPattern,
|
||||
options?: { resolve?: string | false | null }
|
||||
): (id: string | unknown) => boolean;
|
||||
|
||||
/**
|
||||
* Transforms objects into tree-shakable ES Module imports.
|
||||
* @param data An object to transform into an ES module.
|
||||
*/
|
||||
export function dataToEsm(data: unknown, options?: DataToEsmOptions): string;
|
||||
|
||||
/**
|
||||
* Extracts the names of all assignment targets based upon specified patterns.
|
||||
* @param param An `acorn` AST Node.
|
||||
*/
|
||||
export function extractAssignedNames(param: BaseNode): string[];
|
||||
|
||||
/**
|
||||
* Constructs a bundle-safe identifier from a `string`.
|
||||
*/
|
||||
export function makeLegalIdentifier(str: string): string;
|
||||
|
||||
export type AddExtension = typeof addExtension;
|
||||
export type AttachScopes = typeof attachScopes;
|
||||
export type CreateFilter = typeof createFilter;
|
||||
export type ExtractAssignedNames = typeof extractAssignedNames;
|
||||
export type MakeLegalIdentifier = typeof makeLegalIdentifier;
|
||||
export type DataToEsm = typeof dataToEsm;
|
||||
|
||||
declare const defaultExport: {
|
||||
addExtension: AddExtension;
|
||||
attachScopes: AttachScopes;
|
||||
createFilter: CreateFilter;
|
||||
dataToEsm: DataToEsm;
|
||||
extractAssignedNames: ExtractAssignedNames;
|
||||
makeLegalIdentifier: MakeLegalIdentifier;
|
||||
};
|
||||
export default defaultExport;
|
||||
74
node_modules/rollup-plugin-dynamic-import-variables/package.json
generated
vendored
Normal file
74
node_modules/rollup-plugin-dynamic-import-variables/package.json
generated
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
{
|
||||
"_args": [
|
||||
[
|
||||
"rollup-plugin-dynamic-import-variables@1.1.0",
|
||||
"J:\\Github\\CURD-TS"
|
||||
]
|
||||
],
|
||||
"_development": true,
|
||||
"_from": "rollup-plugin-dynamic-import-variables@1.1.0",
|
||||
"_id": "rollup-plugin-dynamic-import-variables@1.1.0",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha1-SYHTiQekcbNSNDmKCQR770eiAGo=",
|
||||
"_location": "/rollup-plugin-dynamic-import-variables",
|
||||
"_phantomChildren": {
|
||||
"@types/estree": "0.0.39",
|
||||
"picomatch": "2.2.2"
|
||||
},
|
||||
"_requested": {
|
||||
"type": "version",
|
||||
"registry": true,
|
||||
"raw": "rollup-plugin-dynamic-import-variables@1.1.0",
|
||||
"name": "rollup-plugin-dynamic-import-variables",
|
||||
"escapedName": "rollup-plugin-dynamic-import-variables",
|
||||
"rawSpec": "1.1.0",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "1.1.0"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/vite"
|
||||
],
|
||||
"_resolved": "http://192.168.250.101:4873/rollup-plugin-dynamic-import-variables/-/rollup-plugin-dynamic-import-variables-1.1.0.tgz",
|
||||
"_spec": "1.1.0",
|
||||
"_where": "J:\\Github\\CURD-TS",
|
||||
"author": "",
|
||||
"ava": {
|
||||
"files": [
|
||||
"!**/fixtures/**",
|
||||
"!**/helpers/**"
|
||||
]
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/LarsDenBakker/rollup-plugin-dynamic-import-variables/issues"
|
||||
},
|
||||
"dependencies": {
|
||||
"@rollup/pluginutils": "^3.0.9",
|
||||
"estree-walker": "^2.0.1",
|
||||
"globby": "^11.0.0",
|
||||
"magic-string": "^0.25.7"
|
||||
},
|
||||
"description": "Rollup plugin for resolving dynamic imports containing variables.",
|
||||
"devDependencies": {
|
||||
"acorn": "^7.1.1",
|
||||
"acorn-dynamic-import": "^4.0.0",
|
||||
"ava": "^2.4.0",
|
||||
"prettier": "^2.0.5",
|
||||
"rollup": "^2.7.5"
|
||||
},
|
||||
"homepage": "https://github.com/LarsDenBakker/rollup-plugin-dynamic-import-variables#readme",
|
||||
"license": "MIT",
|
||||
"main": "index.js",
|
||||
"name": "rollup-plugin-dynamic-import-variables",
|
||||
"prettier": {
|
||||
"singleQuote": true
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/LarsDenBakker/rollup-plugin-dynamic-import-variables.git"
|
||||
},
|
||||
"scripts": {
|
||||
"format": "prettier \"src/**/*.{js,jsx,css,md}\" \"package.json\" --write && npm run format:index",
|
||||
"test": "ava"
|
||||
},
|
||||
"version": "1.1.0"
|
||||
}
|
||||
109
node_modules/rollup-plugin-dynamic-import-variables/src/dynamic-import-to-glob.js
generated
vendored
Normal file
109
node_modules/rollup-plugin-dynamic-import-variables/src/dynamic-import-to-glob.js
generated
vendored
Normal file
@@ -0,0 +1,109 @@
|
||||
const path = require('path');
|
||||
|
||||
class VariableDynamicImportError extends Error {}
|
||||
|
||||
const example = 'For example: import(`./foo/${bar}.js`).';
|
||||
|
||||
function sanitizeString(str) {
|
||||
if (str.includes('*')) {
|
||||
throw new VariableDynamicImportError(
|
||||
'A dynamic import cannot contain * characters.'
|
||||
);
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
function templateLiteralToGlob(node) {
|
||||
let glob = '';
|
||||
|
||||
for (let i = 0; i < node.quasis.length; i += 1) {
|
||||
glob += sanitizeString(node.quasis[i].value.raw);
|
||||
if (node.expressions[i]) {
|
||||
glob += expressionToGlob(node.expressions[i]);
|
||||
}
|
||||
}
|
||||
|
||||
return glob;
|
||||
}
|
||||
|
||||
function callExpressionToGlob(node) {
|
||||
const callee = node.callee;
|
||||
if (callee.type === 'MemberExpression' && callee.property.type === 'Identifier' && callee.property.name === 'concat') {
|
||||
return `${expressionToGlob(callee.object)}${node.arguments.map(expressionToGlob).join('')}`;
|
||||
}
|
||||
return '*';
|
||||
}
|
||||
|
||||
function binaryExpressionToGlob(node) {
|
||||
if (node.operator !== '+') {
|
||||
throw new VariableDynamicImportError(
|
||||
`${node.operator} operator is not supported.`
|
||||
);
|
||||
}
|
||||
|
||||
return `${expressionToGlob(node.left)}${expressionToGlob(node.right)}`;
|
||||
}
|
||||
|
||||
function expressionToGlob(node) {
|
||||
switch (node.type) {
|
||||
case 'TemplateLiteral':
|
||||
return templateLiteralToGlob(node);
|
||||
case 'CallExpression':
|
||||
return callExpressionToGlob(node);
|
||||
case 'BinaryExpression':
|
||||
return binaryExpressionToGlob(node);
|
||||
case 'Literal': {
|
||||
return sanitizeString(node.value);
|
||||
}
|
||||
default:
|
||||
return '*';
|
||||
}
|
||||
}
|
||||
|
||||
function dynamicImportToGlob(node, sourceString) {
|
||||
let glob = expressionToGlob(node);
|
||||
if (!glob.includes('*')) {
|
||||
return null;
|
||||
}
|
||||
glob = glob.replace(/\*\*/g, '*');
|
||||
|
||||
if (glob.startsWith('*')) {
|
||||
throw new VariableDynamicImportError(
|
||||
`invalid import "${sourceString}". It cannot be statically analyzed. Variable dynamic imports must start with ./ and be limited to a specific directory. ` +
|
||||
example
|
||||
);
|
||||
}
|
||||
|
||||
if (glob.startsWith('/')) {
|
||||
throw new VariableDynamicImportError(
|
||||
`invalid import "${sourceString}". Variable absolute imports are not supported, imports must start with ./ in the static part of the import. ` +
|
||||
example
|
||||
);
|
||||
}
|
||||
|
||||
if (!glob.startsWith('./') && !glob.startsWith('../')) {
|
||||
throw new VariableDynamicImportError(
|
||||
`invalid import "${sourceString}". Variable bare imports are not supported, imports must start with ./ in the static part of the import. ` +
|
||||
example
|
||||
);
|
||||
}
|
||||
|
||||
if (glob.startsWith('./*.')) {
|
||||
throw new VariableDynamicImportError(
|
||||
`invalid import "${sourceString}". Variable imports cannot import their own directory, ` +
|
||||
'place imports in a separate directory or make the import filename more specific. ' +
|
||||
example
|
||||
);
|
||||
}
|
||||
|
||||
if (path.extname(glob) === '') {
|
||||
throw new VariableDynamicImportError(
|
||||
`invalid import "${sourceString}". A file extension must be included in the static part of the import. ` +
|
||||
example
|
||||
);
|
||||
}
|
||||
|
||||
return glob;
|
||||
}
|
||||
|
||||
module.exports = { dynamicImportToGlob, VariableDynamicImportError };
|
||||
3
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/fixture-call-expression.js
generated
vendored
Normal file
3
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/fixture-call-expression.js
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
export function importModule(dirName, name) {
|
||||
return import(`./module-dir-a/${name.substring(0, 2)}.js`);
|
||||
}
|
||||
3
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/fixture-complex-concat.js
generated
vendored
Normal file
3
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/fixture-complex-concat.js
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
export function importModule(dirName, name) {
|
||||
return import(`./${`module-dir-${dirName}`}` + '/' + name + '.js');
|
||||
}
|
||||
3
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/fixture-excluded.js
generated
vendored
Normal file
3
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/fixture-excluded.js
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
export function importModule(name) {
|
||||
return import(`./module-dir-a/${name}.js`);
|
||||
}
|
||||
3
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/fixture-extensionless.js
generated
vendored
Normal file
3
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/fixture-extensionless.js
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
export function importModule(name) {
|
||||
return import(`./module-dir-a/${name}`);
|
||||
}
|
||||
3
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/fixture-multiple-dirs.js
generated
vendored
Normal file
3
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/fixture-multiple-dirs.js
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
export function importModule(dir, name) {
|
||||
return import(`./${dir}/${name}.js`);
|
||||
}
|
||||
13
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/fixture-multiple-imports.js
generated
vendored
Normal file
13
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/fixture-multiple-imports.js
generated
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
export class Foo {
|
||||
importModule(name) {
|
||||
return import(`./module-dir-a/${name}.js`);
|
||||
}
|
||||
}
|
||||
|
||||
import(`./module-dir-a/${name}.js`).then((module) => {
|
||||
console.log('imported', module);
|
||||
});
|
||||
|
||||
export function importModuleFromDir(dir, name) {
|
||||
return import(`./${dir}/${name}.js`);
|
||||
}
|
||||
3
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/fixture-own-dir.js
generated
vendored
Normal file
3
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/fixture-own-dir.js
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
export function importModule(name) {
|
||||
return import(`./root-module-${name}.js`);
|
||||
}
|
||||
3
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/fixture-single-dir.js
generated
vendored
Normal file
3
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/fixture-single-dir.js
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
export function importModule(name) {
|
||||
return import(`./module-dir-a/${name}.js`);
|
||||
}
|
||||
9
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/fixture-unchanged.js
generated
vendored
Normal file
9
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/fixture-unchanged.js
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
import './module-dir-a/module-a-1.js';
|
||||
|
||||
export function importModuleA() {
|
||||
return import(`./module-dir-a/module-a-2.js`);
|
||||
}
|
||||
|
||||
export function importModuleB() {
|
||||
return import('./' + 'module-dir-a' + '/' + 'module-a-2' + '.js');
|
||||
}
|
||||
1
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/module-dir-a/README.md
generated
vendored
Normal file
1
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/module-dir-a/README.md
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
<!-- should not be resolved -->
|
||||
1
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/module-dir-a/foo.css
generated
vendored
Normal file
1
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/module-dir-a/foo.css
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
/* should not be resolved */
|
||||
1
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/module-dir-a/module-a-1.js
generated
vendored
Normal file
1
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/module-dir-a/module-a-1.js
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
console.log("a-1");
|
||||
1
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/module-dir-a/module-a-2.js
generated
vendored
Normal file
1
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/module-dir-a/module-a-2.js
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
console.log("a-2");
|
||||
1
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/module-dir-a/module-a-3.mjs
generated
vendored
Normal file
1
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/module-dir-a/module-a-3.mjs
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
console.log("a-2");
|
||||
1
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/module-dir-a/module-a-4.cjs
generated
vendored
Normal file
1
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/module-dir-a/module-a-4.cjs
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
console.log("a-2");
|
||||
1
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/module-dir-a/module-a-5.json
generated
vendored
Normal file
1
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/module-dir-a/module-a-5.json
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{}
|
||||
1
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/module-dir-b/module-b-1.js
generated
vendored
Normal file
1
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/module-dir-b/module-b-1.js
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
console.log("b-1");
|
||||
1
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/module-dir-b/module-b-2.js
generated
vendored
Normal file
1
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/module-dir-b/module-b-2.js
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
console.log("b-2");
|
||||
1
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/root-module-a.js
generated
vendored
Normal file
1
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/root-module-a.js
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
console.log("root-module-a.js");
|
||||
1
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/root-module-b.js
generated
vendored
Normal file
1
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/root-module-b.js
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
console.log("root-module-b.js");
|
||||
3
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/sub-dir/fixture-upwards-path.js
generated
vendored
Normal file
3
node_modules/rollup-plugin-dynamic-import-variables/test/fixtures/sub-dir/fixture-upwards-path.js
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
export function importModule(name) {
|
||||
return import(`../module-dir-a/${name}.js`);
|
||||
}
|
||||
204
node_modules/rollup-plugin-dynamic-import-variables/test/rollup-plugin-dynamic-import-variables.js
generated
vendored
Normal file
204
node_modules/rollup-plugin-dynamic-import-variables/test/rollup-plugin-dynamic-import-variables.js
generated
vendored
Normal file
@@ -0,0 +1,204 @@
|
||||
import { join } from 'path';
|
||||
|
||||
import test from 'ava';
|
||||
import { rollup } from 'rollup';
|
||||
|
||||
import dynamicImportVars from '..';
|
||||
|
||||
process.chdir(join(__dirname, 'fixtures'));
|
||||
|
||||
test('single dir', async (t) => {
|
||||
const bundle = await rollup({
|
||||
input: 'fixture-single-dir.js',
|
||||
plugins: [dynamicImportVars()],
|
||||
});
|
||||
const { output } = await bundle.generate({ format: 'es' });
|
||||
const expectedFiles = [
|
||||
require.resolve('./fixtures/fixture-single-dir.js'),
|
||||
require.resolve('./fixtures/module-dir-a/module-a-1.js'),
|
||||
require.resolve('./fixtures/module-dir-a/module-a-2.js'),
|
||||
];
|
||||
|
||||
t.deepEqual(
|
||||
expectedFiles,
|
||||
output.map((o) => o.facadeModuleId)
|
||||
);
|
||||
t.snapshot(output[0].code);
|
||||
});
|
||||
|
||||
test('multiple dirs', async (t) => {
|
||||
const bundle = await rollup({
|
||||
input: 'fixture-multiple-dirs.js',
|
||||
plugins: [dynamicImportVars()],
|
||||
});
|
||||
const { output } = await bundle.generate({ format: 'es' });
|
||||
const expectedFiles = [
|
||||
require.resolve('./fixtures/fixture-multiple-dirs.js'),
|
||||
require.resolve('./fixtures/module-dir-a/module-a-1.js'),
|
||||
require.resolve('./fixtures/module-dir-a/module-a-2.js'),
|
||||
require.resolve('./fixtures/module-dir-b/module-b-1.js'),
|
||||
require.resolve('./fixtures/module-dir-b/module-b-2.js'),
|
||||
require.resolve('./fixtures/sub-dir/fixture-upwards-path.js'),
|
||||
];
|
||||
|
||||
t.deepEqual(
|
||||
expectedFiles,
|
||||
output.map((o) => o.facadeModuleId)
|
||||
);
|
||||
t.snapshot(output[0].code);
|
||||
});
|
||||
|
||||
test('upwards dir path', async (t) => {
|
||||
const bundle = await rollup({
|
||||
input: 'sub-dir/fixture-upwards-path',
|
||||
plugins: [dynamicImportVars()],
|
||||
});
|
||||
const { output } = await bundle.generate({ format: 'es' });
|
||||
const expectedFiles = [
|
||||
require.resolve('./fixtures/sub-dir/fixture-upwards-path.js'),
|
||||
require.resolve('./fixtures/module-dir-a/module-a-1.js'),
|
||||
require.resolve('./fixtures/module-dir-a/module-a-2.js'),
|
||||
];
|
||||
|
||||
t.deepEqual(
|
||||
expectedFiles,
|
||||
output.map((o) => o.facadeModuleId)
|
||||
);
|
||||
t.snapshot(output[0].code);
|
||||
});
|
||||
|
||||
test('complex concatenation', async (t) => {
|
||||
const bundle = await rollup({
|
||||
input: 'fixture-complex-concat.js',
|
||||
plugins: [dynamicImportVars()],
|
||||
});
|
||||
const { output } = await bundle.generate({ format: 'es' });
|
||||
const expectedFiles = [
|
||||
require.resolve('./fixtures/fixture-complex-concat.js'),
|
||||
require.resolve('./fixtures/module-dir-a/module-a-1.js'),
|
||||
require.resolve('./fixtures/module-dir-a/module-a-2.js'),
|
||||
require.resolve('./fixtures/module-dir-b/module-b-1.js'),
|
||||
require.resolve('./fixtures/module-dir-b/module-b-2.js'),
|
||||
];
|
||||
|
||||
t.deepEqual(
|
||||
expectedFiles,
|
||||
output.map((o) => o.facadeModuleId)
|
||||
);
|
||||
t.snapshot(output[0].code);
|
||||
});
|
||||
|
||||
test('CallExpression', async (t) => {
|
||||
const bundle = await rollup({
|
||||
input: 'fixture-call-expression.js',
|
||||
plugins: [dynamicImportVars()],
|
||||
});
|
||||
const { output } = await bundle.generate({ format: 'es' });
|
||||
const expectedFiles = [
|
||||
require.resolve('./fixtures/fixture-call-expression.js'),
|
||||
require.resolve('./fixtures/module-dir-a/module-a-1.js'),
|
||||
require.resolve('./fixtures/module-dir-a/module-a-2.js'),
|
||||
];
|
||||
|
||||
t.deepEqual(
|
||||
expectedFiles,
|
||||
output.map((o) => o.facadeModuleId)
|
||||
);
|
||||
t.snapshot(output[0].code);
|
||||
});
|
||||
|
||||
test('own directory', async (t) => {
|
||||
const bundle = await rollup({
|
||||
input: 'fixture-own-dir.js',
|
||||
plugins: [dynamicImportVars()],
|
||||
});
|
||||
const { output } = await bundle.generate({ format: 'es' });
|
||||
const expectedFiles = [
|
||||
require.resolve('./fixtures/fixture-own-dir.js'),
|
||||
require.resolve('./fixtures/root-module-a.js'),
|
||||
require.resolve('./fixtures/root-module-b.js'),
|
||||
];
|
||||
|
||||
t.deepEqual(
|
||||
expectedFiles,
|
||||
output.map((o) => o.facadeModuleId)
|
||||
);
|
||||
t.snapshot(output[0].code);
|
||||
});
|
||||
|
||||
test('multiple dynamic imports', async (t) => {
|
||||
const bundle = await rollup({
|
||||
input: 'fixture-multiple-imports.js',
|
||||
plugins: [dynamicImportVars()],
|
||||
});
|
||||
const { output } = await bundle.generate({ format: 'es' });
|
||||
const expectedFiles = [
|
||||
require.resolve('./fixtures/fixture-multiple-imports.js'),
|
||||
require.resolve('./fixtures/module-dir-a/module-a-1.js'),
|
||||
require.resolve('./fixtures/module-dir-a/module-a-2.js'),
|
||||
require.resolve('./fixtures/module-dir-b/module-b-1.js'),
|
||||
require.resolve('./fixtures/module-dir-b/module-b-2.js'),
|
||||
require.resolve('./fixtures/sub-dir/fixture-upwards-path.js'),
|
||||
];
|
||||
|
||||
t.deepEqual(
|
||||
expectedFiles,
|
||||
output.map((o) => o.facadeModuleId)
|
||||
);
|
||||
t.snapshot(output[0].code);
|
||||
});
|
||||
|
||||
test("doesn't change imports that should not be changed", async (t) => {
|
||||
const bundle = await rollup({
|
||||
input: 'fixture-unchanged.js',
|
||||
plugins: [dynamicImportVars()],
|
||||
});
|
||||
const { output } = await bundle.generate({ format: 'es' });
|
||||
const expectedFiles = [
|
||||
require.resolve('./fixtures/fixture-unchanged.js'),
|
||||
require.resolve('./fixtures/module-dir-a/module-a-2.js'),
|
||||
];
|
||||
|
||||
t.deepEqual(
|
||||
expectedFiles,
|
||||
output.map((o) => o.facadeModuleId)
|
||||
);
|
||||
t.snapshot(output[0].code);
|
||||
});
|
||||
|
||||
test('can exclude files', async (t) => {
|
||||
const bundle = await rollup({
|
||||
input: 'fixture-excluded.js',
|
||||
plugins: [
|
||||
dynamicImportVars({
|
||||
exclude: ['fixture-excluded.js'],
|
||||
}),
|
||||
],
|
||||
});
|
||||
const { output } = await bundle.generate({ format: 'es' });
|
||||
|
||||
const expectedFiles = [require.resolve('./fixtures/fixture-excluded.js')];
|
||||
|
||||
t.deepEqual(
|
||||
expectedFiles,
|
||||
output.map((o) => o.facadeModuleId)
|
||||
);
|
||||
t.snapshot(output[0].code);
|
||||
});
|
||||
|
||||
test('throws an error on failure', async (t) => {
|
||||
let thrown;
|
||||
try {
|
||||
const bundle = await rollup({
|
||||
input: 'fixture-extensionless.js',
|
||||
plugins: [
|
||||
dynamicImportVars({
|
||||
exclude: ['fixture-excluded.js'],
|
||||
}),
|
||||
],
|
||||
});
|
||||
} catch (_) {
|
||||
thrown = true;
|
||||
}
|
||||
t.is(thrown, true);
|
||||
});
|
||||
200
node_modules/rollup-plugin-dynamic-import-variables/test/snapshots/rollup-plugin-dynamic-import-variables.js.md
generated
vendored
Normal file
200
node_modules/rollup-plugin-dynamic-import-variables/test/snapshots/rollup-plugin-dynamic-import-variables.js.md
generated
vendored
Normal file
@@ -0,0 +1,200 @@
|
||||
# Snapshot report for `test/rollup-plugin-dynamic-import-variables.js`
|
||||
|
||||
The actual snapshot is saved in `rollup-plugin-dynamic-import-variables.js.snap`.
|
||||
|
||||
Generated by [AVA](https://ava.li).
|
||||
|
||||
## can exclude files
|
||||
|
||||
> Snapshot 1
|
||||
|
||||
`function importModule(name) {␊
|
||||
return import(`./module-dir-a/${name}.js`);␊
|
||||
}␊
|
||||
␊
|
||||
export { importModule };␊
|
||||
`
|
||||
|
||||
## complex concatenation
|
||||
|
||||
> Snapshot 1
|
||||
|
||||
`function __variableDynamicImportRuntime0__(path) {␊
|
||||
switch (path) {␊
|
||||
case './module-dir-a/module-a-1.js': return import('./module-a-1-80325d58.js');␊
|
||||
case './module-dir-a/module-a-2.js': return import('./module-a-2-173cc5f5.js');␊
|
||||
case './module-dir-b/module-b-1.js': return import('./module-b-1-72e7a68a.js');␊
|
||||
case './module-dir-b/module-b-2.js': return import('./module-b-2-4b67cae0.js');␊
|
||||
default: return Promise.reject(new Error("Unknown variable dynamic import: " + path));␊
|
||||
}␊
|
||||
}␊
|
||||
␊
|
||||
function importModule(dirName, name) {␊
|
||||
return __variableDynamicImportRuntime0__(`./${`module-dir-${dirName}`}` + '/' + name + '.js');␊
|
||||
}␊
|
||||
␊
|
||||
export { importModule };␊
|
||||
`
|
||||
|
||||
## doesn't change imports that should not be changed
|
||||
|
||||
> Snapshot 1
|
||||
|
||||
`console.log("a-1");␊
|
||||
␊
|
||||
function importModuleA() {␊
|
||||
return import('./module-a-2-173cc5f5.js');␊
|
||||
}␊
|
||||
␊
|
||||
function importModuleB() {␊
|
||||
return import('./' + 'module-dir-a' + '/' + 'module-a-2' + '.js');␊
|
||||
}␊
|
||||
␊
|
||||
export { importModuleA, importModuleB };␊
|
||||
`
|
||||
|
||||
## multiple dirs
|
||||
|
||||
> Snapshot 1
|
||||
|
||||
`function __variableDynamicImportRuntime0__(path) {␊
|
||||
switch (path) {␊
|
||||
case './module-dir-a/module-a-1.js': return import('./module-a-1-80325d58.js');␊
|
||||
case './module-dir-a/module-a-2.js': return import('./module-a-2-173cc5f5.js');␊
|
||||
case './module-dir-b/module-b-1.js': return import('./module-b-1-72e7a68a.js');␊
|
||||
case './module-dir-b/module-b-2.js': return import('./module-b-2-4b67cae0.js');␊
|
||||
case './sub-dir/fixture-upwards-path.js': return import('./fixture-upwards-path-89accf3a.js');␊
|
||||
default: return Promise.reject(new Error("Unknown variable dynamic import: " + path));␊
|
||||
}␊
|
||||
}␊
|
||||
␊
|
||||
function importModule(dir, name) {␊
|
||||
return __variableDynamicImportRuntime0__(`./${dir}/${name}.js`);␊
|
||||
}␊
|
||||
␊
|
||||
export { importModule };␊
|
||||
`
|
||||
|
||||
## multiple dynamic imports
|
||||
|
||||
> Snapshot 1
|
||||
|
||||
`function __variableDynamicImportRuntime2__(path) {␊
|
||||
switch (path) {␊
|
||||
case './module-dir-a/module-a-1.js': return import('./module-a-1-80325d58.js');␊
|
||||
case './module-dir-a/module-a-2.js': return import('./module-a-2-173cc5f5.js');␊
|
||||
case './module-dir-b/module-b-1.js': return import('./module-b-1-72e7a68a.js');␊
|
||||
case './module-dir-b/module-b-2.js': return import('./module-b-2-4b67cae0.js');␊
|
||||
case './sub-dir/fixture-upwards-path.js': return import('./fixture-upwards-path-89accf3a.js');␊
|
||||
default: return Promise.reject(new Error("Unknown variable dynamic import: " + path));␊
|
||||
}␊
|
||||
}␊
|
||||
␊
|
||||
function __variableDynamicImportRuntime1__(path) {␊
|
||||
switch (path) {␊
|
||||
case './module-dir-a/module-a-1.js': return import('./module-a-1-80325d58.js');␊
|
||||
case './module-dir-a/module-a-2.js': return import('./module-a-2-173cc5f5.js');␊
|
||||
default: return Promise.reject(new Error("Unknown variable dynamic import: " + path));␊
|
||||
}␊
|
||||
}␊
|
||||
␊
|
||||
function __variableDynamicImportRuntime0__(path) {␊
|
||||
switch (path) {␊
|
||||
case './module-dir-a/module-a-1.js': return import('./module-a-1-80325d58.js');␊
|
||||
case './module-dir-a/module-a-2.js': return import('./module-a-2-173cc5f5.js');␊
|
||||
default: return Promise.reject(new Error("Unknown variable dynamic import: " + path));␊
|
||||
}␊
|
||||
}␊
|
||||
␊
|
||||
class Foo {␊
|
||||
importModule(name) {␊
|
||||
return __variableDynamicImportRuntime0__(`./module-dir-a/${name}.js`);␊
|
||||
}␊
|
||||
}␊
|
||||
␊
|
||||
__variableDynamicImportRuntime1__(`./module-dir-a/${name}.js`).then((module) => {␊
|
||||
console.log('imported', module);␊
|
||||
});␊
|
||||
␊
|
||||
function importModuleFromDir(dir, name) {␊
|
||||
return __variableDynamicImportRuntime2__(`./${dir}/${name}.js`);␊
|
||||
}␊
|
||||
␊
|
||||
export { Foo, importModuleFromDir };␊
|
||||
`
|
||||
|
||||
## own directory
|
||||
|
||||
> Snapshot 1
|
||||
|
||||
`function __variableDynamicImportRuntime0__(path) {␊
|
||||
switch (path) {␊
|
||||
case './root-module-a.js': return import('./root-module-a-0cd41d7c.js');␊
|
||||
case './root-module-b.js': return import('./root-module-b-decca893.js');␊
|
||||
default: return Promise.reject(new Error("Unknown variable dynamic import: " + path));␊
|
||||
}␊
|
||||
}␊
|
||||
␊
|
||||
function importModule(name) {␊
|
||||
return __variableDynamicImportRuntime0__(`./root-module-${name}.js`);␊
|
||||
}␊
|
||||
␊
|
||||
export { importModule };␊
|
||||
`
|
||||
|
||||
## single dir
|
||||
|
||||
> Snapshot 1
|
||||
|
||||
`function __variableDynamicImportRuntime0__(path) {␊
|
||||
switch (path) {␊
|
||||
case './module-dir-a/module-a-1.js': return import('./module-a-1-80325d58.js');␊
|
||||
case './module-dir-a/module-a-2.js': return import('./module-a-2-173cc5f5.js');␊
|
||||
default: return Promise.reject(new Error("Unknown variable dynamic import: " + path));␊
|
||||
}␊
|
||||
}␊
|
||||
␊
|
||||
function importModule(name) {␊
|
||||
return __variableDynamicImportRuntime0__(`./module-dir-a/${name}.js`);␊
|
||||
}␊
|
||||
␊
|
||||
export { importModule };␊
|
||||
`
|
||||
|
||||
## upwards dir path
|
||||
|
||||
> Snapshot 1
|
||||
|
||||
`function __variableDynamicImportRuntime0__(path) {␊
|
||||
switch (path) {␊
|
||||
case '../module-dir-a/module-a-1.js': return import('./module-a-1-80325d58.js');␊
|
||||
case '../module-dir-a/module-a-2.js': return import('./module-a-2-173cc5f5.js');␊
|
||||
default: return Promise.reject(new Error("Unknown variable dynamic import: " + path));␊
|
||||
}␊
|
||||
}␊
|
||||
␊
|
||||
function importModule(name) {␊
|
||||
return __variableDynamicImportRuntime0__(`../module-dir-a/${name}.js`);␊
|
||||
}␊
|
||||
␊
|
||||
export { importModule };␊
|
||||
`
|
||||
|
||||
## CallExpression
|
||||
|
||||
> Snapshot 1
|
||||
|
||||
`function __variableDynamicImportRuntime0__(path) {␊
|
||||
switch (path) {␊
|
||||
case './module-dir-a/module-a-1.js': return import('./module-a-1-80325d58.js');␊
|
||||
case './module-dir-a/module-a-2.js': return import('./module-a-2-173cc5f5.js');␊
|
||||
default: return Promise.reject(new Error("Unknown variable dynamic import: " + path));␊
|
||||
}␊
|
||||
}␊
|
||||
␊
|
||||
function importModule(dirName, name) {␊
|
||||
return __variableDynamicImportRuntime0__(`./module-dir-a/${name.substring(0, 2)}.js`);␊
|
||||
}␊
|
||||
␊
|
||||
export { importModule };␊
|
||||
`
|
||||
BIN
node_modules/rollup-plugin-dynamic-import-variables/test/snapshots/rollup-plugin-dynamic-import-variables.js.snap
generated
vendored
Normal file
BIN
node_modules/rollup-plugin-dynamic-import-variables/test/snapshots/rollup-plugin-dynamic-import-variables.js.snap
generated
vendored
Normal file
Binary file not shown.
237
node_modules/rollup-plugin-dynamic-import-variables/test/src/dynamic-import-to-glob.test.js
generated
vendored
Normal file
237
node_modules/rollup-plugin-dynamic-import-variables/test/src/dynamic-import-to-glob.test.js
generated
vendored
Normal file
@@ -0,0 +1,237 @@
|
||||
import { Parser } from 'acorn';
|
||||
import dynamicImport from 'acorn-dynamic-import';
|
||||
import test from 'ava';
|
||||
import {
|
||||
dynamicImportToGlob,
|
||||
VariableDynamicImportError,
|
||||
} from '../../src/dynamic-import-to-glob';
|
||||
|
||||
const CustomParser = Parser.extend(dynamicImport);
|
||||
|
||||
test('template literal with variable filename', (t) => {
|
||||
const ast = CustomParser.parse('import(`./foo/${bar}.js`);', {
|
||||
sourceType: 'module',
|
||||
});
|
||||
|
||||
const glob = dynamicImportToGlob(ast.body[0].expression.arguments[0]);
|
||||
t.is(glob, './foo/*.js');
|
||||
});
|
||||
|
||||
test('template literal with variable directory', (t) => {
|
||||
const ast = CustomParser.parse('import(`./foo/${bar}/x.js`);', {
|
||||
sourceType: 'module',
|
||||
});
|
||||
|
||||
const glob = dynamicImportToGlob(ast.body[0].expression.arguments[0]);
|
||||
t.is(glob, './foo/*/x.js');
|
||||
});
|
||||
|
||||
test('template literal with multiple variables', (t) => {
|
||||
const ast = CustomParser.parse('import(`./${foo}/${bar}.js`);', {
|
||||
sourceType: 'module',
|
||||
});
|
||||
|
||||
const glob = dynamicImportToGlob(ast.body[0].expression.arguments[0]);
|
||||
t.is(glob, './*/*.js');
|
||||
});
|
||||
|
||||
test('dynamic expression with variable filename', (t) => {
|
||||
const ast = CustomParser.parse('import("./foo/".concat(bar,".js"));', {
|
||||
sourceType: 'module',
|
||||
});
|
||||
|
||||
const glob = dynamicImportToGlob(ast.body[0].expression.arguments[0]);
|
||||
t.is(glob, './foo/*.js');
|
||||
});
|
||||
|
||||
test('dynamic expression with variable directory', (t) => {
|
||||
const ast = CustomParser.parse('import("./foo/".concat(bar, "/x.js"));', {
|
||||
sourceType: 'module',
|
||||
});
|
||||
|
||||
const glob = dynamicImportToGlob(ast.body[0].expression.arguments[0]);
|
||||
t.is(glob, './foo/*/x.js');
|
||||
});
|
||||
|
||||
test('dynamic expression with multiple variables', (t) => {
|
||||
const ast = CustomParser.parse('import("./".concat(foo, "/").concat(bar,".js"));', {
|
||||
sourceType: 'module',
|
||||
});
|
||||
|
||||
const glob = dynamicImportToGlob(ast.body[0].expression.arguments[0]);
|
||||
t.is(glob, './*/*.js');
|
||||
});
|
||||
|
||||
test('string concatenation', (t) => {
|
||||
const ast = CustomParser.parse('import("./foo/" + bar + ".js");', {
|
||||
sourceType: 'module',
|
||||
});
|
||||
|
||||
const glob = dynamicImportToGlob(ast.body[0].expression.arguments[0]);
|
||||
t.is(glob, './foo/*.js');
|
||||
});
|
||||
|
||||
test('string concatenation and template literals combined', (t) => {
|
||||
const ast = CustomParser.parse('import("./" + `foo/${bar}` + ".js");', {
|
||||
sourceType: 'module',
|
||||
});
|
||||
|
||||
const glob = dynamicImportToGlob(ast.body[0].expression.arguments[0]);
|
||||
t.is(glob, './foo/*.js');
|
||||
});
|
||||
|
||||
test('string literal in a template literal expression', (t) => {
|
||||
const ast = CustomParser.parse('import(`${"./foo/"}${bar}.js`);', {
|
||||
sourceType: 'module',
|
||||
});
|
||||
|
||||
const glob = dynamicImportToGlob(ast.body[0].expression.arguments[0]);
|
||||
t.is(glob, './foo/*.js');
|
||||
});
|
||||
|
||||
test('multiple variables are collapsed into a single *', (t) => {
|
||||
const ast = CustomParser.parse('import(`./foo/${bar}${baz}/${x}${y}.js`);', {
|
||||
sourceType: 'module',
|
||||
});
|
||||
|
||||
const glob = dynamicImportToGlob(ast.body[0].expression.arguments[0]);
|
||||
t.is(glob, './foo/*/*.js');
|
||||
});
|
||||
|
||||
test('throws when dynamic import contains a *', (t) => {
|
||||
const ast = CustomParser.parse('import(`./*${foo}.js`);', {
|
||||
sourceType: 'module',
|
||||
});
|
||||
|
||||
let error;
|
||||
try {
|
||||
dynamicImportToGlob(ast.body[0].expression.arguments[0]);
|
||||
} catch (e) {
|
||||
error = e;
|
||||
}
|
||||
t.is(error.message, 'A dynamic import cannot contain * characters.');
|
||||
t.true(error instanceof VariableDynamicImportError);
|
||||
});
|
||||
|
||||
test('throws when dynamic import contains a non + operator', (t) => {
|
||||
const ast = CustomParser.parse('import("foo" - "bar.js");', {
|
||||
sourceType: 'module',
|
||||
});
|
||||
|
||||
let error;
|
||||
try {
|
||||
dynamicImportToGlob(ast.body[0].expression.arguments[0]);
|
||||
} catch (e) {
|
||||
error = e;
|
||||
}
|
||||
t.is(error.message, '- operator is not supported.');
|
||||
t.true(error instanceof VariableDynamicImportError);
|
||||
});
|
||||
|
||||
test('throws when dynamic import is a single variable', (t) => {
|
||||
const ast = CustomParser.parse('import(foo);', {
|
||||
sourceType: 'module',
|
||||
});
|
||||
|
||||
let error;
|
||||
try {
|
||||
dynamicImportToGlob(ast.body[0].expression.arguments[0], '${sourceString}');
|
||||
} catch (e) {
|
||||
error = e;
|
||||
}
|
||||
t.is(
|
||||
error.message,
|
||||
'invalid import "${sourceString}". It cannot be statically analyzed. Variable dynamic imports must start with ./ and be limited to a specific directory. For example: import(`./foo/${bar}.js`).'
|
||||
);
|
||||
t.true(error instanceof VariableDynamicImportError);
|
||||
});
|
||||
|
||||
test('throws when dynamic import starts with a variable', (t) => {
|
||||
const ast = CustomParser.parse('import(`${folder}/foo.js`);', {
|
||||
sourceType: 'module',
|
||||
});
|
||||
|
||||
let error;
|
||||
try {
|
||||
dynamicImportToGlob(ast.body[0].expression.arguments[0], '${sourceString}');
|
||||
} catch (e) {
|
||||
error = e;
|
||||
}
|
||||
t.is(
|
||||
error.message,
|
||||
'invalid import "${sourceString}". It cannot be statically analyzed. Variable dynamic imports must start with ./ and be limited to a specific directory. For example: import(`./foo/${bar}.js`).'
|
||||
);
|
||||
t.true(error instanceof VariableDynamicImportError);
|
||||
});
|
||||
|
||||
test('throws when dynamic import starts with a /', (t) => {
|
||||
const ast = CustomParser.parse('import(`/foo/${bar}.js`);', {
|
||||
sourceType: 'module',
|
||||
});
|
||||
|
||||
let error;
|
||||
try {
|
||||
dynamicImportToGlob(ast.body[0].expression.arguments[0], '${sourceString}');
|
||||
} catch (e) {
|
||||
error = e;
|
||||
}
|
||||
t.is(
|
||||
error.message,
|
||||
'invalid import "${sourceString}". Variable absolute imports are not supported, imports must start with ./ in the static part of the import. For example: import(`./foo/${bar}.js`).'
|
||||
);
|
||||
t.true(error instanceof VariableDynamicImportError);
|
||||
});
|
||||
|
||||
test('throws when dynamic import does not start with ./', (t) => {
|
||||
const ast = CustomParser.parse('import(`foo/${bar}.js`);', {
|
||||
sourceType: 'module',
|
||||
});
|
||||
|
||||
let error;
|
||||
try {
|
||||
dynamicImportToGlob(ast.body[0].expression.arguments[0], '${sourceString}');
|
||||
} catch (e) {
|
||||
error = e;
|
||||
}
|
||||
t.is(
|
||||
error.message,
|
||||
'invalid import "${sourceString}". Variable bare imports are not supported, imports must start with ./ in the static part of the import. For example: import(`./foo/${bar}.js`).'
|
||||
);
|
||||
t.true(error instanceof VariableDynamicImportError);
|
||||
});
|
||||
|
||||
test("throws when dynamic import imports it's own directory", (t) => {
|
||||
const ast = CustomParser.parse('import(`./${foo}.js`);', {
|
||||
sourceType: 'module',
|
||||
});
|
||||
|
||||
let error;
|
||||
try {
|
||||
dynamicImportToGlob(ast.body[0].expression.arguments[0], '${sourceString}');
|
||||
} catch (e) {
|
||||
error = e;
|
||||
}
|
||||
t.is(
|
||||
error.message,
|
||||
'invalid import "${sourceString}". Variable imports cannot import their own directory, place imports in a separate directory or make the import filename more specific. For example: import(`./foo/${bar}.js`).'
|
||||
);
|
||||
t.true(error instanceof VariableDynamicImportError);
|
||||
});
|
||||
|
||||
test('throws when dynamic import imports does not contain a file extension', (t) => {
|
||||
const ast = CustomParser.parse('import(`./foo/${bar}`);', {
|
||||
sourceType: 'module',
|
||||
});
|
||||
|
||||
let error;
|
||||
try {
|
||||
dynamicImportToGlob(ast.body[0].expression.arguments[0], '${sourceString}');
|
||||
} catch (e) {
|
||||
error = e;
|
||||
}
|
||||
t.is(
|
||||
error.message,
|
||||
'invalid import "${sourceString}". A file extension must be included in the static part of the import. For example: import(`./foo/${bar}.js`).'
|
||||
);
|
||||
t.true(error instanceof VariableDynamicImportError);
|
||||
});
|
||||
Reference in New Issue
Block a user