@codeperfect/eslint-plugin 1.0.0 → 2.0.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 (557) hide show
  1. package/README.md +26 -4
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/{custom-rules.d.ts → application/custom-rules.d.ts} +3 -0
  4. package/dist/application/custom-rules.d.ts.map +1 -0
  5. package/dist/application/custom-rules.js +74 -0
  6. package/dist/application/index.d.ts +4 -0
  7. package/dist/application/index.d.ts.map +1 -0
  8. package/dist/application/index.js +3 -0
  9. package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
  10. package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts +56 -0
  11. package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts.map +1 -0
  12. package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.js +149 -0
  13. package/dist/{architecture → domain/architecture}/consistent-barrel-files/consistent-barrel-files-listeners.d.ts +4 -4
  14. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +1 -0
  15. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +98 -0
  16. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts +45 -0
  17. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +1 -0
  18. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.js +64 -0
  19. package/dist/{architecture → domain/architecture}/consistent-barrel-files/exports-only-rule-test-utilities.d.ts +5 -4
  20. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +1 -0
  21. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +87 -0
  22. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +1 -0
  23. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.js +140 -0
  24. package/dist/domain/architecture/consistent-barrel-files/index.d.ts +5 -0
  25. package/dist/domain/architecture/consistent-barrel-files/index.d.ts.map +1 -0
  26. package/dist/domain/architecture/consistent-barrel-files/index.js +4 -0
  27. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +1 -0
  28. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +85 -0
  29. package/dist/{architecture → domain/architecture}/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts +1 -1
  30. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +1 -0
  31. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +91 -0
  32. package/dist/{architecture → domain/architecture}/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts +4 -6
  33. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts.map +1 -0
  34. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.js +95 -0
  35. package/dist/domain/architecture/consistent-barrel-files/rule.d.ts.map +1 -0
  36. package/dist/domain/architecture/consistent-barrel-files/rule.js +43 -0
  37. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts +4 -0
  38. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts.map +1 -0
  39. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.js +4 -0
  40. package/dist/{architecture → domain/architecture}/consistent-barrel-files/test-helpers.d.ts +48 -48
  41. package/dist/domain/architecture/consistent-barrel-files/test-helpers.d.ts.map +1 -0
  42. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts +20 -0
  43. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts.map +1 -0
  44. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.js +25 -0
  45. package/dist/domain/architecture/consistent-barrel-files/test-helpers.js +235 -0
  46. package/dist/domain/architecture/consistent-barrel-files/types.d.ts +19 -0
  47. package/dist/domain/architecture/consistent-barrel-files/types.d.ts.map +1 -0
  48. package/dist/domain/architecture/consistent-barrel-files/types.js +2 -0
  49. package/dist/{architecture → domain/architecture}/index.d.ts +1 -1
  50. package/dist/domain/architecture/index.d.ts.map +1 -0
  51. package/dist/domain/architecture/index.js +2 -0
  52. package/dist/{core → domain/core}/index.d.ts +2 -2
  53. package/dist/domain/core/index.d.ts.map +1 -0
  54. package/dist/domain/core/index.js +3 -0
  55. package/dist/domain/core/no-multiple-declarators/index.d.ts +2 -0
  56. package/dist/domain/core/no-multiple-declarators/index.d.ts.map +1 -0
  57. package/dist/domain/core/no-multiple-declarators/index.js +2 -0
  58. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts +101 -0
  59. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts.map +1 -0
  60. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.js +108 -0
  61. package/dist/{core → domain/core}/no-multiple-declarators/rule.d.ts +1 -0
  62. package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -0
  63. package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts +35 -0
  64. package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts.map +1 -0
  65. package/dist/domain/core/no-multiple-declarators/rule.fixes.js +95 -0
  66. package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts +4 -0
  67. package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts.map +1 -0
  68. package/dist/domain/core/no-multiple-declarators/rule.guardrails.js +4 -0
  69. package/dist/domain/core/no-multiple-declarators/rule.js +219 -0
  70. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts +4 -0
  71. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts.map +1 -0
  72. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.js +4 -0
  73. package/dist/domain/core/no-multiple-declarators/types.d.ts +77 -0
  74. package/dist/domain/core/no-multiple-declarators/types.d.ts.map +1 -0
  75. package/dist/domain/core/no-multiple-declarators/types.js +38 -0
  76. package/dist/domain/core/prefer-interface-types/index.d.ts +2 -0
  77. package/dist/domain/core/prefer-interface-types/index.d.ts.map +1 -0
  78. package/dist/domain/core/prefer-interface-types/index.js +2 -0
  79. package/dist/domain/core/prefer-interface-types/rule.d.ts.map +1 -0
  80. package/dist/domain/core/prefer-interface-types/rule.js +145 -0
  81. package/dist/domain/core/prefer-interface-types/test-helpers.d.ts.map +1 -0
  82. package/dist/domain/core/prefer-interface-types/test-helpers.js +116 -0
  83. package/dist/{custom-rule-documentation.d.ts → domain/custom-rule-documentation.d.ts} +1 -1
  84. package/dist/domain/custom-rule-documentation.d.ts.map +1 -0
  85. package/dist/domain/custom-rule-documentation.js +35 -0
  86. package/dist/domain/docs/index.d.ts +4 -0
  87. package/dist/domain/docs/index.d.ts.map +1 -0
  88. package/dist/domain/docs/index.js +4 -0
  89. package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +1 -0
  90. package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.js +129 -0
  91. package/dist/{docs → domain/docs}/no-interface-member-docs/comment-utilities.d.ts +1 -1
  92. package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -0
  93. package/dist/domain/docs/no-interface-member-docs/comment-utilities.js +146 -0
  94. package/dist/domain/docs/no-interface-member-docs/index.d.ts +2 -0
  95. package/dist/domain/docs/no-interface-member-docs/index.d.ts.map +1 -0
  96. package/dist/domain/docs/no-interface-member-docs/index.js +2 -0
  97. package/dist/{docs → domain/docs}/no-interface-member-docs/parameter-tags.d.ts +1 -1
  98. package/dist/domain/docs/no-interface-member-docs/parameter-tags.d.ts.map +1 -0
  99. package/dist/domain/docs/no-interface-member-docs/parameter-tags.js +101 -0
  100. package/dist/{docs → domain/docs}/no-interface-member-docs/parameter-utilities.d.ts +1 -1
  101. package/dist/domain/docs/no-interface-member-docs/parameter-utilities.d.ts.map +1 -0
  102. package/dist/domain/docs/no-interface-member-docs/parameter-utilities.js +125 -0
  103. package/dist/domain/docs/no-interface-member-docs/rule.d.ts.map +1 -0
  104. package/dist/domain/docs/no-interface-member-docs/rule.js +168 -0
  105. package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts.map +1 -0
  106. package/dist/domain/docs/no-interface-member-docs/test-helpers.js +157 -0
  107. package/dist/{docs → domain/docs}/no-interface-member-docs/types.d.ts +2 -2
  108. package/dist/domain/docs/no-interface-member-docs/types.d.ts.map +1 -0
  109. package/dist/domain/docs/no-interface-member-docs/types.js +2 -0
  110. package/dist/domain/docs/require-example-language/create-fixer.d.ts +5 -0
  111. package/dist/domain/docs/require-example-language/create-fixer.d.ts.map +1 -0
  112. package/dist/domain/docs/require-example-language/create-fixer.js +5 -0
  113. package/dist/domain/docs/require-example-language/empty-fence-fixes.d.ts.map +1 -0
  114. package/dist/domain/docs/require-example-language/empty-fence-fixes.js +169 -0
  115. package/dist/domain/docs/require-example-language/example-utilities.d.ts.map +1 -0
  116. package/dist/domain/docs/require-example-language/example-utilities.js +76 -0
  117. package/dist/{docs → domain/docs}/require-example-language/examples.d.ts +1 -1
  118. package/dist/domain/docs/require-example-language/examples.d.ts.map +1 -0
  119. package/dist/domain/docs/require-example-language/examples.js +181 -0
  120. package/dist/{docs → domain/docs}/require-example-language/fixes.d.ts +2 -2
  121. package/dist/domain/docs/require-example-language/fixes.d.ts.map +1 -0
  122. package/dist/domain/docs/require-example-language/fixes.js +182 -0
  123. package/dist/domain/docs/require-example-language/index.d.ts +3 -0
  124. package/dist/domain/docs/require-example-language/index.d.ts.map +1 -0
  125. package/dist/domain/docs/require-example-language/index.js +2 -0
  126. package/dist/{docs → domain/docs}/require-example-language/reporting.d.ts +1 -1
  127. package/dist/domain/docs/require-example-language/reporting.d.ts.map +1 -0
  128. package/dist/domain/docs/require-example-language/reporting.js +148 -0
  129. package/dist/domain/docs/require-example-language/rule.d.ts.map +1 -0
  130. package/dist/domain/docs/require-example-language/rule.js +34 -0
  131. package/dist/domain/docs/require-example-language/types.d.ts.map +1 -0
  132. package/dist/domain/docs/require-example-language/types.js +2 -0
  133. package/dist/domain/docs/single-line-jsdoc/index.d.ts +2 -0
  134. package/dist/domain/docs/single-line-jsdoc/index.d.ts.map +1 -0
  135. package/dist/domain/docs/single-line-jsdoc/index.js +2 -0
  136. package/dist/domain/docs/single-line-jsdoc/rule.d.ts.map +1 -0
  137. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts +4 -0
  138. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts.map +1 -0
  139. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.js +5 -0
  140. package/dist/domain/docs/single-line-jsdoc/rule.js +196 -0
  141. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts +4 -0
  142. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts.map +1 -0
  143. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.js +5 -0
  144. package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts.map +1 -0
  145. package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-content.js +95 -0
  146. package/dist/{docs → domain/docs}/single-line-jsdoc/single-line-jsdoc-utilities.d.ts +1 -1
  147. package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +1 -0
  148. package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +140 -0
  149. package/dist/domain/docs/test-helpers.d.ts.map +1 -0
  150. package/dist/domain/docs/test-helpers.js +107 -0
  151. package/dist/domain/index.d.ts +6 -0
  152. package/dist/domain/index.d.ts.map +1 -0
  153. package/dist/domain/index.js +6 -0
  154. package/dist/domain/testing/aaa/analyzer.analysis.d.ts +92 -0
  155. package/dist/domain/testing/aaa/analyzer.analysis.d.ts.map +1 -0
  156. package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts +4 -0
  157. package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -0
  158. package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +4 -0
  159. package/dist/domain/testing/aaa/analyzer.analysis.js +247 -0
  160. package/dist/domain/testing/aaa/analyzer.assertions.d.ts +93 -0
  161. package/dist/domain/testing/aaa/analyzer.assertions.d.ts.map +1 -0
  162. package/dist/domain/testing/aaa/analyzer.assertions.js +283 -0
  163. package/dist/domain/testing/aaa/analyzer.classification.d.ts +75 -0
  164. package/dist/domain/testing/aaa/analyzer.classification.d.ts.map +1 -0
  165. package/dist/domain/testing/aaa/analyzer.classification.js +201 -0
  166. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts +9 -0
  167. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts.map +1 -0
  168. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.js +10 -0
  169. package/dist/domain/testing/aaa/analyzer.d.ts +46 -0
  170. package/dist/domain/testing/aaa/analyzer.d.ts.map +1 -0
  171. package/dist/domain/testing/aaa/analyzer.js +59 -0
  172. package/dist/domain/testing/aaa/analyzer.super.d.ts +107 -0
  173. package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -0
  174. package/dist/domain/testing/aaa/analyzer.super.js +228 -0
  175. package/dist/{testing → domain/testing}/aaa/index.d.ts +2 -2
  176. package/dist/domain/testing/aaa/index.d.ts.map +1 -0
  177. package/dist/domain/testing/aaa/index.js +2 -0
  178. package/dist/domain/testing/aaa/types.d.ts +58 -0
  179. package/dist/domain/testing/aaa/types.d.ts.map +1 -0
  180. package/dist/domain/testing/aaa/types.js +2 -0
  181. package/dist/domain/testing/assert-actual-expected-names/index.d.ts +2 -0
  182. package/dist/domain/testing/assert-actual-expected-names/index.d.ts.map +1 -0
  183. package/dist/domain/testing/assert-actual-expected-names/index.js +2 -0
  184. package/dist/{testing → domain/testing}/assert-actual-expected-names/rule.d.ts +1 -0
  185. package/dist/domain/testing/assert-actual-expected-names/rule.d.ts.map +1 -0
  186. package/dist/domain/testing/assert-actual-expected-names/rule.js +113 -0
  187. package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts +2 -0
  188. package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts.map +1 -0
  189. package/dist/domain/testing/enforce-aaa-phase-purity/index.js +2 -0
  190. package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts +13 -0
  191. package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts.map +1 -0
  192. package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.js +134 -0
  193. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts +25 -0
  194. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts.map +1 -0
  195. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.js +138 -0
  196. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts +4 -0
  197. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts.map +1 -0
  198. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.js +4 -0
  199. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts +14 -0
  200. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts.map +1 -0
  201. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.js +180 -0
  202. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts +42 -0
  203. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts.map +1 -0
  204. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.js +188 -0
  205. package/dist/{testing → domain/testing}/enforce-aaa-phase-purity/rule.d.ts +1 -0
  206. package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts.map +1 -0
  207. package/dist/domain/testing/enforce-aaa-phase-purity/rule.js +34 -0
  208. package/dist/domain/testing/enforce-aaa-structure/index.d.ts +2 -0
  209. package/dist/domain/testing/enforce-aaa-structure/index.d.ts.map +1 -0
  210. package/dist/domain/testing/enforce-aaa-structure/index.js +2 -0
  211. package/dist/{testing → domain/testing}/enforce-aaa-structure/rule.d.ts +1 -0
  212. package/dist/domain/testing/enforce-aaa-structure/rule.d.ts.map +1 -0
  213. package/dist/domain/testing/enforce-aaa-structure/rule.js +85 -0
  214. package/dist/{testing → domain/testing}/index.d.ts +9 -8
  215. package/dist/domain/testing/index.d.ts.map +1 -0
  216. package/dist/domain/testing/index.js +10 -0
  217. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts +29 -0
  218. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts.map +1 -0
  219. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.js +90 -0
  220. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.d.ts +31 -0
  221. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.d.ts.map +1 -0
  222. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.js +43 -0
  223. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts +16 -0
  224. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts.map +1 -0
  225. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.js +205 -0
  226. package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts +28 -0
  227. package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts.map +1 -0
  228. package/dist/domain/testing/prefer-vi-mocked-import/fix.js +171 -0
  229. package/dist/domain/testing/prefer-vi-mocked-import/index.d.ts +2 -0
  230. package/dist/domain/testing/prefer-vi-mocked-import/index.d.ts.map +1 -0
  231. package/dist/domain/testing/prefer-vi-mocked-import/index.js +2 -0
  232. package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-bindings.d.ts +1 -1
  233. package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +1 -0
  234. package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.js +52 -0
  235. package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-declarations.d.ts +2 -1
  236. package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +1 -0
  237. package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.js +131 -0
  238. package/dist/domain/testing/prefer-vi-mocked-import/match-helpers.d.ts.map +1 -0
  239. package/dist/domain/testing/prefer-vi-mocked-import/match-helpers.js +102 -0
  240. package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-imports.d.ts +1 -1
  241. package/dist/domain/testing/prefer-vi-mocked-import/match-imports.d.ts.map +1 -0
  242. package/dist/domain/testing/prefer-vi-mocked-import/match-imports.js +156 -0
  243. package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-rewrites.d.ts +1 -1
  244. package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.d.ts.map +1 -0
  245. package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.js +119 -0
  246. package/dist/domain/testing/prefer-vi-mocked-import/match-walk.d.ts.map +1 -0
  247. package/dist/domain/testing/prefer-vi-mocked-import/match-walk.js +62 -0
  248. package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts +26 -0
  249. package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts.map +1 -0
  250. package/dist/domain/testing/prefer-vi-mocked-import/match.js +198 -0
  251. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts +20 -0
  252. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts.map +1 -0
  253. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.js +39 -0
  254. package/dist/domain/testing/prefer-vi-mocked-import/rule.d.ts.map +1 -0
  255. package/dist/domain/testing/prefer-vi-mocked-import/rule.js +36 -0
  256. package/dist/{testing → domain/testing}/prefer-vi-mocked-import/types.d.ts +1 -1
  257. package/dist/domain/testing/prefer-vi-mocked-import/types.d.ts.map +1 -0
  258. package/dist/domain/testing/prefer-vi-mocked-import/types.js +2 -0
  259. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts +86 -0
  260. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts.map +1 -0
  261. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.js +150 -0
  262. package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts +2 -0
  263. package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts.map +1 -0
  264. package/dist/domain/testing/prefer-vitest-incremental-casts/index.js +2 -0
  265. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts +14 -0
  266. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts.map +1 -0
  267. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.js +81 -0
  268. package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts +13 -0
  269. package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts.map +1 -0
  270. package/dist/domain/testing/prefer-vitest-incremental-casts/match.js +189 -0
  271. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts +25 -0
  272. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts.map +1 -0
  273. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.js +92 -0
  274. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts +32 -0
  275. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts.map +1 -0
  276. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.js +164 -0
  277. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts +5 -0
  278. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts.map +1 -0
  279. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts +4 -0
  280. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts.map +1 -0
  281. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.js +4 -0
  282. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts +4 -0
  283. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts.map +1 -0
  284. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.js +4 -0
  285. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.js +62 -0
  286. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts +4 -0
  287. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts.map +1 -0
  288. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.js +4 -0
  289. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts +24 -0
  290. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts.map +1 -0
  291. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.js +113 -0
  292. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts +36 -0
  293. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts.map +1 -0
  294. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.js +138 -0
  295. package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts +203 -0
  296. package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts.map +1 -0
  297. package/dist/domain/testing/prefer-vitest-incremental-casts/types.js +2 -0
  298. package/dist/domain/testing/require-aaa-sections/index.d.ts +2 -0
  299. package/dist/domain/testing/require-aaa-sections/index.d.ts.map +1 -0
  300. package/dist/domain/testing/require-aaa-sections/index.js +2 -0
  301. package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts +17 -0
  302. package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts.map +1 -0
  303. package/dist/domain/testing/require-aaa-sections/missing-section-fixes.js +150 -0
  304. package/dist/{testing → domain/testing}/require-aaa-sections/rule.d.ts +1 -0
  305. package/dist/domain/testing/require-aaa-sections/rule.d.ts.map +1 -0
  306. package/dist/domain/testing/require-aaa-sections/rule.js +129 -0
  307. package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts +104 -0
  308. package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts.map +1 -0
  309. package/dist/domain/testing/require-aaa-sections/rule.reporting.js +217 -0
  310. package/dist/domain/testing/require-act-result-capture/index.d.ts +2 -0
  311. package/dist/domain/testing/require-act-result-capture/index.d.ts.map +1 -0
  312. package/dist/domain/testing/require-act-result-capture/index.js +2 -0
  313. package/dist/{testing → domain/testing}/require-act-result-capture/rule.d.ts +1 -0
  314. package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -0
  315. package/dist/domain/testing/require-act-result-capture/rule.js +106 -0
  316. package/dist/domain/testing/require-test-companion/index.d.ts +3 -0
  317. package/dist/domain/testing/require-test-companion/index.d.ts.map +1 -0
  318. package/dist/domain/testing/require-test-companion/index.js +3 -0
  319. package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-listeners.d.ts +1 -1
  320. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts.map +1 -0
  321. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.js +145 -0
  322. package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts.map +1 -0
  323. package/dist/domain/testing/require-test-companion/require-test-companion-options.js +113 -0
  324. package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-test-helpers.d.ts +1 -1
  325. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +1 -0
  326. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.js +184 -0
  327. package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-utilities.d.ts +1 -1
  328. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts.map +1 -0
  329. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.js +26 -0
  330. package/dist/domain/testing/require-test-companion/rule.d.ts.map +1 -0
  331. package/dist/domain/testing/require-test-companion/rule.js +57 -0
  332. package/dist/domain/testing/require-test-companion/types.d.ts.map +1 -0
  333. package/dist/domain/testing/require-test-companion/types.js +2 -0
  334. package/dist/domain/testing/single-act-statement/index.d.ts +2 -0
  335. package/dist/domain/testing/single-act-statement/index.d.ts.map +1 -0
  336. package/dist/domain/testing/single-act-statement/index.js +2 -0
  337. package/dist/{testing → domain/testing}/single-act-statement/rule.d.ts +1 -0
  338. package/dist/domain/testing/single-act-statement/rule.d.ts.map +1 -0
  339. package/dist/domain/testing/single-act-statement/rule.js +34 -0
  340. package/dist/index.d.ts +4 -5
  341. package/dist/index.d.ts.map +1 -1
  342. package/dist/index.js +3 -6
  343. package/dist/{codeperfect-plugin.d.ts → infrastructure/codeperfect-plugin.d.ts} +2 -0
  344. package/dist/infrastructure/codeperfect-plugin.d.ts.map +1 -0
  345. package/dist/infrastructure/codeperfect-plugin.js +30 -0
  346. package/dist/infrastructure/index.d.ts +5 -0
  347. package/dist/infrastructure/index.d.ts.map +1 -0
  348. package/dist/infrastructure/index.js +4 -0
  349. package/dist/infrastructure/presets.d.ts +18 -0
  350. package/dist/infrastructure/presets.d.ts.map +1 -0
  351. package/dist/infrastructure/presets.js +81 -0
  352. package/package.json +54 -27
  353. package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +0 -1
  354. package/dist/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +0 -131
  355. package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts +0 -48
  356. package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +0 -1
  357. package/dist/architecture/consistent-barrel-files/consistent-barrel-files-options.js +0 -126
  358. package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +0 -1
  359. package/dist/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +0 -90
  360. package/dist/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +0 -1
  361. package/dist/architecture/consistent-barrel-files/exports-only-rule.js +0 -218
  362. package/dist/architecture/consistent-barrel-files/index.d.ts +0 -5
  363. package/dist/architecture/consistent-barrel-files/index.d.ts.map +0 -1
  364. package/dist/architecture/consistent-barrel-files/index.js +0 -4
  365. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +0 -1
  366. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +0 -100
  367. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +0 -1
  368. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +0 -90
  369. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts.map +0 -1
  370. package/dist/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.js +0 -154
  371. package/dist/architecture/consistent-barrel-files/rule.d.ts.map +0 -1
  372. package/dist/architecture/consistent-barrel-files/rule.js +0 -58
  373. package/dist/architecture/consistent-barrel-files/test-helpers.d.ts.map +0 -1
  374. package/dist/architecture/consistent-barrel-files/test-helpers.js +0 -229
  375. package/dist/architecture/consistent-barrel-files/types.d.ts +0 -25
  376. package/dist/architecture/consistent-barrel-files/types.d.ts.map +0 -1
  377. package/dist/architecture/consistent-barrel-files/types.js +0 -2
  378. package/dist/architecture/index.d.ts.map +0 -1
  379. package/dist/architecture/index.js +0 -2
  380. package/dist/benchmark-rules.d.ts +0 -83
  381. package/dist/benchmark-rules.d.ts.map +0 -1
  382. package/dist/benchmark-rules.js +0 -175
  383. package/dist/codeperfect-plugin.d.ts.map +0 -1
  384. package/dist/codeperfect-plugin.js +0 -29
  385. package/dist/core/index.d.ts.map +0 -1
  386. package/dist/core/index.js +0 -3
  387. package/dist/core/no-multiple-declarators/index.d.ts +0 -2
  388. package/dist/core/no-multiple-declarators/index.d.ts.map +0 -1
  389. package/dist/core/no-multiple-declarators/index.js +0 -2
  390. package/dist/core/no-multiple-declarators/rule.d.ts.map +0 -1
  391. package/dist/core/no-multiple-declarators/rule.js +0 -100
  392. package/dist/core/prefer-interface-types/index.d.ts +0 -2
  393. package/dist/core/prefer-interface-types/index.d.ts.map +0 -1
  394. package/dist/core/prefer-interface-types/index.js +0 -2
  395. package/dist/core/prefer-interface-types/rule.d.ts.map +0 -1
  396. package/dist/core/prefer-interface-types/rule.js +0 -145
  397. package/dist/core/prefer-interface-types/test-helpers.d.ts.map +0 -1
  398. package/dist/core/prefer-interface-types/test-helpers.js +0 -116
  399. package/dist/custom-rule-documentation.d.ts.map +0 -1
  400. package/dist/custom-rule-documentation.js +0 -35
  401. package/dist/custom-rules.d.ts.map +0 -1
  402. package/dist/custom-rules.js +0 -70
  403. package/dist/docs/index.d.ts +0 -4
  404. package/dist/docs/index.d.ts.map +0 -1
  405. package/dist/docs/index.js +0 -4
  406. package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +0 -1
  407. package/dist/docs/no-interface-member-docs/comment-utilities-test-helpers.js +0 -129
  408. package/dist/docs/no-interface-member-docs/comment-utilities.d.ts.map +0 -1
  409. package/dist/docs/no-interface-member-docs/comment-utilities.js +0 -146
  410. package/dist/docs/no-interface-member-docs/index.d.ts +0 -2
  411. package/dist/docs/no-interface-member-docs/index.d.ts.map +0 -1
  412. package/dist/docs/no-interface-member-docs/index.js +0 -2
  413. package/dist/docs/no-interface-member-docs/parameter-tags.d.ts.map +0 -1
  414. package/dist/docs/no-interface-member-docs/parameter-tags.js +0 -101
  415. package/dist/docs/no-interface-member-docs/parameter-utilities.d.ts.map +0 -1
  416. package/dist/docs/no-interface-member-docs/parameter-utilities.js +0 -125
  417. package/dist/docs/no-interface-member-docs/rule.d.ts.map +0 -1
  418. package/dist/docs/no-interface-member-docs/rule.js +0 -168
  419. package/dist/docs/no-interface-member-docs/test-helpers.d.ts.map +0 -1
  420. package/dist/docs/no-interface-member-docs/test-helpers.js +0 -157
  421. package/dist/docs/no-interface-member-docs/types.d.ts.map +0 -1
  422. package/dist/docs/no-interface-member-docs/types.js +0 -2
  423. package/dist/docs/require-example-language/empty-fence-fixes.d.ts.map +0 -1
  424. package/dist/docs/require-example-language/empty-fence-fixes.js +0 -169
  425. package/dist/docs/require-example-language/example-utilities.d.ts.map +0 -1
  426. package/dist/docs/require-example-language/example-utilities.js +0 -76
  427. package/dist/docs/require-example-language/examples.d.ts.map +0 -1
  428. package/dist/docs/require-example-language/examples.js +0 -181
  429. package/dist/docs/require-example-language/fixes.d.ts.map +0 -1
  430. package/dist/docs/require-example-language/fixes.js +0 -182
  431. package/dist/docs/require-example-language/index.d.ts +0 -3
  432. package/dist/docs/require-example-language/index.d.ts.map +0 -1
  433. package/dist/docs/require-example-language/index.js +0 -2
  434. package/dist/docs/require-example-language/reporting.d.ts.map +0 -1
  435. package/dist/docs/require-example-language/reporting.js +0 -145
  436. package/dist/docs/require-example-language/rule.d.ts.map +0 -1
  437. package/dist/docs/require-example-language/rule.js +0 -34
  438. package/dist/docs/require-example-language/types.d.ts.map +0 -1
  439. package/dist/docs/require-example-language/types.js +0 -2
  440. package/dist/docs/single-line-jsdoc/index.d.ts +0 -2
  441. package/dist/docs/single-line-jsdoc/index.d.ts.map +0 -1
  442. package/dist/docs/single-line-jsdoc/index.js +0 -2
  443. package/dist/docs/single-line-jsdoc/rule.d.ts.map +0 -1
  444. package/dist/docs/single-line-jsdoc/rule.js +0 -196
  445. package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts.map +0 -1
  446. package/dist/docs/single-line-jsdoc/single-line-jsdoc-content.js +0 -95
  447. package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +0 -1
  448. package/dist/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +0 -140
  449. package/dist/docs/test-helpers.d.ts.map +0 -1
  450. package/dist/docs/test-helpers.js +0 -107
  451. package/dist/presets.d.ts +0 -10
  452. package/dist/presets.d.ts.map +0 -1
  453. package/dist/presets.js +0 -50
  454. package/dist/rules/index.d.ts +0 -5
  455. package/dist/rules/index.d.ts.map +0 -1
  456. package/dist/rules/index.js +0 -6
  457. package/dist/testing/aaa/analyzer.d.ts +0 -36
  458. package/dist/testing/aaa/analyzer.d.ts.map +0 -1
  459. package/dist/testing/aaa/analyzer.js +0 -490
  460. package/dist/testing/aaa/index.d.ts.map +0 -1
  461. package/dist/testing/aaa/index.js +0 -2
  462. package/dist/testing/aaa/types.d.ts +0 -31
  463. package/dist/testing/aaa/types.d.ts.map +0 -1
  464. package/dist/testing/aaa/types.js +0 -2
  465. package/dist/testing/assert-actual-expected-names/index.d.ts +0 -2
  466. package/dist/testing/assert-actual-expected-names/index.d.ts.map +0 -1
  467. package/dist/testing/assert-actual-expected-names/index.js +0 -2
  468. package/dist/testing/assert-actual-expected-names/rule.d.ts.map +0 -1
  469. package/dist/testing/assert-actual-expected-names/rule.js +0 -54
  470. package/dist/testing/enforce-aaa-phase-purity/index.d.ts +0 -2
  471. package/dist/testing/enforce-aaa-phase-purity/index.d.ts.map +0 -1
  472. package/dist/testing/enforce-aaa-phase-purity/index.js +0 -2
  473. package/dist/testing/enforce-aaa-phase-purity/rule.d.ts.map +0 -1
  474. package/dist/testing/enforce-aaa-phase-purity/rule.js +0 -110
  475. package/dist/testing/enforce-aaa-structure/index.d.ts +0 -2
  476. package/dist/testing/enforce-aaa-structure/index.d.ts.map +0 -1
  477. package/dist/testing/enforce-aaa-structure/index.js +0 -2
  478. package/dist/testing/enforce-aaa-structure/rule.d.ts.map +0 -1
  479. package/dist/testing/enforce-aaa-structure/rule.js +0 -48
  480. package/dist/testing/index.d.ts.map +0 -1
  481. package/dist/testing/index.js +0 -9
  482. package/dist/testing/prefer-vi-mocked-import/fix.d.ts +0 -16
  483. package/dist/testing/prefer-vi-mocked-import/fix.d.ts.map +0 -1
  484. package/dist/testing/prefer-vi-mocked-import/fix.js +0 -224
  485. package/dist/testing/prefer-vi-mocked-import/index.d.ts +0 -2
  486. package/dist/testing/prefer-vi-mocked-import/index.d.ts.map +0 -1
  487. package/dist/testing/prefer-vi-mocked-import/index.js +0 -2
  488. package/dist/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +0 -1
  489. package/dist/testing/prefer-vi-mocked-import/match-bindings.js +0 -52
  490. package/dist/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +0 -1
  491. package/dist/testing/prefer-vi-mocked-import/match-declarations.js +0 -99
  492. package/dist/testing/prefer-vi-mocked-import/match-helpers.d.ts.map +0 -1
  493. package/dist/testing/prefer-vi-mocked-import/match-helpers.js +0 -102
  494. package/dist/testing/prefer-vi-mocked-import/match-imports.d.ts.map +0 -1
  495. package/dist/testing/prefer-vi-mocked-import/match-imports.js +0 -156
  496. package/dist/testing/prefer-vi-mocked-import/match-rewrites.d.ts.map +0 -1
  497. package/dist/testing/prefer-vi-mocked-import/match-rewrites.js +0 -119
  498. package/dist/testing/prefer-vi-mocked-import/match-walk.d.ts.map +0 -1
  499. package/dist/testing/prefer-vi-mocked-import/match-walk.js +0 -62
  500. package/dist/testing/prefer-vi-mocked-import/match.d.ts +0 -15
  501. package/dist/testing/prefer-vi-mocked-import/match.d.ts.map +0 -1
  502. package/dist/testing/prefer-vi-mocked-import/match.js +0 -193
  503. package/dist/testing/prefer-vi-mocked-import/rule.d.ts.map +0 -1
  504. package/dist/testing/prefer-vi-mocked-import/rule.js +0 -32
  505. package/dist/testing/prefer-vi-mocked-import/types.d.ts.map +0 -1
  506. package/dist/testing/prefer-vi-mocked-import/types.js +0 -2
  507. package/dist/testing/require-aaa-sections/index.d.ts +0 -2
  508. package/dist/testing/require-aaa-sections/index.d.ts.map +0 -1
  509. package/dist/testing/require-aaa-sections/index.js +0 -2
  510. package/dist/testing/require-aaa-sections/rule.d.ts.map +0 -1
  511. package/dist/testing/require-aaa-sections/rule.js +0 -111
  512. package/dist/testing/require-act-result-capture/index.d.ts +0 -2
  513. package/dist/testing/require-act-result-capture/index.d.ts.map +0 -1
  514. package/dist/testing/require-act-result-capture/index.js +0 -2
  515. package/dist/testing/require-act-result-capture/rule.d.ts.map +0 -1
  516. package/dist/testing/require-act-result-capture/rule.js +0 -34
  517. package/dist/testing/require-test-companion/index.d.ts +0 -3
  518. package/dist/testing/require-test-companion/index.d.ts.map +0 -1
  519. package/dist/testing/require-test-companion/index.js +0 -3
  520. package/dist/testing/require-test-companion/require-test-companion-listeners.d.ts.map +0 -1
  521. package/dist/testing/require-test-companion/require-test-companion-listeners.js +0 -145
  522. package/dist/testing/require-test-companion/require-test-companion-options.d.ts.map +0 -1
  523. package/dist/testing/require-test-companion/require-test-companion-options.js +0 -112
  524. package/dist/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +0 -1
  525. package/dist/testing/require-test-companion/require-test-companion-test-helpers.js +0 -183
  526. package/dist/testing/require-test-companion/require-test-companion-utilities.d.ts.map +0 -1
  527. package/dist/testing/require-test-companion/require-test-companion-utilities.js +0 -26
  528. package/dist/testing/require-test-companion/rule.d.ts.map +0 -1
  529. package/dist/testing/require-test-companion/rule.js +0 -57
  530. package/dist/testing/require-test-companion/types.d.ts.map +0 -1
  531. package/dist/testing/require-test-companion/types.js +0 -2
  532. package/dist/testing/single-act-statement/index.d.ts +0 -2
  533. package/dist/testing/single-act-statement/index.d.ts.map +0 -1
  534. package/dist/testing/single-act-statement/index.js +0 -2
  535. package/dist/testing/single-act-statement/rule.d.ts.map +0 -1
  536. package/dist/testing/single-act-statement/rule.js +0 -33
  537. /package/dist/{architecture → domain/architecture}/consistent-barrel-files/exports-only-rule.d.ts +0 -0
  538. /package/dist/{architecture → domain/architecture}/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts +0 -0
  539. /package/dist/{architecture → domain/architecture}/consistent-barrel-files/rule.d.ts +0 -0
  540. /package/dist/{core → domain/core}/prefer-interface-types/rule.d.ts +0 -0
  541. /package/dist/{core → domain/core}/prefer-interface-types/test-helpers.d.ts +0 -0
  542. /package/dist/{docs → domain/docs}/no-interface-member-docs/comment-utilities-test-helpers.d.ts +0 -0
  543. /package/dist/{docs → domain/docs}/no-interface-member-docs/rule.d.ts +0 -0
  544. /package/dist/{docs → domain/docs}/no-interface-member-docs/test-helpers.d.ts +0 -0
  545. /package/dist/{docs → domain/docs}/require-example-language/empty-fence-fixes.d.ts +0 -0
  546. /package/dist/{docs → domain/docs}/require-example-language/example-utilities.d.ts +0 -0
  547. /package/dist/{docs → domain/docs}/require-example-language/rule.d.ts +0 -0
  548. /package/dist/{docs → domain/docs}/require-example-language/types.d.ts +0 -0
  549. /package/dist/{docs → domain/docs}/single-line-jsdoc/rule.d.ts +0 -0
  550. /package/dist/{docs → domain/docs}/single-line-jsdoc/single-line-jsdoc-content.d.ts +0 -0
  551. /package/dist/{docs → domain/docs}/test-helpers.d.ts +0 -0
  552. /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-helpers.d.ts +0 -0
  553. /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/match-walk.d.ts +0 -0
  554. /package/dist/{testing → domain/testing}/prefer-vi-mocked-import/rule.d.ts +0 -0
  555. /package/dist/{testing → domain/testing}/require-test-companion/require-test-companion-options.d.ts +0 -0
  556. /package/dist/{testing → domain/testing}/require-test-companion/rule.d.ts +0 -0
  557. /package/dist/{testing → domain/testing}/require-test-companion/types.d.ts +0 -0
@@ -0,0 +1,181 @@
1
+ import { getFenceLanguage, getInlineContent, getLineMeta, getPrefix, hasLineContent, } from "./example-utilities.js";
2
+ /** Captures `@example` headers and bodies for analysis. */
3
+ const examplePattern = /^(?<header>\s*\*?\s*@example\b[^\n]*)(?<body>[\s\S]*?)(?=^\s*\*?\s*@\w+|(?![\s\S]))/gmu;
4
+ /**
5
+ * Updates fence state based on the detected language.
6
+ * @param state Current fence tracking state.
7
+ * @param language Fence language string.
8
+ * @returns Updated fence tracking state.
9
+ * @example
10
+ * ```typescript
11
+ * const next = updateFenceState(state, "typescript");
12
+ * ```
13
+ */
14
+ const updateFenceState = (state, language) => {
15
+ if (!state.inFence) {
16
+ if (language.length === 0) {
17
+ return { ...state, missingLanguage: true, sawFence: true };
18
+ }
19
+ return {
20
+ ...state,
21
+ currentFenceHasContent: false,
22
+ inFence: true,
23
+ missingLanguage: false,
24
+ sawFence: true,
25
+ };
26
+ }
27
+ return {
28
+ ...state,
29
+ currentFenceHasContent: false,
30
+ hasEmptyFence: state.hasEmptyFence || !state.currentFenceHasContent,
31
+ inFence: false,
32
+ missingLanguage: false,
33
+ sawFence: true,
34
+ };
35
+ };
36
+ /**
37
+ * Updates fence tracking for a single example line.
38
+ * @param state Current fence tracking state.
39
+ * @param line Example line to inspect.
40
+ * @returns Updated fence tracking state.
41
+ * @example
42
+ * ```typescript
43
+ * const next = updateFenceStateForLine(state, " * ok");
44
+ * ```
45
+ */
46
+ const updateFenceStateForLine = (state, line) => {
47
+ const language = getFenceLanguage(line);
48
+ if (language !== void 0) {
49
+ return updateFenceState(state, language);
50
+ }
51
+ if (state.inFence && hasLineContent(line)) {
52
+ return { ...state, currentFenceHasContent: true };
53
+ }
54
+ return state;
55
+ };
56
+ /**
57
+ * Analyzes fenced code blocks for missing language identifiers.
58
+ * @param content Example content to analyze.
59
+ * @returns Fence analysis results.
60
+ * @example
61
+ * ```typescript
62
+ * const analysis = analyzeFenceContent("```typescript\nconst value = 1;\n```");
63
+ * ```
64
+ */
65
+ function analyzeFenceContent(content) {
66
+ const lines = content.split(/\r?\n/u);
67
+ let state = {
68
+ currentFenceHasContent: false,
69
+ hasEmptyFence: false,
70
+ inFence: false,
71
+ missingLanguage: false,
72
+ sawFence: false,
73
+ };
74
+ for (const line of lines) {
75
+ state = updateFenceStateForLine(state, line);
76
+ if (state.missingLanguage) {
77
+ break;
78
+ }
79
+ }
80
+ if (state.inFence && !state.currentFenceHasContent) {
81
+ state = { ...state, hasEmptyFence: true };
82
+ }
83
+ return {
84
+ hasEmptyFence: state.hasEmptyFence,
85
+ missingLanguage: state.missingLanguage,
86
+ sawFence: state.sawFence,
87
+ };
88
+ }
89
+ /**
90
+ * Builds example content from an inline header and body lines.
91
+ * @param context Example header and body lines.
92
+ * @returns Combined example content.
93
+ * @example
94
+ * ```typescript
95
+ * const content = buildExampleContent({ body: "* ok", header: "* @example" });
96
+ * ```
97
+ */
98
+ function buildExampleContent(context) {
99
+ const { body, header } = context;
100
+ const inlineContent = getInlineContent(header);
101
+ if (inlineContent.length > 0) {
102
+ return `${inlineContent}\n${body}`;
103
+ }
104
+ return body;
105
+ }
106
+ /**
107
+ * Builds an Example from a regex match and raw comment value.
108
+ * @param match Regex match from the example pattern.
109
+ * @param commentValue Raw comment value.
110
+ * @returns Example metadata extracted from the match.
111
+ * @example
112
+ * ```typescript
113
+ * const example = buildExampleFromMatch(match, commentValue);
114
+ * ```
115
+ */
116
+ function buildExampleFromMatch(match, commentValue) {
117
+ const [full] = match;
118
+ const header = match.groups?.["header"] ?? "";
119
+ const body = match.groups?.["body"] ?? "";
120
+ const startOffset = match.index ?? 0;
121
+ const content = buildExampleContent({ body, header });
122
+ const prefix = getPrefix(header);
123
+ const { endIndex, endOffset, lineIndex } = getLineMeta({
124
+ commentValue,
125
+ full,
126
+ startOffset,
127
+ });
128
+ return {
129
+ content: content.trim(),
130
+ endIndex,
131
+ endOffset,
132
+ lineIndex,
133
+ prefix,
134
+ startOffset,
135
+ };
136
+ }
137
+ /**
138
+ * Checks example content for required fences and language.
139
+ * @param content Example content to inspect.
140
+ * @returns Problem identifier when the content is invalid.
141
+ * @example
142
+ * ```typescript
143
+ * const problem = checkExampleContent("```typescript\nconst ok = true;\n```");
144
+ * ```
145
+ */
146
+ function checkExampleContent(content) {
147
+ if (content.trim().length === 0) {
148
+ return "emptyExample";
149
+ }
150
+ const { hasEmptyFence, missingLanguage, sawFence } = analyzeFenceContent(content);
151
+ if (missingLanguage) {
152
+ return "missingLanguage";
153
+ }
154
+ if (sawFence && hasEmptyFence) {
155
+ return "emptyExample";
156
+ }
157
+ if (!sawFence) {
158
+ return "missingFence";
159
+ }
160
+ return void 0;
161
+ }
162
+ /**
163
+ * Extracts all `@example` entries from a JSDoc comment value.
164
+ * Uses a multiline regex to capture the header and following lines
165
+ * until the next JSDoc tag or the end of the comment.
166
+ * @param commentValue Raw comment value.
167
+ * @returns Extracted examples.
168
+ * @example
169
+ * ```typescript
170
+ * const examples = getExamples("* @example\n* ```typescript\n* ok\n* ```");
171
+ * ```
172
+ */
173
+ function getExamples(commentValue) {
174
+ const examples = [];
175
+ for (const match of commentValue.matchAll(examplePattern)) {
176
+ examples.push(buildExampleFromMatch(match, commentValue));
177
+ }
178
+ return examples;
179
+ }
180
+ export { buildExampleFromMatch, checkExampleContent, getExamples };
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhhbXBsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2RvY3MvcmVxdWlyZS1leGFtcGxlLWxhbmd1YWdlL2V4YW1wbGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxTQUFTLEVBQ1QsY0FBYyxHQUNmLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsMkRBQTJEO0FBQzNELE1BQU0sY0FBYyxHQUNsQix3RkFBd0YsQ0FBQztBQW9CM0Y7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsUUFBZ0IsRUFBYyxFQUFFO0lBQzNFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkIsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFCLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM3RCxDQUFDO1FBRUQsT0FBTztZQUNMLEdBQUcsS0FBSztZQUNSLHNCQUFzQixFQUFFLEtBQUs7WUFDN0IsT0FBTyxFQUFFLElBQUk7WUFDYixlQUFlLEVBQUUsS0FBSztZQUN0QixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTztRQUNMLEdBQUcsS0FBSztRQUNSLHNCQUFzQixFQUFFLEtBQUs7UUFDN0IsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhLElBQUksQ0FBQyxLQUFLLENBQUMsc0JBQXNCO1FBQ25FLE9BQU8sRUFBRSxLQUFLO1FBQ2QsZUFBZSxFQUFFLEtBQUs7UUFDdEIsUUFBUSxFQUFFLElBQUk7S0FDZixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSx1QkFBdUIsR0FBRyxDQUM5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IFwiLi90eXBlc1wiO1xuXG5pbXBvcnQge1xuICBnZXRGZW5jZUxhbmd1YWdlLFxuICBnZXRJbmxpbmVDb250ZW50LFxuICBnZXRMaW5lTWV0YSxcbiAgZ2V0UHJlZml4LFxuICBoYXNMaW5lQ29udGVudCxcbn0gZnJvbSBcIi4vZXhhbXBsZS11dGlsaXRpZXNcIjtcblxuLyoqIENhcHR1cmVzIGBAZXhhbXBsZWAgaGVhZGVycyBhbmQgYm9kaWVzIGZvciBhbmFseXNpcy4gKi9cbmNvbnN0IGV4YW1wbGVQYXR0ZXJuID1cbiAgL14oPzxoZWFkZXI+XFxzKlxcKj9cXHMqQGV4YW1wbGVcXGJbXlxcbl0qKSg/PGJvZHk+W1xcc1xcU10qPykoPz1eXFxzKlxcKj9cXHMqQFxcdyt8KD8hW1xcc1xcU10pKS9nbXU7XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBGZW5jZVN0YXRlIHtcbiAgLyoqIEN1cnJlbnRGZW5jZUhhc0NvbnRlbnQgZmllbGQgdmFsdWUuICovXG4gIGN1cnJlbnRGZW5jZUhhc0NvbnRlbnQ6IGJvb2xlYW47XG5cbiAgLyoqIEhhc0VtcHR5RmVuY2UgZmllbGQgdmFsdWUuICovXG4gIGhhc0VtcHR5RmVuY2U6IGJvb2xlYW47XG5cbiAgLyoqIEluRmVuY2UgZmllbGQgdmFsdWUuICovXG4gIGluRmVuY2U6IGJvb2xlYW47XG5cbiAgLyoqIE1pc3NpbmdMYW5ndWFnZSBmaWVsZCB2YWx1ZS4gKi9cbiAgbWlzc2luZ0xhbmd1YWdlOiBib29sZWFuO1xuXG4gIC8qKiBTYXdGZW5jZSBmaWVsZCB2YWx1ZS4gKi9cbiAgc2F3RmVuY2U6IGJvb2xlYW47XG59XG5cbi8qKlxuICogVXBkYXRlcyBmZW5jZSBzdGF0ZSBiYXNlZCBvbiB0aGUgZGV0ZWN0ZWQgbGFuZ3VhZ2UuXG4gKiBAcGFyYW0gc3RhdGUgQ3VycmVudCBmZW5jZSB0cmFja2luZyBzdGF0ZS5cbiAqIEBwYXJhbSBsYW5ndWFnZSBGZW5jZSBsYW5ndWFnZSBzdHJpbmcuXG4gKiBAcmV0dXJucyBVcGRhdGVkIGZlbmNlIHRyYWNraW5nIHN0YXRlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG5leHQgPSB1cGRhdGVGZW5jZVN0YXRlKHN0YXRlLCBcInR5cGVzY3JpcHRcIik7XG4gKiBgYGBcbiAqL1xuY29uc3QgdXBkYXRlRmVuY2VTdGF0ZSA9IChzdGF0ZTogRmVuY2VTdGF0ZSwgbGFuZ3VhZ2U6IHN0cmluZyk6IEZlbmNlU3RhdGUgPT4ge1xuICBpZiAoIXN0YXRlLmluRmVuY2UpIHtcbiAgICBpZiAobGFuZ3VhZ2UubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbWlzc2luZ0xhbmd1YWdlOiB0cnVlLCBzYXdGZW5jZTogdHJ1ZSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGN1cnJlbnRGZW5jZUhhc0NvbnRlbnQ6IGZhbHNlLFxuICAgICAgaW5GZW5jZTogdHJ1ZSxcbiAgICAgIG1pc3NpbmdMYW5ndWFnZTogZmFsc2UsXG4gICAgICBzYXdGZW5jZTogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBjdXJyZW50RmVuY2VIYXNDb250ZW50OiBmYWxzZSxcbiAgICBoYXNFbXB0eUZlbmNlOiBzdGF0ZS5oYXNFbXB0eUZlbmNlIHx8ICFzdGF0ZS5jdXJyZW50RmVuY2VIYXNDb250ZW50LFxuICAgIGluRmVuY2U6IGZhbHNlLFxuICAgIG1pc3NpbmdMYW5ndWFnZTogZmFsc2UsXG4gICAgc2F3RmVuY2U6IHRydWUsXG4gIH07XG59O1xuXG4vKipcbiAqIFVwZGF0ZXMgZmVuY2UgdHJhY2tpbmcgZm9yIGEgc2luZ2xlIGV4YW1wbGUgbGluZS5cbiAqIEBwYXJhbSBzdGF0ZSBDdXJyZW50IGZlbmNlIHRyYWNraW5nIHN0YXRlLlxuICogQHBhcmFtIGxpbmUgRXhhbXBsZSBsaW5lIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBVcGRhdGVkIGZlbmNlIHRyYWNraW5nIHN0YXRlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG5leHQgPSB1cGRhdGVGZW5jZVN0YXRlRm9yTGluZShzdGF0ZSwgXCIgKiBva1wiKTtcbiAqIGBgYFxuICovXG5jb25zdCB1cGRhdGVGZW5jZVN0YXRlRm9yTGluZSA9IChcbiAgc3RhdGU6IEZlbmNlU3RhdGUsXG4gIGxpbmU6IHN0cmluZyxcbik6IEZlbmNlU3RhdGUgPT4ge1xuICBjb25zdCBsYW5ndWFnZSA9IGdldEZlbmNlTGFuZ3VhZ2UobGluZSk7XG5cbiAgaWYgKGxhbmd1YWdlICE9PSB2b2lkIDApIHtcbiAgICByZXR1cm4gdXBkYXRlRmVuY2VTdGF0ZShzdGF0ZSwgbGFuZ3VhZ2UpO1xuICB9XG5cbiAgaWYgKHN0YXRlLmluRmVuY2UgJiYgaGFzTGluZUNvbnRlbnQobGluZSkpIHtcbiAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudEZlbmNlSGFzQ29udGVudDogdHJ1ZSB9O1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlO1xufTtcblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIEV4YW1wbGVDb250ZW50Q29udGV4dCB7XG4gIC8qKiBCb2R5IGZpZWxkIHZhbHVlLiAqL1xuICBib2R5OiBzdHJpbmc7XG5cbiAgLyoqIEhlYWRlciBmaWVsZCB2YWx1ZS4gKi9cbiAgaGVhZGVyOiBzdHJpbmc7XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBGZW5jZUFuYWx5c2lzIHtcbiAgLyoqIEhhc0VtcHR5RmVuY2UgZmllbGQgdmFsdWUuICovXG4gIGhhc0VtcHR5RmVuY2U6IGJvb2xlYW47XG5cbiAgLyoqIE1pc3NpbmdMYW5ndWFnZSBmaWVsZCB2YWx1ZS4gKi9cbiAgbWlzc2luZ0xhbmd1YWdlOiBib29sZWFuO1xuXG4gIC8qKiBTYXdGZW5jZSBmaWVsZCB2YWx1ZS4gKi9cbiAgc2F3RmVuY2U6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQW5hbHl6ZXMgZmVuY2VkIGNvZGUgYmxvY2tzIGZvciBtaXNzaW5nIGxhbmd1YWdlIGlkZW50aWZpZXJzLlxuICogQHBhcmFtIGNvbnRlbnQgRXhhbXBsZSBjb250ZW50IHRvIGFuYWx5emUuXG4gKiBAcmV0dXJucyBGZW5jZSBhbmFseXNpcyByZXN1bHRzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGFuYWx5c2lzID0gYW5hbHl6ZUZlbmNlQ29udGVudChcImBgYHR5cGVzY3JpcHRcXG5jb25zdCB2YWx1ZSA9IDE7XFxuYGBgXCIpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGFuYWx5emVGZW5jZUNvbnRlbnQoY29udGVudDogc3RyaW5nKTogRmVuY2VBbmFseXNpcyB7XG4gIGNvbnN0IGxpbmVzID0gY29udGVudC5zcGxpdCgvXFxyP1xcbi91KTtcbiAgbGV0IHN0YXRlOiBGZW5jZVN0YXRlID0ge1xuICAgIGN1cnJlbnRGZW5jZUhhc0NvbnRlbnQ6IGZhbHNlLFxuICAgIGhhc0VtcHR5RmVuY2U6IGZhbHNlLFxuICAgIGluRmVuY2U6IGZhbHNlLFxuICAgIG1pc3NpbmdMYW5ndWFnZTogZmFsc2UsXG4gICAgc2F3RmVuY2U6IGZhbHNlLFxuICB9O1xuXG4gIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgIHN0YXRlID0gdXBkYXRlRmVuY2VTdGF0ZUZvckxpbmUoc3RhdGUsIGxpbmUpO1xuXG4gICAgaWYgKHN0YXRlLm1pc3NpbmdMYW5ndWFnZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXRlLmluRmVuY2UgJiYgIXN0YXRlLmN1cnJlbnRGZW5jZUhhc0NvbnRlbnQpIHtcbiAgICBzdGF0ZSA9IHsgLi4uc3RhdGUsIGhhc0VtcHR5RmVuY2U6IHRydWUgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaGFzRW1wdHlGZW5jZTogc3RhdGUuaGFzRW1wdHlGZW5jZSxcbiAgICBtaXNzaW5nTGFuZ3VhZ2U6IHN0YXRlLm1pc3NpbmdMYW5ndWFnZSxcbiAgICBzYXdGZW5jZTogc3RhdGUuc2F3RmVuY2UsXG4gIH07XG59XG5cbi8qKlxuICogQnVpbGRzIGV4YW1wbGUgY29udGVudCBmcm9tIGFuIGlubGluZSBoZWFkZXIgYW5kIGJvZHkgbGluZXMuXG4gKiBAcGFyYW0gY29udGV4dCBFeGFtcGxlIGhlYWRlciBhbmQgYm9keSBsaW5lcy5cbiAqIEByZXR1cm5zIENvbWJpbmVkIGV4YW1wbGUgY29udGVudC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjb250ZW50ID0gYnVpbGRFeGFtcGxlQ29udGVudCh7IGJvZHk6IFwiKiBva1wiLCBoZWFkZXI6IFwiKiBAZXhhbXBsZVwiIH0pO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkRXhhbXBsZUNvbnRlbnQoY29udGV4dDogRXhhbXBsZUNvbnRlbnRDb250ZXh0KTogc3RyaW5nIHtcbiAgY29uc3QgeyBib2R5LCBoZWFkZXIgfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGlubGluZUNvbnRlbnQgPSBnZXRJbmxpbmVDb250ZW50KGhlYWRlcik7XG5cbiAgaWYgKGlubGluZUNvbnRlbnQubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBgJHtpbmxpbmVDb250ZW50fVxcbiR7Ym9keX1gO1xuICB9XG5cbiAgcmV0dXJuIGJvZHk7XG59XG5cbi8qKlxuICogQnVpbGRzIGFuIEV4YW1wbGUgZnJvbSBhIHJlZ2V4IG1hdGNoIGFuZCByYXcgY29tbWVudCB2YWx1ZS5cbiAqIEBwYXJhbSBtYXRjaCBSZWdleCBtYXRjaCBmcm9tIHRoZSBleGFtcGxlIHBhdHRlcm4uXG4gKiBAcGFyYW0gY29tbWVudFZhbHVlIFJhdyBjb21tZW50IHZhbHVlLlxuICogQHJldHVybnMgRXhhbXBsZSBtZXRhZGF0YSBleHRyYWN0ZWQgZnJvbSB0aGUgbWF0Y2guXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZXhhbXBsZSA9IGJ1aWxkRXhhbXBsZUZyb21NYXRjaChtYXRjaCwgY29tbWVudFZhbHVlKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBidWlsZEV4YW1wbGVGcm9tTWF0Y2goXG4gIG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5LFxuICBjb21tZW50VmFsdWU6IHN0cmluZyxcbik6IEV4YW1wbGUge1xuICBjb25zdCBbZnVsbF0gPSBtYXRjaDtcbiAgY29uc3QgaGVhZGVyID0gbWF0Y2guZ3JvdXBzPy5bXCJoZWFkZXJcIl0gPz8gXCJcIjtcbiAgY29uc3QgYm9keSA9IG1hdGNoLmdyb3Vwcz8uW1wiYm9keVwiXSA/PyBcIlwiO1xuICBjb25zdCBzdGFydE9mZnNldCA9IG1hdGNoLmluZGV4ID8/IDA7XG4gIGNvbnN0IGNvbnRlbnQgPSBidWlsZEV4YW1wbGVDb250ZW50KHsgYm9keSwgaGVhZGVyIH0pO1xuICBjb25zdCBwcmVmaXggPSBnZXRQcmVmaXgoaGVhZGVyKTtcbiAgY29uc3QgeyBlbmRJbmRleCwgZW5kT2Zmc2V0LCBsaW5lSW5kZXggfSA9IGdldExpbmVNZXRhKHtcbiAgICBjb21tZW50VmFsdWUsXG4gICAgZnVsbCxcbiAgICBzdGFydE9mZnNldCxcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBjb250ZW50OiBjb250ZW50LnRyaW0oKSxcbiAgICBlbmRJbmRleCxcbiAgICBlbmRPZmZzZXQsXG4gICAgbGluZUluZGV4LFxuICAgIHByZWZpeCxcbiAgICBzdGFydE9mZnNldCxcbiAgfTtcbn1cblxuLyoqXG4gKiBDaGVja3MgZXhhbXBsZSBjb250ZW50IGZvciByZXF1aXJlZCBmZW5jZXMgYW5kIGxhbmd1YWdlLlxuICogQHBhcmFtIGNvbnRlbnQgRXhhbXBsZSBjb250ZW50IHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBQcm9ibGVtIGlkZW50aWZpZXIgd2hlbiB0aGUgY29udGVudCBpcyBpbnZhbGlkLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHByb2JsZW0gPSBjaGVja0V4YW1wbGVDb250ZW50KFwiYGBgdHlwZXNjcmlwdFxcbmNvbnN0IG9rID0gdHJ1ZTtcXG5gYGBcIik7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gY2hlY2tFeGFtcGxlQ29udGVudChjb250ZW50OiBzdHJpbmcpOiBQcm9ibGVtIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGNvbnRlbnQudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBcImVtcHR5RXhhbXBsZVwiO1xuICB9XG4gIGNvbnN0IHsgaGFzRW1wdHlGZW5jZSwgbWlzc2luZ0xhbmd1YWdlLCBzYXdGZW5jZSB9ID1cbiAgICBhbmFseXplRmVuY2VDb250ZW50KGNvbnRlbnQpO1xuXG4gIGlmIChtaXNzaW5nTGFuZ3VhZ2UpIHtcbiAgICByZXR1cm4gXCJtaXNzaW5nTGFuZ3VhZ2VcIjtcbiAgfVxuXG4gIGlmIChzYXdGZW5jZSAmJiBoYXNFbXB0eUZlbmNlKSB7XG4gICAgcmV0dXJuIFwiZW1wdHlFeGFtcGxlXCI7XG4gIH1cblxuICBpZiAoIXNhd0ZlbmNlKSB7XG4gICAgcmV0dXJuIFwibWlzc2luZ0ZlbmNlXCI7XG4gIH1cblxuICByZXR1cm4gdm9pZCAwO1xufVxuXG4vKipcbiAqIEV4dHJhY3RzIGFsbCBgQGV4YW1wbGVgIGVudHJpZXMgZnJvbSBhIEpTRG9jIGNvbW1lbnQgdmFsdWUuXG4gKiBVc2VzIGEgbXVsdGlsaW5lIHJlZ2V4IHRvIGNhcHR1cmUgdGhlIGhlYWRlciBhbmQgZm9sbG93aW5nIGxpbmVzXG4gKiB1bnRpbCB0aGUgbmV4dCBKU0RvYyB0YWcgb3IgdGhlIGVuZCBvZiB0aGUgY29tbWVudC5cbiAqIEBwYXJhbSBjb21tZW50VmFsdWUgUmF3IGNvbW1lbnQgdmFsdWUuXG4gKiBAcmV0dXJucyBFeHRyYWN0ZWQgZXhhbXBsZXMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZXhhbXBsZXMgPSBnZXRFeGFtcGxlcyhcIiogQGV4YW1wbGVcXG4qIGBgYHR5cGVzY3JpcHRcXG4qIG9rXFxuKiBgYGBcIik7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gZ2V0RXhhbXBsZXMoY29tbWVudFZhbHVlOiBzdHJpbmcpOiBFeGFtcGxlW10ge1xuICBjb25zdCBleGFtcGxlczogRXhhbXBsZVtdID0gW107XG5cbiAgZm9yIChjb25zdCBtYXRjaCBvZiBjb21tZW50VmFsdWUubWF0Y2hBbGwoZXhhbXBsZVBhdHRlcm4pKSB7XG4gICAgZXhhbXBsZXMucHVzaChidWlsZEV4YW1wbGVGcm9tTWF0Y2gobWF0Y2gsIGNvbW1lbnRWYWx1ZSkpO1xuICB9XG5cbiAgcmV0dXJuIGV4YW1wbGVzO1xufVxuXG5leHBvcnQgeyBidWlsZEV4YW1wbGVGcm9tTWF0Y2gsIGNoZWNrRXhhbXBsZUNvbnRlbnQsIGdldEV4YW1wbGVzIH07XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import type { Rule } from "eslint";
2
- import type { Example, Problem } from "./types";
2
+ import type { Example, Problem } from "./types.js";
3
3
  /** Type definition for rule data. */
4
4
  interface FixerContext {
5
5
  /** AbsoluteEnd field value. */
@@ -44,6 +44,6 @@ declare function buildMissingLanguageFix(original: string): string | undefined;
44
44
  * const fixer = createFixer(context);
45
45
  * ```
46
46
  */
47
- declare function createFixer(context: FixerContext): (fixer: Rule.RuleFixer) => null | Rule.Fix;
47
+ declare function createFixer(context: FixerContext): (fixer: Rule.RuleFixer) => Rule.Fix | undefined;
48
48
  export { buildMissingFenceFix, buildMissingLanguageFix, createFixer };
49
49
  //# sourceMappingURL=fixes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixes.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/require-example-language/fixes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AA8BhD,qCAAqC;AACrC,UAAU,YAAY;IACpB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,oCAAoC;IACpC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;CACpB;AA2CD;;;;;;;;GAQG;AACH,iBAAS,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAgBtD;AAED;;;;;;;;GAQG;AACH,iBAAS,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAiBrE;AAED;;;;;;;;GAQG;AACH,iBAAS,WAAW,CAClB,OAAO,EAAE,YAAY,GACpB,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,GAAG,GAAG,SAAS,CAYjD;AAwHD,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,182 @@
1
+ import { parseFenceLine, removeEmptyFences } from "./empty-fence-fixes.js";
2
+ /**
3
+ * Applies a language to a fence line when needed.
4
+ * @param context Fence state and line data.
5
+ * @returns Updated line and fence state.
6
+ * @example
7
+ * ```typescript
8
+ * const result = applyFenceLanguage({ inFence: false, line: " * ```" });
9
+ * ```
10
+ */
11
+ function applyFenceLanguage(context) {
12
+ const { inFence, line } = context;
13
+ const fenceInfo = parseFenceLine(line);
14
+ if (fenceInfo === void 0) {
15
+ return { inFence, line };
16
+ }
17
+ const shouldAddLanguage = !inFence && fenceInfo.language.length === 0;
18
+ const nextLine = shouldAddLanguage
19
+ ? `${fenceInfo.leading}\`\`\`typescript`
20
+ : line;
21
+ return { inFence: !inFence, line: nextLine };
22
+ }
23
+ /**
24
+ * Builds a full example with a fenced block when missing entirely.
25
+ * @param example Example metadata.
26
+ * @returns Example text with a fenced block.
27
+ * @example
28
+ * ```typescript
29
+ * const text = buildMissingFenceFix(example);
30
+ * ```
31
+ */
32
+ function buildMissingFenceFix(example) {
33
+ const contentLines = normalizeContentLines({
34
+ content: example.content,
35
+ prefix: example.prefix,
36
+ });
37
+ return [
38
+ `${example.prefix}@example`,
39
+ `${example.prefix}\`\`\`typescript`,
40
+ ...contentLines.map((contentLine) => contentLine.length > 0
41
+ ? `${example.prefix} ${contentLine}`
42
+ : example.prefix),
43
+ `${example.prefix}\`\`\``,
44
+ ].join("\n");
45
+ }
46
+ /**
47
+ * Adds missing languages to existing fenced blocks.
48
+ * @param original Original comment text.
49
+ * @returns Updated comment text when changes are made.
50
+ * @example
51
+ * ```typescript
52
+ * const updated = buildMissingLanguageFix("* ```\n* ok\n* ```");
53
+ * ```
54
+ */
55
+ function buildMissingLanguageFix(original) {
56
+ const lineBreak = original.includes("\r\n") ? "\r\n" : "\n";
57
+ const lines = original.split(/\r?\n/u);
58
+ let inFence = false;
59
+ const updatedLines = lines.map((line) => {
60
+ const { inFence: nextInFence, line: nextLine } = applyFenceLanguage({
61
+ inFence,
62
+ line,
63
+ });
64
+ inFence = nextInFence;
65
+ return nextLine;
66
+ });
67
+ const updated = updatedLines.join(lineBreak);
68
+ return updated === original ? void 0 : updated;
69
+ }
70
+ /**
71
+ * Builds a fixer function for the report.
72
+ * @param context Fixer context details.
73
+ * @returns Fixer function for ESLint.
74
+ * @example
75
+ * ```typescript
76
+ * const fixer = createFixer(context);
77
+ * ```
78
+ */
79
+ function createFixer(context) {
80
+ const { absoluteEnd, absoluteStart } = context;
81
+ return (fixer) => {
82
+ const updated = getUpdatedExampleText(context);
83
+ if (updated === void 0) {
84
+ return void 0;
85
+ }
86
+ return fixer.replaceTextRange([absoluteStart, absoluteEnd], updated);
87
+ };
88
+ }
89
+ /**
90
+ * Extracts trailing whitespace from the original example range.
91
+ * @param original Original example text.
92
+ * @returns Trailing whitespace to preserve.
93
+ * @example
94
+ * ```typescript
95
+ * const suffix = getTrailingWhitespace("* @example ok\n ");
96
+ * ```
97
+ */
98
+ function getTrailingWhitespace(original) {
99
+ const trailingMatch = /(?:\r?\n[ \t]*)$/u.exec(original);
100
+ return trailingMatch?.[0] ?? "";
101
+ }
102
+ /**
103
+ * Resolves the updated text for an example.
104
+ * @param context Fixer context details.
105
+ * @returns Fixed example text when a change is required.
106
+ * @example
107
+ * ```typescript
108
+ * const text = getUpdatedExampleText(context);
109
+ * ```
110
+ */
111
+ function getUpdatedExampleText(context) {
112
+ const { absoluteEnd, absoluteStart, example, hasOtherExamples, problem, sourceText, } = context;
113
+ const original = sourceText.slice(absoluteStart, absoluteEnd);
114
+ if (problem === "missingLanguage") {
115
+ return buildMissingLanguageFix(original);
116
+ }
117
+ if (problem === "emptyExample") {
118
+ return resolveEmptyExampleFix({ example, hasOtherExamples, original });
119
+ }
120
+ const fixed = buildMissingFenceFix(example);
121
+ const trailingWhitespace = getTrailingWhitespace(original);
122
+ return trailingWhitespace.length > 0
123
+ ? `${fixed}${trailingWhitespace}`
124
+ : fixed;
125
+ }
126
+ /**
127
+ * Normalizes raw example content lines before fence wrapping.
128
+ * @param context Prefix and raw content.
129
+ * @returns Content lines safe to wrap in a fenced block.
130
+ * @example
131
+ * ```typescript
132
+ * const lines = normalizeContentLines({ content: "a\n * b", prefix: " * " });
133
+ * ```
134
+ */
135
+ function normalizeContentLines(context) {
136
+ const { content, prefix } = context;
137
+ const lines = content.length > 0 ? content.split(/\r?\n/u) : [];
138
+ return lines
139
+ .map((line) => stripContentPrefix({ line, prefix }))
140
+ .map((line) => line.replace(/\s*\*\/[ \t]*$/u, ""));
141
+ }
142
+ /**
143
+ * Resolves the appropriate fix for empty examples.
144
+ * @param context Empty example fix details.
145
+ * @returns Fixed example text when a change is required.
146
+ * @example
147
+ * ```typescript
148
+ * const text = resolveEmptyExampleFix(context);
149
+ * ```
150
+ */
151
+ function resolveEmptyExampleFix(context) {
152
+ const { example, hasOtherExamples, original } = context;
153
+ const cleaned = removeEmptyFences(original);
154
+ if (cleaned !== void 0) {
155
+ return cleaned;
156
+ }
157
+ if (hasOtherExamples) {
158
+ return "";
159
+ }
160
+ if (original.includes("```")) {
161
+ return void 0;
162
+ }
163
+ return buildMissingFenceFix(example);
164
+ }
165
+ /**
166
+ * Removes JSDoc line prefixes from example content.
167
+ * @param context Prefix and source line.
168
+ * @returns Cleaned content line.
169
+ * @example
170
+ * ```typescript
171
+ * const line = stripContentPrefix({ line: " * value", prefix: " * " });
172
+ * ```
173
+ */
174
+ function stripContentPrefix(context) {
175
+ const { line, prefix } = context;
176
+ if (line.startsWith(prefix)) {
177
+ return line.slice(prefix.length);
178
+ }
179
+ return line.replace(/^\s*\*\s?/u, "");
180
+ }
181
+ export { buildMissingFenceFix, buildMissingLanguageFix, createFixer };
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2RvY3MvcmVxdWlyZS1leGFtcGxlLWxhbmd1YWdlL2ZpeGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQTREeEU7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLGtCQUFrQixDQUFDLE9BQTZCO0lBQ3ZELE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ2xDLE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUV2QyxJQUFJLFNBQVMsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxPQUFPLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQ3RFLE1BQU0sUUFBUSxHQUFHLGlCQUFpQjtRQUNoQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsT0FBTyxrQkFBa0I7UUFDeEMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUVULE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO0FBQy9DLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsb0JBQW9CLENBQUMsT0FBZ0I7SUFDNUMsTUFBTSxZQUFZLEdBQUcscUJBQXFCLENBQUM7UUFDekMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1FBQ3hCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtLQUN2QixDQUFDLENBQUM7SUFFSCxPQUFPO1FBQ0wsR0FBRyxPQUFPLENBQUMsTUFBTSxVQUFVO1FBQzNCLEdBQUcsT0FBTyxDQUFDLE1BQU0sa0JBQWtCO1FBQ25DLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQ2xDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUNwQixDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLFdBQVcsRUFBRTtZQUNwQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FDbkI7UUFDRCxHQUFHLE9BQU8sQ0FBQyxNQUFNLFFBQVE7S0FDMUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDZixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLHVCQUF1QixDQUFDLFFBQWdCO0lBQy9DLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzVELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBRXBCLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUN0QyxNQUFNLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsa0JBQWtCLENBQUM7WUFDbEUsT0FBTztZQUNQLElBQUk7U0FDTCxDQUFDLENBQUM7UUFDSCxPQUFPLEdBQUcsV0FBVyxDQUFDO1FBQ3RCLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUU3QyxPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFDakQsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxXQUFXLENBQ2xCLE9BQXFCO0lBRXJCLE1BQU0sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRS9DLE9BQU8sQ0FBQyxLQUFxQixFQUF3QixFQUFFO1FBQ3JELE1BQU0sT0FBTyxHQUFHLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRS9DLElBQUksT0FBTyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsT0FBTyxLQUFLLENBQUMsQ0FBQztRQUNoQixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkUsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxxQkFBcUIsQ0FBQyxRQUFnQjtJQUM3QyxNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFekQsT0FBTyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDbEMsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxxQkFBcUIsQ0FBQyxPQUFxQjtJQUNsRCxNQUFNLEVBQ0osV0FBVyxFQUNYLGFBQWEsRUFDYixPQUFPLEVBQ1AsZ0JBQWdCLEVBQ2hCLE9BQU8sRUFDUCxVQUFVLEdBQ1gsR0FBRyxPQUFPLENBQUM7SUFDWixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUU5RCxJQUFJLE9BQU8sS0FBSyxpQkFBaUIsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksT0FBTyxLQUFLLGNBQWMsRUFBRSxDQUFDO1FBQy9CLE9BQU8sc0JBQXNCLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUMsTUFBTSxrQkFBa0IsR0FBRyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUUzRCxPQUFPLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxrQkFBa0IsRUFBRTtRQUNqQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ1osQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxxQkFBcUIsQ0FBQyxPQUFxQztJQUNsRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUNwQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBRWhFLE9BQU8sS0FBSztTQUNULEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUNuRCxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN4RCxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLHNCQUFzQixDQUM3QixPQUErQjtJQUUvQixNQUFNLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUN4RCxNQUFNLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUU1QyxJQUFJLE9BQU8sS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDckIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDN0IsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsT0FBTyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2QyxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLGtCQUFrQixDQUFDLE9BQWtDO0lBQzVELE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRWpDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSx1QkFBdUIsRUFBRSxXQUFXLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHR5cGUgeyBFeGFtcGxlLCBQcm9ibGVtIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuaW1wb3J0IHsgcGFyc2VGZW5jZUxpbmUsIHJlbW92ZUVtcHR5RmVuY2VzIH0gZnJvbSBcIi4vZW1wdHktZmVuY2UtZml4ZXNcIjtcblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIEVtcHR5RXhhbXBsZUZpeENvbnRleHQge1xuICAvKiogRXhhbXBsZSBmaWVsZCB2YWx1ZS4gKi9cbiAgZXhhbXBsZTogRXhhbXBsZTtcbiAgLyoqIEhhc090aGVyRXhhbXBsZXMgZmllbGQgdmFsdWUuICovXG4gIGhhc090aGVyRXhhbXBsZXM6IGJvb2xlYW47XG4gIC8qKiBPcmlnaW5hbCBmaWVsZCB2YWx1ZS4gKi9cbiAgb3JpZ2luYWw6IHN0cmluZztcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIEZlbmNlTGFuZ3VhZ2VDb250ZXh0IHtcbiAgLyoqIEluRmVuY2UgZmllbGQgdmFsdWUuICovXG4gIGluRmVuY2U6IGJvb2xlYW47XG4gIC8qKiBMaW5lIGZpZWxkIHZhbHVlLiAqL1xuICBsaW5lOiBzdHJpbmc7XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBGZW5jZVJlc3VsdCB7XG4gIC8qKiBJbkZlbmNlIGZpZWxkIHZhbHVlLiAqL1xuICBpbkZlbmNlOiBib29sZWFuO1xuICAvKiogTGluZSBmaWVsZCB2YWx1ZS4gKi9cbiAgbGluZTogc3RyaW5nO1xufVxuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG5pbnRlcmZhY2UgRml4ZXJDb250ZXh0IHtcbiAgLyoqIEFic29sdXRlRW5kIGZpZWxkIHZhbHVlLiAqL1xuICBhYnNvbHV0ZUVuZDogbnVtYmVyO1xuICAvKiogQWJzb2x1dGVTdGFydCBmaWVsZCB2YWx1ZS4gKi9cbiAgYWJzb2x1dGVTdGFydDogbnVtYmVyO1xuICAvKiogRXhhbXBsZSBmaWVsZCB2YWx1ZS4gKi9cbiAgZXhhbXBsZTogRXhhbXBsZTtcbiAgLyoqIEhhc090aGVyRXhhbXBsZXMgZmllbGQgdmFsdWUuICovXG4gIGhhc090aGVyRXhhbXBsZXM6IGJvb2xlYW47XG4gIC8qKiBQcm9ibGVtIGZpZWxkIHZhbHVlLiAqL1xuICBwcm9ibGVtOiBQcm9ibGVtO1xuICAvKiogU291cmNlVGV4dCBmaWVsZCB2YWx1ZS4gKi9cbiAgc291cmNlVGV4dDogc3RyaW5nO1xufVxuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG5pbnRlcmZhY2UgTm9ybWFsaXplQ29udGVudExpbmVzQ29udGV4dCB7XG4gIC8qKiBDb250ZW50IGZpZWxkIHZhbHVlLiAqL1xuICBjb250ZW50OiBzdHJpbmc7XG4gIC8qKiBQcmVmaXggZmllbGQgdmFsdWUuICovXG4gIHByZWZpeDogc3RyaW5nO1xufVxuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG5pbnRlcmZhY2UgU3RyaXBDb250ZW50UHJlZml4Q29udGV4dCB7XG4gIC8qKiBMaW5lIGZpZWxkIHZhbHVlLiAqL1xuICBsaW5lOiBzdHJpbmc7XG4gIC8qKiBQcmVmaXggZmllbGQgdmFsdWUuICovXG4gIHByZWZpeDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFwcGxpZXMgYSBsYW5ndWFnZSB0byBhIGZlbmNlIGxpbmUgd2hlbiBuZWVkZWQuXG4gKiBAcGFyYW0gY29udGV4dCBGZW5jZSBzdGF0ZSBhbmQgbGluZSBkYXRhLlxuICogQHJldHVybnMgVXBkYXRlZCBsaW5lIGFuZCBmZW5jZSBzdGF0ZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCByZXN1bHQgPSBhcHBseUZlbmNlTGFuZ3VhZ2UoeyBpbkZlbmNlOiBmYWxzZSwgbGluZTogXCIgKiBgYGBcIiB9KTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBhcHBseUZlbmNlTGFuZ3VhZ2UoY29udGV4dDogRmVuY2VMYW5ndWFnZUNvbnRleHQpOiBGZW5jZVJlc3VsdCB7XG4gIGNvbnN0IHsgaW5GZW5jZSwgbGluZSB9ID0gY29udGV4dDtcbiAgY29uc3QgZmVuY2VJbmZvID0gcGFyc2VGZW5jZUxpbmUobGluZSk7XG5cbiAgaWYgKGZlbmNlSW5mbyA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHsgaW5GZW5jZSwgbGluZSB9O1xuICB9XG5cbiAgY29uc3Qgc2hvdWxkQWRkTGFuZ3VhZ2UgPSAhaW5GZW5jZSAmJiBmZW5jZUluZm8ubGFuZ3VhZ2UubGVuZ3RoID09PSAwO1xuICBjb25zdCBuZXh0TGluZSA9IHNob3VsZEFkZExhbmd1YWdlXG4gICAgPyBgJHtmZW5jZUluZm8ubGVhZGluZ31cXGBcXGBcXGB0eXBlc2NyaXB0YFxuICAgIDogbGluZTtcblxuICByZXR1cm4geyBpbkZlbmNlOiAhaW5GZW5jZSwgbGluZTogbmV4dExpbmUgfTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSBmdWxsIGV4YW1wbGUgd2l0aCBhIGZlbmNlZCBibG9jayB3aGVuIG1pc3NpbmcgZW50aXJlbHkuXG4gKiBAcGFyYW0gZXhhbXBsZSBFeGFtcGxlIG1ldGFkYXRhLlxuICogQHJldHVybnMgRXhhbXBsZSB0ZXh0IHdpdGggYSBmZW5jZWQgYmxvY2suXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgdGV4dCA9IGJ1aWxkTWlzc2luZ0ZlbmNlRml4KGV4YW1wbGUpO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkTWlzc2luZ0ZlbmNlRml4KGV4YW1wbGU6IEV4YW1wbGUpOiBzdHJpbmcge1xuICBjb25zdCBjb250ZW50TGluZXMgPSBub3JtYWxpemVDb250ZW50TGluZXMoe1xuICAgIGNvbnRlbnQ6IGV4YW1wbGUuY29udGVudCxcbiAgICBwcmVmaXg6IGV4YW1wbGUucHJlZml4LFxuICB9KTtcblxuICByZXR1cm4gW1xuICAgIGAke2V4YW1wbGUucHJlZml4fUBleGFtcGxlYCxcbiAgICBgJHtleGFtcGxlLnByZWZpeH1cXGBcXGBcXGB0eXBlc2NyaXB0YCxcbiAgICAuLi5jb250ZW50TGluZXMubWFwKChjb250ZW50TGluZSkgPT5cbiAgICAgIGNvbnRlbnRMaW5lLmxlbmd0aCA+IDBcbiAgICAgICAgPyBgJHtleGFtcGxlLnByZWZpeH0gJHtjb250ZW50TGluZX1gXG4gICAgICAgIDogZXhhbXBsZS5wcmVmaXgsXG4gICAgKSxcbiAgICBgJHtleGFtcGxlLnByZWZpeH1cXGBcXGBcXGBgLFxuICBdLmpvaW4oXCJcXG5cIik7XG59XG5cbi8qKlxuICogQWRkcyBtaXNzaW5nIGxhbmd1YWdlcyB0byBleGlzdGluZyBmZW5jZWQgYmxvY2tzLlxuICogQHBhcmFtIG9yaWdpbmFsIE9yaWdpbmFsIGNvbW1lbnQgdGV4dC5cbiAqIEByZXR1cm5zIFVwZGF0ZWQgY29tbWVudCB0ZXh0IHdoZW4gY2hhbmdlcyBhcmUgbWFkZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCB1cGRhdGVkID0gYnVpbGRNaXNzaW5nTGFuZ3VhZ2VGaXgoXCIqIGBgYFxcbiogb2tcXG4qIGBgYFwiKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBidWlsZE1pc3NpbmdMYW5ndWFnZUZpeChvcmlnaW5hbDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgbGluZUJyZWFrID0gb3JpZ2luYWwuaW5jbHVkZXMoXCJcXHJcXG5cIikgPyBcIlxcclxcblwiIDogXCJcXG5cIjtcbiAgY29uc3QgbGluZXMgPSBvcmlnaW5hbC5zcGxpdCgvXFxyP1xcbi91KTtcbiAgbGV0IGluRmVuY2UgPSBmYWxzZTtcblxuICBjb25zdCB1cGRhdGVkTGluZXMgPSBsaW5lcy5tYXAoKGxpbmUpID0+IHtcbiAgICBjb25zdCB7IGluRmVuY2U6IG5leHRJbkZlbmNlLCBsaW5lOiBuZXh0TGluZSB9ID0gYXBwbHlGZW5jZUxhbmd1YWdlKHtcbiAgICAgIGluRmVuY2UsXG4gICAgICBsaW5lLFxuICAgIH0pO1xuICAgIGluRmVuY2UgPSBuZXh0SW5GZW5jZTtcbiAgICByZXR1cm4gbmV4dExpbmU7XG4gIH0pO1xuXG4gIGNvbnN0IHVwZGF0ZWQgPSB1cGRhdGVkTGluZXMuam9pbihsaW5lQnJlYWspO1xuXG4gIHJldHVybiB1cGRhdGVkID09PSBvcmlnaW5hbCA/IHZvaWQgMCA6IHVwZGF0ZWQ7XG59XG5cbi8qKlxuICogQnVpbGRzIGEgZml4ZXIgZnVuY3Rpb24gZm9yIHRoZSByZXBvcnQuXG4gKiBAcGFyYW0gY29udGV4dCBGaXhlciBjb250ZXh0IGRldGFpbHMuXG4gKiBAcmV0dXJucyBGaXhlciBmdW5jdGlvbiBmb3IgRVNMaW50LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGZpeGVyID0gY3JlYXRlRml4ZXIoY29udGV4dCk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gY3JlYXRlRml4ZXIoXG4gIGNvbnRleHQ6IEZpeGVyQ29udGV4dCxcbik6IChmaXhlcjogUnVsZS5SdWxlRml4ZXIpID0+IFJ1bGUuRml4IHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgeyBhYnNvbHV0ZUVuZCwgYWJzb2x1dGVTdGFydCB9ID0gY29udGV4dDtcblxuICByZXR1cm4gKGZpeGVyOiBSdWxlLlJ1bGVGaXhlcik6IFJ1bGUuRml4IHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCB1cGRhdGVkID0gZ2V0VXBkYXRlZEV4YW1wbGVUZXh0KGNvbnRleHQpO1xuXG4gICAgaWYgKHVwZGF0ZWQgPT09IHZvaWQgMCkge1xuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9XG5cbiAgICByZXR1cm4gZml4ZXIucmVwbGFjZVRleHRSYW5nZShbYWJzb2x1dGVTdGFydCwgYWJzb2x1dGVFbmRdLCB1cGRhdGVkKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0cyB0cmFpbGluZyB3aGl0ZXNwYWNlIGZyb20gdGhlIG9yaWdpbmFsIGV4YW1wbGUgcmFuZ2UuXG4gKiBAcGFyYW0gb3JpZ2luYWwgT3JpZ2luYWwgZXhhbXBsZSB0ZXh0LlxuICogQHJldHVybnMgVHJhaWxpbmcgd2hpdGVzcGFjZSB0byBwcmVzZXJ2ZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzdWZmaXggPSBnZXRUcmFpbGluZ1doaXRlc3BhY2UoXCIqIEBleGFtcGxlIG9rXFxuIFwiKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBnZXRUcmFpbGluZ1doaXRlc3BhY2Uob3JpZ2luYWw6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHRyYWlsaW5nTWF0Y2ggPSAvKD86XFxyP1xcblsgXFx0XSopJC91LmV4ZWMob3JpZ2luYWwpO1xuXG4gIHJldHVybiB0cmFpbGluZ01hdGNoPy5bMF0gPz8gXCJcIjtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgdXBkYXRlZCB0ZXh0IGZvciBhbiBleGFtcGxlLlxuICogQHBhcmFtIGNvbnRleHQgRml4ZXIgY29udGV4dCBkZXRhaWxzLlxuICogQHJldHVybnMgRml4ZWQgZXhhbXBsZSB0ZXh0IHdoZW4gYSBjaGFuZ2UgaXMgcmVxdWlyZWQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgdGV4dCA9IGdldFVwZGF0ZWRFeGFtcGxlVGV4dChjb250ZXh0KTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBnZXRVcGRhdGVkRXhhbXBsZVRleHQoY29udGV4dDogRml4ZXJDb250ZXh0KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qge1xuICAgIGFic29sdXRlRW5kLFxuICAgIGFic29sdXRlU3RhcnQsXG4gICAgZXhhbXBsZSxcbiAgICBoYXNPdGhlckV4YW1wbGVzLFxuICAgIHByb2JsZW0sXG4gICAgc291cmNlVGV4dCxcbiAgfSA9IGNvbnRleHQ7XG4gIGNvbnN0IG9yaWdpbmFsID0gc291cmNlVGV4dC5zbGljZShhYnNvbHV0ZVN0YXJ0LCBhYnNvbHV0ZUVuZCk7XG5cbiAgaWYgKHByb2JsZW0gPT09IFwibWlzc2luZ0xhbmd1YWdlXCIpIHtcbiAgICByZXR1cm4gYnVpbGRNaXNzaW5nTGFuZ3VhZ2VGaXgob3JpZ2luYWwpO1xuICB9XG5cbiAgaWYgKHByb2JsZW0gPT09IFwiZW1wdHlFeGFtcGxlXCIpIHtcbiAgICByZXR1cm4gcmVzb2x2ZUVtcHR5RXhhbXBsZUZpeCh7IGV4YW1wbGUsIGhhc090aGVyRXhhbXBsZXMsIG9yaWdpbmFsIH0pO1xuICB9XG5cbiAgY29uc3QgZml4ZWQgPSBidWlsZE1pc3NpbmdGZW5jZUZpeChleGFtcGxlKTtcbiAgY29uc3QgdHJhaWxpbmdXaGl0ZXNwYWNlID0gZ2V0VHJhaWxpbmdXaGl0ZXNwYWNlKG9yaWdpbmFsKTtcblxuICByZXR1cm4gdHJhaWxpbmdXaGl0ZXNwYWNlLmxlbmd0aCA+IDBcbiAgICA/IGAke2ZpeGVkfSR7dHJhaWxpbmdXaGl0ZXNwYWNlfWBcbiAgICA6IGZpeGVkO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgcmF3IGV4YW1wbGUgY29udGVudCBsaW5lcyBiZWZvcmUgZmVuY2Ugd3JhcHBpbmcuXG4gKiBAcGFyYW0gY29udGV4dCBQcmVmaXggYW5kIHJhdyBjb250ZW50LlxuICogQHJldHVybnMgQ29udGVudCBsaW5lcyBzYWZlIHRvIHdyYXAgaW4gYSBmZW5jZWQgYmxvY2suXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbGluZXMgPSBub3JtYWxpemVDb250ZW50TGluZXMoeyBjb250ZW50OiBcImFcXG4gKiBiXCIsIHByZWZpeDogXCIgKiBcIiB9KTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBub3JtYWxpemVDb250ZW50TGluZXMoY29udGV4dDogTm9ybWFsaXplQ29udGVudExpbmVzQ29udGV4dCk6IHN0cmluZ1tdIHtcbiAgY29uc3QgeyBjb250ZW50LCBwcmVmaXggfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGxpbmVzID0gY29udGVudC5sZW5ndGggPiAwID8gY29udGVudC5zcGxpdCgvXFxyP1xcbi91KSA6IFtdO1xuXG4gIHJldHVybiBsaW5lc1xuICAgIC5tYXAoKGxpbmUpID0+IHN0cmlwQ29udGVudFByZWZpeCh7IGxpbmUsIHByZWZpeCB9KSlcbiAgICAubWFwKChsaW5lKSA9PiBsaW5lLnJlcGxhY2UoL1xccypcXCpcXC9bIFxcdF0qJC91LCBcIlwiKSk7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGFwcHJvcHJpYXRlIGZpeCBmb3IgZW1wdHkgZXhhbXBsZXMuXG4gKiBAcGFyYW0gY29udGV4dCBFbXB0eSBleGFtcGxlIGZpeCBkZXRhaWxzLlxuICogQHJldHVybnMgRml4ZWQgZXhhbXBsZSB0ZXh0IHdoZW4gYSBjaGFuZ2UgaXMgcmVxdWlyZWQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgdGV4dCA9IHJlc29sdmVFbXB0eUV4YW1wbGVGaXgoY29udGV4dCk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUVtcHR5RXhhbXBsZUZpeChcbiAgY29udGV4dDogRW1wdHlFeGFtcGxlRml4Q29udGV4dCxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHsgZXhhbXBsZSwgaGFzT3RoZXJFeGFtcGxlcywgb3JpZ2luYWwgfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGNsZWFuZWQgPSByZW1vdmVFbXB0eUZlbmNlcyhvcmlnaW5hbCk7XG5cbiAgaWYgKGNsZWFuZWQgIT09IHZvaWQgMCkge1xuICAgIHJldHVybiBjbGVhbmVkO1xuICB9XG5cbiAgaWYgKGhhc090aGVyRXhhbXBsZXMpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIGlmIChvcmlnaW5hbC5pbmNsdWRlcyhcImBgYFwiKSkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICByZXR1cm4gYnVpbGRNaXNzaW5nRmVuY2VGaXgoZXhhbXBsZSk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBKU0RvYyBsaW5lIHByZWZpeGVzIGZyb20gZXhhbXBsZSBjb250ZW50LlxuICogQHBhcmFtIGNvbnRleHQgUHJlZml4IGFuZCBzb3VyY2UgbGluZS5cbiAqIEByZXR1cm5zIENsZWFuZWQgY29udGVudCBsaW5lLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGxpbmUgPSBzdHJpcENvbnRlbnRQcmVmaXgoeyBsaW5lOiBcIiAqIHZhbHVlXCIsIHByZWZpeDogXCIgKiBcIiB9KTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBzdHJpcENvbnRlbnRQcmVmaXgoY29udGV4dDogU3RyaXBDb250ZW50UHJlZml4Q29udGV4dCk6IHN0cmluZyB7XG4gIGNvbnN0IHsgbGluZSwgcHJlZml4IH0gPSBjb250ZXh0O1xuXG4gIGlmIChsaW5lLnN0YXJ0c1dpdGgocHJlZml4KSkge1xuICAgIHJldHVybiBsaW5lLnNsaWNlKHByZWZpeC5sZW5ndGgpO1xuICB9XG5cbiAgcmV0dXJuIGxpbmUucmVwbGFjZSgvXlxccypcXCpcXHM/L3UsIFwiXCIpO1xufVxuXG5leHBvcnQgeyBidWlsZE1pc3NpbmdGZW5jZUZpeCwgYnVpbGRNaXNzaW5nTGFuZ3VhZ2VGaXgsIGNyZWF0ZUZpeGVyIH07Il19
@@ -0,0 +1,3 @@
1
+ export { requireExampleLanguageRule } from "./rule.js";
2
+ export type { Comment, Example, Problem } from "./types.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/require-example-language/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,QAAQ,CAAC;AACpD,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { requireExampleLanguageRule } from "./rule.js";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2RvY3MvcmVxdWlyZS1leGFtcGxlLWxhbmd1YWdlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IHJlcXVpcmVFeGFtcGxlTGFuZ3VhZ2VSdWxlIH0gZnJvbSBcIi4vcnVsZVwiO1xuZXhwb3J0IHR5cGUgeyBDb21tZW50LCBFeGFtcGxlLCBQcm9ibGVtIH0gZnJvbSBcIi4vdHlwZXNcIjtcbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import type { Rule } from "eslint";
2
- import type { Comment, Example, Problem } from "./types";
2
+ import type { Comment, Example, Problem } from "./types.js";
3
3
  /** Type definition for rule data. */
4
4
  interface ReportDescriptorContext {
5
5
  /** Comment field value. */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporting.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/require-example-language/reporting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAuBzD,qCAAqC;AACrC,UAAU,uBAAuB;IAC/B,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;IAEjB,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;IAEjB,oCAAoC;IACpC,gBAAgB,EAAE,OAAO,CAAC;IAE1B,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;IAEjB,8BAA8B;IAC9B,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;CAC5C;AAED,qCAAqC;AACrC,UAAU,oBAAoB;IAC5B,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;IAEjB,2BAA2B;IAC3B,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC;IAE1B,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;IAEjB,oCAAoC;IACpC,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAuBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,iBAAS,qBAAqB,CAC5B,OAAO,EAAE,uBAAuB,GAC/B,IAAI,CAAC,gBAAgB,CA6BvB;AA0FD;;;;;;;GAOG;AACH,iBAAS,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAiB1D;AAED,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,148 @@
1
+ import { checkExampleContent } from "./examples.js";
2
+ import { createFixer } from "./fixes.js";
3
+ /**
4
+ * Build a report descriptor for a single example problem.
5
+ * @param context Input context value.
6
+ * @returns Return value output.
7
+ * @example
8
+ * ```typescript
9
+ * const descriptor = buildReportDescriptor({
10
+ * comment: { type: "Block", value: "*" } as Comment,
11
+ * example: {
12
+ * content: "",
13
+ * endIndex: 0,
14
+ * endOffset: 0,
15
+ * lineIndex: 0,
16
+ * prefix: " * ",
17
+ * startOffset: 0,
18
+ * },
19
+ * hasOtherExamples: false,
20
+ * problem: "missingFence",
21
+ * sourceCode: {} as Rule.SourceCode,
22
+ * });
23
+ * ```
24
+ */
25
+ function buildReportDescriptor(context) {
26
+ const { comment, example, hasOtherExamples, problem, sourceCode } = context;
27
+ const fix = getFixerForExample({
28
+ comment,
29
+ example,
30
+ hasOtherExamples,
31
+ problem,
32
+ sourceCode,
33
+ });
34
+ const reportFix = fix === void 0
35
+ ? void 0
36
+ : (fixer) => fix(fixer) ?? [];
37
+ const loc = getReportLocation(comment, example);
38
+ if (loc !== void 0) {
39
+ return {
40
+ fix: reportFix,
41
+ loc,
42
+ messageId: problem,
43
+ };
44
+ }
45
+ return {
46
+ fix: reportFix,
47
+ messageId: problem,
48
+ node: sourceCode.ast,
49
+ };
50
+ }
51
+ /**
52
+ * Resolve a fixer for the report when ranges are available.
53
+ * @param context Input context value.
54
+ * @returns Return value output.
55
+ * @example
56
+ * ```typescript
57
+ * const fixer = getFixerForExample({
58
+ * comment: { type: "Block", value: "*" } as Comment,
59
+ * example: {
60
+ * content: "",
61
+ * endIndex: 0,
62
+ * endOffset: 0,
63
+ * lineIndex: 0,
64
+ * prefix: " * ",
65
+ * startOffset: 0,
66
+ * },
67
+ * hasOtherExamples: false,
68
+ * problem: "missingLanguage",
69
+ * sourceCode: {} as Rule.SourceCode,
70
+ * });
71
+ * ```
72
+ */
73
+ function getFixerForExample(context) {
74
+ const { comment, example, hasOtherExamples, problem, sourceCode } = context;
75
+ const commentOffset = comment.range?.[0];
76
+ const commentValueOffset = typeof commentOffset === "number" ? commentOffset + 2 : void 0;
77
+ const absoluteStart = typeof commentValueOffset === "number"
78
+ ? commentValueOffset + example.startOffset
79
+ : void 0;
80
+ const absoluteEnd = typeof commentValueOffset === "number"
81
+ ? commentValueOffset + example.endOffset
82
+ : void 0;
83
+ if (typeof absoluteStart !== "number" || typeof absoluteEnd !== "number") {
84
+ return void 0;
85
+ }
86
+ return createFixer({
87
+ absoluteEnd,
88
+ absoluteStart,
89
+ example,
90
+ hasOtherExamples,
91
+ problem,
92
+ sourceText: sourceCode.text,
93
+ });
94
+ }
95
+ /**
96
+ * Resolve the report location for a matched example.
97
+ * @param comment Comment node containing the example.
98
+ * @param example Example metadata.
99
+ * @returns Report location when available.
100
+ * @example
101
+ * ```typescript
102
+ * const loc = getReportLocation({} as Comment, {
103
+ * content: "",
104
+ * endIndex: 0,
105
+ * endOffset: 0,
106
+ * lineIndex: 0,
107
+ * prefix: "",
108
+ * startOffset: 0,
109
+ * });
110
+ * ```
111
+ */
112
+ function getReportLocation(comment, example) {
113
+ const line = typeof comment.loc?.start.line === "number"
114
+ ? comment.loc.start.line + example.lineIndex
115
+ : void 0;
116
+ if (line === void 0) {
117
+ return void 0;
118
+ }
119
+ return {
120
+ end: { column: 1, line },
121
+ start: { column: 0, line },
122
+ };
123
+ }
124
+ /**
125
+ * Reports a single example when it violates the rule.
126
+ * @param context Report details for this example.
127
+ * @example
128
+ * ```typescript
129
+ * reportExample(context);
130
+ * ```
131
+ */
132
+ function reportExample(context) {
133
+ const { comment, context: ruleContext, example, hasOtherExamples } = context;
134
+ const problem = checkExampleContent(example.content);
135
+ if (problem === void 0) {
136
+ return;
137
+ }
138
+ const descriptor = buildReportDescriptor({
139
+ comment,
140
+ example,
141
+ hasOtherExamples,
142
+ problem,
143
+ sourceCode: ruleContext.sourceCode,
144
+ });
145
+ ruleContext.report(descriptor);
146
+ }
147
+ export { buildReportDescriptor, reportExample };
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RvbWFpbi9kb2NzL3JlcXVpcmUtZXhhbXBsZS1sYW5ndWFnZS9yZXBvcnRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUEwRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxTQUFTLHFCQUFxQixDQUM1QixPQUFnQztJQUVoQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQzVFLE1BQU0sR0FBRyxHQUFHLGtCQUFrQixDQUFDO1FBQzdCLE9BQU87UUFDUCxPQUFPO1FBQ1AsZ0JBQWdCO1FBQ2hCLE9BQU87UUFDUCxVQUFVO0tBQ1gsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxTQUFTLEdBQ2IsR0FBRyxLQUFLLEtBQUssQ0FBQztRQUNaLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDUixDQUFDLENBQUMsQ0FBQyxLQUFxQixFQUFpQyxFQUFFLENBQ3ZELEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsTUFBTSxHQUFHLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRWhELElBQUksR0FBRyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbkIsT0FBTztZQUNMLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRztZQUNILFNBQVMsRUFBRSxPQUFPO1NBQ25CLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTztRQUNMLEdBQUcsRUFBRSxTQUFTO1FBQ2QsU0FBUyxFQUFFLE9BQU87UUFDbEIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxHQUFnQjtLQUNsQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxTQUFTLGtCQUFrQixDQUN6QixPQUEyQjtJQUUzQixNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQzVFLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxNQUFNLGtCQUFrQixHQUN0QixPQUFPLGFBQWEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sYUFBYSxHQUNqQixPQUFPLGtCQUFrQixLQUFLLFFBQVE7UUFDcEMsQ0FBQyxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxXQUFXO1FBQzFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNiLE1BQU0sV0FBVyxHQUNmLE9BQU8sa0JBQWtCLEtBQUssUUFBUTtRQUNwQyxDQUFDLENBQUMsa0JBQWtCLEdBQUcsT0FBTyxDQUFDLFNBQVM7UUFDeEMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWIsSUFBSSxPQUFPLGFBQWEsS0FBSyxRQUFRLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDekUsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsT0FBTyxXQUFXLENBQUM7UUFDakIsV0FBVztRQUNYLGFBQWE7UUFDYixPQUFPO1FBQ1AsZ0JBQWdCO1FBQ2hCLE9BQU87UUFDUCxVQUFVLEVBQUUsVUFBVSxDQUFDLElBQUk7S0FDNUIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsU0FBUyxpQkFBaUIsQ0FDeEIsT0FBZ0IsRUFDaEIsT0FBZ0I7SUFFaEIsTUFBTSxJQUFJLEdBQ1IsT0FBTyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUTtRQUN6QyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxTQUFTO1FBQzVDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUViLElBQUksSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDcEIsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsT0FBTztRQUNMLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFO1FBQ3hCLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFO0tBQzNCLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQVMsYUFBYSxDQUFDLE9BQTZCO0lBQ2xELE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDN0UsTUFBTSxPQUFPLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXJELElBQUksT0FBTyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdkIsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxxQkFBcUIsQ0FBQztRQUN2QyxPQUFPO1FBQ1AsT0FBTztRQUNQLGdCQUFnQjtRQUNoQixPQUFPO1FBQ1AsVUFBVSxFQUFFLFdBQVcsQ0FBQyxVQUFVO0tBQ25DLENBQUMsQ0FBQztJQUVILFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDakMsQ0FBQztBQUVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHR5cGUgeyBDb21tZW50LCBFeGFtcGxlLCBQcm9ibGVtIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuaW1wb3J0IHsgY2hlY2tFeGFtcGxlQ29udGVudCB9IGZyb20gXCIuL2V4YW1wbGVzXCI7XG5pbXBvcnQgeyBjcmVhdGVGaXhlciB9IGZyb20gXCIuL2ZpeGVzXCI7XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBGaXhlckxvb2t1cENvbnRleHQge1xuICAvKiogQ29tbWVudCBmaWVsZCB2YWx1ZS4gKi9cbiAgY29tbWVudDogQ29tbWVudDtcblxuICAvKiogRXhhbXBsZSBmaWVsZCB2YWx1ZS4gKi9cbiAgZXhhbXBsZTogRXhhbXBsZTtcblxuICAvKiogSGFzT3RoZXJFeGFtcGxlcyBmaWVsZCB2YWx1ZS4gKi9cbiAgaGFzT3RoZXJFeGFtcGxlczogYm9vbGVhbjtcblxuICAvKiogUHJvYmxlbSBmaWVsZCB2YWx1ZS4gKi9cbiAgcHJvYmxlbTogUHJvYmxlbTtcblxuICAvKiogU291cmNlQ29kZSBmaWVsZCB2YWx1ZS4gKi9cbiAgc291cmNlQ29kZTogUnVsZS5SdWxlQ29udGV4dFtcInNvdXJjZUNvZGVcIl07XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBSZXBvcnREZXNjcmlwdG9yQ29udGV4dCB7XG4gIC8qKiBDb21tZW50IGZpZWxkIHZhbHVlLiAqL1xuICBjb21tZW50OiBDb21tZW50O1xuXG4gIC8qKiBFeGFtcGxlIGZpZWxkIHZhbHVlLiAqL1xuICBleGFtcGxlOiBFeGFtcGxlO1xuXG4gIC8qKiBIYXNPdGhlckV4YW1wbGVzIGZpZWxkIHZhbHVlLiAqL1xuICBoYXNPdGhlckV4YW1wbGVzOiBib29sZWFuO1xuXG4gIC8qKiBQcm9ibGVtIGZpZWxkIHZhbHVlLiAqL1xuICBwcm9ibGVtOiBQcm9ibGVtO1xuXG4gIC8qKiBTb3VyY2VDb2RlIGZpZWxkIHZhbHVlLiAqL1xuICBzb3VyY2VDb2RlOiBSdWxlLlJ1bGVDb250ZXh0W1wic291cmNlQ29kZVwiXTtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIFJlcG9ydEV4YW1wbGVDb250ZXh0IHtcbiAgLyoqIENvbW1lbnQgZmllbGQgdmFsdWUuICovXG4gIGNvbW1lbnQ6IENvbW1lbnQ7XG5cbiAgLyoqIENvbnRleHQgZmllbGQgdmFsdWUuICovXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQ7XG5cbiAgLyoqIEV4YW1wbGUgZmllbGQgdmFsdWUuICovXG4gIGV4YW1wbGU6IEV4YW1wbGU7XG5cbiAgLyoqIEhhc090aGVyRXhhbXBsZXMgZmllbGQgdmFsdWUuICovXG4gIGhhc090aGVyRXhhbXBsZXM6IGJvb2xlYW47XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBSZXBvcnRMb2NhdGlvbiB7XG4gIC8qKiBFbmQgZmllbGQgdmFsdWUuICovXG4gIGVuZDoge1xuICAgIC8qKiBDb2x1bW4gZmllbGQgdmFsdWUuICovXG4gICAgY29sdW1uOiBudW1iZXI7XG5cbiAgICAvKiogTGluZSBmaWVsZCB2YWx1ZS4gKi9cbiAgICBsaW5lOiBudW1iZXI7XG4gIH07XG5cbiAgLyoqIFN0YXJ0IGZpZWxkIHZhbHVlLiAqL1xuICBzdGFydDoge1xuICAgIC8qKiBDb2x1bW4gZmllbGQgdmFsdWUuICovXG4gICAgY29sdW1uOiBudW1iZXI7XG5cbiAgICAvKiogTGluZSBmaWVsZCB2YWx1ZS4gKi9cbiAgICBsaW5lOiBudW1iZXI7XG4gIH07XG59XG5cbi8qKlxuICogQnVpbGQgYSByZXBvcnQgZGVzY3JpcHRvciBmb3IgYSBzaW5nbGUgZXhhbXBsZSBwcm9ibGVtLlxuICogQHBhcmFtIGNvbnRleHQgSW5wdXQgY29udGV4dCB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZGVzY3JpcHRvciA9IGJ1aWxkUmVwb3J0RGVzY3JpcHRvcih7XG4gKiAgIGNvbW1lbnQ6IHsgdHlwZTogXCJCbG9ja1wiLCB2YWx1ZTogXCIqXCIgfSBhcyBDb21tZW50LFxuICogICBleGFtcGxlOiB7XG4gKiAgICAgY29udGVudDogXCJcIixcbiAqICAgICBlbmRJbmRleDogMCxcbiAqICAgICBlbmRPZmZzZXQ6IDAsXG4gKiAgICAgbGluZUluZGV4OiAwLFxuICogICAgIHByZWZpeDogXCIgKiBcIixcbiAqICAgICBzdGFydE9mZnNldDogMCxcbiAqICAgfSxcbiAqICAgaGFzT3RoZXJFeGFtcGxlczogZmFsc2UsXG4gKiAgIHByb2JsZW06IFwibWlzc2luZ0ZlbmNlXCIsXG4gKiAgIHNvdXJjZUNvZGU6IHt9IGFzIFJ1bGUuU291cmNlQ29kZSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkUmVwb3J0RGVzY3JpcHRvcihcbiAgY29udGV4dDogUmVwb3J0RGVzY3JpcHRvckNvbnRleHQsXG4pOiBSdWxlLlJlcG9ydERlc2NyaXB0b3Ige1xuICBjb25zdCB7IGNvbW1lbnQsIGV4YW1wbGUsIGhhc090aGVyRXhhbXBsZXMsIHByb2JsZW0sIHNvdXJjZUNvZGUgfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZpeCA9IGdldEZpeGVyRm9yRXhhbXBsZSh7XG4gICAgY29tbWVudCxcbiAgICBleGFtcGxlLFxuICAgIGhhc090aGVyRXhhbXBsZXMsXG4gICAgcHJvYmxlbSxcbiAgICBzb3VyY2VDb2RlLFxuICB9KTtcbiAgY29uc3QgcmVwb3J0Rml4ID1cbiAgICBmaXggPT09IHZvaWQgMFxuICAgICAgPyB2b2lkIDBcbiAgICAgIDogKGZpeGVyOiBSdWxlLlJ1bGVGaXhlcik6IEl0ZXJhYmxlPFJ1bGUuRml4PiB8IFJ1bGUuRml4ID0+XG4gICAgICAgICAgZml4KGZpeGVyKSA/PyBbXTtcbiAgY29uc3QgbG9jID0gZ2V0UmVwb3J0TG9jYXRpb24oY29tbWVudCwgZXhhbXBsZSk7XG5cbiAgaWYgKGxvYyAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpeDogcmVwb3J0Rml4LFxuICAgICAgbG9jLFxuICAgICAgbWVzc2FnZUlkOiBwcm9ibGVtLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGZpeDogcmVwb3J0Rml4LFxuICAgIG1lc3NhZ2VJZDogcHJvYmxlbSxcbiAgICBub2RlOiBzb3VyY2VDb2RlLmFzdCBhcyBSdWxlLk5vZGUsXG4gIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIGZpeGVyIGZvciB0aGUgcmVwb3J0IHdoZW4gcmFuZ2VzIGFyZSBhdmFpbGFibGUuXG4gKiBAcGFyYW0gY29udGV4dCBJbnB1dCBjb250ZXh0IHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBmaXhlciA9IGdldEZpeGVyRm9yRXhhbXBsZSh7XG4gKiAgIGNvbW1lbnQ6IHsgdHlwZTogXCJCbG9ja1wiLCB2YWx1ZTogXCIqXCIgfSBhcyBDb21tZW50LFxuICogICBleGFtcGxlOiB7XG4gKiAgICAgY29udGVudDogXCJcIixcbiAqICAgICBlbmRJbmRleDogMCxcbiAqICAgICBlbmRPZmZzZXQ6IDAsXG4gKiAgICAgbGluZUluZGV4OiAwLFxuICogICAgIHByZWZpeDogXCIgKiBcIixcbiAqICAgICBzdGFydE9mZnNldDogMCxcbiAqICAgfSxcbiAqICAgaGFzT3RoZXJFeGFtcGxlczogZmFsc2UsXG4gKiAgIHByb2JsZW06IFwibWlzc2luZ0xhbmd1YWdlXCIsXG4gKiAgIHNvdXJjZUNvZGU6IHt9IGFzIFJ1bGUuU291cmNlQ29kZSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmZ1bmN0aW9uIGdldEZpeGVyRm9yRXhhbXBsZShcbiAgY29udGV4dDogRml4ZXJMb29rdXBDb250ZXh0LFxuKTogKChmaXhlcjogUnVsZS5SdWxlRml4ZXIpID0+IFJ1bGUuRml4IHwgdW5kZWZpbmVkKSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHsgY29tbWVudCwgZXhhbXBsZSwgaGFzT3RoZXJFeGFtcGxlcywgcHJvYmxlbSwgc291cmNlQ29kZSB9ID0gY29udGV4dDtcbiAgY29uc3QgY29tbWVudE9mZnNldCA9IGNvbW1lbnQucmFuZ2U/LlswXTtcbiAgY29uc3QgY29tbWVudFZhbHVlT2Zmc2V0ID1cbiAgICB0eXBlb2YgY29tbWVudE9mZnNldCA9PT0gXCJudW1iZXJcIiA/IGNvbW1lbnRPZmZzZXQgKyAyIDogdm9pZCAwO1xuICBjb25zdCBhYnNvbHV0ZVN0YXJ0ID1cbiAgICB0eXBlb2YgY29tbWVudFZhbHVlT2Zmc2V0ID09PSBcIm51bWJlclwiXG4gICAgICA/IGNvbW1lbnRWYWx1ZU9mZnNldCArIGV4YW1wbGUuc3RhcnRPZmZzZXRcbiAgICAgIDogdm9pZCAwO1xuICBjb25zdCBhYnNvbHV0ZUVuZCA9XG4gICAgdHlwZW9mIGNvbW1lbnRWYWx1ZU9mZnNldCA9PT0gXCJudW1iZXJcIlxuICAgICAgPyBjb21tZW50VmFsdWVPZmZzZXQgKyBleGFtcGxlLmVuZE9mZnNldFxuICAgICAgOiB2b2lkIDA7XG5cbiAgaWYgKHR5cGVvZiBhYnNvbHV0ZVN0YXJ0ICE9PSBcIm51bWJlclwiIHx8IHR5cGVvZiBhYnNvbHV0ZUVuZCAhPT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICByZXR1cm4gY3JlYXRlRml4ZXIoe1xuICAgIGFic29sdXRlRW5kLFxuICAgIGFic29sdXRlU3RhcnQsXG4gICAgZXhhbXBsZSxcbiAgICBoYXNPdGhlckV4YW1wbGVzLFxuICAgIHByb2JsZW0sXG4gICAgc291cmNlVGV4dDogc291cmNlQ29kZS50ZXh0LFxuICB9KTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIHRoZSByZXBvcnQgbG9jYXRpb24gZm9yIGEgbWF0Y2hlZCBleGFtcGxlLlxuICogQHBhcmFtIGNvbW1lbnQgQ29tbWVudCBub2RlIGNvbnRhaW5pbmcgdGhlIGV4YW1wbGUuXG4gKiBAcGFyYW0gZXhhbXBsZSBFeGFtcGxlIG1ldGFkYXRhLlxuICogQHJldHVybnMgUmVwb3J0IGxvY2F0aW9uIHdoZW4gYXZhaWxhYmxlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGxvYyA9IGdldFJlcG9ydExvY2F0aW9uKHt9IGFzIENvbW1lbnQsIHtcbiAqICAgIGNvbnRlbnQ6IFwiXCIsXG4gKiAgICBlbmRJbmRleDogMCxcbiAqICAgIGVuZE9mZnNldDogMCxcbiAqICAgIGxpbmVJbmRleDogMCxcbiAqICAgIHByZWZpeDogXCJcIixcbiAqICAgIHN0YXJ0T2Zmc2V0OiAwLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gZ2V0UmVwb3J0TG9jYXRpb24oXG4gIGNvbW1lbnQ6IENvbW1lbnQsXG4gIGV4YW1wbGU6IEV4YW1wbGUsXG4pOiBSZXBvcnRMb2NhdGlvbiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGxpbmUgPVxuICAgIHR5cGVvZiBjb21tZW50LmxvYz8uc3RhcnQubGluZSA9PT0gXCJudW1iZXJcIlxuICAgICAgPyBjb21tZW50LmxvYy5zdGFydC5saW5lICsgZXhhbXBsZS5saW5lSW5kZXhcbiAgICAgIDogdm9pZCAwO1xuXG4gIGlmIChsaW5lID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlbmQ6IHsgY29sdW1uOiAxLCBsaW5lIH0sXG4gICAgc3RhcnQ6IHsgY29sdW1uOiAwLCBsaW5lIH0sXG4gIH07XG59XG5cbi8qKlxuICogUmVwb3J0cyBhIHNpbmdsZSBleGFtcGxlIHdoZW4gaXQgdmlvbGF0ZXMgdGhlIHJ1bGUuXG4gKiBAcGFyYW0gY29udGV4dCBSZXBvcnQgZGV0YWlscyBmb3IgdGhpcyBleGFtcGxlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHJlcG9ydEV4YW1wbGUoY29udGV4dCk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gcmVwb3J0RXhhbXBsZShjb250ZXh0OiBSZXBvcnRFeGFtcGxlQ29udGV4dCk6IHZvaWQge1xuICBjb25zdCB7IGNvbW1lbnQsIGNvbnRleHQ6IHJ1bGVDb250ZXh0LCBleGFtcGxlLCBoYXNPdGhlckV4YW1wbGVzIH0gPSBjb250ZXh0O1xuICBjb25zdCBwcm9ibGVtID0gY2hlY2tFeGFtcGxlQ29udGVudChleGFtcGxlLmNvbnRlbnQpO1xuXG4gIGlmIChwcm9ibGVtID09PSB2b2lkIDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBkZXNjcmlwdG9yID0gYnVpbGRSZXBvcnREZXNjcmlwdG9yKHtcbiAgICBjb21tZW50LFxuICAgIGV4YW1wbGUsXG4gICAgaGFzT3RoZXJFeGFtcGxlcyxcbiAgICBwcm9ibGVtLFxuICAgIHNvdXJjZUNvZGU6IHJ1bGVDb250ZXh0LnNvdXJjZUNvZGUsXG4gIH0pO1xuXG4gIHJ1bGVDb250ZXh0LnJlcG9ydChkZXNjcmlwdG9yKTtcbn1cblxuZXhwb3J0IHsgYnVpbGRSZXBvcnREZXNjcmlwdG9yLCByZXBvcnRFeGFtcGxlIH07XG4iXX0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/require-example-language/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAMnC;;GAEG;AACH,QAAA,MAAM,0BAA0B,EAAE,IAAI,CAAC,UAkCtC,CAAC;AAEF,OAAO,EAAE,0BAA0B,EAAE,CAAC"}