eslint-plugin-esm 0.8.1 → 0.8.3
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/dist/common.d.ts +8 -3
- package/dist/common.d.ts.map +1 -1
- package/dist/common.js +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/rules/no-circular-imports.d.ts +8 -0
- package/dist/rules/no-circular-imports.d.ts.map +1 -0
- package/dist/rules/no-circular-imports.js +56 -0
- package/dist/rules/no-dynamic-imports.d.ts +2 -1
- package/dist/rules/no-dynamic-imports.d.ts.map +1 -1
- package/dist/rules/no-dynamic-imports.js +1 -1
- package/dist/rules/no-empty-exports.d.ts +2 -1
- package/dist/rules/no-empty-exports.d.ts.map +1 -1
- package/dist/rules/no-empty-exports.js +1 -1
- package/dist/rules/no-query-suffixes.d.ts +5 -0
- package/dist/rules/no-query-suffixes.d.ts.map +1 -0
- package/dist/rules/no-query-suffixes.js +10 -0
- package/dist/rules/no-side-effect-imports.d.ts.map +1 -1
- package/dist/rules/no-side-effect-imports.js +1 -1
- package/dist/rules/top-side-effect-imports.d.ts.map +1 -1
- package/dist/rules/top-side-effect-imports.js +1 -1
- package/dist/utils.d.ts +2 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +1 -1
- package/package.json +5 -4
- package/CHANGELOG.md +0 -96
- package/doc/rules/existing-file-imports.md +0 -28
- package/doc/rules/no-declaration-file-imports.md +0 -35
- package/doc/rules/no-directory-imports.md +0 -30
- package/doc/rules/no-dynamic-imports.md +0 -30
- package/doc/rules/no-empty-exports.md +0 -29
- package/doc/rules/no-git-ignored-imports.md +0 -36
- package/doc/rules/no-phantom-dep-imports.md +0 -31
- package/doc/rules/no-relative-parent-imports.md +0 -33
- package/doc/rules/no-rename-exports.md +0 -29
- package/doc/rules/no-rename-imports.md +0 -28
- package/doc/rules/no-side-effect-imports.md +0 -30
- package/doc/rules/no-useless-path-segments.md +0 -54
- package/doc/rules/required-exports.md +0 -31
- package/doc/rules/top-side-effect-imports.md +0 -31
- package/src/common.ts +0 -97
- package/src/index.ts +0 -31
- package/src/rules/existing-file-imports.test.ts +0 -28
- package/src/rules/existing-file-imports.ts +0 -25
- package/src/rules/no-declaration-file-imports.test.ts +0 -33
- package/src/rules/no-declaration-file-imports.ts +0 -12
- package/src/rules/no-directory-imports.test.ts +0 -31
- package/src/rules/no-directory-imports.ts +0 -34
- package/src/rules/no-dynamic-imports.test.ts +0 -27
- package/src/rules/no-dynamic-imports.ts +0 -15
- package/src/rules/no-empty-exports.test.ts +0 -22
- package/src/rules/no-empty-exports.ts +0 -14
- package/src/rules/no-git-ignored-imports.test.ts +0 -40
- package/src/rules/no-git-ignored-imports.ts +0 -58
- package/src/rules/no-phantom-dep-imports.test.ts +0 -35
- package/src/rules/no-phantom-dep-imports.ts +0 -124
- package/src/rules/no-relative-parent-imports.test.ts +0 -28
- package/src/rules/no-relative-parent-imports.ts +0 -13
- package/src/rules/no-rename-exports.test.ts +0 -22
- package/src/rules/no-rename-exports.ts +0 -17
- package/src/rules/no-rename-imports.test.ts +0 -22
- package/src/rules/no-rename-imports.ts +0 -16
- package/src/rules/no-side-effect-imports.test.ts +0 -24
- package/src/rules/no-side-effect-imports.ts +0 -39
- package/src/rules/no-useless-path-segments.test.ts +0 -52
- package/src/rules/no-useless-path-segments.ts +0 -31
- package/src/rules/required-exports.test.ts +0 -24
- package/src/rules/required-exports.ts +0 -22
- package/src/rules/top-side-effect-imports.test.ts +0 -24
- package/src/rules/top-side-effect-imports.ts +0 -22
- package/src/utils.ts +0 -18
- package/tsconfig.json +0 -5
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { test } from "@fenge/dev-utils";
|
|
2
|
-
import { topSideEffectImports } from "./top-side-effect-imports.ts";
|
|
3
|
-
|
|
4
|
-
const valid = [
|
|
5
|
-
"import 'reflect-metadata'; import {foo} from 'foo'",
|
|
6
|
-
"import 'foo.css'; import {bar} from 'bar'",
|
|
7
|
-
"import 'reflect-metadata'; import 'foo.css'",
|
|
8
|
-
"import 'foo.css'; import 'bar'",
|
|
9
|
-
"import 'reflect-metadata'; import {foo} from 'foo'; import {bar} from 'bar'",
|
|
10
|
-
"import 'foo.css'; import {foo} from 'foo'; import {bar} from 'bar'",
|
|
11
|
-
"import 'reflect-metadata'", // Single side-effect import
|
|
12
|
-
"import {foo} from 'foo'", // Single non-side-effect import
|
|
13
|
-
];
|
|
14
|
-
|
|
15
|
-
const invalid = [
|
|
16
|
-
"import {foo} from 'foo'; import 'reflect-metadata'",
|
|
17
|
-
"import {bar} from 'bar'; import 'foo.css'",
|
|
18
|
-
"import {foo} from 'foo'; import {} from 'bar'",
|
|
19
|
-
"import {foo} from 'foo'; import 'bar'; import * as foo from 'reflect-metadata'", // Three import statements
|
|
20
|
-
"import {foo} from 'foo'; import {} from 'reflect-metadata'; import * as bar from 'bar'", // Three import statements
|
|
21
|
-
"import 'bar'; import r from 'reflect-metadata'; import {} from 'foo'", // Three import statements
|
|
22
|
-
];
|
|
23
|
-
|
|
24
|
-
test({ valid, invalid, ...topSideEffectImports });
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { ImportDeclaration } from "estree";
|
|
2
|
-
import { createRule, DEFAULT_MESSAGE_ID, getRuleName } from "../common.ts";
|
|
3
|
-
|
|
4
|
-
export const topSideEffectImports = createRule({
|
|
5
|
-
name: getRuleName(import.meta.url),
|
|
6
|
-
message: "Side effect imports must be placed before other import statements.",
|
|
7
|
-
create: (context) => {
|
|
8
|
-
let hasNonSideEffectImport = false;
|
|
9
|
-
|
|
10
|
-
return {
|
|
11
|
-
ImportDeclaration: (node: ImportDeclaration) => {
|
|
12
|
-
if (node.specifiers.length > 0) {
|
|
13
|
-
hasNonSideEffectImport = true;
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
if (hasNonSideEffectImport) {
|
|
17
|
-
context.report({ node, messageId: DEFAULT_MESSAGE_ID });
|
|
18
|
-
}
|
|
19
|
-
},
|
|
20
|
-
};
|
|
21
|
-
},
|
|
22
|
-
});
|
package/src/utils.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Like [lodash.memoize](https://lodash.com/docs/4.17.15#memoize)
|
|
3
|
-
* Type `Res` must be non-nullable, otherwise it will cause bug.
|
|
4
|
-
*/
|
|
5
|
-
export function memoize<Arg, Res extends NonNullable<unknown>>(
|
|
6
|
-
fn: (arg: Arg) => Res,
|
|
7
|
-
): (arg: Arg) => Res {
|
|
8
|
-
const cache = new Map<Arg, Res>(); // memory leak
|
|
9
|
-
return (arg: Arg) => {
|
|
10
|
-
const cachedResult = cache.get(arg);
|
|
11
|
-
if (cachedResult !== undefined) {
|
|
12
|
-
return cachedResult;
|
|
13
|
-
}
|
|
14
|
-
const result = fn(arg);
|
|
15
|
-
cache.set(arg, result);
|
|
16
|
-
return result;
|
|
17
|
-
};
|
|
18
|
-
}
|