@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
@@ -1,4 +1,31 @@
1
- import { analyzeTestBlock, hasCapturableActResult } from "../aaa/index.js";
1
+ import { analyzeTestBlock } from "../aaa/analyzer.analysis.js";
2
+ import { hasCapturableActResult } from "../aaa/analyzer.classification.helpers.js";
3
+ /** Known helper wrappers whose return value is intentionally ignored in Act. */
4
+ const knownActHelpers = new Set([
5
+ "runFunctionListener",
6
+ "runListener",
7
+ "runRule",
8
+ ]);
9
+ /**
10
+ * Gets the nearest identifier-like name from a member expression object.
11
+ * @param object Member expression object node.
12
+ * @returns Identifier-like name when it can be resolved statically.
13
+ * @example
14
+ * ```typescript
15
+ * const name = getMemberObjectName({} as ESTree.MemberExpression["object"]);
16
+ * void name;
17
+ * ```
18
+ */
19
+ function getMemberObjectName(object) {
20
+ if (object.type === "Identifier") {
21
+ return object.name;
22
+ }
23
+ if (object.type === "MemberExpression" &&
24
+ object.property.type === "Identifier") {
25
+ return object.property.name;
26
+ }
27
+ return void 0;
28
+ }
2
29
  /**
3
30
  * Checks whether a call reports through `context.report(...)`.
4
31
  * @param expression Call expression to inspect.
@@ -50,7 +77,7 @@ function isHelperDrivenAct(statement) {
50
77
  */
51
78
  function isNamedHelperCall(expression) {
52
79
  return (expression.callee.type === "Identifier" &&
53
- /^(?:report[A-Z]\w*|run(?:FunctionListener|Listener|Rule))$/u.test(expression.callee.name));
80
+ knownActHelpers.has(expression.callee.name));
54
81
  }
55
82
  /**
56
83
  * Checks whether a call targets `*.Rule.create(...)`.
@@ -63,11 +90,13 @@ function isNamedHelperCall(expression) {
63
90
  * ```
64
91
  */
65
92
  function isRuleCreateCall(expression) {
66
- return (expression.callee.type === "MemberExpression" &&
67
- expression.callee.object.type === "Identifier" &&
68
- expression.callee.object.name.endsWith("Rule") &&
69
- expression.callee.property.type === "Identifier" &&
70
- expression.callee.property.name === "create");
93
+ if (expression.callee.type !== "MemberExpression" ||
94
+ expression.callee.property.type !== "Identifier" ||
95
+ expression.callee.property.name !== "create") {
96
+ return false;
97
+ }
98
+ const objectName = getMemberObjectName(expression.callee.object);
99
+ return objectName !== void 0 && objectName.endsWith("Rule");
71
100
  }
72
101
  /** Requires Act-phase expressions to capture non-void results before asserting. */
73
102
  const requireActResultCaptureRule = {
@@ -106,4 +135,4 @@ const requireActResultCaptureRule = {
106
135
  },
107
136
  };
108
137
  export { requireActResultCaptureRule };
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9yZXF1aXJlLWFjdC1yZXN1bHQtY2FwdHVyZS9ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVsRTs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFTLG1CQUFtQixDQUFDLFVBQWlDO0lBQzVELE9BQU8sQ0FDTCxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxrQkFBa0I7UUFDN0MsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFlBQVk7UUFDOUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFNBQVM7UUFDM0MsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLFlBQVk7UUFDaEQsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FDN0MsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFTLGlCQUFpQixDQUFDLFNBQTJCO0lBQ3BELElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxTQUFTLENBQUM7SUFDakMsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLGdCQUFnQixFQUFFLENBQUM7UUFDekMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsT0FBTyxDQUNMLG1CQUFtQixDQUFDLFVBQVUsQ0FBQztRQUMvQixpQkFBaUIsQ0FBQyxVQUFVLENBQUM7UUFDN0IsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQzdCLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxpQkFBaUIsQ0FBQyxVQUFpQztJQUMxRCxPQUFPLENBQ0wsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssWUFBWTtRQUN2Qyw2REFBNkQsQ0FBQyxJQUFJLENBQ2hFLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN2QixDQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxVQUFpQztJQUN6RCxPQUFPLENBQ0wsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssa0JBQWtCO1FBQzdDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxZQUFZO1FBQzlDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQzlDLFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxZQUFZO1FBQ2hELFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxRQUFRLENBQzdDLENBQUM7QUFDSixDQUFDO0FBRUQsbUZBQW1GO0FBQ25GLE1BQU0sMkJBQTJCLEdBQW9CO0lBQ25ELE1BQU0sQ0FBQyxPQUF5QjtRQUM5QixPQUFPO1lBQ0wsY0FBYyxDQUFDLElBQUk7Z0JBQ2pCLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDakQsSUFBSSxRQUFRLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDeEIsT0FBTztnQkFDVCxDQUFDO2dCQUVELEtBQUssTUFBTSxTQUFTLElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUM1QyxJQUNFLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQzt3QkFDaEMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7d0JBQ3BDLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQzt3QkFDbEMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUN0QyxDQUFDO3dCQUNELE9BQU8sQ0FBQyxNQUFNLENBQUM7NEJBQ2IsU0FBUyxFQUFFLGtCQUFrQjs0QkFDN0IsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJO3lCQUNyQixDQUFDLENBQUM7b0JBQ0wsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztTQUMwQixDQUFDO0lBQ2hDLENBQUM7SUFDRCxJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUU7WUFDSixXQUFXLEVBQ1Qsa0ZBQWtGO1lBQ3BGLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLEdBQUcsRUFBRSw2RkFBNkY7U0FDbkc7UUFDRCxRQUFRLEVBQUU7WUFDUixnQkFBZ0IsRUFDZCx1RUFBdUU7U0FDMUU7UUFDRCxNQUFNLEVBQUUsRUFBRTtRQUNWLElBQUksRUFBRSxZQUFZO0tBQ25CO0NBQ0YsQ0FBQztBQUVGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSBcImVzbGludFwiO1xuaW1wb3J0IHR5cGUgKiBhcyBFU1RyZWUgZnJvbSBcImVzdHJlZVwiO1xuXG5pbXBvcnQgeyBhbmFseXplVGVzdEJsb2NrLCBoYXNDYXB0dXJhYmxlQWN0UmVzdWx0IH0gZnJvbSBcIi4uL2FhYVwiO1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgY2FsbCByZXBvcnRzIHRocm91Z2ggYGNvbnRleHQucmVwb3J0KC4uLilgLlxuICogQHBhcmFtIGV4cHJlc3Npb24gQ2FsbCBleHByZXNzaW9uIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIGNhbGwgdGFyZ2V0cyBgY29udGV4dC5yZXBvcnRgLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG1hdGNoZXMgPSBpc0NvbnRleHRSZXBvcnRDYWxsKHt9IGFzIEVTVHJlZS5DYWxsRXhwcmVzc2lvbik7XG4gKiB2b2lkIG1hdGNoZXM7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gaXNDb250ZXh0UmVwb3J0Q2FsbChleHByZXNzaW9uOiBFU1RyZWUuQ2FsbEV4cHJlc3Npb24pOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBleHByZXNzaW9uLmNhbGxlZS50eXBlID09PSBcIk1lbWJlckV4cHJlc3Npb25cIiAmJlxuICAgIGV4cHJlc3Npb24uY2FsbGVlLm9iamVjdC50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJlxuICAgIGV4cHJlc3Npb24uY2FsbGVlLm9iamVjdC5uYW1lID09PSBcImNvbnRleHRcIiAmJlxuICAgIGV4cHJlc3Npb24uY2FsbGVlLnByb3BlcnR5LnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmXG4gICAgZXhwcmVzc2lvbi5jYWxsZWUucHJvcGVydHkubmFtZSA9PT0gXCJyZXBvcnRcIlxuICApO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGFuIEFjdCBzdGF0ZW1lbnQgaXMgYWxyZWFkeSBkZWxlZ2F0ZWQgdG8gYSBrbm93biBoZWxwZXIuXG4gKiBAcGFyYW0gc3RhdGVtZW50IFN0YXRlbWVudCB0byBpbnNwZWN0LlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBzdGF0ZW1lbnQgaXMgaGFuZGxlZCBieSBhIGhlbHBlciB3cmFwcGVyLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGhhbmRsZWQgPSBpc0hlbHBlckRyaXZlbkFjdCh7fSBhcyBFU1RyZWUuU3RhdGVtZW50KTtcbiAqIHZvaWQgaGFuZGxlZDtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBpc0hlbHBlckRyaXZlbkFjdChzdGF0ZW1lbnQ6IEVTVHJlZS5TdGF0ZW1lbnQpOiBib29sZWFuIHtcbiAgaWYgKHN0YXRlbWVudC50eXBlICE9PSBcIkV4cHJlc3Npb25TdGF0ZW1lbnRcIikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHsgZXhwcmVzc2lvbiB9ID0gc3RhdGVtZW50O1xuICBpZiAoZXhwcmVzc2lvbi50eXBlICE9PSBcIkNhbGxFeHByZXNzaW9uXCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIGlzQ29udGV4dFJlcG9ydENhbGwoZXhwcmVzc2lvbikgfHxcbiAgICBpc05hbWVkSGVscGVyQ2FsbChleHByZXNzaW9uKSB8fFxuICAgIGlzUnVsZUNyZWF0ZUNhbGwoZXhwcmVzc2lvbilcbiAgKTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIGNhbGwgdGFyZ2V0cyBvbmUgb2YgdGhlIGtub3duIEFjdCBoZWxwZXIgd3JhcHBlcnMuXG4gKiBAcGFyYW0gZXhwcmVzc2lvbiBDYWxsIGV4cHJlc3Npb24gdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgaGVscGVyIG5hbWUgbWF0Y2hlcyB0aGUgYWxsb3dsaXN0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG1hdGNoZXMgPSBpc05hbWVkSGVscGVyQ2FsbCh7fSBhcyBFU1RyZWUuQ2FsbEV4cHJlc3Npb24pO1xuICogdm9pZCBtYXRjaGVzO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGlzTmFtZWRIZWxwZXJDYWxsKGV4cHJlc3Npb246IEVTVHJlZS5DYWxsRXhwcmVzc2lvbik6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIGV4cHJlc3Npb24uY2FsbGVlLnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmXG4gICAgL14oPzpyZXBvcnRbQS1aXVxcdyp8cnVuKD86RnVuY3Rpb25MaXN0ZW5lcnxMaXN0ZW5lcnxSdWxlKSkkL3UudGVzdChcbiAgICAgIGV4cHJlc3Npb24uY2FsbGVlLm5hbWUsXG4gICAgKVxuICApO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgY2FsbCB0YXJnZXRzIGAqLlJ1bGUuY3JlYXRlKC4uLilgLlxuICogQHBhcmFtIGV4cHJlc3Npb24gQ2FsbCBleHByZXNzaW9uIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIGNhbGwgdGFyZ2V0cyBhIHJ1bGUgZmFjdG9yeSBjcmVhdGUgbWV0aG9kLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG1hdGNoZXMgPSBpc1J1bGVDcmVhdGVDYWxsKHt9IGFzIEVTVHJlZS5DYWxsRXhwcmVzc2lvbik7XG4gKiB2b2lkIG1hdGNoZXM7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gaXNSdWxlQ3JlYXRlQ2FsbChleHByZXNzaW9uOiBFU1RyZWUuQ2FsbEV4cHJlc3Npb24pOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBleHByZXNzaW9uLmNhbGxlZS50eXBlID09PSBcIk1lbWJlckV4cHJlc3Npb25cIiAmJlxuICAgIGV4cHJlc3Npb24uY2FsbGVlLm9iamVjdC50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJlxuICAgIGV4cHJlc3Npb24uY2FsbGVlLm9iamVjdC5uYW1lLmVuZHNXaXRoKFwiUnVsZVwiKSAmJlxuICAgIGV4cHJlc3Npb24uY2FsbGVlLnByb3BlcnR5LnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmXG4gICAgZXhwcmVzc2lvbi5jYWxsZWUucHJvcGVydHkubmFtZSA9PT0gXCJjcmVhdGVcIlxuICApO1xufVxuXG4vKiogUmVxdWlyZXMgQWN0LXBoYXNlIGV4cHJlc3Npb25zIHRvIGNhcHR1cmUgbm9uLXZvaWQgcmVzdWx0cyBiZWZvcmUgYXNzZXJ0aW5nLiAqL1xuY29uc3QgcmVxdWlyZUFjdFJlc3VsdENhcHR1cmVSdWxlOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIGNyZWF0ZShjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZS5SdWxlTGlzdGVuZXIge1xuICAgIHJldHVybiB7XG4gICAgICBDYWxsRXhwcmVzc2lvbihub2RlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFuYWx5c2lzID0gYW5hbHl6ZVRlc3RCbG9jayhjb250ZXh0LCBub2RlKTtcbiAgICAgICAgaWYgKGFuYWx5c2lzID09PSB2b2lkIDApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiBhbmFseXNpcy5zdGF0ZW1lbnRzKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgc3RhdGVtZW50LnBoYXNlcy5pbmNsdWRlcyhcIkFjdFwiKSAmJlxuICAgICAgICAgICAgIXN0YXRlbWVudC5waGFzZXMuaW5jbHVkZXMoXCJBc3NlcnRcIikgJiZcbiAgICAgICAgICAgICFpc0hlbHBlckRyaXZlbkFjdChzdGF0ZW1lbnQubm9kZSkgJiZcbiAgICAgICAgICAgIGhhc0NhcHR1cmFibGVBY3RSZXN1bHQoc3RhdGVtZW50Lm5vZGUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICAgIG1lc3NhZ2VJZDogXCJjYXB0dXJlQWN0UmVzdWx0XCIsXG4gICAgICAgICAgICAgIG5vZGU6IHN0YXRlbWVudC5ub2RlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIFJ1bGUuUnVsZUxpc3RlbmVyO1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUmVxdWlyZSBub24tdm9pZCBBY3QgZXhwcmVzc2lvbnMgdG8gc3RvcmUgdGhlIG9ic2VydmVkIHJlc3VsdCBiZWZvcmUgYXNzZXJ0aW9ucy5cIixcbiAgICAgIHJlY29tbWVuZGVkOiBmYWxzZSxcbiAgICAgIHVybDogXCJodHRwczovL2dpdGh1Yi5jb20vcGFybG90aS9lc2xpbnQtcGx1Z2luL2Jsb2IvbWFpbi9kb2NzL3J1bGVzL3JlcXVpcmUtYWN0LXJlc3VsdC1jYXB0dXJlLm1kXCIsXG4gICAgfSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgY2FwdHVyZUFjdFJlc3VsdDpcbiAgICAgICAgXCJDYXB0dXJlIHRoZSAvLyBBY3QgcmVzdWx0IGluIGEgbmFtZWQgdmFyaWFibGUgYmVmb3JlIGFzc2VydGluZyBvbiBpdC5cIixcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogXCJzdWdnZXN0aW9uXCIsXG4gIH0sXG59O1xuXG5leHBvcnQgeyByZXF1aXJlQWN0UmVzdWx0Q2FwdHVyZVJ1bGUgfTtcbiJdfQ==
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9yZXF1aXJlLWFjdC1yZXN1bHQtY2FwdHVyZS9ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRWhGLGdGQUFnRjtBQUNoRixNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUM5QixxQkFBcUI7SUFDckIsYUFBYTtJQUNiLFNBQVM7Q0FDVixDQUFDLENBQUM7QUFFSDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFTLG1CQUFtQixDQUMxQixNQUF5QztJQUV6QyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFLENBQUM7UUFDakMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUNFLE1BQU0sQ0FBQyxJQUFJLEtBQUssa0JBQWtCO1FBQ2xDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLFlBQVksRUFDckMsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsbUJBQW1CLENBQUMsVUFBaUM7SUFDNUQsT0FBTyxDQUNMLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLGtCQUFrQjtRQUM3QyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssWUFBWTtRQUM5QyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssU0FBUztRQUMzQyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssWUFBWTtRQUNoRCxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUM3QyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsaUJBQWlCLENBQUMsU0FBMkI7SUFDcEQsSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLHFCQUFxQixFQUFFLENBQUM7UUFDN0MsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLFNBQVMsQ0FBQztJQUNqQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztRQUN6QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxPQUFPLENBQ0wsbUJBQW1CLENBQUMsVUFBVSxDQUFDO1FBQy9CLGlCQUFpQixDQUFDLFVBQVUsQ0FBQztRQUM3QixnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FDN0IsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFTLGlCQUFpQixDQUFDLFVBQWlDO0lBQzFELE9BQU8sQ0FDTCxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxZQUFZO1FBQ3ZDLGVBQWUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FDNUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFTLGdCQUFnQixDQUFDLFVBQWlDO0lBQ3pELElBQ0UsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssa0JBQWtCO1FBQzdDLFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxZQUFZO1FBQ2hELFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQzVDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRWpFLE9BQU8sVUFBVSxLQUFLLEtBQUssQ0FBQyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVELG1GQUFtRjtBQUNuRixNQUFNLDJCQUEyQixHQUFvQjtJQUNuRCxNQUFNLENBQUMsT0FBeUI7UUFDOUIsT0FBTztZQUNMLGNBQWMsQ0FBQyxJQUFJO2dCQUNqQixNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ2pELElBQUksUUFBUSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ3hCLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxLQUFLLE1BQU0sU0FBUyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDNUMsSUFDRSxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7d0JBQ2hDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO3dCQUNwQyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7d0JBQ2xDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDdEMsQ0FBQzt3QkFDRCxPQUFPLENBQUMsTUFBTSxDQUFDOzRCQUNiLFNBQVMsRUFBRSxrQkFBa0I7NEJBQzdCLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSTt5QkFDckIsQ0FBQyxDQUFDO29CQUNMLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7U0FDMEIsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFO1lBQ0osV0FBVyxFQUNULGtGQUFrRjtZQUNwRixXQUFXLEVBQUUsS0FBSztZQUNsQixHQUFHLEVBQUUsNkZBQTZGO1NBQ25HO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsZ0JBQWdCLEVBQ2QsdUVBQXVFO1NBQzFFO1FBQ0QsTUFBTSxFQUFFLEVBQUU7UUFDVixJQUFJLEVBQUUsWUFBWTtLQUNuQjtDQUNGLENBQUM7QUFFRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcbmltcG9ydCB0eXBlICogYXMgRVNUcmVlIGZyb20gXCJlc3RyZWVcIjtcblxuaW1wb3J0IHsgYW5hbHl6ZVRlc3RCbG9jayB9IGZyb20gXCIuLi9hYWEvYW5hbHl6ZXIuYW5hbHlzaXNcIjtcbmltcG9ydCB7IGhhc0NhcHR1cmFibGVBY3RSZXN1bHQgfSBmcm9tIFwiLi4vYWFhL2FuYWx5emVyLmNsYXNzaWZpY2F0aW9uLmhlbHBlcnNcIjtcblxuLyoqIEtub3duIGhlbHBlciB3cmFwcGVycyB3aG9zZSByZXR1cm4gdmFsdWUgaXMgaW50ZW50aW9uYWxseSBpZ25vcmVkIGluIEFjdC4gKi9cbmNvbnN0IGtub3duQWN0SGVscGVycyA9IG5ldyBTZXQoW1xuICBcInJ1bkZ1bmN0aW9uTGlzdGVuZXJcIixcbiAgXCJydW5MaXN0ZW5lclwiLFxuICBcInJ1blJ1bGVcIixcbl0pO1xuXG4vKipcbiAqIEdldHMgdGhlIG5lYXJlc3QgaWRlbnRpZmllci1saWtlIG5hbWUgZnJvbSBhIG1lbWJlciBleHByZXNzaW9uIG9iamVjdC5cbiAqIEBwYXJhbSBvYmplY3QgTWVtYmVyIGV4cHJlc3Npb24gb2JqZWN0IG5vZGUuXG4gKiBAcmV0dXJucyBJZGVudGlmaWVyLWxpa2UgbmFtZSB3aGVuIGl0IGNhbiBiZSByZXNvbHZlZCBzdGF0aWNhbGx5LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG5hbWUgPSBnZXRNZW1iZXJPYmplY3ROYW1lKHt9IGFzIEVTVHJlZS5NZW1iZXJFeHByZXNzaW9uW1wib2JqZWN0XCJdKTtcbiAqIHZvaWQgbmFtZTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBnZXRNZW1iZXJPYmplY3ROYW1lKFxuICBvYmplY3Q6IEVTVHJlZS5NZW1iZXJFeHByZXNzaW9uW1wib2JqZWN0XCJdLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iamVjdC50eXBlID09PSBcIklkZW50aWZpZXJcIikge1xuICAgIHJldHVybiBvYmplY3QubmFtZTtcbiAgfVxuXG4gIGlmIChcbiAgICBvYmplY3QudHlwZSA9PT0gXCJNZW1iZXJFeHByZXNzaW9uXCIgJiZcbiAgICBvYmplY3QucHJvcGVydHkudHlwZSA9PT0gXCJJZGVudGlmaWVyXCJcbiAgKSB7XG4gICAgcmV0dXJuIG9iamVjdC5wcm9wZXJ0eS5uYW1lO1xuICB9XG5cbiAgcmV0dXJuIHZvaWQgMDtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIGNhbGwgcmVwb3J0cyB0aHJvdWdoIGBjb250ZXh0LnJlcG9ydCguLi4pYC5cbiAqIEBwYXJhbSBleHByZXNzaW9uIENhbGwgZXhwcmVzc2lvbiB0byBpbnNwZWN0LlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBjYWxsIHRhcmdldHMgYGNvbnRleHQucmVwb3J0YC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBtYXRjaGVzID0gaXNDb250ZXh0UmVwb3J0Q2FsbCh7fSBhcyBFU1RyZWUuQ2FsbEV4cHJlc3Npb24pO1xuICogdm9pZCBtYXRjaGVzO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGlzQ29udGV4dFJlcG9ydENhbGwoZXhwcmVzc2lvbjogRVNUcmVlLkNhbGxFeHByZXNzaW9uKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgZXhwcmVzc2lvbi5jYWxsZWUudHlwZSA9PT0gXCJNZW1iZXJFeHByZXNzaW9uXCIgJiZcbiAgICBleHByZXNzaW9uLmNhbGxlZS5vYmplY3QudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcbiAgICBleHByZXNzaW9uLmNhbGxlZS5vYmplY3QubmFtZSA9PT0gXCJjb250ZXh0XCIgJiZcbiAgICBleHByZXNzaW9uLmNhbGxlZS5wcm9wZXJ0eS50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJlxuICAgIGV4cHJlc3Npb24uY2FsbGVlLnByb3BlcnR5Lm5hbWUgPT09IFwicmVwb3J0XCJcbiAgKTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhbiBBY3Qgc3RhdGVtZW50IGlzIGFscmVhZHkgZGVsZWdhdGVkIHRvIGEga25vd24gaGVscGVyLlxuICogQHBhcmFtIHN0YXRlbWVudCBTdGF0ZW1lbnQgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgc3RhdGVtZW50IGlzIGhhbmRsZWQgYnkgYSBoZWxwZXIgd3JhcHBlci5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBoYW5kbGVkID0gaXNIZWxwZXJEcml2ZW5BY3Qoe30gYXMgRVNUcmVlLlN0YXRlbWVudCk7XG4gKiB2b2lkIGhhbmRsZWQ7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gaXNIZWxwZXJEcml2ZW5BY3Qoc3RhdGVtZW50OiBFU1RyZWUuU3RhdGVtZW50KTogYm9vbGVhbiB7XG4gIGlmIChzdGF0ZW1lbnQudHlwZSAhPT0gXCJFeHByZXNzaW9uU3RhdGVtZW50XCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCB7IGV4cHJlc3Npb24gfSA9IHN0YXRlbWVudDtcbiAgaWYgKGV4cHJlc3Npb24udHlwZSAhPT0gXCJDYWxsRXhwcmVzc2lvblwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICBpc0NvbnRleHRSZXBvcnRDYWxsKGV4cHJlc3Npb24pIHx8XG4gICAgaXNOYW1lZEhlbHBlckNhbGwoZXhwcmVzc2lvbikgfHxcbiAgICBpc1J1bGVDcmVhdGVDYWxsKGV4cHJlc3Npb24pXG4gICk7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBjYWxsIHRhcmdldHMgb25lIG9mIHRoZSBrbm93biBBY3QgaGVscGVyIHdyYXBwZXJzLlxuICogQHBhcmFtIGV4cHJlc3Npb24gQ2FsbCBleHByZXNzaW9uIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIGhlbHBlciBuYW1lIG1hdGNoZXMgdGhlIGFsbG93bGlzdC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBtYXRjaGVzID0gaXNOYW1lZEhlbHBlckNhbGwoe30gYXMgRVNUcmVlLkNhbGxFeHByZXNzaW9uKTtcbiAqIHZvaWQgbWF0Y2hlcztcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBpc05hbWVkSGVscGVyQ2FsbChleHByZXNzaW9uOiBFU1RyZWUuQ2FsbEV4cHJlc3Npb24pOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBleHByZXNzaW9uLmNhbGxlZS50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJlxuICAgIGtub3duQWN0SGVscGVycy5oYXMoZXhwcmVzc2lvbi5jYWxsZWUubmFtZSlcbiAgKTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIGNhbGwgdGFyZ2V0cyBgKi5SdWxlLmNyZWF0ZSguLi4pYC5cbiAqIEBwYXJhbSBleHByZXNzaW9uIENhbGwgZXhwcmVzc2lvbiB0byBpbnNwZWN0LlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBjYWxsIHRhcmdldHMgYSBydWxlIGZhY3RvcnkgY3JlYXRlIG1ldGhvZC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBtYXRjaGVzID0gaXNSdWxlQ3JlYXRlQ2FsbCh7fSBhcyBFU1RyZWUuQ2FsbEV4cHJlc3Npb24pO1xuICogdm9pZCBtYXRjaGVzO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGlzUnVsZUNyZWF0ZUNhbGwoZXhwcmVzc2lvbjogRVNUcmVlLkNhbGxFeHByZXNzaW9uKTogYm9vbGVhbiB7XG4gIGlmIChcbiAgICBleHByZXNzaW9uLmNhbGxlZS50eXBlICE9PSBcIk1lbWJlckV4cHJlc3Npb25cIiB8fFxuICAgIGV4cHJlc3Npb24uY2FsbGVlLnByb3BlcnR5LnR5cGUgIT09IFwiSWRlbnRpZmllclwiIHx8XG4gICAgZXhwcmVzc2lvbi5jYWxsZWUucHJvcGVydHkubmFtZSAhPT0gXCJjcmVhdGVcIlxuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBvYmplY3ROYW1lID0gZ2V0TWVtYmVyT2JqZWN0TmFtZShleHByZXNzaW9uLmNhbGxlZS5vYmplY3QpO1xuXG4gIHJldHVybiBvYmplY3ROYW1lICE9PSB2b2lkIDAgJiYgb2JqZWN0TmFtZS5lbmRzV2l0aChcIlJ1bGVcIik7XG59XG5cbi8qKiBSZXF1aXJlcyBBY3QtcGhhc2UgZXhwcmVzc2lvbnMgdG8gY2FwdHVyZSBub24tdm9pZCByZXN1bHRzIGJlZm9yZSBhc3NlcnRpbmcuICovXG5jb25zdCByZXF1aXJlQWN0UmVzdWx0Q2FwdHVyZVJ1bGU6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQpOiBSdWxlLlJ1bGVMaXN0ZW5lciB7XG4gICAgcmV0dXJuIHtcbiAgICAgIENhbGxFeHByZXNzaW9uKG5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYW5hbHlzaXMgPSBhbmFseXplVGVzdEJsb2NrKGNvbnRleHQsIG5vZGUpO1xuICAgICAgICBpZiAoYW5hbHlzaXMgPT09IHZvaWQgMCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3Qgc3RhdGVtZW50IG9mIGFuYWx5c2lzLnN0YXRlbWVudHMpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBzdGF0ZW1lbnQucGhhc2VzLmluY2x1ZGVzKFwiQWN0XCIpICYmXG4gICAgICAgICAgICAhc3RhdGVtZW50LnBoYXNlcy5pbmNsdWRlcyhcIkFzc2VydFwiKSAmJlxuICAgICAgICAgICAgIWlzSGVscGVyRHJpdmVuQWN0KHN0YXRlbWVudC5ub2RlKSAmJlxuICAgICAgICAgICAgaGFzQ2FwdHVyYWJsZUFjdFJlc3VsdChzdGF0ZW1lbnQubm9kZSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICAgbWVzc2FnZUlkOiBcImNhcHR1cmVBY3RSZXN1bHRcIixcbiAgICAgICAgICAgICAgbm9kZTogc3RhdGVtZW50Lm5vZGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSBzYXRpc2ZpZXMgUnVsZS5SdWxlTGlzdGVuZXI7XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJSZXF1aXJlIG5vbi12b2lkIEFjdCBleHByZXNzaW9ucyB0byBzdG9yZSB0aGUgb2JzZXJ2ZWQgcmVzdWx0IGJlZm9yZSBhc3NlcnRpb25zLlwiLFxuICAgICAgcmVjb21tZW5kZWQ6IGZhbHNlLFxuICAgICAgdXJsOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9wYXJsb3RpL2VzbGludC1wbHVnaW4vYmxvYi9tYWluL2RvY3MvcnVsZXMvcmVxdWlyZS1hY3QtcmVzdWx0LWNhcHR1cmUubWRcIixcbiAgICB9LFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICBjYXB0dXJlQWN0UmVzdWx0OlxuICAgICAgICBcIkNhcHR1cmUgdGhlIC8vIEFjdCByZXN1bHQgaW4gYSBuYW1lZCB2YXJpYWJsZSBiZWZvcmUgYXNzZXJ0aW5nIG9uIGl0LlwiLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiBcInN1Z2dlc3Rpb25cIixcbiAgfSxcbn07XG5cbmV4cG9ydCB7IHJlcXVpcmVBY3RSZXN1bHRDYXB0dXJlUnVsZSB9O1xuIl19
@@ -1,3 +1,2 @@
1
- export { buildListenerForFilename, getOptions, } from "./require-test-companion-utilities.js";
2
1
  export { requireTestCompanionRule } from "./rule.js";
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/require-test-companion/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,UAAU,GACX,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/require-test-companion/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC"}
@@ -1,3 +1,2 @@
1
- export { buildListenerForFilename, getOptions, } from "./require-test-companion-utilities.js";
2
1
  export { requireTestCompanionRule } from "./rule.js";
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcmVxdWlyZS10ZXN0LWNvbXBhbmlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLFVBQVUsR0FDWCxNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIGJ1aWxkTGlzdGVuZXJGb3JGaWxlbmFtZSxcbiAgZ2V0T3B0aW9ucyxcbn0gZnJvbSBcIi4vcmVxdWlyZS10ZXN0LWNvbXBhbmlvbi11dGlsaXRpZXNcIjtcbmV4cG9ydCB7IHJlcXVpcmVUZXN0Q29tcGFuaW9uUnVsZSB9IGZyb20gXCIuL3J1bGVcIjtcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcmVxdWlyZS10ZXN0LWNvbXBhbmlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyByZXF1aXJlVGVzdENvbXBhbmlvblJ1bGUgfSBmcm9tIFwiLi9ydWxlXCI7XG4iXX0=
@@ -5,12 +5,13 @@ import type { RequireTestCompanionState } from "./require-test-companion-options
5
5
  * @param context Input context value.
6
6
  * @param filename Input filename value.
7
7
  * @param options Input options value.
8
+ * @param baseDirectory Input baseDirectory value.
8
9
  * @returns Rule listener for the filename.
9
10
  * @example
10
11
  * ```typescript
11
12
  * const listener = buildListenerForFilename(context, filename, options);
12
13
  * ```
13
14
  */
14
- declare const buildListenerForFilename: (context: Rule.RuleContext, filename: string, options: RequireTestCompanionState) => Rule.RuleListener;
15
+ declare const buildListenerForFilename: (context: Rule.RuleContext, filename: string, options: RequireTestCompanionState, baseDirectory?: string) => Rule.RuleListener;
15
16
  export { buildListenerForFilename };
16
17
  //# sourceMappingURL=require-test-companion-listeners.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"require-test-companion-listeners.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/require-test-companion/require-test-companion-listeners.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAKnC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAuLlF;;;;;;;;;;GAUG;AACH,QAAA,MAAM,wBAAwB,GAC5B,SAAS,IAAI,CAAC,WAAW,EACzB,UAAU,MAAM,EAChB,SAAS,yBAAyB,KACjC,IAAI,CAAC,YAuBP,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
1
+ {"version":3,"file":"require-test-companion-listeners.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/require-test-companion/require-test-companion-listeners.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAMnC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAiHlF;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,wBAAwB,GAC5B,SAAS,IAAI,CAAC,WAAW,EACzB,UAAU,MAAM,EAChB,SAAS,yBAAyB,EAClC,gBAAe,MAAc,KAC5B,IAAI,CAAC,YAmBP,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { existsSync } from "node:fs";
2
2
  import path from "node:path";
3
+ import { cwd } from "node:process";
3
4
  import { isLintableFilename, isPathMatch, isTypeScriptFile, TYPESCRIPT_EXTENSION, } from "./require-test-companion-options.js";
4
5
  /**
5
6
  * Gets the test suffix for a file name when present.
@@ -12,50 +13,6 @@ import { isLintableFilename, isPathMatch, isTypeScriptFile, TYPESCRIPT_EXTENSION
12
13
  * ```
13
14
  */
14
15
  const getTestSuffix = (fileBasename, testSuffixes) => testSuffixes.find((suffix) => fileBasename.endsWith(`.${suffix}${TYPESCRIPT_EXTENSION}`));
15
- /**
16
- * Checks for any test companion file in the directory.
17
- * @param directory Input directory value.
18
- * @param baseStem Input baseStem value.
19
- * @param testSuffixes Input testSuffixes value.
20
- * @returns True when any test companion exists.
21
- * @example
22
- * ```typescript
23
- * const ok = hasAnyTestCompanion(dir, "feature", ["spec"]);
24
- * ```
25
- */
26
- const hasAnyTestCompanion = (directory, baseStem, testSuffixes) => testSuffixes.some((suffix) => existsSync(path.join(directory, `${baseStem}.${suffix}.ts`)));
27
- /**
28
- * Builds a listener that reports missing test companions.
29
- * @param context Input context value.
30
- * @param options Input options value.
31
- * @returns Rule listener for missing tests.
32
- * @example
33
- * ```typescript
34
- * const listener = buildMissingTestListener(context, options);
35
- * ```
36
- */
37
- const buildMissingTestListener = (context, options) => {
38
- const { directory, fileBasename, testSuffixes } = options;
39
- const baseStem = fileBasename.slice(0, -TYPESCRIPT_EXTENSION.length);
40
- if (baseStem.length === 0) {
41
- return {};
42
- }
43
- if (hasAnyTestCompanion(directory, baseStem, testSuffixes)) {
44
- return {};
45
- }
46
- return {
47
- Program(node) {
48
- const testFiles = testSuffixes
49
- .map((suffix) => `${baseStem}.${suffix}${TYPESCRIPT_EXTENSION}`)
50
- .join(", ");
51
- context.report({
52
- data: { testFiles },
53
- messageId: "missingTest",
54
- node,
55
- });
56
- },
57
- };
58
- };
59
16
  /**
60
17
  * Builds a listener that reports missing source files.
61
18
  * @param context Input context value.
@@ -90,13 +47,14 @@ const buildMissingSourceListener = (context, options) => {
90
47
  * Determines whether a file should be linted.
91
48
  * @param filename Input filename value.
92
49
  * @param options Input options value.
50
+ * @param baseDirectory Input baseDirectory value.
93
51
  * @returns True when the file should be linted.
94
52
  * @example
95
53
  * ```typescript
96
54
  * const ok = shouldLintFile(filename, options);
97
55
  * ```
98
56
  */
99
- const shouldLintFile = (filename, options) => {
57
+ const shouldLintFile = (filename, options, baseDirectory) => {
100
58
  const { enforceIn, ignorePatterns } = options;
101
59
  if (!isLintableFilename(filename)) {
102
60
  return false;
@@ -104,42 +62,39 @@ const shouldLintFile = (filename, options) => {
104
62
  if (!isTypeScriptFile(filename)) {
105
63
  return false;
106
64
  }
107
- if (!isPathMatch(filename, enforceIn)) {
65
+ if (!isPathMatch(filename, enforceIn, baseDirectory)) {
108
66
  return false;
109
67
  }
110
- return !isPathMatch(filename, ignorePatterns);
68
+ return !isPathMatch(filename, ignorePatterns, baseDirectory);
111
69
  };
112
70
  /**
113
71
  * Builds a listener for a specific filename.
114
72
  * @param context Input context value.
115
73
  * @param filename Input filename value.
116
74
  * @param options Input options value.
75
+ * @param baseDirectory Input baseDirectory value.
117
76
  * @returns Rule listener for the filename.
118
77
  * @example
119
78
  * ```typescript
120
79
  * const listener = buildListenerForFilename(context, filename, options);
121
80
  * ```
122
81
  */
123
- const buildListenerForFilename = (context, filename, options) => {
124
- if (!shouldLintFile(filename, options)) {
82
+ const buildListenerForFilename = (context, filename, options, baseDirectory = cwd()) => {
83
+ if (!shouldLintFile(filename, options, baseDirectory)) {
125
84
  return {};
126
85
  }
127
86
  const fileBasename = path.basename(filename);
128
87
  const directory = path.dirname(filename);
129
88
  const { testSuffixes } = options;
130
89
  const testSuffix = getTestSuffix(fileBasename, testSuffixes);
131
- if (testSuffix !== void 0) {
132
- return buildMissingSourceListener(context, {
133
- directory,
134
- fileBasename,
135
- suffix: testSuffix,
136
- });
90
+ if (testSuffix === void 0) {
91
+ return {};
137
92
  }
138
- return buildMissingTestListener(context, {
93
+ return buildMissingSourceListener(context, {
139
94
  directory,
140
95
  fileBasename,
141
- testSuffixes,
96
+ suffix: testSuffix,
142
97
  });
143
98
  };
144
99
  export { buildListenerForFilename };
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZS10ZXN0LWNvbXBhbmlvbi1saXN0ZW5lcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcmVxdWlyZS10ZXN0LWNvbXBhbmlvbi9yZXF1aXJlLXRlc3QtY29tcGFuaW9uLWxpc3RlbmVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUk3QixPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsb0JBQW9CLEdBQ3JCLE1BQU0sa0NBQWtDLENBQUM7QUEwQjFDOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sYUFBYSxHQUFHLENBQ3BCLFlBQW9CLEVBQ3BCLFlBQXNCLEVBQ0YsRUFBRSxDQUN0QixZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDM0IsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLE1BQU0sR0FBRyxvQkFBb0IsRUFBRSxDQUFDLENBQzNELENBQUM7QUFFSjs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxtQkFBbUIsR0FBRyxDQUMxQixTQUFpQixFQUNqQixRQUFnQixFQUNoQixZQUFzQixFQUNiLEVBQUUsQ0FDWCxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDM0IsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsUUFBUSxJQUFJLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FDN0QsQ0FBQztBQUVKOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sd0JBQXdCLEdBQUcsQ0FDL0IsT0FBeUIsRUFDekIsT0FBbUMsRUFDaEIsRUFBRTtJQUNyQixNQUFNLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDMUQsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVyRSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsSUFBSSxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDM0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sQ0FBQyxJQUFJO1lBQ1YsTUFBTSxTQUFTLEdBQUcsWUFBWTtpQkFDM0IsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLFFBQVEsSUFBSSxNQUFNLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztpQkFDL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRWQsT0FBTyxDQUFDLE1BQU0sQ0FBQztnQkFDYixJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUU7Z0JBQ25CLFNBQVMsRUFBRSxhQUFhO2dCQUN4QixJQUFJO2FBQ0wsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLDBCQUEwQixHQUFHLENBQ2pDLE9BQXlCLEVBQ3pCLE9BQXFDLEVBQ2xCLEVBQUU7SUFDckIsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ3BELE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQ3ZDLENBQUMsRUFDRCxDQUFDLElBQUksTUFBTSxHQUFHLG9CQUFvQixFQUFFLENBQUMsTUFBTSxDQUM1QyxDQUFDO0lBRUYsSUFBSSxjQUFjLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLEdBQUcsY0FBYyxHQUFHLG9CQUFvQixFQUFFLENBQUM7SUFFOUQsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2pELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLENBQUMsSUFBSTtZQUNWLE9BQU8sQ0FBQyxNQUFNLENBQUM7Z0JBQ2IsSUFBSSxFQUFFLEVBQUUsVUFBVSxFQUFFO2dCQUNwQixTQUFTLEVBQUUsZUFBZTtnQkFDMUIsSUFBSTthQUNMLENBQUMsQ0FBQztRQUNMLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsQ0FDckIsUUFBZ0IsRUFDaEIsT0FBa0MsRUFDekIsRUFBRTtJQUNYLE1BQU0sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRTlDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDdEMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDaEQsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sd0JBQXdCLEdBQUcsQ0FDL0IsT0FBeUIsRUFDekIsUUFBZ0IsRUFDaEIsT0FBa0MsRUFDZixFQUFFO0lBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDdkMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDakMsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUU3RCxJQUFJLFVBQVUsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzFCLE9BQU8sMEJBQTBCLENBQUMsT0FBTyxFQUFFO1lBQ3pDLFNBQVM7WUFDVCxZQUFZO1lBQ1osTUFBTSxFQUFFLFVBQVU7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sd0JBQXdCLENBQUMsT0FBTyxFQUFFO1FBQ3ZDLFNBQVM7UUFDVCxZQUFZO1FBQ1osWUFBWTtLQUNiLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcblxuaW1wb3J0IHR5cGUgeyBSZXF1aXJlVGVzdENvbXBhbmlvblN0YXRlIH0gZnJvbSBcIi4vcmVxdWlyZS10ZXN0LWNvbXBhbmlvbi1vcHRpb25zXCI7XG5cbmltcG9ydCB7XG4gIGlzTGludGFibGVGaWxlbmFtZSxcbiAgaXNQYXRoTWF0Y2gsXG4gIGlzVHlwZVNjcmlwdEZpbGUsXG4gIFRZUEVTQ1JJUFRfRVhURU5TSU9OLFxufSBmcm9tIFwiLi9yZXF1aXJlLXRlc3QtY29tcGFuaW9uLW9wdGlvbnNcIjtcblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIE1pc3NpbmdTb3VyY2VMaXN0ZW5lck9wdGlvbnMge1xuICAvKiogRGlyZWN0b3J5IGZpZWxkIHZhbHVlLiAqL1xuICBkaXJlY3Rvcnk6IHN0cmluZztcblxuICAvKiogQmFzZW5hbWUgZmllbGQgdmFsdWUuICovXG4gIGZpbGVCYXNlbmFtZTogc3RyaW5nO1xuXG4gIC8qKiBTdWZmaXggZmllbGQgdmFsdWUuICovXG4gIHN1ZmZpeDogc3RyaW5nO1xufVxuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG5pbnRlcmZhY2UgTWlzc2luZ1Rlc3RMaXN0ZW5lck9wdGlvbnMge1xuICAvKiogRGlyZWN0b3J5IGZpZWxkIHZhbHVlLiAqL1xuICBkaXJlY3Rvcnk6IHN0cmluZztcblxuICAvKiogQmFzZW5hbWUgZmllbGQgdmFsdWUuICovXG4gIGZpbGVCYXNlbmFtZTogc3RyaW5nO1xuXG4gIC8qKiBUZXN0U3VmZml4ZXMgZmllbGQgdmFsdWUuICovXG4gIHRlc3RTdWZmaXhlczogc3RyaW5nW107XG59XG5cbi8qKlxuICogR2V0cyB0aGUgdGVzdCBzdWZmaXggZm9yIGEgZmlsZSBuYW1lIHdoZW4gcHJlc2VudC5cbiAqIEBwYXJhbSBmaWxlQmFzZW5hbWUgSW5wdXQgYmFzZW5hbWUgdmFsdWUuXG4gKiBAcGFyYW0gdGVzdFN1ZmZpeGVzIElucHV0IHRlc3RTdWZmaXhlcyB2YWx1ZS5cbiAqIEByZXR1cm5zIE1hdGNoZWQgdGVzdCBzdWZmaXggd2hlbiBwcmVzZW50LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHN1ZmZpeCA9IGdldFRlc3RTdWZmaXgoXCJmZWF0dXJlLnNwZWMudHNcIiwgW1wic3BlY1wiXSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0VGVzdFN1ZmZpeCA9IChcbiAgZmlsZUJhc2VuYW1lOiBzdHJpbmcsXG4gIHRlc3RTdWZmaXhlczogc3RyaW5nW10sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQgPT5cbiAgdGVzdFN1ZmZpeGVzLmZpbmQoKHN1ZmZpeCkgPT5cbiAgICBmaWxlQmFzZW5hbWUuZW5kc1dpdGgoYC4ke3N1ZmZpeH0ke1RZUEVTQ1JJUFRfRVhURU5TSU9OfWApLFxuICApO1xuXG4vKipcbiAqIENoZWNrcyBmb3IgYW55IHRlc3QgY29tcGFuaW9uIGZpbGUgaW4gdGhlIGRpcmVjdG9yeS5cbiAqIEBwYXJhbSBkaXJlY3RvcnkgSW5wdXQgZGlyZWN0b3J5IHZhbHVlLlxuICogQHBhcmFtIGJhc2VTdGVtIElucHV0IGJhc2VTdGVtIHZhbHVlLlxuICogQHBhcmFtIHRlc3RTdWZmaXhlcyBJbnB1dCB0ZXN0U3VmZml4ZXMgdmFsdWUuXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gYW55IHRlc3QgY29tcGFuaW9uIGV4aXN0cy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBvayA9IGhhc0FueVRlc3RDb21wYW5pb24oZGlyLCBcImZlYXR1cmVcIiwgW1wic3BlY1wiXSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgaGFzQW55VGVzdENvbXBhbmlvbiA9IChcbiAgZGlyZWN0b3J5OiBzdHJpbmcsXG4gIGJhc2VTdGVtOiBzdHJpbmcsXG4gIHRlc3RTdWZmaXhlczogc3RyaW5nW10sXG4pOiBib29sZWFuID0+XG4gIHRlc3RTdWZmaXhlcy5zb21lKChzdWZmaXgpID0+XG4gICAgZXhpc3RzU3luYyhwYXRoLmpvaW4oZGlyZWN0b3J5LCBgJHtiYXNlU3RlbX0uJHtzdWZmaXh9LnRzYCkpLFxuICApO1xuXG4vKipcbiAqIEJ1aWxkcyBhIGxpc3RlbmVyIHRoYXQgcmVwb3J0cyBtaXNzaW5nIHRlc3QgY29tcGFuaW9ucy5cbiAqIEBwYXJhbSBjb250ZXh0IElucHV0IGNvbnRleHQgdmFsdWUuXG4gKiBAcGFyYW0gb3B0aW9ucyBJbnB1dCBvcHRpb25zIHZhbHVlLlxuICogQHJldHVybnMgUnVsZSBsaXN0ZW5lciBmb3IgbWlzc2luZyB0ZXN0cy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBsaXN0ZW5lciA9IGJ1aWxkTWlzc2luZ1Rlc3RMaXN0ZW5lcihjb250ZXh0LCBvcHRpb25zKTtcbiAqIGBgYFxuICovXG5jb25zdCBidWlsZE1pc3NpbmdUZXN0TGlzdGVuZXIgPSAoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIG9wdGlvbnM6IE1pc3NpbmdUZXN0TGlzdGVuZXJPcHRpb25zLFxuKTogUnVsZS5SdWxlTGlzdGVuZXIgPT4ge1xuICBjb25zdCB7IGRpcmVjdG9yeSwgZmlsZUJhc2VuYW1lLCB0ZXN0U3VmZml4ZXMgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGJhc2VTdGVtID0gZmlsZUJhc2VuYW1lLnNsaWNlKDAsIC1UWVBFU0NSSVBUX0VYVEVOU0lPTi5sZW5ndGgpO1xuXG4gIGlmIChiYXNlU3RlbS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBpZiAoaGFzQW55VGVzdENvbXBhbmlvbihkaXJlY3RvcnksIGJhc2VTdGVtLCB0ZXN0U3VmZml4ZXMpKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBQcm9ncmFtKG5vZGUpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHRlc3RGaWxlcyA9IHRlc3RTdWZmaXhlc1xuICAgICAgICAubWFwKChzdWZmaXgpID0+IGAke2Jhc2VTdGVtfS4ke3N1ZmZpeH0ke1RZUEVTQ1JJUFRfRVhURU5TSU9OfWApXG4gICAgICAgIC5qb2luKFwiLCBcIik7XG5cbiAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgZGF0YTogeyB0ZXN0RmlsZXMgfSxcbiAgICAgICAgbWVzc2FnZUlkOiBcIm1pc3NpbmdUZXN0XCIsXG4gICAgICAgIG5vZGUsXG4gICAgICB9KTtcbiAgICB9LFxuICB9O1xufTtcblxuLyoqXG4gKiBCdWlsZHMgYSBsaXN0ZW5lciB0aGF0IHJlcG9ydHMgbWlzc2luZyBzb3VyY2UgZmlsZXMuXG4gKiBAcGFyYW0gY29udGV4dCBJbnB1dCBjb250ZXh0IHZhbHVlLlxuICogQHBhcmFtIG9wdGlvbnMgSW5wdXQgb3B0aW9ucyB2YWx1ZS5cbiAqIEByZXR1cm5zIFJ1bGUgbGlzdGVuZXIgZm9yIG1pc3Npbmcgc291cmNlcy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBsaXN0ZW5lciA9IGJ1aWxkTWlzc2luZ1NvdXJjZUxpc3RlbmVyKGNvbnRleHQsIG9wdGlvbnMpO1xuICogYGBgXG4gKi9cbmNvbnN0IGJ1aWxkTWlzc2luZ1NvdXJjZUxpc3RlbmVyID0gKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuICBvcHRpb25zOiBNaXNzaW5nU291cmNlTGlzdGVuZXJPcHRpb25zLFxuKTogUnVsZS5SdWxlTGlzdGVuZXIgPT4ge1xuICBjb25zdCB7IGRpcmVjdG9yeSwgZmlsZUJhc2VuYW1lLCBzdWZmaXggfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHNvdXJjZUJhc2VuYW1lID0gZmlsZUJhc2VuYW1lLnNsaWNlKFxuICAgIDAsXG4gICAgLWAuJHtzdWZmaXh9JHtUWVBFU0NSSVBUX0VYVEVOU0lPTn1gLmxlbmd0aCxcbiAgKTtcblxuICBpZiAoc291cmNlQmFzZW5hbWUubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3Qgc291cmNlRmlsZSA9IGAke3NvdXJjZUJhc2VuYW1lfSR7VFlQRVNDUklQVF9FWFRFTlNJT059YDtcblxuICBpZiAoZXhpc3RzU3luYyhwYXRoLmpvaW4oZGlyZWN0b3J5LCBzb3VyY2VGaWxlKSkpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICByZXR1cm4ge1xuICAgIFByb2dyYW0obm9kZSk6IHZvaWQge1xuICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICBkYXRhOiB7IHNvdXJjZUZpbGUgfSxcbiAgICAgICAgbWVzc2FnZUlkOiBcIm1pc3NpbmdTb3VyY2VcIixcbiAgICAgICAgbm9kZSxcbiAgICAgIH0pO1xuICAgIH0sXG4gIH07XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBhIGZpbGUgc2hvdWxkIGJlIGxpbnRlZC5cbiAqIEBwYXJhbSBmaWxlbmFtZSBJbnB1dCBmaWxlbmFtZSB2YWx1ZS5cbiAqIEBwYXJhbSBvcHRpb25zIElucHV0IG9wdGlvbnMgdmFsdWUuXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIGZpbGUgc2hvdWxkIGJlIGxpbnRlZC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBvayA9IHNob3VsZExpbnRGaWxlKGZpbGVuYW1lLCBvcHRpb25zKTtcbiAqIGBgYFxuICovXG5jb25zdCBzaG91bGRMaW50RmlsZSA9IChcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgb3B0aW9uczogUmVxdWlyZVRlc3RDb21wYW5pb25TdGF0ZSxcbik6IGJvb2xlYW4gPT4ge1xuICBjb25zdCB7IGVuZm9yY2VJbiwgaWdub3JlUGF0dGVybnMgfSA9IG9wdGlvbnM7XG5cbiAgaWYgKCFpc0xpbnRhYmxlRmlsZW5hbWUoZmlsZW5hbWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCFpc1R5cGVTY3JpcHRGaWxlKGZpbGVuYW1lKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghaXNQYXRoTWF0Y2goZmlsZW5hbWUsIGVuZm9yY2VJbikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gIWlzUGF0aE1hdGNoKGZpbGVuYW1lLCBpZ25vcmVQYXR0ZXJucyk7XG59O1xuXG4vKipcbiAqIEJ1aWxkcyBhIGxpc3RlbmVyIGZvciBhIHNwZWNpZmljIGZpbGVuYW1lLlxuICogQHBhcmFtIGNvbnRleHQgSW5wdXQgY29udGV4dCB2YWx1ZS5cbiAqIEBwYXJhbSBmaWxlbmFtZSBJbnB1dCBmaWxlbmFtZSB2YWx1ZS5cbiAqIEBwYXJhbSBvcHRpb25zIElucHV0IG9wdGlvbnMgdmFsdWUuXG4gKiBAcmV0dXJucyBSdWxlIGxpc3RlbmVyIGZvciB0aGUgZmlsZW5hbWUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbGlzdGVuZXIgPSBidWlsZExpc3RlbmVyRm9yRmlsZW5hbWUoY29udGV4dCwgZmlsZW5hbWUsIG9wdGlvbnMpO1xuICogYGBgXG4gKi9cbmNvbnN0IGJ1aWxkTGlzdGVuZXJGb3JGaWxlbmFtZSA9IChcbiAgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCxcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgb3B0aW9uczogUmVxdWlyZVRlc3RDb21wYW5pb25TdGF0ZSxcbik6IFJ1bGUuUnVsZUxpc3RlbmVyID0+IHtcbiAgaWYgKCFzaG91bGRMaW50RmlsZShmaWxlbmFtZSwgb3B0aW9ucykpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCBmaWxlQmFzZW5hbWUgPSBwYXRoLmJhc2VuYW1lKGZpbGVuYW1lKTtcbiAgY29uc3QgZGlyZWN0b3J5ID0gcGF0aC5kaXJuYW1lKGZpbGVuYW1lKTtcbiAgY29uc3QgeyB0ZXN0U3VmZml4ZXMgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHRlc3RTdWZmaXggPSBnZXRUZXN0U3VmZml4KGZpbGVCYXNlbmFtZSwgdGVzdFN1ZmZpeGVzKTtcblxuICBpZiAodGVzdFN1ZmZpeCAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIGJ1aWxkTWlzc2luZ1NvdXJjZUxpc3RlbmVyKGNvbnRleHQsIHtcbiAgICAgIGRpcmVjdG9yeSxcbiAgICAgIGZpbGVCYXNlbmFtZSxcbiAgICAgIHN1ZmZpeDogdGVzdFN1ZmZpeCxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBidWlsZE1pc3NpbmdUZXN0TGlzdGVuZXIoY29udGV4dCwge1xuICAgIGRpcmVjdG9yeSxcbiAgICBmaWxlQmFzZW5hbWUsXG4gICAgdGVzdFN1ZmZpeGVzLFxuICB9KTtcbn07XG5cbmV4cG9ydCB7IGJ1aWxkTGlzdGVuZXJGb3JGaWxlbmFtZSB9O1xuIl19
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZS10ZXN0LWNvbXBhbmlvbi1saXN0ZW5lcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL3Rlc3RpbmcvcmVxdWlyZS10ZXN0LWNvbXBhbmlvbi9yZXF1aXJlLXRlc3QtY29tcGFuaW9uLWxpc3RlbmVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBSW5DLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixvQkFBb0IsR0FDckIsTUFBTSxrQ0FBa0MsQ0FBQztBQWMxQzs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLGFBQWEsR0FBRyxDQUNwQixZQUFvQixFQUNwQixZQUFzQixFQUNGLEVBQUUsQ0FDdEIsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQzNCLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxNQUFNLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQyxDQUMzRCxDQUFDO0FBRUo7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSwwQkFBMEIsR0FBRyxDQUNqQyxPQUF5QixFQUN6QixPQUFxQyxFQUNsQixFQUFFO0lBQ3JCLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUNwRCxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUN2QyxDQUFDLEVBQ0QsQ0FBQyxJQUFJLE1BQU0sR0FBRyxvQkFBb0IsRUFBRSxDQUFDLE1BQU0sQ0FDNUMsQ0FBQztJQUVGLElBQUksY0FBYyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNoQyxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxHQUFHLGNBQWMsR0FBRyxvQkFBb0IsRUFBRSxDQUFDO0lBRTlELElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNqRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxDQUFDLElBQUk7WUFDVixPQUFPLENBQUMsTUFBTSxDQUFDO2dCQUNiLElBQUksRUFBRSxFQUFFLFVBQVUsRUFBRTtnQkFDcEIsU0FBUyxFQUFFLGVBQWU7Z0JBQzFCLElBQUk7YUFDTCxDQUFDLENBQUM7UUFDTCxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLGNBQWMsR0FBRyxDQUNyQixRQUFnQixFQUNoQixPQUFrQyxFQUNsQyxhQUFxQixFQUNaLEVBQUU7SUFDWCxNQUFNLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUU5QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUNsQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUNoQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUNyRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxPQUFPLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDL0QsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLHdCQUF3QixHQUFHLENBQy9CLE9BQXlCLEVBQ3pCLFFBQWdCLEVBQ2hCLE9BQWtDLEVBQ2xDLGdCQUF3QixHQUFHLEVBQUUsRUFDVixFQUFFO0lBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQ3RELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QyxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ2pDLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFFN0QsSUFBSSxVQUFVLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMxQixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxPQUFPLDBCQUEwQixDQUFDLE9BQU8sRUFBRTtRQUN6QyxTQUFTO1FBQ1QsWUFBWTtRQUNaLE1BQU0sRUFBRSxVQUFVO0tBQ25CLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGN3ZCB9IGZyb20gXCJub2RlOnByb2Nlc3NcIjtcblxuaW1wb3J0IHR5cGUgeyBSZXF1aXJlVGVzdENvbXBhbmlvblN0YXRlIH0gZnJvbSBcIi4vcmVxdWlyZS10ZXN0LWNvbXBhbmlvbi1vcHRpb25zXCI7XG5cbmltcG9ydCB7XG4gIGlzTGludGFibGVGaWxlbmFtZSxcbiAgaXNQYXRoTWF0Y2gsXG4gIGlzVHlwZVNjcmlwdEZpbGUsXG4gIFRZUEVTQ1JJUFRfRVhURU5TSU9OLFxufSBmcm9tIFwiLi9yZXF1aXJlLXRlc3QtY29tcGFuaW9uLW9wdGlvbnNcIjtcblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIE1pc3NpbmdTb3VyY2VMaXN0ZW5lck9wdGlvbnMge1xuICAvKiogRGlyZWN0b3J5IGZpZWxkIHZhbHVlLiAqL1xuICBkaXJlY3Rvcnk6IHN0cmluZztcblxuICAvKiogQmFzZW5hbWUgZmllbGQgdmFsdWUuICovXG4gIGZpbGVCYXNlbmFtZTogc3RyaW5nO1xuXG4gIC8qKiBTdWZmaXggZmllbGQgdmFsdWUuICovXG4gIHN1ZmZpeDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIHRlc3Qgc3VmZml4IGZvciBhIGZpbGUgbmFtZSB3aGVuIHByZXNlbnQuXG4gKiBAcGFyYW0gZmlsZUJhc2VuYW1lIElucHV0IGJhc2VuYW1lIHZhbHVlLlxuICogQHBhcmFtIHRlc3RTdWZmaXhlcyBJbnB1dCB0ZXN0U3VmZml4ZXMgdmFsdWUuXG4gKiBAcmV0dXJucyBNYXRjaGVkIHRlc3Qgc3VmZml4IHdoZW4gcHJlc2VudC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzdWZmaXggPSBnZXRUZXN0U3VmZml4KFwiZmVhdHVyZS5zcGVjLnRzXCIsIFtcInNwZWNcIl0pO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFRlc3RTdWZmaXggPSAoXG4gIGZpbGVCYXNlbmFtZTogc3RyaW5nLFxuICB0ZXN0U3VmZml4ZXM6IHN0cmluZ1tdLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+XG4gIHRlc3RTdWZmaXhlcy5maW5kKChzdWZmaXgpID0+XG4gICAgZmlsZUJhc2VuYW1lLmVuZHNXaXRoKGAuJHtzdWZmaXh9JHtUWVBFU0NSSVBUX0VYVEVOU0lPTn1gKSxcbiAgKTtcblxuLyoqXG4gKiBCdWlsZHMgYSBsaXN0ZW5lciB0aGF0IHJlcG9ydHMgbWlzc2luZyBzb3VyY2UgZmlsZXMuXG4gKiBAcGFyYW0gY29udGV4dCBJbnB1dCBjb250ZXh0IHZhbHVlLlxuICogQHBhcmFtIG9wdGlvbnMgSW5wdXQgb3B0aW9ucyB2YWx1ZS5cbiAqIEByZXR1cm5zIFJ1bGUgbGlzdGVuZXIgZm9yIG1pc3Npbmcgc291cmNlcy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBsaXN0ZW5lciA9IGJ1aWxkTWlzc2luZ1NvdXJjZUxpc3RlbmVyKGNvbnRleHQsIG9wdGlvbnMpO1xuICogYGBgXG4gKi9cbmNvbnN0IGJ1aWxkTWlzc2luZ1NvdXJjZUxpc3RlbmVyID0gKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuICBvcHRpb25zOiBNaXNzaW5nU291cmNlTGlzdGVuZXJPcHRpb25zLFxuKTogUnVsZS5SdWxlTGlzdGVuZXIgPT4ge1xuICBjb25zdCB7IGRpcmVjdG9yeSwgZmlsZUJhc2VuYW1lLCBzdWZmaXggfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHNvdXJjZUJhc2VuYW1lID0gZmlsZUJhc2VuYW1lLnNsaWNlKFxuICAgIDAsXG4gICAgLWAuJHtzdWZmaXh9JHtUWVBFU0NSSVBUX0VYVEVOU0lPTn1gLmxlbmd0aCxcbiAgKTtcblxuICBpZiAoc291cmNlQmFzZW5hbWUubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3Qgc291cmNlRmlsZSA9IGAke3NvdXJjZUJhc2VuYW1lfSR7VFlQRVNDUklQVF9FWFRFTlNJT059YDtcblxuICBpZiAoZXhpc3RzU3luYyhwYXRoLmpvaW4oZGlyZWN0b3J5LCBzb3VyY2VGaWxlKSkpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICByZXR1cm4ge1xuICAgIFByb2dyYW0obm9kZSk6IHZvaWQge1xuICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICBkYXRhOiB7IHNvdXJjZUZpbGUgfSxcbiAgICAgICAgbWVzc2FnZUlkOiBcIm1pc3NpbmdTb3VyY2VcIixcbiAgICAgICAgbm9kZSxcbiAgICAgIH0pO1xuICAgIH0sXG4gIH07XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBhIGZpbGUgc2hvdWxkIGJlIGxpbnRlZC5cbiAqIEBwYXJhbSBmaWxlbmFtZSBJbnB1dCBmaWxlbmFtZSB2YWx1ZS5cbiAqIEBwYXJhbSBvcHRpb25zIElucHV0IG9wdGlvbnMgdmFsdWUuXG4gKiBAcGFyYW0gYmFzZURpcmVjdG9yeSBJbnB1dCBiYXNlRGlyZWN0b3J5IHZhbHVlLlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBmaWxlIHNob3VsZCBiZSBsaW50ZWQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgb2sgPSBzaG91bGRMaW50RmlsZShmaWxlbmFtZSwgb3B0aW9ucyk7XG4gKiBgYGBcbiAqL1xuY29uc3Qgc2hvdWxkTGludEZpbGUgPSAoXG4gIGZpbGVuYW1lOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFJlcXVpcmVUZXN0Q29tcGFuaW9uU3RhdGUsXG4gIGJhc2VEaXJlY3Rvcnk6IHN0cmluZyxcbik6IGJvb2xlYW4gPT4ge1xuICBjb25zdCB7IGVuZm9yY2VJbiwgaWdub3JlUGF0dGVybnMgfSA9IG9wdGlvbnM7XG5cbiAgaWYgKCFpc0xpbnRhYmxlRmlsZW5hbWUoZmlsZW5hbWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCFpc1R5cGVTY3JpcHRGaWxlKGZpbGVuYW1lKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghaXNQYXRoTWF0Y2goZmlsZW5hbWUsIGVuZm9yY2VJbiwgYmFzZURpcmVjdG9yeSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gIWlzUGF0aE1hdGNoKGZpbGVuYW1lLCBpZ25vcmVQYXR0ZXJucywgYmFzZURpcmVjdG9yeSk7XG59O1xuXG4vKipcbiAqIEJ1aWxkcyBhIGxpc3RlbmVyIGZvciBhIHNwZWNpZmljIGZpbGVuYW1lLlxuICogQHBhcmFtIGNvbnRleHQgSW5wdXQgY29udGV4dCB2YWx1ZS5cbiAqIEBwYXJhbSBmaWxlbmFtZSBJbnB1dCBmaWxlbmFtZSB2YWx1ZS5cbiAqIEBwYXJhbSBvcHRpb25zIElucHV0IG9wdGlvbnMgdmFsdWUuXG4gKiBAcGFyYW0gYmFzZURpcmVjdG9yeSBJbnB1dCBiYXNlRGlyZWN0b3J5IHZhbHVlLlxuICogQHJldHVybnMgUnVsZSBsaXN0ZW5lciBmb3IgdGhlIGZpbGVuYW1lLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGxpc3RlbmVyID0gYnVpbGRMaXN0ZW5lckZvckZpbGVuYW1lKGNvbnRleHQsIGZpbGVuYW1lLCBvcHRpb25zKTtcbiAqIGBgYFxuICovXG5jb25zdCBidWlsZExpc3RlbmVyRm9yRmlsZW5hbWUgPSAoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIGZpbGVuYW1lOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFJlcXVpcmVUZXN0Q29tcGFuaW9uU3RhdGUsXG4gIGJhc2VEaXJlY3Rvcnk6IHN0cmluZyA9IGN3ZCgpLFxuKTogUnVsZS5SdWxlTGlzdGVuZXIgPT4ge1xuICBpZiAoIXNob3VsZExpbnRGaWxlKGZpbGVuYW1lLCBvcHRpb25zLCBiYXNlRGlyZWN0b3J5KSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IGZpbGVCYXNlbmFtZSA9IHBhdGguYmFzZW5hbWUoZmlsZW5hbWUpO1xuICBjb25zdCBkaXJlY3RvcnkgPSBwYXRoLmRpcm5hbWUoZmlsZW5hbWUpO1xuICBjb25zdCB7IHRlc3RTdWZmaXhlcyB9ID0gb3B0aW9ucztcbiAgY29uc3QgdGVzdFN1ZmZpeCA9IGdldFRlc3RTdWZmaXgoZmlsZUJhc2VuYW1lLCB0ZXN0U3VmZml4ZXMpO1xuXG4gIGlmICh0ZXN0U3VmZml4ID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICByZXR1cm4gYnVpbGRNaXNzaW5nU291cmNlTGlzdGVuZXIoY29udGV4dCwge1xuICAgIGRpcmVjdG9yeSxcbiAgICBmaWxlQmFzZW5hbWUsXG4gICAgc3VmZml4OiB0ZXN0U3VmZml4LFxuICB9KTtcbn07XG5cbmV4cG9ydCB7IGJ1aWxkTGlzdGVuZXJGb3JGaWxlbmFtZSB9O1xuIl19
@@ -43,12 +43,13 @@ declare const getOptions: (options: readonly unknown[]) => RequireTestCompanionS
43
43
  * Checks isPathMatch.
44
44
  * @param filename Input filename value.
45
45
  * @param patterns Input patterns value.
46
+ * @param baseDirectory Input baseDirectory value.
46
47
  * @returns Return value output.
47
48
  * @example
48
49
  * ```typescript
49
50
  * isPathMatch();
50
51
  * ```
51
52
  */
52
- declare const isPathMatch: (filename: string, patterns: string[]) => boolean;
53
+ declare const isPathMatch: (filename: string, patterns: string[], baseDirectory: string) => boolean;
53
54
  export { getOptions, isLintableFilename, isPathMatch, isTypeScriptFile, type RequireTestCompanionState, TYPESCRIPT_EXTENSION, };
54
55
  //# sourceMappingURL=require-test-companion-options.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"require-test-companion-options.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/require-test-companion/require-test-companion-options.ts"],"names":[],"mappings":"AAeA,6DAA6D;AAC7D,QAAA,MAAM,oBAAoB,QAAQ,CAAC;AAEnC,qCAAqC;AACrC,UAAU,yBAAyB;IACjC,6BAA6B;IAC7B,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB,kCAAkC;IAClC,cAAc,EAAE,MAAM,EAAE,CAAC;IAEzB,gCAAgC;IAChC,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,QAAA,MAAM,kBAAkB,GAAI,UAAU,MAAM,KAAG,OACG,CAAC;AAEnD;;;;;;;;GAQG;AACH,QAAA,MAAM,gBAAgB,GAAI,UAAU,MAAM,KAAG,OAC2B,CAAC;AA+BzE;;;;;;;;GAQG;AACH,QAAA,MAAM,UAAU,GAAI,SAAS,SAAS,OAAO,EAAE,KAAG,yBAcjD,CAAC;AA0BF;;;;;;;;;GASG;AACH,QAAA,MAAM,WAAW,GAAI,UAAU,MAAM,EAAE,UAAU,MAAM,EAAE,KAAG,OAc3D,CAAC;AAEF,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,gBAAgB,EAChB,KAAK,yBAAyB,EAC9B,oBAAoB,GACrB,CAAC"}
1
+ {"version":3,"file":"require-test-companion-options.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/require-test-companion/require-test-companion-options.ts"],"names":[],"mappings":"AAcA,6DAA6D;AAC7D,QAAA,MAAM,oBAAoB,QAAQ,CAAC;AAEnC,qCAAqC;AACrC,UAAU,yBAAyB;IACjC,6BAA6B;IAC7B,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB,kCAAkC;IAClC,cAAc,EAAE,MAAM,EAAE,CAAC;IAEzB,gCAAgC;IAChC,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,QAAA,MAAM,kBAAkB,GAAI,UAAU,MAAM,KAAG,OACG,CAAC;AAEnD;;;;;;;;GAQG;AACH,QAAA,MAAM,gBAAgB,GAAI,UAAU,MAAM,KAAG,OAC2B,CAAC;AA+BzE;;;;;;;;GAQG;AACH,QAAA,MAAM,UAAU,GAAI,SAAS,SAAS,OAAO,EAAE,KAAG,yBAcjD,CAAC;AA6BF;;;;;;;;;;GAUG;AACH,QAAA,MAAM,WAAW,GACf,UAAU,MAAM,EAChB,UAAU,MAAM,EAAE,EAClB,eAAe,MAAM,KACpB,OAcF,CAAC;AAEF,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,gBAAgB,EAChB,KAAK,yBAAyB,EAC9B,oBAAoB,GACrB,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import { minimatch } from "minimatch";
2
2
  import path from "node:path";
3
- import { cwd } from "node:process";
4
3
  /** Default value used by this module. */
5
4
  const DEFAULT_TEST_SUFFIXES = ["spec", "test"];
6
5
  /** Default value used by this module. */
@@ -72,13 +71,14 @@ const getOptions = (options) => {
72
71
  /**
73
72
  * Normalizes normalizeRelativePath.
74
73
  * @param filename Input filename value.
74
+ * @param baseDirectory Input baseDirectory value.
75
75
  * @returns Return value output.
76
76
  * @example
77
77
  * ```typescript
78
78
  * normalizeRelativePath();
79
79
  * ```
80
80
  */
81
- const normalizeRelativePath = (filename) => path.relative(cwd(), filename).split(path.sep).join("/");
81
+ const normalizeRelativePath = (filename, baseDirectory) => path.relative(baseDirectory, filename).split(path.sep).join("/");
82
82
  /**
83
83
  * Normalizes normalizePattern.
84
84
  * @param pattern Input pattern value.
@@ -93,21 +93,22 @@ const normalizePattern = (pattern) => pattern.startsWith("/") ? `**${pattern}` :
93
93
  * Checks isPathMatch.
94
94
  * @param filename Input filename value.
95
95
  * @param patterns Input patterns value.
96
+ * @param baseDirectory Input baseDirectory value.
96
97
  * @returns Return value output.
97
98
  * @example
98
99
  * ```typescript
99
100
  * isPathMatch();
100
101
  * ```
101
102
  */
102
- const isPathMatch = (filename, patterns) => {
103
+ const isPathMatch = (filename, patterns, baseDirectory) => {
103
104
  if (patterns.length === 0) {
104
105
  return false;
105
106
  }
106
- const relativePath = normalizeRelativePath(filename);
107
+ const relativePath = normalizeRelativePath(filename, baseDirectory);
107
108
  if (relativePath.startsWith("..") || path.isAbsolute(relativePath)) {
108
109
  return false;
109
110
  }
110
111
  return patterns.some((pattern) => minimatch(relativePath, normalizePattern(pattern), { dot: true }));
111
112
  };
112
113
  export { getOptions, isLintableFilename, isPathMatch, isTypeScriptFile, TYPESCRIPT_EXTENSION, };
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZS10ZXN0LWNvbXBhbmlvbi1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RvbWFpbi90ZXN0aW5nL3JlcXVpcmUtdGVzdC1jb21wYW5pb24vcmVxdWlyZS10ZXN0LWNvbXBhbmlvbi1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFJbkMseUNBQXlDO0FBQ3pDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFVLENBQUM7QUFFeEQseUNBQXlDO0FBQ3pDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFVLENBQUM7QUFFbEUsMERBQTBEO0FBQzFELE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxRQUFRLENBQVUsQ0FBQztBQUUvQyw2REFBNkQ7QUFDN0QsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLENBQUM7QUFjbkM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLGtCQUFrQixHQUFHLENBQUMsUUFBZ0IsRUFBVyxFQUFFLENBQ3ZELFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFbkQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLENBQUMsUUFBZ0IsRUFBVyxFQUFFLENBQ3JELFFBQVEsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFekU7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxhQUFhLEdBQUcsQ0FDcEIsS0FBcUUsRUFDckUsUUFBMkIsRUFDakIsRUFBRTtJQUNaLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sS0FBSzthQUNULE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBbUIsRUFBRSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQzthQUM3RCxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUM1QixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdCLE9BQU8sT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7QUFDdkIsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQTJCLEVBQTZCLEVBQUU7SUFDNUUsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBNEMsQ0FBQztJQUV6RSxPQUFPO1FBQ0wsU0FBUyxFQUFFLGFBQWEsQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixDQUFDO1FBQ25FLGNBQWMsRUFBRSxhQUFhLENBQzNCLFVBQVUsRUFBRSxjQUFjLEVBQzFCLHVCQUF1QixDQUN4QjtRQUNELFlBQVksRUFBRSxhQUFhLENBQ3pCLFVBQVUsRUFBRSxZQUFZLEVBQ3hCLHFCQUFxQixDQUN0QjtLQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxRQUFnQixFQUFVLEVBQUUsQ0FDekQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUUzRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxPQUFlLEVBQVUsRUFBRSxDQUNuRCxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFFckQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxXQUFXLEdBQUcsQ0FBQyxRQUFnQixFQUFFLFFBQWtCLEVBQVcsRUFBRTtJQUNwRSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQUcscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFckQsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUNuRSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUMvQixTQUFTLENBQUMsWUFBWSxFQUFFLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQ2xFLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixPQUFPLEVBQ0wsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixXQUFXLEVBQ1gsZ0JBQWdCLEVBRWhCLG9CQUFvQixHQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWluaW1hdGNoIH0gZnJvbSBcIm1pbmltYXRjaFwiO1xuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSBcIm5vZGU6cHJvY2Vzc1wiO1xuXG5pbXBvcnQgdHlwZSB7IFJlcXVpcmVUZXN0Q29tcGFuaW9uT3B0aW9ucyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKiBEZWZhdWx0IHZhbHVlIHVzZWQgYnkgdGhpcyBtb2R1bGUuICovXG5jb25zdCBERUZBVUxUX1RFU1RfU1VGRklYRVMgPSBbXCJzcGVjXCIsIFwidGVzdFwiXSBhcyBjb25zdDtcblxuLyoqIERlZmF1bHQgdmFsdWUgdXNlZCBieSB0aGlzIG1vZHVsZS4gKi9cbmNvbnN0IERFRkFVTFRfSUdOT1JFX1BBVFRFUk5TID0gW1wiLyouZC50c1wiLCBcIi9pbmRleC50c1wiXSBhcyBjb25zdDtcblxuLyoqIERlZmF1bHQgZm9sZGVycyB3aGVyZSB0ZXN0IGNvbXBhbmlvbnMgYXJlIGVuZm9yY2VkLiAqL1xuY29uc3QgREVGQVVMVF9FTkZPUkNFX0lOID0gW1wic3JjLyoqXCJdIGFzIGNvbnN0O1xuXG4vKiogRmlsZSBleHRlbnNpb24gdXNlZCB0byBkZXRlY3QgVHlwZVNjcmlwdCBzb3VyY2UgZmlsZXMuICovXG5jb25zdCBUWVBFU0NSSVBUX0VYVEVOU0lPTiA9IFwiLnRzXCI7XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBSZXF1aXJlVGVzdENvbXBhbmlvblN0YXRlIHtcbiAgLyoqIEVuZm9yY2VJbiBmaWVsZCB2YWx1ZS4gKi9cbiAgZW5mb3JjZUluOiBzdHJpbmdbXTtcblxuICAvKiogSWdub3JlUGF0dGVybnMgZmllbGQgdmFsdWUuICovXG4gIGlnbm9yZVBhdHRlcm5zOiBzdHJpbmdbXTtcblxuICAvKiogVGVzdFN1ZmZpeGVzIGZpZWxkIHZhbHVlLiAqL1xuICB0ZXN0U3VmZml4ZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENoZWNrcyBpc0xpbnRhYmxlRmlsZW5hbWUuXG4gKiBAcGFyYW0gZmlsZW5hbWUgSW5wdXQgZmlsZW5hbWUgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGlzTGludGFibGVGaWxlbmFtZSgpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzTGludGFibGVGaWxlbmFtZSA9IChmaWxlbmFtZTogc3RyaW5nKTogYm9vbGVhbiA9PlxuICBmaWxlbmFtZS5sZW5ndGggPiAwICYmIHBhdGguaXNBYnNvbHV0ZShmaWxlbmFtZSk7XG5cbi8qKlxuICogQ2hlY2tzIGlzVHlwZVNjcmlwdEZpbGUuXG4gKiBAcGFyYW0gZmlsZW5hbWUgSW5wdXQgZmlsZW5hbWUgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGlzVHlwZVNjcmlwdEZpbGUoKTtcbiAqIGBgYFxuICovXG5jb25zdCBpc1R5cGVTY3JpcHRGaWxlID0gKGZpbGVuYW1lOiBzdHJpbmcpOiBib29sZWFuID0+XG4gIGZpbGVuYW1lLmVuZHNXaXRoKFRZUEVTQ1JJUFRfRVhURU5TSU9OKSAmJiAhZmlsZW5hbWUuZW5kc1dpdGgoXCIuZC50c1wiKTtcblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgcnVsZSBvcHRpb24gaW50byBhIHN0cmluZyBsaXN0LlxuICogQHBhcmFtIHZhbHVlIElucHV0IHZhbHVlIHZhbHVlLlxuICogQHBhcmFtIGRlZmF1bHRzIElucHV0IGRlZmF1bHRzIHZhbHVlLlxuICogQHJldHVybnMgTm9ybWFsaXplZCBsaXN0IG9mIHN0cmluZ3MuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbGlzdCA9IG5vcm1hbGl6ZUxpc3QoXCJzcmMvKipcIiwgW1wic3JjLyoqXCJdKTtcbiAqIGBgYFxuICovXG5jb25zdCBub3JtYWxpemVMaXN0ID0gKFxuICB2YWx1ZTogUmVxdWlyZVRlc3RDb21wYW5pb25PcHRpb25zW2tleW9mIFJlcXVpcmVUZXN0Q29tcGFuaW9uT3B0aW9uc10sXG4gIGRlZmF1bHRzOiByZWFkb25seSBzdHJpbmdbXSxcbik6IHN0cmluZ1tdID0+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gICAgICAuZmlsdGVyKChlbnRyeSk6IGVudHJ5IGlzIHN0cmluZyA9PiB0eXBlb2YgZW50cnkgPT09IFwic3RyaW5nXCIpXG4gICAgICAubWFwKChlbnRyeSkgPT4gZW50cnkudHJpbSgpKVxuICAgICAgLmZpbHRlcigoZW50cnkpID0+IGVudHJ5Lmxlbmd0aCA+IDApO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgIGNvbnN0IHRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG4gICAgcmV0dXJuIHRyaW1tZWQubGVuZ3RoID09PSAwID8gW10gOiBbdHJpbW1lZF07XG4gIH1cblxuICByZXR1cm4gWy4uLmRlZmF1bHRzXTtcbn07XG5cbi8qKlxuICogR2V0cyBnZXRPcHRpb25zLlxuICogQHBhcmFtIG9wdGlvbnMgSW5wdXQgb3B0aW9ucyB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZ2V0T3B0aW9ucygpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldE9wdGlvbnMgPSAob3B0aW9uczogcmVhZG9ubHkgdW5rbm93bltdKTogUmVxdWlyZVRlc3RDb21wYW5pb25TdGF0ZSA9PiB7XG4gIGNvbnN0IHJhd09wdGlvbnMgPSBvcHRpb25zWzBdIGFzIFJlcXVpcmVUZXN0Q29tcGFuaW9uT3B0aW9ucyB8IHVuZGVmaW5lZDtcblxuICByZXR1cm4ge1xuICAgIGVuZm9yY2VJbjogbm9ybWFsaXplTGlzdChyYXdPcHRpb25zPy5lbmZvcmNlSW4sIERFRkFVTFRfRU5GT1JDRV9JTiksXG4gICAgaWdub3JlUGF0dGVybnM6IG5vcm1hbGl6ZUxpc3QoXG4gICAgICByYXdPcHRpb25zPy5pZ25vcmVQYXR0ZXJucyxcbiAgICAgIERFRkFVTFRfSUdOT1JFX1BBVFRFUk5TLFxuICAgICksXG4gICAgdGVzdFN1ZmZpeGVzOiBub3JtYWxpemVMaXN0KFxuICAgICAgcmF3T3B0aW9ucz8udGVzdFN1ZmZpeGVzLFxuICAgICAgREVGQVVMVF9URVNUX1NVRkZJWEVTLFxuICAgICksXG4gIH07XG59O1xuXG4vKipcbiAqIE5vcm1hbGl6ZXMgbm9ybWFsaXplUmVsYXRpdmVQYXRoLlxuICogQHBhcmFtIGZpbGVuYW1lIElucHV0IGZpbGVuYW1lIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBub3JtYWxpemVSZWxhdGl2ZVBhdGgoKTtcbiAqIGBgYFxuICovXG5jb25zdCBub3JtYWxpemVSZWxhdGl2ZVBhdGggPSAoZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyA9PlxuICBwYXRoLnJlbGF0aXZlKGN3ZCgpLCBmaWxlbmFtZSkuc3BsaXQocGF0aC5zZXApLmpvaW4oXCIvXCIpO1xuXG4vKipcbiAqIE5vcm1hbGl6ZXMgbm9ybWFsaXplUGF0dGVybi5cbiAqIEBwYXJhbSBwYXR0ZXJuIElucHV0IHBhdHRlcm4gdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIG5vcm1hbGl6ZVBhdHRlcm4oKTtcbiAqIGBgYFxuICovXG5jb25zdCBub3JtYWxpemVQYXR0ZXJuID0gKHBhdHRlcm46IHN0cmluZyk6IHN0cmluZyA9PlxuICBwYXR0ZXJuLnN0YXJ0c1dpdGgoXCIvXCIpID8gYCoqJHtwYXR0ZXJufWAgOiBwYXR0ZXJuO1xuXG4vKipcbiAqIENoZWNrcyBpc1BhdGhNYXRjaC5cbiAqIEBwYXJhbSBmaWxlbmFtZSBJbnB1dCBmaWxlbmFtZSB2YWx1ZS5cbiAqIEBwYXJhbSBwYXR0ZXJucyBJbnB1dCBwYXR0ZXJucyB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaXNQYXRoTWF0Y2goKTtcbiAqIGBgYFxuICovXG5jb25zdCBpc1BhdGhNYXRjaCA9IChmaWxlbmFtZTogc3RyaW5nLCBwYXR0ZXJuczogc3RyaW5nW10pOiBib29sZWFuID0+IHtcbiAgaWYgKHBhdHRlcm5zLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHJlbGF0aXZlUGF0aCA9IG5vcm1hbGl6ZVJlbGF0aXZlUGF0aChmaWxlbmFtZSk7XG5cbiAgaWYgKHJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKFwiLi5cIikgfHwgcGF0aC5pc0Fic29sdXRlKHJlbGF0aXZlUGF0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gcGF0dGVybnMuc29tZSgocGF0dGVybikgPT5cbiAgICBtaW5pbWF0Y2gocmVsYXRpdmVQYXRoLCBub3JtYWxpemVQYXR0ZXJuKHBhdHRlcm4pLCB7IGRvdDogdHJ1ZSB9KSxcbiAgKTtcbn07XG5cbmV4cG9ydCB7XG4gIGdldE9wdGlvbnMsXG4gIGlzTGludGFibGVGaWxlbmFtZSxcbiAgaXNQYXRoTWF0Y2gsXG4gIGlzVHlwZVNjcmlwdEZpbGUsXG4gIHR5cGUgUmVxdWlyZVRlc3RDb21wYW5pb25TdGF0ZSxcbiAgVFlQRVNDUklQVF9FWFRFTlNJT04sXG59O1xuIl19
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZS10ZXN0LWNvbXBhbmlvbi1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RvbWFpbi90ZXN0aW5nL3JlcXVpcmUtdGVzdC1jb21wYW5pb24vcmVxdWlyZS10ZXN0LWNvbXBhbmlvbi1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBSTdCLHlDQUF5QztBQUN6QyxNQUFNLHFCQUFxQixHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBVSxDQUFDO0FBRXhELHlDQUF5QztBQUN6QyxNQUFNLHVCQUF1QixHQUFHLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBVSxDQUFDO0FBRWxFLDBEQUEwRDtBQUMxRCxNQUFNLGtCQUFrQixHQUFHLENBQUMsUUFBUSxDQUFVLENBQUM7QUFFL0MsNkRBQTZEO0FBQzdELE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0FBY25DOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFFBQWdCLEVBQVcsRUFBRSxDQUN2RCxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRW5EOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFFBQWdCLEVBQVcsRUFBRSxDQUNyRCxRQUFRLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRXpFOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sYUFBYSxHQUFHLENBQ3BCLEtBQXFFLEVBQ3JFLFFBQTJCLEVBQ2pCLEVBQUU7SUFDWixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QixPQUFPLEtBQUs7YUFDVCxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQW1CLEVBQUUsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUM7YUFDN0QsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDNUIsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QixPQUFPLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLEdBQUcsQ0FBQyxPQUEyQixFQUE2QixFQUFFO0lBQzVFLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQTRDLENBQUM7SUFFekUsT0FBTztRQUNMLFNBQVMsRUFBRSxhQUFhLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQztRQUNuRSxjQUFjLEVBQUUsYUFBYSxDQUMzQixVQUFVLEVBQUUsY0FBYyxFQUMxQix1QkFBdUIsQ0FDeEI7UUFDRCxZQUFZLEVBQUUsYUFBYSxDQUN6QixVQUFVLEVBQUUsWUFBWSxFQUN4QixxQkFBcUIsQ0FDdEI7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxxQkFBcUIsR0FBRyxDQUM1QixRQUFnQixFQUNoQixhQUFxQixFQUNiLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUU5RTs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxPQUFlLEVBQVUsRUFBRSxDQUNuRCxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFFckQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sV0FBVyxHQUFHLENBQ2xCLFFBQWdCLEVBQ2hCLFFBQWtCLEVBQ2xCLGFBQXFCLEVBQ1osRUFBRTtJQUNYLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMxQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLFlBQVksR0FBRyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFFcEUsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUNuRSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUMvQixTQUFTLENBQUMsWUFBWSxFQUFFLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQ2xFLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixPQUFPLEVBQ0wsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixXQUFXLEVBQ1gsZ0JBQWdCLEVBRWhCLG9CQUFvQixHQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWluaW1hdGNoIH0gZnJvbSBcIm1pbmltYXRjaFwiO1xuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuXG5pbXBvcnQgdHlwZSB7IFJlcXVpcmVUZXN0Q29tcGFuaW9uT3B0aW9ucyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKiBEZWZhdWx0IHZhbHVlIHVzZWQgYnkgdGhpcyBtb2R1bGUuICovXG5jb25zdCBERUZBVUxUX1RFU1RfU1VGRklYRVMgPSBbXCJzcGVjXCIsIFwidGVzdFwiXSBhcyBjb25zdDtcblxuLyoqIERlZmF1bHQgdmFsdWUgdXNlZCBieSB0aGlzIG1vZHVsZS4gKi9cbmNvbnN0IERFRkFVTFRfSUdOT1JFX1BBVFRFUk5TID0gW1wiLyouZC50c1wiLCBcIi9pbmRleC50c1wiXSBhcyBjb25zdDtcblxuLyoqIERlZmF1bHQgZm9sZGVycyB3aGVyZSB0ZXN0IGNvbXBhbmlvbnMgYXJlIGVuZm9yY2VkLiAqL1xuY29uc3QgREVGQVVMVF9FTkZPUkNFX0lOID0gW1wic3JjLyoqXCJdIGFzIGNvbnN0O1xuXG4vKiogRmlsZSBleHRlbnNpb24gdXNlZCB0byBkZXRlY3QgVHlwZVNjcmlwdCBzb3VyY2UgZmlsZXMuICovXG5jb25zdCBUWVBFU0NSSVBUX0VYVEVOU0lPTiA9IFwiLnRzXCI7XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBSZXF1aXJlVGVzdENvbXBhbmlvblN0YXRlIHtcbiAgLyoqIEVuZm9yY2VJbiBmaWVsZCB2YWx1ZS4gKi9cbiAgZW5mb3JjZUluOiBzdHJpbmdbXTtcblxuICAvKiogSWdub3JlUGF0dGVybnMgZmllbGQgdmFsdWUuICovXG4gIGlnbm9yZVBhdHRlcm5zOiBzdHJpbmdbXTtcblxuICAvKiogVGVzdFN1ZmZpeGVzIGZpZWxkIHZhbHVlLiAqL1xuICB0ZXN0U3VmZml4ZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENoZWNrcyBpc0xpbnRhYmxlRmlsZW5hbWUuXG4gKiBAcGFyYW0gZmlsZW5hbWUgSW5wdXQgZmlsZW5hbWUgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGlzTGludGFibGVGaWxlbmFtZSgpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzTGludGFibGVGaWxlbmFtZSA9IChmaWxlbmFtZTogc3RyaW5nKTogYm9vbGVhbiA9PlxuICBmaWxlbmFtZS5sZW5ndGggPiAwICYmIHBhdGguaXNBYnNvbHV0ZShmaWxlbmFtZSk7XG5cbi8qKlxuICogQ2hlY2tzIGlzVHlwZVNjcmlwdEZpbGUuXG4gKiBAcGFyYW0gZmlsZW5hbWUgSW5wdXQgZmlsZW5hbWUgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGlzVHlwZVNjcmlwdEZpbGUoKTtcbiAqIGBgYFxuICovXG5jb25zdCBpc1R5cGVTY3JpcHRGaWxlID0gKGZpbGVuYW1lOiBzdHJpbmcpOiBib29sZWFuID0+XG4gIGZpbGVuYW1lLmVuZHNXaXRoKFRZUEVTQ1JJUFRfRVhURU5TSU9OKSAmJiAhZmlsZW5hbWUuZW5kc1dpdGgoXCIuZC50c1wiKTtcblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgcnVsZSBvcHRpb24gaW50byBhIHN0cmluZyBsaXN0LlxuICogQHBhcmFtIHZhbHVlIElucHV0IHZhbHVlIHZhbHVlLlxuICogQHBhcmFtIGRlZmF1bHRzIElucHV0IGRlZmF1bHRzIHZhbHVlLlxuICogQHJldHVybnMgTm9ybWFsaXplZCBsaXN0IG9mIHN0cmluZ3MuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbGlzdCA9IG5vcm1hbGl6ZUxpc3QoXCJzcmMvKipcIiwgW1wic3JjLyoqXCJdKTtcbiAqIGBgYFxuICovXG5jb25zdCBub3JtYWxpemVMaXN0ID0gKFxuICB2YWx1ZTogUmVxdWlyZVRlc3RDb21wYW5pb25PcHRpb25zW2tleW9mIFJlcXVpcmVUZXN0Q29tcGFuaW9uT3B0aW9uc10sXG4gIGRlZmF1bHRzOiByZWFkb25seSBzdHJpbmdbXSxcbik6IHN0cmluZ1tdID0+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gICAgICAuZmlsdGVyKChlbnRyeSk6IGVudHJ5IGlzIHN0cmluZyA9PiB0eXBlb2YgZW50cnkgPT09IFwic3RyaW5nXCIpXG4gICAgICAubWFwKChlbnRyeSkgPT4gZW50cnkudHJpbSgpKVxuICAgICAgLmZpbHRlcigoZW50cnkpID0+IGVudHJ5Lmxlbmd0aCA+IDApO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgIGNvbnN0IHRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG4gICAgcmV0dXJuIHRyaW1tZWQubGVuZ3RoID09PSAwID8gW10gOiBbdHJpbW1lZF07XG4gIH1cblxuICByZXR1cm4gWy4uLmRlZmF1bHRzXTtcbn07XG5cbi8qKlxuICogR2V0cyBnZXRPcHRpb25zLlxuICogQHBhcmFtIG9wdGlvbnMgSW5wdXQgb3B0aW9ucyB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZ2V0T3B0aW9ucygpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldE9wdGlvbnMgPSAob3B0aW9uczogcmVhZG9ubHkgdW5rbm93bltdKTogUmVxdWlyZVRlc3RDb21wYW5pb25TdGF0ZSA9PiB7XG4gIGNvbnN0IHJhd09wdGlvbnMgPSBvcHRpb25zWzBdIGFzIFJlcXVpcmVUZXN0Q29tcGFuaW9uT3B0aW9ucyB8IHVuZGVmaW5lZDtcblxuICByZXR1cm4ge1xuICAgIGVuZm9yY2VJbjogbm9ybWFsaXplTGlzdChyYXdPcHRpb25zPy5lbmZvcmNlSW4sIERFRkFVTFRfRU5GT1JDRV9JTiksXG4gICAgaWdub3JlUGF0dGVybnM6IG5vcm1hbGl6ZUxpc3QoXG4gICAgICByYXdPcHRpb25zPy5pZ25vcmVQYXR0ZXJucyxcbiAgICAgIERFRkFVTFRfSUdOT1JFX1BBVFRFUk5TLFxuICAgICksXG4gICAgdGVzdFN1ZmZpeGVzOiBub3JtYWxpemVMaXN0KFxuICAgICAgcmF3T3B0aW9ucz8udGVzdFN1ZmZpeGVzLFxuICAgICAgREVGQVVMVF9URVNUX1NVRkZJWEVTLFxuICAgICksXG4gIH07XG59O1xuXG4vKipcbiAqIE5vcm1hbGl6ZXMgbm9ybWFsaXplUmVsYXRpdmVQYXRoLlxuICogQHBhcmFtIGZpbGVuYW1lIElucHV0IGZpbGVuYW1lIHZhbHVlLlxuICogQHBhcmFtIGJhc2VEaXJlY3RvcnkgSW5wdXQgYmFzZURpcmVjdG9yeSB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogbm9ybWFsaXplUmVsYXRpdmVQYXRoKCk7XG4gKiBgYGBcbiAqL1xuY29uc3Qgbm9ybWFsaXplUmVsYXRpdmVQYXRoID0gKFxuICBmaWxlbmFtZTogc3RyaW5nLFxuICBiYXNlRGlyZWN0b3J5OiBzdHJpbmcsXG4pOiBzdHJpbmcgPT4gcGF0aC5yZWxhdGl2ZShiYXNlRGlyZWN0b3J5LCBmaWxlbmFtZSkuc3BsaXQocGF0aC5zZXApLmpvaW4oXCIvXCIpO1xuXG4vKipcbiAqIE5vcm1hbGl6ZXMgbm9ybWFsaXplUGF0dGVybi5cbiAqIEBwYXJhbSBwYXR0ZXJuIElucHV0IHBhdHRlcm4gdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIG5vcm1hbGl6ZVBhdHRlcm4oKTtcbiAqIGBgYFxuICovXG5jb25zdCBub3JtYWxpemVQYXR0ZXJuID0gKHBhdHRlcm46IHN0cmluZyk6IHN0cmluZyA9PlxuICBwYXR0ZXJuLnN0YXJ0c1dpdGgoXCIvXCIpID8gYCoqJHtwYXR0ZXJufWAgOiBwYXR0ZXJuO1xuXG4vKipcbiAqIENoZWNrcyBpc1BhdGhNYXRjaC5cbiAqIEBwYXJhbSBmaWxlbmFtZSBJbnB1dCBmaWxlbmFtZSB2YWx1ZS5cbiAqIEBwYXJhbSBwYXR0ZXJucyBJbnB1dCBwYXR0ZXJucyB2YWx1ZS5cbiAqIEBwYXJhbSBiYXNlRGlyZWN0b3J5IElucHV0IGJhc2VEaXJlY3RvcnkgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGlzUGF0aE1hdGNoKCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgaXNQYXRoTWF0Y2ggPSAoXG4gIGZpbGVuYW1lOiBzdHJpbmcsXG4gIHBhdHRlcm5zOiBzdHJpbmdbXSxcbiAgYmFzZURpcmVjdG9yeTogc3RyaW5nLFxuKTogYm9vbGVhbiA9PiB7XG4gIGlmIChwYXR0ZXJucy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCByZWxhdGl2ZVBhdGggPSBub3JtYWxpemVSZWxhdGl2ZVBhdGgoZmlsZW5hbWUsIGJhc2VEaXJlY3RvcnkpO1xuXG4gIGlmIChyZWxhdGl2ZVBhdGguc3RhcnRzV2l0aChcIi4uXCIpIHx8IHBhdGguaXNBYnNvbHV0ZShyZWxhdGl2ZVBhdGgpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHBhdHRlcm5zLnNvbWUoKHBhdHRlcm4pID0+XG4gICAgbWluaW1hdGNoKHJlbGF0aXZlUGF0aCwgbm9ybWFsaXplUGF0dGVybihwYXR0ZXJuKSwgeyBkb3Q6IHRydWUgfSksXG4gICk7XG59O1xuXG5leHBvcnQge1xuICBnZXRPcHRpb25zLFxuICBpc0xpbnRhYmxlRmlsZW5hbWUsXG4gIGlzUGF0aE1hdGNoLFxuICBpc1R5cGVTY3JpcHRGaWxlLFxuICB0eXBlIFJlcXVpcmVUZXN0Q29tcGFuaW9uU3RhdGUsXG4gIFRZUEVTQ1JJUFRfRVhURU5TSU9OLFxufTtcbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/require-test-companion/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAKnC,sEAAsE;AACtE,QAAA,MAAM,wBAAwB,EAAE,IAAI,CAAC,UAsFpC,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
1
+ {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/require-test-companion/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAOnC,sEAAsE;AACtE,QAAA,MAAM,wBAAwB,EAAE,IAAI,CAAC,UAqFpC,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
@@ -1,9 +1,10 @@
1
+ import { cwd } from "node:process";
1
2
  import { buildListenerForFilename } from "./require-test-companion-listeners.js";
2
3
  import { getOptions } from "./require-test-companion-options.js";
3
4
  /** ESLint rule enforcing 1:1 test companions for TypeScript files. */
4
5
  const requireTestCompanionRule = {
5
6
  create(context) {
6
- return buildListenerForFilename(context, context.filename, getOptions(context.options));
7
+ return buildListenerForFilename(context, context.filename, getOptions(context.options), typeof context.cwd === "string" ? context.cwd : cwd());
7
8
  },
8
9
  meta: {
9
10
  defaultOptions: [
@@ -14,20 +15,19 @@ const requireTestCompanionRule = {
14
15
  },
15
16
  ],
16
17
  docs: {
17
- description: "Require a matching test file for each TypeScript file and vice versa.",
18
+ description: "Require each test file to have a matching TypeScript source file.",
18
19
  recommended: false,
19
20
  url: "https://github.com/parloti/eslint-plugin/blob/main/docs/rules/require-test-companion.md",
20
21
  },
21
22
  messages: {
22
- missingSource: "Test file requires a matching source file '{{sourceFile}}' in the same folder.",
23
- missingTest: "Source file requires a matching test file ({{testFiles}}) in the same folder.",
23
+ missingSource: "Test file requires a matching source file '{{sourceFile}}' in the same folder. If this test file is orphaned, move its tests to the correct companion file or delete this orphan file.",
24
24
  },
25
25
  schema: [
26
26
  {
27
27
  additionalProperties: false,
28
28
  properties: {
29
29
  enforceIn: {
30
- description: "Glob patterns that define where source files must have matching test companions.",
30
+ description: "Glob patterns that define where test files must have matching source companions.",
31
31
  oneOf: [
32
32
  {
33
33
  description: "A single glob pattern.",
@@ -42,7 +42,7 @@ const requireTestCompanionRule = {
42
42
  ],
43
43
  },
44
44
  ignorePatterns: {
45
- description: "Glob patterns that should be excluded from the companion-file requirement.",
45
+ description: "Glob patterns that should be excluded from test-to-source companion checks.",
46
46
  oneOf: [
47
47
  {
48
48
  description: "A single ignore glob pattern.",
@@ -79,4 +79,4 @@ const requireTestCompanionRule = {
79
79
  },
80
80
  };
81
81
  export { requireTestCompanionRule };
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9yZXF1aXJlLXRlc3QtY29tcGFuaW9uL3J1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRTlELHNFQUFzRTtBQUN0RSxNQUFNLHdCQUF3QixHQUFvQjtJQUNoRCxNQUFNLENBQUMsT0FBeUI7UUFDOUIsT0FBTyx3QkFBd0IsQ0FDN0IsT0FBTyxFQUNQLE9BQU8sQ0FBQyxRQUFRLEVBQ2hCLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQzVCLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxFQUFFO1FBQ0osY0FBYyxFQUFFO1lBQ2Q7Z0JBQ0UsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUNyQixjQUFjLEVBQUUsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDO2dCQUN4QyxZQUFZLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDO2FBQy9CO1NBQ0Y7UUFDRCxJQUFJLEVBQUU7WUFDSixXQUFXLEVBQ1QsdUVBQXVFO1lBQ3pFLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLEdBQUcsRUFBRSx5RkFBeUY7U0FDL0Y7UUFDRCxRQUFRLEVBQUU7WUFDUixhQUFhLEVBQ1gsZ0ZBQWdGO1lBQ2xGLFdBQVcsRUFDVCwrRUFBK0U7U0FDbEY7UUFDRCxNQUFNLEVBQUU7WUFDTjtnQkFDRSxvQkFBb0IsRUFBRSxLQUFLO2dCQUMzQixVQUFVLEVBQUU7b0JBQ1YsU0FBUyxFQUFFO3dCQUNULFdBQVcsRUFDVCxrRkFBa0Y7d0JBQ3BGLEtBQUssRUFBRTs0QkFDTDtnQ0FDRSxXQUFXLEVBQUUsd0JBQXdCO2dDQUNyQyxJQUFJLEVBQUUsUUFBUTs2QkFDZjs0QkFDRDtnQ0FDRSxXQUFXLEVBQUUsMEJBQTBCO2dDQUN2QyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO2dDQUN6QixRQUFRLEVBQUUsQ0FBQztnQ0FDWCxJQUFJLEVBQUUsT0FBTzs2QkFDZDt5QkFDRjtxQkFDRjtvQkFDRCxjQUFjLEVBQUU7d0JBQ2QsV0FBVyxFQUNULDRFQUE0RTt3QkFDOUUsS0FBSyxFQUFFOzRCQUNMO2dDQUNFLFdBQVcsRUFBRSwrQkFBK0I7Z0NBQzVDLElBQUksRUFBRSxRQUFROzZCQUNmOzRCQUNEO2dDQUNFLFdBQVcsRUFBRSxpQ0FBaUM7Z0NBQzlDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7Z0NBQ3pCLFFBQVEsRUFBRSxDQUFDO2dDQUNYLElBQUksRUFBRSxPQUFPOzZCQUNkO3lCQUNGO3FCQUNGO29CQUNELFlBQVksRUFBRTt3QkFDWixXQUFXLEVBQ1QsaUVBQWlFO3dCQUNuRSxLQUFLLEVBQUU7NEJBQ0w7Z0NBQ0UsV0FBVyxFQUFFLGdDQUFnQztnQ0FDN0MsSUFBSSxFQUFFLFFBQVE7NkJBQ2Y7NEJBQ0Q7Z0NBQ0UsV0FBVyxFQUFFLG1DQUFtQztnQ0FDaEQsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtnQ0FDekIsUUFBUSxFQUFFLENBQUM7Z0NBQ1gsSUFBSSxFQUFFLE9BQU87NkJBQ2Q7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7Z0JBQ0QsSUFBSSxFQUFFLFFBQVE7YUFDZjtTQUNGO1FBQ0QsSUFBSSxFQUFFLFNBQVM7S0FDaEI7Q0FDRixDQUFDO0FBRUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XG5cbmltcG9ydCB7IGJ1aWxkTGlzdGVuZXJGb3JGaWxlbmFtZSB9IGZyb20gXCIuL3JlcXVpcmUtdGVzdC1jb21wYW5pb24tbGlzdGVuZXJzXCI7XG5pbXBvcnQgeyBnZXRPcHRpb25zIH0gZnJvbSBcIi4vcmVxdWlyZS10ZXN0LWNvbXBhbmlvbi1vcHRpb25zXCI7XG5cbi8qKiBFU0xpbnQgcnVsZSBlbmZvcmNpbmcgMToxIHRlc3QgY29tcGFuaW9ucyBmb3IgVHlwZVNjcmlwdCBmaWxlcy4gKi9cbmNvbnN0IHJlcXVpcmVUZXN0Q29tcGFuaW9uUnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCk6IFJ1bGUuUnVsZUxpc3RlbmVyIHtcbiAgICByZXR1cm4gYnVpbGRMaXN0ZW5lckZvckZpbGVuYW1lKFxuICAgICAgY29udGV4dCxcbiAgICAgIGNvbnRleHQuZmlsZW5hbWUsXG4gICAgICBnZXRPcHRpb25zKGNvbnRleHQub3B0aW9ucyksXG4gICAgKTtcbiAgfSxcbiAgbWV0YToge1xuICAgIGRlZmF1bHRPcHRpb25zOiBbXG4gICAgICB7XG4gICAgICAgIGVuZm9yY2VJbjogW1wic3JjLyoqXCJdLFxuICAgICAgICBpZ25vcmVQYXR0ZXJuczogW1wiLyouZC50c1wiLCBcIi9pbmRleC50c1wiXSxcbiAgICAgICAgdGVzdFN1ZmZpeGVzOiBbXCJzcGVjXCIsIFwidGVzdFwiXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJSZXF1aXJlIGEgbWF0Y2hpbmcgdGVzdCBmaWxlIGZvciBlYWNoIFR5cGVTY3JpcHQgZmlsZSBhbmQgdmljZSB2ZXJzYS5cIixcbiAgICAgIHJlY29tbWVuZGVkOiBmYWxzZSxcbiAgICAgIHVybDogXCJodHRwczovL2dpdGh1Yi5jb20vcGFybG90aS9lc2xpbnQtcGx1Z2luL2Jsb2IvbWFpbi9kb2NzL3J1bGVzL3JlcXVpcmUtdGVzdC1jb21wYW5pb24ubWRcIixcbiAgICB9LFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICBtaXNzaW5nU291cmNlOlxuICAgICAgICBcIlRlc3QgZmlsZSByZXF1aXJlcyBhIG1hdGNoaW5nIHNvdXJjZSBmaWxlICd7e3NvdXJjZUZpbGV9fScgaW4gdGhlIHNhbWUgZm9sZGVyLlwiLFxuICAgICAgbWlzc2luZ1Rlc3Q6XG4gICAgICAgIFwiU291cmNlIGZpbGUgcmVxdWlyZXMgYSBtYXRjaGluZyB0ZXN0IGZpbGUgKHt7dGVzdEZpbGVzfX0pIGluIHRoZSBzYW1lIGZvbGRlci5cIixcbiAgICB9LFxuICAgIHNjaGVtYTogW1xuICAgICAge1xuICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBlbmZvcmNlSW46IHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICBcIkdsb2IgcGF0dGVybnMgdGhhdCBkZWZpbmUgd2hlcmUgc291cmNlIGZpbGVzIG11c3QgaGF2ZSBtYXRjaGluZyB0ZXN0IGNvbXBhbmlvbnMuXCIsXG4gICAgICAgICAgICBvbmVPZjogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQSBzaW5nbGUgZ2xvYiBwYXR0ZXJuLlwiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJBIGxpc3Qgb2YgZ2xvYiBwYXR0ZXJucy5cIixcbiAgICAgICAgICAgICAgICBpdGVtczogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgbWluSXRlbXM6IDEsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGlnbm9yZVBhdHRlcm5zOiB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgXCJHbG9iIHBhdHRlcm5zIHRoYXQgc2hvdWxkIGJlIGV4Y2x1ZGVkIGZyb20gdGhlIGNvbXBhbmlvbi1maWxlIHJlcXVpcmVtZW50LlwiLFxuICAgICAgICAgICAgb25lT2Y6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkEgc2luZ2xlIGlnbm9yZSBnbG9iIHBhdHRlcm4uXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkEgbGlzdCBvZiBpZ25vcmUgZ2xvYiBwYXR0ZXJucy5cIixcbiAgICAgICAgICAgICAgICBpdGVtczogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgICAgICAgbWluSXRlbXM6IDEsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRlc3RTdWZmaXhlczoge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgIFwiRmlsZW5hbWUgc3VmZml4ZXMgdGhhdCBhcmUgcmVjb2duaXplZCBhcyB2YWxpZCB0ZXN0IGNvbXBhbmlvbnMuXCIsXG4gICAgICAgICAgICBvbmVPZjogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQSBzaW5nbGUgdGVzdCBmaWxlbmFtZSBzdWZmaXguXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkEgbGlzdCBvZiB0ZXN0IGZpbGVuYW1lIHN1ZmZpeGVzLlwiLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgICBtaW5JdGVtczogMSxcbiAgICAgICAgICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgdHlwZTogXCJwcm9ibGVtXCIsXG4gIH0sXG59O1xuXG5leHBvcnQgeyByZXF1aXJlVGVzdENvbXBhbmlvblJ1bGUgfTtcbiJdfQ==
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9yZXF1aXJlLXRlc3QtY29tcGFuaW9uL3J1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVuQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFOUQsc0VBQXNFO0FBQ3RFLE1BQU0sd0JBQXdCLEdBQW9CO0lBQ2hELE1BQU0sQ0FBQyxPQUF5QjtRQUM5QixPQUFPLHdCQUF3QixDQUM3QixPQUFPLEVBQ1AsT0FBTyxDQUFDLFFBQVEsRUFDaEIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFDM0IsT0FBTyxPQUFPLENBQUMsR0FBRyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQ3RELENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxFQUFFO1FBQ0osY0FBYyxFQUFFO1lBQ2Q7Z0JBQ0UsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUNyQixjQUFjLEVBQUUsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDO2dCQUN4QyxZQUFZLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDO2FBQy9CO1NBQ0Y7UUFDRCxJQUFJLEVBQUU7WUFDSixXQUFXLEVBQ1QsbUVBQW1FO1lBQ3JFLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLEdBQUcsRUFBRSx5RkFBeUY7U0FDL0Y7UUFDRCxRQUFRLEVBQUU7WUFDUixhQUFhLEVBQ1gsd0xBQXdMO1NBQzNMO1FBQ0QsTUFBTSxFQUFFO1lBQ047Z0JBQ0Usb0JBQW9CLEVBQUUsS0FBSztnQkFDM0IsVUFBVSxFQUFFO29CQUNWLFNBQVMsRUFBRTt3QkFDVCxXQUFXLEVBQ1Qsa0ZBQWtGO3dCQUNwRixLQUFLLEVBQUU7NEJBQ0w7Z0NBQ0UsV0FBVyxFQUFFLHdCQUF3QjtnQ0FDckMsSUFBSSxFQUFFLFFBQVE7NkJBQ2Y7NEJBQ0Q7Z0NBQ0UsV0FBVyxFQUFFLDBCQUEwQjtnQ0FDdkMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtnQ0FDekIsUUFBUSxFQUFFLENBQUM7Z0NBQ1gsSUFBSSxFQUFFLE9BQU87NkJBQ2Q7eUJBQ0Y7cUJBQ0Y7b0JBQ0QsY0FBYyxFQUFFO3dCQUNkLFdBQVcsRUFDVCw2RUFBNkU7d0JBQy9FLEtBQUssRUFBRTs0QkFDTDtnQ0FDRSxXQUFXLEVBQUUsK0JBQStCO2dDQUM1QyxJQUFJLEVBQUUsUUFBUTs2QkFDZjs0QkFDRDtnQ0FDRSxXQUFXLEVBQUUsaUNBQWlDO2dDQUM5QyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO2dDQUN6QixRQUFRLEVBQUUsQ0FBQztnQ0FDWCxJQUFJLEVBQUUsT0FBTzs2QkFDZDt5QkFDRjtxQkFDRjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osV0FBVyxFQUNULGlFQUFpRTt3QkFDbkUsS0FBSyxFQUFFOzRCQUNMO2dDQUNFLFdBQVcsRUFBRSxnQ0FBZ0M7Z0NBQzdDLElBQUksRUFBRSxRQUFROzZCQUNmOzRCQUNEO2dDQUNFLFdBQVcsRUFBRSxtQ0FBbUM7Z0NBQ2hELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7Z0NBQ3pCLFFBQVEsRUFBRSxDQUFDO2dDQUNYLElBQUksRUFBRSxPQUFPOzZCQUNkO3lCQUNGO3FCQUNGO2lCQUNGO2dCQUNELElBQUksRUFBRSxRQUFRO2FBQ2Y7U0FDRjtRQUNELElBQUksRUFBRSxTQUFTO0tBQ2hCO0NBQ0YsQ0FBQztBQUVGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgeyBjd2QgfSBmcm9tIFwibm9kZTpwcm9jZXNzXCI7XG5cbmltcG9ydCB7IGJ1aWxkTGlzdGVuZXJGb3JGaWxlbmFtZSB9IGZyb20gXCIuL3JlcXVpcmUtdGVzdC1jb21wYW5pb24tbGlzdGVuZXJzXCI7XG5pbXBvcnQgeyBnZXRPcHRpb25zIH0gZnJvbSBcIi4vcmVxdWlyZS10ZXN0LWNvbXBhbmlvbi1vcHRpb25zXCI7XG5cbi8qKiBFU0xpbnQgcnVsZSBlbmZvcmNpbmcgMToxIHRlc3QgY29tcGFuaW9ucyBmb3IgVHlwZVNjcmlwdCBmaWxlcy4gKi9cbmNvbnN0IHJlcXVpcmVUZXN0Q29tcGFuaW9uUnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCk6IFJ1bGUuUnVsZUxpc3RlbmVyIHtcbiAgICByZXR1cm4gYnVpbGRMaXN0ZW5lckZvckZpbGVuYW1lKFxuICAgICAgY29udGV4dCxcbiAgICAgIGNvbnRleHQuZmlsZW5hbWUsXG4gICAgICBnZXRPcHRpb25zKGNvbnRleHQub3B0aW9ucyksXG4gICAgICB0eXBlb2YgY29udGV4dC5jd2QgPT09IFwic3RyaW5nXCIgPyBjb250ZXh0LmN3ZCA6IGN3ZCgpLFxuICAgICk7XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkZWZhdWx0T3B0aW9uczogW1xuICAgICAge1xuICAgICAgICBlbmZvcmNlSW46IFtcInNyYy8qKlwiXSxcbiAgICAgICAgaWdub3JlUGF0dGVybnM6IFtcIi8qLmQudHNcIiwgXCIvaW5kZXgudHNcIl0sXG4gICAgICAgIHRlc3RTdWZmaXhlczogW1wic3BlY1wiLCBcInRlc3RcIl0sXG4gICAgICB9LFxuICAgIF0sXG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUmVxdWlyZSBlYWNoIHRlc3QgZmlsZSB0byBoYXZlIGEgbWF0Y2hpbmcgVHlwZVNjcmlwdCBzb3VyY2UgZmlsZS5cIixcbiAgICAgIHJlY29tbWVuZGVkOiBmYWxzZSxcbiAgICAgIHVybDogXCJodHRwczovL2dpdGh1Yi5jb20vcGFybG90aS9lc2xpbnQtcGx1Z2luL2Jsb2IvbWFpbi9kb2NzL3J1bGVzL3JlcXVpcmUtdGVzdC1jb21wYW5pb24ubWRcIixcbiAgICB9LFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICBtaXNzaW5nU291cmNlOlxuICAgICAgICBcIlRlc3QgZmlsZSByZXF1aXJlcyBhIG1hdGNoaW5nIHNvdXJjZSBmaWxlICd7e3NvdXJjZUZpbGV9fScgaW4gdGhlIHNhbWUgZm9sZGVyLiBJZiB0aGlzIHRlc3QgZmlsZSBpcyBvcnBoYW5lZCwgbW92ZSBpdHMgdGVzdHMgdG8gdGhlIGNvcnJlY3QgY29tcGFuaW9uIGZpbGUgb3IgZGVsZXRlIHRoaXMgb3JwaGFuIGZpbGUuXCIsXG4gICAgfSxcbiAgICBzY2hlbWE6IFtcbiAgICAgIHtcbiAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgZW5mb3JjZUluOiB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgXCJHbG9iIHBhdHRlcm5zIHRoYXQgZGVmaW5lIHdoZXJlIHRlc3QgZmlsZXMgbXVzdCBoYXZlIG1hdGNoaW5nIHNvdXJjZSBjb21wYW5pb25zLlwiLFxuICAgICAgICAgICAgb25lT2Y6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkEgc2luZ2xlIGdsb2IgcGF0dGVybi5cIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQSBsaXN0IG9mIGdsb2IgcGF0dGVybnMuXCIsXG4gICAgICAgICAgICAgICAgaXRlbXM6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgIG1pbkl0ZW1zOiAxLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBpZ25vcmVQYXR0ZXJuczoge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgIFwiR2xvYiBwYXR0ZXJucyB0aGF0IHNob3VsZCBiZSBleGNsdWRlZCBmcm9tIHRlc3QtdG8tc291cmNlIGNvbXBhbmlvbiBjaGVja3MuXCIsXG4gICAgICAgICAgICBvbmVPZjogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQSBzaW5nbGUgaWdub3JlIGdsb2IgcGF0dGVybi5cIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQSBsaXN0IG9mIGlnbm9yZSBnbG9iIHBhdHRlcm5zLlwiLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgICAgICBtaW5JdGVtczogMSxcbiAgICAgICAgICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGVzdFN1ZmZpeGVzOiB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgXCJGaWxlbmFtZSBzdWZmaXhlcyB0aGF0IGFyZSByZWNvZ25pemVkIGFzIHZhbGlkIHRlc3QgY29tcGFuaW9ucy5cIixcbiAgICAgICAgICAgIG9uZU9mOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJBIHNpbmdsZSB0ZXN0IGZpbGVuYW1lIHN1ZmZpeC5cIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQSBsaXN0IG9mIHRlc3QgZmlsZW5hbWUgc3VmZml4ZXMuXCIsXG4gICAgICAgICAgICAgICAgaXRlbXM6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgICAgIG1pbkl0ZW1zOiAxLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgICB0eXBlOiBcInByb2JsZW1cIixcbiAgfSxcbn07XG5cbmV4cG9ydCB7IHJlcXVpcmVUZXN0Q29tcGFuaW9uUnVsZSB9O1xuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/single-act-statement/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAInC,sEAAsE;AACtE,QAAA,MAAM,sBAAsB,EAAE,IAAI,CAAC,UAoClC,CAAC;AAEF,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
1
+ {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/testing/single-act-statement/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAQnC,sEAAsE;AACtE,QAAA,MAAM,sBAAsB,EAAE,IAAI,CAAC,UAuClC,CAAC;AAEF,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
@@ -1,4 +1,5 @@
1
- import { analyzeTestBlock, countActStatements } from "../aaa/index.js";
1
+ import { analyzeTestBlock } from "../aaa/analyzer.analysis.js";
2
+ import { countActStatements, getActTopLevelStatements, } from "../aaa/analyzer.analysis.helpers.js";
2
3
  /** Requires the Act phase to contain a single top-level statement. */
3
4
  const singleActStatementRule = {
4
5
  create(context) {
@@ -12,10 +13,12 @@ const singleActStatementRule = {
12
13
  if (actStatementCount <= 1) {
13
14
  return;
14
15
  }
16
+ const actStatements = getActTopLevelStatements(analysis);
17
+ const firstExcessActStatement = actStatements.at(1)?.node;
15
18
  context.report({
16
19
  data: { count: String(actStatementCount) },
17
20
  messageId: "multipleActStatements",
18
- node: analysis.callExpression,
21
+ node: firstExcessActStatement ?? analysis.callExpression,
19
22
  });
20
23
  },
21
24
  };
@@ -34,4 +37,4 @@ const singleActStatementRule = {
34
37
  },
35
38
  };
36
39
  export { singleActStatementRule };
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9zaW5nbGUtYWN0LXN0YXRlbWVudC9ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU5RCxzRUFBc0U7QUFDdEUsTUFBTSxzQkFBc0IsR0FBb0I7SUFDOUMsTUFBTSxDQUFDLE9BQXlCO1FBQzlCLE9BQU87WUFDTCxjQUFjLENBQUMsSUFBSTtnQkFDakIsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLFFBQVEsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUN4QixPQUFPO2dCQUNULENBQUM7Z0JBRUQsTUFBTSxpQkFBaUIsR0FBRyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxpQkFBaUIsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDM0IsT0FBTztnQkFDVCxDQUFDO2dCQUVELE9BQU8sQ0FBQyxNQUFNLENBQUM7b0JBQ2IsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO29CQUMxQyxTQUFTLEVBQUUsdUJBQXVCO29CQUNsQyxJQUFJLEVBQUUsUUFBUSxDQUFDLGNBQWM7aUJBQzlCLENBQUMsQ0FBQztZQUNMLENBQUM7U0FDMEIsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFO1lBQ0osV0FBVyxFQUNULG9GQUFvRjtZQUN0RixXQUFXLEVBQUUsS0FBSztZQUNsQixHQUFHLEVBQUUsdUZBQXVGO1NBQzdGO1FBQ0QsUUFBUSxFQUFFO1lBQ1IscUJBQXFCLEVBQ25CLHFHQUFxRztTQUN4RztRQUNELE1BQU0sRUFBRSxFQUFFO1FBQ1YsSUFBSSxFQUFFLFlBQVk7S0FDbkI7Q0FDRixDQUFDO0FBRUYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XG5cbmltcG9ydCB7IGFuYWx5emVUZXN0QmxvY2ssIGNvdW50QWN0U3RhdGVtZW50cyB9IGZyb20gXCIuLi9hYWFcIjtcblxuLyoqIFJlcXVpcmVzIHRoZSBBY3QgcGhhc2UgdG8gY29udGFpbiBhIHNpbmdsZSB0b3AtbGV2ZWwgc3RhdGVtZW50LiAqL1xuY29uc3Qgc2luZ2xlQWN0U3RhdGVtZW50UnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCk6IFJ1bGUuUnVsZUxpc3RlbmVyIHtcbiAgICByZXR1cm4ge1xuICAgICAgQ2FsbEV4cHJlc3Npb24obm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbmFseXNpcyA9IGFuYWx5emVUZXN0QmxvY2soY29udGV4dCwgbm9kZSk7XG4gICAgICAgIGlmIChhbmFseXNpcyA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWN0U3RhdGVtZW50Q291bnQgPSBjb3VudEFjdFN0YXRlbWVudHMoYW5hbHlzaXMpO1xuICAgICAgICBpZiAoYWN0U3RhdGVtZW50Q291bnQgPD0gMSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICBkYXRhOiB7IGNvdW50OiBTdHJpbmcoYWN0U3RhdGVtZW50Q291bnQpIH0sXG4gICAgICAgICAgbWVzc2FnZUlkOiBcIm11bHRpcGxlQWN0U3RhdGVtZW50c1wiLFxuICAgICAgICAgIG5vZGU6IGFuYWx5c2lzLmNhbGxFeHByZXNzaW9uLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfSBzYXRpc2ZpZXMgUnVsZS5SdWxlTGlzdGVuZXI7XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJSZXF1aXJlIHRoZSAvLyBBY3Qgc2VjdGlvbiB0byBjb250YWluIGEgc2luZ2xlIHRvcC1sZXZlbCBzdGF0ZW1lbnQgb3IgZGVjbGFyYXRpb24uXCIsXG4gICAgICByZWNvbW1lbmRlZDogZmFsc2UsXG4gICAgICB1cmw6IFwiaHR0cHM6Ly9naXRodWIuY29tL3BhcmxvdGkvZXNsaW50LXBsdWdpbi9ibG9iL21haW4vZG9jcy9ydWxlcy9zaW5nbGUtYWN0LXN0YXRlbWVudC5tZFwiLFxuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIG11bHRpcGxlQWN0U3RhdGVtZW50czpcbiAgICAgICAgXCJSZWR1Y2UgdGhlIC8vIEFjdCBzZWN0aW9uIHRvIGEgc2luZ2xlIHRvcC1sZXZlbCBzdGF0ZW1lbnQgb3IgdmFyaWFibGUgZGVjbGFyYXRpb247IGZvdW5kIHt7Y291bnR9fS5cIixcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogXCJzdWdnZXN0aW9uXCIsXG4gIH0sXG59O1xuXG5leHBvcnQgeyBzaW5nbGVBY3RTdGF0ZW1lbnRSdWxlIH07XG4iXX0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vdGVzdGluZy9zaW5nbGUtYWN0LXN0YXRlbWVudC9ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsd0JBQXdCLEdBQ3pCLE1BQU0sa0NBQWtDLENBQUM7QUFFMUMsc0VBQXNFO0FBQ3RFLE1BQU0sc0JBQXNCLEdBQW9CO0lBQzlDLE1BQU0sQ0FBQyxPQUF5QjtRQUM5QixPQUFPO1lBQ0wsY0FBYyxDQUFDLElBQUk7Z0JBQ2pCLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDakQsSUFBSSxRQUFRLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDeEIsT0FBTztnQkFDVCxDQUFDO2dCQUVELE1BQU0saUJBQWlCLEdBQUcsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3ZELElBQUksaUJBQWlCLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQzNCLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxNQUFNLGFBQWEsR0FBRyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDekQsTUFBTSx1QkFBdUIsR0FBRyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQztnQkFFMUQsT0FBTyxDQUFDLE1BQU0sQ0FBQztvQkFDYixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEVBQUU7b0JBQzFDLFNBQVMsRUFBRSx1QkFBdUI7b0JBQ2xDLElBQUksRUFBRSx1QkFBdUIsSUFBSSxRQUFRLENBQUMsY0FBYztpQkFDekQsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztTQUMwQixDQUFDO0lBQ2hDLENBQUM7SUFDRCxJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUU7WUFDSixXQUFXLEVBQ1Qsb0ZBQW9GO1lBQ3RGLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLEdBQUcsRUFBRSx1RkFBdUY7U0FDN0Y7UUFDRCxRQUFRLEVBQUU7WUFDUixxQkFBcUIsRUFDbkIscUdBQXFHO1NBQ3hHO1FBQ0QsTUFBTSxFQUFFLEVBQUU7UUFDVixJQUFJLEVBQUUsWUFBWTtLQUNuQjtDQUNGLENBQUM7QUFFRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHsgYW5hbHl6ZVRlc3RCbG9jayB9IGZyb20gXCIuLi9hYWEvYW5hbHl6ZXIuYW5hbHlzaXNcIjtcbmltcG9ydCB7XG4gIGNvdW50QWN0U3RhdGVtZW50cyxcbiAgZ2V0QWN0VG9wTGV2ZWxTdGF0ZW1lbnRzLFxufSBmcm9tIFwiLi4vYWFhL2FuYWx5emVyLmFuYWx5c2lzLmhlbHBlcnNcIjtcblxuLyoqIFJlcXVpcmVzIHRoZSBBY3QgcGhhc2UgdG8gY29udGFpbiBhIHNpbmdsZSB0b3AtbGV2ZWwgc3RhdGVtZW50LiAqL1xuY29uc3Qgc2luZ2xlQWN0U3RhdGVtZW50UnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCk6IFJ1bGUuUnVsZUxpc3RlbmVyIHtcbiAgICByZXR1cm4ge1xuICAgICAgQ2FsbEV4cHJlc3Npb24obm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbmFseXNpcyA9IGFuYWx5emVUZXN0QmxvY2soY29udGV4dCwgbm9kZSk7XG4gICAgICAgIGlmIChhbmFseXNpcyA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWN0U3RhdGVtZW50Q291bnQgPSBjb3VudEFjdFN0YXRlbWVudHMoYW5hbHlzaXMpO1xuICAgICAgICBpZiAoYWN0U3RhdGVtZW50Q291bnQgPD0gMSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFjdFN0YXRlbWVudHMgPSBnZXRBY3RUb3BMZXZlbFN0YXRlbWVudHMoYW5hbHlzaXMpO1xuICAgICAgICBjb25zdCBmaXJzdEV4Y2Vzc0FjdFN0YXRlbWVudCA9IGFjdFN0YXRlbWVudHMuYXQoMSk/Lm5vZGU7XG5cbiAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgIGRhdGE6IHsgY291bnQ6IFN0cmluZyhhY3RTdGF0ZW1lbnRDb3VudCkgfSxcbiAgICAgICAgICBtZXNzYWdlSWQ6IFwibXVsdGlwbGVBY3RTdGF0ZW1lbnRzXCIsXG4gICAgICAgICAgbm9kZTogZmlyc3RFeGNlc3NBY3RTdGF0ZW1lbnQgPz8gYW5hbHlzaXMuY2FsbEV4cHJlc3Npb24sXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICB9IHNhdGlzZmllcyBSdWxlLlJ1bGVMaXN0ZW5lcjtcbiAgfSxcbiAgbWV0YToge1xuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlJlcXVpcmUgdGhlIC8vIEFjdCBzZWN0aW9uIHRvIGNvbnRhaW4gYSBzaW5nbGUgdG9wLWxldmVsIHN0YXRlbWVudCBvciBkZWNsYXJhdGlvbi5cIixcbiAgICAgIHJlY29tbWVuZGVkOiBmYWxzZSxcbiAgICAgIHVybDogXCJodHRwczovL2dpdGh1Yi5jb20vcGFybG90aS9lc2xpbnQtcGx1Z2luL2Jsb2IvbWFpbi9kb2NzL3J1bGVzL3NpbmdsZS1hY3Qtc3RhdGVtZW50Lm1kXCIsXG4gICAgfSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgbXVsdGlwbGVBY3RTdGF0ZW1lbnRzOlxuICAgICAgICBcIlJlZHVjZSB0aGUgLy8gQWN0IHNlY3Rpb24gdG8gYSBzaW5nbGUgdG9wLWxldmVsIHN0YXRlbWVudCBvciB2YXJpYWJsZSBkZWNsYXJhdGlvbjsgZm91bmQge3tjb3VudH19LlwiLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiBcInN1Z2dlc3Rpb25cIixcbiAgfSxcbn07XG5cbmV4cG9ydCB7IHNpbmdsZUFjdFN0YXRlbWVudFJ1bGUgfTtcbiJdfQ==
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { assertActualExpectedNamesRule, barrelFilesExportsOnlyRule, consistentBarrelFilesRule, enforceAaaPhasePurityRule, enforceAaaStructureRule, noInterfaceMemberDocumentationRule, noMultipleDeclaratorsRule, noReexportsOutsideBarrelsRule, preferInterfaceTypesRule, preferViMockedImportRule, preferVitestIncrementalCastsRule, requireAaaSectionsRule, requireActResultCaptureRule, requireExampleLanguageRule, requireTestCompanionRule, singleActStatementRule, singleLineJsdocRule, } from "./application/index.js";
1
+ export { assertActualExpectedNamesRule, barrelFilesExportsOnlyRule, consistentBarrelFilesRule, enforceAaaStructureRule, noImportExportAliasesRule, noImportExportExtensionsRule, noInterfaceMemberDocumentationRule, noMultipleDeclaratorsRule, noReexportsOutsideBarrelsRule, noUnusedExportsRule, preferInterfaceTypesRule, preferViMockedImportRule, requireActResultCaptureRule, requireExampleLanguageRule, requireTestCompanionRule, singleActStatementRule, singleLineJsdocRule, } from "./application/index.js";
2
2
  export type { CustomRuleEntry } from "./application/index.js";
3
3
  export { aaa, all, architecture, codeperfectPlugin, core, customRules, documentation, testing, } from "./infrastructure/index.js";
4
4
  export type { CodeperfectPreset } from "./infrastructure/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,uBAAuB,EACvB,kCAAkC,EAClC,yBAAyB,EACzB,6BAA6B,EAC7B,wBAAwB,EACxB,wBAAwB,EACxB,gCAAgC,EAChC,sBAAsB,EACtB,2BAA2B,EAC3B,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EACL,GAAG,EACH,GAAG,EACH,YAAY,EACZ,iBAAiB,EACjB,IAAI,EACJ,WAAW,EACX,aAAa,EACb,OAAO,GACR,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,0BAA0B,EAC1B,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,4BAA4B,EAC5B,kCAAkC,EAClC,yBAAyB,EACzB,6BAA6B,EAC7B,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,2BAA2B,EAC3B,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EACL,GAAG,EACH,GAAG,EACH,YAAY,EACZ,iBAAiB,EACjB,IAAI,EACJ,WAAW,EACX,aAAa,EACb,OAAO,GACR,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- export { assertActualExpectedNamesRule, barrelFilesExportsOnlyRule, consistentBarrelFilesRule, enforceAaaPhasePurityRule, enforceAaaStructureRule, noInterfaceMemberDocumentationRule, noMultipleDeclaratorsRule, noReexportsOutsideBarrelsRule, preferInterfaceTypesRule, preferViMockedImportRule, preferVitestIncrementalCastsRule, requireAaaSectionsRule, requireActResultCaptureRule, requireExampleLanguageRule, requireTestCompanionRule, singleActStatementRule, singleLineJsdocRule, } from "./application/index.js";
1
+ export { assertActualExpectedNamesRule, barrelFilesExportsOnlyRule, consistentBarrelFilesRule, enforceAaaStructureRule, noImportExportAliasesRule, noImportExportExtensionsRule, noInterfaceMemberDocumentationRule, noMultipleDeclaratorsRule, noReexportsOutsideBarrelsRule, noUnusedExportsRule, preferInterfaceTypesRule, preferViMockedImportRule, requireActResultCaptureRule, requireExampleLanguageRule, requireTestCompanionRule, singleActStatementRule, singleLineJsdocRule, } from "./application/index.js";
2
2
  export { aaa, all, architecture, codeperfectPlugin, core, customRules, documentation, testing, } from "./infrastructure/index.js";
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLDZCQUE2QixFQUM3QiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6Qix1QkFBdUIsRUFDdkIsa0NBQWtDLEVBQ2xDLHlCQUF5QixFQUN6Qiw2QkFBNkIsRUFDN0Isd0JBQXdCLEVBQ3hCLHdCQUF3QixFQUN4QixnQ0FBZ0MsRUFDaEMsc0JBQXNCLEVBQ3RCLDJCQUEyQixFQUMzQiwwQkFBMEIsRUFDMUIsd0JBQXdCLEVBQ3hCLHNCQUFzQixFQUN0QixtQkFBbUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLEdBQUcsRUFDSCxHQUFHLEVBQ0gsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixJQUFJLEVBQ0osV0FBVyxFQUNYLGFBQWEsRUFDYixPQUFPLEdBQ1IsTUFBTSxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIGFzc2VydEFjdHVhbEV4cGVjdGVkTmFtZXNSdWxlLFxuICBiYXJyZWxGaWxlc0V4cG9ydHNPbmx5UnVsZSxcbiAgY29uc2lzdGVudEJhcnJlbEZpbGVzUnVsZSxcbiAgZW5mb3JjZUFhYVBoYXNlUHVyaXR5UnVsZSxcbiAgZW5mb3JjZUFhYVN0cnVjdHVyZVJ1bGUsXG4gIG5vSW50ZXJmYWNlTWVtYmVyRG9jdW1lbnRhdGlvblJ1bGUsXG4gIG5vTXVsdGlwbGVEZWNsYXJhdG9yc1J1bGUsXG4gIG5vUmVleHBvcnRzT3V0c2lkZUJhcnJlbHNSdWxlLFxuICBwcmVmZXJJbnRlcmZhY2VUeXBlc1J1bGUsXG4gIHByZWZlclZpTW9ja2VkSW1wb3J0UnVsZSxcbiAgcHJlZmVyVml0ZXN0SW5jcmVtZW50YWxDYXN0c1J1bGUsXG4gIHJlcXVpcmVBYWFTZWN0aW9uc1J1bGUsXG4gIHJlcXVpcmVBY3RSZXN1bHRDYXB0dXJlUnVsZSxcbiAgcmVxdWlyZUV4YW1wbGVMYW5ndWFnZVJ1bGUsXG4gIHJlcXVpcmVUZXN0Q29tcGFuaW9uUnVsZSxcbiAgc2luZ2xlQWN0U3RhdGVtZW50UnVsZSxcbiAgc2luZ2xlTGluZUpzZG9jUnVsZSxcbn0gZnJvbSBcIi4vYXBwbGljYXRpb25cIjtcbmV4cG9ydCB0eXBlIHsgQ3VzdG9tUnVsZUVudHJ5IH0gZnJvbSBcIi4vYXBwbGljYXRpb25cIjtcbmV4cG9ydCB7XG4gIGFhYSxcbiAgYWxsLFxuICBhcmNoaXRlY3R1cmUsXG4gIGNvZGVwZXJmZWN0UGx1Z2luLFxuICBjb3JlLFxuICBjdXN0b21SdWxlcyxcbiAgZG9jdW1lbnRhdGlvbixcbiAgdGVzdGluZyxcbn0gZnJvbSBcIi4vaW5mcmFzdHJ1Y3R1cmVcIjtcbmV4cG9ydCB0eXBlIHsgQ29kZXBlcmZlY3RQcmVzZXQgfSBmcm9tIFwiLi9pbmZyYXN0cnVjdHVyZVwiO1xuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLDZCQUE2QixFQUM3QiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLHVCQUF1QixFQUN2Qix5QkFBeUIsRUFDekIsNEJBQTRCLEVBQzVCLGtDQUFrQyxFQUNsQyx5QkFBeUIsRUFDekIsNkJBQTZCLEVBQzdCLG1CQUFtQixFQUNuQix3QkFBd0IsRUFDeEIsd0JBQXdCLEVBQ3hCLDJCQUEyQixFQUMzQiwwQkFBMEIsRUFDMUIsd0JBQXdCLEVBQ3hCLHNCQUFzQixFQUN0QixtQkFBbUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLEdBQUcsRUFDSCxHQUFHLEVBQ0gsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixJQUFJLEVBQ0osV0FBVyxFQUNYLGFBQWEsRUFDYixPQUFPLEdBQ1IsTUFBTSxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIGFzc2VydEFjdHVhbEV4cGVjdGVkTmFtZXNSdWxlLFxuICBiYXJyZWxGaWxlc0V4cG9ydHNPbmx5UnVsZSxcbiAgY29uc2lzdGVudEJhcnJlbEZpbGVzUnVsZSxcbiAgZW5mb3JjZUFhYVN0cnVjdHVyZVJ1bGUsXG4gIG5vSW1wb3J0RXhwb3J0QWxpYXNlc1J1bGUsXG4gIG5vSW1wb3J0RXhwb3J0RXh0ZW5zaW9uc1J1bGUsXG4gIG5vSW50ZXJmYWNlTWVtYmVyRG9jdW1lbnRhdGlvblJ1bGUsXG4gIG5vTXVsdGlwbGVEZWNsYXJhdG9yc1J1bGUsXG4gIG5vUmVleHBvcnRzT3V0c2lkZUJhcnJlbHNSdWxlLFxuICBub1VudXNlZEV4cG9ydHNSdWxlLFxuICBwcmVmZXJJbnRlcmZhY2VUeXBlc1J1bGUsXG4gIHByZWZlclZpTW9ja2VkSW1wb3J0UnVsZSxcbiAgcmVxdWlyZUFjdFJlc3VsdENhcHR1cmVSdWxlLFxuICByZXF1aXJlRXhhbXBsZUxhbmd1YWdlUnVsZSxcbiAgcmVxdWlyZVRlc3RDb21wYW5pb25SdWxlLFxuICBzaW5nbGVBY3RTdGF0ZW1lbnRSdWxlLFxuICBzaW5nbGVMaW5lSnNkb2NSdWxlLFxufSBmcm9tIFwiLi9hcHBsaWNhdGlvblwiO1xuZXhwb3J0IHR5cGUgeyBDdXN0b21SdWxlRW50cnkgfSBmcm9tIFwiLi9hcHBsaWNhdGlvblwiO1xuZXhwb3J0IHtcbiAgYWFhLFxuICBhbGwsXG4gIGFyY2hpdGVjdHVyZSxcbiAgY29kZXBlcmZlY3RQbHVnaW4sXG4gIGNvcmUsXG4gIGN1c3RvbVJ1bGVzLFxuICBkb2N1bWVudGF0aW9uLFxuICB0ZXN0aW5nLFxufSBmcm9tIFwiLi9pbmZyYXN0cnVjdHVyZVwiO1xuZXhwb3J0IHR5cGUgeyBDb2RlcGVyZmVjdFByZXNldCB9IGZyb20gXCIuL2luZnJhc3RydWN0dXJlXCI7XG4iXX0=