@checkdigit/eslint-plugin 7.6.0-PR.97-b2ae → 7.6.1-PR.106-a584

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.
@@ -17,7 +17,6 @@ import filePathComment from "./file-path-comment.mjs";
17
17
  import noCardNumbers from "./no-card-numbers.mjs";
18
18
  import noSideEffects from "./no-side-effects.mjs";
19
19
  import noRandomV4UUID from "./no-random-v4-uuid.mjs";
20
- import noStatusCodeAssert from "./no-status-code-assert.mjs";
21
20
  import noTestImport from "./no-test-import.mjs";
22
21
  import noUuid from "./no-uuid.mjs";
23
22
  import noWallabyComment from "./no-wallaby-comment.mjs";
@@ -29,7 +28,6 @@ var rules = {
29
28
  "file-path-comment": filePathComment,
30
29
  "no-card-numbers": noCardNumbers,
31
30
  "no-random-v4-uuid": noRandomV4UUID,
32
- "no-status-code-assert": noStatusCodeAssert,
33
31
  "no-uuid": noUuid,
34
32
  "require-strict-assert": requireStrictAssert,
35
33
  "no-test-import": noTestImport,
@@ -61,7 +59,6 @@ var configs = {
61
59
  "@checkdigit/no-card-numbers": "error",
62
60
  "@checkdigit/file-path-comment": "error",
63
61
  "@checkdigit/no-random-v4-uuid": "error",
64
- "@checkdigit/no-status-code-assert": "error",
65
62
  "@checkdigit/no-uuid": "error",
66
63
  "@checkdigit/require-strict-assert": "error",
67
64
  "@checkdigit/no-wallaby-comment": "error",
@@ -91,7 +88,6 @@ var configs = {
91
88
  "@checkdigit/no-card-numbers": "error",
92
89
  "@checkdigit/file-path-comment": "off",
93
90
  "@checkdigit/no-random-v4-uuid": "error",
94
- "@checkdigit/no-status-code-assert": "error",
95
91
  "@checkdigit/no-uuid": "error",
96
92
  "@checkdigit/require-strict-assert": "error",
97
93
  "@checkdigit/no-wallaby-comment": "off",
@@ -120,4 +116,4 @@ var src_default = defaultToExport;
120
116
  export {
121
117
  src_default as default
122
118
  };
123
- //# sourceMappingURL=data:application/json;base64,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
119
+ //# sourceMappingURL=data:application/json;base64,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
@@ -32,7 +32,12 @@ var rule = createRule({
32
32
  declarations.push(node);
33
33
  },
34
34
  "Program:exit"() {
35
- for (const [moduleName, declarations] of importDeclarations.entries()) {
35
+ for (const [moduleName, allDeclarations] of importDeclarations.entries()) {
36
+ const declarations = allDeclarations.filter(
37
+ (declaration) => !declaration.specifiers.some(
38
+ (specifier) => specifier.type === TSESTree.AST_NODE_TYPES.ImportNamespaceSpecifier
39
+ )
40
+ );
36
41
  if (declarations.length <= 1) {
37
42
  continue;
38
43
  }
@@ -84,4 +89,4 @@ export {
84
89
  no_duplicated_imports_default as default,
85
90
  ruleId
86
91
  };
87
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25vLWR1cGxpY2F0ZWQtaW1wb3J0cy50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFRQSxTQUFTLFVBQVUsY0FBYztBQUVqQyxTQUFTLGFBQWEsZ0JBQWdCO0FBRXRDLE9BQU8seUJBQXlCO0FBRXpCLElBQU0sU0FBUztBQUV0QixJQUFNLGFBQWEsWUFBWSxZQUFZLENBQUMsU0FBUyxvQkFBb0IsSUFBSSxDQUFDO0FBRTlFLElBQU0sT0FBeUQsV0FBVztBQUFBLEVBQ3hFLE1BQU07QUFBQSxFQUNOLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxVQUFVO0FBQUEsTUFDUix3QkFBd0I7QUFBQSxJQUMxQjtBQUFBLElBQ0EsU0FBUztBQUFBLElBQ1QsUUFBUSxDQUFDO0FBQUEsRUFDWDtBQUFBLEVBQ0EsZ0JBQWdCLENBQUM7QUFBQSxFQUNqQixPQUFPLFNBQVM7QUFDZCxVQUFNLGFBQWEsUUFBUTtBQUMzQixVQUFNLHFCQUFxQixvQkFBSSxJQUEwQztBQUV6RSxXQUFPO0FBQUEsTUFDTCxrQkFBa0IsTUFBTTtBQUN0QixjQUFNLGFBQWEsS0FBSyxPQUFPO0FBQy9CLFlBQUksZUFBZSxtQkFBbUIsSUFBSSxVQUFVO0FBQ3BELFlBQUksaUJBQWlCLFFBQVc7QUFDOUIseUJBQWUsQ0FBQztBQUNoQiw2QkFBbUIsSUFBSSxZQUFZLFlBQVk7QUFBQSxRQUNqRDtBQUNBLHFCQUFhLEtBQUssSUFBSTtBQUFBLE1BQ3hCO0FBQUEsTUFDQSxpQkFBaUI7QUFDZixtQkFBVyxDQUFDLFlBQVksWUFBWSxLQUFLLG1CQUFtQixRQUFRLEdBQUc7QUFDckUsY0FBSSxhQUFhLFVBQVUsR0FBRztBQUM1QjtBQUFBLFVBQ0Y7QUFFQSxnQkFBTSxtQkFBbUIsYUFBYSxDQUFDO0FBQ3ZDLGlCQUFPLEdBQUcsZ0JBQWdCO0FBRTFCLGdCQUFNLGdCQUFnQixhQUFhO0FBQUEsWUFDakMsQ0FBQyxnQkFDQyxZQUFZLGVBQWUsVUFDM0IsWUFBWSxXQUFXO0FBQUEsY0FDckIsQ0FBQyxjQUNDLFVBQVUsU0FBUyxTQUFTLGVBQWUsbUJBQW1CLFVBQVUsZUFBZTtBQUFBLFlBQzNGO0FBQUEsVUFDSjtBQUVBLGtCQUFRLE9BQU87QUFBQSxZQUNiLFdBQVc7QUFBQSxZQUNYLE1BQU07QUFBQSxZQUNOLElBQUksT0FBTztBQUNULG9CQUFNLFFBQVEsQ0FBQztBQUVmLG9CQUFNLG1CQUFtQixhQUN0QjtBQUFBLGdCQUFRLENBQUMsZ0JBQ1IsWUFBWSxXQUFXO0FBQUEsa0JBQUksQ0FBQyxjQUMxQixVQUFVLFNBQVMsU0FBUyxlQUFlLHlCQUF5QixZQUFZO0FBQUEsZ0JBQ2xGO0FBQUEsY0FDRixFQUNDLE9BQU8sT0FBTztBQUNqQixvQkFBTSx1QkFBdUIsaUJBQWlCLENBQUMsSUFBSSxXQUFXLFFBQVEsaUJBQWlCLENBQUMsQ0FBQyxJQUFJO0FBRTdGLG9CQUFNLG1CQUFtQixhQUFhLFFBQVEsQ0FBQyxnQkFBZ0I7QUFDN0Qsc0JBQU0sK0JBQ0osWUFBWSxlQUFlLFVBQzNCLFlBQVksV0FBVztBQUFBLGtCQUNyQixDQUFDLGNBQ0MsVUFBVSxTQUFTLFNBQVMsZUFBZSxtQkFBbUIsVUFBVSxlQUFlO0FBQUEsZ0JBQzNGO0FBQ0YsdUJBQU8sWUFBWSxXQUNoQixPQUFPLENBQUMsY0FBYyxVQUFVLFNBQVMsU0FBUyxlQUFlLHNCQUFzQixFQUN2RjtBQUFBLGtCQUFJLENBQUM7QUFBQTtBQUFBLG9CQUVKLGdCQUNJLFdBQVcsUUFBUSxTQUFTLEVBQUUsUUFBUSxTQUFTLEVBQUUsSUFDakQsK0JBQ0UsUUFBUSxXQUFXLFFBQVEsU0FBUyxDQUFDLEtBQ3JDLFdBQVcsUUFBUSxTQUFTO0FBQUE7QUFBQSxnQkFDcEM7QUFBQSxjQUNKLENBQUM7QUFDRCxvQkFBTSx1QkFBdUIsR0FBRyxnQkFBZ0IsVUFBVSxFQUFFLEtBQUssaUJBQWlCLEtBQUssSUFBSSxDQUFDO0FBRzVGLG9CQUFNLGVBQWUsVUFBVSxDQUFDLHNCQUFzQixvQkFBb0IsRUFBRSxPQUFPLE9BQU8sRUFBRSxLQUFLLElBQUksQ0FBQyxVQUFVLFVBQVU7QUFDMUgsb0JBQU0sS0FBSyxNQUFNLFlBQVksa0JBQWtCLFlBQVksQ0FBQztBQUc1RCwyQkFBYSxNQUFNLENBQUMsRUFBRSxRQUFRLENBQUMsZ0JBQWdCO0FBQzdDLHNCQUFNLEtBQUssTUFBTSxZQUFZLENBQUMsWUFBWSxNQUFNLENBQUMsR0FBRyxZQUFZLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQUEsY0FDaEYsQ0FBQztBQUVELHFCQUFPO0FBQUEsWUFDVDtBQUFBLFVBQ0YsQ0FBQztBQUFBLFFBQ0g7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRixDQUFDO0FBRUQsSUFBTyxnQ0FBUTsiLAogICJuYW1lcyI6IFtdCn0K
92
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25vLWR1cGxpY2F0ZWQtaW1wb3J0cy50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFRQSxTQUFTLFVBQVUsY0FBYztBQUVqQyxTQUFTLGFBQWEsZ0JBQWdCO0FBRXRDLE9BQU8seUJBQXlCO0FBRXpCLElBQU0sU0FBUztBQUV0QixJQUFNLGFBQWEsWUFBWSxZQUFZLENBQUMsU0FBUyxvQkFBb0IsSUFBSSxDQUFDO0FBRTlFLElBQU0sT0FBeUQsV0FBVztBQUFBLEVBQ3hFLE1BQU07QUFBQSxFQUNOLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxVQUFVO0FBQUEsTUFDUix3QkFBd0I7QUFBQSxJQUMxQjtBQUFBLElBQ0EsU0FBUztBQUFBLElBQ1QsUUFBUSxDQUFDO0FBQUEsRUFDWDtBQUFBLEVBQ0EsZ0JBQWdCLENBQUM7QUFBQSxFQUNqQixPQUFPLFNBQVM7QUFDZCxVQUFNLGFBQWEsUUFBUTtBQUMzQixVQUFNLHFCQUFxQixvQkFBSSxJQUEwQztBQUV6RSxXQUFPO0FBQUEsTUFDTCxrQkFBa0IsTUFBTTtBQUN0QixjQUFNLGFBQWEsS0FBSyxPQUFPO0FBQy9CLFlBQUksZUFBZSxtQkFBbUIsSUFBSSxVQUFVO0FBQ3BELFlBQUksaUJBQWlCLFFBQVc7QUFDOUIseUJBQWUsQ0FBQztBQUNoQiw2QkFBbUIsSUFBSSxZQUFZLFlBQVk7QUFBQSxRQUNqRDtBQUNBLHFCQUFhLEtBQUssSUFBSTtBQUFBLE1BQ3hCO0FBQUEsTUFDQSxpQkFBaUI7QUFDZixtQkFBVyxDQUFDLFlBQVksZUFBZSxLQUFLLG1CQUFtQixRQUFRLEdBQUc7QUFDeEUsZ0JBQU0sZUFBZSxnQkFBZ0I7QUFBQSxZQUNuQyxDQUFDLGdCQUNDLENBQUMsWUFBWSxXQUFXO0FBQUEsY0FDdEIsQ0FBQyxjQUFjLFVBQVUsU0FBUyxTQUFTLGVBQWU7QUFBQSxZQUM1RDtBQUFBLFVBQ0o7QUFDQSxjQUFJLGFBQWEsVUFBVSxHQUFHO0FBQzVCO0FBQUEsVUFDRjtBQUVBLGdCQUFNLG1CQUFtQixhQUFhLENBQUM7QUFDdkMsaUJBQU8sR0FBRyxnQkFBZ0I7QUFFMUIsZ0JBQU0sZ0JBQWdCLGFBQWE7QUFBQSxZQUNqQyxDQUFDLGdCQUNDLFlBQVksZUFBZSxVQUMzQixZQUFZLFdBQVc7QUFBQSxjQUNyQixDQUFDLGNBQ0MsVUFBVSxTQUFTLFNBQVMsZUFBZSxtQkFBbUIsVUFBVSxlQUFlO0FBQUEsWUFDM0Y7QUFBQSxVQUNKO0FBRUEsa0JBQVEsT0FBTztBQUFBLFlBQ2IsV0FBVztBQUFBLFlBQ1gsTUFBTTtBQUFBLFlBQ04sSUFBSSxPQUFPO0FBQ1Qsb0JBQU0sUUFBUSxDQUFDO0FBRWYsb0JBQU0sbUJBQW1CLGFBQ3RCO0FBQUEsZ0JBQVEsQ0FBQyxnQkFDUixZQUFZLFdBQVc7QUFBQSxrQkFBSSxDQUFDLGNBQzFCLFVBQVUsU0FBUyxTQUFTLGVBQWUseUJBQXlCLFlBQVk7QUFBQSxnQkFDbEY7QUFBQSxjQUNGLEVBQ0MsT0FBTyxPQUFPO0FBQ2pCLG9CQUFNLHVCQUF1QixpQkFBaUIsQ0FBQyxJQUFJLFdBQVcsUUFBUSxpQkFBaUIsQ0FBQyxDQUFDLElBQUk7QUFFN0Ysb0JBQU0sbUJBQW1CLGFBQWEsUUFBUSxDQUFDLGdCQUFnQjtBQUM3RCxzQkFBTSwrQkFDSixZQUFZLGVBQWUsVUFDM0IsWUFBWSxXQUFXO0FBQUEsa0JBQ3JCLENBQUMsY0FDQyxVQUFVLFNBQVMsU0FBUyxlQUFlLG1CQUFtQixVQUFVLGVBQWU7QUFBQSxnQkFDM0Y7QUFDRix1QkFBTyxZQUFZLFdBQ2hCLE9BQU8sQ0FBQyxjQUFjLFVBQVUsU0FBUyxTQUFTLGVBQWUsc0JBQXNCLEVBQ3ZGO0FBQUEsa0JBQUksQ0FBQztBQUFBO0FBQUEsb0JBRUosZ0JBQ0ksV0FBVyxRQUFRLFNBQVMsRUFBRSxRQUFRLFNBQVMsRUFBRSxJQUNqRCwrQkFDRSxRQUFRLFdBQVcsUUFBUSxTQUFTLENBQUMsS0FDckMsV0FBVyxRQUFRLFNBQVM7QUFBQTtBQUFBLGdCQUNwQztBQUFBLGNBQ0osQ0FBQztBQUNELG9CQUFNLHVCQUF1QixHQUFHLGdCQUFnQixVQUFVLEVBQUUsS0FBSyxpQkFBaUIsS0FBSyxJQUFJLENBQUM7QUFHNUYsb0JBQU0sZUFBZSxVQUFVLENBQUMsc0JBQXNCLG9CQUFvQixFQUFFLE9BQU8sT0FBTyxFQUFFLEtBQUssSUFBSSxDQUFDLFVBQVUsVUFBVTtBQUMxSCxvQkFBTSxLQUFLLE1BQU0sWUFBWSxrQkFBa0IsWUFBWSxDQUFDO0FBRzVELDJCQUFhLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxnQkFBZ0I7QUFDN0Msc0JBQU0sS0FBSyxNQUFNLFlBQVksQ0FBQyxZQUFZLE1BQU0sQ0FBQyxHQUFHLFlBQVksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFBQSxjQUNoRixDQUFDO0FBRUQscUJBQU87QUFBQSxZQUNUO0FBQUEsVUFDRixDQUFDO0FBQUEsUUFDSDtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGLENBQUM7QUFFRCxJQUFPLGdDQUFROyIsCiAgIm5hbWVzIjogW10KfQo=
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@checkdigit/eslint-plugin","version":"7.6.0-PR.97-b2ae","description":"Check Digit eslint plugins","keywords":["eslint","eslintplugin"],"homepage":"https://github.com/checkdigit/eslint-plugin#readme","bugs":{"url":"https://github.com/checkdigit/eslint-plugin/issues"},"repository":{"type":"git","url":"https://github.com/checkdigit/eslint-plugin"},"license":"MIT","author":"Check Digit, LLC","sideEffects":false,"type":"module","exports":{".":{"types":"./dist-types/index.d.ts","import":"./dist-mjs/index.mjs","default":"./dist-mjs/index.mjs"}},"files":["src","dist-types","dist-mjs","!src/**/test/**","!src/**/*.test.ts","!src/**/*.spec.ts","!dist-types/**/test/**","!dist-types/**/*.test.d.ts","!dist-types/**/*.spec.d.ts","!dist-mjs/**/test/**","!dist-mjs/**/*.test.mjs","!dist-mjs/**/*.spec.mjs","SECURITY.md"],"scripts":{"build:dist-mjs":"rimraf dist-mjs && npx builder --type=module --sourceMap --outDir=dist-mjs && node dist-mjs/index.mjs","build:dist-types":"rimraf dist-types && npx builder --type=types --outDir=dist-types","ci:compile":"tsc --noEmit","ci:coverage":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=true","ci:lint":"npm run lint","ci:style":"npm run prettier","ci:test":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=false","lint":"eslint --max-warnings 0 .","lint:fix":"eslint --max-warnings 0 --fix .","prepare":"","prepublishOnly":"npm run build:dist-types && npm run build:dist-mjs","prettier":"prettier --ignore-path .gitignore --list-different .","prettier:fix":"prettier --ignore-path .gitignore --write .","test":"npm run ci:compile && npm run ci:test && npm run ci:lint && npm run ci:style"},"prettier":"@checkdigit/prettier-config","jest":{"preset":"@checkdigit/jest-config"},"dependencies":{"@typescript-eslint/type-utils":"^8.15.0","@typescript-eslint/utils":"^8.15.0","ts-api-utils":"^1.4.0"},"devDependencies":{"@checkdigit/jest-config":"^6.0.2","@checkdigit/prettier-config":"^5.5.1","@checkdigit/typescript-config":"^8.0.0","@eslint/js":"^9.15.0","@types/eslint":"^9.6.1","@types/eslint-config-prettier":"^6.11.3","@typescript-eslint/parser":"^8.15.0","@typescript-eslint/rule-tester":"^8.15.0","eslint":"^9.15.0","eslint-config-prettier":"^9.1.0","eslint-import-resolver-typescript":"^3.6.3","eslint-plugin-eslint-plugin":"^6.3.2","eslint-plugin-import":"^2.31.0","eslint-plugin-no-only-tests":"^3.3.0","eslint-plugin-no-secrets":"^1.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-sonarjs":"1.0.4","http-status-codes":"^2.3.0","rimraf":"^6.0.1","typescript-eslint":"^8.15.0"},"peerDependencies":{"eslint":">=9 <10"},"engines":{"node":">=20.17"}}
1
+ {"name":"@checkdigit/eslint-plugin","version":"7.6.1-PR.106-a584","description":"Check Digit eslint plugins","keywords":["eslint","eslintplugin"],"homepage":"https://github.com/checkdigit/eslint-plugin#readme","bugs":{"url":"https://github.com/checkdigit/eslint-plugin/issues"},"repository":{"type":"git","url":"https://github.com/checkdigit/eslint-plugin"},"license":"MIT","author":"Check Digit, LLC","sideEffects":false,"type":"module","exports":{".":{"types":"./dist-types/index.d.ts","import":"./dist-mjs/index.mjs","default":"./dist-mjs/index.mjs"}},"files":["src","dist-types","dist-mjs","!src/**/test/**","!src/**/*.test.ts","!src/**/*.spec.ts","!dist-types/**/test/**","!dist-types/**/*.test.d.ts","!dist-types/**/*.spec.d.ts","!dist-mjs/**/test/**","!dist-mjs/**/*.test.mjs","!dist-mjs/**/*.spec.mjs","SECURITY.md"],"scripts":{"build:dist-mjs":"rimraf dist-mjs && npx builder --type=module --sourceMap --outDir=dist-mjs && node dist-mjs/index.mjs","build:dist-types":"rimraf dist-types && npx builder --type=types --outDir=dist-types","ci:compile":"tsc --noEmit","ci:coverage":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=true","ci:lint":"npm run lint","ci:style":"npm run prettier","ci:test":"NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=false","lint":"eslint --max-warnings 0 .","lint:fix":"eslint --max-warnings 0 --fix .","prepare":"","prepublishOnly":"npm run build:dist-types && npm run build:dist-mjs","prettier":"prettier --ignore-path .gitignore --list-different .","prettier:fix":"prettier --ignore-path .gitignore --write .","test":"npm run ci:compile && npm run ci:test && npm run ci:lint && npm run ci:style"},"prettier":"@checkdigit/prettier-config","jest":{"preset":"@checkdigit/jest-config"},"dependencies":{"@typescript-eslint/type-utils":"^8.18.0","@typescript-eslint/utils":"^8.18.0","ts-api-utils":"^2.0.0"},"devDependencies":{"@checkdigit/jest-config":"^6.0.2","@checkdigit/prettier-config":"^6.0.0","@checkdigit/typescript-config":"^9.0.0","@eslint/js":"^9.16.0","@types/eslint":"^9.6.1","@types/eslint-config-prettier":"^6.11.3","@typescript-eslint/parser":"^8.18.0","@typescript-eslint/rule-tester":"^8.18.0","eslint":"^9.16.0","eslint-config-prettier":"^9.1.0","eslint-import-resolver-typescript":"^3.7.0","eslint-plugin-eslint-plugin":"^6.3.2","eslint-plugin-import":"^2.31.0","eslint-plugin-no-only-tests":"^3.3.0","eslint-plugin-no-secrets":"^2.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-sonarjs":"1.0.4","http-status-codes":"^2.3.0","rimraf":"^6.0.1","typescript-eslint":"^8.18.0"},"peerDependencies":{"eslint":">=9 <10"},"engines":{"node":">=20.17"}}
package/src/index.ts CHANGED
@@ -8,38 +8,36 @@
8
8
 
9
9
  import type { TSESLint } from '@typescript-eslint/utils';
10
10
 
11
- import invalidJsonStringify, { ruleId as invalidJsonStringifyRuleId } from './invalid-json-stringify';
12
- import noDuplicatedImports, { ruleId as noDuplicatedImportsRuleId } from './no-duplicated-imports';
13
- import noLegacyServiceTyping, { ruleId as noLegacyServiceTypingRuleId } from './no-legacy-service-typing';
14
- import noPromiseInstanceMethod, { ruleId as noPromiseInstanceMethodRuleId } from './no-promise-instance-method';
11
+ import invalidJsonStringify, { ruleId as invalidJsonStringifyRuleId } from './invalid-json-stringify.ts';
12
+ import noDuplicatedImports, { ruleId as noDuplicatedImportsRuleId } from './no-duplicated-imports.ts';
13
+ import noLegacyServiceTyping, { ruleId as noLegacyServiceTypingRuleId } from './no-legacy-service-typing.ts';
14
+ import noPromiseInstanceMethod, { ruleId as noPromiseInstanceMethodRuleId } from './no-promise-instance-method.ts';
15
15
  import requireFixedServicesImport, {
16
16
  ruleId as requireFixedServicesImportRuleId,
17
- } from './require-fixed-services-import';
17
+ } from './require-fixed-services-import.ts';
18
18
  import requireResolveFullResponse, {
19
19
  ruleId as requireResolveFullResponseRuleId,
20
- } from './require-resolve-full-response';
20
+ } from './require-resolve-full-response.ts';
21
21
  import requireTypeOutOfTypeOnlyImports, {
22
22
  ruleId as requireTypeOutOfTypeOnlyImportsRuleId,
23
- } from './require-type-out-of-type-only-imports';
24
- import noServeRuntime, { ruleId as noServeRuntimeRuleId } from './no-serve-runtime';
25
- import filePathComment from './file-path-comment';
26
- import noCardNumbers from './no-card-numbers';
27
- import noSideEffects from './no-side-effects';
28
- import noRandomV4UUID from './no-random-v4-uuid';
29
- import noStatusCodeAssert from './no-status-code-assert';
30
- import noTestImport from './no-test-import';
31
- import noUuid from './no-uuid';
32
- import noWallabyComment from './no-wallaby-comment';
33
- import objectLiteralResponse from './object-literal-response';
34
- import regexComment from './regular-expression-comment';
35
- import requireAssertPredicateRejectsThrows from './require-assert-predicate-rejects-throws';
36
- import requireStrictAssert from './require-strict-assert';
23
+ } from './require-type-out-of-type-only-imports.ts';
24
+ import noServeRuntime, { ruleId as noServeRuntimeRuleId } from './no-serve-runtime.ts';
25
+ import filePathComment from './file-path-comment.ts';
26
+ import noCardNumbers from './no-card-numbers.ts';
27
+ import noSideEffects from './no-side-effects.ts';
28
+ import noRandomV4UUID from './no-random-v4-uuid.ts';
29
+ import noTestImport from './no-test-import.ts';
30
+ import noUuid from './no-uuid.ts';
31
+ import noWallabyComment from './no-wallaby-comment.ts';
32
+ import objectLiteralResponse from './object-literal-response.ts';
33
+ import regexComment from './regular-expression-comment.ts';
34
+ import requireAssertPredicateRejectsThrows from './require-assert-predicate-rejects-throws.ts';
35
+ import requireStrictAssert from './require-strict-assert.ts';
37
36
 
38
37
  const rules: Record<string, TSESLint.LooseRuleDefinition> = {
39
38
  'file-path-comment': filePathComment,
40
39
  'no-card-numbers': noCardNumbers,
41
40
  'no-random-v4-uuid': noRandomV4UUID,
42
- 'no-status-code-assert': noStatusCodeAssert,
43
41
  'no-uuid': noUuid,
44
42
  'require-strict-assert': requireStrictAssert,
45
43
  'no-test-import': noTestImport,
@@ -73,7 +71,6 @@ const configs: Record<string, TSESLint.FlatConfig.Config[]> = {
73
71
  '@checkdigit/no-card-numbers': 'error',
74
72
  '@checkdigit/file-path-comment': 'error',
75
73
  '@checkdigit/no-random-v4-uuid': 'error',
76
- '@checkdigit/no-status-code-assert': 'error',
77
74
  '@checkdigit/no-uuid': 'error',
78
75
  '@checkdigit/require-strict-assert': 'error',
79
76
  '@checkdigit/no-wallaby-comment': 'error',
@@ -103,7 +100,6 @@ const configs: Record<string, TSESLint.FlatConfig.Config[]> = {
103
100
  '@checkdigit/no-card-numbers': 'error',
104
101
  '@checkdigit/file-path-comment': 'off',
105
102
  '@checkdigit/no-random-v4-uuid': 'error',
106
- '@checkdigit/no-status-code-assert': 'error',
107
103
  '@checkdigit/no-uuid': 'error',
108
104
  '@checkdigit/require-strict-assert': 'error',
109
105
  '@checkdigit/no-wallaby-comment': 'off',
@@ -1,7 +1,7 @@
1
1
  // invalid-json-stringify.ts
2
2
 
3
3
  import type { Rule } from 'eslint';
4
- import getDocumentationUrl from './get-documentation-url';
4
+ import getDocumentationUrl from './get-documentation-url.ts';
5
5
 
6
6
  /*
7
7
  * Copyright (c) 2021-2024 Check Digit, LLC
@@ -10,7 +10,7 @@ import { strict as assert } from 'node:assert';
10
10
 
11
11
  import { ESLintUtils, TSESTree } from '@typescript-eslint/utils';
12
12
 
13
- import getDocumentationUrl from './get-documentation-url';
13
+ import getDocumentationUrl from './get-documentation-url.ts';
14
14
 
15
15
  export const ruleId = 'no-duplicated-imports';
16
16
 
@@ -45,7 +45,13 @@ const rule: ESLintUtils.RuleModule<'mergeDuplicatedImports'> = createRule({
45
45
  declarations.push(node);
46
46
  },
47
47
  'Program:exit'() {
48
- for (const [moduleName, declarations] of importDeclarations.entries()) {
48
+ for (const [moduleName, allDeclarations] of importDeclarations.entries()) {
49
+ const declarations = allDeclarations.filter(
50
+ (declaration) =>
51
+ !declaration.specifiers.some(
52
+ (specifier) => specifier.type === TSESTree.AST_NODE_TYPES.ImportNamespaceSpecifier,
53
+ ),
54
+ );
49
55
  if (declarations.length <= 1) {
50
56
  continue;
51
57
  }
@@ -7,7 +7,7 @@
7
7
  */
8
8
 
9
9
  import { AST_NODE_TYPES, ESLintUtils, TSESTree } from '@typescript-eslint/utils';
10
- import getDocumentationUrl from './get-documentation-url';
10
+ import getDocumentationUrl from './get-documentation-url.ts';
11
11
 
12
12
  export const ruleId = 'no-legacy-service-typing';
13
13
 
@@ -1,7 +1,7 @@
1
1
  // no-promise-instance-method.ts
2
2
 
3
3
  import type { Rule } from 'eslint';
4
- import getDocumentationUrl from './get-documentation-url';
4
+ import getDocumentationUrl from './get-documentation-url.ts';
5
5
 
6
6
  /*
7
7
  * Copyright (c) 2021-2024 Check Digit, LLC
@@ -7,7 +7,7 @@
7
7
  */
8
8
 
9
9
  import { AST_NODE_TYPES, ESLintUtils, TSESLint, TSESTree } from '@typescript-eslint/utils';
10
- import getDocumentationUrl from './get-documentation-url';
10
+ import getDocumentationUrl from './get-documentation-url.ts';
11
11
 
12
12
  export const ruleId = 'no-random-v4-uuid';
13
13
  const NO_RANDOM_V4_UUID = 'NO_RANDOM_V4_UUID';
@@ -7,7 +7,7 @@
7
7
  */
8
8
 
9
9
  import { ESLintUtils, TSESTree } from '@typescript-eslint/utils';
10
- import getDocumentationUrl from './get-documentation-url';
10
+ import getDocumentationUrl from './get-documentation-url.ts';
11
11
 
12
12
  export const ruleId = 'no-serve-runtime';
13
13
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  import { ESLintUtils } from '@typescript-eslint/utils';
10
10
 
11
- import getDocumentationUrl from './get-documentation-url';
11
+ import getDocumentationUrl from './get-documentation-url.ts';
12
12
 
13
13
  export const ruleId = 'require-fixed-services-import';
14
14
 
@@ -9,8 +9,8 @@
9
9
  import { strict as assert } from 'node:assert';
10
10
  import { AST_NODE_TYPES, ESLintUtils, TSESTree } from '@typescript-eslint/utils';
11
11
  import { DefinitionType, type Scope } from '@typescript-eslint/scope-manager';
12
- import getDocumentationUrl from './get-documentation-url';
13
- import { getEnclosingScopeNode } from './library/ts-tree';
12
+ import getDocumentationUrl from './get-documentation-url.ts';
13
+ import { getEnclosingScopeNode } from './library/ts-tree.ts';
14
14
 
15
15
  export const ruleId = 'require-resolve-full-response';
16
16
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
@@ -7,7 +7,7 @@
7
7
  */
8
8
 
9
9
  import { ESLintUtils, TSESTree } from '@typescript-eslint/utils';
10
- import getDocumentationUrl from './get-documentation-url';
10
+ import getDocumentationUrl from './get-documentation-url.ts';
11
11
 
12
12
  export const ruleId = 'require-type-out-of-type-only-imports';
13
13
 
@@ -1,66 +0,0 @@
1
- // src/no-status-code-assert.ts
2
- import { AST_NODE_TYPES, ESLintUtils } from "@typescript-eslint/utils";
3
- import getDocumentationUrl from "./get-documentation-url.mjs";
4
- var ruleId = "no-status-code-assert";
5
- var NO_STATUS_CODE_ASSERT = "NO_STATUS_CODE_ASSERT";
6
- var keywords = ["status", "code", "StatusCodes", "statusCode"];
7
- var createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
8
- var hasStatusCodeOrValue = (arg) => {
9
- const checkName = (name) => name !== void 0 && keywords.some((keyword) => name.toLowerCase().includes(keyword));
10
- switch (arg.type) {
11
- case AST_NODE_TYPES.Identifier:
12
- return checkName(arg.name);
13
- case AST_NODE_TYPES.MemberExpression: {
14
- const object = arg.object;
15
- const property = arg.property;
16
- if (object.type === AST_NODE_TYPES.Identifier && checkName(object.name)) {
17
- return true;
18
- }
19
- if (property.type === AST_NODE_TYPES.Identifier) {
20
- return checkName(property.name);
21
- }
22
- if (property.type === AST_NODE_TYPES.Literal && typeof property.value === "string") {
23
- return checkName(property.value);
24
- }
25
- break;
26
- }
27
- case AST_NODE_TYPES.BinaryExpression:
28
- return hasStatusCodeOrValue(arg.left) || hasStatusCodeOrValue(arg.right);
29
- }
30
- return false;
31
- };
32
- var isAssertIdentifier = (node) => node.type === AST_NODE_TYPES.Identifier && node.name === "assert";
33
- var isAssertMemberExpression = (node) => node.type === AST_NODE_TYPES.MemberExpression && node.object.type === AST_NODE_TYPES.Identifier && node.object.name === "assert" && node.property.type === AST_NODE_TYPES.Identifier;
34
- var rule = createRule({
35
- name: ruleId,
36
- meta: {
37
- type: "problem",
38
- docs: {
39
- description: "Disallow using status codes in assertions; use error handling instead"
40
- },
41
- schema: [],
42
- messages: {
43
- [NO_STATUS_CODE_ASSERT]: "Do not use status codes in assertions; use error handling instead"
44
- }
45
- },
46
- defaultOptions: [],
47
- create(context) {
48
- return {
49
- CallExpression(node) {
50
- const callee = node.callee;
51
- if ((isAssertIdentifier(callee) || isAssertMemberExpression(callee)) && node.arguments.some(hasStatusCodeOrValue)) {
52
- context.report({
53
- node,
54
- messageId: NO_STATUS_CODE_ASSERT
55
- });
56
- }
57
- }
58
- };
59
- }
60
- });
61
- var no_status_code_assert_default = rule;
62
- export {
63
- no_status_code_assert_default as default,
64
- ruleId
65
- };
66
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25vLXN0YXR1cy1jb2RlLWFzc2VydC50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFRQSxTQUFTLGdCQUFnQixtQkFBdUM7QUFDaEUsT0FBTyx5QkFBeUI7QUFFekIsSUFBTSxTQUFTO0FBQ3RCLElBQU0sd0JBQXdCO0FBQzlCLElBQU0sV0FBVyxDQUFDLFVBQVUsUUFBUSxlQUFlLFlBQVk7QUFFL0QsSUFBTSxhQUFhLFlBQVksWUFBWSxDQUFDLFNBQVMsb0JBQW9CLElBQUksQ0FBQztBQVM5RSxJQUFNLHVCQUF1QixDQUFDLFFBQWdDO0FBQzVELFFBQU0sWUFBWSxDQUFDLFNBQ2pCLFNBQVMsVUFBYSxTQUFTLEtBQUssQ0FBQyxZQUFZLEtBQUssWUFBWSxFQUFFLFNBQVMsT0FBTyxDQUFDO0FBRXZGLFVBQVEsSUFBSSxNQUFNO0FBQUEsSUFDaEIsS0FBSyxlQUFlO0FBQ2xCLGFBQU8sVUFBVSxJQUFJLElBQUk7QUFBQSxJQUMzQixLQUFLLGVBQWUsa0JBQWtCO0FBQ3BDLFlBQU0sU0FBUyxJQUFJO0FBQ25CLFlBQU0sV0FBVyxJQUFJO0FBQ3JCLFVBQUksT0FBTyxTQUFTLGVBQWUsY0FBYyxVQUFVLE9BQU8sSUFBSSxHQUFHO0FBQ3ZFLGVBQU87QUFBQSxNQUNUO0FBQ0EsVUFBSSxTQUFTLFNBQVMsZUFBZSxZQUFZO0FBQy9DLGVBQU8sVUFBVSxTQUFTLElBQUk7QUFBQSxNQUNoQztBQUNBLFVBQUksU0FBUyxTQUFTLGVBQWUsV0FBVyxPQUFPLFNBQVMsVUFBVSxVQUFVO0FBQ2xGLGVBQU8sVUFBVSxTQUFTLEtBQUs7QUFBQSxNQUNqQztBQUNBO0FBQUEsSUFDRjtBQUFBLElBQ0EsS0FBSyxlQUFlO0FBQ2xCLGFBQU8scUJBQXFCLElBQUksSUFBSSxLQUFLLHFCQUFxQixJQUFJLEtBQUs7QUFBQSxFQUMzRTtBQUNBLFNBQU87QUFDVDtBQVFBLElBQU0scUJBQXFCLENBQUMsU0FDMUIsS0FBSyxTQUFTLGVBQWUsY0FBYyxLQUFLLFNBQVM7QUFRM0QsSUFBTSwyQkFBMkIsQ0FBQyxTQUNoQyxLQUFLLFNBQVMsZUFBZSxvQkFDN0IsS0FBSyxPQUFPLFNBQVMsZUFBZSxjQUNwQyxLQUFLLE9BQU8sU0FBUyxZQUNyQixLQUFLLFNBQVMsU0FBUyxlQUFlO0FBRXhDLElBQU0sT0FBMEQsV0FBVztBQUFBLEVBQ3pFLE1BQU07QUFBQSxFQUNOLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxRQUFRLENBQUM7QUFBQSxJQUNULFVBQVU7QUFBQSxNQUNSLENBQUMscUJBQXFCLEdBQUc7QUFBQSxJQUMzQjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLGdCQUFnQixDQUFDO0FBQUEsRUFDakIsT0FBTyxTQUFTO0FBQ2QsV0FBTztBQUFBLE1BQ0wsZUFBZSxNQUErQjtBQUM1QyxjQUFNLFNBQVMsS0FBSztBQUNwQixhQUNHLG1CQUFtQixNQUFNLEtBQUsseUJBQXlCLE1BQU0sTUFDOUQsS0FBSyxVQUFVLEtBQUssb0JBQW9CLEdBQ3hDO0FBQ0Esa0JBQVEsT0FBTztBQUFBLFlBQ2I7QUFBQSxZQUNBLFdBQVc7QUFBQSxVQUNiLENBQUM7QUFBQSxRQUNIO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0YsQ0FBQztBQUVELElBQU8sZ0NBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -1,5 +0,0 @@
1
- import { TSESLint } from '@typescript-eslint/utils';
2
- export declare const ruleId = "no-status-code-assert";
3
- declare const NO_STATUS_CODE_ASSERT = "NO_STATUS_CODE_ASSERT";
4
- declare const rule: TSESLint.RuleModule<typeof NO_STATUS_CODE_ASSERT>;
5
- export default rule;
@@ -1,104 +0,0 @@
1
- // no-status-code-assert.ts
2
-
3
- /*
4
- * Copyright (c) 2022-2024 Check Digit, LLC
5
- *
6
- * This code is licensed under the MIT license (see LICENSE.txt for details).
7
- */
8
-
9
- import { AST_NODE_TYPES, ESLintUtils, TSESLint, TSESTree } from '@typescript-eslint/utils';
10
- import getDocumentationUrl from './get-documentation-url';
11
-
12
- export const ruleId = 'no-status-code-assert';
13
- const NO_STATUS_CODE_ASSERT = 'NO_STATUS_CODE_ASSERT';
14
- const keywords = ['status', 'code', 'StatusCodes', 'statusCode'];
15
-
16
- const createRule = ESLintUtils.RuleCreator((name) => getDocumentationUrl(name));
17
-
18
- /**
19
- * Checks if a given AST node contains any identifier, member expression, or binary expression
20
- * that includes the keywords 'status', 'code', 'StatusCodes', or 'statusCode'.
21
- *
22
- * @param arg - The AST node to check.
23
- * @returns `true` if the node or its sub-nodes contain any of the specified keywords, otherwise `false`.
24
- */
25
- const hasStatusCodeOrValue = (arg: TSESTree.Node): boolean => {
26
- const checkName = (name?: string): boolean =>
27
- name !== undefined && keywords.some((keyword) => name.toLowerCase().includes(keyword));
28
-
29
- switch (arg.type) {
30
- case AST_NODE_TYPES.Identifier:
31
- return checkName(arg.name);
32
- case AST_NODE_TYPES.MemberExpression: {
33
- const object = arg.object;
34
- const property = arg.property;
35
- if (object.type === AST_NODE_TYPES.Identifier && checkName(object.name)) {
36
- return true;
37
- }
38
- if (property.type === AST_NODE_TYPES.Identifier) {
39
- return checkName(property.name);
40
- }
41
- if (property.type === AST_NODE_TYPES.Literal && typeof property.value === 'string') {
42
- return checkName(property.value);
43
- }
44
- break;
45
- }
46
- case AST_NODE_TYPES.BinaryExpression:
47
- return hasStatusCodeOrValue(arg.left) || hasStatusCodeOrValue(arg.right);
48
- }
49
- return false;
50
- };
51
-
52
- /**
53
- * Checks if a given AST node is an identifier with the name 'assert'.
54
- *
55
- * @param node - The AST node to check.
56
- * @returns `true` if the node is an identifier with the name 'assert', otherwise `false`.
57
- */
58
- const isAssertIdentifier = (node: TSESTree.Node): boolean =>
59
- node.type === AST_NODE_TYPES.Identifier && node.name === 'assert';
60
-
61
- /**
62
- * Checks if a given AST node is a member expression with the object named 'assert'.
63
- *
64
- * @param node - The AST node to check.
65
- * @returns `true` if the node is a member expression with the object named 'assert', otherwise `false`.
66
- */
67
- const isAssertMemberExpression = (node: TSESTree.Node): boolean =>
68
- node.type === AST_NODE_TYPES.MemberExpression &&
69
- node.object.type === AST_NODE_TYPES.Identifier &&
70
- node.object.name === 'assert' &&
71
- node.property.type === AST_NODE_TYPES.Identifier;
72
-
73
- const rule: TSESLint.RuleModule<typeof NO_STATUS_CODE_ASSERT> = createRule({
74
- name: ruleId,
75
- meta: {
76
- type: 'problem',
77
- docs: {
78
- description: 'Disallow using status codes in assertions; use error handling instead',
79
- },
80
- schema: [],
81
- messages: {
82
- [NO_STATUS_CODE_ASSERT]: 'Do not use status codes in assertions; use error handling instead',
83
- },
84
- },
85
- defaultOptions: [],
86
- create(context) {
87
- return {
88
- CallExpression(node: TSESTree.CallExpression) {
89
- const callee = node.callee;
90
- if (
91
- (isAssertIdentifier(callee) || isAssertMemberExpression(callee)) &&
92
- node.arguments.some(hasStatusCodeOrValue)
93
- ) {
94
- context.report({
95
- node,
96
- messageId: NO_STATUS_CODE_ASSERT,
97
- });
98
- }
99
- },
100
- };
101
- },
102
- });
103
-
104
- export default rule;