eslint-plugin-esm 0.2.1 → 0.2.2-beta.1
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 +12 -0
- package/dist/rules/no-directory-imports.js +2 -2
- package/dist/rules/no-phantom-dep-imports.d.ts.map +1 -1
- package/dist/rules/no-phantom-dep-imports.js +9 -7
- package/dist/rules/no-relative-parent-imports.js +2 -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 +8 -8
- package/src/rules/no-directory-imports.ts +1 -1
- package/src/rules/no-phantom-dep-imports.ts +10 -8
- package/src/rules/no-relative-parent-imports.ts +1 -1
- package/src/utils.ts +7 -4
- package/tsconfig.json +3 -1
- package/tsconfig.build.json +0 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# eslint-plugin-esm
|
|
2
2
|
|
|
3
|
+
## 0.2.2-beta.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 0d0f18c: chore: refresh pkg, no changes
|
|
8
|
+
|
|
9
|
+
## 0.2.2-beta.0
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 0c4462d: fix(eslint-plugin-esm): fix incorrect report on `import type {} from "@foo/bar"`
|
|
14
|
+
|
|
3
15
|
## 0.2.1
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
|
@@ -24,8 +24,8 @@ const isDir = memoize((filePath) => {
|
|
|
24
24
|
try {
|
|
25
25
|
return fs.statSync(filePath).isDirectory();
|
|
26
26
|
}
|
|
27
|
-
catch
|
|
27
|
+
catch {
|
|
28
28
|
return false;
|
|
29
29
|
}
|
|
30
30
|
});
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tZGlyZWN0b3J5LWltcG9ydHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVsZXMvbm8tZGlyZWN0b3J5LWltcG9ydHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3pCLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdEMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsVUFBVSxDQUFDO0lBQzNDLElBQUksRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEMsT0FBTyxFQUFFLHNDQUFzQztJQUMvQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDO0NBQzVDLENBQUMsQ0FBQztBQUVILFNBQVMsS0FBSyxDQUFDLFFBQWdCLEVBQUUsTUFBYztJQUM3QyxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUN0QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2xELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsRSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQ2IsMERBQTBELFlBQVksR0FBRyxDQUMxRSxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQyxRQUFnQixFQUFFLEVBQUU7SUFDekMsSUFBSSxDQUFDO1FBQ0gsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7QUFDSCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgY3JlYXRlLCBjcmVhdGVSdWxlLCBnZXRSdWxlTmFtZSwgZ2V0U291cmNlVHlwZSB9IGZyb20gXCIuLi9jb21tb24uanNcIjtcbmltcG9ydCB7IG1lbW9pemUgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcblxuZXhwb3J0IGNvbnN0IG5vRGlyZWN0b3J5SW1wb3J0cyA9IGNyZWF0ZVJ1bGUoe1xuICBuYW1lOiBnZXRSdWxlTmFtZShpbXBvcnQubWV0YS51cmwpLFxuICBtZXNzYWdlOiBcIkRpc2FsbG93IGltcG9ydGluZyBmcm9tIGEgZGlyZWN0b3J5LlwiLFxuICBjcmVhdGU6IChjb250ZXh0KSA9PiBjcmVhdGUoY29udGV4dCwgY2hlY2spLFxufSk7XG5cbmZ1bmN0aW9uIGNoZWNrKGZpbGVuYW1lOiBzdHJpbmcsIHNvdXJjZTogc3RyaW5nKSB7XG4gIGlmIChnZXRTb3VyY2VUeXBlKHNvdXJjZSkgIT09IFwibG9jYWxcIikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoc291cmNlLmVuZHNXaXRoKFwiLlwiKSB8fCBzb3VyY2UuZW5kc1dpdGgoXCIuL1wiKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGNvbnN0IGFic29sdXRlUGF0aCA9IHBhdGgucmVzb2x2ZShwYXRoLmRpcm5hbWUoZmlsZW5hbWUpLCBzb3VyY2UpO1xuICBpZiAoIWFic29sdXRlUGF0aC5zdGFydHNXaXRoKFwiL1wiKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBFU0xpbnQgcGx1Z2luIGludGVybmFsIGVycm9yLiBBYnNvbHV0ZSBwYXRoIGluY29ycmVjdDogJHthYnNvbHV0ZVBhdGh9LmAsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gaXNEaXIoYWJzb2x1dGVQYXRoKTtcbn1cblxuY29uc3QgaXNEaXIgPSBtZW1vaXplKChmaWxlUGF0aDogc3RyaW5nKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGZzLnN0YXRTeW5jKGZpbGVQYXRoKS5pc0RpcmVjdG9yeSgpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn0pO1xuIl19
|
|
@@ -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;;;CAiE9B,CAAC"}
|
|
@@ -9,7 +9,7 @@ function isFile(filePath) {
|
|
|
9
9
|
try {
|
|
10
10
|
return fs.statSync(filePath).isFile();
|
|
11
11
|
}
|
|
12
|
-
catch
|
|
12
|
+
catch {
|
|
13
13
|
return false;
|
|
14
14
|
}
|
|
15
15
|
}
|
|
@@ -77,15 +77,17 @@ export const noPhantomDepImports = createRule({
|
|
|
77
77
|
const isInDep = moduleName in dep || moduleName in peerDep;
|
|
78
78
|
const isInDev = moduleName in devDep;
|
|
79
79
|
if ("importKind" in node && node.importKind === "type") {
|
|
80
|
-
|
|
81
|
-
?
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
80
|
+
const typeDepName = moduleName.startsWith("@")
|
|
81
|
+
? `@types/${moduleName.slice(1).replace("/", "__")}`
|
|
82
|
+
: `@types/${moduleName}`;
|
|
83
|
+
return !(isInDep ||
|
|
84
|
+
isInDev ||
|
|
85
|
+
typeDepName in dep ||
|
|
86
|
+
typeDepName in devDep);
|
|
85
87
|
}
|
|
86
88
|
else {
|
|
87
89
|
return allowDevDependencies ? !(isInDep || isInDev) : !isInDep;
|
|
88
90
|
}
|
|
89
91
|
}),
|
|
90
92
|
});
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tcGhhbnRvbS1kZXAtaW1wb3J0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1waGFudG9tLWRlcC1pbXBvcnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QixPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFDN0IsT0FBTyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUUsU0FBUyxRQUFRLENBQUMsS0FBYztJQUM5QixPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDO0FBQ3JELENBQUM7QUFFRCxTQUFTLE1BQU0sQ0FBQyxRQUFnQjtJQUM5QixJQUFJLENBQUM7UUFDSCxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBeUQsQ0FBQyxDQUFDLG9DQUFvQztBQUNwSCxTQUFTLFVBQVUsQ0FDakIsR0FBVztJQUVYLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ25CLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDbkQsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUN4QixNQUFNLE9BQU8sR0FBWSxJQUFJLENBQUMsS0FBSyxDQUFD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Q0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDeEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWIsTUFBTSxPQUFPLEdBQUcsVUFBVSxJQUFJLEdBQUcsSUFBSSxVQUFVLElBQUksT0FBTyxDQUFDO1FBQzNELE1BQU0sT0FBTyxHQUFHLFVBQVUsSUFBSSxNQUFNLENBQUM7UUFDckMsSUFBSSxZQUFZLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDdkQsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7Z0JBQzVDLENBQUMsQ0FBQyxVQUFVLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDcEQsQ0FBQyxDQUFDLFVBQVUsVUFBVSxFQUFFLENBQUM7WUFDM0IsT0FBTyxDQUFDLENBQ04sT0FBTztnQkFDUCxPQUFPO2dCQUNQLFdBQVcsSUFBSSxHQUFHO2dCQUNsQixXQUFXLElBQUksTUFBTSxDQUN0QixDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUNqRSxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0NBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgcHJvY2VzcyBmcm9tIFwibm9kZTpwcm9jZXNzXCI7XG5pbXBvcnQgeyBjcmVhdGUsIGNyZWF0ZVJ1bGUsIGdldFJ1bGVOYW1lLCBnZXRTb3VyY2VUeXBlIH0gZnJvbSBcIi4uL2NvbW1vbi5qc1wiO1xuXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZTogdW5rbm93bikge1xuICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiO1xufVxuXG5mdW5jdGlvbiBpc0ZpbGUoZmlsZVBhdGg6IHN0cmluZykge1xuICB0cnkge1xuICAgIHJldHVybiBmcy5zdGF0U3luYyhmaWxlUGF0aCkuaXNGaWxlKCk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5jb25zdCBjYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCB7IHBhdGg6IHN0cmluZzsgY29udGVudDogb2JqZWN0IH0gfCB1bmRlZmluZWQ+KCk7IC8vIGtleSBpcyBkaXIsIHZhbHVlIGlzIHBhY2thZ2UuanNvblxuZnVuY3Rpb24gZ2V0UGtnSnNvbihcbiAgZGlyOiBzdHJpbmcsXG4pOiB7IHBhdGg6IHN0cmluZzsgY29udGVudDogb2JqZWN0IH0gfCB1bmRlZmluZWQge1xuICBpZiAoY2FjaGUuaGFzKGRpcikpIHtcbiAgICByZXR1cm4gY2FjaGUuZ2V0KGRpcik7XG4gIH1cbiAgY29uc3QgcGtnSnNvblBhdGggPSBwYXRoLmpvaW4oZGlyLCBcInBhY2thZ2UuanNvblwiKTtcbiAgaWYgKGlzRmlsZShwa2dKc29uUGF0aCkpIHtcbiAgICBjb25zdCBjb250ZW50OiB1bmtub3duID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMocGtnSnNvblBhdGgsIFwidXRmOFwiKSk7XG4gICAgY29uc3QgcmVzdWx0ID0gaXNPYmplY3QoY29udGVudClcbiAgICAgID8geyBwYXRoOiBwa2dKc29uUGF0aCwgY29udGVudCB9XG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICBjYWNoZS5zZXQoZGlyLCByZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBpZiBpdCBpcyBhIGRpcmVjdG9yeVxuICBpZiAoZGlyID09PSBwcm9jZXNzLmN3ZCgpIHx8IGRpciA9PT0gXCIvXCIpIHtcbiAgICAvLyBzdG9wIGhlcmVcbiAgICBjYWNoZS5zZXQoZGlyLCB1bmRlZmluZWQpO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gZ2V0UGtnSnNvbihwYXRoLmpvaW4oZGlyLCBcIi4uXCIpKTtcbn1cblxuZXhwb3J0IGNvbnN0IG5vUGhhbnRvbURlcEltcG9ydHMgPSBjcmVhdGVSdWxlKHtcbiAgbmFtZTogZ2V0UnVsZU5hbWUoaW1wb3J0Lm1ldGEudXJsKSxcbiAgbWVzc2FnZTpcbiAgICBcIkRpc2FsbG93IGltcG9ydGluZyBmcm9tIGEgbW9kdWxlIHdoaWNoIHRoZSBuZWFyZXN0IGBwYWNrYWdlLmpzb25gIGRvZXNuJ3QgaW5jbHVkZSBpdC5cIixcbiAgc2NoZW1hOiBbXG4gICAge1xuICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgYWxsb3dEZXZEZXBlbmRlbmNpZXM6IHsgdHlwZTogXCJib29sZWFuXCIgfSxcbiAgICAgIH0sXG4gICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgfSxcbiAgXSxcbiAgY3JlYXRlOiAoY29udGV4dCkgPT5cbiAgICBjcmVhdGUoY29udGV4dCwgKGZpbGVuYW1lLCBzb3VyY2UsIG5vZGUpID0+IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYWxsb3dEZXZEZXBlbmRlbmNpZXMgPSBmYWxzZSxcbiAgICAgIH06IHsgYWxsb3dEZXZEZXBlbmRlbmNpZXM6IGJvb2xlYW4gfSA9IGNvbnRleHQub3B0aW9uc1swXSA/PyB7fTtcblxuICAgICAgLy8gaWdub3JlIGBpbXBvcnQge2Zvb30gZnJvbSAnLi8nYCBhbmQgYGltcG9ydCB7Zm9vfSBmcm9tICdub2RlOmZvbydgXG4gICAgICBpZiAoZ2V0U291cmNlVHlwZShzb3VyY2UpICE9PSBcIm1vZHVsZVwiKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBrZ0pzb24gPSBnZXRQa2dKc29uKHBhdGguZGlybmFtZShmaWxlbmFtZSkpO1xuICAgICAgLy8gY2Fubm90IGZpbmQgcGFja2FnZS5qc29uIGZpbGVcbiAgICAgIGlmICghcGtnSnNvbikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRlcCA9XG4gICAgICAgIFwiZGVwZW5kZW5jaWVzXCIgaW4gcGtnSnNvbi5jb250ZW50ICYmXG4gICAgICAgIGlzT2JqZWN0KHBrZ0pzb24uY29udGVudC5kZXBlbmRlbmNpZXMpXG4gICAgICAgICAgPyBwa2dKc29uLmNvbnRlbnQuZGVwZW5kZW5jaWVzXG4gICAgICAgICAgOiB7fTtcbiAgICAgIGNvbnN0IHBlZXJEZXAgPVxuICAgICAgICBcInBlZXJEZXBlbmRlbmNpZXNcIiBpbiBwa2dKc29uLmNvbnRlbnQgJiZcbiAgICAgICAgaXNPYmplY3QocGtnSnNvbi5jb250ZW50LnBlZXJEZXBlbmRlbmNpZXMpXG4gICAgICAgICAgPyBwa2dKc29uLmNvbnRlbnQucGVlckRlcGVuZGVuY2llc1xuICAgICAgICAgIDoge307XG4gICAgICBjb25zdCBkZXZEZXAgPVxuICAgICAgICBcImRldkRlcGVuZGVuY2llc1wiIGluIHBrZ0pzb24uY29udGVudCAmJlxuICAgICAgICBpc09iamVjdChwa2dKc29uLmNvbnRlbnQuZGV2RGVwZW5kZW5jaWVzKVxuICAgICAgICAgID8gcGtnSnNvbi5jb250ZW50LmRldkRlcGVuZGVuY2llc1xuICAgICAgICAgIDoge307XG5cbiAgICAgIGNvbnN0IG1vZHVsZU5hbWUgPSBzb3VyY2VcbiAgICAgICAgLnNwbGl0KFwiL1wiKVxuICAgICAgICAuc2xpY2UoMCwgc291cmNlLnN0YXJ0c1dpdGgoXCJAXCIpID8gMiA6IDEpXG4gICAgICAgIC5qb2luKFwiL1wiKTtcblxuICAgICAgY29uc3QgaXNJbkRlcCA9IG1vZHVsZU5hbWUgaW4gZGVwIHx8IG1vZHVsZU5hbWUgaW4gcGVlckRlcDtcbiAgICAgIGNvbnN0IGlzSW5EZXYgPSBtb2R1bGVOYW1lIGluIGRldkRlcDtcbiAgICAgIGlmIChcImltcG9ydEtpbmRcIiBpbiBub2RlICYmIG5vZGUuaW1wb3J0S2luZCA9PT0gXCJ0eXBlXCIpIHtcbiAgICAgICAgY29uc3QgdHlwZURlcE5hbWUgPSBtb2R1bGVOYW1lLnN0YXJ0c1dpdGgoXCJAXCIpXG4gICAgICAgICAgPyBgQHR5cGVzLyR7bW9kdWxlTmFtZS5zbGljZSgxKS5yZXBsYWNlKFwiL1wiLCBcIl9fXCIpfWBcbiAgICAgICAgICA6IGBAdHlwZXMvJHttb2R1bGVOYW1lfWA7XG4gICAgICAgIHJldHVybiAhKFxuICAgICAgICAgIGlzSW5EZXAgfHxcbiAgICAgICAgICBpc0luRGV2IHx8XG4gICAgICAgICAgdHlwZURlcE5hbWUgaW4gZGVwIHx8XG4gICAgICAgICAgdHlwZURlcE5hbWUgaW4gZGV2RGVwXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYWxsb3dEZXZEZXBlbmRlbmNpZXMgPyAhKGlzSW5EZXAgfHwgaXNJbkRldikgOiAhaXNJbkRlcDtcbiAgICAgIH1cbiAgICB9KSxcbn0pO1xuIl19
|
|
@@ -6,6 +6,6 @@ export const noRelativeParentImports = createRule({
|
|
|
6
6
|
create: (context) => create(context, checkDepth),
|
|
7
7
|
});
|
|
8
8
|
function checkDepth(_filename, source) {
|
|
9
|
-
return new RegExp(`^(\\.\\./){${depth},}`).test(source);
|
|
9
|
+
return new RegExp(`^(\\.\\./){${depth.toString()},}`).test(source);
|
|
10
10
|
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tcmVsYXRpdmUtcGFyZW50LWltcG9ydHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVsZXMvbm8tcmVsYXRpdmUtcGFyZW50LWltcG9ydHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRS9ELE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQztBQUVoQixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxVQUFVLENBQUM7SUFDaEQsSUFBSSxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQyxPQUFPLEVBQUUsbUVBQW1FO0lBQzVFLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUM7Q0FDakQsQ0FBQyxDQUFDO0FBRUgsU0FBUyxVQUFVLENBQUMsU0FBaUIsRUFBRSxNQUFjO0lBQ25ELE9BQU8sSUFBSSxNQUFNLENBQUMsY0FBYyxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNyRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlLCBjcmVhdGVSdWxlLCBnZXRSdWxlTmFtZSB9IGZyb20gXCIuLi9jb21tb24uanNcIjtcblxuY29uc3QgZGVwdGggPSAzO1xuXG5leHBvcnQgY29uc3Qgbm9SZWxhdGl2ZVBhcmVudEltcG9ydHMgPSBjcmVhdGVSdWxlKHtcbiAgbmFtZTogZ2V0UnVsZU5hbWUoaW1wb3J0Lm1ldGEudXJsKSxcbiAgbWVzc2FnZTogXCJEaXNhbGxvdyBpbXBvcnRpbmcgbW9kdWxlIGZyb20gYSByZWxhdGl2ZSBwYXJlbnQgcGF0aCB0b28gZGVlcGx5LlwiLFxuICBjcmVhdGU6IChjb250ZXh0KSA9PiBjcmVhdGUoY29udGV4dCwgY2hlY2tEZXB0aCksXG59KTtcblxuZnVuY3Rpb24gY2hlY2tEZXB0aChfZmlsZW5hbWU6IHN0cmluZywgc291cmNlOiBzdHJpbmcpIHtcbiAgcmV0dXJuIG5ldyBSZWdFeHAoYF4oXFxcXC5cXFxcLi8peyR7ZGVwdGgudG9TdHJpbmcoKX0sfWApLnRlc3Qoc291cmNlKTtcbn1cbiJdfQ==
|
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.1",
|
|
3
|
+
"version": "0.2.2-beta.1",
|
|
4
4
|
"description": "ESLint plugin for linting ESM (import/export syntax)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"eslint",
|
|
@@ -25,17 +25,17 @@
|
|
|
25
25
|
"type": "module",
|
|
26
26
|
"exports": "./dist/index.js",
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@swc-node/register": "1.10.0",
|
|
29
28
|
"@types/eslint": "8.56.11",
|
|
30
29
|
"@types/estree": "1.0.6",
|
|
31
30
|
"@types/json-schema": "7.0.15",
|
|
32
|
-
"@types/node": "22.
|
|
33
|
-
"@typescript-eslint/parser": "
|
|
34
|
-
"eslint": "8.57.
|
|
35
|
-
"outdent": "0.8.0"
|
|
31
|
+
"@types/node": "22.9.1",
|
|
32
|
+
"@typescript-eslint/parser": "8.16.0",
|
|
33
|
+
"eslint": "8.57.1",
|
|
34
|
+
"outdent": "0.8.0",
|
|
35
|
+
"tsx": "4.19.2"
|
|
36
36
|
},
|
|
37
37
|
"scripts": {
|
|
38
|
-
"build": "tsc
|
|
39
|
-
"test": "
|
|
38
|
+
"build": "tsc",
|
|
39
|
+
"test": "node --test --import tsx/esm \"**/*.spec.ts\""
|
|
40
40
|
}
|
|
41
41
|
}
|
|
@@ -10,7 +10,7 @@ function isObject(value: unknown) {
|
|
|
10
10
|
function isFile(filePath: string) {
|
|
11
11
|
try {
|
|
12
12
|
return fs.statSync(filePath).isFile();
|
|
13
|
-
} catch
|
|
13
|
+
} catch {
|
|
14
14
|
return false;
|
|
15
15
|
}
|
|
16
16
|
}
|
|
@@ -94,13 +94,15 @@ export const noPhantomDepImports = createRule({
|
|
|
94
94
|
const isInDep = moduleName in dep || moduleName in peerDep;
|
|
95
95
|
const isInDev = moduleName in devDep;
|
|
96
96
|
if ("importKind" in node && node.importKind === "type") {
|
|
97
|
-
|
|
98
|
-
?
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
97
|
+
const typeDepName = moduleName.startsWith("@")
|
|
98
|
+
? `@types/${moduleName.slice(1).replace("/", "__")}`
|
|
99
|
+
: `@types/${moduleName}`;
|
|
100
|
+
return !(
|
|
101
|
+
isInDep ||
|
|
102
|
+
isInDev ||
|
|
103
|
+
typeDepName in dep ||
|
|
104
|
+
typeDepName in devDep
|
|
105
|
+
);
|
|
104
106
|
} else {
|
|
105
107
|
return allowDevDependencies ? !(isInDep || isInDev) : !isInDep;
|
|
106
108
|
}
|
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);
|
package/tsconfig.json
CHANGED