eslint-plugin-esm 0.6.0 → 0.7.0
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 +13 -0
- package/dist/index.d.ts +26 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/rules/existing-file-imports.d.ts +5 -0
- package/dist/rules/existing-file-imports.d.ts.map +1 -0
- package/dist/rules/existing-file-imports.js +24 -0
- package/dist/rules/no-git-ignored-imports.js +7 -2
- package/dist/rules/no-phantom-dep-imports.d.ts.map +1 -1
- package/dist/rules/no-phantom-dep-imports.js +9 -2
- package/dist/rules/no-side-effect-imports.js +9 -9
- package/doc/rules/existing-file-imports.md +28 -0
- package/doc/rules/no-directory-imports.md +13 -13
- package/doc/rules/no-git-ignored-imports.md +19 -19
- package/doc/rules/no-side-effect-imports.md +3 -3
- package/package.json +7 -5
- package/src/index.ts +2 -2
- package/src/rules/{no-inexistent-relative-imports.spec.ts → existing-file-imports.test.ts} +11 -10
- package/src/rules/{no-inexistent-relative-imports.ts → existing-file-imports.ts} +6 -8
- package/src/rules/no-git-ignored-imports.ts +6 -1
- package/src/rules/no-phantom-dep-imports.ts +9 -3
- package/src/rules/{no-side-effect-imports.spec.ts → no-side-effect-imports.test.ts} +4 -3
- package/src/rules/no-side-effect-imports.ts +8 -8
- package/tsconfig.json +1 -1
- package/dist/rules/no-inexistent-relative-imports.d.ts +0 -5
- package/dist/rules/no-inexistent-relative-imports.d.ts.map +0 -1
- package/dist/rules/no-inexistent-relative-imports.js +0 -26
- package/doc/rules/no-inexistent-relative-imports.md +0 -28
- /package/src/rules/{no-declaration-file-imports.spec.ts → no-declaration-file-imports.test.ts} +0 -0
- /package/src/rules/{no-directory-imports.spec.ts → no-directory-imports.test.ts} +0 -0
- /package/src/rules/{no-dynamic-imports.spec.ts → no-dynamic-imports.test.ts} +0 -0
- /package/src/rules/{no-empty-exports.spec.ts → no-empty-exports.test.ts} +0 -0
- /package/src/rules/{no-git-ignored-imports.spec.ts → no-git-ignored-imports.test.ts} +0 -0
- /package/src/rules/{no-phantom-dep-imports.spec.ts → no-phantom-dep-imports.test.ts} +0 -0
- /package/src/rules/{no-relative-parent-imports.spec.ts → no-relative-parent-imports.test.ts} +0 -0
- /package/src/rules/{no-rename-exports.spec.ts → no-rename-exports.test.ts} +0 -0
- /package/src/rules/{no-rename-imports.spec.ts → no-rename-imports.test.ts} +0 -0
- /package/src/rules/{no-useless-path-segments.spec.ts → no-useless-path-segments.test.ts} +0 -0
- /package/src/rules/{required-exports.spec.ts → required-exports.test.ts} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# eslint-plugin-esm
|
|
2
2
|
|
|
3
|
+
## 0.7.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 01657a8: feat(eslint-plugin-esm): rename `no-inexistent-relative-imports` to `existing-file-imports`
|
|
8
|
+
|
|
9
|
+
## 0.6.1
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 501e3b4: feat(eslint-plugin-esm): disallow side effect imports for `no-side-effect-imports` rule
|
|
14
|
+
- da63d2e: fix(eslint-plugin-esm): depress unexpected error messages in console
|
|
15
|
+
|
|
3
16
|
## 0.6.0
|
|
4
17
|
|
|
5
18
|
### Minor Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,29 @@
|
|
|
1
|
+
import { existingFileImports } from "./rules/existing-file-imports.ts";
|
|
2
|
+
import { noDeclarationFileImports } from "./rules/no-declaration-file-imports.ts";
|
|
3
|
+
import { noDirectoryImports } from "./rules/no-directory-imports.ts";
|
|
4
|
+
import { noDynamicImports } from "./rules/no-dynamic-imports.ts";
|
|
5
|
+
import { noEmptyExports } from "./rules/no-empty-exports.ts";
|
|
6
|
+
import { noGitIgnoredImports } from "./rules/no-git-ignored-imports.ts";
|
|
7
|
+
import { noPhantomDepImports } from "./rules/no-phantom-dep-imports.ts";
|
|
8
|
+
import { noRelativeParentImports } from "./rules/no-relative-parent-imports.ts";
|
|
9
|
+
import { noRenameExports } from "./rules/no-rename-exports.ts";
|
|
10
|
+
import { noRenameImports } from "./rules/no-rename-imports.ts";
|
|
11
|
+
import { noSideEffectImports } from "./rules/no-side-effect-imports.ts";
|
|
12
|
+
import { noUselessPathSegments } from "./rules/no-useless-path-segments.ts";
|
|
13
|
+
import { requiredExports } from "./rules/required-exports.ts";
|
|
1
14
|
export declare const rules: {
|
|
2
|
-
[
|
|
15
|
+
[existingFileImports.name]: import("eslint").Rule.RuleModule;
|
|
16
|
+
[noDeclarationFileImports.name]: import("eslint").Rule.RuleModule;
|
|
17
|
+
[noDirectoryImports.name]: import("eslint").Rule.RuleModule;
|
|
18
|
+
[noDynamicImports.name]: import("eslint").Rule.RuleModule;
|
|
19
|
+
[noEmptyExports.name]: import("eslint").Rule.RuleModule;
|
|
20
|
+
[noGitIgnoredImports.name]: import("eslint").Rule.RuleModule;
|
|
21
|
+
[noPhantomDepImports.name]: import("eslint").Rule.RuleModule;
|
|
22
|
+
[noRelativeParentImports.name]: import("eslint").Rule.RuleModule;
|
|
23
|
+
[noRenameExports.name]: import("eslint").Rule.RuleModule;
|
|
24
|
+
[noRenameImports.name]: import("eslint").Rule.RuleModule;
|
|
25
|
+
[noSideEffectImports.name]: import("eslint").Rule.RuleModule;
|
|
26
|
+
[noUselessPathSegments.name]: import("eslint").Rule.RuleModule;
|
|
27
|
+
[requiredExports.name]: import("eslint").Rule.RuleModule;
|
|
3
28
|
};
|
|
4
29
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,eAAO,MAAM,KAAK;IAChB,CAAC,mBAAmB,CAAC,IAAI,CAAC,mCAA0B;IACpD,CAAC,wBAAwB,CAAC,IAAI,CAAC,mCAA+B;IAC9D,CAAC,kBAAkB,CAAC,IAAI,CAAC,mCAAyB;IAClD,CAAC,gBAAgB,CAAC,IAAI,CAAC,mCAAuB;IAC9C,CAAC,cAAc,CAAC,IAAI,CAAC,mCAAqB;IAC1C,CAAC,mBAAmB,CAAC,IAAI,CAAC,mCAA0B;IACpD,CAAC,mBAAmB,CAAC,IAAI,CAAC,mCAA0B;IACpD,CAAC,uBAAuB,CAAC,IAAI,CAAC,mCAA8B;IAC5D,CAAC,eAAe,CAAC,IAAI,CAAC,mCAAsB;IAC5C,CAAC,eAAe,CAAC,IAAI,CAAC,mCAAsB;IAC5C,CAAC,mBAAmB,CAAC,IAAI,CAAC,mCAA0B;IACpD,CAAC,qBAAqB,CAAC,IAAI,CAAC,mCAA4B;IACxD,CAAC,eAAe,CAAC,IAAI,CAAC,mCAAsB;CAC7C,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import { existingFileImports } from "./rules/existing-file-imports.js";
|
|
1
2
|
import { noDeclarationFileImports } from "./rules/no-declaration-file-imports.js";
|
|
2
3
|
import { noDirectoryImports } from "./rules/no-directory-imports.js";
|
|
3
4
|
import { noDynamicImports } from "./rules/no-dynamic-imports.js";
|
|
4
5
|
import { noEmptyExports } from "./rules/no-empty-exports.js";
|
|
5
6
|
import { noGitIgnoredImports } from "./rules/no-git-ignored-imports.js";
|
|
6
|
-
import { noInexistentRelativeImports } from "./rules/no-inexistent-relative-imports.js";
|
|
7
7
|
import { noPhantomDepImports } from "./rules/no-phantom-dep-imports.js";
|
|
8
8
|
import { noRelativeParentImports } from "./rules/no-relative-parent-imports.js";
|
|
9
9
|
import { noRenameExports } from "./rules/no-rename-exports.js";
|
|
@@ -12,12 +12,12 @@ import { noSideEffectImports } from "./rules/no-side-effect-imports.js";
|
|
|
12
12
|
import { noUselessPathSegments } from "./rules/no-useless-path-segments.js";
|
|
13
13
|
import { requiredExports } from "./rules/required-exports.js";
|
|
14
14
|
export const rules = {
|
|
15
|
+
[existingFileImports.name]: existingFileImports.rule,
|
|
15
16
|
[noDeclarationFileImports.name]: noDeclarationFileImports.rule,
|
|
16
17
|
[noDirectoryImports.name]: noDirectoryImports.rule,
|
|
17
18
|
[noDynamicImports.name]: noDynamicImports.rule,
|
|
18
19
|
[noEmptyExports.name]: noEmptyExports.rule,
|
|
19
20
|
[noGitIgnoredImports.name]: noGitIgnoredImports.rule,
|
|
20
|
-
[noInexistentRelativeImports.name]: noInexistentRelativeImports.rule,
|
|
21
21
|
[noPhantomDepImports.name]: noPhantomDepImports.rule,
|
|
22
22
|
[noRelativeParentImports.name]: noRelativeParentImports.rule,
|
|
23
23
|
[noRenameExports.name]: noRenameExports.rule,
|
|
@@ -26,4 +26,4 @@ export const rules = {
|
|
|
26
26
|
[noUselessPathSegments.name]: noUselessPathSegments.rule,
|
|
27
27
|
[requiredExports.name]: requiredExports.rule,
|
|
28
28
|
};
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTlELE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRztJQUNuQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLG1CQUFtQixDQUFDLElBQUk7SUFDcEQsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsRUFBRSx3QkFBd0IsQ0FBQyxJQUFJO0lBQzlELENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsa0JBQWtCLENBQUMsSUFBSTtJQUNsRCxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLGdCQUFnQixDQUFDLElBQUk7SUFDOUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsY0FBYyxDQUFDLElBQUk7SUFDMUMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxJQUFJO0lBQ3BELENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUUsbUJBQW1CLENBQUMsSUFBSTtJQUNwRCxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxFQUFFLHVCQUF1QixDQUFDLElBQUk7SUFDNUQsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsZUFBZSxDQUFDLElBQUk7SUFDNUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsZUFBZSxDQUFDLElBQUk7SUFDNUMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxJQUFJO0lBQ3BELENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEVBQUUscUJBQXFCLENBQUMsSUFBSTtJQUN4RCxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxlQUFlLENBQUMsSUFBSTtDQUM3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhpc3RpbmdGaWxlSW1wb3J0cyB9IGZyb20gXCIuL3J1bGVzL2V4aXN0aW5nLWZpbGUtaW1wb3J0cy50c1wiO1xuaW1wb3J0IHsgbm9EZWNsYXJhdGlvbkZpbGVJbXBvcnRzIH0gZnJvbSBcIi4vcnVsZXMvbm8tZGVjbGFyYXRpb24tZmlsZS1pbXBvcnRzLnRzXCI7XG5pbXBvcnQgeyBub0RpcmVjdG9yeUltcG9ydHMgfSBmcm9tIFwiLi9ydWxlcy9uby1kaXJlY3RvcnktaW1wb3J0cy50c1wiO1xuaW1wb3J0IHsgbm9EeW5hbWljSW1wb3J0cyB9IGZyb20gXCIuL3J1bGVzL25vLWR5bmFtaWMtaW1wb3J0cy50c1wiO1xuaW1wb3J0IHsgbm9FbXB0eUV4cG9ydHMgfSBmcm9tIFwiLi9ydWxlcy9uby1lbXB0eS1leHBvcnRzLnRzXCI7XG5pbXBvcnQgeyBub0dpdElnbm9yZWRJbXBvcnRzIH0gZnJvbSBcIi4vcnVsZXMvbm8tZ2l0LWlnbm9yZWQtaW1wb3J0cy50c1wiO1xuaW1wb3J0IHsgbm9QaGFudG9tRGVwSW1wb3J0cyB9IGZyb20gXCIuL3J1bGVzL25vLXBoYW50b20tZGVwLWltcG9ydHMudHNcIjtcbmltcG9ydCB7IG5vUmVsYXRpdmVQYXJlbnRJbXBvcnRzIH0gZnJvbSBcIi4vcnVsZXMvbm8tcmVsYXRpdmUtcGFyZW50LWltcG9ydHMudHNcIjtcbmltcG9ydCB7IG5vUmVuYW1lRXhwb3J0cyB9IGZyb20gXCIuL3J1bGVzL25vLXJlbmFtZS1leHBvcnRzLnRzXCI7XG5pbXBvcnQgeyBub1JlbmFtZUltcG9ydHMgfSBmcm9tIFwiLi9ydWxlcy9uby1yZW5hbWUtaW1wb3J0cy50c1wiO1xuaW1wb3J0IHsgbm9TaWRlRWZmZWN0SW1wb3J0cyB9IGZyb20gXCIuL3J1bGVzL25vLXNpZGUtZWZmZWN0LWltcG9ydHMudHNcIjtcbmltcG9ydCB7IG5vVXNlbGVzc1BhdGhTZWdtZW50cyB9IGZyb20gXCIuL3J1bGVzL25vLXVzZWxlc3MtcGF0aC1zZWdtZW50cy50c1wiO1xuaW1wb3J0IHsgcmVxdWlyZWRFeHBvcnRzIH0gZnJvbSBcIi4vcnVsZXMvcmVxdWlyZWQtZXhwb3J0cy50c1wiO1xuXG5leHBvcnQgY29uc3QgcnVsZXMgPSB7XG4gIFtleGlzdGluZ0ZpbGVJbXBvcnRzLm5hbWVdOiBleGlzdGluZ0ZpbGVJbXBvcnRzLnJ1bGUsXG4gIFtub0RlY2xhcmF0aW9uRmlsZUltcG9ydHMubmFtZV06IG5vRGVjbGFyYXRpb25GaWxlSW1wb3J0cy5ydWxlLFxuICBbbm9EaXJlY3RvcnlJbXBvcnRzLm5hbWVdOiBub0RpcmVjdG9yeUltcG9ydHMucnVsZSxcbiAgW25vRHluYW1pY0ltcG9ydHMubmFtZV06IG5vRHluYW1pY0ltcG9ydHMucnVsZSxcbiAgW25vRW1wdHlFeHBvcnRzLm5hbWVdOiBub0VtcHR5RXhwb3J0cy5ydWxlLFxuICBbbm9HaXRJZ25vcmVkSW1wb3J0cy5uYW1lXTogbm9HaXRJZ25vcmVkSW1wb3J0cy5ydWxlLFxuICBbbm9QaGFudG9tRGVwSW1wb3J0cy5uYW1lXTogbm9QaGFudG9tRGVwSW1wb3J0cy5ydWxlLFxuICBbbm9SZWxhdGl2ZVBhcmVudEltcG9ydHMubmFtZV06IG5vUmVsYXRpdmVQYXJlbnRJbXBvcnRzLnJ1bGUsXG4gIFtub1JlbmFtZUV4cG9ydHMubmFtZV06IG5vUmVuYW1lRXhwb3J0cy5ydWxlLFxuICBbbm9SZW5hbWVJbXBvcnRzLm5hbWVdOiBub1JlbmFtZUltcG9ydHMucnVsZSxcbiAgW25vU2lkZUVmZmVjdEltcG9ydHMubmFtZV06IG5vU2lkZUVmZmVjdEltcG9ydHMucnVsZSxcbiAgW25vVXNlbGVzc1BhdGhTZWdtZW50cy5uYW1lXTogbm9Vc2VsZXNzUGF0aFNlZ21lbnRzLnJ1bGUsXG4gIFtyZXF1aXJlZEV4cG9ydHMubmFtZV06IHJlcXVpcmVkRXhwb3J0cy5ydWxlLFxufTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"existing-file-imports.d.ts","sourceRoot":"","sources":["../../src/rules/existing-file-imports.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,mBAAmB;;;CAI9B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { create, createRule, getRuleName, getSourceType } from "../common.js";
|
|
4
|
+
import { memoize } from "../utils.js";
|
|
5
|
+
export const existingFileImports = createRule({
|
|
6
|
+
name: getRuleName(import.meta.url),
|
|
7
|
+
message: "Only allow importing from an existing local file.",
|
|
8
|
+
create: (context) => create(context, check),
|
|
9
|
+
});
|
|
10
|
+
function check(filename, source) {
|
|
11
|
+
return getSourceType(source) === "local"
|
|
12
|
+
? !isExisting(path.resolve(path.dirname(filename), source))
|
|
13
|
+
: false;
|
|
14
|
+
}
|
|
15
|
+
const isExisting = memoize((filepath) => {
|
|
16
|
+
try {
|
|
17
|
+
const stat = fs.statSync(filepath);
|
|
18
|
+
return stat.isFile();
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhpc3RpbmctZmlsZS1pbXBvcnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3J1bGVzL2V4aXN0aW5nLWZpbGUtaW1wb3J0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDekIsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV0QyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxVQUFVLENBQUM7SUFDNUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQyxPQUFPLEVBQUUsbURBQW1EO0lBQzVELE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUM7Q0FDNUMsQ0FBQyxDQUFDO0FBRUgsU0FBUyxLQUFLLENBQUMsUUFBZ0IsRUFBRSxNQUFjO0lBQzdDLE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLE9BQU87UUFDdEMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ1osQ0FBQztBQUVELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxDQUFDLFFBQWdCLEVBQVcsRUFBRTtJQUN2RCxJQUFJLENBQUM7UUFDSCxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7QUFDSCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgY3JlYXRlLCBjcmVhdGVSdWxlLCBnZXRSdWxlTmFtZSwgZ2V0U291cmNlVHlwZSB9IGZyb20gXCIuLi9jb21tb24udHNcIjtcbmltcG9ydCB7IG1lbW9pemUgfSBmcm9tIFwiLi4vdXRpbHMudHNcIjtcblxuZXhwb3J0IGNvbnN0IGV4aXN0aW5nRmlsZUltcG9ydHMgPSBjcmVhdGVSdWxlKHtcbiAgbmFtZTogZ2V0UnVsZU5hbWUoaW1wb3J0Lm1ldGEudXJsKSxcbiAgbWVzc2FnZTogXCJPbmx5IGFsbG93IGltcG9ydGluZyBmcm9tIGFuIGV4aXN0aW5nIGxvY2FsIGZpbGUuXCIsXG4gIGNyZWF0ZTogKGNvbnRleHQpID0+IGNyZWF0ZShjb250ZXh0LCBjaGVjayksXG59KTtcblxuZnVuY3Rpb24gY2hlY2soZmlsZW5hbWU6IHN0cmluZywgc291cmNlOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGdldFNvdXJjZVR5cGUoc291cmNlKSA9PT0gXCJsb2NhbFwiXG4gICAgPyAhaXNFeGlzdGluZyhwYXRoLnJlc29sdmUocGF0aC5kaXJuYW1lKGZpbGVuYW1lKSwgc291cmNlKSlcbiAgICA6IGZhbHNlO1xufVxuXG5jb25zdCBpc0V4aXN0aW5nID0gbWVtb2l6ZSgoZmlsZXBhdGg6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHN0YXQgPSBmcy5zdGF0U3luYyhmaWxlcGF0aCk7XG4gICAgcmV0dXJuIHN0YXQuaXNGaWxlKCk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufSk7XG4iXX0=
|
|
@@ -28,7 +28,12 @@ function checkIgnored(filename, source) {
|
|
|
28
28
|
const isIgnored = memoize((filePath) => {
|
|
29
29
|
try {
|
|
30
30
|
return (childProcess
|
|
31
|
-
|
|
31
|
+
// Adding `stdio: 'pipe'` to depress unexpected error messages in console.
|
|
32
|
+
// For example, `git check-ignore /absolute/path/to/file` (even wrapped with try-catch) will print something unnecessary.
|
|
33
|
+
.execSync(`git check-ignore ${filePath}`, {
|
|
34
|
+
encoding: "utf8",
|
|
35
|
+
stdio: "pipe",
|
|
36
|
+
})
|
|
32
37
|
.trim() === filePath);
|
|
33
38
|
}
|
|
34
39
|
catch (e) {
|
|
@@ -43,4 +48,4 @@ const isIgnored = memoize((filePath) => {
|
|
|
43
48
|
return true;
|
|
44
49
|
}
|
|
45
50
|
});
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tZ2l0LWlnbm9yZWQtaW1wb3J0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1naXQtaWdub3JlZC1pbXBvcnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sWUFBWSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDbkMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV0QyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxVQUFVLENBQUM7SUFDNUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQyxPQUFPLEVBQUUsb0RBQW9EO0lBQzdELE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUM7Q0FDbkQsQ0FBQyxDQUFDO0FBRUgsU0FBUyxZQUFZLENBQUMsUUFBZ0IsRUFBRSxNQUFjO0lBQ3BELG9CQUFvQjtJQUNwQixJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUN0QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCwyQkFBMkI7SUFDM0IsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ2hFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELG1EQUFtRDtJQUNuRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsQyxNQUFNLElBQUksS0FBSyxDQUNiLDBEQUEwRCxZQUFZLEdBQUcsQ0FDMUUsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBRUQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLENBQUMsUUFBZ0IsRUFBRSxFQUFFO0lBQzdDLElBQUksQ0FBQztRQUNILE9BQU8sQ0FDTCxZQUFZO1lBQ1YsMEVBQTBFO1lBQzFFLHlIQUF5SDthQUN4SCxRQUFRLENBQUMsb0JBQW9CLFFBQVEsRUFBRSxFQUFFO1lBQ3hDLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLEtBQUssRUFBRSxNQUFNO1NBQ2QsQ0FBQzthQUNELElBQUksRUFBRSxLQUFLLFFBQVEsQ0FDdkIsQ0FBQztJQUNKLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsSUFDRSxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ2hCLFFBQVEsSUFBSSxDQUFDO1lBQ2IsQ0FBQyxDQUFDLE1BQU0sS0FBSyxFQUFFO1lBQ2YsUUFBUSxJQUFJLENBQUM7WUFDYixDQUFDLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFDZixDQUFDO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsMEZBQTBGO1FBQzFGLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztBQUNILENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoaWxkUHJvY2VzcyBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgcHJvY2VzcyBmcm9tIFwibm9kZTpwcm9jZXNzXCI7XG5pbXBvcnQgeyBpc05hdGl2ZUVycm9yIH0gZnJvbSBcIm5vZGU6dXRpbC90eXBlc1wiO1xuaW1wb3J0IHsgY3JlYXRlLCBjcmVhdGVSdWxlLCBnZXRSdWxlTmFtZSwgZ2V0U291cmNlVHlwZSB9IGZyb20gXCIuLi9jb21tb24udHNcIjtcbmltcG9ydCB7IG1lbW9pemUgfSBmcm9tIFwiLi4vdXRpbHMudHNcIjtcblxuZXhwb3J0IGNvbnN0IG5vR2l0SWdub3JlZEltcG9ydHMgPSBjcmVhdGVSdWxlKHtcbiAgbmFtZTogZ2V0UnVsZU5hbWUoaW1wb3J0Lm1ldGEudXJsKSxcbiAgbWVzc2FnZTogXCJEaXNhbGxvdyB0byBpbXBvcnQgbW9kdWxlIGZyb20gYSBnaXQtaWdub3JlZCBwYXRoLlwiLFxuICBjcmVhdGU6IChjb250ZXh0KSA9PiBjcmVhdGUoY29udGV4dCwgY2hlY2tJZ25vcmVkKSxcbn0pO1xuXG5mdW5jdGlvbiBjaGVja0lnbm9yZWQoZmlsZW5hbWU6IHN0cmluZywgc291cmNlOiBzdHJpbmcpIHtcbiAgLy8gZnJvbSBub2RlX21vZHVsZXNcbiAgaWYgKGdldFNvdXJjZVR5cGUoc291cmNlKSAhPT0gXCJsb2NhbFwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIG91dCBzaWRlIG9mIHByb2plY3Qgcm9vdFxuICBpZiAoc291cmNlLnN0YXJ0c1dpdGgoXCIvXCIpICYmICFzb3VyY2Uuc3RhcnRzV2l0aChwcm9jZXNzLmN3ZCgpKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIC8vIFRoaXMgZmlsZSBvZiBhYnNvbHV0ZVBhdGggbWF5IGJlIGEgc3ltYm9saWMgbGlua1xuICBjb25zdCBhYnNvbHV0ZVBhdGggPSBwYXRoLnJlc29sdmUocGF0aC5kaXJuYW1lKGZpbGVuYW1lKSwgc291cmNlKTtcbiAgaWYgKCFhYnNvbHV0ZVBhdGguc3RhcnRzV2l0aChcIi9cIikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgRVNMaW50IHBsdWdpbiBpbnRlcm5hbCBlcnJvci4gQWJzb2x1dGUgcGF0aCBpbmNvcnJlY3Q6ICR7YWJzb2x1dGVQYXRofS5gLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGlzSWdub3JlZChhYnNvbHV0ZVBhdGgpO1xufVxuXG5jb25zdCBpc0lnbm9yZWQgPSBtZW1vaXplKChmaWxlUGF0aDogc3RyaW5nKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGNoaWxkUHJvY2Vzc1xuICAgICAgICAvLyBBZGRpbmcgYHN0ZGlvOiAncGlwZSdgIHRvIGRlcHJlc3MgdW5leHBlY3RlZCBlcnJvciBtZXNzYWdlcyBpbiBjb25zb2xlLlxuICAgICAgICAvLyBGb3IgZXhhbXBsZSwgYGdpdCBjaGVjay1pZ25vcmUgL2Fic29sdXRlL3BhdGgvdG8vZmlsZWAgKGV2ZW4gd3JhcHBlZCB3aXRoIHRyeS1jYXRjaCkgd2lsbCBwcmludCBzb21ldGhpbmcgdW5uZWNlc3NhcnkuXG4gICAgICAgIC5leGVjU3luYyhgZ2l0IGNoZWNrLWlnbm9yZSAke2ZpbGVQYXRofWAsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgc3RkaW86IFwicGlwZVwiLFxuICAgICAgICB9KVxuICAgICAgICAudHJpbSgpID09PSBmaWxlUGF0aFxuICAgICk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoXG4gICAgICBpc05hdGl2ZUVycm9yKGUpICYmXG4gICAgICBcInN0ZG91dFwiIGluIGUgJiZcbiAgICAgIGUuc3Rkb3V0ID09PSBcIlwiICYmXG4gICAgICBcInN0ZGVyclwiIGluIGUgJiZcbiAgICAgIGUuc3RkZXJyID09PSBcIlwiXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIFdlIGNhbm5vdCB0aHJvdyBhbiBlcnJvciBoZXJlLiBTbyB3ZSBoYXZlIHRvIHJldHVybiB0cnVlIHRvIHJlcG9ydCB0aGUgZmlsZVBhdGggaXMgYmFkLlxuICAgIHJldHVybiB0cnVlO1xuICB9XG59KTtcbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-phantom-dep-imports.d.ts","sourceRoot":"","sources":["../../src/rules/no-phantom-dep-imports.ts"],"names":[],"mappings":"AA4CA,eAAO,MAAM,mBAAmB;;;
|
|
1
|
+
{"version":3,"file":"no-phantom-dep-imports.d.ts","sourceRoot":"","sources":["../../src/rules/no-phantom-dep-imports.ts"],"names":[],"mappings":"AA4CA,eAAO,MAAM,mBAAmB;;;CA+E9B,CAAC"}
|
|
@@ -48,7 +48,14 @@ export const noPhantomDepImports = createRule({
|
|
|
48
48
|
},
|
|
49
49
|
],
|
|
50
50
|
create: (context) => create(context, (filename, source, node) => {
|
|
51
|
-
const
|
|
51
|
+
const option = context.options[0];
|
|
52
|
+
// default false
|
|
53
|
+
const allowDevDependencies = (typeof option === "object" &&
|
|
54
|
+
option &&
|
|
55
|
+
"allowDevDependencies" in option &&
|
|
56
|
+
typeof option.allowDevDependencies === "boolean" &&
|
|
57
|
+
option.allowDevDependencies) ??
|
|
58
|
+
false;
|
|
52
59
|
// ignore `import {foo} from './'`
|
|
53
60
|
// check `import {foo} from 'node:foo'` and `import {foo} from 'foo'`
|
|
54
61
|
if (getSourceType(source) === "local") {
|
|
@@ -97,4 +104,4 @@ export const noPhantomDepImports = createRule({
|
|
|
97
104
|
}
|
|
98
105
|
}),
|
|
99
106
|
});
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tcGhhbnRvbS1kZXAtaW1wb3J0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1waGFudG9tLWRlcC1pbXBvcnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QixPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFDN0IsT0FBTyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUUsU0FBUyxRQUFRLENBQUMsS0FBYztJQUM5QixPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDO0FBQ3JELENBQUM7QUFFRCxTQUFTLE1BQU0sQ0FBQyxRQUFnQjtJQUM5QixJQUFJLENBQUM7UUFDSCxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBeUQsQ0FBQyxDQUFDLG9DQUFvQztBQUNwSCxTQUFTLFVBQVUsQ0FDakIsR0FBVztJQUVYLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ25CLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDbkQsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUN4QixNQUFNLE9BQU8sR0FBWSxJQUFJLENBQUMsS0FBSyxDQUFD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QUFNLElBQUksYUFBYSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFFRCxtQ0FBbUM7UUFDbkMsTUFBTSxVQUFVLEdBQUcsTUFBTTthQUN0QixLQUFLLENBQUMsR0FBRyxDQUFDO2FBQ1YsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFYixNQUFNLE9BQU8sR0FBRyxVQUFVLElBQUksR0FBRyxJQUFJLFVBQVUsSUFBSSxPQUFPLENBQUM7UUFDM0QsTUFBTSxPQUFPLEdBQUcsVUFBVSxJQUFJLE1BQU0sQ0FBQztRQUNyQyxJQUFJLFlBQVksSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUN2RCxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztnQkFDNUMsQ0FBQyxDQUFDLFVBQVUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNwRCxDQUFDLENBQUMsVUFBVSxVQUFVLEVBQUUsQ0FBQztZQUMzQixPQUFPLENBQUMsQ0FDTixPQUFPO2dCQUNQLE9BQU87Z0JBQ1AsV0FBVyxJQUFJLEdBQUc7Z0JBQ2xCLFdBQVcsSUFBSSxNQUFNLENBQ3RCLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ2pFLENBQUM7SUFDSCxDQUFDLENBQUM7Q0FDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCBwcm9jZXNzIGZyb20gXCJub2RlOnByb2Nlc3NcIjtcbmltcG9ydCB7IGNyZWF0ZSwgY3JlYXRlUnVsZSwgZ2V0UnVsZU5hbWUsIGdldFNvdXJjZVR5cGUgfSBmcm9tIFwiLi4vY29tbW9uLnRzXCI7XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlOiB1bmtub3duKSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCI7XG59XG5cbmZ1bmN0aW9uIGlzRmlsZShmaWxlUGF0aDogc3RyaW5nKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGZzLnN0YXRTeW5jKGZpbGVQYXRoKS5pc0ZpbGUoKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmNvbnN0IGNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIHsgcGF0aDogc3RyaW5nOyBjb250ZW50OiBvYmplY3QgfSB8IHVuZGVmaW5lZD4oKTsgLy8ga2V5IGlzIGRpciwgdmFsdWUgaXMgcGFja2FnZS5qc29uXG5mdW5jdGlvbiBnZXRQa2dKc29uKFxuICBkaXI6IHN0cmluZyxcbik6IHsgcGF0aDogc3RyaW5nOyBjb250ZW50OiBvYmplY3QgfSB8IHVuZGVmaW5lZCB7XG4gIGlmIChjYWNoZS5oYXMoZGlyKSkge1xuICAgIHJldHVybiBjYWNoZS5nZXQoZGlyKTtcbiAgfVxuICBjb25zdCBwa2dKc29uUGF0aCA9IHBhdGguam9pbihkaXIsIFwicGFja2FnZS5qc29uXCIpO1xuICBpZiAoaXNGaWxlKHBrZ0pzb25QYXRoKSkge1xuICAgIGNvbnN0IGNvbnRlbnQ6IHVua25vd24gPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhwa2dKc29uUGF0aCwgXCJ1dGY4XCIpKTtcbiAgICBjb25zdCByZXN1bHQgPSBpc09iamVjdChjb250ZW50KVxuICAgICAgPyB7IHBhdGg6IHBrZ0pzb25QYXRoLCBjb250ZW50IH1cbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNhY2hlLnNldChkaXIsIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIGlmIGl0IGlzIGEgZGlyZWN0b3J5XG4gIGlmIChkaXIgPT09IHByb2Nlc3MuY3dkKCkgfHwgZGlyID09PSBcIi9cIikge1xuICAgIC8vIHN0b3AgaGVyZVxuICAgIGNhY2hlLnNldChkaXIsIHVuZGVmaW5lZCk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBnZXRQa2dKc29uKHBhdGguam9pbihkaXIsIFwiLi5cIikpO1xufVxuXG5leHBvcnQgY29uc3Qgbm9QaGFudG9tRGVwSW1wb3J0cyA9IGNyZWF0ZVJ1bGUoe1xuICBuYW1lOiBnZXRSdWxlTmFtZShpbXBvcnQubWV0YS51cmwpLFxuICBtZXNzYWdlOlxuICAgIFwiRGlzYWxsb3cgaW1wb3J0aW5nIGZyb20gYSBtb2R1bGUgd2hpY2ggdGhlIG5lYXJlc3QgYHBhY2thZ2UuanNvbmAgZG9lc24ndCBpbmNsdWRlIGl0LlwiLFxuICBzY2hlbWE6IFtcbiAgICB7XG4gICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBhbGxvd0RldkRlcGVuZGVuY2llczogeyB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgfSxcbiAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICB9LFxuICBdLFxuICBjcmVhdGU6IChjb250ZXh0KSA9PlxuICAgIGNyZWF0ZShjb250ZXh0LCAoZmlsZW5hbWUsIHNvdXJjZSwgbm9kZSkgPT4ge1xuICAgICAgY29uc3Qge1xuICAgICAgICBhbGxvd0RldkRlcGVuZGVuY2llcyA9IGZhbHNlLFxuICAgICAgfTogeyBhbGxvd0RldkRlcGVuZGVuY2llczogYm9vbGVhbiB9ID0gY29udGV4dC5vcHRpb25zWzBdID8/IHt9O1xuXG4gICAgICAvLyBpZ25vcmUgYGltcG9ydCB7Zm9vfSBmcm9tICcuLydgXG4gICAgICAvLyBjaGVjayBgaW1wb3J0IHtmb299IGZyb20gJ25vZGU6Zm9vJ2AgYW5kIGBpbXBvcnQge2Zvb30gZnJvbSAnZm9vJ2BcbiAgICAgIGlmIChnZXRTb3VyY2VUeXBlKHNvdXJjZSkgPT09IFwibG9jYWxcIikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBjb25zdCBwa2dKc29uID0gZ2V0UGtnSnNvbihwYXRoLmRpcm5hbWUoZmlsZW5hbWUpKTtcbiAgICAgIC8vIGNhbm5vdCBmaW5kIHBhY2thZ2UuanNvbiBmaWxlXG4gICAgICBpZiAoIXBrZ0pzb24pIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBjb25zdCBkZXAgPVxuICAgICAgICBcImRlcGVuZGVuY2llc1wiIGluIHBrZ0pzb24uY29udGVudCAmJlxuICAgICAgICBpc09iamVjdChwa2dKc29uLmNvbnRlbnQuZGVwZW5kZW5jaWVzKVxuICAgICAgICAgID8gcGtnSnNvbi5jb250ZW50LmRlcGVuZGVuY2llc1xuICAgICAgICAgIDoge307XG4gICAgICBjb25zdCBwZWVyRGVwID1cbiAgICAgICAgXCJwZWVyRGVwZW5kZW5jaWVzXCIgaW4gcGtnSnNvbi5jb250ZW50ICYmXG4gICAgICAgIGlzT2JqZWN0KHBrZ0pzb24uY29udGVudC5wZWVyRGVwZW5kZW5jaWVzKVxuICAgICAgICAgID8gcGtnSnNvbi5jb250ZW50LnBlZXJEZXBlbmRlbmNpZXNcbiAgICAgICAgICA6IHt9O1xuICAgICAgY29uc3QgZGV2RGVwID1cbiAgICAgICAgXCJkZXZEZXBlbmRlbmNpZXNcIiBpbiBwa2dKc29uLmNvbnRlbnQgJiZcbiAgICAgICAgaXNPYmplY3QocGtnSnNvbi5jb250ZW50LmRldkRlcGVuZGVuY2llcylcbiAgICAgICAgICA/IHBrZ0pzb24uY29udGVudC5kZXZEZXBlbmRlbmNpZXNcbiAgICAgICAgICA6IHt9O1xuXG4gICAgICAvLyBUT0RPOiBPcHRpbWl6ZSB0aGUgZXJyb3IgbWVzc2FnZSB3aGljaCBpcyByZXBvcnRlZCBvbiBgaW1wb3J0IGZvbyBmcm9tICdub2RlOmZvbydgXG4gICAgICAvLyAxLiBjaGVjayBgaW1wb3J0IGZvbyBmcm9tICdub2RlOmZvbydgXG4gICAgICBpZiAoc291cmNlLnN0YXJ0c1dpdGgoXCJub2RlOlwiKSkge1xuICAgICAgICByZXR1cm4gIShcIkB0eXBlcy9ub2RlXCIgaW4gZGV2RGVwIHx8IFwiQHR5cGVzL25vZGVcIiBpbiBkZXApO1xuICAgICAgfVxuXG4gICAgICAvLyAyLiBjaGVjayBgaW1wb3J0IGZvbyBmcm9tICdmb28nYFxuICAgICAgY29uc3QgbW9kdWxlTmFtZSA9IHNvdXJjZVxuICAgICAgICAuc3BsaXQoXCIvXCIpXG4gICAgICAgIC5zbGljZSgwLCBzb3VyY2Uuc3RhcnRzV2l0aChcIkBcIikgPyAyIDogMSlcbiAgICAgICAgLmpvaW4oXCIvXCIpO1xuXG4gICAgICBjb25zdCBpc0luRGVwID0gbW9kdWxlTmFtZSBpbiBkZXAgfHwgbW9kdWxlTmFtZSBpbiBwZWVyRGVwO1xuICAgICAgY29uc3QgaXNJbkRldiA9IG1vZHVsZU5hbWUgaW4gZGV2RGVwO1xuICAgICAgaWYgKFwiaW1wb3J0S2luZFwiIGluIG5vZGUgJiYgbm9kZS5pbXBvcnRLaW5kID09PSBcInR5cGVcIikge1xuICAgICAgICBjb25zdCB0eXBlRGVwTmFtZSA9IG1vZHVsZU5hbWUuc3RhcnRzV2l0aChcIkBcIilcbiAgICAgICAgICA/IGBAdHlwZXMvJHttb2R1bGVOYW1lLnNsaWNlKDEpLnJlcGxhY2UoXCIvXCIsIFwiX19cIil9YFxuICAgICAgICAgIDogYEB0eXBlcy8ke21vZHVsZU5hbWV9YDtcbiAgICAgICAgcmV0dXJuICEoXG4gICAgICAgICAgaXNJbkRlcCB8fFxuICAgICAgICAgIGlzSW5EZXYgfHxcbiAgICAgICAgICB0eXBlRGVwTmFtZSBpbiBkZXAgfHxcbiAgICAgICAgICB0eXBlRGVwTmFtZSBpbiBkZXZEZXBcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBhbGxvd0RldkRlcGVuZGVuY2llcyA/ICEoaXNJbkRlcCB8fCBpc0luRGV2KSA6ICFpc0luRGVwO1xuICAgICAgfVxuICAgIH0pLFxufSk7XG4iXX0=
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tcGhhbnRvbS1kZXAtaW1wb3J0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1waGFudG9tLWRlcC1pbXBvcnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QixPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFDN0IsT0FBTyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUUsU0FBUyxRQUFRLENBQUMsS0FBYztJQUM5QixPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDO0FBQ3JELENBQUM7QUFFRCxTQUFTLE1BQU0sQ0FBQyxRQUFnQjtJQUM5QixJQUFJLENBQUM7UUFDSCxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBeUQsQ0FBQyxDQUFDLG9DQUFvQztBQUNwSCxTQUFTLFVBQVUsQ0FDakIsR0FBVztJQUVYLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ25CLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDbkQsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUN4QixNQUFNLE9BQU8sR0FBWSxJQUFJLENBQUMsS0FBSyxDQUFD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QyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUNqRSxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0NBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgcHJvY2VzcyBmcm9tIFwibm9kZTpwcm9jZXNzXCI7XG5pbXBvcnQgeyBjcmVhdGUsIGNyZWF0ZVJ1bGUsIGdldFJ1bGVOYW1lLCBnZXRTb3VyY2VUeXBlIH0gZnJvbSBcIi4uL2NvbW1vbi50c1wiO1xuXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZTogdW5rbm93bikge1xuICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiO1xufVxuXG5mdW5jdGlvbiBpc0ZpbGUoZmlsZVBhdGg6IHN0cmluZykge1xuICB0cnkge1xuICAgIHJldHVybiBmcy5zdGF0U3luYyhmaWxlUGF0aCkuaXNGaWxlKCk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5jb25zdCBjYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCB7IHBhdGg6IHN0cmluZzsgY29udGVudDogb2JqZWN0IH0gfCB1bmRlZmluZWQ+KCk7IC8vIGtleSBpcyBkaXIsIHZhbHVlIGlzIHBhY2thZ2UuanNvblxuZnVuY3Rpb24gZ2V0UGtnSnNvbihcbiAgZGlyOiBzdHJpbmcsXG4pOiB7IHBhdGg6IHN0cmluZzsgY29udGVudDogb2JqZWN0IH0gfCB1bmRlZmluZWQge1xuICBpZiAoY2FjaGUuaGFzKGRpcikpIHtcbiAgICByZXR1cm4gY2FjaGUuZ2V0KGRpcik7XG4gIH1cbiAgY29uc3QgcGtnSnNvblBhdGggPSBwYXRoLmpvaW4oZGlyLCBcInBhY2thZ2UuanNvblwiKTtcbiAgaWYgKGlzRmlsZShwa2dKc29uUGF0aCkpIHtcbiAgICBjb25zdCBjb250ZW50OiB1bmtub3duID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMocGtnSnNvblBhdGgsIFwidXRmOFwiKSk7XG4gICAgY29uc3QgcmVzdWx0ID0gaXNPYmplY3QoY29udGVudClcbiAgICAgID8geyBwYXRoOiBwa2dKc29uUGF0aCwgY29udGVudCB9XG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICBjYWNoZS5zZXQoZGlyLCByZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBpZiBpdCBpcyBhIGRpcmVjdG9yeVxuICBpZiAoZGlyID09PSBwcm9jZXNzLmN3ZCgpIHx8IGRpciA9PT0gXCIvXCIpIHtcbiAgICAvLyBzdG9wIGhlcmVcbiAgICBjYWNoZS5zZXQoZGlyLCB1bmRlZmluZWQpO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gZ2V0UGtnSnNvbihwYXRoLmpvaW4oZGlyLCBcIi4uXCIpKTtcbn1cblxuZXhwb3J0IGNvbnN0IG5vUGhhbnRvbURlcEltcG9ydHMgPSBjcmVhdGVSdWxlKHtcbiAgbmFtZTogZ2V0UnVsZU5hbWUoaW1wb3J0Lm1ldGEudXJsKSxcbiAgbWVzc2FnZTpcbiAgICBcIkRpc2FsbG93IGltcG9ydGluZyBmcm9tIGEgbW9kdWxlIHdoaWNoIHRoZSBuZWFyZXN0IGBwYWNrYWdlLmpzb25gIGRvZXNuJ3QgaW5jbHVkZSBpdC5cIixcbiAgc2NoZW1hOiBbXG4gICAge1xuICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgYWxsb3dEZXZEZXBlbmRlbmNpZXM6IHsgdHlwZTogXCJib29sZWFuXCIgfSxcbiAgICAgIH0sXG4gICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgfSxcbiAgXSxcbiAgY3JlYXRlOiAoY29udGV4dCkgPT5cbiAgICBjcmVhdGUoY29udGV4dCwgKGZpbGVuYW1lLCBzb3VyY2UsIG5vZGUpID0+IHtcbiAgICAgIGNvbnN0IG9wdGlvbiA9IGNvbnRleHQub3B0aW9uc1swXTtcbiAgICAgIC8vIGRlZmF1bHQgZmFsc2VcbiAgICAgIGNvbnN0IGFsbG93RGV2RGVwZW5kZW5jaWVzOiBib29sZWFuID1cbiAgICAgICAgKHR5cGVvZiBvcHRpb24gPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICBvcHRpb24gJiZcbiAgICAgICAgICBcImFsbG93RGV2RGVwZW5kZW5jaWVzXCIgaW4gb3B0aW9uICYmXG4gICAgICAgICAgdHlwZW9mIG9wdGlvbi5hbGxvd0RldkRlcGVuZGVuY2llcyA9PT0gXCJib29sZWFuXCIgJiZcbiAgICAgICAgICBvcHRpb24uYWxsb3dEZXZEZXBlbmRlbmNpZXMpID8/XG4gICAgICAgIGZhbHNlO1xuXG4gICAgICAvLyBpZ25vcmUgYGltcG9ydCB7Zm9vfSBmcm9tICcuLydgXG4gICAgICAvLyBjaGVjayBgaW1wb3J0IHtmb299IGZyb20gJ25vZGU6Zm9vJ2AgYW5kIGBpbXBvcnQge2Zvb30gZnJvbSAnZm9vJ2BcbiAgICAgIGlmIChnZXRTb3VyY2VUeXBlKHNvdXJjZSkgPT09IFwibG9jYWxcIikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBjb25zdCBwa2dKc29uID0gZ2V0UGtnSnNvbihwYXRoLmRpcm5hbWUoZmlsZW5hbWUpKTtcbiAgICAgIC8vIGNhbm5vdCBmaW5kIHBhY2thZ2UuanNvbiBmaWxlXG4gICAgICBpZiAoIXBrZ0pzb24pIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBjb25zdCBkZXAgPVxuICAgICAgICBcImRlcGVuZGVuY2llc1wiIGluIHBrZ0pzb24uY29udGVudCAmJlxuICAgICAgICBpc09iamVjdChwa2dKc29uLmNvbnRlbnQuZGVwZW5kZW5jaWVzKVxuICAgICAgICAgID8gcGtnSnNvbi5jb250ZW50LmRlcGVuZGVuY2llc1xuICAgICAgICAgIDoge307XG4gICAgICBjb25zdCBwZWVyRGVwID1cbiAgICAgICAgXCJwZWVyRGVwZW5kZW5jaWVzXCIgaW4gcGtnSnNvbi5jb250ZW50ICYmXG4gICAgICAgIGlzT2JqZWN0KHBrZ0pzb24uY29udGVudC5wZWVyRGVwZW5kZW5jaWVzKVxuICAgICAgICAgID8gcGtnSnNvbi5jb250ZW50LnBlZXJEZXBlbmRlbmNpZXNcbiAgICAgICAgICA6IHt9O1xuICAgICAgY29uc3QgZGV2RGVwID1cbiAgICAgICAgXCJkZXZEZXBlbmRlbmNpZXNcIiBpbiBwa2dKc29uLmNvbnRlbnQgJiZcbiAgICAgICAgaXNPYmplY3QocGtnSnNvbi5jb250ZW50LmRldkRlcGVuZGVuY2llcylcbiAgICAgICAgICA/IHBrZ0pzb24uY29udGVudC5kZXZEZXBlbmRlbmNpZXNcbiAgICAgICAgICA6IHt9O1xuXG4gICAgICAvLyBUT0RPOiBPcHRpbWl6ZSB0aGUgZXJyb3IgbWVzc2FnZSB3aGljaCBpcyByZXBvcnRlZCBvbiBgaW1wb3J0IGZvbyBmcm9tICdub2RlOmZvbydgXG4gICAgICAvLyAxLiBjaGVjayBgaW1wb3J0IGZvbyBmcm9tICdub2RlOmZvbydgXG4gICAgICBpZiAoc291cmNlLnN0YXJ0c1dpdGgoXCJub2RlOlwiKSkge1xuICAgICAgICByZXR1cm4gIShcIkB0eXBlcy9ub2RlXCIgaW4gZGV2RGVwIHx8IFwiQHR5cGVzL25vZGVcIiBpbiBkZXApO1xuICAgICAgfVxuXG4gICAgICAvLyAyLiBjaGVjayBgaW1wb3J0IGZvbyBmcm9tICdmb28nYFxuICAgICAgY29uc3QgbW9kdWxlTmFtZSA9IHNvdXJjZVxuICAgICAgICAuc3BsaXQoXCIvXCIpXG4gICAgICAgIC5zbGljZSgwLCBzb3VyY2Uuc3RhcnRzV2l0aChcIkBcIikgPyAyIDogMSlcbiAgICAgICAgLmpvaW4oXCIvXCIpO1xuXG4gICAgICBjb25zdCBpc0luRGVwID0gbW9kdWxlTmFtZSBpbiBkZXAgfHwgbW9kdWxlTmFtZSBpbiBwZWVyRGVwO1xuICAgICAgY29uc3QgaXNJbkRldiA9IG1vZHVsZU5hbWUgaW4gZGV2RGVwO1xuICAgICAgaWYgKFwiaW1wb3J0S2luZFwiIGluIG5vZGUgJiYgbm9kZS5pbXBvcnRLaW5kID09PSBcInR5cGVcIikge1xuICAgICAgICBjb25zdCB0eXBlRGVwTmFtZSA9IG1vZHVsZU5hbWUuc3RhcnRzV2l0aChcIkBcIilcbiAgICAgICAgICA/IGBAdHlwZXMvJHttb2R1bGVOYW1lLnNsaWNlKDEpLnJlcGxhY2UoXCIvXCIsIFwiX19cIil9YFxuICAgICAgICAgIDogYEB0eXBlcy8ke21vZHVsZU5hbWV9YDtcbiAgICAgICAgcmV0dXJuICEoXG4gICAgICAgICAgaXNJbkRlcCB8fFxuICAgICAgICAgIGlzSW5EZXYgfHxcbiAgICAgICAgICB0eXBlRGVwTmFtZSBpbiBkZXAgfHxcbiAgICAgICAgICB0eXBlRGVwTmFtZSBpbiBkZXZEZXBcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBhbGxvd0RldkRlcGVuZGVuY2llcyA/ICEoaXNJbkRlcCB8fCBpc0luRGV2KSA6ICFpc0luRGVwO1xuICAgICAgfVxuICAgIH0pLFxufSk7XG4iXX0=
|
|
@@ -2,14 +2,14 @@ import { createRule, DEFAULT_MESSAGE_ID, getRuleName } from "../common.js";
|
|
|
2
2
|
const ignores = [
|
|
3
3
|
"^reflect-metadata$",
|
|
4
4
|
// https://github.com/vitejs/vite/blob/main/packages/vite/client.d.ts
|
|
5
|
-
"(?<!\\.module)\\.css$",
|
|
6
|
-
"(?<!\\.module)\\.scss$",
|
|
7
|
-
"(?<!\\.module)\\.sass$",
|
|
8
|
-
"(?<!\\.module)\\.less$",
|
|
9
|
-
"(?<!\\.module)\\.styl$",
|
|
10
|
-
"(?<!\\.module)\\.stylus$",
|
|
11
|
-
"(?<!\\.module)\\.pcss$",
|
|
12
|
-
"(?<!\\.module)\\.sss$",
|
|
5
|
+
// "(?<!\\.module)\\.css$",
|
|
6
|
+
// "(?<!\\.module)\\.scss$",
|
|
7
|
+
// "(?<!\\.module)\\.sass$",
|
|
8
|
+
// "(?<!\\.module)\\.less$",
|
|
9
|
+
// "(?<!\\.module)\\.styl$",
|
|
10
|
+
// "(?<!\\.module)\\.stylus$",
|
|
11
|
+
// "(?<!\\.module)\\.pcss$",
|
|
12
|
+
// "(?<!\\.module)\\.sss$",
|
|
13
13
|
];
|
|
14
14
|
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import
|
|
15
15
|
export const noSideEffectImports = createRule({
|
|
@@ -28,4 +28,4 @@ export const noSideEffectImports = createRule({
|
|
|
28
28
|
};
|
|
29
29
|
},
|
|
30
30
|
});
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tc2lkZS1lZmZlY3QtaW1wb3J0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1zaWRlLWVmZmVjdC1pbXBvcnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTNFLE1BQU0sT0FBTyxHQUFHO0lBQ2Qsb0JBQW9CO0lBQ3BCLHFFQUFxRTtJQUNyRSwyQkFBMkI7SUFDM0IsNEJBQTRCO0lBQzVCLDRCQUE0QjtJQUM1Qiw0QkFBNEI7SUFDNUIsNEJBQTRCO0lBQzVCLDhCQUE4QjtJQUM5Qiw0QkFBNEI7SUFDNUIsMkJBQTJCO0NBQzVCLENBQUM7QUFFRixzRkFBc0Y7QUFDdEYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsVUFBVSxDQUFDO0lBQzVDLElBQUksRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEMsT0FBTyxFQUNMLGdGQUFnRjtJQUNsRixNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUNsQixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQy9ELE9BQU87WUFDTCx3Q0FBd0MsRUFBRSxDQUFDLElBQXVCLEVBQUUsRUFBRTtnQkFDcEUsSUFDRSxVQUFVLENBQUMsSUFBSSxDQUNiLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLFFBQVE7b0JBQ3JDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FDOUIsRUFDRCxDQUFDO29CQUNELE9BQU87Z0JBQ1QsQ0FBQztnQkFDRCxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7WUFDMUQsQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO0NBQ0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBJbXBvcnREZWNsYXJhdGlvbiB9IGZyb20gXCJlc3RyZWVcIjtcbmltcG9ydCB7IGNyZWF0ZVJ1bGUsIERFRkFVTFRfTUVTU0FHRV9JRCwgZ2V0UnVsZU5hbWUgfSBmcm9tIFwiLi4vY29tbW9uLnRzXCI7XG5cbmNvbnN0IGlnbm9yZXMgPSBbXG4gIFwiXnJlZmxlY3QtbWV0YWRhdGEkXCIsXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS92aXRlanMvdml0ZS9ibG9iL21haW4vcGFja2FnZXMvdml0ZS9jbGllbnQuZC50c1xuICAvLyBcIig/PCFcXFxcLm1vZHVsZSlcXFxcLmNzcyRcIixcbiAgLy8gXCIoPzwhXFxcXC5tb2R1bGUpXFxcXC5zY3NzJFwiLFxuICAvLyBcIig/PCFcXFxcLm1vZHVsZSlcXFxcLnNhc3MkXCIsXG4gIC8vIFwiKD88IVxcXFwubW9kdWxlKVxcXFwubGVzcyRcIixcbiAgLy8gXCIoPzwhXFxcXC5tb2R1bGUpXFxcXC5zdHlsJFwiLFxuICAvLyBcIig/PCFcXFxcLm1vZHVsZSlcXFxcLnN0eWx1cyRcIixcbiAgLy8gXCIoPzwhXFxcXC5tb2R1bGUpXFxcXC5wY3NzJFwiLFxuICAvLyBcIig/PCFcXFxcLm1vZHVsZSlcXFxcLnNzcyRcIixcbl07XG5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL1N0YXRlbWVudHMvaW1wb3J0XG5leHBvcnQgY29uc3Qgbm9TaWRlRWZmZWN0SW1wb3J0cyA9IGNyZWF0ZVJ1bGUoe1xuICBuYW1lOiBnZXRSdWxlTmFtZShpbXBvcnQubWV0YS51cmwpLFxuICBtZXNzYWdlOlxuICAgIFwiU2lkZSBlZmZlY3QgaW1wb3J0IGlzIG9mdGVuIHVzZWQgZm9yIHBvbHlmaWxscyBhbmQgY3NzLiBJdCdzIHVuc2FmZSB0byB1c2UgaXQuXCIsXG4gIGNyZWF0ZTogKGNvbnRleHQpID0+IHtcbiAgICBjb25zdCBpZ25vcmVFeHBzID0gaWdub3Jlcy5tYXAoKGlnbm9yZSkgPT4gbmV3IFJlZ0V4cChpZ25vcmUpKTtcbiAgICByZXR1cm4ge1xuICAgICAgXCJJbXBvcnREZWNsYXJhdGlvbltzcGVjaWZpZXJzLmxlbmd0aD0wXVwiOiAobm9kZTogSW1wb3J0RGVjbGFyYXRpb24pID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGlnbm9yZUV4cHMuc29tZShcbiAgICAgICAgICAgIChleHApID0+XG4gICAgICAgICAgICAgIHR5cGVvZiBub2RlLnNvdXJjZS52YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgICBleHAudGVzdChub2RlLnNvdXJjZS52YWx1ZSksXG4gICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29udGV4dC5yZXBvcnQoeyBub2RlLCBtZXNzYWdlSWQ6IERFRkFVTFRfTUVTU0FHRV9JRCB9KTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfSxcbn0pO1xuIl19
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<!-- prettier-ignore-start -->
|
|
2
|
+
# existing-file-imports
|
|
3
|
+
|
|
4
|
+
Only allow importing from an existing local file.
|
|
5
|
+
|
|
6
|
+
## Rule Details
|
|
7
|
+
|
|
8
|
+
### Fail
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
import foo from './existing-file-imports.test.js' // filename: /foo/src/rules/existing-file-imports.test.ts
|
|
12
|
+
import foo from './existing-file-imports.test' // filename: /foo/src/rules/existing-file-imports.test.ts
|
|
13
|
+
import foo from './inexistent-file' // filename: /foo/src/rules/existing-file-imports.test.ts
|
|
14
|
+
import foo from '../inexistent-file' // filename: /foo/src/rules/existing-file-imports.test.ts
|
|
15
|
+
import foo from '../rules' // filename: /foo/src/rules/existing-file-imports.test.ts
|
|
16
|
+
import foo from '.' // filename: /foo/src/rules/existing-file-imports.test.ts
|
|
17
|
+
import foo from './' // filename: /foo/src/rules/existing-file-imports.test.ts
|
|
18
|
+
import foo from '..' // filename: /foo/src/rules/existing-file-imports.test.ts
|
|
19
|
+
import foo from '../' // filename: /foo/src/rules/existing-file-imports.test.ts
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Pass
|
|
23
|
+
|
|
24
|
+
```ts
|
|
25
|
+
import foo from 'foo' // filename: /foo/src/rules/existing-file-imports.test.ts
|
|
26
|
+
import foo from './existing-file-imports.test.ts' // filename: /foo/src/rules/existing-file-imports.test.ts
|
|
27
|
+
```
|
|
28
|
+
<!-- prettier-ignore-end -->
|
|
@@ -8,23 +8,23 @@ Disallow importing from a directory.
|
|
|
8
8
|
### Fail
|
|
9
9
|
|
|
10
10
|
```ts
|
|
11
|
-
import foo from '.' // filename: /foo/src/rules/no-directory-imports.
|
|
12
|
-
import foo from './' // filename: /foo/src/rules/no-directory-imports.
|
|
13
|
-
import foo from '..' // filename: /foo/src/rules/no-directory-imports.
|
|
14
|
-
import foo from '../' // filename: /foo/src/rules/no-directory-imports.
|
|
15
|
-
import foo from '../rules' // filename: /foo/src/rules/no-directory-imports.
|
|
16
|
-
import foo from '../rules/' // filename: /foo/src/rules/no-directory-imports.
|
|
17
|
-
import foo from '../../src' // filename: /foo/src/rules/no-directory-imports.
|
|
18
|
-
import foo from '/foo' // filename: /foo/src/rules/no-directory-imports.
|
|
11
|
+
import foo from '.' // filename: /foo/src/rules/no-directory-imports.test.ts
|
|
12
|
+
import foo from './' // filename: /foo/src/rules/no-directory-imports.test.ts
|
|
13
|
+
import foo from '..' // filename: /foo/src/rules/no-directory-imports.test.ts
|
|
14
|
+
import foo from '../' // filename: /foo/src/rules/no-directory-imports.test.ts
|
|
15
|
+
import foo from '../rules' // filename: /foo/src/rules/no-directory-imports.test.ts
|
|
16
|
+
import foo from '../rules/' // filename: /foo/src/rules/no-directory-imports.test.ts
|
|
17
|
+
import foo from '../../src' // filename: /foo/src/rules/no-directory-imports.test.ts
|
|
18
|
+
import foo from '/foo' // filename: /foo/src/rules/no-directory-imports.test.ts
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
### Pass
|
|
22
22
|
|
|
23
23
|
```ts
|
|
24
|
-
import foo from 'foo' // filename: /foo/src/rules/no-directory-imports.
|
|
25
|
-
import foo from './foo' // filename: /foo/src/rules/no-directory-imports.
|
|
26
|
-
import foo from '/foo/index.js' // filename: /foo/src/rules/no-directory-imports.
|
|
27
|
-
import foo from '/foo/index.ts' // filename: /foo/src/rules/no-directory-imports.
|
|
28
|
-
import foo from '/foo/package.json' // filename: /foo/src/rules/no-directory-imports.
|
|
24
|
+
import foo from 'foo' // filename: /foo/src/rules/no-directory-imports.test.ts
|
|
25
|
+
import foo from './foo' // filename: /foo/src/rules/no-directory-imports.test.ts
|
|
26
|
+
import foo from '/foo/index.js' // filename: /foo/src/rules/no-directory-imports.test.ts
|
|
27
|
+
import foo from '/foo/index.ts' // filename: /foo/src/rules/no-directory-imports.test.ts
|
|
28
|
+
import foo from '/foo/package.json' // filename: /foo/src/rules/no-directory-imports.test.ts
|
|
29
29
|
```
|
|
30
30
|
<!-- prettier-ignore-end -->
|
|
@@ -8,29 +8,29 @@ Disallow to import module from a git-ignored path.
|
|
|
8
8
|
### Fail
|
|
9
9
|
|
|
10
10
|
```ts
|
|
11
|
-
import foo from './dist/foo' // filename: /foo/src/rules/no-git-ignored-imports.
|
|
12
|
-
import './dist/foo' // filename: /foo/src/rules/no-git-ignored-imports.
|
|
13
|
-
import('./dist/foo') // filename: /foo/src/rules/no-git-ignored-imports.
|
|
14
|
-
export * from './dist/foo' // filename: /foo/src/rules/no-git-ignored-imports.
|
|
15
|
-
export {name} from './dist/foo' // filename: /foo/src/rules/no-git-ignored-imports.
|
|
16
|
-
import foo from '../dist/index.js' // filename: /foo/src/rules/no-git-ignored-imports.
|
|
17
|
-
import foo from '../../node_modules/foo/bar.js' // filename: /foo/src/rules/no-git-ignored-imports.
|
|
18
|
-
import foo from '/foo/tmp' // filename: /foo/src/rules/no-git-ignored-imports.
|
|
19
|
-
import foo from '/foo/tmp' // filename: /foo/src/rules/no-git-ignored-imports.
|
|
20
|
-
import foo from '../../test/for-test' // filename: /foo/src/rules/no-git-ignored-imports.
|
|
21
|
-
import foo from '../../../../../for-test' // filename: /foo/src/rules/no-git-ignored-imports.
|
|
11
|
+
import foo from './dist/foo' // filename: /foo/src/rules/no-git-ignored-imports.test.ts
|
|
12
|
+
import './dist/foo' // filename: /foo/src/rules/no-git-ignored-imports.test.ts
|
|
13
|
+
import('./dist/foo') // filename: /foo/src/rules/no-git-ignored-imports.test.ts
|
|
14
|
+
export * from './dist/foo' // filename: /foo/src/rules/no-git-ignored-imports.test.ts
|
|
15
|
+
export {name} from './dist/foo' // filename: /foo/src/rules/no-git-ignored-imports.test.ts
|
|
16
|
+
import foo from '../dist/index.js' // filename: /foo/src/rules/no-git-ignored-imports.test.ts
|
|
17
|
+
import foo from '../../node_modules/foo/bar.js' // filename: /foo/src/rules/no-git-ignored-imports.test.ts
|
|
18
|
+
import foo from '/foo/tmp' // filename: /foo/src/rules/no-git-ignored-imports.test.ts
|
|
19
|
+
import foo from '/foo/tmp' // filename: /foo/src/rules/no-git-ignored-imports.test.ts
|
|
20
|
+
import foo from '../../test/for-test' // filename: /foo/src/rules/no-git-ignored-imports.test.ts
|
|
21
|
+
import foo from '../../../../../for-test' // filename: /foo/src/rules/no-git-ignored-imports.test.ts
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
### Pass
|
|
25
25
|
|
|
26
26
|
```ts
|
|
27
|
-
import foo from 'foo' // filename: /foo/src/rules/no-git-ignored-imports.
|
|
28
|
-
import 'foo' // filename: /foo/src/rules/no-git-ignored-imports.
|
|
29
|
-
require('foo') // filename: /foo/src/rules/no-git-ignored-imports.
|
|
30
|
-
import('foo') // filename: /foo/src/rules/no-git-ignored-imports.
|
|
31
|
-
export * from 'foo' // filename: /foo/src/rules/no-git-ignored-imports.
|
|
32
|
-
export {name} from 'foo' // filename: /foo/src/rules/no-git-ignored-imports.
|
|
33
|
-
import foo from '.foo' // filename: /foo/src/rules/no-git-ignored-imports.
|
|
34
|
-
import foo from '../../../../for-test' // filename: /foo/src/rules/no-git-ignored-imports.
|
|
27
|
+
import foo from 'foo' // filename: /foo/src/rules/no-git-ignored-imports.test.ts
|
|
28
|
+
import 'foo' // filename: /foo/src/rules/no-git-ignored-imports.test.ts
|
|
29
|
+
require('foo') // filename: /foo/src/rules/no-git-ignored-imports.test.ts
|
|
30
|
+
import('foo') // filename: /foo/src/rules/no-git-ignored-imports.test.ts
|
|
31
|
+
export * from 'foo' // filename: /foo/src/rules/no-git-ignored-imports.test.ts
|
|
32
|
+
export {name} from 'foo' // filename: /foo/src/rules/no-git-ignored-imports.test.ts
|
|
33
|
+
import foo from '.foo' // filename: /foo/src/rules/no-git-ignored-imports.test.ts
|
|
34
|
+
import foo from '../../../../for-test' // filename: /foo/src/rules/no-git-ignored-imports.test.ts
|
|
35
35
|
```
|
|
36
36
|
<!-- prettier-ignore-end -->
|
|
@@ -15,6 +15,9 @@ import {} from './foo'
|
|
|
15
15
|
import './reflect-metadata'
|
|
16
16
|
import './foo.module.css'
|
|
17
17
|
import 'foo.module.css'
|
|
18
|
+
import 'foo.css'
|
|
19
|
+
import './foo.css'
|
|
20
|
+
import 'module.css'
|
|
18
21
|
```
|
|
19
22
|
|
|
20
23
|
### Pass
|
|
@@ -22,9 +25,6 @@ import 'foo.module.css'
|
|
|
22
25
|
```ts
|
|
23
26
|
import 'reflect-metadata'
|
|
24
27
|
import {} from 'reflect-metadata'
|
|
25
|
-
import 'foo.css'
|
|
26
|
-
import './foo.css'
|
|
27
|
-
import 'module.css'
|
|
28
28
|
import {foo} from 'foo'
|
|
29
29
|
```
|
|
30
30
|
<!-- prettier-ignore-end -->
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eslint-plugin-esm",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "ESLint plugin for linting ESM (import/export syntax)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"eslint",
|
|
@@ -25,15 +25,17 @@
|
|
|
25
25
|
"type": "module",
|
|
26
26
|
"exports": "./dist/index.js",
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@types/eslint": "8.56.11",
|
|
29
28
|
"@types/estree": "1.0.6",
|
|
30
29
|
"@types/json-schema": "7.0.15",
|
|
31
|
-
"@types/node": "22.10
|
|
32
|
-
"
|
|
30
|
+
"@types/node": "22.13.10",
|
|
31
|
+
"eslint": "9.22.0",
|
|
33
32
|
"@fenge/dev-utils": "0.0.0"
|
|
34
33
|
},
|
|
34
|
+
"engines": {
|
|
35
|
+
"node": ">=18.0.0"
|
|
36
|
+
},
|
|
35
37
|
"scripts": {
|
|
36
38
|
"build": "tsc",
|
|
37
|
-
"test": "node --test --
|
|
39
|
+
"test": "node --test --experimental-strip-types"
|
|
38
40
|
}
|
|
39
41
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import { existingFileImports } from "./rules/existing-file-imports.ts";
|
|
1
2
|
import { noDeclarationFileImports } from "./rules/no-declaration-file-imports.ts";
|
|
2
3
|
import { noDirectoryImports } from "./rules/no-directory-imports.ts";
|
|
3
4
|
import { noDynamicImports } from "./rules/no-dynamic-imports.ts";
|
|
4
5
|
import { noEmptyExports } from "./rules/no-empty-exports.ts";
|
|
5
6
|
import { noGitIgnoredImports } from "./rules/no-git-ignored-imports.ts";
|
|
6
|
-
import { noInexistentRelativeImports } from "./rules/no-inexistent-relative-imports.ts";
|
|
7
7
|
import { noPhantomDepImports } from "./rules/no-phantom-dep-imports.ts";
|
|
8
8
|
import { noRelativeParentImports } from "./rules/no-relative-parent-imports.ts";
|
|
9
9
|
import { noRenameExports } from "./rules/no-rename-exports.ts";
|
|
@@ -13,12 +13,12 @@ import { noUselessPathSegments } from "./rules/no-useless-path-segments.ts";
|
|
|
13
13
|
import { requiredExports } from "./rules/required-exports.ts";
|
|
14
14
|
|
|
15
15
|
export const rules = {
|
|
16
|
+
[existingFileImports.name]: existingFileImports.rule,
|
|
16
17
|
[noDeclarationFileImports.name]: noDeclarationFileImports.rule,
|
|
17
18
|
[noDirectoryImports.name]: noDirectoryImports.rule,
|
|
18
19
|
[noDynamicImports.name]: noDynamicImports.rule,
|
|
19
20
|
[noEmptyExports.name]: noEmptyExports.rule,
|
|
20
21
|
[noGitIgnoredImports.name]: noGitIgnoredImports.rule,
|
|
21
|
-
[noInexistentRelativeImports.name]: noInexistentRelativeImports.rule,
|
|
22
22
|
[noPhantomDepImports.name]: noPhantomDepImports.rule,
|
|
23
23
|
[noRelativeParentImports.name]: noRelativeParentImports.rule,
|
|
24
24
|
[noRenameExports.name]: noRenameExports.rule,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { fileURLToPath } from "node:url";
|
|
2
2
|
import { test } from "@fenge/dev-utils";
|
|
3
|
-
import {
|
|
3
|
+
import { existingFileImports } from "./existing-file-imports.ts";
|
|
4
4
|
|
|
5
5
|
const filename = fileURLToPath(import.meta.url);
|
|
6
6
|
|
|
@@ -8,20 +8,21 @@ const valid = [
|
|
|
8
8
|
"import foo from 'foo'",
|
|
9
9
|
|
|
10
10
|
// with ext
|
|
11
|
-
"import foo from './
|
|
12
|
-
"import foo from '../rules'",
|
|
13
|
-
"import foo from '.'",
|
|
14
|
-
"import foo from './'",
|
|
15
|
-
"import foo from '..'",
|
|
16
|
-
"import foo from '../'",
|
|
11
|
+
"import foo from './existing-file-imports.test.ts'",
|
|
17
12
|
].map((code) => ({ code, filename }));
|
|
18
13
|
|
|
19
14
|
const invalid = [
|
|
20
|
-
"import foo from './
|
|
15
|
+
"import foo from './existing-file-imports.test.js'",
|
|
21
16
|
// without ext
|
|
22
|
-
"import foo from './
|
|
17
|
+
"import foo from './existing-file-imports.test'",
|
|
23
18
|
"import foo from './inexistent-file'",
|
|
24
19
|
"import foo from '../inexistent-file'",
|
|
20
|
+
// directory
|
|
21
|
+
"import foo from '../rules'",
|
|
22
|
+
"import foo from '.'",
|
|
23
|
+
"import foo from './'",
|
|
24
|
+
"import foo from '..'",
|
|
25
|
+
"import foo from '../'",
|
|
25
26
|
].map((code) => ({ code, filename }));
|
|
26
27
|
|
|
27
|
-
test({ valid, invalid, ...
|
|
28
|
+
test({ valid, invalid, ...existingFileImports });
|
|
@@ -3,24 +3,22 @@ import path from "node:path";
|
|
|
3
3
|
import { create, createRule, getRuleName, getSourceType } from "../common.ts";
|
|
4
4
|
import { memoize } from "../utils.ts";
|
|
5
5
|
|
|
6
|
-
export const
|
|
6
|
+
export const existingFileImports = createRule({
|
|
7
7
|
name: getRuleName(import.meta.url),
|
|
8
|
-
message: "
|
|
8
|
+
message: "Only allow importing from an existing local file.",
|
|
9
9
|
create: (context) => create(context, check),
|
|
10
10
|
});
|
|
11
11
|
|
|
12
12
|
function check(filename: string, source: string) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return !isExisting(path.resolve(path.dirname(filename), source));
|
|
13
|
+
return getSourceType(source) === "local"
|
|
14
|
+
? !isExisting(path.resolve(path.dirname(filename), source))
|
|
15
|
+
: false;
|
|
17
16
|
}
|
|
18
17
|
|
|
19
|
-
// TODO: Directory should be reported. Remove `|| stat.isDirectory()` later.
|
|
20
18
|
const isExisting = memoize((filepath: string): boolean => {
|
|
21
19
|
try {
|
|
22
20
|
const stat = fs.statSync(filepath);
|
|
23
|
-
return stat.isFile()
|
|
21
|
+
return stat.isFile();
|
|
24
22
|
} catch {
|
|
25
23
|
return false;
|
|
26
24
|
}
|
|
@@ -34,7 +34,12 @@ const isIgnored = memoize((filePath: string) => {
|
|
|
34
34
|
try {
|
|
35
35
|
return (
|
|
36
36
|
childProcess
|
|
37
|
-
|
|
37
|
+
// Adding `stdio: 'pipe'` to depress unexpected error messages in console.
|
|
38
|
+
// For example, `git check-ignore /absolute/path/to/file` (even wrapped with try-catch) will print something unnecessary.
|
|
39
|
+
.execSync(`git check-ignore ${filePath}`, {
|
|
40
|
+
encoding: "utf8",
|
|
41
|
+
stdio: "pipe",
|
|
42
|
+
})
|
|
38
43
|
.trim() === filePath
|
|
39
44
|
);
|
|
40
45
|
} catch (e) {
|
|
@@ -57,9 +57,15 @@ export const noPhantomDepImports = createRule({
|
|
|
57
57
|
],
|
|
58
58
|
create: (context) =>
|
|
59
59
|
create(context, (filename, source, node) => {
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
const option = context.options[0];
|
|
61
|
+
// default false
|
|
62
|
+
const allowDevDependencies: boolean =
|
|
63
|
+
(typeof option === "object" &&
|
|
64
|
+
option &&
|
|
65
|
+
"allowDevDependencies" in option &&
|
|
66
|
+
typeof option.allowDevDependencies === "boolean" &&
|
|
67
|
+
option.allowDevDependencies) ??
|
|
68
|
+
false;
|
|
63
69
|
|
|
64
70
|
// ignore `import {foo} from './'`
|
|
65
71
|
// check `import {foo} from 'node:foo'` and `import {foo} from 'foo'`
|
|
@@ -4,9 +4,6 @@ import { noSideEffectImports } from "./no-side-effect-imports.ts";
|
|
|
4
4
|
const valid = [
|
|
5
5
|
"import 'reflect-metadata'",
|
|
6
6
|
"import {} from 'reflect-metadata'",
|
|
7
|
-
"import 'foo.css'",
|
|
8
|
-
"import './foo.css'",
|
|
9
|
-
"import 'module.css'",
|
|
10
7
|
"import {foo} from 'foo'",
|
|
11
8
|
];
|
|
12
9
|
|
|
@@ -18,6 +15,10 @@ const invalid = [
|
|
|
18
15
|
"import './reflect-metadata'",
|
|
19
16
|
"import './foo.module.css'",
|
|
20
17
|
"import 'foo.module.css'",
|
|
18
|
+
|
|
19
|
+
"import 'foo.css'",
|
|
20
|
+
"import './foo.css'",
|
|
21
|
+
"import 'module.css'",
|
|
21
22
|
];
|
|
22
23
|
|
|
23
24
|
test({ valid, invalid, ...noSideEffectImports });
|
|
@@ -4,14 +4,14 @@ import { createRule, DEFAULT_MESSAGE_ID, getRuleName } from "../common.ts";
|
|
|
4
4
|
const ignores = [
|
|
5
5
|
"^reflect-metadata$",
|
|
6
6
|
// https://github.com/vitejs/vite/blob/main/packages/vite/client.d.ts
|
|
7
|
-
"(?<!\\.module)\\.css$",
|
|
8
|
-
"(?<!\\.module)\\.scss$",
|
|
9
|
-
"(?<!\\.module)\\.sass$",
|
|
10
|
-
"(?<!\\.module)\\.less$",
|
|
11
|
-
"(?<!\\.module)\\.styl$",
|
|
12
|
-
"(?<!\\.module)\\.stylus$",
|
|
13
|
-
"(?<!\\.module)\\.pcss$",
|
|
14
|
-
"(?<!\\.module)\\.sss$",
|
|
7
|
+
// "(?<!\\.module)\\.css$",
|
|
8
|
+
// "(?<!\\.module)\\.scss$",
|
|
9
|
+
// "(?<!\\.module)\\.sass$",
|
|
10
|
+
// "(?<!\\.module)\\.less$",
|
|
11
|
+
// "(?<!\\.module)\\.styl$",
|
|
12
|
+
// "(?<!\\.module)\\.stylus$",
|
|
13
|
+
// "(?<!\\.module)\\.pcss$",
|
|
14
|
+
// "(?<!\\.module)\\.sss$",
|
|
15
15
|
];
|
|
16
16
|
|
|
17
17
|
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import
|
package/tsconfig.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"no-inexistent-relative-imports.d.ts","sourceRoot":"","sources":["../../src/rules/no-inexistent-relative-imports.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,2BAA2B;;;CAItC,CAAC"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { create, createRule, getRuleName, getSourceType } from "../common.js";
|
|
4
|
-
import { memoize } from "../utils.js";
|
|
5
|
-
export const noInexistentRelativeImports = createRule({
|
|
6
|
-
name: getRuleName(import.meta.url),
|
|
7
|
-
message: "Disallow importing from a relative file which is inexistent.",
|
|
8
|
-
create: (context) => create(context, check),
|
|
9
|
-
});
|
|
10
|
-
function check(filename, source) {
|
|
11
|
-
if (getSourceType(source) !== "local") {
|
|
12
|
-
return false;
|
|
13
|
-
}
|
|
14
|
-
return !isExisting(path.resolve(path.dirname(filename), source));
|
|
15
|
-
}
|
|
16
|
-
// TODO: Directory should be reported. Remove `|| stat.isDirectory()` later.
|
|
17
|
-
const isExisting = memoize((filepath) => {
|
|
18
|
-
try {
|
|
19
|
-
const stat = fs.statSync(filepath);
|
|
20
|
-
return stat.isFile() || stat.isDirectory();
|
|
21
|
-
}
|
|
22
|
-
catch {
|
|
23
|
-
return false;
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8taW5leGlzdGVudC1yZWxhdGl2ZS1pbXBvcnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3J1bGVzL25vLWluZXhpc3RlbnQtcmVsYXRpdmUtaW1wb3J0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDekIsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV0QyxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxVQUFVLENBQUM7SUFDcEQsSUFBSSxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQyxPQUFPLEVBQUUsOERBQThEO0lBQ3ZFLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUM7Q0FDNUMsQ0FBQyxDQUFDO0FBRUgsU0FBUyxLQUFLLENBQUMsUUFBZ0IsRUFBRSxNQUFjO0lBQzdDLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLE9BQU8sRUFBRSxDQUFDO1FBQ3RDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDbkUsQ0FBQztBQUVELDRFQUE0RTtBQUM1RSxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsQ0FBQyxRQUFnQixFQUFXLEVBQUU7SUFDdkQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBjcmVhdGUsIGNyZWF0ZVJ1bGUsIGdldFJ1bGVOYW1lLCBnZXRTb3VyY2VUeXBlIH0gZnJvbSBcIi4uL2NvbW1vbi50c1wiO1xuaW1wb3J0IHsgbWVtb2l6ZSB9IGZyb20gXCIuLi91dGlscy50c1wiO1xuXG5leHBvcnQgY29uc3Qgbm9JbmV4aXN0ZW50UmVsYXRpdmVJbXBvcnRzID0gY3JlYXRlUnVsZSh7XG4gIG5hbWU6IGdldFJ1bGVOYW1lKGltcG9ydC5tZXRhLnVybCksXG4gIG1lc3NhZ2U6IFwiRGlzYWxsb3cgaW1wb3J0aW5nIGZyb20gYSByZWxhdGl2ZSBmaWxlIHdoaWNoIGlzIGluZXhpc3RlbnQuXCIsXG4gIGNyZWF0ZTogKGNvbnRleHQpID0+IGNyZWF0ZShjb250ZXh0LCBjaGVjayksXG59KTtcblxuZnVuY3Rpb24gY2hlY2soZmlsZW5hbWU6IHN0cmluZywgc291cmNlOiBzdHJpbmcpIHtcbiAgaWYgKGdldFNvdXJjZVR5cGUoc291cmNlKSAhPT0gXCJsb2NhbFwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiAhaXNFeGlzdGluZyhwYXRoLnJlc29sdmUocGF0aC5kaXJuYW1lKGZpbGVuYW1lKSwgc291cmNlKSk7XG59XG5cbi8vIFRPRE86IERpcmVjdG9yeSBzaG91bGQgYmUgcmVwb3J0ZWQuIFJlbW92ZSBgfHwgc3RhdC5pc0RpcmVjdG9yeSgpYCBsYXRlci5cbmNvbnN0IGlzRXhpc3RpbmcgPSBtZW1vaXplKChmaWxlcGF0aDogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc3RhdCA9IGZzLnN0YXRTeW5jKGZpbGVwYXRoKTtcbiAgICByZXR1cm4gc3RhdC5pc0ZpbGUoKSB8fCBzdGF0LmlzRGlyZWN0b3J5KCk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufSk7XG4iXX0=
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
<!-- prettier-ignore-start -->
|
|
2
|
-
# no-inexistent-relative-imports
|
|
3
|
-
|
|
4
|
-
Disallow importing from a relative file which is inexistent.
|
|
5
|
-
|
|
6
|
-
## Rule Details
|
|
7
|
-
|
|
8
|
-
### Fail
|
|
9
|
-
|
|
10
|
-
```ts
|
|
11
|
-
import foo from './no-inexistent-relative-imports.spec.js' // filename: /foo/src/rules/no-inexistent-relative-imports.spec.ts
|
|
12
|
-
import foo from './no-inexistent-relative-imports.spec' // filename: /foo/src/rules/no-inexistent-relative-imports.spec.ts
|
|
13
|
-
import foo from './inexistent-file' // filename: /foo/src/rules/no-inexistent-relative-imports.spec.ts
|
|
14
|
-
import foo from '../inexistent-file' // filename: /foo/src/rules/no-inexistent-relative-imports.spec.ts
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
### Pass
|
|
18
|
-
|
|
19
|
-
```ts
|
|
20
|
-
import foo from 'foo' // filename: /foo/src/rules/no-inexistent-relative-imports.spec.ts
|
|
21
|
-
import foo from './no-inexistent-relative-imports.spec.ts' // filename: /foo/src/rules/no-inexistent-relative-imports.spec.ts
|
|
22
|
-
import foo from '../rules' // filename: /foo/src/rules/no-inexistent-relative-imports.spec.ts
|
|
23
|
-
import foo from '.' // filename: /foo/src/rules/no-inexistent-relative-imports.spec.ts
|
|
24
|
-
import foo from './' // filename: /foo/src/rules/no-inexistent-relative-imports.spec.ts
|
|
25
|
-
import foo from '..' // filename: /foo/src/rules/no-inexistent-relative-imports.spec.ts
|
|
26
|
-
import foo from '../' // filename: /foo/src/rules/no-inexistent-relative-imports.spec.ts
|
|
27
|
-
```
|
|
28
|
-
<!-- prettier-ignore-end -->
|
/package/src/rules/{no-declaration-file-imports.spec.ts → no-declaration-file-imports.test.ts}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/src/rules/{no-relative-parent-imports.spec.ts → no-relative-parent-imports.test.ts}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|