@codeperfect/eslint-plugin 2.0.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 (301) 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 +36 -4
  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/no-reexports-outside-barrels-rule.d.ts.map +1 -1
  26. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +8 -3
  27. package/dist/domain/architecture/consistent-barrel-files/rule.d.ts.map +1 -1
  28. package/dist/domain/architecture/consistent-barrel-files/rule.js +12 -5
  29. package/dist/domain/architecture/index.d.ts +2 -1
  30. package/dist/domain/architecture/index.d.ts.map +1 -1
  31. package/dist/domain/architecture/index.js +3 -2
  32. package/dist/domain/architecture/no-unused-exports/index.d.ts +3 -0
  33. package/dist/domain/architecture/no-unused-exports/index.d.ts.map +1 -0
  34. package/dist/domain/architecture/no-unused-exports/index.js +2 -0
  35. package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.d.ts +50 -0
  36. package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.d.ts.map +1 -0
  37. package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.js +141 -0
  38. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts +49 -0
  39. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts.map +1 -0
  40. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.js +608 -0
  41. package/dist/domain/architecture/no-unused-exports/rule.d.ts +5 -0
  42. package/dist/domain/architecture/no-unused-exports/rule.d.ts.map +1 -0
  43. package/dist/domain/architecture/no-unused-exports/rule.js +82 -0
  44. package/dist/domain/architecture/no-unused-exports/types.d.ts +32 -0
  45. package/dist/domain/architecture/no-unused-exports/types.d.ts.map +1 -0
  46. package/dist/domain/architecture/no-unused-exports/types.js +2 -0
  47. package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -1
  48. package/dist/domain/core/no-multiple-declarators/rule.js +58 -6
  49. package/dist/domain/core/no-multiple-declarators/types.d.ts +3 -1
  50. package/dist/domain/core/no-multiple-declarators/types.d.ts.map +1 -1
  51. package/dist/domain/core/no-multiple-declarators/types.js +5 -2
  52. package/dist/domain/core/prefer-interface-types/rule.d.ts.map +1 -1
  53. package/dist/domain/core/prefer-interface-types/rule.js +94 -23
  54. package/dist/domain/custom-rule-documentation.d.ts +3 -14
  55. package/dist/domain/custom-rule-documentation.d.ts.map +1 -1
  56. package/dist/domain/custom-rule-documentation.js +3 -2
  57. package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -1
  58. package/dist/domain/docs/no-interface-member-docs/comment-utilities.js +11 -2
  59. package/dist/domain/docs/no-interface-member-docs/parameter-tags.d.ts.map +1 -1
  60. package/dist/domain/docs/no-interface-member-docs/parameter-tags.js +1 -1
  61. package/dist/domain/docs/no-interface-member-docs/parameter-utilities.js +1 -1
  62. package/dist/domain/docs/no-interface-member-docs/rule.d.ts.map +1 -1
  63. package/dist/domain/docs/no-interface-member-docs/rule.js +12 -4
  64. package/dist/domain/docs/require-example-language/examples.d.ts +4 -15
  65. package/dist/domain/docs/require-example-language/examples.d.ts.map +1 -1
  66. package/dist/domain/docs/require-example-language/examples.js +119 -26
  67. package/dist/domain/docs/require-example-language/fixes.d.ts +1 -21
  68. package/dist/domain/docs/require-example-language/fixes.d.ts.map +1 -1
  69. package/dist/domain/docs/require-example-language/fixes.js +5 -2
  70. package/dist/domain/docs/require-example-language/reporting.d.ts +2 -38
  71. package/dist/domain/docs/require-example-language/reporting.d.ts.map +1 -1
  72. package/dist/domain/docs/require-example-language/reporting.js +2 -2
  73. package/dist/domain/docs/require-example-language/rule.d.ts.map +1 -1
  74. package/dist/domain/docs/require-example-language/rule.js +7 -3
  75. package/dist/domain/docs/require-example-language/types.d.ts +1 -1
  76. package/dist/domain/docs/require-example-language/types.d.ts.map +1 -1
  77. package/dist/domain/docs/require-example-language/types.js +1 -1
  78. package/dist/domain/docs/single-line-jsdoc/rule.d.ts +1 -2
  79. package/dist/domain/docs/single-line-jsdoc/rule.d.ts.map +1 -1
  80. package/dist/domain/docs/single-line-jsdoc/rule.js +18 -13
  81. package/dist/domain/index.d.ts +2 -3
  82. package/dist/domain/index.d.ts.map +1 -1
  83. package/dist/domain/index.js +3 -4
  84. package/dist/domain/testing/aaa/analyzer.analysis.d.ts +2 -78
  85. package/dist/domain/testing/aaa/analyzer.analysis.d.ts.map +1 -1
  86. package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts +121 -3
  87. package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -1
  88. package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +199 -4
  89. package/dist/domain/testing/aaa/analyzer.analysis.js +30 -188
  90. package/dist/domain/testing/aaa/analyzer.assertions.d.ts +1 -92
  91. package/dist/domain/testing/aaa/analyzer.assertions.d.ts.map +1 -1
  92. package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts +93 -0
  93. package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts.map +1 -0
  94. package/dist/domain/testing/aaa/analyzer.assertions.helpers.js +184 -0
  95. package/dist/domain/testing/aaa/analyzer.assertions.js +5 -283
  96. package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts +62 -0
  97. package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts.map +1 -0
  98. package/dist/domain/testing/aaa/analyzer.assertions.operands.js +106 -0
  99. package/dist/domain/testing/aaa/analyzer.classification.d.ts +1 -74
  100. package/dist/domain/testing/aaa/analyzer.classification.d.ts.map +1 -1
  101. package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts +75 -0
  102. package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts.map +1 -0
  103. package/dist/domain/testing/aaa/analyzer.classification.helpers.js +202 -0
  104. package/dist/domain/testing/aaa/analyzer.classification.js +5 -201
  105. package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts +13 -0
  106. package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts.map +1 -0
  107. package/dist/domain/testing/aaa/analyzer.classification.traversal.js +32 -0
  108. package/dist/domain/testing/aaa/analyzer.super.d.ts +6 -13
  109. package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -1
  110. package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts +14 -0
  111. package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts.map +1 -0
  112. package/dist/domain/testing/aaa/analyzer.super.helpers.js +64 -0
  113. package/dist/domain/testing/aaa/analyzer.super.js +29 -61
  114. package/dist/domain/testing/aaa/index.d.ts +1 -2
  115. package/dist/domain/testing/aaa/index.d.ts.map +1 -1
  116. package/dist/domain/testing/aaa/index.js +2 -2
  117. package/dist/domain/testing/aaa/types.d.ts +1 -1
  118. package/dist/domain/testing/aaa/types.d.ts.map +1 -1
  119. package/dist/domain/testing/aaa/types.js +1 -1
  120. package/dist/domain/testing/assert-actual-expected-names/rule.d.ts.map +1 -1
  121. package/dist/domain/testing/assert-actual-expected-names/rule.js +33 -5
  122. package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts +2 -1
  123. package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts.map +1 -1
  124. package/dist/domain/testing/enforce-aaa-phase-purity/index.js +3 -2
  125. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts +1 -1
  126. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts.map +1 -1
  127. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.js +1 -1
  128. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts +1 -1
  129. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts.map +1 -1
  130. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.js +78 -16
  131. package/dist/domain/testing/{require-aaa-sections → enforce-aaa-structure}/missing-section-fixes.d.ts +1 -1
  132. package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.d.ts.map +1 -0
  133. package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.js +150 -0
  134. package/dist/domain/testing/enforce-aaa-structure/rule.d.ts.map +1 -1
  135. package/dist/domain/testing/enforce-aaa-structure/rule.js +165 -3
  136. package/dist/domain/testing/index.d.ts +0 -3
  137. package/dist/domain/testing/index.d.ts.map +1 -1
  138. package/dist/domain/testing/index.js +1 -4
  139. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts +1 -15
  140. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts.map +1 -1
  141. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.js +2 -71
  142. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts.map +1 -1
  143. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.js +4 -2
  144. package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts +1 -13
  145. package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts.map +1 -1
  146. package/dist/domain/testing/prefer-vi-mocked-import/fix.js +3 -21
  147. package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +1 -1
  148. package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.js +2 -1
  149. package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +1 -1
  150. package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.js +1 -1
  151. package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.js +6 -6
  152. package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts +1 -12
  153. package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts.map +1 -1
  154. package/dist/domain/testing/prefer-vi-mocked-import/match.js +149 -15
  155. package/dist/domain/testing/prefer-vi-mocked-import/rule.d.ts.map +1 -1
  156. package/dist/domain/testing/prefer-vi-mocked-import/rule.js +6 -3
  157. package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -1
  158. package/dist/domain/testing/require-act-result-capture/rule.js +42 -10
  159. package/dist/domain/testing/require-test-companion/index.d.ts +0 -1
  160. package/dist/domain/testing/require-test-companion/index.d.ts.map +1 -1
  161. package/dist/domain/testing/require-test-companion/index.js +1 -2
  162. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts +2 -1
  163. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts.map +1 -1
  164. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.js +13 -58
  165. package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts +2 -1
  166. package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts.map +1 -1
  167. package/dist/domain/testing/require-test-companion/require-test-companion-options.js +6 -5
  168. package/dist/domain/testing/require-test-companion/rule.d.ts.map +1 -1
  169. package/dist/domain/testing/require-test-companion/rule.js +34 -9
  170. package/dist/domain/testing/single-act-statement/rule.d.ts.map +1 -1
  171. package/dist/domain/testing/single-act-statement/rule.js +11 -5
  172. package/dist/index.d.ts +1 -1
  173. package/dist/index.d.ts.map +1 -1
  174. package/dist/index.js +2 -2
  175. package/dist/infrastructure/codeperfect-plugin.d.ts +6 -6
  176. package/dist/infrastructure/codeperfect-plugin.js +5 -5
  177. package/dist/infrastructure/presets.d.ts.map +1 -1
  178. package/dist/infrastructure/presets.js +23 -7
  179. package/package.json +37 -38
  180. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts +0 -41
  181. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +0 -1
  182. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +0 -87
  183. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts +0 -40
  184. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +0 -1
  185. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +0 -91
  186. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts +0 -4
  187. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts.map +0 -1
  188. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.js +0 -4
  189. package/dist/domain/architecture/consistent-barrel-files/test-helpers.d.ts +0 -141
  190. package/dist/domain/architecture/consistent-barrel-files/test-helpers.d.ts.map +0 -1
  191. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts +0 -20
  192. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts.map +0 -1
  193. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.js +0 -25
  194. package/dist/domain/architecture/consistent-barrel-files/test-helpers.js +0 -235
  195. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts +0 -101
  196. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts.map +0 -1
  197. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.js +0 -108
  198. package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts +0 -35
  199. package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts.map +0 -1
  200. package/dist/domain/core/no-multiple-declarators/rule.fixes.js +0 -95
  201. package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts +0 -4
  202. package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts.map +0 -1
  203. package/dist/domain/core/no-multiple-declarators/rule.guardrails.js +0 -4
  204. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts +0 -4
  205. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts.map +0 -1
  206. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.js +0 -4
  207. package/dist/domain/core/prefer-interface-types/test-helpers.d.ts +0 -110
  208. package/dist/domain/core/prefer-interface-types/test-helpers.d.ts.map +0 -1
  209. package/dist/domain/core/prefer-interface-types/test-helpers.js +0 -116
  210. package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts +0 -89
  211. package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +0 -1
  212. package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.js +0 -129
  213. package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts +0 -103
  214. package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts.map +0 -1
  215. package/dist/domain/docs/no-interface-member-docs/test-helpers.js +0 -157
  216. package/dist/domain/docs/require-example-language/create-fixer.d.ts +0 -5
  217. package/dist/domain/docs/require-example-language/create-fixer.d.ts.map +0 -1
  218. package/dist/domain/docs/require-example-language/create-fixer.js +0 -5
  219. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts +0 -4
  220. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts.map +0 -1
  221. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.js +0 -5
  222. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts +0 -4
  223. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts.map +0 -1
  224. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.js +0 -5
  225. package/dist/domain/docs/test-helpers.d.ts +0 -50
  226. package/dist/domain/docs/test-helpers.d.ts.map +0 -1
  227. package/dist/domain/docs/test-helpers.js +0 -107
  228. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts +0 -9
  229. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts.map +0 -1
  230. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.js +0 -10
  231. package/dist/domain/testing/aaa/analyzer.d.ts +0 -46
  232. package/dist/domain/testing/aaa/analyzer.d.ts.map +0 -1
  233. package/dist/domain/testing/aaa/analyzer.js +0 -59
  234. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts +0 -4
  235. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts.map +0 -1
  236. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.js +0 -4
  237. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts +0 -42
  238. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts.map +0 -1
  239. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.js +0 -188
  240. package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts +0 -5
  241. package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts.map +0 -1
  242. package/dist/domain/testing/enforce-aaa-phase-purity/rule.js +0 -34
  243. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts +0 -20
  244. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts.map +0 -1
  245. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.js +0 -39
  246. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts +0 -86
  247. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts.map +0 -1
  248. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.js +0 -150
  249. package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts +0 -2
  250. package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts.map +0 -1
  251. package/dist/domain/testing/prefer-vitest-incremental-casts/index.js +0 -2
  252. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts +0 -14
  253. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts.map +0 -1
  254. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.js +0 -81
  255. package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts +0 -13
  256. package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts.map +0 -1
  257. package/dist/domain/testing/prefer-vitest-incremental-casts/match.js +0 -189
  258. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts +0 -25
  259. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts.map +0 -1
  260. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.js +0 -92
  261. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts +0 -32
  262. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts.map +0 -1
  263. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.js +0 -164
  264. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts +0 -5
  265. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts.map +0 -1
  266. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts +0 -4
  267. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts.map +0 -1
  268. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.js +0 -4
  269. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts +0 -4
  270. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts.map +0 -1
  271. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.js +0 -4
  272. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.js +0 -62
  273. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts +0 -4
  274. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts.map +0 -1
  275. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.js +0 -4
  276. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts +0 -24
  277. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts.map +0 -1
  278. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.js +0 -113
  279. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts +0 -36
  280. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts.map +0 -1
  281. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.js +0 -138
  282. package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts +0 -203
  283. package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts.map +0 -1
  284. package/dist/domain/testing/prefer-vitest-incremental-casts/types.js +0 -2
  285. package/dist/domain/testing/require-aaa-sections/index.d.ts +0 -2
  286. package/dist/domain/testing/require-aaa-sections/index.d.ts.map +0 -1
  287. package/dist/domain/testing/require-aaa-sections/index.js +0 -2
  288. package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts.map +0 -1
  289. package/dist/domain/testing/require-aaa-sections/missing-section-fixes.js +0 -150
  290. package/dist/domain/testing/require-aaa-sections/rule.d.ts +0 -5
  291. package/dist/domain/testing/require-aaa-sections/rule.d.ts.map +0 -1
  292. package/dist/domain/testing/require-aaa-sections/rule.js +0 -129
  293. package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts +0 -104
  294. package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts.map +0 -1
  295. package/dist/domain/testing/require-aaa-sections/rule.reporting.js +0 -217
  296. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts +0 -51
  297. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +0 -1
  298. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.js +0 -184
  299. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts +0 -28
  300. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts.map +0 -1
  301. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.js +0 -26
@@ -1,104 +0,0 @@
1
- import type { Rule } from "eslint";
2
- import type { TestBlockAnalysis } from "../aaa/index.js";
3
- /** Mocked AAA helper exports consumed by the rule. */
4
- interface AaaModuleMock {
5
- /** Mocked analyzer entry point. */
6
- analyzeTestBlock: () => TestBlockAnalysis;
7
- /** Mocked line-start helper. */
8
- getLineStartRange: () => [number, number];
9
- /** Mocked boundary-comment helper. */
10
- getPhaseBoundaryComments: (analysis: TestBlockAnalysis) => TestBlockAnalysis["sectionComments"];
11
- /** Mocked blank-line helper. */
12
- hasBlankLineBeforeComment: () => false;
13
- }
14
- /** Mocked missing-section-fixes module. */
15
- interface MissingSectionFixesModule {
16
- /** Mocked fix builder. */
17
- buildMissingSectionFixes: () => Rule.Fix[];
18
- }
19
- /** Message identifiers emitted by the rule under test. */
20
- type RequireAaaSectionsMessageId = "blankLineBeforeSection" | "codeBeforeArrange" | "emptySection" | "missingSections";
21
- /** Captured result from the mocked reporting scenario. */
22
- interface ScenarioResult {
23
- /** Fix emitted for the blank-line report. */
24
- blankLineFix: Rule.Fix | Rule.Fix[] | undefined;
25
- /** Fixes recorded by the synthetic fixer. */
26
- insertedFixes: Rule.Fix[];
27
- /** Message identifiers emitted in report order. */
28
- messageIds: (RequireAaaSectionsMessageId | undefined)[];
29
- /** Fix emitted for the missing-sections report. */
30
- missingSectionsFix: Rule.Fix | Rule.Fix[] | undefined;
31
- }
32
- /**
33
- * Creates the mocked AAA helper module.
34
- * @returns Mocked exports consumed by the rule module.
35
- * @example
36
- * ```typescript
37
- * const mockModule = createAaaModuleMock(); void mockModule;
38
- * ```
39
- */
40
- declare function createAaaModuleMock(): AaaModuleMock;
41
- /**
42
- * Creates the mocked missing-section-fixes module.
43
- * @param buildMissingSectionFixes Mocked fix builder.
44
- * @returns Mocked module exposing the provided fix builder.
45
- * @example
46
- * ```typescript
47
- * const mockModule = createMissingSectionFixesModule(() => []); void mockModule;
48
- * ```
49
- */
50
- declare function createMissingSectionFixesModule(buildMissingSectionFixes: () => Rule.Fix[]): MissingSectionFixesModule;
51
- /**
52
- * Creates a fixer that records inserted text edits.
53
- * @param insertedFixes Collection updated when the fixer inserts text.
54
- * @returns Rule fixer that records inserted edits.
55
- * @example
56
- * ```typescript
57
- * const fixer = createRecordedFixer([]); void fixer;
58
- * ```
59
- */
60
- declare function createRecordedFixer(insertedFixes: Rule.Fix[]): Rule.RuleFixer;
61
- /**
62
- * Creates the minimal rule context used by the mocked scenario.
63
- * @param reports Report descriptors captured during rule execution.
64
- * @returns Rule context that records emitted reports.
65
- * @example
66
- * ```typescript
67
- * const context = createRuleContext([]); void context;
68
- * ```
69
- */
70
- declare function createRuleContext(reports: Rule.ReportDescriptor[]): Rule.RuleContext;
71
- /**
72
- * Reads the fix emitted by a report descriptor.
73
- * @param descriptor Report descriptor to evaluate.
74
- * @param fixer Synthetic fixer passed into the descriptor callback.
75
- * @returns Fix output produced by the descriptor.
76
- * @example
77
- * ```typescript
78
- * const fix = getDescriptorFix(void 0, {} as never); void fix;
79
- * ```
80
- */
81
- declare function getDescriptorFix(descriptor: Rule.ReportDescriptor | undefined, fixer: Rule.RuleFixer): Rule.Fix | Rule.Fix[] | undefined;
82
- /**
83
- * Reads the message identifier from a report descriptor when present.
84
- * @param descriptor Report descriptor emitted by the rule.
85
- * @returns Supported message identifier when present.
86
- * @example
87
- * ```typescript
88
- * const messageId = getReportMessageId({ messageId: "missingSections" } as Rule.ReportDescriptor);
89
- * void messageId;
90
- * ```
91
- */
92
- declare function getReportMessageId(descriptor: Rule.ReportDescriptor): RequireAaaSectionsMessageId | undefined;
93
- /**
94
- * Loads the rule module after test mocks have been applied.
95
- * @returns The rule module under test.
96
- * @example
97
- * ```typescript
98
- * const rule = await loadRequireAaaSectionsRule(); void rule;
99
- * ```
100
- */
101
- declare function loadRequireAaaSectionsRule(): Promise<Rule.RuleModule>;
102
- export { createAaaModuleMock, createMissingSectionFixesModule, createRecordedFixer, createRuleContext, getDescriptorFix, getReportMessageId, loadRequireAaaSectionsRule, };
103
- export type { ScenarioResult };
104
- //# sourceMappingURL=rule.reporting.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rule.reporting.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/require-aaa-sections/rule.reporting.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAEhD,sDAAsD;AACtD,UAAU,aAAa;IACrB,mCAAmC;IACnC,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;IAC1C,gCAAgC;IAChC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,sCAAsC;IACtC,wBAAwB,EAAE,CACxB,QAAQ,EAAE,iBAAiB,KACxB,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAC1C,gCAAgC;IAChC,yBAAyB,EAAE,MAAM,KAAK,CAAC;CACxC;AAED,2CAA2C;AAC3C,UAAU,yBAAyB;IACjC,0BAA0B;IAC1B,wBAAwB,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;CAC5C;AAED,0DAA0D;AAC1D,KAAK,2BAA2B,GAC5B,wBAAwB,GACxB,mBAAmB,GACnB,cAAc,GACd,iBAAiB,CAAC;AAQtB,0DAA0D;AAC1D,UAAU,cAAc;IACtB,6CAA6C;IAC7C,YAAY,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAChD,6CAA6C;IAC7C,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IAC1B,mDAAmD;IACnD,UAAU,EAAE,CAAC,2BAA2B,GAAG,SAAS,CAAC,EAAE,CAAC;IACxD,mDAAmD;IACnD,kBAAkB,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;CACvD;AAcD;;;;;;;GAOG;AACH,iBAAS,mBAAmB,IAAI,aAAa,CAO5C;AAED;;;;;;;;GAQG;AACH,iBAAS,+BAA+B,CACtC,wBAAwB,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,GACzC,yBAAyB,CAE3B;AAsDD;;;;;;;;GAQG;AACH,iBAAS,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAQtE;AAED;;;;;;;;GAQG;AACH,iBAAS,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,WAAW,CAM7E;AAED;;;;;;;;;GASG;AACH,iBAAS,gBAAgB,CACvB,UAAU,EAAE,IAAI,CAAC,gBAAgB,GAAG,SAAS,EAC7C,KAAK,EAAE,IAAI,CAAC,SAAS,GACpB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAcnC;AA8BD;;;;;;;;;GASG;AACH,iBAAS,kBAAkB,CACzB,UAAU,EAAE,IAAI,CAAC,gBAAgB,GAChC,2BAA2B,GAAG,SAAS,CAQzC;AAuBD;;;;;;;GAOG;AACH,iBAAe,0BAA0B,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAGpE;AAED,OAAO,EACL,mBAAmB,EACnB,+BAA+B,EAC/B,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,0BAA0B,GAC3B,CAAC;AAEF,YAAY,EAAE,cAAc,EAAE,CAAC"}
@@ -1,217 +0,0 @@
1
- /* eslint max-lines: ["error", 310] -- Mocked reporting helpers in this focused spec companion require verbose typed fixtures and examples. */
2
- /**
3
- * Returns false so the mocked rule path always reports a missing blank line.
4
- * @returns False for every invocation.
5
- * @example
6
- * ```typescript
7
- * const actual = alwaysReturnFalse(); void actual;
8
- * ```
9
- */
10
- function alwaysReturnFalse() {
11
- return false;
12
- }
13
- /**
14
- * Creates the mocked AAA helper module.
15
- * @returns Mocked exports consumed by the rule module.
16
- * @example
17
- * ```typescript
18
- * const mockModule = createAaaModuleMock(); void mockModule;
19
- * ```
20
- */
21
- function createAaaModuleMock() {
22
- return {
23
- analyzeTestBlock: createMockAnalysis,
24
- getLineStartRange: getMockLineStartRange,
25
- getPhaseBoundaryComments: getMockPhaseBoundaryComments,
26
- hasBlankLineBeforeComment: alwaysReturnFalse,
27
- };
28
- }
29
- /**
30
- * Creates the mocked missing-section-fixes module.
31
- * @param buildMissingSectionFixes Mocked fix builder.
32
- * @returns Mocked module exposing the provided fix builder.
33
- * @example
34
- * ```typescript
35
- * const mockModule = createMissingSectionFixesModule(() => []); void mockModule;
36
- * ```
37
- */
38
- function createMissingSectionFixesModule(buildMissingSectionFixes) {
39
- return { buildMissingSectionFixes };
40
- }
41
- /**
42
- * Builds the synthetic analysis returned by the mocked AAA helpers.
43
- * @returns Minimal test-block analysis used by the regression scenario.
44
- * @example
45
- * ```typescript
46
- * const analysis = createMockAnalysis(); void analysis;
47
- * ```
48
- */
49
- function createMockAnalysis() {
50
- return {
51
- bodyLineCount: 4,
52
- callExpression: { type: "CallExpression" },
53
- newline: "\n",
54
- sectionComments: [
55
- {
56
- comment: {
57
- loc: { end: { line: 2 }, start: { line: 2 } },
58
- type: "Line",
59
- },
60
- phases: ["Arrange"],
61
- },
62
- {
63
- comment: {
64
- loc: { end: { line: 4 }, start: { line: 4 } },
65
- type: "Line",
66
- },
67
- phases: ["Act"],
68
- },
69
- ],
70
- sourceText: [
71
- "const setup = createSetup();",
72
- "// Arrange",
73
- "run();",
74
- "// Act",
75
- ].join("\n"),
76
- statements: [
77
- {
78
- node: {
79
- loc: { end: { line: 1 }, start: { line: 1 } },
80
- type: "ExpressionStatement",
81
- },
82
- },
83
- {
84
- node: {
85
- loc: { end: { line: 3 }, start: { line: 3 } },
86
- type: "ExpressionStatement",
87
- },
88
- },
89
- ],
90
- };
91
- }
92
- /**
93
- * Creates a fixer that records inserted text edits.
94
- * @param insertedFixes Collection updated when the fixer inserts text.
95
- * @returns Rule fixer that records inserted edits.
96
- * @example
97
- * ```typescript
98
- * const fixer = createRecordedFixer([]); void fixer;
99
- * ```
100
- */
101
- function createRecordedFixer(insertedFixes) {
102
- return {
103
- insertTextBeforeRange(range, text) {
104
- const fix = { range, text };
105
- insertedFixes.push(fix);
106
- return fix;
107
- },
108
- };
109
- }
110
- /**
111
- * Creates the minimal rule context used by the mocked scenario.
112
- * @param reports Report descriptors captured during rule execution.
113
- * @returns Rule context that records emitted reports.
114
- * @example
115
- * ```typescript
116
- * const context = createRuleContext([]); void context;
117
- * ```
118
- */
119
- function createRuleContext(reports) {
120
- return {
121
- report(descriptor) {
122
- reports.push(descriptor);
123
- },
124
- };
125
- }
126
- /**
127
- * Reads the fix emitted by a report descriptor.
128
- * @param descriptor Report descriptor to evaluate.
129
- * @param fixer Synthetic fixer passed into the descriptor callback.
130
- * @returns Fix output produced by the descriptor.
131
- * @example
132
- * ```typescript
133
- * const fix = getDescriptorFix(void 0, {} as never); void fix;
134
- * ```
135
- */
136
- function getDescriptorFix(descriptor, fixer) {
137
- const actual = descriptor?.fix?.(fixer);
138
- if (!(actual instanceof Object)) {
139
- return void 0;
140
- }
141
- if (Array.isArray(actual) || "range" in actual) {
142
- return actual;
143
- }
144
- const iterableFixes = actual;
145
- return [...iterableFixes];
146
- }
147
- /**
148
- * Reads the mocked line-start range for the blank-line fix.
149
- * @returns Synthetic range used by the rule fix.
150
- * @example
151
- * ```typescript
152
- * const range = getMockLineStartRange(); void range;
153
- * ```
154
- */
155
- function getMockLineStartRange() {
156
- return [7, 7];
157
- }
158
- /**
159
- * Returns the phase-boundary comments from the mocked analysis.
160
- * @param analysis Parsed analysis used by the mocked rule helpers.
161
- * @returns Only comments that begin a later AAA phase.
162
- * @example
163
- * ```typescript
164
- * const comments = getMockPhaseBoundaryComments(createMockAnalysis());
165
- * void comments;
166
- * ```
167
- */
168
- function getMockPhaseBoundaryComments(analysis) {
169
- return analysis.sectionComments.slice(1);
170
- }
171
- /**
172
- * Reads the message identifier from a report descriptor when present.
173
- * @param descriptor Report descriptor emitted by the rule.
174
- * @returns Supported message identifier when present.
175
- * @example
176
- * ```typescript
177
- * const messageId = getReportMessageId({ messageId: "missingSections" } as Rule.ReportDescriptor);
178
- * void messageId;
179
- * ```
180
- */
181
- function getReportMessageId(descriptor) {
182
- if (!("messageId" in descriptor) ||
183
- !isRequireAaaSectionsMessageId(descriptor.messageId)) {
184
- return void 0;
185
- }
186
- return descriptor.messageId;
187
- }
188
- /**
189
- * Checks whether an unknown value is a valid rule message identifier.
190
- * @param value Value to validate.
191
- * @returns Whether the value is a supported message identifier.
192
- * @example
193
- * ```typescript
194
- * const actual = isRequireAaaSectionsMessageId("missingSections");
195
- * void actual;
196
- * ```
197
- */
198
- function isRequireAaaSectionsMessageId(value) {
199
- return (value === "blankLineBeforeSection" ||
200
- value === "codeBeforeArrange" ||
201
- value === "emptySection" ||
202
- value === "missingSections");
203
- }
204
- /**
205
- * Loads the rule module after test mocks have been applied.
206
- * @returns The rule module under test.
207
- * @example
208
- * ```typescript
209
- * const rule = await loadRequireAaaSectionsRule(); void rule;
210
- * ```
211
- */
212
- async function loadRequireAaaSectionsRule() {
213
- return (await import("./rule.js"))
214
- .requireAaaSectionsRule;
215
- }
216
- export { createAaaModuleMock, createMissingSectionFixesModule, createRecordedFixer, createRuleContext, getDescriptorFix, getReportMessageId, loadRequireAaaSectionsRule, };
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5yZXBvcnRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcmVxdWlyZS1hYWEtc2VjdGlvbnMvcnVsZS5yZXBvcnRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsOElBQThJO0FBbUQ5STs7Ozs7OztHQU9HO0FBQ0gsU0FBUyxpQkFBaUI7SUFDeEIsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQVMsbUJBQW1CO0lBQzFCLE9BQU87UUFDTCxnQkFBZ0IsRUFBRSxrQkFBa0I7UUFDcEMsaUJBQWlCLEVBQUUscUJBQXFCO1FBQ3hDLHdCQUF3QixFQUFFLDRCQUE0QjtRQUN0RCx5QkFBeUIsRUFBRSxpQkFBaUI7S0FDN0MsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsK0JBQStCLENBQ3RDLHdCQUEwQztJQUUxQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQztBQUN0QyxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQVMsa0JBQWtCO0lBQ3pCLE9BQU87UUFDTCxhQUFhLEVBQUUsQ0FBQztRQUNoQixjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7UUFDMUMsT0FBTyxFQUFFLElBQUk7UUFDYixlQUFlLEVBQUU7WUFDZjtnQkFDRSxPQUFPLEVBQUU7b0JBQ1AsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDN0MsSUFBSSxFQUFFLE1BQU07aUJBQ2I7Z0JBQ0QsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDO2FBQ3BCO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFO29CQUNQLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVB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O0lBRWQsT0FBTyxDQUNMLEtBQUssS0FBSyx3QkFBd0I7UUFDbEMsS0FBSyxLQUFLLG1CQUFtQjtRQUM3QixLQUFLLEtBQUssY0FBYztRQUN4QixLQUFLLEtBQUssaUJBQWlCLENBQzVCLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILEtBQUssVUFBVSwwQkFBMEI7SUFDdkMsT0FBUSxDQUFDLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUF5QjtTQUNyRCxzQkFBc0IsQ0FBQztBQUM1QixDQUFDO0FBRUQsT0FBTyxFQUNMLG1CQUFtQixFQUNuQiwrQkFBK0IsRUFDL0IsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLDBCQUEwQixHQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50IG1heC1saW5lczogW1wiZXJyb3JcIiwgMzEwXSAtLSBNb2NrZWQgcmVwb3J0aW5nIGhlbHBlcnMgaW4gdGhpcyBmb2N1c2VkIHNwZWMgY29tcGFuaW9uIHJlcXVpcmUgdmVyYm9zZSB0eXBlZCBmaXh0dXJlcyBhbmQgZXhhbXBsZXMuICovXHJcblxyXG5pbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XHJcblxyXG5pbXBvcnQgdHlwZSB7IFRlc3RCbG9ja0FuYWx5c2lzIH0gZnJvbSBcIi4uL2FhYVwiO1xyXG5cclxuLyoqIE1vY2tlZCBBQUEgaGVscGVyIGV4cG9ydHMgY29uc3VtZWQgYnkgdGhlIHJ1bGUuICovXHJcbmludGVyZmFjZSBBYWFNb2R1bGVNb2NrIHtcclxuICAvKiogTW9ja2VkIGFuYWx5emVyIGVudHJ5IHBvaW50LiAqL1xyXG4gIGFuYWx5emVUZXN0QmxvY2s6ICgpID0+IFRlc3RCbG9ja0FuYWx5c2lzO1xyXG4gIC8qKiBNb2NrZWQgbGluZS1zdGFydCBoZWxwZXIuICovXHJcbiAgZ2V0TGluZVN0YXJ0UmFuZ2U6ICgpID0+IFtudW1iZXIsIG51bWJlcl07XHJcbiAgLyoqIE1vY2tlZCBib3VuZGFyeS1jb21tZW50IGhlbHBlci4gKi9cclxuICBnZXRQaGFzZUJvdW5kYXJ5Q29tbWVudHM6IChcclxuICAgIGFuYWx5c2lzOiBUZXN0QmxvY2tBbmFseXNpcyxcclxuICApID0+IFRlc3RCbG9ja0FuYWx5c2lzW1wic2VjdGlvbkNvbW1lbnRzXCJdO1xyXG4gIC8qKiBNb2NrZWQgYmxhbmstbGluZSBoZWxwZXIuICovXHJcbiAgaGFzQmxhbmtMaW5lQmVmb3JlQ29tbWVudDogKCkgPT4gZmFsc2U7XHJcbn1cclxuXHJcbi8qKiBNb2NrZWQgbWlzc2luZy1zZWN0aW9uLWZpeGVzIG1vZHVsZS4gKi9cclxuaW50ZXJmYWNlIE1pc3NpbmdTZWN0aW9uRml4ZXNNb2R1bGUge1xyXG4gIC8qKiBNb2NrZWQgZml4IGJ1aWxkZXIuICovXHJcbiAgYnVpbGRNaXNzaW5nU2VjdGlvbkZpeGVzOiAoKSA9PiBSdWxlLkZpeFtdO1xyXG59XHJcblxyXG4vKiogTWVzc2FnZSBpZGVudGlmaWVycyBlbWl0dGVkIGJ5IHRoZSBydWxlIHVuZGVyIHRlc3QuICovXHJcbnR5cGUgUmVxdWlyZUFhYVNlY3Rpb25zTWVzc2FnZUlkID1cclxuICB8IFwiYmxhbmtMaW5lQmVmb3JlU2VjdGlvblwiXHJcbiAgfCBcImNvZGVCZWZvcmVBcnJhbmdlXCJcclxuICB8IFwiZW1wdHlTZWN0aW9uXCJcclxuICB8IFwibWlzc2luZ1NlY3Rpb25zXCI7XHJcblxyXG4vKiogVHlwZWQgbmFtZXNwYWNlIGZvciB0aGUgbGF6aWx5IGltcG9ydGVkIHJ1bGUgbW9kdWxlLiAqL1xyXG5pbnRlcmZhY2UgUnVsZU1vZHVsZU5hbWVzcGFjZSB7XHJcbiAgLyoqIFJ1bGUgbW9kdWxlIGxvYWRlZCBhZnRlciBtb2NrcyBoYXZlIGJlZW4gYXBwbGllZC4gKi9cclxuICByZXF1aXJlQWFhU2VjdGlvbnNSdWxlOiBSdWxlLlJ1bGVNb2R1bGU7XHJcbn1cclxuXHJcbi8qKiBDYXB0dXJlZCByZXN1bHQgZnJvbSB0aGUgbW9ja2VkIHJlcG9ydGluZyBzY2VuYXJpby4gKi9cclxuaW50ZXJmYWNlIFNjZW5hcmlvUmVzdWx0IHtcclxuICAvKiogRml4IGVtaXR0ZWQgZm9yIHRoZSBibGFuay1saW5lIHJlcG9ydC4gKi9cclxuICBibGFua0xpbmVGaXg6IFJ1bGUuRml4IHwgUnVsZS5GaXhbXSB8IHVuZGVmaW5lZDtcclxuICAvKiogRml4ZXMgcmVjb3JkZWQgYnkgdGhlIHN5bnRoZXRpYyBmaXhlci4gKi9cclxuICBpbnNlcnRlZEZpeGVzOiBSdWxlLkZpeFtdO1xyXG4gIC8qKiBNZXNzYWdlIGlkZW50aWZpZXJzIGVtaXR0ZWQgaW4gcmVwb3J0IG9yZGVyLiAqL1xyXG4gIG1lc3NhZ2VJZHM6IChSZXF1aXJlQWFhU2VjdGlvbnNNZXNzYWdlSWQgfCB1bmRlZmluZWQpW107XHJcbiAgLyoqIEZpeCBlbWl0dGVkIGZvciB0aGUgbWlzc2luZy1zZWN0aW9ucyByZXBvcnQuICovXHJcbiAgbWlzc2luZ1NlY3Rpb25zRml4OiBSdWxlLkZpeCB8IFJ1bGUuRml4W10gfCB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm5zIGZhbHNlIHNvIHRoZSBtb2NrZWQgcnVsZSBwYXRoIGFsd2F5cyByZXBvcnRzIGEgbWlzc2luZyBibGFuayBsaW5lLlxyXG4gKiBAcmV0dXJucyBGYWxzZSBmb3IgZXZlcnkgaW52b2NhdGlvbi5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBhY3R1YWwgPSBhbHdheXNSZXR1cm5GYWxzZSgpOyB2b2lkIGFjdHVhbDtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBhbHdheXNSZXR1cm5GYWxzZSgpOiBmYWxzZSB7XHJcbiAgcmV0dXJuIGZhbHNlO1xyXG59XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyB0aGUgbW9ja2VkIEFBQSBoZWxwZXIgbW9kdWxlLlxyXG4gKiBAcmV0dXJucyBNb2NrZWQgZXhwb3J0cyBjb25zdW1lZCBieSB0aGUgcnVsZSBtb2R1bGUuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgbW9ja01vZHVsZSA9IGNyZWF0ZUFhYU1vZHVsZU1vY2soKTsgdm9pZCBtb2NrTW9kdWxlO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZUFhYU1vZHVsZU1vY2soKTogQWFhTW9kdWxlTW9jayB7XHJcbiAgcmV0dXJuIHtcclxuICAgIGFuYWx5emVUZXN0QmxvY2s6IGNyZWF0ZU1vY2tBbmFseXNpcyxcclxuICAgIGdldExpbmVTdGFydFJhbmdlOiBnZXRNb2NrTGluZVN0YXJ0UmFuZ2UsXHJcbiAgICBnZXRQaGFzZUJvdW5kYXJ5Q29tbWVudHM6IGdldE1vY2tQaGFzZUJvdW5kYXJ5Q29tbWVudHMsXHJcbiAgICBoYXNCbGFua0xpbmVCZWZvcmVDb21tZW50OiBhbHdheXNSZXR1cm5GYWxzZSxcclxuICB9O1xyXG59XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyB0aGUgbW9ja2VkIG1pc3Npbmctc2VjdGlvbi1maXhlcyBtb2R1bGUuXHJcbiAqIEBwYXJhbSBidWlsZE1pc3NpbmdTZWN0aW9uRml4ZXMgTW9ja2VkIGZpeCBidWlsZGVyLlxyXG4gKiBAcmV0dXJucyBNb2NrZWQgbW9kdWxlIGV4cG9zaW5nIHRoZSBwcm92aWRlZCBmaXggYnVpbGRlci5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBtb2NrTW9kdWxlID0gY3JlYXRlTWlzc2luZ1NlY3Rpb25GaXhlc01vZHVsZSgoKSA9PiBbXSk7IHZvaWQgbW9ja01vZHVsZTtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVNaXNzaW5nU2VjdGlvbkZpeGVzTW9kdWxlKFxyXG4gIGJ1aWxkTWlzc2luZ1NlY3Rpb25GaXhlczogKCkgPT4gUnVsZS5GaXhbXSxcclxuKTogTWlzc2luZ1NlY3Rpb25GaXhlc01vZHVsZSB7XHJcbiAgcmV0dXJuIHsgYnVpbGRNaXNzaW5nU2VjdGlvbkZpeGVzIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBCdWlsZHMgdGhlIHN5bnRoZXRpYyBhbmFseXNpcyByZXR1cm5lZCBieSB0aGUgbW9ja2VkIEFBQSBoZWxwZXJzLlxyXG4gKiBAcmV0dXJucyBNaW5pbWFsIHRlc3QtYmxvY2sgYW5hbHlzaXMgdXNlZCBieSB0aGUgcmVncmVzc2lvbiBzY2VuYXJpby5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBhbmFseXNpcyA9IGNyZWF0ZU1vY2tBbmFseXNpcygpOyB2b2lkIGFuYWx5c2lzO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZU1vY2tBbmFseXNpcygpOiBUZXN0QmxvY2tBbmFseXNpcyB7XHJcbiAgcmV0dXJuIHtcclxuICAgIGJvZHlMaW5lQ291bnQ6IDQsXHJcbiAgICBjYWxsRXhwcmVzc2lvbjogeyB0eXBlOiBcIkNhbGxFeHByZXNzaW9uXCIgfSxcclxuICAgIG5ld2xpbmU6IFwiXFxuXCIsXHJcbiAgICBzZWN0aW9uQ29tbWVudHM6IFtcclxuICAgICAge1xyXG4gICAgICAgIGNvbW1lbnQ6IHtcclxuICAgICAgICAgIGxvYzogeyBlbmQ6IHsgbGluZTogMiB9LCBzdGFydDogeyBsaW5lOiAyIH0gfSxcclxuICAgICAgICAgIHR5cGU6IFwiTGluZVwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcGhhc2VzOiBbXCJBcnJhbmdlXCJdLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgY29tbWVudDoge1xyXG4gICAgICAgICAgbG9jOiB7IGVuZDogeyBsaW5lOiA0IH0sIHN0YXJ0OiB7IGxpbmU6IDQgfSB9LFxyXG4gICAgICAgICAgdHlwZTogXCJMaW5lXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBwaGFzZXM6IFtcIkFjdFwiXSxcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgICBzb3VyY2VUZXh0OiBbXHJcbiAgICAgIFwiY29uc3Qgc2V0dXAgPSBjcmVhdGVTZXR1cCgpO1wiLFxyXG4gICAgICBcIi8vIEFycmFuZ2VcIixcclxuICAgICAgXCJydW4oKTtcIixcclxuICAgICAgXCIvLyBBY3RcIixcclxuICAgIF0uam9pbihcIlxcblwiKSxcclxuICAgIHN0YXRlbWVudHM6IFtcclxuICAgICAge1xyXG4gICAgICAgIG5vZGU6IHtcclxuICAgICAgICAgIGxvYzogeyBlbmQ6IHsgbGluZTogMSB9LCBzdGFydDogeyBsaW5lOiAxIH0gfSxcclxuICAgICAgICAgIHR5cGU6IFwiRXhwcmVzc2lvblN0YXRlbWVudFwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBub2RlOiB7XHJcbiAgICAgICAgICBsb2M6IHsgZW5kOiB7IGxpbmU6IDMgfSwgc3RhcnQ6IHsgbGluZTogMyB9IH0sXHJcbiAgICAgICAgICB0eXBlOiBcIkV4cHJlc3Npb25TdGF0ZW1lbnRcIixcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgXSxcclxuICB9IGFzIFRlc3RCbG9ja0FuYWx5c2lzO1xyXG59XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhIGZpeGVyIHRoYXQgcmVjb3JkcyBpbnNlcnRlZCB0ZXh0IGVkaXRzLlxyXG4gKiBAcGFyYW0gaW5zZXJ0ZWRGaXhlcyBDb2xsZWN0aW9uIHVwZGF0ZWQgd2hlbiB0aGUgZml4ZXIgaW5zZXJ0cyB0ZXh0LlxyXG4gKiBAcmV0dXJucyBSdWxlIGZpeGVyIHRoYXQgcmVjb3JkcyBpbnNlcnRlZCBlZGl0cy5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBmaXhlciA9IGNyZWF0ZVJlY29yZGVkRml4ZXIoW10pOyB2b2lkIGZpeGVyO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZVJlY29yZGVkRml4ZXIoaW5zZXJ0ZWRGaXhlczogUnVsZS5GaXhbXSk6IFJ1bGUuUnVsZUZpeGVyIHtcclxuICByZXR1cm4ge1xyXG4gICAgaW5zZXJ0VGV4dEJlZm9yZVJhbmdlKHJhbmdlOiBbbnVtYmVyLCBudW1iZXJdLCB0ZXh0OiBzdHJpbmcpOiBSdWxlLkZpeCB7XHJcbiAgICAgIGNvbnN0IGZpeDogUnVsZS5GaXggPSB7IHJhbmdlLCB0ZXh0IH07XHJcbiAgICAgIGluc2VydGVkRml4ZXMucHVzaChmaXgpO1xyXG4gICAgICByZXR1cm4gZml4O1xyXG4gICAgfSxcclxuICB9IGFzIFJ1bGUuUnVsZUZpeGVyO1xyXG59XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyB0aGUgbWluaW1hbCBydWxlIGNvbnRleHQgdXNlZCBieSB0aGUgbW9ja2VkIHNjZW5hcmlvLlxyXG4gKiBAcGFyYW0gcmVwb3J0cyBSZXBvcnQgZGVzY3JpcHRvcnMgY2FwdHVyZWQgZHVyaW5nIHJ1bGUgZXhlY3V0aW9uLlxyXG4gKiBAcmV0dXJucyBSdWxlIGNvbnRleHQgdGhhdCByZWNvcmRzIGVtaXR0ZWQgcmVwb3J0cy5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBjb250ZXh0ID0gY3JlYXRlUnVsZUNvbnRleHQoW10pOyB2b2lkIGNvbnRleHQ7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlUnVsZUNvbnRleHQocmVwb3J0czogUnVsZS5SZXBvcnREZXNjcmlwdG9yW10pOiBSdWxlLlJ1bGVDb250ZXh0IHtcclxuICByZXR1cm4ge1xyXG4gICAgcmVwb3J0KGRlc2NyaXB0b3I6IFJ1bGUuUmVwb3J0RGVzY3JpcHRvcik6IHZvaWQge1xyXG4gICAgICByZXBvcnRzLnB1c2goZGVzY3JpcHRvcik7XHJcbiAgICB9LFxyXG4gIH0gYXMgUnVsZS5SdWxlQ29udGV4dDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlYWRzIHRoZSBmaXggZW1pdHRlZCBieSBhIHJlcG9ydCBkZXNjcmlwdG9yLlxyXG4gKiBAcGFyYW0gZGVzY3JpcHRvciBSZXBvcnQgZGVzY3JpcHRvciB0byBldmFsdWF0ZS5cclxuICogQHBhcmFtIGZpeGVyIFN5bnRoZXRpYyBmaXhlciBwYXNzZWQgaW50byB0aGUgZGVzY3JpcHRvciBjYWxsYmFjay5cclxuICogQHJldHVybnMgRml4IG91dHB1dCBwcm9kdWNlZCBieSB0aGUgZGVzY3JpcHRvci5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBmaXggPSBnZXREZXNjcmlwdG9yRml4KHZvaWQgMCwge30gYXMgbmV2ZXIpOyB2b2lkIGZpeDtcclxuICogYGBgXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXREZXNjcmlwdG9yRml4KFxyXG4gIGRlc2NyaXB0b3I6IFJ1bGUuUmVwb3J0RGVzY3JpcHRvciB8IHVuZGVmaW5lZCxcclxuICBmaXhlcjogUnVsZS5SdWxlRml4ZXIsXHJcbik6IFJ1bGUuRml4IHwgUnVsZS5GaXhbXSB8IHVuZGVmaW5lZCB7XHJcbiAgY29uc3QgYWN0dWFsID0gZGVzY3JpcHRvcj8uZml4Py4oZml4ZXIpO1xyXG5cclxuICBpZiAoIShhY3R1YWwgaW5zdGFuY2VvZiBPYmplY3QpKSB7XHJcbiAgICByZXR1cm4gdm9pZCAwO1xyXG4gIH1cclxuXHJcbiAgaWYgKEFycmF5LmlzQXJyYXkoYWN0dWFsKSB8fCBcInJhbmdlXCIgaW4gYWN0dWFsKSB7XHJcbiAgICByZXR1cm4gYWN0dWFsO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgaXRlcmFibGVGaXhlczogSXRlcmFibGU8UnVsZS5GaXg+ID0gYWN0dWFsO1xyXG5cclxuICByZXR1cm4gWy4uLml0ZXJhYmxlRml4ZXNdO1xyXG59XHJcblxyXG4vKipcclxuICogUmVhZHMgdGhlIG1vY2tlZCBsaW5lLXN0YXJ0IHJhbmdlIGZvciB0aGUgYmxhbmstbGluZSBmaXguXHJcbiAqIEByZXR1cm5zIFN5bnRoZXRpYyByYW5nZSB1c2VkIGJ5IHRoZSBydWxlIGZpeC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCByYW5nZSA9IGdldE1vY2tMaW5lU3RhcnRSYW5nZSgpOyB2b2lkIHJhbmdlO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGdldE1vY2tMaW5lU3RhcnRSYW5nZSgpOiBbbnVtYmVyLCBudW1iZXJdIHtcclxuICByZXR1cm4gWzcsIDddO1xyXG59XHJcblxyXG4vKipcclxuICogUmV0dXJucyB0aGUgcGhhc2UtYm91bmRhcnkgY29tbWVudHMgZnJvbSB0aGUgbW9ja2VkIGFuYWx5c2lzLlxyXG4gKiBAcGFyYW0gYW5hbHlzaXMgUGFyc2VkIGFuYWx5c2lzIHVzZWQgYnkgdGhlIG1vY2tlZCBydWxlIGhlbHBlcnMuXHJcbiAqIEByZXR1cm5zIE9ubHkgY29tbWVudHMgdGhhdCBiZWdpbiBhIGxhdGVyIEFBQSBwaGFzZS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBjb21tZW50cyA9IGdldE1vY2tQaGFzZUJvdW5kYXJ5Q29tbWVudHMoY3JlYXRlTW9ja0FuYWx5c2lzKCkpO1xyXG4gKiB2b2lkIGNvbW1lbnRzO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGdldE1vY2tQaGFzZUJvdW5kYXJ5Q29tbWVudHMoXHJcbiAgYW5hbHlzaXM6IFRlc3RCbG9ja0FuYWx5c2lzLFxyXG4pOiBUZXN0QmxvY2tBbmFseXNpc1tcInNlY3Rpb25Db21tZW50c1wiXSB7XHJcbiAgcmV0dXJuIGFuYWx5c2lzLnNlY3Rpb25Db21tZW50cy5zbGljZSgxKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlYWRzIHRoZSBtZXNzYWdlIGlkZW50aWZpZXIgZnJvbSBhIHJlcG9ydCBkZXNjcmlwdG9yIHdoZW4gcHJlc2VudC5cclxuICogQHBhcmFtIGRlc2NyaXB0b3IgUmVwb3J0IGRlc2NyaXB0b3IgZW1pdHRlZCBieSB0aGUgcnVsZS5cclxuICogQHJldHVybnMgU3VwcG9ydGVkIG1lc3NhZ2UgaWRlbnRpZmllciB3aGVuIHByZXNlbnQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgbWVzc2FnZUlkID0gZ2V0UmVwb3J0TWVzc2FnZUlkKHsgbWVzc2FnZUlkOiBcIm1pc3NpbmdTZWN0aW9uc1wiIH0gYXMgUnVsZS5SZXBvcnREZXNjcmlwdG9yKTtcclxuICogdm9pZCBtZXNzYWdlSWQ7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0UmVwb3J0TWVzc2FnZUlkKFxyXG4gIGRlc2NyaXB0b3I6IFJ1bGUuUmVwb3J0RGVzY3JpcHRvcixcclxuKTogUmVxdWlyZUFhYVNlY3Rpb25zTWVzc2FnZUlkIHwgdW5kZWZpbmVkIHtcclxuICBpZiAoXHJcbiAgICAhKFwibWVzc2FnZUlkXCIgaW4gZGVzY3JpcHRvcikgfHxcclxuICAgICFpc1JlcXVpcmVBYWFTZWN0aW9uc01lc3NhZ2VJZChkZXNjcmlwdG9yLm1lc3NhZ2VJZClcclxuICApIHtcclxuICAgIHJldHVybiB2b2lkIDA7XHJcbiAgfVxyXG4gIHJldHVybiBkZXNjcmlwdG9yLm1lc3NhZ2VJZDtcclxufVxyXG5cclxuLyoqXHJcbiAqIENoZWNrcyB3aGV0aGVyIGFuIHVua25vd24gdmFsdWUgaXMgYSB2YWxpZCBydWxlIG1lc3NhZ2UgaWRlbnRpZmllci5cclxuICogQHBhcmFtIHZhbHVlIFZhbHVlIHRvIHZhbGlkYXRlLlxyXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB2YWx1ZSBpcyBhIHN1cHBvcnRlZCBtZXNzYWdlIGlkZW50aWZpZXIuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgYWN0dWFsID0gaXNSZXF1aXJlQWFhU2VjdGlvbnNNZXNzYWdlSWQoXCJtaXNzaW5nU2VjdGlvbnNcIik7XHJcbiAqIHZvaWQgYWN0dWFsO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGlzUmVxdWlyZUFhYVNlY3Rpb25zTWVzc2FnZUlkKFxyXG4gIHZhbHVlOiB1bmtub3duLFxyXG4pOiB2YWx1ZSBpcyBSZXF1aXJlQWFhU2VjdGlvbnNNZXNzYWdlSWQge1xyXG4gIHJldHVybiAoXHJcbiAgICB2YWx1ZSA9PT0gXCJibGFua0xpbmVCZWZvcmVTZWN0aW9uXCIgfHxcclxuICAgIHZhbHVlID09PSBcImNvZGVCZWZvcmVBcnJhbmdlXCIgfHxcclxuICAgIHZhbHVlID09PSBcImVtcHR5U2VjdGlvblwiIHx8XHJcbiAgICB2YWx1ZSA9PT0gXCJtaXNzaW5nU2VjdGlvbnNcIlxyXG4gICk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBMb2FkcyB0aGUgcnVsZSBtb2R1bGUgYWZ0ZXIgdGVzdCBtb2NrcyBoYXZlIGJlZW4gYXBwbGllZC5cclxuICogQHJldHVybnMgVGhlIHJ1bGUgbW9kdWxlIHVuZGVyIHRlc3QuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgcnVsZSA9IGF3YWl0IGxvYWRSZXF1aXJlQWFhU2VjdGlvbnNSdWxlKCk7IHZvaWQgcnVsZTtcclxuICogYGBgXHJcbiAqL1xyXG5hc3luYyBmdW5jdGlvbiBsb2FkUmVxdWlyZUFhYVNlY3Rpb25zUnVsZSgpOiBQcm9taXNlPFJ1bGUuUnVsZU1vZHVsZT4ge1xyXG4gIHJldHVybiAoKGF3YWl0IGltcG9ydChcIi4vcnVsZVwiKSkgYXMgUnVsZU1vZHVsZU5hbWVzcGFjZSlcclxuICAgIC5yZXF1aXJlQWFhU2VjdGlvbnNSdWxlO1xyXG59XHJcblxyXG5leHBvcnQge1xyXG4gIGNyZWF0ZUFhYU1vZHVsZU1vY2ssXHJcbiAgY3JlYXRlTWlzc2luZ1NlY3Rpb25GaXhlc01vZHVsZSxcclxuICBjcmVhdGVSZWNvcmRlZEZpeGVyLFxyXG4gIGNyZWF0ZVJ1bGVDb250ZXh0LFxyXG4gIGdldERlc2NyaXB0b3JGaXgsXHJcbiAgZ2V0UmVwb3J0TWVzc2FnZUlkLFxyXG4gIGxvYWRSZXF1aXJlQWFhU2VjdGlvbnNSdWxlLFxyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgeyBTY2VuYXJpb1Jlc3VsdCB9O1xyXG4iXX0=
@@ -1,51 +0,0 @@
1
- import type { RequireTestCompanionOptions } from "./types.js";
2
- /** Type definition for rule data. */
3
- interface RuleReport {
4
- /** MessageId helper value. */
5
- messageId: string | undefined;
6
- }
7
- /**
8
- * Creates createTemporaryFile.
9
- * @param root Input root value.
10
- * @param filename Input filename value.
11
- * @returns Return value output.
12
- * @example
13
- * ```typescript
14
- * createTemporaryFile();
15
- * ```
16
- */
17
- declare const createTemporaryFile: (root: "src" | "tmp", filename: string) => string;
18
- /**
19
- * Creates a temporary file pair for test/source combinations.
20
- * @param root Input root value.
21
- * @param first Input first value.
22
- * @param second Input second value.
23
- * @returns Tuple of created file paths.
24
- * @throws {Error} When the file paths are missing.
25
- * @example
26
- * ```typescript
27
- * const [source, test] = createTemporaryPair("tmp", "a.ts", "a.spec.ts");
28
- * ```
29
- */
30
- declare const createTemporaryPair: (root: "src" | "tmp", first: string, second: string) => [string, string];
31
- /**
32
- * Runs the rule with the given options.
33
- * @param filename Input filename value.
34
- * @param options Input options value.
35
- * @returns Collected rule reports.
36
- * @example
37
- * ```typescript
38
- * const reports = runRule("/tmp/feature.ts");
39
- * ```
40
- */
41
- declare const runRule: (filename: string, options?: RequireTestCompanionOptions) => RuleReport[];
42
- /**
43
- * Cleans up temporary directories created by tests.
44
- * @example
45
- * ```typescript
46
- * cleanupTemporaryDirectories();
47
- * ```
48
- */
49
- declare const cleanupTemporaryDirectories: () => void;
50
- export { cleanupTemporaryDirectories, createTemporaryFile, createTemporaryPair, runRule, };
51
- //# sourceMappingURL=require-test-companion-test-helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"require-test-companion-test-helpers.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/require-test-companion/require-test-companion-test-helpers.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAU3D,qCAAqC;AACrC,UAAU,UAAU;IAClB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAgCD;;;;;;;;;GASG;AACH,QAAA,MAAM,mBAAmB,GAAI,MAAM,KAAK,GAAG,KAAK,EAAE,UAAU,MAAM,KAAG,MAMpE,CAAC;AAyBF;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,mBAAmB,GACvB,MAAM,KAAK,GAAG,KAAK,EACnB,OAAO,MAAM,EACb,QAAQ,MAAM,KACb,CAAC,MAAM,EAAE,MAAM,CAOjB,CAAC;AA2EF;;;;;;;;;GASG;AACH,QAAA,MAAM,OAAO,GACX,UAAU,MAAM,EAChB,UAAU,2BAA2B,KACpC,UAAU,EAUZ,CAAC;AAEF;;;;;;GAMG;AACH,QAAA,MAAM,2BAA2B,QAAO,IAIvC,CAAC;AAEF,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,OAAO,GACR,CAAC"}
@@ -1,184 +0,0 @@
1
- import { SourceCode } from "eslint";
2
- import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
3
- import path from "node:path";
4
- import { cwd } from "node:process";
5
- import { requireTestCompanionRule } from "./rule.js";
6
- /** Tracks temporary directories so tests can clean them up. */
7
- const temporaryDirectories = [];
8
- /**
9
- * Creates createRepoDirectory.
10
- * @param root Input root value.
11
- * @returns Return value output.
12
- * @example
13
- * ```typescript
14
- * createRepoDirectory();
15
- * ```
16
- */
17
- const createRepoDirectory = (root) => {
18
- const baseDirectory = path.join(cwd(), root);
19
- mkdirSync(baseDirectory, { recursive: true });
20
- return mkdtempSync(path.join(baseDirectory, "test-companion-"));
21
- };
22
- /**
23
- * Writes a simple TypeScript file at the provided path.
24
- * @param filePath Input filePath value.
25
- * @example
26
- * ```typescript
27
- * writeFile("/tmp/feature.ts");
28
- * ```
29
- */
30
- const writeFile = (filePath) => {
31
- writeFileSync(filePath, "export const value = 1;", "utf8");
32
- };
33
- /**
34
- * Creates createTemporaryFile.
35
- * @param root Input root value.
36
- * @param filename Input filename value.
37
- * @returns Return value output.
38
- * @example
39
- * ```typescript
40
- * createTemporaryFile();
41
- * ```
42
- */
43
- const createTemporaryFile = (root, filename) => {
44
- const directory = createRepoDirectory(root);
45
- temporaryDirectories.push(directory);
46
- const filePath = path.join(directory, filename);
47
- writeFile(filePath);
48
- return filePath;
49
- };
50
- /**
51
- * Creates multiple temporary files under the given root.
52
- * @param root Input root value.
53
- * @param filenames Input filenames value.
54
- * @returns Paths to the created files.
55
- * @example
56
- * ```typescript
57
- * const paths = createTemporaryFiles("tmp", ["a.ts", "b.ts"]);
58
- * ```
59
- */
60
- const createTemporaryFiles = (root, filenames) => {
61
- const directory = createRepoDirectory(root);
62
- temporaryDirectories.push(directory);
63
- return filenames.map((filename) => {
64
- const filePath = path.join(directory, filename);
65
- writeFile(filePath);
66
- return filePath;
67
- });
68
- };
69
- /**
70
- * Creates a temporary file pair for test/source combinations.
71
- * @param root Input root value.
72
- * @param first Input first value.
73
- * @param second Input second value.
74
- * @returns Tuple of created file paths.
75
- * @throws {Error} When the file paths are missing.
76
- * @example
77
- * ```typescript
78
- * const [source, test] = createTemporaryPair("tmp", "a.ts", "a.spec.ts");
79
- * ```
80
- */
81
- const createTemporaryPair = (root, first, second) => {
82
- const [firstPath, secondPath] = createTemporaryFiles(root, [
83
- first,
84
- second,
85
- ]);
86
- return [firstPath, secondPath];
87
- };
88
- /**
89
- * Creates createProgramAst.
90
- * @returns Return value output.
91
- * @example
92
- * ```typescript
93
- * createProgramAst();
94
- * ```
95
- */
96
- const createProgramAst = () => ({
97
- body: [],
98
- comments: [],
99
- loc: {
100
- end: { column: 0, line: 1 },
101
- start: { column: 0, line: 1 },
102
- },
103
- range: [0, 0],
104
- sourceType: "module",
105
- tokens: [],
106
- type: "Program",
107
- });
108
- /**
109
- * Creates a rule context for the given filename.
110
- * @param filename Input filename value.
111
- * @param reports Input reports value.
112
- * @param sourceCode Input sourceCode value.
113
- * @returns Rule context for tests.
114
- * @example
115
- * ```typescript
116
- * const context = createRuleContext(file, reports, sourceCode);
117
- * ```
118
- */
119
- const createRuleContext = (filename, reports, sourceCode) => ({
120
- cwd: cwd(),
121
- filename,
122
- id: "require-test-companion",
123
- languageOptions: {
124
- ecmaVersion: "latest",
125
- sourceType: "module",
126
- },
127
- options: [],
128
- parserOptions: {},
129
- parserPath: void 0,
130
- physicalFilename: filename,
131
- report: (report) => {
132
- const { messageId } = report;
133
- reports.push({ messageId });
134
- },
135
- settings: {},
136
- sourceCode,
137
- });
138
- /**
139
- * Runs the rule listeners for a context.
140
- * @param context Input context value.
141
- * @example
142
- * ```typescript
143
- * runListeners(context);
144
- * ```
145
- */
146
- const runListeners = (context) => {
147
- const listeners = requireTestCompanionRule.create(context);
148
- const programNode = context.sourceCode.ast;
149
- const programListener = listeners.Program;
150
- programListener?.(programNode);
151
- };
152
- /**
153
- * Runs the rule with the given options.
154
- * @param filename Input filename value.
155
- * @param options Input options value.
156
- * @returns Collected rule reports.
157
- * @example
158
- * ```typescript
159
- * const reports = runRule("/tmp/feature.ts");
160
- * ```
161
- */
162
- const runRule = (filename, options) => {
163
- const reports = [];
164
- const programAst = createProgramAst();
165
- const sourceCode = new SourceCode("", programAst);
166
- const context = createRuleContext(filename, reports, sourceCode);
167
- context.options = options === void 0 ? [] : [options];
168
- runListeners(context);
169
- return reports;
170
- };
171
- /**
172
- * Cleans up temporary directories created by tests.
173
- * @example
174
- * ```typescript
175
- * cleanupTemporaryDirectories();
176
- * ```
177
- */
178
- const cleanupTemporaryDirectories = () => {
179
- for (const directory of temporaryDirectories.splice(0)) {
180
- rmSync(directory, { force: true, recursive: true });
181
- }
182
- };
183
- export { cleanupTemporaryDirectories, createTemporaryFile, createTemporaryPair, runRule, };
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZS10ZXN0LWNvbXBhbmlvbi10ZXN0LWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcmVxdWlyZS10ZXN0LWNvbXBhbmlvbi9yZXF1aXJlLXRlc3QtY29tcGFuaW9uLXRlc3QtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDeEUsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFJbkMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBY2xELCtEQUErRDtBQUMvRCxNQUFNLG9CQUFvQixHQUFhLEVBQUUsQ0FBQztBQUUxQzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxJQUFtQixFQUFVLEVBQUU7SUFDMUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3QyxTQUFTLENBQUMsYUFBYSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUMsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLENBQUMsQ0FBQztBQUVGOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFNBQVMsR0FBRyxDQUFDLFFBQWdCLEVBQVEsRUFBRTtJQUMzQyxhQUFhLENBQUMsUUFBUSxFQUFFLHlCQUF5QixFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzdELENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7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QUFtQixFQUNuQixtQkFBbUIsRUFDbkIsT0FBTyxHQUNSLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFTVCwgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHsgU291cmNlQ29kZSB9IGZyb20gXCJlc2xpbnRcIjtcbmltcG9ydCB7IG1rZGlyU3luYywgbWtkdGVtcFN5bmMsIHJtU3luYywgd3JpdGVGaWxlU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBjd2QgfSBmcm9tIFwibm9kZTpwcm9jZXNzXCI7XG5cbmltcG9ydCB0eXBlIHsgUmVxdWlyZVRlc3RDb21wYW5pb25PcHRpb25zIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuaW1wb3J0IHsgcmVxdWlyZVRlc3RDb21wYW5pb25SdWxlIH0gZnJvbSBcIi4vcnVsZVwiO1xuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG5pbnRlcmZhY2UgUmVwb3J0RGVzY3JpcHRvcldpdGhNZXNzYWdlSWQge1xuICAvKiogTWVzc2FnZUlkIGZpZWxkIHZhbHVlLiAqL1xuICBtZXNzYWdlSWQ/OiBzdHJpbmc7XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBSdWxlUmVwb3J0IHtcbiAgLyoqIE1lc3NhZ2VJZCBoZWxwZXIgdmFsdWUuICovXG4gIG1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG4vKiogVHJhY2tzIHRlbXBvcmFyeSBkaXJlY3RvcmllcyBzbyB0ZXN0cyBjYW4gY2xlYW4gdGhlbSB1cC4gKi9cbmNvbnN0IHRlbXBvcmFyeURpcmVjdG9yaWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4vKipcbiAqIENyZWF0ZXMgY3JlYXRlUmVwb0RpcmVjdG9yeS5cbiAqIEBwYXJhbSByb290IElucHV0IHJvb3QgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNyZWF0ZVJlcG9EaXJlY3RvcnkoKTtcbiAqIGBgYFxuICovXG5jb25zdCBjcmVhdGVSZXBvRGlyZWN0b3J5ID0gKHJvb3Q6IFwic3JjXCIgfCBcInRtcFwiKTogc3RyaW5nID0+IHtcbiAgY29uc3QgYmFzZURpcmVjdG9yeSA9IHBhdGguam9pbihjd2QoKSwgcm9vdCk7XG4gIG1rZGlyU3luYyhiYXNlRGlyZWN0b3J5LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgcmV0dXJuIG1rZHRlbXBTeW5jKHBhdGguam9pbihiYXNlRGlyZWN0b3J5LCBcInRlc3QtY29tcGFuaW9uLVwiKSk7XG59O1xuXG4vKipcbiAqIFdyaXRlcyBhIHNpbXBsZSBUeXBlU2NyaXB0IGZpbGUgYXQgdGhlIHByb3ZpZGVkIHBhdGguXG4gKiBAcGFyYW0gZmlsZVBhdGggSW5wdXQgZmlsZVBhdGggdmFsdWUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogd3JpdGVGaWxlKFwiL3RtcC9mZWF0dXJlLnRzXCIpO1xuICogYGBgXG4gKi9cbmNvbnN0IHdyaXRlRmlsZSA9IChmaWxlUGF0aDogc3RyaW5nKTogdm9pZCA9PiB7XG4gIHdyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIFwiZXhwb3J0IGNvbnN0IHZhbHVlID0gMTtcIiwgXCJ1dGY4XCIpO1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGNyZWF0ZVRlbXBvcmFyeUZpbGUuXG4gKiBAcGFyYW0gcm9vdCBJbnB1dCByb290IHZhbHVlLlxuICogQHBhcmFtIGZpbGVuYW1lIElucHV0IGZpbGVuYW1lIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjcmVhdGVUZW1wb3JhcnlGaWxlKCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgY3JlYXRlVGVtcG9yYXJ5RmlsZSA9IChyb290OiBcInNyY1wiIHwgXCJ0bXBcIiwgZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGRpcmVjdG9yeSA9IGNyZWF0ZVJlcG9EaXJlY3Rvcnkocm9vdCk7XG4gIHRlbXBvcmFyeURpcmVjdG9yaWVzLnB1c2goZGlyZWN0b3J5KTtcbiAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4oZGlyZWN0b3J5LCBmaWxlbmFtZSk7XG4gIHdyaXRlRmlsZShmaWxlUGF0aCk7XG4gIHJldHVybiBmaWxlUGF0aDtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBtdWx0aXBsZSB0ZW1wb3JhcnkgZmlsZXMgdW5kZXIgdGhlIGdpdmVuIHJvb3QuXG4gKiBAcGFyYW0gcm9vdCBJbnB1dCByb290IHZhbHVlLlxuICogQHBhcmFtIGZpbGVuYW1lcyBJbnB1dCBmaWxlbmFtZXMgdmFsdWUuXG4gKiBAcmV0dXJucyBQYXRocyB0byB0aGUgY3JlYXRlZCBmaWxlcy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBwYXRocyA9IGNyZWF0ZVRlbXBvcmFyeUZpbGVzKFwidG1wXCIsIFtcImEudHNcIiwgXCJiLnRzXCJdKTtcbiAqIGBgYFxuICovXG5jb25zdCBjcmVhdGVUZW1wb3JhcnlGaWxlcyA9IChcbiAgcm9vdDogXCJzcmNcIiB8IFwidG1wXCIsXG4gIGZpbGVuYW1lczogc3RyaW5nW10sXG4pOiBzdHJpbmdbXSA9PiB7XG4gIGNvbnN0IGRpcmVjdG9yeSA9IGNyZWF0ZVJlcG9EaXJlY3Rvcnkocm9vdCk7XG4gIHRlbXBvcmFyeURpcmVjdG9yaWVzLnB1c2goZGlyZWN0b3J5KTtcbiAgcmV0dXJuIGZpbGVuYW1lcy5tYXAoKGZpbGVuYW1lKSA9PiB7XG4gICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4oZGlyZWN0b3J5LCBmaWxlbmFtZSk7XG4gICAgd3JpdGVGaWxlKGZpbGVQYXRoKTtcbiAgICByZXR1cm4gZmlsZVBhdGg7XG4gIH0pO1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgdGVtcG9yYXJ5IGZpbGUgcGFpciBmb3IgdGVzdC9zb3VyY2UgY29tYmluYXRpb25zLlxuICogQHBhcmFtIHJvb3QgSW5wdXQgcm9vdCB2YWx1ZS5cbiAqIEBwYXJhbSBmaXJzdCBJbnB1dCBmaXJzdCB2YWx1ZS5cbiAqIEBwYXJhbSBzZWNvbmQgSW5wdXQgc2Vjb25kIHZhbHVlLlxuICogQHJldHVybnMgVHVwbGUgb2YgY3JlYXRlZCBmaWxlIHBhdGhzLlxuICogQHRocm93cyB7RXJyb3J9IFdoZW4gdGhlIGZpbGUgcGF0aHMgYXJlIG1pc3NpbmcuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgW3NvdXJjZSwgdGVzdF0gPSBjcmVhdGVUZW1wb3JhcnlQYWlyKFwidG1wXCIsIFwiYS50c1wiLCBcImEuc3BlYy50c1wiKTtcbiAqIGBgYFxuICovXG5jb25zdCBjcmVhdGVUZW1wb3JhcnlQYWlyID0gKFxuICByb290OiBcInNyY1wiIHwgXCJ0bXBcIixcbiAgZmlyc3Q6IHN0cmluZyxcbiAgc2Vjb25kOiBzdHJpbmcsXG4pOiBbc3RyaW5nLCBzdHJpbmddID0+IHtcbiAgY29uc3QgW2ZpcnN0UGF0aCwgc2Vjb25kUGF0aF0gPSBjcmVhdGVUZW1wb3JhcnlGaWxlcyhyb290LCBbXG4gICAgZmlyc3QsXG4gICAgc2Vjb25kLFxuICBdKSBhcyBbc3RyaW5nLCBzdHJpbmddO1xuXG4gIHJldHVybiBbZmlyc3RQYXRoLCBzZWNvbmRQYXRoXTtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBjcmVhdGVQcm9ncmFtQXN0LlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjcmVhdGVQcm9ncmFtQXN0KCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgY3JlYXRlUHJvZ3JhbUFzdCA9ICgpOiBBU1QuUHJvZ3JhbSA9PiAoe1xuICBib2R5OiBbXSxcbiAgY29tbWVudHM6IFtdLFxuICBsb2M6IHtcbiAgICBlbmQ6IHsgY29sdW1uOiAwLCBsaW5lOiAxIH0sXG4gICAgc3RhcnQ6IHsgY29sdW1uOiAwLCBsaW5lOiAxIH0sXG4gIH0sXG4gIHJhbmdlOiBbMCwgMF0sXG4gIHNvdXJjZVR5cGU6IFwibW9kdWxlXCIsXG4gIHRva2VuczogW10sXG4gIHR5cGU6IFwiUHJvZ3JhbVwiLFxufSk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHJ1bGUgY29udGV4dCBmb3IgdGhlIGdpdmVuIGZpbGVuYW1lLlxuICogQHBhcmFtIGZpbGVuYW1lIElucHV0IGZpbGVuYW1lIHZhbHVlLlxuICogQHBhcmFtIHJlcG9ydHMgSW5wdXQgcmVwb3J0cyB2YWx1ZS5cbiAqIEBwYXJhbSBzb3VyY2VDb2RlIElucHV0IHNvdXJjZUNvZGUgdmFsdWUuXG4gKiBAcmV0dXJucyBSdWxlIGNvbnRleHQgZm9yIHRlc3RzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGNvbnRleHQgPSBjcmVhdGVSdWxlQ29udGV4dChmaWxlLCByZXBvcnRzLCBzb3VyY2VDb2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBjcmVhdGVSdWxlQ29udGV4dCA9IChcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgcmVwb3J0czogUnVsZVJlcG9ydFtdLFxuICBzb3VyY2VDb2RlOiBTb3VyY2VDb2RlLFxuKTogUnVsZS5SdWxlQ29udGV4dCA9PlxuICAoe1xuICAgIGN3ZDogY3dkKCksXG4gICAgZmlsZW5hbWUsXG4gICAgaWQ6IFwicmVxdWlyZS10ZXN0LWNvbXBhbmlvblwiLFxuICAgIGxhbmd1YWdlT3B0aW9uczoge1xuICAgICAgZWNtYVZlcnNpb246IFwibGF0ZXN0XCIsXG4gICAgICBzb3VyY2VUeXBlOiBcIm1vZHVsZVwiLFxuICAgIH0sXG4gICAgb3B0aW9uczogW10sXG4gICAgcGFyc2VyT3B0aW9uczoge30sXG4gICAgcGFyc2VyUGF0aDogdm9pZCAwLFxuICAgIHBoeXNpY2FsRmlsZW5hbWU6IGZpbGVuYW1lLFxuICAgIHJlcG9ydDogKHJlcG9ydDogUnVsZS5SZXBvcnREZXNjcmlwdG9yKTogdm9pZCA9PiB7XG4gICAgICBjb25zdCB7IG1lc3NhZ2VJZCB9ID0gcmVwb3J0IGFzIFJlcG9ydERlc2NyaXB0b3JXaXRoTWVzc2FnZUlkO1xuICAgICAgcmVwb3J0cy5wdXNoKHsgbWVzc2FnZUlkIH0pO1xuICAgIH0sXG4gICAgc2V0dGluZ3M6IHt9LFxuICAgIHNvdXJjZUNvZGUsXG4gIH0pIGFzIHVua25vd24gYXMgUnVsZS5SdWxlQ29udGV4dDtcblxuLyoqXG4gKiBSdW5zIHRoZSBydWxlIGxpc3RlbmVycyBmb3IgYSBjb250ZXh0LlxuICogQHBhcmFtIGNvbnRleHQgSW5wdXQgY29udGV4dCB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBydW5MaXN0ZW5lcnMoY29udGV4dCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgcnVuTGlzdGVuZXJzID0gKGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQpOiB2b2lkID0+IHtcbiAgY29uc3QgbGlzdGVuZXJzID0gcmVxdWlyZVRlc3RDb21wYW5pb25SdWxlLmNyZWF0ZShjb250ZXh0KTtcbiAgY29uc3QgcHJvZ3JhbU5vZGUgPSBjb250ZXh0LnNvdXJjZUNvZGUuYXN0O1xuICBjb25zdCBwcm9ncmFtTGlzdGVuZXIgPSBsaXN0ZW5lcnMuUHJvZ3JhbTtcblxuICBwcm9ncmFtTGlzdGVuZXI/Lihwcm9ncmFtTm9kZSk7XG59O1xuXG4vKipcbiAqIFJ1bnMgdGhlIHJ1bGUgd2l0aCB0aGUgZ2l2ZW4gb3B0aW9ucy5cbiAqIEBwYXJhbSBmaWxlbmFtZSBJbnB1dCBmaWxlbmFtZSB2YWx1ZS5cbiAqIEBwYXJhbSBvcHRpb25zIElucHV0IG9wdGlvbnMgdmFsdWUuXG4gKiBAcmV0dXJucyBDb2xsZWN0ZWQgcnVsZSByZXBvcnRzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJlcG9ydHMgPSBydW5SdWxlKFwiL3RtcC9mZWF0dXJlLnRzXCIpO1xuICogYGBgXG4gKi9cbmNvbnN0IHJ1blJ1bGUgPSAoXG4gIGZpbGVuYW1lOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBSZXF1aXJlVGVzdENvbXBhbmlvbk9wdGlvbnMsXG4pOiBSdWxlUmVwb3J0W10gPT4ge1xuICBjb25zdCByZXBvcnRzOiBSdWxlUmVwb3J0W10gPSBbXTtcbiAgY29uc3QgcHJvZ3JhbUFzdCA9IGNyZWF0ZVByb2dyYW1Bc3QoKTtcbiAgY29uc3Qgc291cmNlQ29kZSA9IG5ldyBTb3VyY2VDb2RlKFwiXCIsIHByb2dyYW1Bc3QpO1xuICBjb25zdCBjb250ZXh0ID0gY3JlYXRlUnVsZUNvbnRleHQoZmlsZW5hbWUsIHJlcG9ydHMsIHNvdXJjZUNvZGUpO1xuICBjb250ZXh0Lm9wdGlvbnMgPSBvcHRpb25zID09PSB2b2lkIDAgPyBbXSA6IFtvcHRpb25zXTtcblxuICBydW5MaXN0ZW5lcnMoY29udGV4dCk7XG5cbiAgcmV0dXJuIHJlcG9ydHM7XG59O1xuXG4vKipcbiAqIENsZWFucyB1cCB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMgY3JlYXRlZCBieSB0ZXN0cy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjbGVhbnVwVGVtcG9yYXJ5RGlyZWN0b3JpZXMoKTtcbiAqIGBgYFxuICovXG5jb25zdCBjbGVhbnVwVGVtcG9yYXJ5RGlyZWN0b3JpZXMgPSAoKTogdm9pZCA9PiB7XG4gIGZvciAoY29uc3QgZGlyZWN0b3J5IG9mIHRlbXBvcmFyeURpcmVjdG9yaWVzLnNwbGljZSgwKSkge1xuICAgIHJtU3luYyhkaXJlY3RvcnksIHsgZm9yY2U6IHRydWUsIHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgfVxufTtcblxuZXhwb3J0IHtcbiAgY2xlYW51cFRlbXBvcmFyeURpcmVjdG9yaWVzLFxuICBjcmVhdGVUZW1wb3JhcnlGaWxlLFxuICBjcmVhdGVUZW1wb3JhcnlQYWlyLFxuICBydW5SdWxlLFxufTtcbiJdfQ==
@@ -1,28 +0,0 @@
1
- import type { Rule } from "eslint";
2
- import { getOptions as getOptionsImpl } from "./require-test-companion-options.js";
3
- /** Normalized options state type. */
4
- type RequireTestCompanionState = ReturnType<typeof getOptionsImpl>;
5
- /**
6
- * Build a rule listener for a source filename.
7
- * @param context Rule execution context.
8
- * @param filename Source file path.
9
- * @param options Normalized rule options state.
10
- * @returns Rule listener for the file.
11
- * @example
12
- * ```typescript
13
- * const listener = buildListenerForFilename(context, filename, options);
14
- * ```
15
- */
16
- declare const buildListenerForFilename: (context: Rule.RuleContext, filename: string, options: RequireTestCompanionState) => Rule.RuleListener;
17
- /**
18
- * Normalize rule options for the listener.
19
- * @param options Raw rule options.
20
- * @returns Normalized rule options state.
21
- * @example
22
- * ```typescript
23
- * const options = getOptions([]);
24
- * ```
25
- */
26
- declare const getOptions: (options: readonly unknown[]) => RequireTestCompanionState;
27
- export { buildListenerForFilename, getOptions };
28
- //# sourceMappingURL=require-test-companion-utilities.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"require-test-companion-utilities.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/require-test-companion/require-test-companion-utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAGnC,OAAO,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEhF,qCAAqC;AACrC,KAAK,yBAAyB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAEnE;;;;;;;;;;GAUG;AACH,QAAA,MAAM,wBAAwB,GAC5B,SAAS,IAAI,CAAC,WAAW,EACzB,UAAU,MAAM,EAChB,SAAS,yBAAyB,KACjC,IAAI,CAAC,YACkD,CAAC;AAE3D;;;;;;;;GAQG;AACH,QAAA,MAAM,UAAU,GAAI,SAAS,SAAS,OAAO,EAAE,KAAG,yBACzB,CAAC;AAE1B,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,CAAC"}