@codeperfect/eslint-plugin 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. package/README.md +3 -2
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/application/custom-rules.d.ts +8 -8
  4. package/dist/application/custom-rules.js +14 -14
  5. package/dist/application/index.d.ts +1 -1
  6. package/dist/application/index.d.ts.map +1 -1
  7. package/dist/application/index.js +2 -2
  8. package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
  9. package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts +3 -4
  10. package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts.map +1 -1
  11. package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.js +5 -3
  12. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +1 -1
  13. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +17 -7
  14. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +1 -1
  15. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.js +29 -2
  16. package/dist/domain/architecture/consistent-barrel-files/index.d.ts +2 -0
  17. package/dist/domain/architecture/consistent-barrel-files/index.d.ts.map +1 -1
  18. package/dist/domain/architecture/consistent-barrel-files/index.js +3 -1
  19. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.d.ts +5 -0
  20. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.d.ts.map +1 -0
  21. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.js +247 -0
  22. package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.d.ts +5 -0
  23. package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.d.ts.map +1 -0
  24. package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.js +136 -0
  25. package/dist/domain/architecture/consistent-barrel-files/rule.d.ts.map +1 -1
  26. package/dist/domain/architecture/consistent-barrel-files/rule.js +1 -2
  27. package/dist/domain/architecture/index.d.ts +2 -1
  28. package/dist/domain/architecture/index.d.ts.map +1 -1
  29. package/dist/domain/architecture/index.js +3 -2
  30. package/dist/domain/architecture/no-unused-exports/index.d.ts +3 -0
  31. package/dist/domain/architecture/no-unused-exports/index.d.ts.map +1 -0
  32. package/dist/domain/architecture/no-unused-exports/index.js +2 -0
  33. package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.d.ts +50 -0
  34. package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.d.ts.map +1 -0
  35. package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.js +141 -0
  36. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts +49 -0
  37. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts.map +1 -0
  38. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.js +608 -0
  39. package/dist/domain/architecture/no-unused-exports/rule.d.ts +5 -0
  40. package/dist/domain/architecture/no-unused-exports/rule.d.ts.map +1 -0
  41. package/dist/domain/architecture/no-unused-exports/rule.js +82 -0
  42. package/dist/domain/architecture/no-unused-exports/types.d.ts +32 -0
  43. package/dist/domain/architecture/no-unused-exports/types.d.ts.map +1 -0
  44. package/dist/domain/architecture/no-unused-exports/types.js +2 -0
  45. package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -1
  46. package/dist/domain/core/no-multiple-declarators/rule.js +53 -4
  47. package/dist/domain/core/no-multiple-declarators/types.d.ts +3 -1
  48. package/dist/domain/core/no-multiple-declarators/types.d.ts.map +1 -1
  49. package/dist/domain/core/no-multiple-declarators/types.js +5 -2
  50. package/dist/domain/core/prefer-interface-types/rule.d.ts.map +1 -1
  51. package/dist/domain/core/prefer-interface-types/rule.js +90 -22
  52. package/dist/domain/custom-rule-documentation.d.ts +1 -14
  53. package/dist/domain/custom-rule-documentation.d.ts.map +1 -1
  54. package/dist/domain/custom-rule-documentation.js +2 -2
  55. package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -1
  56. package/dist/domain/docs/no-interface-member-docs/comment-utilities.js +11 -2
  57. package/dist/domain/docs/no-interface-member-docs/parameter-tags.d.ts.map +1 -1
  58. package/dist/domain/docs/no-interface-member-docs/parameter-tags.js +1 -1
  59. package/dist/domain/docs/no-interface-member-docs/rule.d.ts.map +1 -1
  60. package/dist/domain/docs/no-interface-member-docs/rule.js +7 -2
  61. package/dist/domain/docs/require-example-language/examples.d.ts +4 -15
  62. package/dist/domain/docs/require-example-language/examples.d.ts.map +1 -1
  63. package/dist/domain/docs/require-example-language/examples.js +119 -26
  64. package/dist/domain/docs/require-example-language/fixes.d.ts +1 -21
  65. package/dist/domain/docs/require-example-language/fixes.d.ts.map +1 -1
  66. package/dist/domain/docs/require-example-language/fixes.js +5 -2
  67. package/dist/domain/docs/require-example-language/reporting.d.ts +2 -38
  68. package/dist/domain/docs/require-example-language/reporting.d.ts.map +1 -1
  69. package/dist/domain/docs/require-example-language/reporting.js +2 -2
  70. package/dist/domain/docs/require-example-language/rule.d.ts.map +1 -1
  71. package/dist/domain/docs/require-example-language/rule.js +2 -1
  72. package/dist/domain/docs/require-example-language/types.d.ts +1 -1
  73. package/dist/domain/docs/require-example-language/types.d.ts.map +1 -1
  74. package/dist/domain/docs/require-example-language/types.js +1 -1
  75. package/dist/domain/docs/single-line-jsdoc/rule.js +8 -8
  76. package/dist/domain/index.d.ts +2 -3
  77. package/dist/domain/index.d.ts.map +1 -1
  78. package/dist/domain/index.js +3 -4
  79. package/dist/domain/testing/aaa/analyzer.analysis.d.ts +1 -19
  80. package/dist/domain/testing/aaa/analyzer.analysis.d.ts.map +1 -1
  81. package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts +8 -31
  82. package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -1
  83. package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +18 -22
  84. package/dist/domain/testing/aaa/analyzer.analysis.js +46 -39
  85. package/dist/domain/testing/aaa/analyzer.assertions.d.ts +1 -17
  86. package/dist/domain/testing/aaa/analyzer.assertions.d.ts.map +1 -1
  87. package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts +1 -3
  88. package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts.map +1 -1
  89. package/dist/domain/testing/aaa/analyzer.assertions.helpers.js +3 -4
  90. package/dist/domain/testing/aaa/analyzer.assertions.js +5 -33
  91. package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts +1 -3
  92. package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts.map +1 -1
  93. package/dist/domain/testing/aaa/analyzer.assertions.operands.js +6 -5
  94. package/dist/domain/testing/aaa/analyzer.classification.d.ts +1 -15
  95. package/dist/domain/testing/aaa/analyzer.classification.d.ts.map +1 -1
  96. package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts +1 -3
  97. package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts.map +1 -1
  98. package/dist/domain/testing/aaa/analyzer.classification.helpers.js +5 -6
  99. package/dist/domain/testing/aaa/analyzer.classification.js +5 -31
  100. package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts +1 -3
  101. package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts.map +1 -1
  102. package/dist/domain/testing/aaa/analyzer.classification.traversal.js +3 -5
  103. package/dist/domain/testing/aaa/analyzer.super.d.ts +1 -7
  104. package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -1
  105. package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts +1 -14
  106. package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts.map +1 -1
  107. package/dist/domain/testing/aaa/analyzer.super.helpers.js +2 -4
  108. package/dist/domain/testing/aaa/analyzer.super.js +5 -20
  109. package/dist/domain/testing/aaa/index.d.ts +1 -2
  110. package/dist/domain/testing/aaa/index.d.ts.map +1 -1
  111. package/dist/domain/testing/aaa/index.js +2 -2
  112. package/dist/domain/testing/aaa/types.d.ts +1 -1
  113. package/dist/domain/testing/aaa/types.d.ts.map +1 -1
  114. package/dist/domain/testing/aaa/types.js +1 -1
  115. package/dist/domain/testing/assert-actual-expected-names/rule.d.ts.map +1 -1
  116. package/dist/domain/testing/assert-actual-expected-names/rule.js +28 -3
  117. package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts +2 -1
  118. package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts.map +1 -1
  119. package/dist/domain/testing/enforce-aaa-phase-purity/index.js +3 -2
  120. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts +1 -1
  121. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts.map +1 -1
  122. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.js +1 -1
  123. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts +1 -1
  124. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts.map +1 -1
  125. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.js +78 -16
  126. package/dist/domain/testing/{require-aaa-sections → enforce-aaa-structure}/missing-section-fixes.d.ts +1 -1
  127. package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.d.ts.map +1 -0
  128. package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.js +150 -0
  129. package/dist/domain/testing/enforce-aaa-structure/rule.d.ts.map +1 -1
  130. package/dist/domain/testing/enforce-aaa-structure/rule.js +166 -7
  131. package/dist/domain/testing/index.d.ts +0 -3
  132. package/dist/domain/testing/index.d.ts.map +1 -1
  133. package/dist/domain/testing/index.js +1 -4
  134. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts +1 -15
  135. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts.map +1 -1
  136. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.js +2 -71
  137. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts.map +1 -1
  138. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.js +4 -2
  139. package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts +1 -13
  140. package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts.map +1 -1
  141. package/dist/domain/testing/prefer-vi-mocked-import/fix.js +3 -21
  142. package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +1 -1
  143. package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.js +2 -1
  144. package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +1 -1
  145. package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.js +1 -1
  146. package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.js +6 -6
  147. package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts +1 -12
  148. package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts.map +1 -1
  149. package/dist/domain/testing/prefer-vi-mocked-import/match.js +149 -15
  150. package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -1
  151. package/dist/domain/testing/require-act-result-capture/rule.js +37 -8
  152. package/dist/domain/testing/require-test-companion/index.d.ts +0 -1
  153. package/dist/domain/testing/require-test-companion/index.d.ts.map +1 -1
  154. package/dist/domain/testing/require-test-companion/index.js +1 -2
  155. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts +2 -1
  156. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts.map +1 -1
  157. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.js +13 -58
  158. package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts +2 -1
  159. package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts.map +1 -1
  160. package/dist/domain/testing/require-test-companion/require-test-companion-options.js +6 -5
  161. package/dist/domain/testing/require-test-companion/rule.d.ts.map +1 -1
  162. package/dist/domain/testing/require-test-companion/rule.js +7 -7
  163. package/dist/domain/testing/single-act-statement/rule.d.ts.map +1 -1
  164. package/dist/domain/testing/single-act-statement/rule.js +6 -3
  165. package/dist/index.d.ts +1 -1
  166. package/dist/index.d.ts.map +1 -1
  167. package/dist/index.js +2 -2
  168. package/dist/infrastructure/codeperfect-plugin.d.ts +6 -6
  169. package/dist/infrastructure/codeperfect-plugin.js +5 -5
  170. package/dist/infrastructure/presets.d.ts.map +1 -1
  171. package/dist/infrastructure/presets.js +23 -7
  172. package/package.json +21 -30
  173. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts +0 -41
  174. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +0 -1
  175. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +0 -87
  176. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts +0 -40
  177. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +0 -1
  178. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +0 -91
  179. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts +0 -4
  180. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts.map +0 -1
  181. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.js +0 -4
  182. package/dist/domain/architecture/consistent-barrel-files/test-helpers.d.ts +0 -141
  183. package/dist/domain/architecture/consistent-barrel-files/test-helpers.d.ts.map +0 -1
  184. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts +0 -20
  185. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts.map +0 -1
  186. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.js +0 -25
  187. package/dist/domain/architecture/consistent-barrel-files/test-helpers.js +0 -235
  188. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts +0 -101
  189. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts.map +0 -1
  190. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.js +0 -108
  191. package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts +0 -35
  192. package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts.map +0 -1
  193. package/dist/domain/core/no-multiple-declarators/rule.fixes.js +0 -95
  194. package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts +0 -4
  195. package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts.map +0 -1
  196. package/dist/domain/core/no-multiple-declarators/rule.guardrails.js +0 -4
  197. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts +0 -4
  198. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts.map +0 -1
  199. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.js +0 -4
  200. package/dist/domain/core/prefer-interface-types/test-helpers.d.ts +0 -110
  201. package/dist/domain/core/prefer-interface-types/test-helpers.d.ts.map +0 -1
  202. package/dist/domain/core/prefer-interface-types/test-helpers.js +0 -116
  203. package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts +0 -89
  204. package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +0 -1
  205. package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.js +0 -129
  206. package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts +0 -103
  207. package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts.map +0 -1
  208. package/dist/domain/docs/no-interface-member-docs/test-helpers.js +0 -157
  209. package/dist/domain/docs/require-example-language/create-fixer.d.ts +0 -5
  210. package/dist/domain/docs/require-example-language/create-fixer.d.ts.map +0 -1
  211. package/dist/domain/docs/require-example-language/create-fixer.js +0 -5
  212. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts +0 -4
  213. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts.map +0 -1
  214. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.js +0 -5
  215. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts +0 -4
  216. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts.map +0 -1
  217. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.js +0 -5
  218. package/dist/domain/docs/test-helpers.d.ts +0 -50
  219. package/dist/domain/docs/test-helpers.d.ts.map +0 -1
  220. package/dist/domain/docs/test-helpers.js +0 -107
  221. package/dist/domain/testing/aaa/analyzer.analysis.unsupported.d.ts +0 -4
  222. package/dist/domain/testing/aaa/analyzer.analysis.unsupported.d.ts.map +0 -1
  223. package/dist/domain/testing/aaa/analyzer.analysis.unsupported.js +0 -4
  224. package/dist/domain/testing/aaa/analyzer.assertions.destructured.d.ts +0 -4
  225. package/dist/domain/testing/aaa/analyzer.assertions.destructured.d.ts.map +0 -1
  226. package/dist/domain/testing/aaa/analyzer.assertions.destructured.js +0 -4
  227. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts +0 -9
  228. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts.map +0 -1
  229. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.js +0 -10
  230. package/dist/domain/testing/aaa/analyzer.classification.mutations.d.ts +0 -4
  231. package/dist/domain/testing/aaa/analyzer.classification.mutations.d.ts.map +0 -1
  232. package/dist/domain/testing/aaa/analyzer.classification.mutations.js +0 -4
  233. package/dist/domain/testing/aaa/analyzer.d.ts +0 -46
  234. package/dist/domain/testing/aaa/analyzer.d.ts.map +0 -1
  235. package/dist/domain/testing/aaa/analyzer.js +0 -59
  236. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.d.ts +0 -4
  237. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.d.ts.map +0 -1
  238. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.combined.js +0 -4
  239. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.d.ts +0 -4
  240. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.d.ts.map +0 -1
  241. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.companion.js +0 -4
  242. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts +0 -4
  243. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts.map +0 -1
  244. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.js +0 -4
  245. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts +0 -42
  246. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts.map +0 -1
  247. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.js +0 -188
  248. package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts +0 -5
  249. package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts.map +0 -1
  250. package/dist/domain/testing/enforce-aaa-phase-purity/rule.js +0 -37
  251. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts +0 -20
  252. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts.map +0 -1
  253. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.js +0 -39
  254. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts +0 -97
  255. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts.map +0 -1
  256. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.js +0 -174
  257. package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts +0 -2
  258. package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts.map +0 -1
  259. package/dist/domain/testing/prefer-vitest-incremental-casts/index.js +0 -2
  260. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts +0 -14
  261. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts.map +0 -1
  262. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.js +0 -84
  263. package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts +0 -13
  264. package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts.map +0 -1
  265. package/dist/domain/testing/prefer-vitest-incremental-casts/match.js +0 -195
  266. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts +0 -25
  267. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts.map +0 -1
  268. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.js +0 -96
  269. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts +0 -32
  270. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts.map +0 -1
  271. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.js +0 -164
  272. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts +0 -5
  273. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts.map +0 -1
  274. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts +0 -4
  275. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts.map +0 -1
  276. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.js +0 -4
  277. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts +0 -4
  278. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts.map +0 -1
  279. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.js +0 -4
  280. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.js +0 -88
  281. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts +0 -4
  282. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts.map +0 -1
  283. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.js +0 -4
  284. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts +0 -24
  285. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts.map +0 -1
  286. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.js +0 -113
  287. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts +0 -36
  288. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts.map +0 -1
  289. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.js +0 -138
  290. package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts +0 -187
  291. package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts.map +0 -1
  292. package/dist/domain/testing/prefer-vitest-incremental-casts/types.js +0 -2
  293. package/dist/domain/testing/require-aaa-sections/index.d.ts +0 -2
  294. package/dist/domain/testing/require-aaa-sections/index.d.ts.map +0 -1
  295. package/dist/domain/testing/require-aaa-sections/index.js +0 -2
  296. package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts.map +0 -1
  297. package/dist/domain/testing/require-aaa-sections/missing-section-fixes.js +0 -150
  298. package/dist/domain/testing/require-aaa-sections/rule.d.ts +0 -5
  299. package/dist/domain/testing/require-aaa-sections/rule.d.ts.map +0 -1
  300. package/dist/domain/testing/require-aaa-sections/rule.js +0 -134
  301. package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts +0 -104
  302. package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts.map +0 -1
  303. package/dist/domain/testing/require-aaa-sections/rule.reporting.js +0 -216
  304. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts +0 -51
  305. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +0 -1
  306. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.js +0 -184
  307. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts +0 -28
  308. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts.map +0 -1
  309. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.js +0 -26
@@ -0,0 +1,247 @@
1
+ /**
2
+ * Adds all identifier names introduced by one binding pattern.
3
+ * @param pattern Binding pattern to inspect.
4
+ * @param boundNames Destination set.
5
+ * @example
6
+ * ```typescript
7
+ * addPatternBoundNames(variable.id, names);
8
+ * ```
9
+ */
10
+ const addPatternBoundNames = (pattern, boundNames) => {
11
+ if (pattern.type === "Identifier") {
12
+ boundNames.add(pattern.name);
13
+ return;
14
+ }
15
+ if (pattern.type === "RestElement") {
16
+ addPatternBoundNames(pattern.argument, boundNames);
17
+ return;
18
+ }
19
+ if (pattern.type === "AssignmentPattern") {
20
+ addPatternBoundNames(pattern.left, boundNames);
21
+ return;
22
+ }
23
+ if (pattern.type === "ObjectPattern") {
24
+ for (const property of pattern.properties) {
25
+ if (property.type === "Property") {
26
+ addPatternBoundNames(property.value, boundNames);
27
+ }
28
+ if (property.type === "RestElement") {
29
+ addPatternBoundNames(property.argument, boundNames);
30
+ }
31
+ }
32
+ return;
33
+ }
34
+ if (pattern.type === "ArrayPattern") {
35
+ for (const element of pattern.elements) {
36
+ if (element !== null) {
37
+ addPatternBoundNames(element, boundNames);
38
+ }
39
+ }
40
+ }
41
+ };
42
+ /**
43
+ * Adds one declaration identifier name when present.
44
+ * @param declaration Declaration that may bind an identifier.
45
+ * @param boundNames Destination set.
46
+ * @example
47
+ * ```typescript
48
+ * addDeclarationIdentifierBoundName(declaration, names);
49
+ * ```
50
+ */
51
+ const addDeclarationIdentifierBoundName = (declaration, boundNames) => {
52
+ if (declaration.id !== null && declaration.id !== void 0) {
53
+ addPatternBoundNames(declaration.id, boundNames);
54
+ }
55
+ };
56
+ /**
57
+ * Adds bound variable names from one variable declaration.
58
+ * @param declaration Variable declaration to inspect.
59
+ * @param boundNames Destination set.
60
+ * @example
61
+ * ```typescript
62
+ * addVariableBoundNames(declaration, names);
63
+ * ```
64
+ */
65
+ const addVariableBoundNames = (declaration, boundNames) => {
66
+ for (const variable of declaration.declarations) {
67
+ addPatternBoundNames(variable.id, boundNames);
68
+ }
69
+ };
70
+ /**
71
+ * Collects bound names available for collision detection.
72
+ * @param body Program body statements.
73
+ * @returns Bound names in the file.
74
+ * @example
75
+ * ```typescript
76
+ * const names = collectBoundNames(program.body);
77
+ * ```
78
+ */
79
+ const collectBoundNames = (body) => {
80
+ const boundNames = new Set();
81
+ for (const statement of body) {
82
+ if (statement.type === "ImportDeclaration") {
83
+ const declarationImportKind = statement.importKind;
84
+ for (const specifier of statement.specifiers) {
85
+ const specifierImportKind = specifier.importKind;
86
+ const isTypeOnly = declarationImportKind === "type" || specifierImportKind === "type";
87
+ if (!isTypeOnly) {
88
+ boundNames.add(specifier.local.name);
89
+ }
90
+ }
91
+ }
92
+ if (statement.type === "VariableDeclaration") {
93
+ addVariableBoundNames(statement, boundNames);
94
+ }
95
+ if (statement.type === "FunctionDeclaration") {
96
+ addDeclarationIdentifierBoundName(statement, boundNames);
97
+ }
98
+ if (statement.type === "ClassDeclaration") {
99
+ addDeclarationIdentifierBoundName(statement, boundNames);
100
+ }
101
+ if (statement.type === "ExportNamedDeclaration" &&
102
+ statement.declaration !== null &&
103
+ statement.declaration !== void 0 &&
104
+ statement.declaration.type === "VariableDeclaration") {
105
+ addVariableBoundNames(statement.declaration, boundNames);
106
+ }
107
+ if (statement.type === "ExportNamedDeclaration" &&
108
+ statement.declaration !== null &&
109
+ statement.declaration !== void 0 &&
110
+ statement.declaration.type === "FunctionDeclaration") {
111
+ addDeclarationIdentifierBoundName(statement.declaration, boundNames);
112
+ }
113
+ if (statement.type === "ExportNamedDeclaration" &&
114
+ statement.declaration !== null &&
115
+ statement.declaration !== void 0 &&
116
+ statement.declaration.type === "ClassDeclaration") {
117
+ addDeclarationIdentifierBoundName(statement.declaration, boundNames);
118
+ }
119
+ if (statement.type === "ExportDefaultDeclaration" &&
120
+ statement.declaration.type === "FunctionDeclaration") {
121
+ addDeclarationIdentifierBoundName(statement.declaration, boundNames);
122
+ }
123
+ if (statement.type === "ExportDefaultDeclaration" &&
124
+ statement.declaration.type === "ClassDeclaration") {
125
+ addDeclarationIdentifierBoundName(statement.declaration, boundNames);
126
+ }
127
+ }
128
+ return boundNames;
129
+ };
130
+ /**
131
+ * Collects aliased named import specifiers from one import declaration.
132
+ * @param declaration Import declaration to inspect.
133
+ * @returns Aliased import specifier candidates.
134
+ * @example
135
+ * ```typescript
136
+ * const candidates = collectImportAliasCandidates(declaration);
137
+ * ```
138
+ */
139
+ const collectImportAliasCandidates = (declaration) => {
140
+ const candidates = [];
141
+ const declarationImportKind = declaration.importKind;
142
+ for (const specifier of declaration.specifiers) {
143
+ const specifierImportKind = specifier.importKind;
144
+ const isTypeOnly = declarationImportKind === "type" || specifierImportKind === "type";
145
+ if (!isTypeOnly &&
146
+ specifier.type === "ImportSpecifier" &&
147
+ specifier.imported.type === "Identifier" &&
148
+ specifier.local.name !== specifier.imported.name) {
149
+ candidates.push({
150
+ originalName: specifier.imported.name,
151
+ specifier,
152
+ });
153
+ }
154
+ }
155
+ return candidates;
156
+ };
157
+ /**
158
+ * Collects aliased named export specifiers from one export declaration.
159
+ * @param declaration Export declaration to inspect.
160
+ * @returns Aliased export specifier candidates.
161
+ * @example
162
+ * ```typescript
163
+ * const candidates = collectExportAliasCandidates(declaration);
164
+ * ```
165
+ */
166
+ const collectExportAliasCandidates = (declaration) => {
167
+ const candidates = [];
168
+ const declarationExportKind = declaration.exportKind;
169
+ for (const specifier of declaration.specifiers) {
170
+ const specifierExportKind = specifier.exportKind;
171
+ const isTypeOnly = declarationExportKind === "type" || specifierExportKind === "type";
172
+ if (!isTypeOnly &&
173
+ specifier.local.type === "Identifier" &&
174
+ specifier.exported.type === "Identifier" &&
175
+ specifier.local.name !== specifier.exported.name) {
176
+ candidates.push({
177
+ originalName: specifier.local.name,
178
+ specifier,
179
+ });
180
+ }
181
+ }
182
+ return candidates;
183
+ };
184
+ /**
185
+ * Collects aliased import/export named specifiers.
186
+ * @param body Program body statements.
187
+ * @returns Aliased named import/export specifiers.
188
+ * @example
189
+ * ```typescript
190
+ * const candidates = collectAliasedSpecifiers(program.body);
191
+ * ```
192
+ */
193
+ const collectAliasedSpecifiers = (body) => {
194
+ const candidates = [];
195
+ for (const statement of body) {
196
+ if (statement.type === "ImportDeclaration") {
197
+ candidates.push(...collectImportAliasCandidates(statement));
198
+ }
199
+ if (statement.type === "ExportNamedDeclaration") {
200
+ candidates.push(...collectExportAliasCandidates(statement));
201
+ }
202
+ }
203
+ return candidates;
204
+ };
205
+ /**
206
+ * Builds a listener for this rule.
207
+ * @param context Rule execution context.
208
+ * @returns Listener for import/export alias checks.
209
+ * @example
210
+ * ```typescript
211
+ * const listener = buildListener(context);
212
+ * ```
213
+ */
214
+ const buildListener = (context) => ({
215
+ Program(node) {
216
+ const boundNames = collectBoundNames(node.body);
217
+ const aliasedSpecifiers = collectAliasedSpecifiers(node.body);
218
+ for (const candidate of aliasedSpecifiers) {
219
+ if (!boundNames.has(candidate.originalName)) {
220
+ context.report({
221
+ messageId: "aliasNotAllowed",
222
+ node: candidate.specifier,
223
+ });
224
+ }
225
+ }
226
+ },
227
+ });
228
+ /** ESLint rule that forbids aliased import/export names unless required by same-file name collisions. */
229
+ const noImportExportAliasesRule = {
230
+ create(context) {
231
+ return buildListener(context);
232
+ },
233
+ meta: {
234
+ docs: {
235
+ description: "Forbid aliased import/export names unless the original name is already bound in the same file.",
236
+ recommended: false,
237
+ url: "https://github.com/parloti/eslint-plugin/blob/main/docs/rules/no-import-export-aliases.md",
238
+ },
239
+ messages: {
240
+ aliasNotAllowed: "Avoid aliased import/export names unless the original name is already bound in this file.",
241
+ },
242
+ schema: [],
243
+ type: "problem",
244
+ },
245
+ };
246
+ export { noImportExportAliasesRule };
247
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8taW1wb3J0LWV4cG9ydC1hbGlhc2VzLXJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2FyY2hpdGVjdHVyZS9jb25zaXN0ZW50LWJhcnJlbC1maWxlcy9uby1pbXBvcnQtZXhwb3J0LWFsaWFzZXMtcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4QkE7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLG9CQUFvQixHQUFHLENBQzNCLE9BQXVCLEVBQ3ZCLFVBQXVCLEVBQ2pCLEVBQUU7SUFDUixJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFLENBQUM7UUFDbEMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsT0FBTztJQUNULENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssYUFBYSxFQUFFLENBQUM7UUFDbkMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNuRCxPQUFPO0lBQ1QsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3pDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDL0MsT0FBTztJQUNULENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssZUFBZSxFQUFFLENBQUM7UUFDckMsS0FBSyxNQUFNLFFBQVEsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDMUMsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUNqQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ25ELENBQUM7WUFFRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssYUFBYSxFQUFFLENBQUM7Z0JBQ3BDLG9CQUFvQixD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QUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztnQkFDNUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztvQkFDYixTQUFTLEVBQUUsaUJBQWlCO29CQUM1QixJQUFJLEVBQUUsU0FBUyxDQUFDLFNBQVM7aUJBQzFCLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGLENBQUMsQ0FBQztBQUVILHlHQUF5RztBQUN6RyxNQUFNLHlCQUF5QixHQUFvQjtJQUNqRCxNQUFNLENBQUMsT0FBeUI7UUFDOUIsT0FBTyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUNELElBQUksRUFBRTtRQUNKLElBQUksRUFBRTtZQUNKLFdBQVcsRUFDVCxnR0FBZ0c7WUFDbEcsV0FBVyxFQUFFLEtBQUs7WUFDbEIsR0FBRyxFQUFFLDJGQUEyRjtTQUNqRztRQUNELFFBQVEsRUFBRTtZQUNSLGVBQWUsRUFDYiwyRkFBMkY7U0FDOUY7UUFDRCxNQUFNLEVBQUUsRUFBRTtRQUNWLElBQUksRUFBRSxTQUFTO0tBQ2hCO0NBQ0YsQ0FBQztBQUVGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSBcImVzbGludFwiO1xuaW1wb3J0IHR5cGUgKiBhcyBFU1RyZWUgZnJvbSBcImVzdHJlZVwiO1xuXG4vKiogVHJhY2tzIG9uZSBhbGlhc2VkIHNwZWNpZmllciBjYW5kaWRhdGUgaW4gYSBwcm9ncmFtLiAqL1xuaW50ZXJmYWNlIEFsaWFzZWRTcGVjaWZpZXJDYW5kaWRhdGUge1xuICAvKiogSWRlbnRpZmllciBuYW1lIGJlZm9yZSBhbGlhc2luZyAoZS5nLiBBIGluIEEgYXMgQikuICovXG4gIG9yaWdpbmFsTmFtZTogc3RyaW5nO1xuXG4gIC8qKiBTcGVjaWZpZXIgbm9kZSB0byByZXBvcnQgd2hlbiBhbGlhc2luZyBpcyBub3QgYWxsb3dlZC4gKi9cbiAgc3BlY2lmaWVyOiBFU1RyZWUuRXhwb3J0U3BlY2lmaWVyIHwgRVNUcmVlLkltcG9ydFNwZWNpZmllcjtcbn1cblxuLyoqIE1pbmltYWwgZGVjbGFyYXRpb24gc2hhcGUgdGhhdCBtYXkgY2FycnkgYW4gaWRlbnRpZmllciBiaW5kaW5nLiAqL1xuaW50ZXJmYWNlIERlY2xhcmF0aW9uV2l0aElkZW50aWZpZXIge1xuICAvKiogRGVjbGFyYXRpb24gaWRlbnRpZmllciBpZiBvbmUgZXhpc3RzLiAqL1xuICBpZD86IEVTVHJlZS5QYXR0ZXJuIHwgbnVsbDtcbn1cblxuLyoqIE9wdGlvbmFsIGV4cG9ydC1raW5kIGNhcnJpZXIgc2hhcGUgdXNlZCBmb3IgdHlwZS1vbmx5IGNoZWNrcy4gKi9cbmludGVyZmFjZSBFeHBvcnRLaW5kQ2FycmllciB7XG4gIC8qKiBFU1RyZWUtY29tcGF0aWJsZSBleHBvcnQga2luZCB2YWx1ZS4gKi9cbiAgZXhwb3J0S2luZD86IFwidHlwZVwiIHwgXCJ2YWx1ZVwiO1xufVxuXG4vKiogT3B0aW9uYWwgaW1wb3J0LWtpbmQgY2FycmllciBzaGFwZSB1c2VkIGZvciB0eXBlLW9ubHkgY2hlY2tzLiAqL1xuaW50ZXJmYWNlIEltcG9ydEtpbmRDYXJyaWVyIHtcbiAgLyoqIEVTVHJlZS1jb21wYXRpYmxlIGltcG9ydCBraW5kIHZhbHVlLiAqL1xuICBpbXBvcnRLaW5kPzogXCJ0eXBlXCIgfCBcInZhbHVlXCI7XG59XG5cbi8qKlxuICogQWRkcyBhbGwgaWRlbnRpZmllciBuYW1lcyBpbnRyb2R1Y2VkIGJ5IG9uZSBiaW5kaW5nIHBhdHRlcm4uXG4gKiBAcGFyYW0gcGF0dGVybiBCaW5kaW5nIHBhdHRlcm4gdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSBib3VuZE5hbWVzIERlc3RpbmF0aW9uIHNldC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBhZGRQYXR0ZXJuQm91bmROYW1lcyh2YXJpYWJsZS5pZCwgbmFtZXMpO1xuICogYGBgXG4gKi9cbmNvbnN0IGFkZFBhdHRlcm5Cb3VuZE5hbWVzID0gKFxuICBwYXR0ZXJuOiBFU1RyZWUuUGF0dGVybixcbiAgYm91bmROYW1lczogU2V0PHN0cmluZz4sXG4pOiB2b2lkID0+IHtcbiAgaWYgKHBhdHRlcm4udHlwZSA9PT0gXCJJZGVudGlmaWVyXCIpIHtcbiAgICBib3VuZE5hbWVzLmFkZChwYXR0ZXJuLm5hbWUpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChwYXR0ZXJuLnR5cGUgPT09IFwiUmVzdEVsZW1lbnRcIikge1xuICAgIGFkZFBhdHRlcm5Cb3VuZE5hbWVzKHBhdHRlcm4uYXJndW1lbnQsIGJvdW5kTmFtZXMpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChwYXR0ZXJuLnR5cGUgPT09IFwiQXNzaWdubWVudFBhdHRlcm5cIikge1xuICAgIGFkZFBhdHRlcm5Cb3VuZE5hbWVzKHBhdHRlcm4ubGVmdCwgYm91bmROYW1lcyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHBhdHRlcm4udHlwZSA9PT0gXCJPYmplY3RQYXR0ZXJuXCIpIHtcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHBhdHRlcm4ucHJvcGVydGllcykge1xuICAgICAgaWYgKHByb3BlcnR5LnR5cGUgPT09IFwiUHJvcGVydHlcIikge1xuICAgICAgICBhZGRQYXR0ZXJuQm91bmROYW1lcyhwcm9wZXJ0eS52YWx1ZSwgYm91bmROYW1lcyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9wZXJ0eS50eXBlID09PSBcIlJlc3RFbGVtZW50XCIpIHtcbiAgICAgICAgYWRkUGF0dGVybkJvdW5kTmFtZXMocHJvcGVydHkuYXJndW1lbnQsIGJvdW5kTmFtZXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChwYXR0ZXJuLnR5cGUgPT09IFwiQXJyYXlQYXR0ZXJuXCIpIHtcbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgcGF0dGVybi5lbGVtZW50cykge1xuICAgICAgaWYgKGVsZW1lbnQgIT09IG51bGwpIHtcbiAgICAgICAgYWRkUGF0dGVybkJvdW5kTmFtZXMoZWxlbWVudCwgYm91bmROYW1lcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIEFkZHMgb25lIGRlY2xhcmF0aW9uIGlkZW50aWZpZXIgbmFtZSB3aGVuIHByZXNlbnQuXG4gKiBAcGFyYW0gZGVjbGFyYXRpb24gRGVjbGFyYXRpb24gdGhhdCBtYXkgYmluZCBhbiBpZGVudGlmaWVyLlxuICogQHBhcmFtIGJvdW5kTmFtZXMgRGVzdGluYXRpb24gc2V0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGFkZERlY2xhcmF0aW9uSWRlbnRpZmllckJvdW5kTmFtZShkZWNsYXJhdGlvbiwgbmFtZXMpO1xuICogYGBgXG4gKi9cbmNvbnN0IGFkZERlY2xhcmF0aW9uSWRlbnRpZmllckJvdW5kTmFtZSA9IChcbiAgZGVjbGFyYXRpb246IERlY2xhcmF0aW9uV2l0aElkZW50aWZpZXIsXG4gIGJvdW5kTmFtZXM6IFNldDxzdHJpbmc+LFxuKTogdm9pZCA9PiB7XG4gIGlmIChkZWNsYXJhdGlvbi5pZCAhPT0gbnVsbCAmJiBkZWNsYXJhdGlvbi5pZCAhPT0gdm9pZCAwKSB7XG4gICAgYWRkUGF0dGVybkJvdW5kTmFtZXMoZGVjbGFyYXRpb24uaWQsIGJvdW5kTmFtZXMpO1xuICB9XG59O1xuXG4vKipcbiAqIEFkZHMgYm91bmQgdmFyaWFibGUgbmFtZXMgZnJvbSBvbmUgdmFyaWFibGUgZGVjbGFyYXRpb24uXG4gKiBAcGFyYW0gZGVjbGFyYXRpb24gVmFyaWFibGUgZGVjbGFyYXRpb24gdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSBib3VuZE5hbWVzIERlc3RpbmF0aW9uIHNldC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBhZGRWYXJpYWJsZUJvdW5kTmFtZXMoZGVjbGFyYXRpb24sIG5hbWVzKTtcbiAqIGBgYFxuICovXG5jb25zdCBhZGRWYXJpYWJsZUJvdW5kTmFtZXMgPSAoXG4gIGRlY2xhcmF0aW9uOiBFU1RyZWUuVmFyaWFibGVEZWNsYXJhdGlvbixcbiAgYm91bmROYW1lczogU2V0PHN0cmluZz4sXG4pOiB2b2lkID0+IHtcbiAgZm9yIChjb25zdCB2YXJpYWJsZSBvZiBkZWNsYXJhdGlvbi5kZWNsYXJhdGlvbnMpIHtcbiAgICBhZGRQYXR0ZXJuQm91bmROYW1lcyh2YXJpYWJsZS5pZCwgYm91bmROYW1lcyk7XG4gIH1cbn07XG5cbi8qKlxuICogQ29sbGVjdHMgYm91bmQgbmFtZXMgYXZhaWxhYmxlIGZvciBjb2xsaXNpb24gZGV0ZWN0aW9uLlxuICogQHBhcmFtIGJvZHkgUHJvZ3JhbSBib2R5IHN0YXRlbWVudHMuXG4gKiBAcmV0dXJucyBCb3VuZCBuYW1lcyBpbiB0aGUgZmlsZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBuYW1lcyA9IGNvbGxlY3RCb3VuZE5hbWVzKHByb2dyYW0uYm9keSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgY29sbGVjdEJvdW5kTmFtZXMgPSAoYm9keTogRVNUcmVlLlByb2dyYW1bXCJib2R5XCJdKTogU2V0PHN0cmluZz4gPT4ge1xuICBjb25zdCBib3VuZE5hbWVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgZm9yIChjb25zdCBzdGF0ZW1lbnQgb2YgYm9keSkge1xuICAgIGlmIChzdGF0ZW1lbnQudHlwZSA9PT0gXCJJbXBvcnREZWNsYXJhdGlvblwiKSB7XG4gICAgICBjb25zdCBkZWNsYXJhdGlvbkltcG9ydEtpbmQgPSAoc3RhdGVtZW50IGFzIEltcG9ydEtpbmRDYXJyaWVyKS5pbXBvcnRLaW5kO1xuXG4gICAgICBmb3IgKGNvbnN0IHNwZWNpZmllciBvZiBzdGF0ZW1lbnQuc3BlY2lmaWVycykge1xuICAgICAgICBjb25zdCBzcGVjaWZpZXJJbXBvcnRLaW5kID0gKHNwZWNpZmllciBhcyBJbXBvcnRLaW5kQ2FycmllcikuaW1wb3J0S2luZDtcbiAgICAgICAgY29uc3QgaXNUeXBlT25seSA9XG4gICAgICAgICAgZGVjbGFyYXRpb25JbXBvcnRLaW5kID09PSBcInR5cGVcIiB8fCBzcGVjaWZpZXJJbXBvcnRLaW5kID09PSBcInR5cGVcIjtcblxuICAgICAgICBpZiAoIWlzVHlwZU9ubHkpIHtcbiAgICAgICAgICBib3VuZE5hbWVzLmFkZChzcGVjaWZpZXIubG9jYWwubmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhdGVtZW50LnR5cGUgPT09IFwiVmFyaWFibGVEZWNsYXJhdGlvblwiKSB7XG4gICAgICBhZGRWYXJpYWJsZUJvdW5kTmFtZXMoc3RhdGVtZW50LCBib3VuZE5hbWVzKTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGVtZW50LnR5cGUgPT09IFwiRnVuY3Rpb25EZWNsYXJhdGlvblwiKSB7XG4gICAgICBhZGREZWNsYXJhdGlvbklkZW50aWZpZXJCb3VuZE5hbWUoc3RhdGVtZW50LCBib3VuZE5hbWVzKTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGVtZW50LnR5cGUgPT09IFwiQ2xhc3NEZWNsYXJhdGlvblwiKSB7XG4gICAgICBhZGREZWNsYXJhdGlvbklkZW50aWZpZXJCb3VuZE5hbWUoc3RhdGVtZW50LCBib3VuZE5hbWVzKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBzdGF0ZW1lbnQudHlwZSA9PT0gXCJFeHBvcnROYW1lZERlY2xhcmF0aW9uXCIgJiZcbiAgICAgIHN0YXRlbWVudC5kZWNsYXJhdGlvbiAhPT0gbnVsbCAmJlxuICAgICAgc3RhdGVtZW50LmRlY2xhcmF0aW9uICE9PSB2b2lkIDAgJiZcbiAgICAgIHN0YXRlbWVudC5kZWNsYXJhdGlvbi50eXBlID09PSBcIlZhcmlhYmxlRGVjbGFyYXRpb25cIlxuICAgICkge1xuICAgICAgYWRkVmFyaWFibGVCb3VuZE5hbWVzKHN0YXRlbWVudC5kZWNsYXJhdGlvbiwgYm91bmROYW1lcyk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgc3RhdGVtZW50LnR5cGUgPT09IFwiRXhwb3J0TmFtZWREZWNsYXJhdGlvblwiICYmXG4gICAgICBzdGF0ZW1lbnQuZGVjbGFyYXRpb24gIT09IG51bGwgJiZcbiAgICAgIHN0YXRlbWVudC5kZWNsYXJhdGlvbiAhPT0gdm9pZCAwICYmXG4gICAgICBzdGF0ZW1lbnQuZGVjbGFyYXRpb24udHlwZSA9PT0gXCJGdW5jdGlvbkRlY2xhcmF0aW9uXCJcbiAgICApIHtcbiAgICAgIGFkZERlY2xhcmF0aW9uSWRlbnRpZmllckJvdW5kTmFtZShzdGF0ZW1lbnQuZGVjbGFyYXRpb24sIGJvdW5kTmFtZXMpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHN0YXRlbWVudC50eXBlID09PSBcIkV4cG9ydE5hbWVkRGVjbGFyYXRpb25cIiAmJlxuICAgICAgc3RhdGVtZW50LmRlY2xhcmF0aW9uICE9PSBudWxsICYmXG4gICAgICBzdGF0ZW1lbnQuZGVjbGFyYXRpb24gIT09IHZvaWQgMCAmJlxuICAgICAgc3RhdGVtZW50LmRlY2xhcmF0aW9uLnR5cGUgPT09IFwiQ2xhc3NEZWNsYXJhdGlvblwiXG4gICAgKSB7XG4gICAgICBhZGREZWNsYXJhdGlvbklkZW50aWZpZXJCb3VuZE5hbWUoc3RhdGVtZW50LmRlY2xhcmF0aW9uLCBib3VuZE5hbWVzKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBzdGF0ZW1lbnQudHlwZSA9PT0gXCJFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25cIiAmJlxuICAgICAgc3RhdGVtZW50LmRlY2xhcmF0aW9uLnR5cGUgPT09IFwiRnVuY3Rpb25EZWNsYXJhdGlvblwiXG4gICAgKSB7XG4gICAgICBhZGREZWNsYXJhdGlvbklkZW50aWZpZXJCb3VuZE5hbWUoc3RhdGVtZW50LmRlY2xhcmF0aW9uLCBib3VuZE5hbWVzKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBzdGF0ZW1lbnQudHlwZSA9PT0gXCJFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25cIiAmJlxuICAgICAgc3RhdGVtZW50LmRlY2xhcmF0aW9uLnR5cGUgPT09IFwiQ2xhc3NEZWNsYXJhdGlvblwiXG4gICAgKSB7XG4gICAgICBhZGREZWNsYXJhdGlvbklkZW50aWZpZXJCb3VuZE5hbWUoc3RhdGVtZW50LmRlY2xhcmF0aW9uLCBib3VuZE5hbWVzKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYm91bmROYW1lcztcbn07XG5cbi8qKlxuICogQ29sbGVjdHMgYWxpYXNlZCBuYW1lZCBpbXBvcnQgc3BlY2lmaWVycyBmcm9tIG9uZSBpbXBvcnQgZGVjbGFyYXRpb24uXG4gKiBAcGFyYW0gZGVjbGFyYXRpb24gSW1wb3J0IGRlY2xhcmF0aW9uIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBBbGlhc2VkIGltcG9ydCBzcGVjaWZpZXIgY2FuZGlkYXRlcy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjYW5kaWRhdGVzID0gY29sbGVjdEltcG9ydEFsaWFzQ2FuZGlkYXRlcyhkZWNsYXJhdGlvbik7XG4gKiBgYGBcbiAqL1xuY29uc3QgY29sbGVjdEltcG9ydEFsaWFzQ2FuZGlkYXRlcyA9IChcbiAgZGVjbGFyYXRpb246IEVTVHJlZS5JbXBvcnREZWNsYXJhdGlvbixcbik6IEFsaWFzZWRTcGVjaWZpZXJDYW5kaWRhdGVbXSA9PiB7XG4gIGNvbnN0IGNhbmRpZGF0ZXM6IEFsaWFzZWRTcGVjaWZpZXJDYW5kaWRhdGVbXSA9IFtdO1xuICBjb25zdCBkZWNsYXJhdGlvbkltcG9ydEtpbmQgPSAoZGVjbGFyYXRpb24gYXMgSW1wb3J0S2luZENhcnJpZXIpLmltcG9ydEtpbmQ7XG5cbiAgZm9yIChjb25zdCBzcGVjaWZpZXIgb2YgZGVjbGFyYXRpb24uc3BlY2lmaWVycykge1xuICAgIGNvbnN0IHNwZWNpZmllckltcG9ydEtpbmQgPSAoc3BlY2lmaWVyIGFzIEltcG9ydEtpbmRDYXJyaWVyKS5pbXBvcnRLaW5kO1xuICAgIGNvbnN0IGlzVHlwZU9ubHkgPVxuICAgICAgZGVjbGFyYXRpb25JbXBvcnRLaW5kID09PSBcInR5cGVcIiB8fCBzcGVjaWZpZXJJbXBvcnRLaW5kID09PSBcInR5cGVcIjtcblxuICAgIGlmIChcbiAgICAgICFpc1R5cGVPbmx5ICYmXG4gICAgICBzcGVjaWZpZXIudHlwZSA9PT0gXCJJbXBvcnRTcGVjaWZpZXJcIiAmJlxuICAgICAgc3BlY2lmaWVyLmltcG9ydGVkLnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmXG4gICAgICBzcGVjaWZpZXIubG9jYWwubmFtZSAhPT0gc3BlY2lmaWVyLmltcG9ydGVkLm5hbWVcbiAgICApIHtcbiAgICAgIGNhbmRpZGF0ZXMucHVzaCh7XG4gICAgICAgIG9yaWdpbmFsTmFtZTogc3BlY2lmaWVyLmltcG9ydGVkLm5hbWUsXG4gICAgICAgIHNwZWNpZmllcixcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjYW5kaWRhdGVzO1xufTtcblxuLyoqXG4gKiBDb2xsZWN0cyBhbGlhc2VkIG5hbWVkIGV4cG9ydCBzcGVjaWZpZXJzIGZyb20gb25lIGV4cG9ydCBkZWNsYXJhdGlvbi5cbiAqIEBwYXJhbSBkZWNsYXJhdGlvbiBFeHBvcnQgZGVjbGFyYXRpb24gdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIEFsaWFzZWQgZXhwb3J0IHNwZWNpZmllciBjYW5kaWRhdGVzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGNhbmRpZGF0ZXMgPSBjb2xsZWN0RXhwb3J0QWxpYXNDYW5kaWRhdGVzKGRlY2xhcmF0aW9uKTtcbiAqIGBgYFxuICovXG5jb25zdCBjb2xsZWN0RXhwb3J0QWxpYXNDYW5kaWRhdGVzID0gKFxuICBkZWNsYXJhdGlvbjogRVNUcmVlLkV4cG9ydE5hbWVkRGVjbGFyYXRpb24sXG4pOiBBbGlhc2VkU3BlY2lmaWVyQ2FuZGlkYXRlW10gPT4ge1xuICBjb25zdCBjYW5kaWRhdGVzOiBBbGlhc2VkU3BlY2lmaWVyQ2FuZGlkYXRlW10gPSBbXTtcbiAgY29uc3QgZGVjbGFyYXRpb25FeHBvcnRLaW5kID0gKGRlY2xhcmF0aW9uIGFzIEV4cG9ydEtpbmRDYXJyaWVyKS5leHBvcnRLaW5kO1xuXG4gIGZvciAoY29uc3Qgc3BlY2lmaWVyIG9mIGRlY2xhcmF0aW9uLnNwZWNpZmllcnMpIHtcbiAgICBjb25zdCBzcGVjaWZpZXJFeHBvcnRLaW5kID0gKHNwZWNpZmllciBhcyBFeHBvcnRLaW5kQ2FycmllcikuZXhwb3J0S2luZDtcbiAgICBjb25zdCBpc1R5cGVPbmx5ID1cbiAgICAgIGRlY2xhcmF0aW9uRXhwb3J0S2luZCA9PT0gXCJ0eXBlXCIgfHwgc3BlY2lmaWVyRXhwb3J0S2luZCA9PT0gXCJ0eXBlXCI7XG5cbiAgICBpZiAoXG4gICAgICAhaXNUeXBlT25seSAmJlxuICAgICAgc3BlY2lmaWVyLmxvY2FsLnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmXG4gICAgICBzcGVjaWZpZXIuZXhwb3J0ZWQudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcbiAgICAgIHNwZWNpZmllci5sb2NhbC5uYW1lICE9PSBzcGVjaWZpZXIuZXhwb3J0ZWQubmFtZVxuICAgICkge1xuICAgICAgY2FuZGlkYXRlcy5wdXNoKHtcbiAgICAgICAgb3JpZ2luYWxOYW1lOiBzcGVjaWZpZXIubG9jYWwubmFtZSxcbiAgICAgICAgc3BlY2lmaWVyLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNhbmRpZGF0ZXM7XG59O1xuXG4vKipcbiAqIENvbGxlY3RzIGFsaWFzZWQgaW1wb3J0L2V4cG9ydCBuYW1lZCBzcGVjaWZpZXJzLlxuICogQHBhcmFtIGJvZHkgUHJvZ3JhbSBib2R5IHN0YXRlbWVudHMuXG4gKiBAcmV0dXJucyBBbGlhc2VkIG5hbWVkIGltcG9ydC9leHBvcnQgc3BlY2lmaWVycy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjYW5kaWRhdGVzID0gY29sbGVjdEFsaWFzZWRTcGVjaWZpZXJzKHByb2dyYW0uYm9keSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgY29sbGVjdEFsaWFzZWRTcGVjaWZpZXJzID0gKFxuICBib2R5OiBFU1RyZWUuUHJvZ3JhbVtcImJvZHlcIl0sXG4pOiBBbGlhc2VkU3BlY2lmaWVyQ2FuZGlkYXRlW10gPT4ge1xuICBjb25zdCBjYW5kaWRhdGVzOiBBbGlhc2VkU3BlY2lmaWVyQ2FuZGlkYXRlW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiBib2R5KSB7XG4gICAgaWYgKHN0YXRlbWVudC50eXBlID09PSBcIkltcG9ydERlY2xhcmF0aW9uXCIpIHtcbiAgICAgIGNhbmRpZGF0ZXMucHVzaCguLi5jb2xsZWN0SW1wb3J0QWxpYXNDYW5kaWRhdGVzKHN0YXRlbWVudCkpO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZW1lbnQudHlwZSA9PT0gXCJFeHBvcnROYW1lZERlY2xhcmF0aW9uXCIpIHtcbiAgICAgIGNhbmRpZGF0ZXMucHVzaCguLi5jb2xsZWN0RXhwb3J0QWxpYXNDYW5kaWRhdGVzKHN0YXRlbWVudCkpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjYW5kaWRhdGVzO1xufTtcblxuLyoqXG4gKiBCdWlsZHMgYSBsaXN0ZW5lciBmb3IgdGhpcyBydWxlLlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBleGVjdXRpb24gY29udGV4dC5cbiAqIEByZXR1cm5zIExpc3RlbmVyIGZvciBpbXBvcnQvZXhwb3J0IGFsaWFzIGNoZWNrcy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBsaXN0ZW5lciA9IGJ1aWxkTGlzdGVuZXIoY29udGV4dCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgYnVpbGRMaXN0ZW5lciA9IChjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZS5SdWxlTGlzdGVuZXIgPT4gKHtcbiAgUHJvZ3JhbShub2RlOiBFU1RyZWUuUHJvZ3JhbSk6IHZvaWQge1xuICAgIGNvbnN0IGJvdW5kTmFtZXMgPSBjb2xsZWN0Qm91bmROYW1lcyhub2RlLmJvZHkpO1xuICAgIGNvbnN0IGFsaWFzZWRTcGVjaWZpZXJzID0gY29sbGVjdEFsaWFzZWRTcGVjaWZpZXJzKG5vZGUuYm9keSk7XG5cbiAgICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBhbGlhc2VkU3BlY2lmaWVycykge1xuICAgICAgaWYgKCFib3VuZE5hbWVzLmhhcyhjYW5kaWRhdGUub3JpZ2luYWxOYW1lKSkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgbWVzc2FnZUlkOiBcImFsaWFzTm90QWxsb3dlZFwiLFxuICAgICAgICAgIG5vZGU6IGNhbmRpZGF0ZS5zcGVjaWZpZXIsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbn0pO1xuXG4vKiogRVNMaW50IHJ1bGUgdGhhdCBmb3JiaWRzIGFsaWFzZWQgaW1wb3J0L2V4cG9ydCBuYW1lcyB1bmxlc3MgcmVxdWlyZWQgYnkgc2FtZS1maWxlIG5hbWUgY29sbGlzaW9ucy4gKi9cbmNvbnN0IG5vSW1wb3J0RXhwb3J0QWxpYXNlc1J1bGU6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQpOiBSdWxlLlJ1bGVMaXN0ZW5lciB7XG4gICAgcmV0dXJuIGJ1aWxkTGlzdGVuZXIoY29udGV4dCk7XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJGb3JiaWQgYWxpYXNlZCBpbXBvcnQvZXhwb3J0IG5hbWVzIHVubGVzcyB0aGUgb3JpZ2luYWwgbmFtZSBpcyBhbHJlYWR5IGJvdW5kIGluIHRoZSBzYW1lIGZpbGUuXCIsXG4gICAgICByZWNvbW1lbmRlZDogZmFsc2UsXG4gICAgICB1cmw6IFwiaHR0cHM6Ly9naXRodWIuY29tL3BhcmxvdGkvZXNsaW50LXBsdWdpbi9ibG9iL21haW4vZG9jcy9ydWxlcy9uby1pbXBvcnQtZXhwb3J0LWFsaWFzZXMubWRcIixcbiAgICB9LFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICBhbGlhc05vdEFsbG93ZWQ6XG4gICAgICAgIFwiQXZvaWQgYWxpYXNlZCBpbXBvcnQvZXhwb3J0IG5hbWVzIHVubGVzcyB0aGUgb3JpZ2luYWwgbmFtZSBpcyBhbHJlYWR5IGJvdW5kIGluIHRoaXMgZmlsZS5cIixcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogXCJwcm9ibGVtXCIsXG4gIH0sXG59O1xuXG5leHBvcnQgeyBub0ltcG9ydEV4cG9ydEFsaWFzZXNSdWxlIH07XG4iXX0=
@@ -0,0 +1,5 @@
1
+ import type { Rule } from "eslint";
2
+ /** ESLint rule that forbids import/export module specifiers with explicit file extensions. */
3
+ declare const noImportExportExtensionsRule: Rule.RuleModule;
4
+ export { noImportExportExtensionsRule };
5
+ //# sourceMappingURL=no-import-export-extensions-rule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-import-export-extensions-rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAgJnC,8FAA8F;AAC9F,QAAA,MAAM,4BAA4B,EAAE,IAAI,CAAC,UA4BxC,CAAC;AAEF,OAAO,EAAE,4BAA4B,EAAE,CAAC"}
@@ -0,0 +1,136 @@
1
+ /** Set of disallowed module-specifier file extensions. */
2
+ const disallowedExtensions = new Set([
3
+ ".cjs",
4
+ ".cts",
5
+ ".js",
6
+ ".jsx",
7
+ ".mjs",
8
+ ".mts",
9
+ ".ts",
10
+ ".tsx",
11
+ ]);
12
+ /**
13
+ * Gets the trailing extension from a module specifier string.
14
+ * @param source Module specifier text.
15
+ * @returns File extension including the leading dot when present.
16
+ * @example
17
+ * ```typescript
18
+ * const extension = getTrailingExtension("./feature.ts");
19
+ * ```
20
+ */
21
+ const getSpecifierEndIndex = (source) => {
22
+ const queryIndex = source.indexOf("?");
23
+ const hashIndex = source.indexOf("#");
24
+ const endIndexCandidates = [queryIndex, hashIndex].filter((index) => index >= 0);
25
+ return endIndexCandidates.length === 0
26
+ ? source.length
27
+ : Math.min(...endIndexCandidates);
28
+ };
29
+ /**
30
+ * Gets the trailing extension from a module specifier string.
31
+ * @param source Module specifier text.
32
+ * @returns File extension including the leading dot when present.
33
+ * @example
34
+ * ```typescript
35
+ * const extension = getTrailingExtension("./feature.ts");
36
+ * ```
37
+ */
38
+ const getTrailingExtension = (source) => {
39
+ const endIndex = getSpecifierEndIndex(source);
40
+ const cleanedSource = source.slice(0, endIndex);
41
+ const lastSlashIndex = Math.max(cleanedSource.lastIndexOf("/"), cleanedSource.lastIndexOf("\\"));
42
+ const basename = cleanedSource.slice(lastSlashIndex + 1);
43
+ const dotIndex = basename.lastIndexOf(".");
44
+ if (dotIndex <= 0) {
45
+ return void 0;
46
+ }
47
+ return basename.slice(dotIndex).toLowerCase();
48
+ };
49
+ /**
50
+ * Checks whether a source literal should be reported.
51
+ * @param sourceLiteral Source literal node.
52
+ * @returns True when the source includes a disallowed file extension.
53
+ * @example
54
+ * ```typescript
55
+ * const forbidden = hasDisallowedExtension(sourceLiteral);
56
+ * ```
57
+ */
58
+ const hasDisallowedExtension = (sourceLiteral) => {
59
+ if (typeof sourceLiteral.value !== "string") {
60
+ return false;
61
+ }
62
+ const extension = getTrailingExtension(sourceLiteral.value);
63
+ return extension !== void 0 && disallowedExtensions.has(extension);
64
+ };
65
+ /**
66
+ * Reports a statement when it references a source with disallowed extension.
67
+ * @param context Rule execution context.
68
+ * @param statement Statement that may include a source literal.
69
+ * @example
70
+ * ```typescript
71
+ * reportWhenSourceHasExtension(context, statement);
72
+ * ```
73
+ */
74
+ const reportWhenSourceHasExtension = (context, statement) => {
75
+ const sourceLiteral = statement.source;
76
+ if (sourceLiteral === null || sourceLiteral === void 0) {
77
+ return;
78
+ }
79
+ if (!hasDisallowedExtension(sourceLiteral)) {
80
+ return;
81
+ }
82
+ context.report({
83
+ messageId: "unexpectedExtension",
84
+ node: sourceLiteral,
85
+ });
86
+ };
87
+ /**
88
+ * Narrows one program statement to the source-bearing declarations this rule inspects.
89
+ * @param statement Program statement node.
90
+ * @returns Source-bearing declaration when supported.
91
+ * @example
92
+ * ```typescript
93
+ * const declaration = asSourceDeclaration(statement);
94
+ * ```
95
+ */
96
+ const asSourceDeclaration = (statement) => {
97
+ if (statement.type === "ExportAllDeclaration") {
98
+ return statement;
99
+ }
100
+ if (statement.type === "ExportNamedDeclaration") {
101
+ return statement;
102
+ }
103
+ if (statement.type === "ImportDeclaration") {
104
+ return statement;
105
+ }
106
+ return void 0;
107
+ };
108
+ /** ESLint rule that forbids import/export module specifiers with explicit file extensions. */
109
+ const noImportExportExtensionsRule = {
110
+ create(context) {
111
+ return {
112
+ Program(node) {
113
+ for (const statement of node.body) {
114
+ const declaration = asSourceDeclaration(statement);
115
+ if (declaration !== void 0) {
116
+ reportWhenSourceHasExtension(context, declaration);
117
+ }
118
+ }
119
+ },
120
+ };
121
+ },
122
+ meta: {
123
+ docs: {
124
+ description: "Forbid explicit file extensions in import/export module specifiers.",
125
+ recommended: false,
126
+ url: "https://github.com/parloti/eslint-plugin/blob/main/docs/rules/no-import-export-extensions.md",
127
+ },
128
+ messages: {
129
+ unexpectedExtension: "Avoid file extensions in import/export module specifiers.",
130
+ },
131
+ schema: [],
132
+ type: "problem",
133
+ },
134
+ };
135
+ export { noImportExportExtensionsRule };
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8taW1wb3J0LWV4cG9ydC1leHRlbnNpb25zLXJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2FyY2hpdGVjdHVyZS9jb25zaXN0ZW50LWJhcnJlbC1maWxlcy9uby1pbXBvcnQtZXhwb3J0LWV4dGVuc2lvbnMtcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSwwREFBMEQ7QUFDMUQsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNuQyxNQUFNO0lBQ04sTUFBTTtJQUNOLEtBQUs7SUFDTCxNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixLQUFLO0lBQ0wsTUFBTTtDQUNQLENBQUMsQ0FBQztBQUVIOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLE1BQWMsRUFBVSxFQUFFO0lBQ3RELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxNQUFNLGtCQUFrQixHQUFHLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FDdkQsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQ3RCLENBQUM7SUFFRixPQUFPLGtCQUFrQixDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTTtRQUNmLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFjLEVBQXNCLEVBQUU7SUFDbEUsTUFBTSxRQUFRLEdBQUcsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsTUFBTSxh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QUFXLEVBQ1QscUVBQXFFO1lBQ3ZFLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLEdBQUcsRUFBRSw4RkFBOEY7U0FDcEc7UUFDRCxRQUFRLEVBQUU7WUFDUixtQkFBbUIsRUFDakIsMkRBQTJEO1NBQzlEO1FBQ0QsTUFBTSxFQUFFLEVBQUU7UUFDVixJQUFJLEVBQUUsU0FBUztLQUNoQjtDQUNGLENBQUM7QUFFRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcclxuaW1wb3J0IHR5cGUgKiBhcyBFU1RyZWUgZnJvbSBcImVzdHJlZVwiO1xyXG5cclxuLyoqIFNldCBvZiBkaXNhbGxvd2VkIG1vZHVsZS1zcGVjaWZpZXIgZmlsZSBleHRlbnNpb25zLiAqL1xyXG5jb25zdCBkaXNhbGxvd2VkRXh0ZW5zaW9ucyA9IG5ldyBTZXQoW1xyXG4gIFwiLmNqc1wiLFxyXG4gIFwiLmN0c1wiLFxyXG4gIFwiLmpzXCIsXHJcbiAgXCIuanN4XCIsXHJcbiAgXCIubWpzXCIsXHJcbiAgXCIubXRzXCIsXHJcbiAgXCIudHNcIixcclxuICBcIi50c3hcIixcclxuXSk7XHJcblxyXG4vKipcclxuICogR2V0cyB0aGUgdHJhaWxpbmcgZXh0ZW5zaW9uIGZyb20gYSBtb2R1bGUgc3BlY2lmaWVyIHN0cmluZy5cclxuICogQHBhcmFtIHNvdXJjZSBNb2R1bGUgc3BlY2lmaWVyIHRleHQuXHJcbiAqIEByZXR1cm5zIEZpbGUgZXh0ZW5zaW9uIGluY2x1ZGluZyB0aGUgbGVhZGluZyBkb3Qgd2hlbiBwcmVzZW50LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IGV4dGVuc2lvbiA9IGdldFRyYWlsaW5nRXh0ZW5zaW9uKFwiLi9mZWF0dXJlLnRzXCIpO1xyXG4gKiBgYGBcclxuICovXHJcbmNvbnN0IGdldFNwZWNpZmllckVuZEluZGV4ID0gKHNvdXJjZTogc3RyaW5nKTogbnVtYmVyID0+IHtcclxuICBjb25zdCBxdWVyeUluZGV4ID0gc291cmNlLmluZGV4T2YoXCI/XCIpO1xyXG4gIGNvbnN0IGhhc2hJbmRleCA9IHNvdXJjZS5pbmRleE9mKFwiI1wiKTtcclxuICBjb25zdCBlbmRJbmRleENhbmRpZGF0ZXMgPSBbcXVlcnlJbmRleCwgaGFzaEluZGV4XS5maWx0ZXIoXHJcbiAgICAoaW5kZXgpID0+IGluZGV4ID49IDAsXHJcbiAgKTtcclxuXHJcbiAgcmV0dXJuIGVuZEluZGV4Q2FuZGlkYXRlcy5sZW5ndGggPT09IDBcclxuICAgID8gc291cmNlLmxlbmd0aFxyXG4gICAgOiBNYXRoLm1pbiguLi5lbmRJbmRleENhbmRpZGF0ZXMpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEdldHMgdGhlIHRyYWlsaW5nIGV4dGVuc2lvbiBmcm9tIGEgbW9kdWxlIHNwZWNpZmllciBzdHJpbmcuXHJcbiAqIEBwYXJhbSBzb3VyY2UgTW9kdWxlIHNwZWNpZmllciB0ZXh0LlxyXG4gKiBAcmV0dXJucyBGaWxlIGV4dGVuc2lvbiBpbmNsdWRpbmcgdGhlIGxlYWRpbmcgZG90IHdoZW4gcHJlc2VudC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBleHRlbnNpb24gPSBnZXRUcmFpbGluZ0V4dGVuc2lvbihcIi4vZmVhdHVyZS50c1wiKTtcclxuICogYGBgXHJcbiAqL1xyXG5jb25zdCBnZXRUcmFpbGluZ0V4dGVuc2lvbiA9IChzb3VyY2U6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XHJcbiAgY29uc3QgZW5kSW5kZXggPSBnZXRTcGVjaWZpZXJFbmRJbmRleChzb3VyY2UpO1xyXG4gIGNvbnN0IGNsZWFuZWRTb3VyY2UgPSBzb3VyY2Uuc2xpY2UoMCwgZW5kSW5kZXgpO1xyXG4gIGNvbnN0IGxhc3RTbGFzaEluZGV4ID0gTWF0aC5tYXgoXHJcbiAgICBjbGVhbmVkU291cmNlLmxhc3RJbmRleE9mKFwiL1wiKSxcclxuICAgIGNsZWFuZWRTb3VyY2UubGFzdEluZGV4T2YoXCJcXFxcXCIpLFxyXG4gICk7XHJcbiAgY29uc3QgYmFzZW5hbWUgPSBjbGVhbmVkU291cmNlLnNsaWNlKGxhc3RTbGFzaEluZGV4ICsgMSk7XHJcbiAgY29uc3QgZG90SW5kZXggPSBiYXNlbmFtZS5sYXN0SW5kZXhPZihcIi5cIik7XHJcblxyXG4gIGlmIChkb3RJbmRleCA8PSAwKSB7XHJcbiAgICByZXR1cm4gdm9pZCAwO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGJhc2VuYW1lLnNsaWNlKGRvdEluZGV4KS50b0xvd2VyQ2FzZSgpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIENoZWNrcyB3aGV0aGVyIGEgc291cmNlIGxpdGVyYWwgc2hvdWxkIGJlIHJlcG9ydGVkLlxyXG4gKiBAcGFyYW0gc291cmNlTGl0ZXJhbCBTb3VyY2UgbGl0ZXJhbCBub2RlLlxyXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIHNvdXJjZSBpbmNsdWRlcyBhIGRpc2FsbG93ZWQgZmlsZSBleHRlbnNpb24uXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgZm9yYmlkZGVuID0gaGFzRGlzYWxsb3dlZEV4dGVuc2lvbihzb3VyY2VMaXRlcmFsKTtcclxuICogYGBgXHJcbiAqL1xyXG5jb25zdCBoYXNEaXNhbGxvd2VkRXh0ZW5zaW9uID0gKHNvdXJjZUxpdGVyYWw6IEVTVHJlZS5MaXRlcmFsKTogYm9vbGVhbiA9PiB7XHJcbiAgaWYgKHR5cGVvZiBzb3VyY2VMaXRlcmFsLnZhbHVlICE9PSBcInN0cmluZ1wiKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjb25zdCBleHRlbnNpb24gPSBnZXRUcmFpbGluZ0V4dGVuc2lvbihzb3VyY2VMaXRlcmFsLnZhbHVlKTtcclxuXHJcbiAgcmV0dXJuIGV4dGVuc2lvbiAhPT0gdm9pZCAwICYmIGRpc2FsbG93ZWRFeHRlbnNpb25zLmhhcyhleHRlbnNpb24pO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFJlcG9ydHMgYSBzdGF0ZW1lbnQgd2hlbiBpdCByZWZlcmVuY2VzIGEgc291cmNlIHdpdGggZGlzYWxsb3dlZCBleHRlbnNpb24uXHJcbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHQuXHJcbiAqIEBwYXJhbSBzdGF0ZW1lbnQgU3RhdGVtZW50IHRoYXQgbWF5IGluY2x1ZGUgYSBzb3VyY2UgbGl0ZXJhbC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiByZXBvcnRXaGVuU291cmNlSGFzRXh0ZW5zaW9uKGNvbnRleHQsIHN0YXRlbWVudCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuY29uc3QgcmVwb3J0V2hlblNvdXJjZUhhc0V4dGVuc2lvbiA9IChcclxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxyXG4gIHN0YXRlbWVudDpcclxuICAgIHwgRVNUcmVlLkV4cG9ydEFsbERlY2xhcmF0aW9uXHJcbiAgICB8IEVTVHJlZS5FeHBvcnROYW1lZERlY2xhcmF0aW9uXHJcbiAgICB8IEVTVHJlZS5JbXBvcnREZWNsYXJhdGlvbixcclxuKTogdm9pZCA9PiB7XHJcbiAgY29uc3Qgc291cmNlTGl0ZXJhbCA9IHN0YXRlbWVudC5zb3VyY2U7XHJcblxyXG4gIGlmIChzb3VyY2VMaXRlcmFsID09PSBudWxsIHx8IHNvdXJjZUxpdGVyYWwgPT09IHZvaWQgMCkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgaWYgKCFoYXNEaXNhbGxvd2VkRXh0ZW5zaW9uKHNvdXJjZUxpdGVyYWwpKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBjb250ZXh0LnJlcG9ydCh7XHJcbiAgICBtZXNzYWdlSWQ6IFwidW5leHBlY3RlZEV4dGVuc2lvblwiLFxyXG4gICAgbm9kZTogc291cmNlTGl0ZXJhbCxcclxuICB9KTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBOYXJyb3dzIG9uZSBwcm9ncmFtIHN0YXRlbWVudCB0byB0aGUgc291cmNlLWJlYXJpbmcgZGVjbGFyYXRpb25zIHRoaXMgcnVsZSBpbnNwZWN0cy5cclxuICogQHBhcmFtIHN0YXRlbWVudCBQcm9ncmFtIHN0YXRlbWVudCBub2RlLlxyXG4gKiBAcmV0dXJucyBTb3VyY2UtYmVhcmluZyBkZWNsYXJhdGlvbiB3aGVuIHN1cHBvcnRlZC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBkZWNsYXJhdGlvbiA9IGFzU291cmNlRGVjbGFyYXRpb24oc3RhdGVtZW50KTtcclxuICogYGBgXHJcbiAqL1xyXG5jb25zdCBhc1NvdXJjZURlY2xhcmF0aW9uID0gKFxyXG4gIHN0YXRlbWVudDogRVNUcmVlLlByb2dyYW1bXCJib2R5XCJdW251bWJlcl0sXHJcbik6XHJcbiAgfCBFU1RyZWUuRXhwb3J0QWxsRGVjbGFyYXRpb25cclxuICB8IEVTVHJlZS5FeHBvcnROYW1lZERlY2xhcmF0aW9uXHJcbiAgfCBFU1RyZWUuSW1wb3J0RGVjbGFyYXRpb25cclxuICB8IHVuZGVmaW5lZCA9PiB7XHJcbiAgaWYgKHN0YXRlbWVudC50eXBlID09PSBcIkV4cG9ydEFsbERlY2xhcmF0aW9uXCIpIHtcclxuICAgIHJldHVybiBzdGF0ZW1lbnQ7XHJcbiAgfVxyXG5cclxuICBpZiAoc3RhdGVtZW50LnR5cGUgPT09IFwiRXhwb3J0TmFtZWREZWNsYXJhdGlvblwiKSB7XHJcbiAgICByZXR1cm4gc3RhdGVtZW50O1xyXG4gIH1cclxuXHJcbiAgaWYgKHN0YXRlbWVudC50eXBlID09PSBcIkltcG9ydERlY2xhcmF0aW9uXCIpIHtcclxuICAgIHJldHVybiBzdGF0ZW1lbnQ7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gdm9pZCAwO1xyXG59O1xyXG5cclxuLyoqIEVTTGludCBydWxlIHRoYXQgZm9yYmlkcyBpbXBvcnQvZXhwb3J0IG1vZHVsZSBzcGVjaWZpZXJzIHdpdGggZXhwbGljaXQgZmlsZSBleHRlbnNpb25zLiAqL1xyXG5jb25zdCBub0ltcG9ydEV4cG9ydEV4dGVuc2lvbnNSdWxlOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XHJcbiAgY3JlYXRlKGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQpOiBSdWxlLlJ1bGVMaXN0ZW5lciB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBQcm9ncmFtKG5vZGU6IEVTVHJlZS5Qcm9ncmFtKTogdm9pZCB7XHJcbiAgICAgICAgZm9yIChjb25zdCBzdGF0ZW1lbnQgb2Ygbm9kZS5ib2R5KSB7XHJcbiAgICAgICAgICBjb25zdCBkZWNsYXJhdGlvbiA9IGFzU291cmNlRGVjbGFyYXRpb24oc3RhdGVtZW50KTtcclxuXHJcbiAgICAgICAgICBpZiAoZGVjbGFyYXRpb24gIT09IHZvaWQgMCkge1xyXG4gICAgICAgICAgICByZXBvcnRXaGVuU291cmNlSGFzRXh0ZW5zaW9uKGNvbnRleHQsIGRlY2xhcmF0aW9uKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gIH0sXHJcbiAgbWV0YToge1xyXG4gICAgZG9jczoge1xyXG4gICAgICBkZXNjcmlwdGlvbjpcclxuICAgICAgICBcIkZvcmJpZCBleHBsaWNpdCBmaWxlIGV4dGVuc2lvbnMgaW4gaW1wb3J0L2V4cG9ydCBtb2R1bGUgc3BlY2lmaWVycy5cIixcclxuICAgICAgcmVjb21tZW5kZWQ6IGZhbHNlLFxyXG4gICAgICB1cmw6IFwiaHR0cHM6Ly9naXRodWIuY29tL3BhcmxvdGkvZXNsaW50LXBsdWdpbi9ibG9iL21haW4vZG9jcy9ydWxlcy9uby1pbXBvcnQtZXhwb3J0LWV4dGVuc2lvbnMubWRcIixcclxuICAgIH0sXHJcbiAgICBtZXNzYWdlczoge1xyXG4gICAgICB1bmV4cGVjdGVkRXh0ZW5zaW9uOlxyXG4gICAgICAgIFwiQXZvaWQgZmlsZSBleHRlbnNpb25zIGluIGltcG9ydC9leHBvcnQgbW9kdWxlIHNwZWNpZmllcnMuXCIsXHJcbiAgICB9LFxyXG4gICAgc2NoZW1hOiBbXSxcclxuICAgIHR5cGU6IFwicHJvYmxlbVwiLFxyXG4gIH0sXHJcbn07XHJcblxyXG5leHBvcnQgeyBub0ltcG9ydEV4cG9ydEV4dGVuc2lvbnNSdWxlIH07XHJcbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/architecture/consistent-barrel-files/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAQnC;;;;;;GAMG;AACH,QAAA,MAAM,yBAAyB,EAAE,IAAI,CAAC,UA8CrC,CAAC;AAEF,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
1
+ {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/architecture/consistent-barrel-files/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAQnC;;;;;;GAMG;AACH,QAAA,MAAM,yBAAyB,EAAE,IAAI,CAAC,UA6CrC,CAAC;AAEF,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
@@ -33,7 +33,6 @@ const consistentBarrelFilesRule = {
33
33
  allowedNames: {
34
34
  description: "Allowed barrel basenames that the rule recognizes in each folder.",
35
35
  items: { type: "string" },
36
- minItems: 1,
37
36
  type: "array",
38
37
  },
39
38
  enforce: {
@@ -48,4 +47,4 @@ const consistentBarrelFilesRule = {
48
47
  },
49
48
  };
50
49
  export { consistentBarrelFilesRule };
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vYXJjaGl0ZWN0dXJlL2NvbnNpc3RlbnQtYmFycmVsLWZpbGVzL3J1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0UsT0FBTyxFQUNMLFVBQVUsRUFDVixrQkFBa0IsR0FDbkIsTUFBTSxtQ0FBbUMsQ0FBQztBQUUzQzs7Ozs7O0dBTUc7QUFDSCxNQUFNLHlCQUF5QixHQUFvQjtJQUNqRCxNQUFNLENBQUMsT0FBeUI7UUFDOUIsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFFdEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDbEMsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsT0FBTyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFDRCxJQUFJLEVBQUU7UUFDSixjQUFjLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM1RCxJQUFJLEVBQUU7WUFDSixXQUFXLEVBQ1QsZ0VBQWdFO1lBQ2xFLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLEdBQUcsRUFBRSwwRkFBMEY7U0FDaEc7UUFDRCxRQUFRLEVBQUU7WUFDUixlQUFlLEVBQ2IsZ0VBQWdFO1lBQ2xFLGFBQWEsRUFDWCxrRkFBa0Y7U0FDckY7UUFDRCxNQUFNLEVBQUU7WUFDTjtnQkFDRSxvQkFBb0IsRUFBRSxLQUFLO2dCQUMzQixVQUFVLEVBQUU7b0JBQ1YsWUFBWSxFQUFFO3dCQUNaLFdBQVcsRUFDVCxtRUFBbUU7d0JBQ3JFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7d0JBQ3pCLFFBQVEsRUFBRSxDQUFDO3dCQUNYLElBQUksRUFBRSxPQUFPO3FCQUNkO29CQUNELE9BQU8sRUFBRTt3QkFDUCxXQUFXLEVBQ1QsZ0ZBQWdGO3dCQUNsRixJQUFJLEVBQUUsU0FBUztxQkFDaEI7aUJBQ0Y7Z0JBQ0QsSUFBSSxFQUFFLFFBQVE7YUFDZjtTQUNGO1FBQ0QsSUFBSSxFQUFFLFNBQVM7S0FDaEI7Q0FDRixDQUFDO0FBRUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XG5cbmltcG9ydCB7IGJ1aWxkTGlzdGVuZXJGb3JGaWxlIH0gZnJvbSBcIi4vY29uc2lzdGVudC1iYXJyZWwtZmlsZXMtbGlzdGVuZXJzXCI7XG5pbXBvcnQge1xuICBnZXRPcHRpb25zLFxuICBpc0xpbnRhYmxlRmlsZW5hbWUsXG59IGZyb20gXCIuL2NvbnNpc3RlbnQtYmFycmVsLWZpbGVzLW9wdGlvbnNcIjtcblxuLyoqXG4gKiBFU0xpbnQgcnVsZSByZXF1aXJpbmcgY29uc2lzdGVudCBiYXJyZWwgZmlsZSB1c2FnZSBieSBmb2xkZXIuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcnVsZSA9IGNvbnNpc3RlbnRCYXJyZWxGaWxlc1J1bGU7XG4gKiBgYGBcbiAqL1xuY29uc3QgY29uc2lzdGVudEJhcnJlbEZpbGVzUnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCk6IFJ1bGUuUnVsZUxpc3RlbmVyIHtcbiAgICBjb25zdCB7IGZpbGVuYW1lLCBvcHRpb25zIH0gPSBjb250ZXh0O1xuXG4gICAgaWYgKCFpc0xpbnRhYmxlRmlsZW5hbWUoZmlsZW5hbWUpKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1aWxkTGlzdGVuZXJGb3JGaWxlKGNvbnRleHQsIGZpbGVuYW1lLCBnZXRPcHRpb25zKG9wdGlvbnMpKTtcbiAgfSxcbiAgbWV0YToge1xuICAgIGRlZmF1bHRPcHRpb25zOiBbeyBhbGxvd2VkTmFtZXM6IFtcImluZGV4XCJdLCBlbmZvcmNlOiB0cnVlIH1dLFxuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkVuZm9yY2Ugb3IgZm9yYmlkIGJhcnJlbCBmaWxlcyB3aXRoIGNvbnNpc3RlbnQsIGFsbG93ZWQgbmFtZXMuXCIsXG4gICAgICByZWNvbW1lbmRlZDogZmFsc2UsXG4gICAgICB1cmw6IFwiaHR0cHM6Ly9naXRodWIuY29tL3BhcmxvdGkvZXNsaW50LXBsdWdpbi9ibG9iL21haW4vZG9jcy9ydWxlcy9jb25zaXN0ZW50LWJhcnJlbC1maWxlcy5tZFwiLFxuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIGZvcmJpZGRlbkJhcnJlbDpcbiAgICAgICAgXCJCYXJyZWwgZmlsZXMgYXJlIGZvcmJpZGRlbi4gUmVtb3ZlIHRoZSBiYXJyZWwgZmlsZSAne3tuYW1lfX0nLlwiLFxuICAgICAgbWlzc2luZ0JhcnJlbDpcbiAgICAgICAgXCJFYWNoIGZvbGRlciBtdXN0IGluY2x1ZGUgYSBiYXJyZWwgZmlsZSBuYW1lZCB3aXRoIG9uZSBvZiB0aGVzZSBzdGVtczoge3tuYW1lc319LlwiLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXG4gICAgICB7XG4gICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGFsbG93ZWROYW1lczoge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgIFwiQWxsb3dlZCBiYXJyZWwgYmFzZW5hbWVzIHRoYXQgdGhlIHJ1bGUgcmVjb2duaXplcyBpbiBlYWNoIGZvbGRlci5cIixcbiAgICAgICAgICAgIGl0ZW1zOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgIG1pbkl0ZW1zOiAxLFxuICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZW5mb3JjZToge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgIFwiV2hldGhlciBlYWNoIGVsaWdpYmxlIGZvbGRlciBtdXN0IGNvbnRhaW4gb25lIG9mIHRoZSBhbGxvd2VkIGJhcnJlbCBmaWxlbmFtZXMuXCIsXG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHR5cGU6IFwicHJvYmxlbVwiLFxuICB9LFxufTtcblxuZXhwb3J0IHsgY29uc2lzdGVudEJhcnJlbEZpbGVzUnVsZSB9O1xuIl19
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vYXJjaGl0ZWN0dXJlL2NvbnNpc3RlbnQtYmFycmVsLWZpbGVzL3J1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0UsT0FBTyxFQUNMLFVBQVUsRUFDVixrQkFBa0IsR0FDbkIsTUFBTSxtQ0FBbUMsQ0FBQztBQUUzQzs7Ozs7O0dBTUc7QUFDSCxNQUFNLHlCQUF5QixHQUFvQjtJQUNqRCxNQUFNLENBQUMsT0FBeUI7UUFDOUIsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFFdEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDbEMsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsT0FBTyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFDRCxJQUFJLEVBQUU7UUFDSixjQUFjLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM1RCxJQUFJLEVBQUU7WUFDSixXQUFXLEVBQ1QsZ0VBQWdFO1lBQ2xFLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLEdBQUcsRUFBRSwwRkFBMEY7U0FDaEc7UUFDRCxRQUFRLEVBQUU7WUFDUixlQUFlLEVBQ2IsZ0VBQWdFO1lBQ2xFLGFBQWEsRUFDWCxrRkFBa0Y7U0FDckY7UUFDRCxNQUFNLEVBQUU7WUFDTjtnQkFDRSxvQkFBb0IsRUFBRSxLQUFLO2dCQUMzQixVQUFVLEVBQUU7b0JBQ1YsWUFBWSxFQUFFO3dCQUNaLFdBQVcsRUFDVCxtRUFBbUU7d0JBQ3JFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7d0JBQ3pCLElBQUksRUFBRSxPQUFPO3FCQUNkO29CQUNELE9BQU8sRUFBRTt3QkFDUCxXQUFXLEVBQ1QsZ0ZBQWdGO3dCQUNsRixJQUFJLEVBQUUsU0FBUztxQkFDaEI7aUJBQ0Y7Z0JBQ0QsSUFBSSxFQUFFLFFBQVE7YUFDZjtTQUNGO1FBQ0QsSUFBSSxFQUFFLFNBQVM7S0FDaEI7Q0FDRixDQUFDO0FBRUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XG5cbmltcG9ydCB7IGJ1aWxkTGlzdGVuZXJGb3JGaWxlIH0gZnJvbSBcIi4vY29uc2lzdGVudC1iYXJyZWwtZmlsZXMtbGlzdGVuZXJzXCI7XG5pbXBvcnQge1xuICBnZXRPcHRpb25zLFxuICBpc0xpbnRhYmxlRmlsZW5hbWUsXG59IGZyb20gXCIuL2NvbnNpc3RlbnQtYmFycmVsLWZpbGVzLW9wdGlvbnNcIjtcblxuLyoqXG4gKiBFU0xpbnQgcnVsZSByZXF1aXJpbmcgY29uc2lzdGVudCBiYXJyZWwgZmlsZSB1c2FnZSBieSBmb2xkZXIuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcnVsZSA9IGNvbnNpc3RlbnRCYXJyZWxGaWxlc1J1bGU7XG4gKiBgYGBcbiAqL1xuY29uc3QgY29uc2lzdGVudEJhcnJlbEZpbGVzUnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCk6IFJ1bGUuUnVsZUxpc3RlbmVyIHtcbiAgICBjb25zdCB7IGZpbGVuYW1lLCBvcHRpb25zIH0gPSBjb250ZXh0O1xuXG4gICAgaWYgKCFpc0xpbnRhYmxlRmlsZW5hbWUoZmlsZW5hbWUpKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1aWxkTGlzdGVuZXJGb3JGaWxlKGNvbnRleHQsIGZpbGVuYW1lLCBnZXRPcHRpb25zKG9wdGlvbnMpKTtcbiAgfSxcbiAgbWV0YToge1xuICAgIGRlZmF1bHRPcHRpb25zOiBbeyBhbGxvd2VkTmFtZXM6IFtcImluZGV4XCJdLCBlbmZvcmNlOiB0cnVlIH1dLFxuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkVuZm9yY2Ugb3IgZm9yYmlkIGJhcnJlbCBmaWxlcyB3aXRoIGNvbnNpc3RlbnQsIGFsbG93ZWQgbmFtZXMuXCIsXG4gICAgICByZWNvbW1lbmRlZDogZmFsc2UsXG4gICAgICB1cmw6IFwiaHR0cHM6Ly9naXRodWIuY29tL3BhcmxvdGkvZXNsaW50LXBsdWdpbi9ibG9iL21haW4vZG9jcy9ydWxlcy9jb25zaXN0ZW50LWJhcnJlbC1maWxlcy5tZFwiLFxuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIGZvcmJpZGRlbkJhcnJlbDpcbiAgICAgICAgXCJCYXJyZWwgZmlsZXMgYXJlIGZvcmJpZGRlbi4gUmVtb3ZlIHRoZSBiYXJyZWwgZmlsZSAne3tuYW1lfX0nLlwiLFxuICAgICAgbWlzc2luZ0JhcnJlbDpcbiAgICAgICAgXCJFYWNoIGZvbGRlciBtdXN0IGluY2x1ZGUgYSBiYXJyZWwgZmlsZSBuYW1lZCB3aXRoIG9uZSBvZiB0aGVzZSBzdGVtczoge3tuYW1lc319LlwiLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXG4gICAgICB7XG4gICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGFsbG93ZWROYW1lczoge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgIFwiQWxsb3dlZCBiYXJyZWwgYmFzZW5hbWVzIHRoYXQgdGhlIHJ1bGUgcmVjb2duaXplcyBpbiBlYWNoIGZvbGRlci5cIixcbiAgICAgICAgICAgIGl0ZW1zOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVuZm9yY2U6IHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICBcIldoZXRoZXIgZWFjaCBlbGlnaWJsZSBmb2xkZXIgbXVzdCBjb250YWluIG9uZSBvZiB0aGUgYWxsb3dlZCBiYXJyZWwgZmlsZW5hbWVzLlwiLFxuICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICB0eXBlOiBcInByb2JsZW1cIixcbiAgfSxcbn07XG5cbmV4cG9ydCB7IGNvbnNpc3RlbnRCYXJyZWxGaWxlc1J1bGUgfTtcbiJdfQ==
@@ -1,2 +1,3 @@
1
- export { barrelFilesExportsOnlyRule, consistentBarrelFilesRule, noReexportsOutsideBarrelsRule, } from "./consistent-barrel-files/index.js";
1
+ export { barrelFilesExportsOnlyRule, consistentBarrelFilesRule, noImportExportAliasesRule, noImportExportExtensionsRule, noReexportsOutsideBarrelsRule, } from "./consistent-barrel-files/index.js";
2
+ export { noUnusedExportsRule } from "./no-unused-exports/index.js";
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/architecture/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/architecture/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,2 +1,3 @@
1
- export { barrelFilesExportsOnlyRule, consistentBarrelFilesRule, noReexportsOutsideBarrelsRule, } from "./consistent-barrel-files/index.js";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZG9tYWluL2FyY2hpdGVjdHVyZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLHlCQUF5QixFQUN6Qiw2QkFBNkIsR0FDOUIsTUFBTSwyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIGJhcnJlbEZpbGVzRXhwb3J0c09ubHlSdWxlLFxuICBjb25zaXN0ZW50QmFycmVsRmlsZXNSdWxlLFxuICBub1JlZXhwb3J0c091dHNpZGVCYXJyZWxzUnVsZSxcbn0gZnJvbSBcIi4vY29uc2lzdGVudC1iYXJyZWwtZmlsZXNcIjtcbiJdfQ==
1
+ export { barrelFilesExportsOnlyRule, consistentBarrelFilesRule, noImportExportAliasesRule, noImportExportExtensionsRule, noReexportsOutsideBarrelsRule, } from "./consistent-barrel-files/index.js";
2
+ export { noUnusedExportsRule } from "./no-unused-exports/index.js";
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZG9tYWluL2FyY2hpdGVjdHVyZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsNEJBQTRCLEVBQzVCLDZCQUE2QixHQUM5QixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtcbiAgYmFycmVsRmlsZXNFeHBvcnRzT25seVJ1bGUsXG4gIGNvbnNpc3RlbnRCYXJyZWxGaWxlc1J1bGUsXG4gIG5vSW1wb3J0RXhwb3J0QWxpYXNlc1J1bGUsXG4gIG5vSW1wb3J0RXhwb3J0RXh0ZW5zaW9uc1J1bGUsXG4gIG5vUmVleHBvcnRzT3V0c2lkZUJhcnJlbHNSdWxlLFxufSBmcm9tIFwiLi9jb25zaXN0ZW50LWJhcnJlbC1maWxlc1wiO1xuZXhwb3J0IHsgbm9VbnVzZWRFeHBvcnRzUnVsZSB9IGZyb20gXCIuL25vLXVudXNlZC1leHBvcnRzXCI7XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export { noUnusedExportsRule } from "./rule.js";
2
+ export type { NoUnusedExportsOptions } from "./types.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/architecture/no-unused-exports/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAC7C,YAAY,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { noUnusedExportsRule } from "./rule.js";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2FyY2hpdGVjdHVyZS9uby11bnVzZWQtZXhwb3J0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBub1VudXNlZEV4cG9ydHNSdWxlIH0gZnJvbSBcIi4vcnVsZVwiO1xuZXhwb3J0IHR5cGUgeyBOb1VudXNlZEV4cG9ydHNPcHRpb25zIH0gZnJvbSBcIi4vdHlwZXNcIjtcbiJdfQ==
@@ -0,0 +1,50 @@
1
+ import type { NoUnusedExportsState } from "./types.js";
2
+ /** Default public API files where exported symbols are intentionally exposed. */
3
+ export declare const DEFAULT_PUBLIC_API_FILES: readonly ["**/src/index.ts", "**/__tests__/**/*.ts"];
4
+ /** Default glob patterns used to classify test files. */
5
+ export declare const DEFAULT_TEST_FILE_PATTERNS: readonly ["**/*.{test,spec,e2e}.ts", "**/__tests__/**/*.ts"];
6
+ /**
7
+ * Checks whether one file path is lintable.
8
+ * @param filename Input filename.
9
+ * @returns True when the path is absolute and matches source-file scope.
10
+ * @example
11
+ * ```typescript
12
+ * const ok = isLintableFilename("/repo/src/feature.ts");
13
+ * ```
14
+ */
15
+ export declare const isLintableFilename: (filename: string) => boolean;
16
+ /**
17
+ * Builds normalized options from raw rule options.
18
+ * @param options Raw rule options.
19
+ * @returns Normalized options state.
20
+ * @example
21
+ * ```typescript
22
+ * const state = getOptions([{}]);
23
+ * ```
24
+ */
25
+ export declare const getOptions: (options: readonly unknown[]) => NoUnusedExportsState;
26
+ /**
27
+ * Checks whether one file defines a public API export surface.
28
+ * @param filename Absolute filename.
29
+ * @param state Normalized options.
30
+ * @param repoRoot Absolute repository root.
31
+ * @returns True when the file is a public API file.
32
+ * @example
33
+ * ```typescript
34
+ * const publicApiFile = isPublicApiFile("/repo/src/index.ts", state, "/repo");
35
+ * ```
36
+ */
37
+ export declare const isPublicApiFile: (filename: string, state: NoUnusedExportsState, repoRoot: string) => boolean;
38
+ /**
39
+ * Checks whether one file should be treated as a test file.
40
+ * @param filename Absolute filename.
41
+ * @param state Normalized options.
42
+ * @param repoRoot Absolute repository root.
43
+ * @returns True when the file path matches a test pattern.
44
+ * @example
45
+ * ```typescript
46
+ * const testFile = isTestFile("/repo/tests/e2e/demo.ts", state, "/repo");
47
+ * ```
48
+ */
49
+ export declare const isTestFile: (filename: string, state: NoUnusedExportsState, repoRoot: string) => boolean;
50
+ //# sourceMappingURL=no-unused-exports-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-unused-exports-options.d.ts","sourceRoot":"","sources":["../../../../src/domain/architecture/no-unused-exports/no-unused-exports-options.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAA0B,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE5E,iFAAiF;AACjF,eAAO,MAAM,wBAAwB,sDAG3B,CAAC;AAEX,yDAAyD;AACzD,eAAO,MAAM,0BAA0B,8DAG7B,CAAC;AAiBX;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,GAAI,UAAU,MAAM,KAAG,OAUrD,CAAC;AA4BF;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,GACrB,SAAS,SAAS,OAAO,EAAE,KAC1B,oBAaF,CAAC;AAwDF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,GAC1B,UAAU,MAAM,EAChB,OAAO,oBAAoB,EAC3B,UAAU,MAAM,KACf,OAAsE,CAAC;AAE1E;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU,GACrB,UAAU,MAAM,EAChB,OAAO,oBAAoB,EAC3B,UAAU,MAAM,KACf,OAAwE,CAAC"}