eslint-plugin-esm 0.2.2-beta.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -1
- package/dist/rules/no-side-effect-imports.d.ts.map +1 -1
- package/dist/rules/no-side-effect-imports.js +3 -2
- package/dist/utils.d.ts +2 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +5 -4
- package/package.json +2 -2
- package/src/rules/no-side-effect-imports.ts +4 -2
- package/src/utils.ts +7 -4
package/CHANGELOG.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-side-effect-imports.d.ts","sourceRoot":"","sources":["../../src/rules/no-side-effect-imports.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,mBAAmB;;;
|
|
1
|
+
{"version":3,"file":"no-side-effect-imports.d.ts","sourceRoot":"","sources":["../../src/rules/no-side-effect-imports.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,mBAAmB;;;CA4B9B,CAAC"}
|
|
@@ -22,7 +22,8 @@ export const noSideEffectImports = createRule({
|
|
|
22
22
|
const ignoreExps = ignores.map((ignore) => new RegExp(ignore));
|
|
23
23
|
return {
|
|
24
24
|
"ImportDeclaration[specifiers.length=0]": (node) => {
|
|
25
|
-
if (ignoreExps.some((exp) =>
|
|
25
|
+
if (ignoreExps.some((exp) => typeof node.source.value === "string" &&
|
|
26
|
+
exp.test(node.source.value))) {
|
|
26
27
|
return;
|
|
27
28
|
}
|
|
28
29
|
context.report({ node, messageId: DEFAULT_MESSAGE_ID });
|
|
@@ -30,4 +31,4 @@ export const noSideEffectImports = createRule({
|
|
|
30
31
|
};
|
|
31
32
|
},
|
|
32
33
|
});
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tc2lkZS1lZmZlY3QtaW1wb3J0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1zaWRlLWVmZmVjdC1pbXBvcnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTNFLE1BQU0sT0FBTyxHQUFHO0lBQ2Qsb0JBQW9CO0lBQ3BCLHFFQUFxRTtJQUNyRSx1QkFBdUI7SUFDdkIsd0JBQXdCO0lBQ3hCLHdCQUF3QjtJQUN4Qix3QkFBd0I7SUFDeEIsd0JBQXdCO0lBQ3hCLDBCQUEwQjtJQUMxQix3QkFBd0I7SUFDeEIsdUJBQXVCO0NBQ3hCLENBQUM7QUFFRixzRkFBc0Y7QUFDdEYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsVUFBVSxDQUFDO0lBQzVDLElBQUksRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEMsT0FBTyxFQUNMLGdGQUFnRjtJQUNsRixNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUNsQixJQUNFLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDbkQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQy9CLEVBQ0QsQ0FBQztZQUNELE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUNELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDL0QsT0FBTztZQUNMLHdDQUF3QyxFQUFFLENBQUMsSUFBdUIsRUFBRSxFQUFFO2dCQUNwRSxJQUNFLFVBQVUsQ0FBQyxJQUFJLENBQ2IsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssUUFBUTtvQkFDckMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUM5QixFQUNELENBQUM7b0JBQ0QsT0FBTztnQkFDVCxDQUFDO2dCQUNELE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQztZQUMxRCxDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEltcG9ydERlY2xhcmF0aW9uIH0gZnJvbSBcImVzdHJlZVwiO1xuaW1wb3J0IHsgY3JlYXRlUnVsZSwgREVGQVVMVF9NRVNTQUdFX0lELCBnZXRSdWxlTmFtZSB9IGZyb20gXCIuLi9jb21tb24uanNcIjtcblxuY29uc3QgaWdub3JlcyA9IFtcbiAgXCJecmVmbGVjdC1tZXRhZGF0YSRcIixcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3ZpdGVqcy92aXRlL2Jsb2IvbWFpbi9wYWNrYWdlcy92aXRlL2NsaWVudC5kLnRzXG4gIFwiKD88IVxcXFwubW9kdWxlKVxcXFwuY3NzJFwiLFxuICBcIig/PCFcXFxcLm1vZHVsZSlcXFxcLnNjc3MkXCIsXG4gIFwiKD88IVxcXFwubW9kdWxlKVxcXFwuc2FzcyRcIixcbiAgXCIoPzwhXFxcXC5tb2R1bGUpXFxcXC5sZXNzJFwiLFxuICBcIig/PCFcXFxcLm1vZHVsZSlcXFxcLnN0eWwkXCIsXG4gIFwiKD88IVxcXFwubW9kdWxlKVxcXFwuc3R5bHVzJFwiLFxuICBcIig/PCFcXFxcLm1vZHVsZSlcXFxcLnBjc3MkXCIsXG4gIFwiKD88IVxcXFwubW9kdWxlKVxcXFwuc3NzJFwiLFxuXTtcblxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvU3RhdGVtZW50cy9pbXBvcnRcbmV4cG9ydCBjb25zdCBub1NpZGVFZmZlY3RJbXBvcnRzID0gY3JlYXRlUnVsZSh7XG4gIG5hbWU6IGdldFJ1bGVOYW1lKGltcG9ydC5tZXRhLnVybCksXG4gIG1lc3NhZ2U6XG4gICAgXCJTaWRlIGVmZmVjdCBpbXBvcnQgaXMgb2Z0ZW4gdXNlZCBmb3IgcG9seWZpbGxzIGFuZCBjc3MuIEl0J3MgdW5zYWZlIHRvIHVzZSBpdC5cIixcbiAgY3JlYXRlOiAoY29udGV4dCkgPT4ge1xuICAgIGlmIChcbiAgICAgIFtcIi5kLnRzXCIsIFwiLmQuY3RzXCIsIFwiLmQubXRzXCIsIFwiLmQudHN4XCJdLnNvbWUoKGV4dCkgPT5cbiAgICAgICAgY29udGV4dC5maWxlbmFtZS5lbmRzV2l0aChleHQpLFxuICAgICAgKVxuICAgICkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBjb25zdCBpZ25vcmVFeHBzID0gaWdub3Jlcy5tYXAoKGlnbm9yZSkgPT4gbmV3IFJlZ0V4cChpZ25vcmUpKTtcbiAgICByZXR1cm4ge1xuICAgICAgXCJJbXBvcnREZWNsYXJhdGlvbltzcGVjaWZpZXJzLmxlbmd0aD0wXVwiOiAobm9kZTogSW1wb3J0RGVjbGFyYXRpb24pID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGlnbm9yZUV4cHMuc29tZShcbiAgICAgICAgICAgIChleHApID0+XG4gICAgICAgICAgICAgIHR5cGVvZiBub2RlLnNvdXJjZS52YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgICBleHAudGVzdChub2RlLnNvdXJjZS52YWx1ZSksXG4gICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29udGV4dC5yZXBvcnQoeyBub2RlLCBtZXNzYWdlSWQ6IERFRkFVTFRfTUVTU0FHRV9JRCB9KTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfSxcbn0pO1xuIl19
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Like [lodash.memoize](https://lodash.com/docs/4.17.15#memoize)
|
|
3
|
+
* Type `Res` must be non-nullable, otherwise it will cause bug.
|
|
3
4
|
*/
|
|
4
|
-
export declare function memoize<Arg, Res
|
|
5
|
+
export declare function memoize<Arg, Res extends NonNullable<unknown>>(fn: (arg: Arg) => Res): (arg: Arg) => Res;
|
|
5
6
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,SAAS,WAAW,CAAC,OAAO,CAAC,EAC3D,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GACpB,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAWnB"}
|
package/dist/utils.js
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Like [lodash.memoize](https://lodash.com/docs/4.17.15#memoize)
|
|
3
|
+
* Type `Res` must be non-nullable, otherwise it will cause bug.
|
|
3
4
|
*/
|
|
4
5
|
export function memoize(fn) {
|
|
5
6
|
const cache = new Map(); // memory leak
|
|
6
7
|
return (arg) => {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
return
|
|
8
|
+
const cachedResult = cache.get(arg);
|
|
9
|
+
if (cachedResult !== undefined) {
|
|
10
|
+
return cachedResult;
|
|
10
11
|
}
|
|
11
12
|
const result = fn(arg);
|
|
12
13
|
cache.set(arg, result);
|
|
13
14
|
return result;
|
|
14
15
|
};
|
|
15
16
|
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLE9BQU8sQ0FDckIsRUFBcUI7SUFFckIsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQVksQ0FBQyxDQUFDLGNBQWM7SUFDakQsT0FBTyxDQUFDLEdBQVEsRUFBRSxFQUFFO1FBQ2xCLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsSUFBSSxZQUFZLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDL0IsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QixLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN2QixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBMaWtlIFtsb2Rhc2gubWVtb2l6ZV0oaHR0cHM6Ly9sb2Rhc2guY29tL2RvY3MvNC4xNy4xNSNtZW1vaXplKVxuICogVHlwZSBgUmVzYCBtdXN0IGJlIG5vbi1udWxsYWJsZSwgb3RoZXJ3aXNlIGl0IHdpbGwgY2F1c2UgYnVnLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVtb2l6ZTxBcmcsIFJlcyBleHRlbmRzIE5vbk51bGxhYmxlPHVua25vd24+PihcbiAgZm46IChhcmc6IEFyZykgPT4gUmVzLFxuKTogKGFyZzogQXJnKSA9PiBSZXMge1xuICBjb25zdCBjYWNoZSA9IG5ldyBNYXA8QXJnLCBSZXM+KCk7IC8vIG1lbW9yeSBsZWFrXG4gIHJldHVybiAoYXJnOiBBcmcpID0+IHtcbiAgICBjb25zdCBjYWNoZWRSZXN1bHQgPSBjYWNoZS5nZXQoYXJnKTtcbiAgICBpZiAoY2FjaGVkUmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IGZuKGFyZyk7XG4gICAgY2FjaGUuc2V0KGFyZywgcmVzdWx0KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eslint-plugin-esm",
|
|
3
|
-
"version": "0.2.2
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "ESLint plugin for linting ESM (import/export syntax)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"eslint",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"@types/estree": "1.0.6",
|
|
30
30
|
"@types/json-schema": "7.0.15",
|
|
31
31
|
"@types/node": "22.9.1",
|
|
32
|
-
"@typescript-eslint/parser": "8.
|
|
32
|
+
"@typescript-eslint/parser": "8.18.0",
|
|
33
33
|
"eslint": "8.57.1",
|
|
34
34
|
"outdent": "0.8.0",
|
|
35
35
|
"tsx": "4.19.2"
|
|
@@ -31,8 +31,10 @@ export const noSideEffectImports = createRule({
|
|
|
31
31
|
return {
|
|
32
32
|
"ImportDeclaration[specifiers.length=0]": (node: ImportDeclaration) => {
|
|
33
33
|
if (
|
|
34
|
-
ignoreExps.some(
|
|
35
|
-
exp
|
|
34
|
+
ignoreExps.some(
|
|
35
|
+
(exp) =>
|
|
36
|
+
typeof node.source.value === "string" &&
|
|
37
|
+
exp.test(node.source.value),
|
|
36
38
|
)
|
|
37
39
|
) {
|
|
38
40
|
return;
|
package/src/utils.ts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Like [lodash.memoize](https://lodash.com/docs/4.17.15#memoize)
|
|
3
|
+
* Type `Res` must be non-nullable, otherwise it will cause bug.
|
|
3
4
|
*/
|
|
4
|
-
export function memoize<Arg, Res
|
|
5
|
+
export function memoize<Arg, Res extends NonNullable<unknown>>(
|
|
6
|
+
fn: (arg: Arg) => Res,
|
|
7
|
+
): (arg: Arg) => Res {
|
|
5
8
|
const cache = new Map<Arg, Res>(); // memory leak
|
|
6
9
|
return (arg: Arg) => {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
return
|
|
10
|
+
const cachedResult = cache.get(arg);
|
|
11
|
+
if (cachedResult !== undefined) {
|
|
12
|
+
return cachedResult;
|
|
10
13
|
}
|
|
11
14
|
const result = fn(arg);
|
|
12
15
|
cache.set(arg, result);
|