@pjts/eslint-style-rules 0.0.8 → 0.0.9

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.
Files changed (143) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +38 -8
  3. package/dist/index.js +35 -4
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/ast.d.ts +27 -13
  6. package/dist/lib/ast.js +33 -7
  7. package/dist/lib/ast.js.map +1 -1
  8. package/dist/lib/db.d.ts +5 -4
  9. package/dist/lib/db.js +2 -2
  10. package/dist/lib/db.js.map +1 -1
  11. package/dist/lib/rule.d.ts +8 -6
  12. package/dist/lib/rule.js +3 -3
  13. package/dist/lib/rule.js.map +1 -1
  14. package/dist/lib/types.d.ts +69 -0
  15. package/dist/lib/types.js +270 -0
  16. package/dist/lib/types.js.map +1 -0
  17. package/dist/lib/wiring.d.ts +5 -3
  18. package/dist/lib/wiring.js +8 -4
  19. package/dist/lib/wiring.js.map +1 -1
  20. package/dist/rules/app-class-suffix.d.ts +1 -1
  21. package/dist/rules/app-class-suffix.js +1 -1
  22. package/dist/rules/app-class-suffix.js.map +1 -1
  23. package/dist/rules/app-service-endpoints.d.ts +3 -1
  24. package/dist/rules/app-service-endpoints.js +9 -8
  25. package/dist/rules/app-service-endpoints.js.map +1 -1
  26. package/dist/rules/auth-access.d.ts +2 -2
  27. package/dist/rules/auth-access.js +11 -10
  28. package/dist/rules/auth-access.js.map +1 -1
  29. package/dist/rules/config-provider-only.d.ts +1 -1
  30. package/dist/rules/config-provider-only.js +5 -3
  31. package/dist/rules/config-provider-only.js.map +1 -1
  32. package/dist/rules/db-client-dependency.d.ts +1 -1
  33. package/dist/rules/db-client-dependency.js +11 -7
  34. package/dist/rules/db-client-dependency.js.map +1 -1
  35. package/dist/rules/db-writes-in-repositories.d.ts +1 -1
  36. package/dist/rules/db-writes-in-repositories.js +12 -8
  37. package/dist/rules/db-writes-in-repositories.js.map +1 -1
  38. package/dist/rules/decorated-class-contract.d.ts +1 -1
  39. package/dist/rules/decorated-class-contract.js +1 -1
  40. package/dist/rules/decorated-class-contract.js.map +1 -1
  41. package/dist/rules/domain-primitive-params.d.ts +17 -0
  42. package/dist/rules/domain-primitive-params.js +116 -0
  43. package/dist/rules/domain-primitive-params.js.map +1 -0
  44. package/dist/rules/entity-constructor-data.d.ts +1 -1
  45. package/dist/rules/entity-constructor-data.js +4 -3
  46. package/dist/rules/entity-constructor-data.js.map +1 -1
  47. package/dist/rules/event-sourced-aggregate.d.ts +2 -2
  48. package/dist/rules/event-sourced-aggregate.js +8 -8
  49. package/dist/rules/event-sourced-aggregate.js.map +1 -1
  50. package/dist/rules/find-one-naming.d.ts +3 -2
  51. package/dist/rules/find-one-naming.js +35 -8
  52. package/dist/rules/find-one-naming.js.map +1 -1
  53. package/dist/rules/implements-ports-only.d.ts +10 -0
  54. package/dist/rules/implements-ports-only.js +74 -0
  55. package/dist/rules/implements-ports-only.js.map +1 -0
  56. package/dist/rules/import-only-in.d.ts +1 -1
  57. package/dist/rules/import-only-in.js +7 -3
  58. package/dist/rules/import-only-in.js.map +1 -1
  59. package/dist/rules/knex-first.d.ts +2 -1
  60. package/dist/rules/knex-first.js +11 -4
  61. package/dist/rules/knex-first.js.map +1 -1
  62. package/dist/rules/message-file.d.ts +1 -1
  63. package/dist/rules/message-file.js +3 -2
  64. package/dist/rules/message-file.js.map +1 -1
  65. package/dist/rules/message-handler.d.ts +1 -1
  66. package/dist/rules/message-handler.js +7 -6
  67. package/dist/rules/message-handler.js.map +1 -1
  68. package/dist/rules/message-name-reference.d.ts +2 -1
  69. package/dist/rules/message-name-reference.js +24 -5
  70. package/dist/rules/message-name-reference.js.map +1 -1
  71. package/dist/rules/message-names.d.ts +1 -1
  72. package/dist/rules/message-names.js +2 -2
  73. package/dist/rules/message-names.js.map +1 -1
  74. package/dist/rules/module-layout.d.ts +1 -1
  75. package/dist/rules/module-layout.js +1 -1
  76. package/dist/rules/module-layout.js.map +1 -1
  77. package/dist/rules/module-service-getters.d.ts +1 -1
  78. package/dist/rules/module-service-getters.js +11 -9
  79. package/dist/rules/module-service-getters.js.map +1 -1
  80. package/dist/rules/module-shape.d.ts +1 -1
  81. package/dist/rules/module-shape.js +6 -7
  82. package/dist/rules/module-shape.js.map +1 -1
  83. package/dist/rules/no-async-in-domain.d.ts +1 -1
  84. package/dist/rules/no-async-in-domain.js +2 -2
  85. package/dist/rules/no-async-in-domain.js.map +1 -1
  86. package/dist/rules/no-duplicate-sdk-types.d.ts +1 -1
  87. package/dist/rules/no-duplicate-sdk-types.js +1 -1
  88. package/dist/rules/no-duplicate-sdk-types.js.map +1 -1
  89. package/dist/rules/no-entity-assembly-in-app.d.ts +4 -2
  90. package/dist/rules/no-entity-assembly-in-app.js +24 -8
  91. package/dist/rules/no-entity-assembly-in-app.js.map +1 -1
  92. package/dist/rules/no-entity-mutation-outside-domain.d.ts +1 -1
  93. package/dist/rules/no-entity-mutation-outside-domain.js +1 -1
  94. package/dist/rules/no-entity-mutation-outside-domain.js.map +1 -1
  95. package/dist/rules/no-manual-wiring.d.ts +1 -1
  96. package/dist/rules/no-manual-wiring.js +5 -2
  97. package/dist/rules/no-manual-wiring.js.map +1 -1
  98. package/dist/rules/no-message-construction-outside-domain.d.ts +1 -1
  99. package/dist/rules/no-message-construction-outside-domain.js +1 -1
  100. package/dist/rules/no-message-construction-outside-domain.js.map +1 -1
  101. package/dist/rules/no-reconstitute.d.ts +1 -1
  102. package/dist/rules/no-reconstitute.js +1 -1
  103. package/dist/rules/no-reconstitute.js.map +1 -1
  104. package/dist/rules/one-class-per-file.d.ts +7 -0
  105. package/dist/rules/one-class-per-file.js +55 -0
  106. package/dist/rules/one-class-per-file.js.map +1 -0
  107. package/dist/rules/port-file.d.ts +1 -1
  108. package/dist/rules/port-file.js +3 -2
  109. package/dist/rules/port-file.js.map +1 -1
  110. package/dist/rules/port-has-adapters.d.ts +1 -1
  111. package/dist/rules/port-has-adapters.js +1 -1
  112. package/dist/rules/port-has-adapters.js.map +1 -1
  113. package/dist/rules/repository-naming.d.ts +1 -1
  114. package/dist/rules/repository-naming.js +2 -2
  115. package/dist/rules/repository-naming.js.map +1 -1
  116. package/dist/rules/repository-return-types.d.ts +10 -0
  117. package/dist/rules/repository-return-types.js +67 -0
  118. package/dist/rules/repository-return-types.js.map +1 -0
  119. package/dist/rules/repository-serialization.d.ts +13 -3
  120. package/dist/rules/repository-serialization.js +108 -12
  121. package/dist/rules/repository-serialization.js.map +1 -1
  122. package/dist/rules/return-entities.d.ts +1 -1
  123. package/dist/rules/return-entities.js +3 -3
  124. package/dist/rules/return-entities.js.map +1 -1
  125. package/dist/rules/save-contract.d.ts +5 -3
  126. package/dist/rules/save-contract.js +18 -5
  127. package/dist/rules/save-contract.js.map +1 -1
  128. package/dist/rules/subclass-declares-constructor.d.ts +1 -1
  129. package/dist/rules/subclass-declares-constructor.js +1 -1
  130. package/dist/rules/subclass-declares-constructor.js.map +1 -1
  131. package/dist/rules/test-location.d.ts +1 -1
  132. package/dist/rules/test-location.js +1 -1
  133. package/dist/rules/test-location.js.map +1 -1
  134. package/dist/rules/throw-app-error.d.ts +1 -1
  135. package/dist/rules/throw-app-error.js +4 -3
  136. package/dist/rules/throw-app-error.js.map +1 -1
  137. package/dist/rules/trackable-repository.d.ts +1 -1
  138. package/dist/rules/trackable-repository.js +4 -4
  139. package/dist/rules/trackable-repository.js.map +1 -1
  140. package/dist/rules/unique-class-names.d.ts +1 -1
  141. package/dist/rules/unique-class-names.js +5 -4
  142. package/dist/rules/unique-class-names.js.map +1 -1
  143. package/package.json +18 -6
@@ -1 +1 @@
1
- {"version":3,"file":"find-one-naming.js","sourceRoot":"","sources":["../../src/rules/find-one-naming.ts"],"names":[],"mappings":";;AAAA,oCAAqE;AACrE,sCAAyC;AAEzC;;;;GAIG;AACH,kBAAe,IAAA,iBAAU,EAAC;IACxB,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,EAAE,WAAW,EAAE,yDAAyD,EAAE;QAChF,QAAQ,EAAE,EAAE,IAAI,EAAE,+DAA+D,EAAE;QACnF,MAAM,EAAE,EAAE;KACX;IACD,MAAM,CAAC,OAAO;QACZ,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;QAClC,OAAO;YACL,0DAA0D,CAAC,MAAM;gBAC/D,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC7B,IAAI,CAAC,IAAI,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,OAAO;gBACvD,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;gBACxB,MAAM,UAAU,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACxG,IAAI,IAAA,wBAAkB,EAAC,UAAU,EAAE,cAAc,CAAC,KAAK,WAAW;oBAAE,OAAO;gBAC3E,MAAM,QAAQ,GAAG,IAAA,yBAAmB,EAAC,EAAE,CAAC,UAAU,CAAC,CAAC;gBACpD,IAAI,QAAQ,EAAE,IAAI,KAAK,iBAAiB;oBAAE,OAAO;gBACjD,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;oBAAE,OAAO;gBAClE,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;YAC1E,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"find-one-naming.js","sourceRoot":"","sources":["../../src/rules/find-one-naming.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Infrastructure classes implement ports only: every name in an `implements` clause ends with
3
+ * `portSuffix` (`Port`), and a `…Repository` class implements at least one port — with
4
+ * `requireRepositoryPort` a `…RepositoryPort` (lookup repositories behind a `…DirectoryPort` fail then).
5
+ * Interfaces imported from packages (`OnBoot` from `@pjts/server`) are framework contracts and are
6
+ * skipped unless `ignorePackageTypes` is false; a source counts as a package when it is neither
7
+ * relative nor one of `pathAliases`. Abstract classes are not asked for a repository port.
8
+ */
9
+ declare const _default: import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<string, any[], unknown, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener>;
10
+ export default _default;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const rule_1 = require("../lib/rule");
4
+ const types_1 = require("../lib/types");
5
+ /**
6
+ * Infrastructure classes implement ports only: every name in an `implements` clause ends with
7
+ * `portSuffix` (`Port`), and a `…Repository` class implements at least one port — with
8
+ * `requireRepositoryPort` a `…RepositoryPort` (lookup repositories behind a `…DirectoryPort` fail then).
9
+ * Interfaces imported from packages (`OnBoot` from `@pjts/server`) are framework contracts and are
10
+ * skipped unless `ignorePackageTypes` is false; a source counts as a package when it is neither
11
+ * relative nor one of `pathAliases`. Abstract classes are not asked for a repository port.
12
+ */
13
+ exports.default = (0, rule_1.defineRule)({
14
+ meta: {
15
+ type: 'suggestion',
16
+ docs: { description: 'Require infrastructure classes to implement only ports', url: 'https://github.com/PiotrJozefow/pjx/tree/master/modules/eslint-style-rules#implements-ports-only' },
17
+ messages: {
18
+ notPort: '"{{name}}" implements "{{type}}", which is not a port — rename it to …{{suffix}} (app/ports) or drop the clause.',
19
+ noRepositoryPort: 'Repository "{{name}}" must implement a …{{expected}}.',
20
+ },
21
+ schema: [{
22
+ type: 'object',
23
+ properties: {
24
+ portSuffix: { type: 'string' },
25
+ repositoryPattern: { type: 'string' },
26
+ ignorePackageTypes: { type: 'boolean' },
27
+ requireRepositoryPort: { type: 'boolean' },
28
+ pathAliases: { type: 'object', additionalProperties: { type: 'string' } },
29
+ },
30
+ additionalProperties: false,
31
+ }],
32
+ },
33
+ create(context) {
34
+ const { portSuffix = 'Port', repositoryPattern = 'Repository$', ignorePackageTypes = true, requireRepositoryPort = false, pathAliases = types_1.DEFAULT_PATH_ALIASES, } = context.options[0] ?? {};
35
+ const repository = new RegExp(repositoryPattern);
36
+ const aliasPrefixes = Object.keys(pathAliases).map((pattern) => pattern.replace(/\*$/, ''));
37
+ const isPackage = (source) => !source.startsWith('.') && !aliasPrefixes.some((prefix) => source.startsWith(prefix));
38
+ const fromPackages = new Set();
39
+ /** `Foo`, `ns.Foo`, `Foo<T>` → { name: 'Foo', root: 'Foo' | 'ns' }. */
40
+ const implemented = (clause) => {
41
+ let expression = clause.expression;
42
+ const last = expression.type === 'MemberExpression' ? (expression.property.type === 'Identifier' ? expression.property.name : '') : expression.type === 'Identifier' ? expression.name : '';
43
+ while (expression.type === 'MemberExpression')
44
+ expression = expression.object;
45
+ return { name: last, root: expression.type === 'Identifier' ? expression.name : '' };
46
+ };
47
+ const check = (node) => {
48
+ if (!node.id)
49
+ return;
50
+ const clauses = (node.implements ?? []).map(implemented);
51
+ for (const [index, clause] of clauses.entries()) {
52
+ if (ignorePackageTypes && fromPackages.has(clause.root))
53
+ continue;
54
+ if (!clause.name.endsWith(portSuffix)) {
55
+ context.report({ node: node.implements[index], messageId: 'notPort', data: { name: node.id.name, type: clause.name, suffix: portSuffix } });
56
+ }
57
+ }
58
+ const expected = requireRepositoryPort ? `Repository${portSuffix}` : portSuffix;
59
+ if (repository.test(node.id.name) && !node.abstract && !clauses.some((clause) => clause.name.endsWith(expected))) {
60
+ context.report({ node: node.id, messageId: 'noRepositoryPort', data: { name: node.id.name, expected } });
61
+ }
62
+ };
63
+ return {
64
+ ImportDeclaration(node) {
65
+ if (!isPackage(node.source.value))
66
+ return;
67
+ for (const specifier of node.specifiers)
68
+ fromPackages.add(specifier.local.name);
69
+ },
70
+ ClassDeclaration: check,
71
+ };
72
+ },
73
+ });
74
+ //# sourceMappingURL=implements-ports-only.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implements-ports-only.js","sourceRoot":"","sources":["../../src/rules/implements-ports-only.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,5 @@
3
3
  * — importing (or requiring) `uuid` from a file whose path contains none of the listed fragments is
4
4
  * an error. Sub-paths count (`uuid/v4`).
5
5
  */
6
- declare const _default: import("eslint").Rule.RuleModule;
6
+ declare const _default: import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<string, any[], unknown, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener>;
7
7
  export default _default;
@@ -10,7 +10,7 @@ const rule_1 = require("../lib/rule");
10
10
  exports.default = (0, rule_1.defineRule)({
11
11
  meta: {
12
12
  type: 'problem',
13
- docs: { description: 'Restrict packages to the layers allowed to use them' },
13
+ docs: { description: 'Restrict packages to the layers allowed to use them', url: 'https://github.com/PiotrJozefow/pjx/tree/master/modules/eslint-style-rules#import-only-in' },
14
14
  messages: { restricted: '"{{module}}" may only be used in {{allowed}} — {{why}}' },
15
15
  schema: [{
16
16
  type: 'object',
@@ -43,8 +43,12 @@ exports.default = (0, rule_1.defineRule)({
43
43
  return {
44
44
  ImportDeclaration: (node) => check(node, node.source.value),
45
45
  ExportAllDeclaration: (node) => check(node, node.source.value),
46
- 'ExportNamedDeclaration[source]': (node) => check(node, node.source.value),
47
- 'CallExpression[callee.name="require"][arguments.0.type="Literal"]': (node) => check(node, String(node.arguments[0].value)),
46
+ 'ExportNamedDeclaration[source]': (node) => node.source && check(node, node.source.value),
47
+ 'CallExpression[callee.name="require"][arguments.0.type="Literal"]': (node) => {
48
+ const argument = node.arguments[0];
49
+ if (argument?.type === 'Literal')
50
+ check(node, String(argument.value));
51
+ },
48
52
  ImportExpression: (node) => node.source.type === 'Literal' && check(node, String(node.source.value)),
49
53
  };
50
54
  },
@@ -1 +1 @@
1
- {"version":3,"file":"import-only-in.js","sourceRoot":"","sources":["../../src/rules/import-only-in.ts"],"names":[],"mappings":";;AAAA,oCAAsC;AACtC,sCAAyC;AAEzC;;;;GAIG;AACH,kBAAe,IAAA,iBAAU,EAAC;IACxB,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,EAAE,WAAW,EAAE,qDAAqD,EAAE;QAC5E,QAAQ,EAAE,EAAE,UAAU,EAAE,wDAAwD,EAAE;QAClF,MAAM,EAAE,CAAC;gBACP,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,OAAO,EAAE;wBACP,IAAI,EAAE,QAAQ;wBACd,oBAAoB,EAAE;4BACpB,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;4BAC/F,QAAQ,EAAE,CAAC,OAAO,CAAC;4BACnB,oBAAoB,EAAE,KAAK;yBAC5B;qBACF;iBACF;gBACD,oBAAoB,EAAE,KAAK;aAC5B,CAAC;KACH;IACD,MAAM,CAAC,OAAO;QACZ,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,IAAA,cAAQ,EAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;YACrG,IAAI,CAAC,MAAM;gBAAE,OAAO;YACpB,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,4BAA4B,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YACzE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;gBACvD,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YAC9G,CAAC;QACH,CAAC,CAAC;QACF,OAAO;YACL,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAC3D,oBAAoB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAC9D,gCAAgC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAC1E,mEAAmE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC3H,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACrG,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"import-only-in.js","sourceRoot":"","sources":["../../src/rules/import-only-in.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { TSESLint } from '@typescript-eslint/utils';
1
2
  /** single-record reads end the knex query with `.first()` instead of destructuring an array. */
2
- declare const _default: import("eslint").Rule.RuleModule;
3
+ declare const _default: TSESLint.RuleModule<string, any[], unknown, TSESLint.RuleListener>;
3
4
  export default _default;
@@ -5,7 +5,8 @@ const rule_1 = require("../lib/rule");
5
5
  exports.default = (0, rule_1.defineRule)({
6
6
  meta: {
7
7
  type: 'suggestion',
8
- docs: { description: 'Require knex `.first()` for single-record reads' },
8
+ fixable: 'code',
9
+ docs: { description: 'Require knex `.first()` for single-record reads', url: 'https://github.com/PiotrJozefow/pjx/tree/master/modules/eslint-style-rules#knex-first' },
9
10
  messages: { first: 'Single-record read: end the query with .first() instead of destructuring the result.' },
10
11
  schema: [],
11
12
  },
@@ -14,12 +15,18 @@ exports.default = (0, rule_1.defineRule)({
14
15
  const knexQuery = /^(this\.)?(db|knex|trx)\s*(<[^>]*>)?\(/;
15
16
  return {
16
17
  'VariableDeclarator[id.type="ArrayPattern"][init.type="AwaitExpression"]'(node) {
17
- if (node.id.elements.length !== 1)
18
+ if (node.id.type !== 'ArrayPattern' || node.init?.type !== 'AwaitExpression' || node.id.elements.length !== 1)
18
19
  return;
19
- const query = source.getText(node.init.argument);
20
+ const { id, init } = node;
21
+ const query = source.getText(init.argument);
20
22
  // Writes that genuinely return rows (`RETURNING`) are fine to destructure.
21
23
  if (knexQuery.test(query) && !/\.(returning|insert|update|del|delete)\(/.test(query)) {
22
- context.report({ node, messageId: 'first' });
24
+ const [element] = id.elements;
25
+ // `[row]` with a plain identifier (no default, no rest) rewrites mechanically; anything else is reported only.
26
+ const fix = element?.type === 'Identifier'
27
+ ? (fixer) => [fixer.replaceText(id, source.getText(element)), fixer.insertTextAfter(init.argument, '.first()')]
28
+ : undefined;
29
+ context.report({ node, messageId: 'first', fix });
23
30
  }
24
31
  },
25
32
  };
@@ -1 +1 @@
1
- {"version":3,"file":"knex-first.js","sourceRoot":"","sources":["../../src/rules/knex-first.ts"],"names":[],"mappings":";;AAAA,sCAAyC;AACzC,gGAAgG;AAChG,kBAAe,IAAA,iBAAU,EAAC;IACxB,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,EAAE,WAAW,EAAE,iDAAiD,EAAE;QACxE,QAAQ,EAAE,EAAE,KAAK,EAAE,sFAAsF,EAAE;QAC3G,MAAM,EAAE,EAAE;KACX;IACD,MAAM,CAAC,OAAO;QACZ,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;QAClC,MAAM,SAAS,GAAG,wCAAwC,CAAC;QAC3D,OAAO;YACL,yEAAyE,CAAC,IAAI;gBAC5E,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO;gBAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACjD,2EAA2E;gBAC3E,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACrF,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"knex-first.js","sourceRoot":"","sources":["../../src/rules/knex-first.ts"],"names":[],"mappings":";;AACA,sCAAyC;AACzC,gGAAgG;AAChG,kBAAe,IAAA,iBAAU,EAAC;IACxB,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,EAAE,WAAW,EAAE,iDAAiD,EAAE,GAAG,EAAE,uFAAuF,EAAE;QACtK,QAAQ,EAAE,EAAE,KAAK,EAAE,sFAAsF,EAAE;QAC3G,MAAM,EAAE,EAAE;KACX;IACD,MAAM,CAAC,OAAO;QACZ,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;QAClC,MAAM,SAAS,GAAG,wCAAwC,CAAC;QAC3D,OAAO;YACL,yEAAyE,CAAC,IAAiC;gBACzG,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,cAAc,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,iBAAiB,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO;gBACtH,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;gBAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC5C,2EAA2E;gBAC3E,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACrF,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC;oBAC9B,+GAA+G;oBAC/G,MAAM,GAAG,GAAG,OAAO,EAAE,IAAI,KAAK,YAAY;wBACxC,CAAC,CAAC,CAAC,KAAyB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;wBACnI,CAAC,CAAC,SAAS,CAAC;oBACd,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -14,5 +14,5 @@
14
14
  * uses (`OrderItem`) may sit next to it; another message or runtime code may not. Base files (`basePattern`) only
15
15
  * extend `Message` and have no `name`. `index.ts` is checked by `message-names`.
16
16
  */
17
- declare const _default: import("eslint").Rule.RuleModule;
17
+ declare const _default: import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<string, any[], unknown, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener>;
18
18
  export default _default;
@@ -23,7 +23,7 @@ const messages_1 = require("../lib/messages");
23
23
  exports.default = (0, rule_1.defineRule)({
24
24
  meta: {
25
25
  type: 'problem',
26
- docs: { description: 'One message interface per file, named and typed after the file' },
26
+ docs: { description: 'One message interface per file, named and typed after the file', url: 'https://github.com/PiotrJozefow/pjx/tree/master/modules/eslint-style-rules#message-file' },
27
27
  messages: {
28
28
  onePerFile: 'One message per file — move "{{name}}" to its own file (unions go in index.ts; only helper payload types may stay).',
29
29
  missing: '"{{file}}.ts" must declare `export interface {{file}} extends Message`.',
@@ -56,7 +56,8 @@ exports.default = (0, rule_1.defineRule)({
56
56
  if (statement.type !== 'ImportDeclaration')
57
57
  continue;
58
58
  for (const specifier of statement.specifiers) {
59
- if (messageModules.includes(statement.source.value) && (specifier.imported?.name ?? specifier.local.name) === 'Message')
59
+ const imported = specifier.type === 'ImportSpecifier' ? (specifier.imported.type === 'Identifier' ? specifier.imported.name : specifier.imported.value) : specifier.local.name;
60
+ if (messageModules.includes(statement.source.value) && imported === 'Message')
60
61
  messageImports.add(specifier.local.name);
61
62
  }
62
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"message-file.js","sourceRoot":"","sources":["../../src/rules/message-file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message-file.js","sourceRoot":"","sources":["../../src/rules/message-file.ts"],"names":[],"mappings":"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"}
@@ -15,5 +15,5 @@
15
15
  * - depends only on ports (`…Port`) or application classes imported from the app layer — the
16
16
  * infrastructure is wired in by the module's `…MessageHandlers` composition root.
17
17
  */
18
- declare const _default: import("eslint").Rule.RuleModule;
18
+ declare const _default: import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<string, any[], unknown, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener>;
19
19
  export default _default;
@@ -24,7 +24,7 @@ const messages_1 = require("../lib/messages");
24
24
  exports.default = (0, rule_1.defineRule)({
25
25
  meta: {
26
26
  type: 'problem',
27
- docs: { description: 'Enforce the shape and dependencies of message handlers' },
27
+ docs: { description: 'Enforce the shape and dependencies of message handlers', url: 'https://github.com/PiotrJozefow/pjx/tree/master/modules/eslint-style-rules#message-handler' },
28
28
  messages: {
29
29
  suffix: 'Message handler "{{name}}" must end with "Handler".',
30
30
  location: 'Message handler "{{name}}" belongs in {{paths}}.',
@@ -60,7 +60,7 @@ exports.default = (0, rule_1.defineRule)({
60
60
  imports.set(specifier.local.name, node.source.value);
61
61
  },
62
62
  ClassDeclaration(node) {
63
- if (!bases.includes(node.superClass?.name))
63
+ if (node.superClass?.type !== 'Identifier' || !bases.includes(node.superClass.name))
64
64
  return;
65
65
  const name = node.id?.name ?? '(anonymous)';
66
66
  const at = node.id ?? node;
@@ -68,7 +68,7 @@ exports.default = (0, rule_1.defineRule)({
68
68
  context.report({ node: at, messageId: 'suffix', data: { name } });
69
69
  if (!paths.some((fragment) => file.includes(fragment)))
70
70
  context.report({ node: at, messageId: 'location', data: { name, paths: paths.join(' or ') } });
71
- const members = node.body.body.filter((member) => member.type === 'MethodDefinition');
71
+ const members = (0, ast_1.methods)(node);
72
72
  const constructor = members.find((member) => member.kind === 'constructor');
73
73
  const superCall = constructor?.value.body?.body
74
74
  .map((statement) => statement.expression)
@@ -78,13 +78,13 @@ exports.default = (0, rule_1.defineRule)({
78
78
  if (!list || list.type !== 'ArrayExpression' || subscribed.length === 0 || subscribed.some((n) => !n)) {
79
79
  context.report({ node: superCall ?? constructor?.key ?? at, messageId: 'subscription', data: { name, enumName } });
80
80
  }
81
- const handle = members.find((member) => (member.key.name ?? member.key.value) === 'handleMessage');
81
+ const handle = members.find((member) => (0, ast_1.memberName)(member) === 'handleMessage');
82
82
  if (!handle || handle.accessibility !== 'protected') {
83
83
  context.report({ node: handle?.key ?? at, messageId: 'handleMessage', data: { name } });
84
84
  }
85
85
  else {
86
86
  const param = handle.value.params[0] && (0, db_1.paramBinding)(handle.value.params[0]);
87
- if (!param?.typeAnnotation)
87
+ if (!param || !('typeAnnotation' in param) || !param.typeAnnotation)
88
88
  context.report({ node: param ?? handle.key, messageId: 'untyped' });
89
89
  const handled = (0, messages_1.switchCaseNames)(handle.value.body, enumName);
90
90
  if (handled.size > 0) {
@@ -99,7 +99,8 @@ exports.default = (0, rule_1.defineRule)({
99
99
  }
100
100
  }
101
101
  for (const param of constructor?.value.params ?? []) {
102
- const type = (0, db_1.paramBinding)(param).typeAnnotation?.typeAnnotation;
102
+ const binding = (0, db_1.paramBinding)(param);
103
+ const type = 'typeAnnotation' in binding ? binding.typeAnnotation?.typeAnnotation : undefined;
103
104
  const typeName = type?.type === 'TSTypeReference' && type.typeName.type === 'Identifier' ? type.typeName.name : null;
104
105
  if (!typeName)
105
106
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"message-handler.js","sourceRoot":"","sources":["../../src/rules/message-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message-handler.js","sourceRoot":"","sources":["../../src/rules/message-handler.ts"],"names":[],"mappings":";;AACA,sCAAyC;AACzC,oCAA2D;AAC3D,kCAAyC;AACzC,8CAAiE;AAEjE;;;;;;;;;;;;;;;;GAgBG;AACH,kBAAe,IAAA,iBAAU,EAAC;IACxB,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,EAAE,WAAW,EAAE,wDAAwD,EAAE,GAAG,EAAE,4FAA4F,EAAE;QAClL,QAAQ,EAAE;YACR,MAAM,EAAE,qDAAqD;YAC7D,QAAQ,EAAE,kDAAkD;YAC5D,YAAY,EAAE,2DAA2D;YACzE,SAAS,EAAE,8FAA8F;YACzG,aAAa,EAAE,iGAAiG;YAChH,aAAa,EAAE,qFAAqF;YACpG,OAAO,EAAE,oFAAoF;YAC7F,UAAU,EAAE,oJAAoJ;SACjK;QACD,MAAM,EAAE,CAAC;gBACP,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;oBACnD,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;oBACnD,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC5B,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACrC,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;iBAC3D;gBACD,oBAAoB,EAAE,KAAK;aAC5B,CAAC;KACH;IACD,MAAM,CAAC,OAAO;QACZ,MAAM,EAAE,KAAK,GAAG,CAAC,oBAAoB,CAAC,EAAE,KAAK,GAAG,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,cAAc,EAAE,iBAAiB,GAAG,OAAO,EAAE,YAAY,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAClK,MAAM,IAAI,GAAG,IAAA,cAAQ,EAAC,OAAO,CAAC,CAAC;QAC/B,iCAAiC;QACjC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC1C,yGAAyG;QACzG,MAAM,WAAW,GAAG,CAAC,MAA0B,EAAE,EAAE,CACjD,CAAC,CAAC,MAAM,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAEtH,OAAO;YACL,iBAAiB,CAAC,IAAI;gBACpB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU;oBAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAChG,CAAC;YACD,gBAAgB,CAAC,IAAI;gBACnB,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,YAAY,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;oBAAE,OAAO;gBAC5F,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,aAAa,CAAC;gBAC5C,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAAE,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBACjG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBAAE,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;gBAE/J,MAAM,OAAO,GAAG,IAAA,aAAO,EAAC,IAAI,CAAC,CAAC;gBAC9B,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;gBAC5E,MAAM,SAAS,GAAG,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI;qBAC5C,GAAG,CAAC,CAAC,SAAc,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC;qBAC7C,IAAI,CAAC,CAAC,UAAe,EAAE,EAAE,CAAC,UAAU,EAAE,IAAI,KAAK,gBAAgB,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;gBAC1G,MAAM,IAAI,GAAG,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;gBACrC,MAAM,UAAU,GAAG,IAAI,EAAE,IAAI,KAAK,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,IAAA,wBAAa,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrH,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,IAAI,WAAW,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;gBACrH,CAAC;gBAED,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,gBAAU,EAAC,MAAM,CAAC,KAAK,eAAe,CAAC,CAAC;gBAChF,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,aAAa,KAAK,WAAW,EAAE,CAAC;oBACpD,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC1F,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAA,iBAAY,EAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7E,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,gBAAgB,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc;wBAAE,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;oBACzI,MAAM,OAAO,GAAG,IAAA,0BAAe,EAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;oBAC7D,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;wBACrB,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;4BACjD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;gCAAE,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;wBACvH,CAAC;wBACD,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;4BAC9B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC;gCAAE,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;wBACnI,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;oBACpD,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,KAAK,CAAC,CAAC;oBACpC,MAAM,IAAI,GAAG,gBAAgB,IAAI,OAAO,CAAC,CAAC,CAAE,OAAO,CAAC,cAAwD,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;oBACzI,MAAM,QAAQ,GAAG,IAAI,EAAE,IAAI,KAAK,iBAAiB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;oBACrH,IAAI,CAAC,QAAQ;wBAAE,SAAS;oBACxB,IAAI,IAAI,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBAAE,SAAS;oBACpI,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAC3F,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -1,7 +1,8 @@
1
+ import type { TSESLint } from '@typescript-eslint/utils';
1
2
  /**
2
3
  * Message names are referenced through the enum (`MessageNames.CalendarBooked`), never as string
3
4
  * literals: in a `name:` property, a `case` label of a `switch (x.name)`, or the names a `MessageHandlerBase` subclass
4
5
  * passes to `super([...])`. A literal skips the compiler's check that the message exists.
5
6
  */
6
- declare const _default: import("eslint").Rule.RuleModule;
7
+ declare const _default: TSESLint.RuleModule<string, any[], unknown, TSESLint.RuleListener>;
7
8
  export default _default;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const ast_1 = require("../lib/ast");
3
4
  const rule_1 = require("../lib/rule");
4
5
  /**
5
6
  * Message names are referenced through the enum (`MessageNames.CalendarBooked`), never as string
@@ -9,7 +10,8 @@ const rule_1 = require("../lib/rule");
9
10
  exports.default = (0, rule_1.defineRule)({
10
11
  meta: {
11
12
  type: 'problem',
12
- docs: { description: 'Reference message names through the MessageNames enum' },
13
+ fixable: 'code',
14
+ docs: { description: 'Reference message names through the MessageNames enum', url: 'https://github.com/PiotrJozefow/pjx/tree/master/modules/eslint-style-rules#message-name-reference' },
13
15
  messages: { literal: 'Use {{enumName}}.{{suggestion}} instead of the string \'{{value}}\'.' },
14
16
  schema: [{
15
17
  type: 'object',
@@ -21,16 +23,33 @@ exports.default = (0, rule_1.defineRule)({
21
23
  const { enumName = 'MessageNames', pattern = '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)+$', handlerBases = ['MessageHandlerBase'] } = context.options[0] ?? {};
22
24
  const isName = (node) => node?.type === 'Literal' && typeof node.value === 'string' && new RegExp(pattern).test(node.value);
23
25
  const pascal = (value) => value.toLowerCase().replace(/(^|_)([a-z0-9])/g, (_m, _s, c) => c.toUpperCase());
24
- const report = (node) => context.report({ node, messageId: 'literal', data: { enumName, value: node.value, suggestion: pascal(node.value) } });
26
+ // The literal can be replaced only when the enum is reachable in this file (imported or declared here).
27
+ let enumInScope = false;
28
+ const report = (node) => {
29
+ const suggestion = pascal(node.value);
30
+ const member = `${enumName}.${suggestion}`;
31
+ const isTypePosition = node.parent?.type === 'TSLiteralType';
32
+ context.report({
33
+ node,
34
+ messageId: 'literal',
35
+ data: { enumName, value: node.value, suggestion },
36
+ fix: enumInScope ? (fixer) => fixer.replaceText(isTypePosition ? node.parent : node, member) : undefined,
37
+ });
38
+ };
25
39
  return {
40
+ Program(program) {
41
+ enumInScope = program.body.some((statement) => (statement.type === 'ImportDeclaration' && statement.specifiers.some((s) => (s.local?.name) === enumName))
42
+ || (statement.type === 'TSEnumDeclaration' && statement.id.name === enumName)
43
+ || (statement.type === 'ExportNamedDeclaration' && statement.declaration?.type === 'TSEnumDeclaration' && statement.declaration.id.name === enumName));
44
+ },
26
45
  'Property[computed=false]'(node) {
27
- if ((node.key.name ?? node.key.value) === 'name' && isName(node.value))
46
+ if ((0, ast_1.keyName)(node.key) === 'name' && isName(node.value))
28
47
  report(node.value);
29
48
  },
30
49
  'TSPropertySignature'(node) {
31
50
  // `name: 'CALENDAR_BOOKED'` as a type in a message interface.
32
51
  const type = node.typeAnnotation?.typeAnnotation;
33
- if ((node.key.name ?? node.key.value) === 'name' && type?.type === 'TSLiteralType' && isName(type.literal))
52
+ if ((0, ast_1.keyName)(node.key) === 'name' && type?.type === 'TSLiteralType' && isName(type.literal))
34
53
  report(type.literal);
35
54
  },
36
55
  // Only switches on a message's name — `switch (status) { case 'PART_CAPTURED': … }` is someone else's enum.
@@ -39,7 +58,7 @@ exports.default = (0, rule_1.defineRule)({
39
58
  report(node.test);
40
59
  },
41
60
  'CallExpression[callee.type="Super"]'(node) {
42
- const owner = context.sourceCode.getAncestors(node).reverse().find((a) => a.type === 'ClassDeclaration' || a.type === 'ClassExpression');
61
+ const owner = [...context.sourceCode.getAncestors(node)].reverse().find((a) => a.type === 'ClassDeclaration' || a.type === 'ClassExpression');
43
62
  if (!handlerBases.includes(owner?.superClass?.name))
44
63
  return;
45
64
  const list = node.arguments[0];
@@ -1 +1 @@
1
- {"version":3,"file":"message-name-reference.js","sourceRoot":"","sources":["../../src/rules/message-name-reference.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message-name-reference.js","sourceRoot":"","sources":["../../src/rules/message-name-reference.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,5 @@
3
3
  * files next to it: every `MessageNames` key has a `<Key>.ts`, every message file has a key and a
4
4
  * re-export, and every value is the key in SCREAMING_SNAKE_CASE (`CalendarBooked = 'CALENDAR_BOOKED'`).
5
5
  */
6
- declare const _default: import("eslint").Rule.RuleModule;
6
+ declare const _default: import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<string, any[], unknown, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener>;
7
7
  export default _default;
@@ -13,7 +13,7 @@ const messages_1 = require("../lib/messages");
13
13
  exports.default = (0, rule_1.defineRule)({
14
14
  meta: {
15
15
  type: 'problem',
16
- docs: { description: 'Keep MessageNames, message files and re-exports in step' },
16
+ docs: { description: 'Keep MessageNames, message files and re-exports in step', url: 'https://github.com/PiotrJozefow/pjx/tree/master/modules/eslint-style-rules#message-names' },
17
17
  messages: {
18
18
  noEnum: 'The messages index must declare `export enum {{enumName}}`.',
19
19
  noFile: '{{enumName}}.{{key}} has no message file "{{key}}.ts".',
@@ -64,7 +64,7 @@ exports.default = (0, rule_1.defineRule)({
64
64
  exportsAll = true;
65
65
  if (statement.type === 'ExportNamedDeclaration' && statement.source) {
66
66
  for (const specifier of statement.specifiers)
67
- reExported.add(specifier.exported.name ?? specifier.exported.value);
67
+ reExported.add(specifier.exported.type === 'Identifier' ? specifier.exported.name : specifier.exported.value);
68
68
  }
69
69
  }
70
70
  for (const file of files) {
@@ -1 +1 @@
1
- {"version":3,"file":"message-names.js","sourceRoot":"","sources":["../../src/rules/message-names.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message-names.js","sourceRoot":"","sources":["../../src/rules/message-names.ts"],"names":[],"mappings":"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"}
@@ -5,5 +5,5 @@
5
5
  * <module>/app/{dto,ports}/… (app-layer classes sit directly in app/; tests next to them)
6
6
  * The `<Module>Module.ts` file additionally checks that the required entries exist on disk.
7
7
  */
8
- declare const _default: import("eslint").Rule.RuleModule;
8
+ declare const _default: import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<string, any[], unknown, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener>;
9
9
  export default _default;
@@ -15,7 +15,7 @@ const rule_1 = require("../lib/rule");
15
15
  exports.default = (0, rule_1.defineRule)({
16
16
  meta: {
17
17
  type: 'suggestion',
18
- docs: { description: 'Enforce the DDD module folder layout' },
18
+ docs: { description: 'Enforce the DDD module folder layout', url: 'https://github.com/PiotrJozefow/pjx/tree/master/modules/eslint-style-rules#module-layout' },
19
19
  messages: {
20
20
  rootFile: '"{{file}}" must not sit in the module root — only {{allowed}} live there.',
21
21
  folder: 'Folder "{{folder}}/" is not part of the module layout ({{allowed}}).',
@@ -1 +1 @@
1
- {"version":3,"file":"module-layout.js","sourceRoot":"","sources":["../../src/rules/module-layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module-layout.js","sourceRoot":"","sources":["../../src/rules/module-layout.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- declare const _default: import("eslint").Rule.RuleModule;
1
+ declare const _default: import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<string, any[], unknown, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener>;
2
2
  export default _default;