eslint-plugin-esm 0.2.0 → 0.2.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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # eslint-plugin-esm
2
2
 
3
+ ## 0.2.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 2b04bbd: fix(eslint-plugin-esm): allow module existing in peerDependencies for `no-phantom-dep-imports` rule
8
+
3
9
  ## 0.2.0
4
10
 
5
11
  ### Minor Changes
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # eslint-plugin-esm
2
2
 
3
- [![](https://img.shields.io/npm/l/eslint-plugin-esm.svg)](https://github.com/zanminkian/git-validator/blob/main/LICENSE)
3
+ [![](https://img.shields.io/npm/l/eslint-plugin-esm.svg)](https://github.com/zanminkian/fenge/blob/main/LICENSE)
4
4
  [![](https://img.shields.io/npm/v/eslint-plugin-esm.svg)](https://www.npmjs.com/package/eslint-plugin-esm)
5
5
  [![](https://img.shields.io/npm/dm/eslint-plugin-esm.svg)](https://www.npmjs.com/package/eslint-plugin-esm)
6
6
  [![](https://packagephobia.com/badge?p=eslint-plugin-esm)](https://packagephobia.com/result?p=eslint-plugin-esm)
@@ -8,6 +8,12 @@
8
8
 
9
9
  ESLint plugin for linting ESM (import/export syntax)
10
10
 
11
+ ## Feature
12
+
13
+ - Faster than `eslint-plugin-import`.
14
+ - Easier than `eslint-plugin-import`
15
+ - Zero dependencies.
16
+
11
17
  ## Requirement
12
18
 
13
19
  - ESLint >= 8.57.0
@@ -33,7 +39,7 @@ export default [
33
39
  rules: {
34
40
  "esm/no-git-ignored-imports": "error"
35
41
  ...
36
- // Visit https://github.com/zanminkian/git-validator/tree/main/packages/eslint-plugin-esm/doc/rules for more other rules
42
+ // Visit https://github.com/zanminkian/fenge/tree/main/packages/eslint-plugin-esm/doc/rules for more other rules
37
43
  },
38
44
  },
39
45
  ...
@@ -53,7 +59,7 @@ Config `package.json`
53
59
 
54
60
  ## Rules
55
61
 
56
- Click [here](https://github.com/zanminkian/git-validator/tree/main/packages/eslint-plugin-esm/doc/rules).
62
+ Click [here](https://github.com/zanminkian/fenge/tree/main/packages/eslint-plugin-esm/doc/rules).
57
63
 
58
64
  ## License
59
65
 
@@ -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;;;CA8D9B,CAAC"}
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+D9B,CAAC"}
@@ -49,7 +49,7 @@ export const noPhantomDepImports = createRule({
49
49
  ],
50
50
  create: (context) => create(context, (filename, source, node) => {
51
51
  const { allowDevDependencies = false, } = context.options[0] ?? {};
52
- // ignore `import {foo} from './'`
52
+ // ignore `import {foo} from './'` and `import {foo} from 'node:foo'`
53
53
  if (getSourceType(source) !== "module") {
54
54
  return false;
55
55
  }
@@ -62,6 +62,10 @@ export const noPhantomDepImports = createRule({
62
62
  isObject(pkgJson.content.dependencies)
63
63
  ? pkgJson.content.dependencies
64
64
  : {};
65
+ const peerDep = "peerDependencies" in pkgJson.content &&
66
+ isObject(pkgJson.content.peerDependencies)
67
+ ? pkgJson.content.peerDependencies
68
+ : {};
65
69
  const devDep = "devDependencies" in pkgJson.content &&
66
70
  isObject(pkgJson.content.devDependencies)
67
71
  ? pkgJson.content.devDependencies
@@ -70,20 +74,18 @@ export const noPhantomDepImports = createRule({
70
74
  .split("/")
71
75
  .slice(0, source.startsWith("@") ? 2 : 1)
72
76
  .join("/");
77
+ const isInDep = moduleName in dep || moduleName in peerDep;
78
+ const isInDev = moduleName in devDep;
73
79
  if ("importKind" in node && node.importKind === "type") {
74
80
  return moduleName.startsWith("@") && moduleName.includes("/")
75
- ? !(moduleName in dep ||
76
- moduleName in devDep ||
81
+ ? !(isInDep ||
82
+ isInDev ||
77
83
  `@types/${moduleName.slice(1).replace("/", "_")}` in devDep)
78
- : !(moduleName in dep ||
79
- moduleName in devDep ||
80
- `@types/${moduleName}` in devDep);
84
+ : !(isInDep || isInDev || `@types/${moduleName}` in devDep);
81
85
  }
82
86
  else {
83
- return allowDevDependencies
84
- ? !(moduleName in dep || moduleName in devDep)
85
- : !(moduleName in dep);
87
+ return allowDevDependencies ? !(isInDep || isInDev) : !isInDep;
86
88
  }
87
89
  }),
88
90
  });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tcGhhbnRvbS1kZXAtaW1wb3J0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1waGFudG9tLWRlcC1pbXBvcnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QixPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFDN0IsT0FBTyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUUsU0FBUyxRQUFRLENBQUMsS0FBYztJQUM5QixPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDO0FBQ3JELENBQUM7QUFFRCxTQUFTLE1BQU0sQ0FBQyxRQUFnQjtJQUM5QixJQUFJLENBQUM7UUFDSCxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQXlELENBQUMsQ0FBQyxvQ0FBb0M7QUFDcEgsU0FBUyxVQUFVLENBQ2pCLEdBQVc7SUFFWCxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNuQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUNELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ25ELElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7UUFDeEIsTUFBTSxPQUFPLEdBQVksSUFBSSxDQUFD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QUMsR0FBRyxDQUFDLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7Z0JBQzNELENBQUMsQ0FBQyxDQUFDLENBQ0MsVUFBVSxJQUFJLEdBQUc7b0JBQ2pCLFVBQVUsSUFBSSxNQUFNO29CQUNwQixVQUFVLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FDNUQ7Z0JBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FDQyxVQUFVLElBQUksR0FBRztvQkFDakIsVUFBVSxJQUFJLE1BQU07b0JBQ3BCLFVBQVUsVUFBVSxFQUFFLElBQUksTUFBTSxDQUNqQyxDQUFDO1FBQ1IsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLG9CQUFvQjtnQkFDekIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksR0FBRyxJQUFJLFVBQVUsSUFBSSxNQUFNLENBQUM7Z0JBQzlDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDLENBQUM7Q0FDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCBwcm9jZXNzIGZyb20gXCJub2RlOnByb2Nlc3NcIjtcbmltcG9ydCB7IGNyZWF0ZSwgY3JlYXRlUnVsZSwgZ2V0UnVsZU5hbWUsIGdldFNvdXJjZVR5cGUgfSBmcm9tIFwiLi4vY29tbW9uLmpzXCI7XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlOiB1bmtub3duKSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCI7XG59XG5cbmZ1bmN0aW9uIGlzRmlsZShmaWxlUGF0aDogc3RyaW5nKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGZzLnN0YXRTeW5jKGZpbGVQYXRoKS5pc0ZpbGUoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5jb25zdCBjYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCB7IHBhdGg6IHN0cmluZzsgY29udGVudDogb2JqZWN0IH0gfCB1bmRlZmluZWQ+KCk7IC8vIGtleSBpcyBkaXIsIHZhbHVlIGlzIHBhY2thZ2UuanNvblxuZnVuY3Rpb24gZ2V0UGtnSnNvbihcbiAgZGlyOiBzdHJpbmcsXG4pOiB7IHBhdGg6IHN0cmluZzsgY29udGVudDogb2JqZWN0IH0gfCB1bmRlZmluZWQge1xuICBpZiAoY2FjaGUuaGFzKGRpcikpIHtcbiAgICByZXR1cm4gY2FjaGUuZ2V0KGRpcik7XG4gIH1cbiAgY29uc3QgcGtnSnNvblBhdGggPSBwYXRoLmpvaW4oZGlyLCBcInBhY2thZ2UuanNvblwiKTtcbiAgaWYgKGlzRmlsZShwa2dKc29uUGF0aCkpIHtcbiAgICBjb25zdCBjb250ZW50OiB1bmtub3duID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMocGtnSnNvblBhdGgsIFwidXRmOFwiKSk7XG4gICAgY29uc3QgcmVzdWx0ID0gaXNPYmplY3QoY29udGVudClcbiAgICAgID8geyBwYXRoOiBwa2dKc29uUGF0aCwgY29udGVudCB9XG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICBjYWNoZS5zZXQoZGlyLCByZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBpZiBpdCBpcyBhIGRpcmVjdG9yeVxuICBpZiAoZGlyID09PSBwcm9jZXNzLmN3ZCgpIHx8IGRpciA9PT0gXCIvXCIpIHtcbiAgICAvLyBzdG9wIGhlcmVcbiAgICBjYWNoZS5zZXQoZGlyLCB1bmRlZmluZWQpO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gZ2V0UGtnSnNvbihwYXRoLmpvaW4oZGlyLCBcIi4uXCIpKTtcbn1cblxuZXhwb3J0IGNvbnN0IG5vUGhhbnRvbURlcEltcG9ydHMgPSBjcmVhdGVSdWxlKHtcbiAgbmFtZTogZ2V0UnVsZU5hbWUoaW1wb3J0Lm1ldGEudXJsKSxcbiAgbWVzc2FnZTpcbiAgICBcIkRpc2FsbG93IGltcG9ydGluZyBmcm9tIGEgbW9kdWxlIHdoaWNoIHRoZSBuZWFyZXN0IGBwYWNrYWdlLmpzb25gIGRvZXNuJ3QgaW5jbHVkZSBpdC5cIixcbiAgc2NoZW1hOiBbXG4gICAge1xuICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgYWxsb3dEZXZEZXBlbmRlbmNpZXM6IHsgdHlwZTogXCJib29sZWFuXCIgfSxcbiAgICAgIH0sXG4gICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgfSxcbiAgXSxcbiAgY3JlYXRlOiAoY29udGV4dCkgPT5cbiAgICBjcmVhdGUoY29udGV4dCwgKGZpbGVuYW1lLCBzb3VyY2UsIG5vZGUpID0+IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYWxsb3dEZXZEZXBlbmRlbmNpZXMgPSBmYWxzZSxcbiAgICAgIH06IHsgYWxsb3dEZXZEZXBlbmRlbmNpZXM6IGJvb2xlYW4gfSA9IGNvbnRleHQub3B0aW9uc1swXSA/PyB7fTtcblxuICAgICAgLy8gaWdub3JlIGBpbXBvcnQge2Zvb30gZnJvbSAnLi8nYFxuICAgICAgaWYgKGdldFNvdXJjZVR5cGUoc291cmNlKSAhPT0gXCJtb2R1bGVcIikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBjb25zdCBwa2dKc29uID0gZ2V0UGtnSnNvbihwYXRoLmRpcm5hbWUoZmlsZW5hbWUpKTtcbiAgICAgIC8vIGNhbm5vdCBmaW5kIHBhY2thZ2UuanNvbiBmaWxlXG4gICAgICBpZiAoIXBrZ0pzb24pIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBjb25zdCBkZXAgPVxuICAgICAgICBcImRlcGVuZGVuY2llc1wiIGluIHBrZ0pzb24uY29udGVudCAmJlxuICAgICAgICBpc09iamVjdChwa2dKc29uLmNvbnRlbnQuZGVwZW5kZW5jaWVzKVxuICAgICAgICAgID8gcGtnSnNvbi5jb250ZW50LmRlcGVuZGVuY2llc1xuICAgICAgICAgIDoge307XG4gICAgICBjb25zdCBkZXZEZXAgPVxuICAgICAgICBcImRldkRlcGVuZGVuY2llc1wiIGluIHBrZ0pzb24uY29udGVudCAmJlxuICAgICAgICBpc09iamVjdChwa2dKc29uLmNvbnRlbnQuZGV2RGVwZW5kZW5jaWVzKVxuICAgICAgICAgID8gcGtnSnNvbi5jb250ZW50LmRldkRlcGVuZGVuY2llc1xuICAgICAgICAgIDoge307XG5cbiAgICAgIGNvbnN0IG1vZHVsZU5hbWUgPSBzb3VyY2VcbiAgICAgICAgLnNwbGl0KFwiL1wiKVxuICAgICAgICAuc2xpY2UoMCwgc291cmNlLnN0YXJ0c1dpdGgoXCJAXCIpID8gMiA6IDEpXG4gICAgICAgIC5qb2luKFwiL1wiKTtcblxuICAgICAgaWYgKFwiaW1wb3J0S2luZFwiIGluIG5vZGUgJiYgbm9kZS5pbXBvcnRLaW5kID09PSBcInR5cGVcIikge1xuICAgICAgICByZXR1cm4gbW9kdWxlTmFtZS5zdGFydHNXaXRoKFwiQFwiKSAmJiBtb2R1bGVOYW1lLmluY2x1ZGVzKFwiL1wiKVxuICAgICAgICAgID8gIShcbiAgICAgICAgICAgICAgbW9kdWxlTmFtZSBpbiBkZXAgfHxcbiAgICAgICAgICAgICAgbW9kdWxlTmFtZSBpbiBkZXZEZXAgfHxcbiAgICAgICAgICAgICAgYEB0eXBlcy8ke21vZHVsZU5hbWUuc2xpY2UoMSkucmVwbGFjZShcIi9cIiwgXCJfXCIpfWAgaW4gZGV2RGVwXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiAhKFxuICAgICAgICAgICAgICBtb2R1bGVOYW1lIGluIGRlcCB8fFxuICAgICAgICAgICAgICBtb2R1bGVOYW1lIGluIGRldkRlcCB8fFxuICAgICAgICAgICAgICBgQHR5cGVzLyR7bW9kdWxlTmFtZX1gIGluIGRldkRlcFxuICAgICAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBhbGxvd0RldkRlcGVuZGVuY2llc1xuICAgICAgICAgID8gIShtb2R1bGVOYW1lIGluIGRlcCB8fCBtb2R1bGVOYW1lIGluIGRldkRlcClcbiAgICAgICAgICA6ICEobW9kdWxlTmFtZSBpbiBkZXApO1xuICAgICAgfVxuICAgIH0pLFxufSk7XG4iXX0=
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tcGhhbnRvbS1kZXAtaW1wb3J0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1waGFudG9tLWRlcC1pbXBvcnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QixPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFDN0IsT0FBTyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUUsU0FBUyxRQUFRLENBQUMsS0FBYztJQUM5QixPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDO0FBQ3JELENBQUM7QUFFRCxTQUFTLE1BQU0sQ0FBQyxRQUFnQjtJQUM5QixJQUFJLENBQUM7UUFDSCxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQXlELENBQUMsQ0FBQyxvQ0FBb0M7QUFDcEgsU0FBUyxVQUFVLENBQ2pCLEdBQVc7SUFFWCxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNuQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUNELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ25ELElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7UUFDeEIsTUFBTSxPQUFPLEdBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzFFLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFDOUIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUU7WUFDaEMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNkLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCx1QkFBdUI7SUFDdkIsSUFBSSxHQUFHLEtBQUssT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUN6QyxZQUFZO1FBQ1osS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDMUIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLFVBQVUsQ0FBQztJQUM1QyxJQUFJLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xDLE9BQU8sRUFDTCx1RkFBdUY7SUFDekYsTUFBTSxFQUFFO1FBQ047WUFDRSxJQUFJLEVBQUUsUUFBUTtZQUNkLFVBQVUsRUFBRTtnQkFDVixvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7YUFDMUM7WUFDRCxvQkFBb0IsRUFBRSxLQUFLO1NBQzVCO0tBQ0Y7SUFDRCxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUNsQixNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRTtRQUN6QyxNQUFNLEVBQ0osb0JBQW9CLEdBQUcsS0FBSyxHQUM3QixHQUFzQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVoRSxxRUFBcUU7UUFDckUsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdkMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNuRCxnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQ1AsY0FBYyxJQUFJLE9BQU8sQ0FBQyxPQUFPO1lBQ2pDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUNwQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZO1lBQzlCLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDVCxNQUFNLE9BQU8sR0FDWCxrQkFBa0IsSUFBSSxPQUFPLENBQUMsT0FBTztZQUNyQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztZQUN4QyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0I7WUFDbEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNULE1BQU0sTUFBTSxHQUNWLGlCQUFpQixJQUFJLE9BQU8sQ0FBQyxPQUFPO1lBQ3BDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUN2QyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxlQUFlO1lBQ2pDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFVCxNQUFNLFVBQVUsR0FBRyxNQUFNO2FBQ3RCLEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDVixLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUViLE1BQU0sT0FBTyxHQUFHLFVBQVUsSUFBSSxHQUFHLElBQUksVUFBVSxJQUFJLE9BQU8sQ0FBQztRQUMzRCxNQUFNLE9BQU8sR0FBRyxVQUFVLElBQUksTUFBTSxDQUFDO1FBQ3JDLElBQUksWUFBWSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3ZELE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztnQkFDM0QsQ0FBQyxDQUFDLENBQUMsQ0FDQyxPQUFPO29CQUNQLE9BQU87b0JBQ1AsVUFBVSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQzVEO2dCQUNILENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLE9BQU8sSUFBSSxVQUFVLFVBQVUsRUFBRSxJQUFJLE1BQU0sQ0FBQyxDQUFDO1FBQ2hFLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDakUsQ0FBQztJQUNILENBQUMsQ0FBQztDQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHByb2Nlc3MgZnJvbSBcIm5vZGU6cHJvY2Vzc1wiO1xuaW1wb3J0IHsgY3JlYXRlLCBjcmVhdGVSdWxlLCBnZXRSdWxlTmFtZSwgZ2V0U291cmNlVHlwZSB9IGZyb20gXCIuLi9jb21tb24uanNcIjtcblxuZnVuY3Rpb24gaXNPYmplY3QodmFsdWU6IHVua25vd24pIHtcbiAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIjtcbn1cblxuZnVuY3Rpb24gaXNGaWxlKGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZnMuc3RhdFN5bmMoZmlsZVBhdGgpLmlzRmlsZSgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmNvbnN0IGNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIHsgcGF0aDogc3RyaW5nOyBjb250ZW50OiBvYmplY3QgfSB8IHVuZGVmaW5lZD4oKTsgLy8ga2V5IGlzIGRpciwgdmFsdWUgaXMgcGFja2FnZS5qc29uXG5mdW5jdGlvbiBnZXRQa2dKc29uKFxuICBkaXI6IHN0cmluZyxcbik6IHsgcGF0aDogc3RyaW5nOyBjb250ZW50OiBvYmplY3QgfSB8IHVuZGVmaW5lZCB7XG4gIGlmIChjYWNoZS5oYXMoZGlyKSkge1xuICAgIHJldHVybiBjYWNoZS5nZXQoZGlyKTtcbiAgfVxuICBjb25zdCBwa2dKc29uUGF0aCA9IHBhdGguam9pbihkaXIsIFwicGFja2FnZS5qc29uXCIpO1xuICBpZiAoaXNGaWxlKHBrZ0pzb25QYXRoKSkge1xuICAgIGNvbnN0IGNvbnRlbnQ6IHVua25vd24gPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhwa2dKc29uUGF0aCwgXCJ1dGY4XCIpKTtcbiAgICBjb25zdCByZXN1bHQgPSBpc09iamVjdChjb250ZW50KVxuICAgICAgPyB7IHBhdGg6IHBrZ0pzb25QYXRoLCBjb250ZW50IH1cbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNhY2hlLnNldChkaXIsIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIGlmIGl0IGlzIGEgZGlyZWN0b3J5XG4gIGlmIChkaXIgPT09IHByb2Nlc3MuY3dkKCkgfHwgZGlyID09PSBcIi9cIikge1xuICAgIC8vIHN0b3AgaGVyZVxuICAgIGNhY2hlLnNldChkaXIsIHVuZGVmaW5lZCk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBnZXRQa2dKc29uKHBhdGguam9pbihkaXIsIFwiLi5cIikpO1xufVxuXG5leHBvcnQgY29uc3Qgbm9QaGFudG9tRGVwSW1wb3J0cyA9IGNyZWF0ZVJ1bGUoe1xuICBuYW1lOiBnZXRSdWxlTmFtZShpbXBvcnQubWV0YS51cmwpLFxuICBtZXNzYWdlOlxuICAgIFwiRGlzYWxsb3cgaW1wb3J0aW5nIGZyb20gYSBtb2R1bGUgd2hpY2ggdGhlIG5lYXJlc3QgYHBhY2thZ2UuanNvbmAgZG9lc24ndCBpbmNsdWRlIGl0LlwiLFxuICBzY2hlbWE6IFtcbiAgICB7XG4gICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBhbGxvd0RldkRlcGVuZGVuY2llczogeyB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgfSxcbiAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICB9LFxuICBdLFxuICBjcmVhdGU6IChjb250ZXh0KSA9PlxuICAgIGNyZWF0ZShjb250ZXh0LCAoZmlsZW5hbWUsIHNvdXJjZSwgbm9kZSkgPT4ge1xuICAgICAgY29uc3Qge1xuICAgICAgICBhbGxvd0RldkRlcGVuZGVuY2llcyA9IGZhbHNlLFxuICAgICAgfTogeyBhbGxvd0RldkRlcGVuZGVuY2llczogYm9vbGVhbiB9ID0gY29udGV4dC5vcHRpb25zWzBdID8/IHt9O1xuXG4gICAgICAvLyBpZ25vcmUgYGltcG9ydCB7Zm9vfSBmcm9tICcuLydgIGFuZCBgaW1wb3J0IHtmb299IGZyb20gJ25vZGU6Zm9vJ2BcbiAgICAgIGlmIChnZXRTb3VyY2VUeXBlKHNvdXJjZSkgIT09IFwibW9kdWxlXCIpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgY29uc3QgcGtnSnNvbiA9IGdldFBrZ0pzb24ocGF0aC5kaXJuYW1lKGZpbGVuYW1lKSk7XG4gICAgICAvLyBjYW5ub3QgZmluZCBwYWNrYWdlLmpzb24gZmlsZVxuICAgICAgaWYgKCFwa2dKc29uKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgZGVwID1cbiAgICAgICAgXCJkZXBlbmRlbmNpZXNcIiBpbiBwa2dKc29uLmNvbnRlbnQgJiZcbiAgICAgICAgaXNPYmplY3QocGtnSnNvbi5jb250ZW50LmRlcGVuZGVuY2llcylcbiAgICAgICAgICA/IHBrZ0pzb24uY29udGVudC5kZXBlbmRlbmNpZXNcbiAgICAgICAgICA6IHt9O1xuICAgICAgY29uc3QgcGVlckRlcCA9XG4gICAgICAgIFwicGVlckRlcGVuZGVuY2llc1wiIGluIHBrZ0pzb24uY29udGVudCAmJlxuICAgICAgICBpc09iamVjdChwa2dKc29uLmNvbnRlbnQucGVlckRlcGVuZGVuY2llcylcbiAgICAgICAgICA/IHBrZ0pzb24uY29udGVudC5wZWVyRGVwZW5kZW5jaWVzXG4gICAgICAgICAgOiB7fTtcbiAgICAgIGNvbnN0IGRldkRlcCA9XG4gICAgICAgIFwiZGV2RGVwZW5kZW5jaWVzXCIgaW4gcGtnSnNvbi5jb250ZW50ICYmXG4gICAgICAgIGlzT2JqZWN0KHBrZ0pzb24uY29udGVudC5kZXZEZXBlbmRlbmNpZXMpXG4gICAgICAgICAgPyBwa2dKc29uLmNvbnRlbnQuZGV2RGVwZW5kZW5jaWVzXG4gICAgICAgICAgOiB7fTtcblxuICAgICAgY29uc3QgbW9kdWxlTmFtZSA9IHNvdXJjZVxuICAgICAgICAuc3BsaXQoXCIvXCIpXG4gICAgICAgIC5zbGljZSgwLCBzb3VyY2Uuc3RhcnRzV2l0aChcIkBcIikgPyAyIDogMSlcbiAgICAgICAgLmpvaW4oXCIvXCIpO1xuXG4gICAgICBjb25zdCBpc0luRGVwID0gbW9kdWxlTmFtZSBpbiBkZXAgfHwgbW9kdWxlTmFtZSBpbiBwZWVyRGVwO1xuICAgICAgY29uc3QgaXNJbkRldiA9IG1vZHVsZU5hbWUgaW4gZGV2RGVwO1xuICAgICAgaWYgKFwiaW1wb3J0S2luZFwiIGluIG5vZGUgJiYgbm9kZS5pbXBvcnRLaW5kID09PSBcInR5cGVcIikge1xuICAgICAgICByZXR1cm4gbW9kdWxlTmFtZS5zdGFydHNXaXRoKFwiQFwiKSAmJiBtb2R1bGVOYW1lLmluY2x1ZGVzKFwiL1wiKVxuICAgICAgICAgID8gIShcbiAgICAgICAgICAgICAgaXNJbkRlcCB8fFxuICAgICAgICAgICAgICBpc0luRGV2IHx8XG4gICAgICAgICAgICAgIGBAdHlwZXMvJHttb2R1bGVOYW1lLnNsaWNlKDEpLnJlcGxhY2UoXCIvXCIsIFwiX1wiKX1gIGluIGRldkRlcFxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogIShpc0luRGVwIHx8IGlzSW5EZXYgfHwgYEB0eXBlcy8ke21vZHVsZU5hbWV9YCBpbiBkZXZEZXApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGFsbG93RGV2RGVwZW5kZW5jaWVzID8gIShpc0luRGVwIHx8IGlzSW5EZXYpIDogIWlzSW5EZXA7XG4gICAgICB9XG4gICAgfSksXG59KTtcbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-esm",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "ESLint plugin for linting ESM (import/export syntax)",
5
5
  "keywords": [
6
6
  "eslint",
@@ -14,10 +14,10 @@
14
14
  "es6",
15
15
  "module"
16
16
  ],
17
- "homepage": "https://github.com/zanminkian/git-validator/tree/main/packages/eslint-plugin-esm",
17
+ "homepage": "https://github.com/zanminkian/fenge/tree/main/packages/eslint-plugin-esm",
18
18
  "repository": {
19
19
  "type": "git",
20
- "url": "git+https://github.com/zanminkian/git-validator.git",
20
+ "url": "git+https://github.com/zanminkian/fenge.git",
21
21
  "directory": "packages/eslint-plugin-esm"
22
22
  },
23
23
  "license": "MIT",
@@ -29,7 +29,7 @@
29
29
  "@types/eslint": "8.56.11",
30
30
  "@types/estree": "1.0.6",
31
31
  "@types/json-schema": "7.0.15",
32
- "@types/node": "22.5.5",
32
+ "@types/node": "22.7.5",
33
33
  "@typescript-eslint/parser": "7.16.1",
34
34
  "eslint": "8.57.0",
35
35
  "outdent": "0.8.0"
@@ -61,7 +61,7 @@ export const noPhantomDepImports = createRule({
61
61
  allowDevDependencies = false,
62
62
  }: { allowDevDependencies: boolean } = context.options[0] ?? {};
63
63
 
64
- // ignore `import {foo} from './'`
64
+ // ignore `import {foo} from './'` and `import {foo} from 'node:foo'`
65
65
  if (getSourceType(source) !== "module") {
66
66
  return false;
67
67
  }
@@ -75,6 +75,11 @@ export const noPhantomDepImports = createRule({
75
75
  isObject(pkgJson.content.dependencies)
76
76
  ? pkgJson.content.dependencies
77
77
  : {};
78
+ const peerDep =
79
+ "peerDependencies" in pkgJson.content &&
80
+ isObject(pkgJson.content.peerDependencies)
81
+ ? pkgJson.content.peerDependencies
82
+ : {};
78
83
  const devDep =
79
84
  "devDependencies" in pkgJson.content &&
80
85
  isObject(pkgJson.content.devDependencies)
@@ -86,22 +91,18 @@ export const noPhantomDepImports = createRule({
86
91
  .slice(0, source.startsWith("@") ? 2 : 1)
87
92
  .join("/");
88
93
 
94
+ const isInDep = moduleName in dep || moduleName in peerDep;
95
+ const isInDev = moduleName in devDep;
89
96
  if ("importKind" in node && node.importKind === "type") {
90
97
  return moduleName.startsWith("@") && moduleName.includes("/")
91
98
  ? !(
92
- moduleName in dep ||
93
- moduleName in devDep ||
99
+ isInDep ||
100
+ isInDev ||
94
101
  `@types/${moduleName.slice(1).replace("/", "_")}` in devDep
95
102
  )
96
- : !(
97
- moduleName in dep ||
98
- moduleName in devDep ||
99
- `@types/${moduleName}` in devDep
100
- );
103
+ : !(isInDep || isInDev || `@types/${moduleName}` in devDep);
101
104
  } else {
102
- return allowDevDependencies
103
- ? !(moduleName in dep || moduleName in devDep)
104
- : !(moduleName in dep);
105
+ return allowDevDependencies ? !(isInDep || isInDev) : !isInDep;
105
106
  }
106
107
  }),
107
108
  });