@codeperfect/eslint-plugin 2.0.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/README.md +3 -2
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/application/custom-rules.d.ts +8 -8
  4. package/dist/application/custom-rules.js +14 -14
  5. package/dist/application/index.d.ts +1 -1
  6. package/dist/application/index.d.ts.map +1 -1
  7. package/dist/application/index.js +2 -2
  8. package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
  9. package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts +3 -4
  10. package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts.map +1 -1
  11. package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.js +5 -3
  12. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +1 -1
  13. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +17 -7
  14. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +1 -1
  15. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.js +36 -4
  16. package/dist/domain/architecture/consistent-barrel-files/index.d.ts +2 -0
  17. package/dist/domain/architecture/consistent-barrel-files/index.d.ts.map +1 -1
  18. package/dist/domain/architecture/consistent-barrel-files/index.js +3 -1
  19. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.d.ts +5 -0
  20. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.d.ts.map +1 -0
  21. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.js +247 -0
  22. package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.d.ts +5 -0
  23. package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.d.ts.map +1 -0
  24. package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.js +136 -0
  25. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +1 -1
  26. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +8 -3
  27. package/dist/domain/architecture/consistent-barrel-files/rule.d.ts.map +1 -1
  28. package/dist/domain/architecture/consistent-barrel-files/rule.js +12 -5
  29. package/dist/domain/architecture/index.d.ts +2 -1
  30. package/dist/domain/architecture/index.d.ts.map +1 -1
  31. package/dist/domain/architecture/index.js +3 -2
  32. package/dist/domain/architecture/no-unused-exports/index.d.ts +3 -0
  33. package/dist/domain/architecture/no-unused-exports/index.d.ts.map +1 -0
  34. package/dist/domain/architecture/no-unused-exports/index.js +2 -0
  35. package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.d.ts +50 -0
  36. package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.d.ts.map +1 -0
  37. package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.js +141 -0
  38. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts +49 -0
  39. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts.map +1 -0
  40. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.js +608 -0
  41. package/dist/domain/architecture/no-unused-exports/rule.d.ts +5 -0
  42. package/dist/domain/architecture/no-unused-exports/rule.d.ts.map +1 -0
  43. package/dist/domain/architecture/no-unused-exports/rule.js +82 -0
  44. package/dist/domain/architecture/no-unused-exports/types.d.ts +32 -0
  45. package/dist/domain/architecture/no-unused-exports/types.d.ts.map +1 -0
  46. package/dist/domain/architecture/no-unused-exports/types.js +2 -0
  47. package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -1
  48. package/dist/domain/core/no-multiple-declarators/rule.js +58 -6
  49. package/dist/domain/core/no-multiple-declarators/types.d.ts +3 -1
  50. package/dist/domain/core/no-multiple-declarators/types.d.ts.map +1 -1
  51. package/dist/domain/core/no-multiple-declarators/types.js +5 -2
  52. package/dist/domain/core/prefer-interface-types/rule.d.ts.map +1 -1
  53. package/dist/domain/core/prefer-interface-types/rule.js +94 -23
  54. package/dist/domain/custom-rule-documentation.d.ts +3 -14
  55. package/dist/domain/custom-rule-documentation.d.ts.map +1 -1
  56. package/dist/domain/custom-rule-documentation.js +3 -2
  57. package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -1
  58. package/dist/domain/docs/no-interface-member-docs/comment-utilities.js +11 -2
  59. package/dist/domain/docs/no-interface-member-docs/parameter-tags.d.ts.map +1 -1
  60. package/dist/domain/docs/no-interface-member-docs/parameter-tags.js +1 -1
  61. package/dist/domain/docs/no-interface-member-docs/parameter-utilities.js +1 -1
  62. package/dist/domain/docs/no-interface-member-docs/rule.d.ts.map +1 -1
  63. package/dist/domain/docs/no-interface-member-docs/rule.js +12 -4
  64. package/dist/domain/docs/require-example-language/examples.d.ts +4 -15
  65. package/dist/domain/docs/require-example-language/examples.d.ts.map +1 -1
  66. package/dist/domain/docs/require-example-language/examples.js +119 -26
  67. package/dist/domain/docs/require-example-language/fixes.d.ts +1 -21
  68. package/dist/domain/docs/require-example-language/fixes.d.ts.map +1 -1
  69. package/dist/domain/docs/require-example-language/fixes.js +5 -2
  70. package/dist/domain/docs/require-example-language/reporting.d.ts +2 -38
  71. package/dist/domain/docs/require-example-language/reporting.d.ts.map +1 -1
  72. package/dist/domain/docs/require-example-language/reporting.js +2 -2
  73. package/dist/domain/docs/require-example-language/rule.d.ts.map +1 -1
  74. package/dist/domain/docs/require-example-language/rule.js +7 -3
  75. package/dist/domain/docs/require-example-language/types.d.ts +1 -1
  76. package/dist/domain/docs/require-example-language/types.d.ts.map +1 -1
  77. package/dist/domain/docs/require-example-language/types.js +1 -1
  78. package/dist/domain/docs/single-line-jsdoc/rule.d.ts +1 -2
  79. package/dist/domain/docs/single-line-jsdoc/rule.d.ts.map +1 -1
  80. package/dist/domain/docs/single-line-jsdoc/rule.js +18 -13
  81. package/dist/domain/index.d.ts +2 -3
  82. package/dist/domain/index.d.ts.map +1 -1
  83. package/dist/domain/index.js +3 -4
  84. package/dist/domain/testing/aaa/analyzer.analysis.d.ts +2 -78
  85. package/dist/domain/testing/aaa/analyzer.analysis.d.ts.map +1 -1
  86. package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts +121 -3
  87. package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -1
  88. package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +199 -4
  89. package/dist/domain/testing/aaa/analyzer.analysis.js +30 -188
  90. package/dist/domain/testing/aaa/analyzer.assertions.d.ts +1 -92
  91. package/dist/domain/testing/aaa/analyzer.assertions.d.ts.map +1 -1
  92. package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts +93 -0
  93. package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts.map +1 -0
  94. package/dist/domain/testing/aaa/analyzer.assertions.helpers.js +184 -0
  95. package/dist/domain/testing/aaa/analyzer.assertions.js +5 -283
  96. package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts +62 -0
  97. package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts.map +1 -0
  98. package/dist/domain/testing/aaa/analyzer.assertions.operands.js +106 -0
  99. package/dist/domain/testing/aaa/analyzer.classification.d.ts +1 -74
  100. package/dist/domain/testing/aaa/analyzer.classification.d.ts.map +1 -1
  101. package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts +75 -0
  102. package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts.map +1 -0
  103. package/dist/domain/testing/aaa/analyzer.classification.helpers.js +202 -0
  104. package/dist/domain/testing/aaa/analyzer.classification.js +5 -201
  105. package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts +13 -0
  106. package/dist/domain/testing/aaa/analyzer.classification.traversal.d.ts.map +1 -0
  107. package/dist/domain/testing/aaa/analyzer.classification.traversal.js +32 -0
  108. package/dist/domain/testing/aaa/analyzer.super.d.ts +6 -13
  109. package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -1
  110. package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts +14 -0
  111. package/dist/domain/testing/aaa/analyzer.super.helpers.d.ts.map +1 -0
  112. package/dist/domain/testing/aaa/analyzer.super.helpers.js +64 -0
  113. package/dist/domain/testing/aaa/analyzer.super.js +29 -61
  114. package/dist/domain/testing/aaa/index.d.ts +1 -2
  115. package/dist/domain/testing/aaa/index.d.ts.map +1 -1
  116. package/dist/domain/testing/aaa/index.js +2 -2
  117. package/dist/domain/testing/aaa/types.d.ts +1 -1
  118. package/dist/domain/testing/aaa/types.d.ts.map +1 -1
  119. package/dist/domain/testing/aaa/types.js +1 -1
  120. package/dist/domain/testing/assert-actual-expected-names/rule.d.ts.map +1 -1
  121. package/dist/domain/testing/assert-actual-expected-names/rule.js +33 -5
  122. package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts +2 -1
  123. package/dist/domain/testing/enforce-aaa-phase-purity/index.d.ts.map +1 -1
  124. package/dist/domain/testing/enforce-aaa-phase-purity/index.js +3 -2
  125. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts +1 -1
  126. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.d.ts.map +1 -1
  127. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-identifiers.js +1 -1
  128. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts +1 -1
  129. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts.map +1 -1
  130. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.js +78 -16
  131. package/dist/domain/testing/{require-aaa-sections → enforce-aaa-structure}/missing-section-fixes.d.ts +1 -1
  132. package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.d.ts.map +1 -0
  133. package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.js +150 -0
  134. package/dist/domain/testing/enforce-aaa-structure/rule.d.ts.map +1 -1
  135. package/dist/domain/testing/enforce-aaa-structure/rule.js +165 -3
  136. package/dist/domain/testing/index.d.ts +0 -3
  137. package/dist/domain/testing/index.d.ts.map +1 -1
  138. package/dist/domain/testing/index.js +1 -4
  139. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts +1 -15
  140. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.d.ts.map +1 -1
  141. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-statements.js +2 -71
  142. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts.map +1 -1
  143. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.js +4 -2
  144. package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts +1 -13
  145. package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts.map +1 -1
  146. package/dist/domain/testing/prefer-vi-mocked-import/fix.js +3 -21
  147. package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +1 -1
  148. package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.js +2 -1
  149. package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +1 -1
  150. package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.js +1 -1
  151. package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.js +6 -6
  152. package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts +1 -12
  153. package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts.map +1 -1
  154. package/dist/domain/testing/prefer-vi-mocked-import/match.js +149 -15
  155. package/dist/domain/testing/prefer-vi-mocked-import/rule.d.ts.map +1 -1
  156. package/dist/domain/testing/prefer-vi-mocked-import/rule.js +6 -3
  157. package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -1
  158. package/dist/domain/testing/require-act-result-capture/rule.js +42 -10
  159. package/dist/domain/testing/require-test-companion/index.d.ts +0 -1
  160. package/dist/domain/testing/require-test-companion/index.d.ts.map +1 -1
  161. package/dist/domain/testing/require-test-companion/index.js +1 -2
  162. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts +2 -1
  163. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts.map +1 -1
  164. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.js +13 -58
  165. package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts +2 -1
  166. package/dist/domain/testing/require-test-companion/require-test-companion-options.d.ts.map +1 -1
  167. package/dist/domain/testing/require-test-companion/require-test-companion-options.js +6 -5
  168. package/dist/domain/testing/require-test-companion/rule.d.ts.map +1 -1
  169. package/dist/domain/testing/require-test-companion/rule.js +34 -9
  170. package/dist/domain/testing/single-act-statement/rule.d.ts.map +1 -1
  171. package/dist/domain/testing/single-act-statement/rule.js +11 -5
  172. package/dist/index.d.ts +1 -1
  173. package/dist/index.d.ts.map +1 -1
  174. package/dist/index.js +2 -2
  175. package/dist/infrastructure/codeperfect-plugin.d.ts +6 -6
  176. package/dist/infrastructure/codeperfect-plugin.js +5 -5
  177. package/dist/infrastructure/presets.d.ts.map +1 -1
  178. package/dist/infrastructure/presets.js +23 -7
  179. package/package.json +37 -38
  180. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts +0 -41
  181. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.d.ts.map +0 -1
  182. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule-test-utilities.js +0 -87
  183. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts +0 -40
  184. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.d.ts.map +0 -1
  185. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-test-utilities.js +0 -91
  186. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts +0 -4
  187. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.d.ts.map +0 -1
  188. package/dist/domain/architecture/consistent-barrel-files/rule.repeat-runs.js +0 -4
  189. package/dist/domain/architecture/consistent-barrel-files/test-helpers.d.ts +0 -141
  190. package/dist/domain/architecture/consistent-barrel-files/test-helpers.d.ts.map +0 -1
  191. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts +0 -20
  192. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.d.ts.map +0 -1
  193. package/dist/domain/architecture/consistent-barrel-files/test-helpers.file-writers.js +0 -25
  194. package/dist/domain/architecture/consistent-barrel-files/test-helpers.js +0 -235
  195. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts +0 -101
  196. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.d.ts.map +0 -1
  197. package/dist/domain/core/no-multiple-declarators/rule-test-helpers.js +0 -108
  198. package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts +0 -35
  199. package/dist/domain/core/no-multiple-declarators/rule.fixes.d.ts.map +0 -1
  200. package/dist/domain/core/no-multiple-declarators/rule.fixes.js +0 -95
  201. package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts +0 -4
  202. package/dist/domain/core/no-multiple-declarators/rule.guardrails.d.ts.map +0 -1
  203. package/dist/domain/core/no-multiple-declarators/rule.guardrails.js +0 -4
  204. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts +0 -4
  205. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.d.ts.map +0 -1
  206. package/dist/domain/core/no-multiple-declarators/rule.mocked-types.js +0 -4
  207. package/dist/domain/core/prefer-interface-types/test-helpers.d.ts +0 -110
  208. package/dist/domain/core/prefer-interface-types/test-helpers.d.ts.map +0 -1
  209. package/dist/domain/core/prefer-interface-types/test-helpers.js +0 -116
  210. package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts +0 -89
  211. package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.d.ts.map +0 -1
  212. package/dist/domain/docs/no-interface-member-docs/comment-utilities-test-helpers.js +0 -129
  213. package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts +0 -103
  214. package/dist/domain/docs/no-interface-member-docs/test-helpers.d.ts.map +0 -1
  215. package/dist/domain/docs/no-interface-member-docs/test-helpers.js +0 -157
  216. package/dist/domain/docs/require-example-language/create-fixer.d.ts +0 -5
  217. package/dist/domain/docs/require-example-language/create-fixer.d.ts.map +0 -1
  218. package/dist/domain/docs/require-example-language/create-fixer.js +0 -5
  219. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts +0 -4
  220. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.d.ts.map +0 -1
  221. package/dist/domain/docs/single-line-jsdoc/rule.edge-cases.js +0 -5
  222. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts +0 -4
  223. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.d.ts.map +0 -1
  224. package/dist/domain/docs/single-line-jsdoc/rule.node-lookups.js +0 -5
  225. package/dist/domain/docs/test-helpers.d.ts +0 -50
  226. package/dist/domain/docs/test-helpers.d.ts.map +0 -1
  227. package/dist/domain/docs/test-helpers.js +0 -107
  228. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts +0 -9
  229. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.d.ts.map +0 -1
  230. package/dist/domain/testing/aaa/analyzer.classification.member-patterns.js +0 -10
  231. package/dist/domain/testing/aaa/analyzer.d.ts +0 -46
  232. package/dist/domain/testing/aaa/analyzer.d.ts.map +0 -1
  233. package/dist/domain/testing/aaa/analyzer.js +0 -59
  234. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts +0 -4
  235. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.d.ts.map +0 -1
  236. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.behavior.js +0 -4
  237. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts +0 -42
  238. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.d.ts.map +0 -1
  239. package/dist/domain/testing/enforce-aaa-phase-purity/rule-test-helpers.js +0 -188
  240. package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts +0 -5
  241. package/dist/domain/testing/enforce-aaa-phase-purity/rule.d.ts.map +0 -1
  242. package/dist/domain/testing/enforce-aaa-phase-purity/rule.js +0 -34
  243. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts +0 -20
  244. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.d.ts.map +0 -1
  245. package/dist/domain/testing/prefer-vi-mocked-import/rule-test-helpers.js +0 -39
  246. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts +0 -86
  247. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.d.ts.map +0 -1
  248. package/dist/domain/testing/prefer-vitest-incremental-casts/ast-helpers.js +0 -150
  249. package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts +0 -2
  250. package/dist/domain/testing/prefer-vitest-incremental-casts/index.d.ts.map +0 -1
  251. package/dist/domain/testing/prefer-vitest-incremental-casts/index.js +0 -2
  252. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts +0 -14
  253. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.d.ts.map +0 -1
  254. package/dist/domain/testing/prefer-vitest-incremental-casts/match-input.js +0 -81
  255. package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts +0 -13
  256. package/dist/domain/testing/prefer-vitest-incremental-casts/match.d.ts.map +0 -1
  257. package/dist/domain/testing/prefer-vitest-incremental-casts/match.js +0 -189
  258. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts +0 -25
  259. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.d.ts.map +0 -1
  260. package/dist/domain/testing/prefer-vitest-incremental-casts/replacement-helpers.js +0 -92
  261. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts +0 -32
  262. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.d.ts.map +0 -1
  263. package/dist/domain/testing/prefer-vitest-incremental-casts/rule-test-helpers.js +0 -164
  264. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts +0 -5
  265. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.d.ts.map +0 -1
  266. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts +0 -4
  267. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.d.ts.map +0 -1
  268. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.guardrails.js +0 -4
  269. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts +0 -4
  270. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.d.ts.map +0 -1
  271. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.input-shapes.js +0 -4
  272. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.js +0 -62
  273. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts +0 -4
  274. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.d.ts.map +0 -1
  275. package/dist/domain/testing/prefer-vitest-incremental-casts/rule.signature-fallback.js +0 -4
  276. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts +0 -24
  277. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.d.ts.map +0 -1
  278. package/dist/domain/testing/prefer-vitest-incremental-casts/type-helpers.js +0 -113
  279. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts +0 -36
  280. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.d.ts.map +0 -1
  281. package/dist/domain/testing/prefer-vitest-incremental-casts/type-shape-helpers.js +0 -138
  282. package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts +0 -203
  283. package/dist/domain/testing/prefer-vitest-incremental-casts/types.d.ts.map +0 -1
  284. package/dist/domain/testing/prefer-vitest-incremental-casts/types.js +0 -2
  285. package/dist/domain/testing/require-aaa-sections/index.d.ts +0 -2
  286. package/dist/domain/testing/require-aaa-sections/index.d.ts.map +0 -1
  287. package/dist/domain/testing/require-aaa-sections/index.js +0 -2
  288. package/dist/domain/testing/require-aaa-sections/missing-section-fixes.d.ts.map +0 -1
  289. package/dist/domain/testing/require-aaa-sections/missing-section-fixes.js +0 -150
  290. package/dist/domain/testing/require-aaa-sections/rule.d.ts +0 -5
  291. package/dist/domain/testing/require-aaa-sections/rule.d.ts.map +0 -1
  292. package/dist/domain/testing/require-aaa-sections/rule.js +0 -129
  293. package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts +0 -104
  294. package/dist/domain/testing/require-aaa-sections/rule.reporting.d.ts.map +0 -1
  295. package/dist/domain/testing/require-aaa-sections/rule.reporting.js +0 -217
  296. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts +0 -51
  297. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.d.ts.map +0 -1
  298. package/dist/domain/testing/require-test-companion/require-test-companion-test-helpers.js +0 -184
  299. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts +0 -28
  300. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.d.ts.map +0 -1
  301. package/dist/domain/testing/require-test-companion/require-test-companion-utilities.js +0 -26
@@ -1,4 +1,3 @@
1
- import { createRuleDocumentation } from "../../custom-rule-documentation.js";
2
1
  /**
3
2
  * Gets a nested type annotation from parameter wrappers.
4
3
  * @param node Parameter wrapper node.
@@ -12,6 +11,9 @@ const getNestedTypeAnnotation = (node) => {
12
11
  if (node.argument !== void 0) {
13
12
  return getTypeAnnotationNode(node.argument);
14
13
  }
14
+ if (node.left !== void 0) {
15
+ return getTypeAnnotationNode(node.left);
16
+ }
15
17
  if (node.parameter !== void 0) {
16
18
  return getTypeAnnotationNode(node.parameter);
17
19
  }
@@ -70,15 +72,35 @@ const getParameters = (node) => {
70
72
  return Array.isArray(typedNode.params) ? typedNode.params : [];
71
73
  };
72
74
  /**
73
- * Checks whether the node represents a type literal.
74
- * @param node Type annotation node to check.
75
- * @returns True when the node is a type literal.
75
+ * Finds an inline object type literal within a type annotation node.
76
+ * @param node Type annotation node to inspect.
77
+ * @returns The first inline object type literal when present.
76
78
  * @example
77
79
  * ```typescript
78
- * const isLiteral = isTypeLiteral(annotation);
80
+ * const inlineObjectType = getInlineObjectTypeLiteral(annotation);
79
81
  * ```
80
82
  */
81
- const isTypeLiteral = (node) => node?.type === "TSTypeLiteral";
83
+ const getInlineObjectTypeLiteral = (node) => {
84
+ if (node === void 0) {
85
+ return void 0;
86
+ }
87
+ if (node.type === "TSTypeLiteral") {
88
+ return node;
89
+ }
90
+ if (node.type === "TSParenthesizedType") {
91
+ return getInlineObjectTypeLiteral(node.typeAnnotation);
92
+ }
93
+ if (node.type === "TSUnionType" || node.type === "TSIntersectionType") {
94
+ const nestedTypes = Array.isArray(node.types) ? node.types : [];
95
+ for (const nestedType of nestedTypes) {
96
+ const nestedInlineObjectType = getInlineObjectTypeLiteral(nestedType);
97
+ if (nestedInlineObjectType !== void 0) {
98
+ return nestedInlineObjectType;
99
+ }
100
+ }
101
+ }
102
+ return void 0;
103
+ };
82
104
  /**
83
105
  * Reports an inline object type annotation.
84
106
  * @param context Rule execution context.
@@ -105,35 +127,84 @@ const reportTypeLiteral = (context, typeAnnotation) => {
105
127
  */
106
128
  const checkFunctionLike = (context, node) => {
107
129
  for (const parameter of getParameters(node)) {
108
- const typeAnnotation = getTypeAnnotationNode(parameter);
109
- if (isTypeLiteral(typeAnnotation)) {
110
- reportTypeLiteral(context, typeAnnotation);
130
+ const inlineObjectType = getInlineObjectTypeLiteral(getTypeAnnotationNode(parameter));
131
+ if (inlineObjectType !== void 0) {
132
+ reportTypeLiteral(context, inlineObjectType);
111
133
  }
112
134
  }
113
- const returnTypeAnnotation = getReturnTypeAnnotation(node);
114
- if (isTypeLiteral(returnTypeAnnotation)) {
115
- reportTypeLiteral(context, returnTypeAnnotation);
135
+ const inlineReturnObjectType = getInlineObjectTypeLiteral(getReturnTypeAnnotation(node));
136
+ if (inlineReturnObjectType !== void 0) {
137
+ reportTypeLiteral(context, inlineReturnObjectType);
138
+ }
139
+ };
140
+ /**
141
+ * Checks variable declarators for inline object types.
142
+ * @param context Rule execution context.
143
+ * @param node Variable declarator to check.
144
+ * @example
145
+ * ```typescript
146
+ * checkVariableDeclarator(context, node);
147
+ * ```
148
+ */
149
+ const checkVariableDeclarator = (context, node) => {
150
+ const typedNode = node;
151
+ const inlineObjectType = getInlineObjectTypeLiteral(getTypeAnnotationNode(typedNode.id));
152
+ if (inlineObjectType !== void 0) {
153
+ reportTypeLiteral(context, inlineObjectType);
116
154
  }
117
155
  };
118
156
  /** ESLint rule requiring named interface/type aliases for object types. */
119
157
  const preferInterfaceTypesRule = {
158
+ /**
159
+ * Creates listeners that validate function-like and variable annotations.
160
+ * @param context Rule execution context.
161
+ * @returns Rule listener map.
162
+ * @example
163
+ * ```typescript
164
+ * const listeners = preferInterfaceTypesRule.create(context);
165
+ * ```
166
+ */
120
167
  create(context) {
121
- const listener = (node) => {
168
+ /**
169
+ * Checks function-like nodes for inline object types.
170
+ * @param node Function-like node to inspect.
171
+ * @example
172
+ * ```typescript
173
+ * functionLikeListener(node);
174
+ * ```
175
+ */
176
+ const functionLikeListener = (node) => {
122
177
  checkFunctionLike(context, node);
123
178
  };
179
+ /**
180
+ * Checks variable declarators for inline object types.
181
+ * @param node Variable declarator to inspect.
182
+ * @example
183
+ * ```typescript
184
+ * variableDeclaratorListener(node);
185
+ * ```
186
+ */
187
+ const variableDeclaratorListener = (node) => {
188
+ checkVariableDeclarator(context, node);
189
+ };
124
190
  return {
125
- ArrowFunctionExpression: listener,
126
- FunctionDeclaration: listener,
127
- FunctionExpression: listener,
128
- TSCallSignatureDeclaration: listener,
129
- TSConstructSignatureDeclaration: listener,
130
- TSDeclareFunction: listener,
131
- TSFunctionType: listener,
132
- TSMethodSignature: listener,
191
+ ArrowFunctionExpression: functionLikeListener,
192
+ FunctionDeclaration: functionLikeListener,
193
+ FunctionExpression: functionLikeListener,
194
+ TSCallSignatureDeclaration: functionLikeListener,
195
+ TSConstructSignatureDeclaration: functionLikeListener,
196
+ TSDeclareFunction: functionLikeListener,
197
+ TSFunctionType: functionLikeListener,
198
+ TSMethodSignature: functionLikeListener,
199
+ VariableDeclarator: variableDeclaratorListener,
133
200
  };
134
201
  },
135
202
  meta: {
136
- docs: createRuleDocumentation("prefer-interface-types", "Require named interfaces or type aliases for object types in parameters and return types."),
203
+ docs: {
204
+ description: "Require named interfaces or type aliases for object types in parameters, return types, and variable annotations.",
205
+ recommended: false,
206
+ url: "https://github.com/parloti/eslint-plugin/blob/main/docs/rules/prefer-interface-types.md",
207
+ },
137
208
  messages: {
138
209
  preferNamedObject: "Use a named interface or type alias instead of an inline object type.",
139
210
  },
@@ -142,4 +213,4 @@ const preferInterfaceTypesRule = {
142
213
  },
143
214
  };
144
215
  export { preferInterfaceTypesRule };
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vY29yZS9wcmVmZXItaW50ZXJmYWNlLXR5cGVzL3J1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFxQzFFOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSx1QkFBdUIsR0FBRyxDQUM5QixJQUF3QixFQUNRLEVBQUU7SUFDbEMsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDN0IsT0FBTyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzlCLE9BQU8scUJBQXFCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQyxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxxQkFBcUIsR0FBRyxDQUM1QixJQUFhLEVBQ21CLEVBQUU7SUFDbEMsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlDLE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sb0JBQW9CLEdBQUksSUFBZ0MsQ0FBQyxjQUFjO1FBQzNFLEVBQUUsY0FBYyxDQUFDO0lBRW5CLElBQUksb0JBQW9CLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNwQyxPQUFPLG9CQUFvQixDQUFDO0lBQzlCLENBQUM7SUFFRCxPQUFPLHVCQUF1QixDQUFDLElBQTBCLENBQUMsQ0FBQztBQUM3RCxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sdUJBQXVCLEdBQUcsQ0FD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Q29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XG5cbmltcG9ydCB7IGNyZWF0ZVJ1bGVEb2N1bWVudGF0aW9uIH0gZnJvbSBcIi4uLy4uL2N1c3RvbS1ydWxlLWRvY3VtZW50YXRpb25cIjtcbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBGdW5jdGlvbkxpa2VOb2RlIHtcbiAgLyoqIFBhcmFtcyBoZWxwZXIgdmFsdWUuICovXG4gIHBhcmFtcz86IHVua25vd25bXTtcblxuICAvKiogUmV0dXJuVHlwZSBoZWxwZXIgdmFsdWUuICovXG4gIHJldHVyblR5cGU/OiB7XG4gICAgLyoqIFR5cGVBbm5vdGF0aW9uIGhlbHBlciB2YWx1ZS4gKi9cbiAgICB0eXBlQW5ub3RhdGlvbj86IFR5cGVBbm5vdGF0aW9uTm9kZTtcbiAgfTtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIFBhcmFtZXRlckNvbnRhaW5lciB7XG4gIC8qKiBBcmd1bWVudCBoZWxwZXIgdmFsdWUuICovXG4gIGFyZ3VtZW50PzogdW5rbm93bjtcblxuICAvKiogUGFyYW1ldGVyIGhlbHBlciB2YWx1ZS4gKi9cbiAgcGFyYW1ldGVyPzogdW5rbm93bjtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIFR5cGVBbm5vdGF0aW9uQ29udGFpbmVyIHtcbiAgLyoqIFR5cGVBbm5vdGF0aW9uIGhlbHBlciB2YWx1ZS4gKi9cbiAgdHlwZUFubm90YXRpb24/OiB7XG4gICAgLyoqIFR5cGVBbm5vdGF0aW9uIGhlbHBlciB2YWx1ZS4gKi9cbiAgICB0eXBlQW5ub3RhdGlvbj86IFR5cGVBbm5vdGF0aW9uTm9kZTtcbiAgfTtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIFR5cGVBbm5vdGF0aW9uTm9kZSB7XG4gIC8qKiBUeXBlIGZpZWxkIHZhbHVlLiAqL1xuICB0eXBlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogR2V0cyBhIG5lc3RlZCB0eXBlIGFubm90YXRpb24gZnJvbSBwYXJhbWV0ZXIgd3JhcHBlcnMuXG4gKiBAcGFyYW0gbm9kZSBQYXJhbWV0ZXIgd3JhcHBlciBub2RlLlxuICogQHJldHVybnMgVGhlIG5lc3RlZCB0eXBlIGFubm90YXRpb24gd2hlbiBwcmVzZW50LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGFubm90YXRpb24gPSBnZXROZXN0ZWRUeXBlQW5ub3RhdGlvbih7IGFyZ3VtZW50OiBub2RlIH0pO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldE5lc3RlZFR5cGVBbm5vdGF0aW9uID0gKFxuICBub2RlOiBQYXJhbWV0ZXJDb250YWluZXIsXG4pOiBUeXBlQW5ub3RhdGlvbk5vZGUgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAobm9kZS5hcmd1bWVudCAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIGdldFR5cGVBbm5vdGF0aW9uTm9kZShub2RlLmFyZ3VtZW50KTtcbiAgfVxuXG4gIGlmIChub2RlLnBhcmFtZXRlciAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIGdldFR5cGVBbm5vdGF0aW9uTm9kZShub2RlLnBhcmFtZXRlcik7XG4gIH1cblxuICByZXR1cm4gdm9pZCAwO1xufTtcblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgdHlwZSBhbm5vdGF0aW9uIGZyb20gYSBub2RlLlxuICogQHBhcmFtIG5vZGUgTm9kZSB0aGF0IG1heSBjb250YWluIGEgdHlwZSBhbm5vdGF0aW9uLlxuICogQHJldHVybnMgVGhlIHR5cGUgYW5ub3RhdGlvbiB3aGVuIHByZXNlbnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgYW5ub3RhdGlvbiA9IGdldFR5cGVBbm5vdGF0aW9uTm9kZShub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRUeXBlQW5ub3RhdGlvbk5vZGUgPSAoXG4gIG5vZGU6IHVua25vd24sXG4pOiBUeXBlQW5ub3RhdGlvbk5vZGUgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAobm9kZSA9PT0gbnVsbCB8fCB0eXBlb2Ygbm9kZSAhPT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCBkaXJlY3RUeXBlQW5ub3RhdGlvbiA9IChub2RlIGFzIFR5cGVBbm5vdGF0aW9uQ29udGFpbmVyKS50eXBlQW5ub3RhdGlvblxuICAgID8udHlwZUFubm90YXRpb247XG5cbiAgaWYgKGRpcmVjdFR5cGVBbm5vdGF0aW9uICE9PSB2b2lkIDApIHtcbiAgICByZXR1cm4gZGlyZWN0VHlwZUFubm90YXRpb247XG4gIH1cblxuICByZXR1cm4gZ2V0TmVzdGVkVHlwZUFubm90YXRpb24obm9kZSBhcyBQYXJhbWV0ZXJDb250YWluZXIpO1xufTtcblxuLyoqXG4gKiBHZXRzIHRoZSByZXR1cm4gdHlwZSBhbm5vdGF0aW9uIGZvciBhIGZ1bmN0aW9uLWxpa2Ugbm9kZS5cbiAqIEBwYXJhbSBub2RlIE5vZGUgdGhhdCBtYXkgY29udGFpbiBhIHJldHVybiB0eXBlLlxuICogQHJldHVybnMgVGhlIHJldHVybiB0eXBlIGFubm90YXRpb24gd2hlbiBwcmVzZW50LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGFubm90YXRpb24gPSBnZXRSZXR1cm5UeXBlQW5ub3RhdGlvbihub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRSZXR1cm5UeXBlQW5ub3RhdGlvbiA9IChcbiAgbm9kZTogdW5rbm93bixcbik6IFR5cGVBbm5vdGF0aW9uTm9kZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChub2RlID09PSBudWxsIHx8IHR5cGVvZiBub2RlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IHR5cGVkTm9kZSA9IG5vZGUgYXMgRnVuY3Rpb25MaWtlTm9kZTtcblxuICByZXR1cm4gdHlwZWROb2RlLnJldHVyblR5cGU/LnR5cGVBbm5vdGF0aW9uO1xufTtcblxuLyoqXG4gKiBHZXRzIGdldFBhcmFtZXRlcnMuXG4gKiBAcGFyYW0gbm9kZSBJbnB1dCBub2RlIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBnZXRQYXJhbWV0ZXJzKCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0UGFyYW1ldGVycyA9IChub2RlOiB1bmtub3duKTogdW5rbm93bltdID0+IHtcbiAgaWYgKG5vZGUgPT09IG51bGwgfHwgdHlwZW9mIG5vZGUgIT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCB0eXBlZE5vZGUgPSBub2RlIGFzIEZ1bmN0aW9uTGlrZU5vZGU7XG5cbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZWROb2RlLnBhcmFtcykgPyB0eXBlZE5vZGUucGFyYW1zIDogW107XG59O1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBub2RlIHJlcHJlc2VudHMgYSB0eXBlIGxpdGVyYWwuXG4gKiBAcGFyYW0gbm9kZSBUeXBlIGFubm90YXRpb24gbm9kZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgbm9kZSBpcyBhIHR5cGUgbGl0ZXJhbC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBpc0xpdGVyYWwgPSBpc1R5cGVMaXRlcmFsKGFubm90YXRpb24pO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzVHlwZUxpdGVyYWwgPSAoXG4gIG5vZGU6IFR5cGVBbm5vdGF0aW9uTm9kZSB8IHVuZGVmaW5lZCxcbik6IG5vZGUgaXMgVHlwZUFubm90YXRpb25Ob2RlID0+IG5vZGU/LnR5cGUgPT09IFwiVFNUeXBlTGl0ZXJhbFwiO1xuXG4vKipcbiAqIFJlcG9ydHMgYW4gaW5saW5lIG9iamVjdCB0eXBlIGFubm90YXRpb24uXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHBhcmFtIHR5cGVBbm5vdGF0aW9uIFR5cGUgYW5ub3RhdGlvbiBub2RlIHRvIHJlcG9ydC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiByZXBvcnRUeXBlTGl0ZXJhbChjb250ZXh0LCB0eXBlQW5ub3RhdGlvbik7XG4gKiBgYGBcbiAqL1xuY29uc3QgcmVwb3J0VHlwZUxpdGVyYWwgPSAoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIHR5cGVBbm5vdGF0aW9uOiBUeXBlQW5ub3RhdGlvbk5vZGUsXG4pOiB2b2lkID0+IHtcbiAgY29udGV4dC5yZXBvcnQoe1xuICAgIG1lc3NhZ2VJZDogXCJwcmVmZXJOYW1lZE9iamVjdFwiLFxuICAgIG5vZGU6IHR5cGVBbm5vdGF0aW9uIGFzIHVua25vd24gYXMgUnVsZS5Ob2RlLFxuICB9KTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIGZ1bmN0aW9uLWxpa2Ugbm9kZXMgZm9yIGlubGluZSBvYmplY3QgdHlwZXMuXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHBhcmFtIG5vZGUgRnVuY3Rpb24tbGlrZSBub2RlIHRvIGNoZWNrLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNoZWNrRnVuY3Rpb25MaWtlKGNvbnRleHQsIG5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGNoZWNrRnVuY3Rpb25MaWtlID0gKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuICBub2RlOiBSdWxlLk5vZGUsXG4pOiB2b2lkID0+IHtcbiAgZm9yIChjb25zdCBwYXJhbWV0ZXIgb2YgZ2V0UGFyYW1ldGVycyhub2RlKSkge1xuICAgIGNvbnN0IHR5cGVBbm5vdGF0aW9uID0gZ2V0VHlwZUFubm90YXRpb25Ob2RlKHBhcmFtZXRlcik7XG5cbiAgICBpZiAoaXNUeXBlTGl0ZXJhbCh0eXBlQW5ub3RhdGlvbikpIHtcbiAgICAgIHJlcG9ydFR5cGVMaXRlcmFsKGNvbnRleHQsIHR5cGVBbm5vdGF0aW9uKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCByZXR1cm5UeXBlQW5ub3RhdGlvbiA9IGdldFJldHVyblR5cGVBbm5vdGF0aW9uKG5vZGUpO1xuXG4gIGlmIChpc1R5cGVMaXRlcmFsKHJldHVyblR5cGVBbm5vdGF0aW9uKSkge1xuICAgIHJlcG9ydFR5cGVMaXRlcmFsKGNvbnRleHQsIHJldHVyblR5cGVBbm5vdGF0aW9uKTtcbiAgfVxufTtcblxuLyoqIEVTTGludCBydWxlIHJlcXVpcmluZyBuYW1lZCBpbnRlcmZhY2UvdHlwZSBhbGlhc2VzIGZvciBvYmplY3QgdHlwZXMuICovXG5jb25zdCBwcmVmZXJJbnRlcmZhY2VUeXBlc1J1bGU6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQpOiBSdWxlLlJ1bGVMaXN0ZW5lciB7XG4gICAgY29uc3QgbGlzdGVuZXIgPSAobm9kZTogUnVsZS5Ob2RlKTogdm9pZCA9PiB7XG4gICAgICBjaGVja0Z1bmN0aW9uTGlrZShjb250ZXh0LCBub2RlKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIEFycm93RnVuY3Rpb25FeHByZXNzaW9uOiBsaXN0ZW5lcixcbiAgICAgIEZ1bmN0aW9uRGVjbGFyYXRpb246IGxpc3RlbmVyLFxuICAgICAgRnVuY3Rpb25FeHByZXNzaW9uOiBsaXN0ZW5lcixcbiAgICAgIFRTQ2FsbFNpZ25hdHVyZURlY2xhcmF0aW9uOiBsaXN0ZW5lcixcbiAgICAgIFRTQ29uc3RydWN0U2lnbmF0dXJlRGVjbGFyYXRpb246IGxpc3RlbmVyLFxuICAgICAgVFNEZWNsYXJlRnVuY3Rpb246IGxpc3RlbmVyLFxuICAgICAgVFNGdW5jdGlvblR5cGU6IGxpc3RlbmVyLFxuICAgICAgVFNNZXRob2RTaWduYXR1cmU6IGxpc3RlbmVyLFxuICAgIH07XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkb2NzOiBjcmVhdGVSdWxlRG9jdW1lbnRhdGlvbihcbiAgICAgIFwicHJlZmVyLWludGVyZmFjZS10eXBlc1wiLFxuICAgICAgXCJSZXF1aXJlIG5hbWVkIGludGVyZmFjZXMgb3IgdHlwZSBhbGlhc2VzIGZvciBvYmplY3QgdHlwZXMgaW4gcGFyYW1ldGVycyBhbmQgcmV0dXJuIHR5cGVzLlwiLFxuICAgICksXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIHByZWZlck5hbWVkT2JqZWN0OlxuICAgICAgICBcIlVzZSBhIG5hbWVkIGludGVyZmFjZSBvciB0eXBlIGFsaWFzIGluc3RlYWQgb2YgYW4gaW5saW5lIG9iamVjdCB0eXBlLlwiLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiBcInN1Z2dlc3Rpb25cIixcbiAgfSxcbn07XG5cbmV4cG9ydCB7IHByZWZlckludGVyZmFjZVR5cGVzUnVsZSB9O1xuIl19
216
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vY29yZS9wcmVmZXItaW50ZXJmYWNlLXR5cGVzL3J1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcURBOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSx1QkFBdUIsR0FBRyxDQUM5QixJQUF3QixFQUNRLEVBQUU7SUFDbEMsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDN0IsT0FBTyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8scUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM5QixPQUFPLHFCQUFxQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0scUJBQXFCLEdBQUcsQ0FDNUIsSUFBYSxFQUNtQixFQUFFO0lBQ2xDLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QyxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLG9CQUFvQixHQUFJLElBQWdDLENBQUMsY0FBYztRQUMzRSxFQUFFLGNBQWMsQ0FBQztJQUVuQixJQUFJLG9CQUFvQixLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDcEMsT0FBTyxvQkFBb0IsQ0FBQztJQUM5QixDQUFDO0lBRUQsT0FBTyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMs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QStCLEVBQUUsb0JBQW9CO1lBQ3JELGlCQUFpQixFQUFFLG9CQUFvQjtZQUN2QyxjQUFjLEVBQUUsb0JBQW9CO1lBQ3BDLGlCQUFpQixFQUFFLG9CQUFvQjtZQUN2QyxrQkFBa0IsRUFBRSwwQkFBMEI7U0FDL0MsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUU7WUFDSixXQUFXLEVBQ1Qsa0hBQWtIO1lBQ3BILFdBQVcsRUFBRSxLQUFLO1lBQ2xCLEdBQUcsRUFBRSx5RkFBeUY7U0FDL0Y7UUFDRCxRQUFRLEVBQUU7WUFDUixpQkFBaUIsRUFDZix1RUFBdUU7U0FDMUU7UUFDRCxNQUFNLEVBQUUsRUFBRTtRQUNWLElBQUksRUFBRSxZQUFZO0tBQ25CO0NBQ0YsQ0FBQztBQUVGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSBcImVzbGludFwiO1xuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG5pbnRlcmZhY2UgRnVuY3Rpb25MaWtlTm9kZSB7XG4gIC8qKiBQYXJhbXMgaGVscGVyIHZhbHVlLiAqL1xuICBwYXJhbXM/OiB1bmtub3duW107XG5cbiAgLyoqIFJldHVyblR5cGUgaGVscGVyIHZhbHVlLiAqL1xuICByZXR1cm5UeXBlPzoge1xuICAgIC8qKiBUeXBlQW5ub3RhdGlvbiBoZWxwZXIgdmFsdWUuICovXG4gICAgdHlwZUFubm90YXRpb24/OiBUeXBlQW5ub3RhdGlvbk5vZGU7XG4gIH07XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBQYXJhbWV0ZXJDb250YWluZXIge1xuICAvKiogQXJndW1lbnQgaGVscGVyIHZhbHVlLiAqL1xuICBhcmd1bWVudD86IHVua25vd247XG5cbiAgLyoqIExlZnQtc2lkZSBoZWxwZXIgdmFsdWUgdXNlZCBieSBhc3NpZ25tZW50IHBhdHRlcm5zLiAqL1xuICBsZWZ0PzogdW5rbm93bjtcblxuICAvKiogUGFyYW1ldGVyIGhlbHBlciB2YWx1ZS4gKi9cbiAgcGFyYW1ldGVyPzogdW5rbm93bjtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIFR5cGVBbm5vdGF0aW9uQ29udGFpbmVyIHtcbiAgLyoqIFR5cGVBbm5vdGF0aW9uIGhlbHBlciB2YWx1ZS4gKi9cbiAgdHlwZUFubm90YXRpb24/OiB7XG4gICAgLyoqIFR5cGVBbm5vdGF0aW9uIGhlbHBlciB2YWx1ZS4gKi9cbiAgICB0eXBlQW5ub3RhdGlvbj86IFR5cGVBbm5vdGF0aW9uTm9kZTtcbiAgfTtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIFR5cGVBbm5vdGF0aW9uTm9kZSB7XG4gIC8qKiBUeXBlIGZpZWxkIHZhbHVlLiAqL1xuICB0eXBlOiBzdHJpbmc7XG5cbiAgLyoqIE5lc3RlZCBhbm5vdGF0aW9uIGZvciBwYXJlbnRoZXNpemVkIHR5cGVzLiAqL1xuICB0eXBlQW5ub3RhdGlvbj86IHVua25vd247XG5cbiAgLyoqIE5lc3RlZCBtZW1iZXIgYW5ub3RhdGlvbnMgZm9yIHVuaW9uL2ludGVyc2VjdGlvbiB0eXBlcy4gKi9cbiAgdHlwZXM/OiB1bmtub3duW107XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHZhcmlhYmxlIGRlY2xhcmF0b3Igbm9kZXMgd2l0aCBvcHRpb25hbCBpZGVudGlmaWVycy4gKi9cbmludGVyZmFjZSBWYXJpYWJsZURlY2xhcmF0b3JOb2RlIHtcbiAgLyoqIElkZW50aWZpZXIgb3IgYmluZGluZyBwYXR0ZXJuIGZvciB0aGUgdmFyaWFibGUgZGVjbGFyYXRvci4gKi9cbiAgaWQ/OiB1bmtub3duO1xufVxuXG4vKipcbiAqIEdldHMgYSBuZXN0ZWQgdHlwZSBhbm5vdGF0aW9uIGZyb20gcGFyYW1ldGVyIHdyYXBwZXJzLlxuICogQHBhcmFtIG5vZGUgUGFyYW1ldGVyIHdyYXBwZXIgbm9kZS5cbiAqIEByZXR1cm5zIFRoZSBuZXN0ZWQgdHlwZSBhbm5vdGF0aW9uIHdoZW4gcHJlc2VudC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBhbm5vdGF0aW9uID0gZ2V0TmVzdGVkVHlwZUFubm90YXRpb24oeyBhcmd1bWVudDogbm9kZSB9KTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXROZXN0ZWRUeXBlQW5ub3RhdGlvbiA9IChcbiAgbm9kZTogUGFyYW1ldGVyQ29udGFpbmVyLFxuKTogVHlwZUFubm90YXRpb25Ob2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKG5vZGUuYXJndW1lbnQgIT09IHZvaWQgMCkge1xuICAgIHJldHVybiBnZXRUeXBlQW5ub3RhdGlvbk5vZGUobm9kZS5hcmd1bWVudCk7XG4gIH1cblxuICBpZiAobm9kZS5sZWZ0ICE9PSB2b2lkIDApIHtcbiAgICByZXR1cm4gZ2V0VHlwZUFubm90YXRpb25Ob2RlKG5vZGUubGVmdCk7XG4gIH1cblxuICBpZiAobm9kZS5wYXJhbWV0ZXIgIT09IHZvaWQgMCkge1xuICAgIHJldHVybiBnZXRUeXBlQW5ub3RhdGlvbk5vZGUobm9kZS5wYXJhbWV0ZXIpO1xuICB9XG5cbiAgcmV0dXJuIHZvaWQgMDtcbn07XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIHR5cGUgYW5ub3RhdGlvbiBmcm9tIGEgbm9kZS5cbiAqIEBwYXJhbSBub2RlIE5vZGUgdGhhdCBtYXkgY29udGFpbiBhIHR5cGUgYW5ub3RhdGlvbi5cbiAqIEByZXR1cm5zIFRoZSB0eXBlIGFubm90YXRpb24gd2hlbiBwcmVzZW50LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGFubm90YXRpb24gPSBnZXRUeXBlQW5ub3RhdGlvbk5vZGUobm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0VHlwZUFubm90YXRpb25Ob2RlID0gKFxuICBub2RlOiB1bmtub3duLFxuKTogVHlwZUFubm90YXRpb25Ob2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKG5vZGUgPT09IG51bGwgfHwgdHlwZW9mIG5vZGUgIT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgZGlyZWN0VHlwZUFubm90YXRpb24gPSAobm9kZSBhcyBUeXBlQW5ub3RhdGlvbkNvbnRhaW5lcikudHlwZUFubm90YXRpb25cbiAgICA/LnR5cGVBbm5vdGF0aW9uO1xuXG4gIGlmIChkaXJlY3RUeXBlQW5ub3RhdGlvbiAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIGRpcmVjdFR5cGVBbm5vdGF0aW9uO1xuICB9XG5cbiAgcmV0dXJuIGdldE5lc3RlZFR5cGVBbm5vdGF0aW9uKG5vZGUpO1xufTtcblxuLyoqXG4gKiBHZXRzIHRoZSByZXR1cm4gdHlwZSBhbm5vdGF0aW9uIGZvciBhIGZ1bmN0aW9uLWxpa2Ugbm9kZS5cbiAqIEBwYXJhbSBub2RlIE5vZGUgdGhhdCBtYXkgY29udGFpbiBhIHJldHVybiB0eXBlLlxuICogQHJldHVybnMgVGhlIHJldHVybiB0eXBlIGFubm90YXRpb24gd2hlbiBwcmVzZW50LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGFubm90YXRpb24gPSBnZXRSZXR1cm5UeXBlQW5ub3RhdGlvbihub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRSZXR1cm5UeXBlQW5ub3RhdGlvbiA9IChcbiAgbm9kZTogdW5rbm93bixcbik6IFR5cGVBbm5vdGF0aW9uTm9kZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChub2RlID09PSBudWxsIHx8IHR5cGVvZiBub2RlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IHR5cGVkTm9kZSA9IG5vZGUgYXMgRnVuY3Rpb25MaWtlTm9kZTtcblxuICByZXR1cm4gdHlwZWROb2RlLnJldHVyblR5cGU/LnR5cGVBbm5vdGF0aW9uO1xufTtcblxuLyoqXG4gKiBHZXRzIGdldFBhcmFtZXRlcnMuXG4gKiBAcGFyYW0gbm9kZSBJbnB1dCBub2RlIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBnZXRQYXJhbWV0ZXJzKCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0UGFyYW1ldGVycyA9IChub2RlOiB1bmtub3duKTogdW5rbm93bltdID0+IHtcbiAgaWYgKG5vZGUgPT09IG51bGwgfHwgdHlwZW9mIG5vZGUgIT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCB0eXBlZE5vZGUgPSBub2RlIGFzIEZ1bmN0aW9uTGlrZU5vZGU7XG5cbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZWROb2RlLnBhcmFtcykgPyB0eXBlZE5vZGUucGFyYW1zIDogW107XG59O1xuXG4vKipcbiAqIEZpbmRzIGFuIGlubGluZSBvYmplY3QgdHlwZSBsaXRlcmFsIHdpdGhpbiBhIHR5cGUgYW5ub3RhdGlvbiBub2RlLlxuICogQHBhcmFtIG5vZGUgVHlwZSBhbm5vdGF0aW9uIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFRoZSBmaXJzdCBpbmxpbmUgb2JqZWN0IHR5cGUgbGl0ZXJhbCB3aGVuIHByZXNlbnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgaW5saW5lT2JqZWN0VHlwZSA9IGdldElubGluZU9iamVjdFR5cGVMaXRlcmFsKGFubm90YXRpb24pO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldElubGluZU9iamVjdFR5cGVMaXRlcmFsID0gKFxuICBub2RlOiBUeXBlQW5ub3RhdGlvbk5vZGUgfCB1bmRlZmluZWQsXG4pOiBUeXBlQW5ub3RhdGlvbk5vZGUgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAobm9kZSA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGlmIChub2RlLnR5cGUgPT09IFwiVFNUeXBlTGl0ZXJhbFwiKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBpZiAobm9kZS50eXBlID09PSBcIlRTUGFyZW50aGVzaXplZFR5cGVcIikge1xuICAgIHJldHVybiBnZXRJbmxpbmVPYmplY3RUeXBlTGl0ZXJhbChcbiAgICAgIG5vZGUudHlwZUFubm90YXRpb24gYXMgVHlwZUFubm90YXRpb25Ob2RlIHwgdW5kZWZpbmVkLFxuICAgICk7XG4gIH1cblxuICBpZiAobm9kZS50eXBlID09PSBcIlRTVW5pb25UeXBlXCIgfHwgbm9kZS50eXBlID09PSBcIlRTSW50ZXJzZWN0aW9uVHlwZVwiKSB7XG4gICAgY29uc3QgbmVzdGVkVHlwZXMgPSBBcnJheS5pc0FycmF5KG5vZGUudHlwZXMpID8gbm9kZS50eXBlcyA6IFtdO1xuXG4gICAgZm9yIChjb25zdCBuZXN0ZWRUeXBlIG9mIG5lc3RlZFR5cGVzKSB7XG4gICAgICBjb25zdCBuZXN0ZWRJbmxpbmVPYmplY3RUeXBlID0gZ2V0SW5saW5lT2JqZWN0VHlwZUxpdGVyYWwoXG4gICAgICAgIG5lc3RlZFR5cGUgYXMgVHlwZUFubm90YXRpb25Ob2RlIHwgdW5kZWZpbmVkLFxuICAgICAgKTtcblxuICAgICAgaWYgKG5lc3RlZElubGluZU9iamVjdFR5cGUgIT09IHZvaWQgMCkge1xuICAgICAgICByZXR1cm4gbmVzdGVkSW5saW5lT2JqZWN0VHlwZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdm9pZCAwO1xufTtcblxuLyoqXG4gKiBSZXBvcnRzIGFuIGlubGluZSBvYmplY3QgdHlwZSBhbm5vdGF0aW9uLlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBleGVjdXRpb24gY29udGV4dC5cbiAqIEBwYXJhbSB0eXBlQW5ub3RhdGlvbiBUeXBlIGFubm90YXRpb24gbm9kZSB0byByZXBvcnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogcmVwb3J0VHlwZUxpdGVyYWwoY29udGV4dCwgdHlwZUFubm90YXRpb24pO1xuICogYGBgXG4gKi9cbmNvbnN0IHJlcG9ydFR5cGVMaXRlcmFsID0gKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuICB0eXBlQW5ub3RhdGlvbjogVHlwZUFubm90YXRpb25Ob2RlLFxuKTogdm9pZCA9PiB7XG4gIGNvbnRleHQucmVwb3J0KHtcbiAgICBtZXNzYWdlSWQ6IFwicHJlZmVyTmFtZWRPYmplY3RcIixcbiAgICBub2RlOiB0eXBlQW5ub3RhdGlvbiBhcyB1bmtub3duIGFzIFJ1bGUuTm9kZSxcbiAgfSk7XG59O1xuXG4vKipcbiAqIENoZWNrcyBmdW5jdGlvbi1saWtlIG5vZGVzIGZvciBpbmxpbmUgb2JqZWN0IHR5cGVzLlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBleGVjdXRpb24gY29udGV4dC5cbiAqIEBwYXJhbSBub2RlIEZ1bmN0aW9uLWxpa2Ugbm9kZSB0byBjaGVjay5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjaGVja0Z1bmN0aW9uTGlrZShjb250ZXh0LCBub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBjaGVja0Z1bmN0aW9uTGlrZSA9IChcbiAgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCxcbiAgbm9kZTogUnVsZS5Ob2RlLFxuKTogdm9pZCA9PiB7XG4gIGZvciAoY29uc3QgcGFyYW1ldGVyIG9mIGdldFBhcmFtZXRlcnMobm9kZSkpIHtcbiAgICBjb25zdCBpbmxpbmVPYmplY3RUeXBlID0gZ2V0SW5saW5lT2JqZWN0VHlwZUxpdGVyYWwoXG4gICAgICBnZXRUeXBlQW5ub3RhdGlvbk5vZGUocGFyYW1ldGVyKSxcbiAgICApO1xuXG4gICAgaWYgKGlubGluZU9iamVjdFR5cGUgIT09IHZvaWQgMCkge1xuICAgICAgcmVwb3J0VHlwZUxpdGVyYWwoY29udGV4dCwgaW5saW5lT2JqZWN0VHlwZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaW5saW5lUmV0dXJuT2JqZWN0VHlwZSA9IGdldElubGluZU9iamVjdFR5cGVMaXRlcmFsKFxuICAgIGdldFJldHVyblR5cGVBbm5vdGF0aW9uKG5vZGUpLFxuICApO1xuXG4gIGlmIChpbmxpbmVSZXR1cm5PYmplY3RUeXBlICE9PSB2b2lkIDApIHtcbiAgICByZXBvcnRUeXBlTGl0ZXJhbChjb250ZXh0LCBpbmxpbmVSZXR1cm5PYmplY3RUeXBlKTtcbiAgfVxufTtcblxuLyoqXG4gKiBDaGVja3MgdmFyaWFibGUgZGVjbGFyYXRvcnMgZm9yIGlubGluZSBvYmplY3QgdHlwZXMuXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHBhcmFtIG5vZGUgVmFyaWFibGUgZGVjbGFyYXRvciB0byBjaGVjay5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjaGVja1ZhcmlhYmxlRGVjbGFyYXRvcihjb250ZXh0LCBub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBjaGVja1ZhcmlhYmxlRGVjbGFyYXRvciA9IChcbiAgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCxcbiAgbm9kZTogUnVsZS5Ob2RlLFxuKTogdm9pZCA9PiB7XG4gIGNvbnN0IHR5cGVkTm9kZSA9IG5vZGUgYXMgVmFyaWFibGVEZWNsYXJhdG9yTm9kZTtcblxuICBjb25zdCBpbmxpbmVPYmplY3RUeXBlID0gZ2V0SW5saW5lT2JqZWN0VHlwZUxpdGVyYWwoXG4gICAgZ2V0VHlwZUFubm90YXRpb25Ob2RlKHR5cGVkTm9kZS5pZCksXG4gICk7XG5cbiAgaWYgKGlubGluZU9iamVjdFR5cGUgIT09IHZvaWQgMCkge1xuICAgIHJlcG9ydFR5cGVMaXRlcmFsKGNvbnRleHQsIGlubGluZU9iamVjdFR5cGUpO1xuICB9XG59O1xuXG4vKiogRVNMaW50IHJ1bGUgcmVxdWlyaW5nIG5hbWVkIGludGVyZmFjZS90eXBlIGFsaWFzZXMgZm9yIG9iamVjdCB0eXBlcy4gKi9cbmNvbnN0IHByZWZlckludGVyZmFjZVR5cGVzUnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICAvKipcbiAgICogQ3JlYXRlcyBsaXN0ZW5lcnMgdGhhdCB2YWxpZGF0ZSBmdW5jdGlvbi1saWtlIGFuZCB2YXJpYWJsZSBhbm5vdGF0aW9ucy5cbiAgICogQHBhcmFtIGNvbnRleHQgUnVsZSBleGVjdXRpb24gY29udGV4dC5cbiAgICogQHJldHVybnMgUnVsZSBsaXN0ZW5lciBtYXAuXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgbGlzdGVuZXJzID0gcHJlZmVySW50ZXJmYWNlVHlwZXNSdWxlLmNyZWF0ZShjb250ZXh0KTtcbiAgICogYGBgXG4gICAqL1xuICBjcmVhdGUoY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCk6IFJ1bGUuUnVsZUxpc3RlbmVyIHtcbiAgICAvKipcbiAgICAgKiBDaGVja3MgZnVuY3Rpb24tbGlrZSBub2RlcyBmb3IgaW5saW5lIG9iamVjdCB0eXBlcy5cbiAgICAgKiBAcGFyYW0gbm9kZSBGdW5jdGlvbi1saWtlIG5vZGUgdG8gaW5zcGVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBmdW5jdGlvbkxpa2VMaXN0ZW5lcihub2RlKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBjb25zdCBmdW5jdGlvbkxpa2VMaXN0ZW5lciA9IChub2RlOiBSdWxlLk5vZGUpOiB2b2lkID0+IHtcbiAgICAgIGNoZWNrRnVuY3Rpb25MaWtlKGNvbnRleHQsIG5vZGUpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgdmFyaWFibGUgZGVjbGFyYXRvcnMgZm9yIGlubGluZSBvYmplY3QgdHlwZXMuXG4gICAgICogQHBhcmFtIG5vZGUgVmFyaWFibGUgZGVjbGFyYXRvciB0byBpbnNwZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHZhcmlhYmxlRGVjbGFyYXRvckxpc3RlbmVyKG5vZGUpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIGNvbnN0IHZhcmlhYmxlRGVjbGFyYXRvckxpc3RlbmVyID0gKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQgPT4ge1xuICAgICAgY2hlY2tWYXJpYWJsZURlY2xhcmF0b3IoY29udGV4dCwgbm9kZSk7XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICBBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbjogZnVuY3Rpb25MaWtlTGlzdGVuZXIsXG4gICAgICBGdW5jdGlvbkRlY2xhcmF0aW9uOiBmdW5jdGlvbkxpa2VMaXN0ZW5lcixcbiAgICAgIEZ1bmN0aW9uRXhwcmVzc2lvbjogZnVuY3Rpb25MaWtlTGlzdGVuZXIsXG4gICAgICBUU0NhbGxTaWduYXR1cmVEZWNsYXJhdGlvbjogZnVuY3Rpb25MaWtlTGlzdGVuZXIsXG4gICAgICBUU0NvbnN0cnVjdFNpZ25hdHVyZURlY2xhcmF0aW9uOiBmdW5jdGlvbkxpa2VMaXN0ZW5lcixcbiAgICAgIFRTRGVjbGFyZUZ1bmN0aW9uOiBmdW5jdGlvbkxpa2VMaXN0ZW5lcixcbiAgICAgIFRTRnVuY3Rpb25UeXBlOiBmdW5jdGlvbkxpa2VMaXN0ZW5lcixcbiAgICAgIFRTTWV0aG9kU2lnbmF0dXJlOiBmdW5jdGlvbkxpa2VMaXN0ZW5lcixcbiAgICAgIFZhcmlhYmxlRGVjbGFyYXRvcjogdmFyaWFibGVEZWNsYXJhdG9yTGlzdGVuZXIsXG4gICAgfTtcbiAgfSxcbiAgbWV0YToge1xuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlJlcXVpcmUgbmFtZWQgaW50ZXJmYWNlcyBvciB0eXBlIGFsaWFzZXMgZm9yIG9iamVjdCB0eXBlcyBpbiBwYXJhbWV0ZXJzLCByZXR1cm4gdHlwZXMsIGFuZCB2YXJpYWJsZSBhbm5vdGF0aW9ucy5cIixcbiAgICAgIHJlY29tbWVuZGVkOiBmYWxzZSxcbiAgICAgIHVybDogXCJodHRwczovL2dpdGh1Yi5jb20vcGFybG90aS9lc2xpbnQtcGx1Z2luL2Jsb2IvbWFpbi9kb2NzL3J1bGVzL3ByZWZlci1pbnRlcmZhY2UtdHlwZXMubWRcIixcbiAgICB9LFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICBwcmVmZXJOYW1lZE9iamVjdDpcbiAgICAgICAgXCJVc2UgYSBuYW1lZCBpbnRlcmZhY2Ugb3IgdHlwZSBhbGlhcyBpbnN0ZWFkIG9mIGFuIGlubGluZSBvYmplY3QgdHlwZS5cIixcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogXCJzdWdnZXN0aW9uXCIsXG4gIH0sXG59O1xuXG5leHBvcnQgeyBwcmVmZXJJbnRlcmZhY2VUeXBlc1J1bGUgfTtcbiJdfQ==
@@ -2,11 +2,11 @@
2
2
  interface CustomRuleDocumentation {
3
3
  /** Human-readable rule description. */
4
4
  description: string;
5
+ /** Whether the rule is part of a recommended preset. */
6
+ recommended: boolean;
5
7
  /** Canonical documentation URL for the rule. */
6
8
  url: string;
7
9
  }
8
- /** Base URL for published custom rule documentation pages. */
9
- declare const customRuleDocumentationBaseUrl = "https://github.com/parloti/eslint-plugin/blob/main/docs/rules";
10
10
  /**
11
11
  * Creates shared docs metadata for a package-owned custom rule.
12
12
  * @param ruleName ESLint rule name without the plugin prefix.
@@ -21,16 +21,5 @@ declare const customRuleDocumentationBaseUrl = "https://github.com/parloti/eslin
21
21
  * ```
22
22
  */
23
23
  declare function createRuleDocumentation(ruleName: string, description: string): CustomRuleDocumentation;
24
- /**
25
- * Builds the canonical documentation URL for a package-owned custom rule.
26
- * @param ruleName ESLint rule name without the plugin prefix.
27
- * @returns Return value output.
28
- * @example
29
- * ```typescript
30
- * const url = getCustomRuleDocumentationUrl("prefer-interface-types");
31
- * ```
32
- */
33
- declare function getCustomRuleDocumentationUrl(ruleName: string): string;
34
- export { createRuleDocumentation, customRuleDocumentationBaseUrl, getCustomRuleDocumentationUrl, };
35
- export type { CustomRuleDocumentation };
24
+ export { createRuleDocumentation };
36
25
  //# sourceMappingURL=custom-rule-documentation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"custom-rule-documentation.d.ts","sourceRoot":"","sources":["../../src/domain/custom-rule-documentation.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,UAAU,uBAAuB;IAC/B,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IAEpB,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;CACb;AAED,8DAA8D;AAC9D,QAAA,MAAM,8BAA8B,kEAC6B,CAAC;AAElE;;;;;;;;;;;;GAYG;AACH,iBAAS,uBAAuB,CAC9B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,uBAAuB,CAKzB;AAED;;;;;;;;GAQG;AACH,iBAAS,6BAA6B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,OAAO,EACL,uBAAuB,EACvB,8BAA8B,EAC9B,6BAA6B,GAC9B,CAAC;AACF,YAAY,EAAE,uBAAuB,EAAE,CAAC"}
1
+ {"version":3,"file":"custom-rule-documentation.d.ts","sourceRoot":"","sources":["../../src/domain/custom-rule-documentation.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,UAAU,uBAAuB;IAC/B,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IAEpB,wDAAwD;IACxD,WAAW,EAAE,OAAO,CAAC;IAErB,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;CACb;AAMD;;;;;;;;;;;;GAYG;AACH,iBAAS,uBAAuB,CAC9B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,uBAAuB,CAMzB;AAeD,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
@@ -16,6 +16,7 @@ const customRuleDocumentationBaseUrl = "https://github.com/parloti/eslint-plugin
16
16
  function createRuleDocumentation(ruleName, description) {
17
17
  return {
18
18
  description,
19
+ recommended: false,
19
20
  url: getCustomRuleDocumentationUrl(ruleName),
20
21
  };
21
22
  }
@@ -31,5 +32,5 @@ function createRuleDocumentation(ruleName, description) {
31
32
  function getCustomRuleDocumentationUrl(ruleName) {
32
33
  return `${customRuleDocumentationBaseUrl}/${ruleName}.md`;
33
34
  }
34
- export { createRuleDocumentation, customRuleDocumentationBaseUrl, getCustomRuleDocumentationUrl, };
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXJ1bGUtZG9jdW1lbnRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kb21haW4vY3VzdG9tLXJ1bGUtZG9jdW1lbnRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSw4REFBOEQ7QUFDOUQsTUFBTSw4QkFBOEIsR0FDbEMsK0RBQStELENBQUM7QUFFbEU7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsU0FBUyx1QkFBdUIsQ0FDOUIsUUFBZ0IsRUFDaEIsV0FBbUI7SUFFbkIsT0FBTztRQUNMLFdBQVc7UUFDWCxHQUFHLEVBQUUsNkJBQTZCLENBQUMsUUFBUSxDQUFDO0tBQzdDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLDZCQUE2QixDQUFDLFFBQWdCO0lBQ3JELE9BQU8sR0FBRyw4QkFBOEIsSUFBSSxRQUFRLEtBQUssQ0FBQztBQUM1RCxDQUFDO0FBRUQsT0FBTyxFQUNMLHVCQUF1QixFQUN2Qiw4QkFBOEIsRUFDOUIsNkJBQTZCLEdBQzlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogTWluaW1hbCBzaGFyZWQgZG9jcyBtZXRhZGF0YSBzaGFwZSBmb3IgcGFja2FnZS1vd25lZCBjdXN0b20gcnVsZXMuICovXG5pbnRlcmZhY2UgQ3VzdG9tUnVsZURvY3VtZW50YXRpb24ge1xuICAvKiogSHVtYW4tcmVhZGFibGUgcnVsZSBkZXNjcmlwdGlvbi4gKi9cbiAgZGVzY3JpcHRpb246IHN0cmluZztcblxuICAvKiogQ2Fub25pY2FsIGRvY3VtZW50YXRpb24gVVJMIGZvciB0aGUgcnVsZS4gKi9cbiAgdXJsOiBzdHJpbmc7XG59XG5cbi8qKiBCYXNlIFVSTCBmb3IgcHVibGlzaGVkIGN1c3RvbSBydWxlIGRvY3VtZW50YXRpb24gcGFnZXMuICovXG5jb25zdCBjdXN0b21SdWxlRG9jdW1lbnRhdGlvbkJhc2VVcmwgPVxuICBcImh0dHBzOi8vZ2l0aHViLmNvbS9wYXJsb3RpL2VzbGludC1wbHVnaW4vYmxvYi9tYWluL2RvY3MvcnVsZXNcIjtcblxuLyoqXG4gKiBDcmVhdGVzIHNoYXJlZCBkb2NzIG1ldGFkYXRhIGZvciBhIHBhY2thZ2Utb3duZWQgY3VzdG9tIHJ1bGUuXG4gKiBAcGFyYW0gcnVsZU5hbWUgRVNMaW50IHJ1bGUgbmFtZSB3aXRob3V0IHRoZSBwbHVnaW4gcHJlZml4LlxuICogQHBhcmFtIGRlc2NyaXB0aW9uIElucHV0IGRlc2NyaXB0aW9uIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBkb2NzID0gY3JlYXRlUnVsZURvY3VtZW50YXRpb24oXG4gKiAgIFwicHJlZmVyLWludGVyZmFjZS10eXBlc1wiLFxuICogICBcIlJ1bGUgZGVzY3JpcHRpb25cIixcbiAqICk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gY3JlYXRlUnVsZURvY3VtZW50YXRpb24oXG4gIHJ1bGVOYW1lOiBzdHJpbmcsXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcsXG4pOiBDdXN0b21SdWxlRG9jdW1lbnRhdGlvbiB7XG4gIHJldHVybiB7XG4gICAgZGVzY3JpcHRpb24sXG4gICAgdXJsOiBnZXRDdXN0b21SdWxlRG9jdW1lbnRhdGlvblVybChydWxlTmFtZSksXG4gIH07XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBjYW5vbmljYWwgZG9jdW1lbnRhdGlvbiBVUkwgZm9yIGEgcGFja2FnZS1vd25lZCBjdXN0b20gcnVsZS5cbiAqIEBwYXJhbSBydWxlTmFtZSBFU0xpbnQgcnVsZSBuYW1lIHdpdGhvdXQgdGhlIHBsdWdpbiBwcmVmaXguXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHVybCA9IGdldEN1c3RvbVJ1bGVEb2N1bWVudGF0aW9uVXJsKFwicHJlZmVyLWludGVyZmFjZS10eXBlc1wiKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBnZXRDdXN0b21SdWxlRG9jdW1lbnRhdGlvblVybChydWxlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke2N1c3RvbVJ1bGVEb2N1bWVudGF0aW9uQmFzZVVybH0vJHtydWxlTmFtZX0ubWRgO1xufVxuXG5leHBvcnQge1xuICBjcmVhdGVSdWxlRG9jdW1lbnRhdGlvbixcbiAgY3VzdG9tUnVsZURvY3VtZW50YXRpb25CYXNlVXJsLFxuICBnZXRDdXN0b21SdWxlRG9jdW1lbnRhdGlvblVybCxcbn07XG5leHBvcnQgdHlwZSB7IEN1c3RvbVJ1bGVEb2N1bWVudGF0aW9uIH07XG4iXX0=
35
+ export { createRuleDocumentation };
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXJ1bGUtZG9jdW1lbnRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kb21haW4vY3VzdG9tLXJ1bGUtZG9jdW1lbnRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFZQSw4REFBOEQ7QUFDOUQsTUFBTSw4QkFBOEIsR0FDbEMsK0RBQStELENBQUM7QUFFbEU7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsU0FBUyx1QkFBdUIsQ0FDOUIsUUFBZ0IsRUFDaEIsV0FBbUI7SUFFbkIsT0FBTztRQUNMLFdBQVc7UUFDWCxXQUFXLEVBQUUsS0FBSztRQUNsQixHQUFHLEVBQUUsNkJBQTZCLENBQUMsUUFBUSxDQUFDO0tBQzdDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLDZCQUE2QixDQUFDLFFBQWdCO0lBQ3JELE9BQU8sR0FBRyw4QkFBOEIsSUFBSSxRQUFRLEtBQUssQ0FBQztBQUM1RCxDQUFDO0FBRUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogTWluaW1hbCBzaGFyZWQgZG9jcyBtZXRhZGF0YSBzaGFwZSBmb3IgcGFja2FnZS1vd25lZCBjdXN0b20gcnVsZXMuICovXG5pbnRlcmZhY2UgQ3VzdG9tUnVsZURvY3VtZW50YXRpb24ge1xuICAvKiogSHVtYW4tcmVhZGFibGUgcnVsZSBkZXNjcmlwdGlvbi4gKi9cbiAgZGVzY3JpcHRpb246IHN0cmluZztcblxuICAvKiogV2hldGhlciB0aGUgcnVsZSBpcyBwYXJ0IG9mIGEgcmVjb21tZW5kZWQgcHJlc2V0LiAqL1xuICByZWNvbW1lbmRlZDogYm9vbGVhbjtcblxuICAvKiogQ2Fub25pY2FsIGRvY3VtZW50YXRpb24gVVJMIGZvciB0aGUgcnVsZS4gKi9cbiAgdXJsOiBzdHJpbmc7XG59XG5cbi8qKiBCYXNlIFVSTCBmb3IgcHVibGlzaGVkIGN1c3RvbSBydWxlIGRvY3VtZW50YXRpb24gcGFnZXMuICovXG5jb25zdCBjdXN0b21SdWxlRG9jdW1lbnRhdGlvbkJhc2VVcmwgPVxuICBcImh0dHBzOi8vZ2l0aHViLmNvbS9wYXJsb3RpL2VzbGludC1wbHVnaW4vYmxvYi9tYWluL2RvY3MvcnVsZXNcIjtcblxuLyoqXG4gKiBDcmVhdGVzIHNoYXJlZCBkb2NzIG1ldGFkYXRhIGZvciBhIHBhY2thZ2Utb3duZWQgY3VzdG9tIHJ1bGUuXG4gKiBAcGFyYW0gcnVsZU5hbWUgRVNMaW50IHJ1bGUgbmFtZSB3aXRob3V0IHRoZSBwbHVnaW4gcHJlZml4LlxuICogQHBhcmFtIGRlc2NyaXB0aW9uIElucHV0IGRlc2NyaXB0aW9uIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBkb2NzID0gY3JlYXRlUnVsZURvY3VtZW50YXRpb24oXG4gKiAgIFwicHJlZmVyLWludGVyZmFjZS10eXBlc1wiLFxuICogICBcIlJ1bGUgZGVzY3JpcHRpb25cIixcbiAqICk7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gY3JlYXRlUnVsZURvY3VtZW50YXRpb24oXG4gIHJ1bGVOYW1lOiBzdHJpbmcsXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcsXG4pOiBDdXN0b21SdWxlRG9jdW1lbnRhdGlvbiB7XG4gIHJldHVybiB7XG4gICAgZGVzY3JpcHRpb24sXG4gICAgcmVjb21tZW5kZWQ6IGZhbHNlLFxuICAgIHVybDogZ2V0Q3VzdG9tUnVsZURvY3VtZW50YXRpb25VcmwocnVsZU5hbWUpLFxuICB9O1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgY2Fub25pY2FsIGRvY3VtZW50YXRpb24gVVJMIGZvciBhIHBhY2thZ2Utb3duZWQgY3VzdG9tIHJ1bGUuXG4gKiBAcGFyYW0gcnVsZU5hbWUgRVNMaW50IHJ1bGUgbmFtZSB3aXRob3V0IHRoZSBwbHVnaW4gcHJlZml4LlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCB1cmwgPSBnZXRDdXN0b21SdWxlRG9jdW1lbnRhdGlvblVybChcInByZWZlci1pbnRlcmZhY2UtdHlwZXNcIik7XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gZ2V0Q3VzdG9tUnVsZURvY3VtZW50YXRpb25VcmwocnVsZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtjdXN0b21SdWxlRG9jdW1lbnRhdGlvbkJhc2VVcmx9LyR7cnVsZU5hbWV9Lm1kYDtcbn1cblxuZXhwb3J0IHsgY3JlYXRlUnVsZURvY3VtZW50YXRpb24gfTtcbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"comment-utilities.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/no-interface-member-docs/comment-utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AA2DpD;;;;;;;;;GASG;AACH,QAAA,MAAM,eAAe,GACnB,YAAY,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAC1C,MAAM,IAAI,CAAC,IAAI,KACd,OAAO,GAAG,SASZ,CAAC;AAEF;;;;;;;;;GASG;AACH,QAAA,MAAM,cAAc,GAClB,YAAY,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAC1C,SAAS,OAAO,KACf,MASF,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,eAAe,GAAI,aAAa,MAAM,KAAG,WAAW,EAyBzD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,QAAA,MAAM,iBAAiB,GACrB,cAAc,MAAM,EACpB,aAAa,MAAM,EACnB,MAAM,WAAW,KAChB,CAAC,MAAM,EAAE,MAAM,CAuBjB,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"comment-utilities.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/no-interface-member-docs/comment-utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AA2DpD;;;;;;;;;GASG;AACH,QAAA,MAAM,eAAe,GACnB,YAAY,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAC1C,MAAM,IAAI,CAAC,IAAI,KACd,OAAO,GAAG,SAuBZ,CAAC;AAEF;;;;;;;;;GASG;AACH,QAAA,MAAM,cAAc,GAClB,YAAY,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAC1C,SAAS,OAAO,KACf,MASF,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,eAAe,GAAI,aAAa,MAAM,KAAG,WAAW,EAyBzD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,QAAA,MAAM,iBAAiB,GACrB,cAAc,MAAM,EACpB,aAAa,MAAM,EACnB,MAAM,WAAW,KAChB,CAAC,MAAM,EAAE,MAAM,CAuBjB,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC"}
@@ -60,7 +60,16 @@ const getJsdocComment = (sourceCode, node) => {
60
60
  if (comments.length === 0 || typeof nodeStart !== "number") {
61
61
  return void 0;
62
62
  }
63
- return findClosestComment(comments, nodeStart);
63
+ const comment = findClosestComment(comments, nodeStart);
64
+ if (comment === void 0) {
65
+ return void 0;
66
+ }
67
+ const commentEnd = comment.range?.[1];
68
+ if (typeof commentEnd !== "number") {
69
+ return void 0;
70
+ }
71
+ const betweenCommentAndNode = sourceCode.text.slice(commentEnd, nodeStart);
72
+ return betweenCommentAndNode.trim().length === 0 ? comment : void 0;
64
73
  };
65
74
  /**
66
75
  * Extracts the full text for a comment range.
@@ -143,4 +152,4 @@ const buildRemovalRange = (commentStart, commentText, line) => {
143
152
  return [commentStart + line.start, commentStart + line.end];
144
153
  };
145
154
  export { buildRemovalRange, getCommentLines, getCommentText, getJsdocComment };
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC11dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2RvY3Mvbm8taW50ZXJmYWNlLW1lbWJlci1kb2NzL2NvbW1lbnQtdXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFnQixFQUFXLEVBQUUsQ0FDbkQsT0FBTyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFNUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLGFBQWEsR0FBRyxDQUFDLE9BQWdCLEVBQXNCLEVBQUU7SUFDN0QsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXRDLE9BQU8sT0FBTyxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlELENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sa0JBQWtCLEdBQUcsQ0FDekIsUUFBbUIsRUFDbkIsU0FBaUIsRUFDSSxFQUFFO0lBQ3ZCLElBQUksT0FBTyxHQUF3QixLQUFLLENBQUMsQ0FBQztJQUMxQyxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUVwQixLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQy9CLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxNQUFNLGNBQWMsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksVUFBVSxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBRXhFLElBQUksY0FBYyxJQUFJLFVBQVUsSUFBSSxTQUFTLElBQUksVUFBVSxHQUFHLFVBQVUsRUFBRSxDQUFDO1lB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R0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNuQixNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqRCxNQUFNLG1CQUFtQixHQUFHLFlBQVksS0FBSyxJQUFJLENBQUM7UUFFbEQsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sZUFBZSxHQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pFLE9BQU87Z0JBQ0wsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsZUFBZTtnQkFDM0MsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHO2FBQ3hCLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlELENBQUMsQ0FBQztBQUVGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbW1lbnQsIENvbW1lbnRMaW5lIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuLyoqXG4gKiBDaGVja3MgaXNKc2RvY0NvbW1lbnQuXG4gKiBAcGFyYW0gY29tbWVudCBJbnB1dCBjb21tZW50IHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpc0pzZG9jQ29tbWVudCgpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzSnNkb2NDb21tZW50ID0gKGNvbW1lbnQ6IENvbW1lbnQpOiBib29sZWFuID0+XG4gIGNvbW1lbnQudHlwZSA9PT0gXCJCbG9ja1wiICYmIGNvbW1lbnQudmFsdWUuc3RhcnRzV2l0aChcIipcIik7XG5cbi8qKlxuICogR2V0cyBnZXRDb21tZW50RW5kLlxuICogQHBhcmFtIGNvbW1lbnQgSW5wdXQgY29tbWVudCB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZ2V0Q29tbWVudEVuZCgpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldENvbW1lbnRFbmQgPSAoY29tbWVudDogQ29tbWVudCk6IG51bWJlciB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGNvbW1lbnRFbmQgPSBjb21tZW50LnJhbmdlPy5bMV07XG5cbiAgcmV0dXJuIHR5cGVvZiBjb21tZW50RW5kID09PSBcIm51bWJlclwiID8gY29tbWVudEVuZCA6IHZvaWQgMDtcbn07XG5cbi8qKlxuICogRmluZHMgdGhlIGNsb3Nlc3QgSlNEb2MgY29tbWVudCBiZWZvcmUgYSBub2RlLlxuICogQHBhcmFtIGNvbW1lbnRzIENvbW1lbnQgbGlzdCB0byBzZWFyY2guXG4gKiBAcGFyYW0gbm9kZVN0YXJ0IFN0YXJ0IG9mZnNldCBvZiB0aGUgbm9kZS5cbiAqIEByZXR1cm5zIFRoZSBjbG9zZXN0IEpTRG9jIGNvbW1lbnQgd2hlbiBwcmVzZW50LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGNvbW1lbnQgPSBmaW5kQ2xvc2VzdENvbW1lbnQoY29tbWVudHMsIG5vZGVTdGFydCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZmluZENsb3Nlc3RDb21tZW50ID0gKFxuICBjb21tZW50czogQ29tbWVudFtdLFxuICBub2RlU3RhcnQ6IG51bWJlcixcbik6IENvbW1lbnQgfCB1bmRlZmluZWQgPT4ge1xuICBsZXQgY2xvc2VzdDogQ29tbWVudCB8IHVuZGVmaW5lZCA9IHZvaWQgMDtcbiAgbGV0IGNsb3Nlc3RFbmQgPSAtMTtcblxuICBmb3IgKGNvbnN0IGNvbW1lbnQgb2YgY29tbWVudHMpIHtcbiAgICBjb25zdCBjb21tZW50RW5kID0gZ2V0Q29tbWVudEVuZChjb21tZW50KTtcbiAgICBjb25zdCBzaG91bGRDb25zaWRlciA9IGlzSnNkb2NDb21tZW50KGNvbW1lbnQpICYmIGNvbW1lbnRFbmQgIT09IHZvaWQgMDtcblxuICAgIGlmIChzaG91bGRDb25zaWRlciAmJiBjb21tZW50RW5kIDw9IG5vZGVTdGFydCAmJiBjb21tZW50RW5kID4gY2xvc2VzdEVuZCkge1xuICAgICAgY2xvc2VzdCA9IGNvbW1lbnQ7XG4gICAgICBjbG9zZXN0RW5kID0gY29tbWVudEVuZDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2xvc2VzdDtcbn07XG5cbi8qKlxuICogR2V0cyB0aGUgY2xvc2VzdCBKU0RvYyBjb21tZW50IGZvciBhIG5vZGUuXG4gKiBAcGFyYW0gc291cmNlQ29kZSBTb3VyY2UgY29kZSB3cmFwcGVyLlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMgVGhlIGNsb3Nlc3QgSlNEb2MgY29tbWVudCB3aGVuIHByZXNlbnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgY29tbWVudCA9IGdldEpzZG9jQ29tbWVudChzb3VyY2VDb2RlLCBub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRKc2RvY0NvbW1lbnQgPSAoXG4gIHNvdXJjZUNvZGU6IFJ1bGUuUnVsZUNvbnRleHRbXCJzb3VyY2VDb2RlXCJdLFxuICBub2RlOiBSdWxlLk5vZGUsXG4pOiBDb21tZW50IHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgY29tbWVudHMgPSBzb3VyY2VDb2RlLmdldEFsbENvbW1lbnRzKCk7XG4gIGNvbnN0IG5vZGVTdGFydCA9IG5vZGUucmFuZ2U/LlswXTtcblxuICBpZiAoY29tbWVudHMubGVuZ3RoID09PSAwIHx8IHR5cGVvZiBub2RlU3RhcnQgIT09IFwibnVtYmVyXCIpIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgcmV0dXJuIGZpbmRDbG9zZXN0Q29tbWVudChjb21tZW50cywgbm9kZVN0YXJ0KTtcbn07XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIGZ1bGwgdGV4dCBmb3IgYSBjb21tZW50IHJhbmdlLlxuICogQHBhcmFtIHNvdXJjZUNvZGUgU291cmNlIGNvZGUgd3JhcHBlci5cbiAqIEBwYXJhbSBjb21tZW50IENvbW1lbnQgdG8gcmVhZC5cbiAqIEByZXR1cm5zIENvbW1lbnQgY29udGVudHMgZnJvbSB0aGUgc291cmNlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHRleHQgPSBnZXRDb21tZW50VGV4dChzb3VyY2VDb2RlLCBjb21tZW50KTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRDb21tZW50VGV4dCA9IChcbiAgc291cmNlQ29kZTogUnVsZS5SdWxlQ29udGV4dFtcInNvdXJjZUNvZGVcIl0sXG4gIGNvbW1lbnQ6IENvbW1lbnQsXG4pOiBzdHJpbmcgPT4ge1xuICBjb25zdCBzdGFydCA9IGNvbW1lbnQucmFuZ2U/LlswXTtcbiAgY29uc3QgZW5kID0gY29tbWVudC5yYW5nZT8uWzFdO1xuXG4gIGlmICh0eXBlb2Ygc3RhcnQgIT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIGVuZCAhPT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcmV0dXJuIHNvdXJjZUNvZGUudGV4dC5zbGljZShzdGFydCwgZW5kKTtcbn07XG5cbi8qKlxuICogR2V0cyBnZXRDb21tZW50TGluZXMuXG4gKiBAcGFyYW0gY29tbWVudFRleHQgSW5wdXQgY29tbWVudFRleHQgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGdldENvbW1lbnRMaW5lcygpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldENvbW1lbnRMaW5lcyA9IChjb21tZW50VGV4dDogc3RyaW5nKTogQ29tbWVudExpbmVbXSA9PiB7XG4gIGNvbnN0IGxpbmVzID0gY29tbWVudFRleHQuc3BsaXQoL1xccj9cXG4vdSk7XG4gIGNvbnN0IHJlc3VsdHM6IENvbW1lbnRMaW5lW10gPSBbXTtcbiAgbGV0IG9mZnNldCA9IDA7XG5cbiAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgY29uc3QgbGluZUVuZCA9IG9mZnNldCArIGxpbmUubGVuZ3RoO1xuICAgIGNvbnN0IG5leHRTbGljZSA9IGNvbW1lbnRUZXh0LnNsaWNlKGxpbmVFbmQsIGxpbmVFbmQgKyAyKTtcbiAgICBjb25zdCBsaW5lQnJlYWtMZW5ndGggPSBuZXh0U2xpY2Uuc3RhcnRzV2l0aChcIlxcclxcblwiKVxuICAgICAgPyAyXG4gICAgICA6IG5leHRTbGljZS5zdGFydHNXaXRoKFwiXFxuXCIpXG4gICAgICAgID8gMVxuICAgICAgICA6IDA7XG5cbiAgICByZXN1bHRzLnB1c2goe1xuICAgICAgZW5kOiBsaW5lRW5kLFxuICAgICAgbGluZUJyZWFrTGVuZ3RoLFxuICAgICAgc3RhcnQ6IG9mZnNldCxcbiAgICAgIHRleHQ6IGxpbmUsXG4gICAgfSk7XG5cbiAgICBvZmZzZXQgPSBsaW5lRW5kICsgbGluZUJyZWFrTGVuZ3RoO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59O1xuXG4vKipcbiAqIEJ1aWxkcyBhIHJlbW92YWwgcmFuZ2UgZm9yIHRoZSBzcGVjaWZpZWQgY29tbWVudCBsaW5lLlxuICogQHBhcmFtIGNvbW1lbnRTdGFydCBDb21tZW50IHN0YXJ0IG9mZnNldCBpbiB0aGUgc291cmNlLlxuICogQHBhcmFtIGNvbW1lbnRUZXh0IEZ1bGwgY29tbWVudCB0ZXh0LlxuICogQHBhcmFtIGxpbmUgTGluZSBtZXRhZGF0YSBmb3IgdGhlIGNvbW1lbnQuXG4gKiBAcmV0dXJucyBUaGUgcmFuZ2UgdG8gcmVtb3ZlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJhbmdlID0gYnVpbGRSZW1vdmFsUmFuZ2UoMCwgY29tbWVudFRleHQsIGxpbmUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGJ1aWxkUmVtb3ZhbFJhbmdlID0gKFxuICBjb21tZW50U3RhcnQ6IG51bWJlcixcbiAgY29tbWVudFRleHQ6IHN0cmluZyxcbiAgbGluZTogQ29tbWVudExpbmUsXG4pOiBbbnVtYmVyLCBudW1iZXJdID0+IHtcbiAgaWYgKGxpbmUubGluZUJyZWFrTGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBbXG4gICAgICBjb21tZW50U3RhcnQgKyBsaW5lLnN0YXJ0LFxuICAgICAgY29tbWVudFN0YXJ0ICsgbGluZS5lbmQgKyBsaW5lLmxpbmVCcmVha0xlbmd0aCxcbiAgICBdO1xuICB9XG5cbiAgaWYgKGxpbmUuc3RhcnQgPiAwKSB7XG4gICAgY29uc3QgcHJldmlvdXNDaGFyID0gY29tbWVudFRleHRbbGluZS5zdGFydCAtIDFdO1xuICAgIGNvbnN0IHByZXZpb3VzSXNMaW5lQnJlYWsgPSBwcmV2aW91c0NoYXIgPT09IFwiXFxuXCI7XG5cbiAgICBpZiAocHJldmlvdXNJc0xpbmVCcmVhaykge1xuICAgICAgY29uc3QgbGluZUJyZWFrTGVuZ3RoID1cbiAgICAgICAgbGluZS5zdGFydCA+IDEgJiYgY29tbWVudFRleHRbbGluZS5zdGFydCAtIDJdID09PSBcIlxcclwiID8gMiA6IDE7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBjb21tZW50U3RhcnQgKyBsaW5lLnN0YXJ0IC0gbGluZUJyZWFrTGVuZ3RoLFxuICAgICAgICBjb21tZW50U3RhcnQgKyBsaW5lLmVuZCxcbiAgICAgIF07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFtjb21tZW50U3RhcnQgKyBsaW5lLnN0YXJ0LCBjb21tZW50U3RhcnQgKyBsaW5lLmVuZF07XG59O1xuXG5leHBvcnQgeyBidWlsZFJlbW92YWxSYW5nZSwgZ2V0Q29tbWVudExpbmVzLCBnZXRDb21tZW50VGV4dCwgZ2V0SnNkb2NDb21tZW50IH07XG4iXX0=
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC11dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2RvY3Mvbm8taW50ZXJmYWNlLW1lbWJlci1kb2NzL2NvbW1lbnQtdXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFnQixFQUFXLEVBQUUsQ0FDbkQsT0FBTyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFNUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLGFBQWEsR0FBRyxDQUFDLE9BQWdCLEVBQXNCLEVBQUU7SUFDN0QsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXRDLE9BQU8sT0FBTyxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlELENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sa0JBQWtCLEdBQUcsQ0FDekIsUUFBbUIsRUFDbkIsU0FBaUIsRUFDSSxFQUFFO0lBQ3ZCLElBQUksT0FBTyxHQUF3QixLQUFLLENBQUMsQ0FBQztJQUMxQyxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUVwQixLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQy9CLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxNQUFNLGNBQWMsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksVUFBVSxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBRXhFLElBQUksY0FBYyxJQUFJLFVBQVUsSUFBSSxTQUFTLElBQUksVUFBVSxHQUFHLFVBQVUsRUFBRSxDQUFDO1lB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Q0FBQztBQUM5RCxDQUFDLENBQUM7QUFFRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHR5cGUgeyBDb21tZW50LCBDb21tZW50TGluZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICogQ2hlY2tzIGlzSnNkb2NDb21tZW50LlxuICogQHBhcmFtIGNvbW1lbnQgSW5wdXQgY29tbWVudCB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaXNKc2RvY0NvbW1lbnQoKTtcbiAqIGBgYFxuICovXG5jb25zdCBpc0pzZG9jQ29tbWVudCA9IChjb21tZW50OiBDb21tZW50KTogYm9vbGVhbiA9PlxuICBjb21tZW50LnR5cGUgPT09IFwiQmxvY2tcIiAmJiBjb21tZW50LnZhbHVlLnN0YXJ0c1dpdGgoXCIqXCIpO1xuXG4vKipcbiAqIEdldHMgZ2V0Q29tbWVudEVuZC5cbiAqIEBwYXJhbSBjb21tZW50IElucHV0IGNvbW1lbnQgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGdldENvbW1lbnRFbmQoKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRDb21tZW50RW5kID0gKGNvbW1lbnQ6IENvbW1lbnQpOiBudW1iZXIgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBjb21tZW50RW5kID0gY29tbWVudC5yYW5nZT8uWzFdO1xuXG4gIHJldHVybiB0eXBlb2YgY29tbWVudEVuZCA9PT0gXCJudW1iZXJcIiA/IGNvbW1lbnRFbmQgOiB2b2lkIDA7XG59O1xuXG4vKipcbiAqIEZpbmRzIHRoZSBjbG9zZXN0IEpTRG9jIGNvbW1lbnQgYmVmb3JlIGEgbm9kZS5cbiAqIEBwYXJhbSBjb21tZW50cyBDb21tZW50IGxpc3QgdG8gc2VhcmNoLlxuICogQHBhcmFtIG5vZGVTdGFydCBTdGFydCBvZmZzZXQgb2YgdGhlIG5vZGUuXG4gKiBAcmV0dXJucyBUaGUgY2xvc2VzdCBKU0RvYyBjb21tZW50IHdoZW4gcHJlc2VudC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjb21tZW50ID0gZmluZENsb3Nlc3RDb21tZW50KGNvbW1lbnRzLCBub2RlU3RhcnQpO1xuICogYGBgXG4gKi9cbmNvbnN0IGZpbmRDbG9zZXN0Q29tbWVudCA9IChcbiAgY29tbWVudHM6IENvbW1lbnRbXSxcbiAgbm9kZVN0YXJ0OiBudW1iZXIsXG4pOiBDb21tZW50IHwgdW5kZWZpbmVkID0+IHtcbiAgbGV0IGNsb3Nlc3Q6IENvbW1lbnQgfCB1bmRlZmluZWQgPSB2b2lkIDA7XG4gIGxldCBjbG9zZXN0RW5kID0gLTE7XG5cbiAgZm9yIChjb25zdCBjb21tZW50IG9mIGNvbW1lbnRzKSB7XG4gICAgY29uc3QgY29tbWVudEVuZCA9IGdldENvbW1lbnRFbmQoY29tbWVudCk7XG4gICAgY29uc3Qgc2hvdWxkQ29uc2lkZXIgPSBpc0pzZG9jQ29tbWVudChjb21tZW50KSAmJiBjb21tZW50RW5kICE9PSB2b2lkIDA7XG5cbiAgICBpZiAoc2hvdWxkQ29uc2lkZXIgJiYgY29tbWVudEVuZCA8PSBub2RlU3RhcnQgJiYgY29tbWVudEVuZCA+IGNsb3Nlc3RFbmQpIHtcbiAgICAgIGNsb3Nlc3QgPSBjb21tZW50O1xuICAgICAgY2xvc2VzdEVuZCA9IGNvbW1lbnRFbmQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNsb3Nlc3Q7XG59O1xuXG4vKipcbiAqIEdldHMgdGhlIGNsb3Nlc3QgSlNEb2MgY29tbWVudCBmb3IgYSBub2RlLlxuICogQHBhcmFtIHNvdXJjZUNvZGUgU291cmNlIGNvZGUgd3JhcHBlci5cbiAqIEBwYXJhbSBub2RlIE5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFRoZSBjbG9zZXN0IEpTRG9jIGNvbW1lbnQgd2hlbiBwcmVzZW50LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGNvbW1lbnQgPSBnZXRKc2RvY0NvbW1lbnQoc291cmNlQ29kZSwgbm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0SnNkb2NDb21tZW50ID0gKFxuICBzb3VyY2VDb2RlOiBSdWxlLlJ1bGVDb250ZXh0W1wic291cmNlQ29kZVwiXSxcbiAgbm9kZTogUnVsZS5Ob2RlLFxuKTogQ29tbWVudCB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGNvbW1lbnRzID0gc291cmNlQ29kZS5nZXRBbGxDb21tZW50cygpO1xuICBjb25zdCBub2RlU3RhcnQgPSBub2RlLnJhbmdlPy5bMF07XG5cbiAgaWYgKGNvbW1lbnRzLmxlbmd0aCA9PT0gMCB8fCB0eXBlb2Ygbm9kZVN0YXJ0ICE9PSBcIm51bWJlclwiKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IGNvbW1lbnQgPSBmaW5kQ2xvc2VzdENvbW1lbnQoY29tbWVudHMsIG5vZGVTdGFydCk7XG5cbiAgaWYgKGNvbW1lbnQgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCBjb21tZW50RW5kID0gY29tbWVudC5yYW5nZT8uWzFdO1xuXG4gIGlmICh0eXBlb2YgY29tbWVudEVuZCAhPT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCBiZXR3ZWVuQ29tbWVudEFuZE5vZGUgPSBzb3VyY2VDb2RlLnRleHQuc2xpY2UoY29tbWVudEVuZCwgbm9kZVN0YXJ0KTtcblxuICByZXR1cm4gYmV0d2VlbkNvbW1lbnRBbmROb2RlLnRyaW0oKS5sZW5ndGggPT09IDAgPyBjb21tZW50IDogdm9pZCAwO1xufTtcblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgZnVsbCB0ZXh0IGZvciBhIGNvbW1lbnQgcmFuZ2UuXG4gKiBAcGFyYW0gc291cmNlQ29kZSBTb3VyY2UgY29kZSB3cmFwcGVyLlxuICogQHBhcmFtIGNvbW1lbnQgQ29tbWVudCB0byByZWFkLlxuICogQHJldHVybnMgQ29tbWVudCBjb250ZW50cyBmcm9tIHRoZSBzb3VyY2UuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgdGV4dCA9IGdldENvbW1lbnRUZXh0KHNvdXJjZUNvZGUsIGNvbW1lbnQpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldENvbW1lbnRUZXh0ID0gKFxuICBzb3VyY2VDb2RlOiBSdWxlLlJ1bGVDb250ZXh0W1wic291cmNlQ29kZVwiXSxcbiAgY29tbWVudDogQ29tbWVudCxcbik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHN0YXJ0ID0gY29tbWVudC5yYW5nZT8uWzBdO1xuICBjb25zdCBlbmQgPSBjb21tZW50LnJhbmdlPy5bMV07XG5cbiAgaWYgKHR5cGVvZiBzdGFydCAhPT0gXCJudW1iZXJcIiB8fCB0eXBlb2YgZW5kICE9PSBcIm51bWJlclwiKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICByZXR1cm4gc291cmNlQ29kZS50ZXh0LnNsaWNlKHN0YXJ0LCBlbmQpO1xufTtcblxuLyoqXG4gKiBHZXRzIGdldENvbW1lbnRMaW5lcy5cbiAqIEBwYXJhbSBjb21tZW50VGV4dCBJbnB1dCBjb21tZW50VGV4dCB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZ2V0Q29tbWVudExpbmVzKCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0Q29tbWVudExpbmVzID0gKGNvbW1lbnRUZXh0OiBzdHJpbmcpOiBDb21tZW50TGluZVtdID0+IHtcbiAgY29uc3QgbGluZXMgPSBjb21tZW50VGV4dC5zcGxpdCgvXFxyP1xcbi91KTtcbiAgY29uc3QgcmVzdWx0czogQ29tbWVudExpbmVbXSA9IFtdO1xuICBsZXQgb2Zmc2V0ID0gMDtcblxuICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICBjb25zdCBsaW5lRW5kID0gb2Zmc2V0ICsgbGluZS5sZW5ndGg7XG4gICAgY29uc3QgbmV4dFNsaWNlID0gY29tbWVudFRleHQuc2xpY2UobGluZUVuZCwgbGluZUVuZCArIDIpO1xuICAgIGNvbnN0IGxpbmVCcmVha0xlbmd0aCA9IG5leHRTbGljZS5zdGFydHNXaXRoKFwiXFxyXFxuXCIpXG4gICAgICA/IDJcbiAgICAgIDogbmV4dFNsaWNlLnN0YXJ0c1dpdGgoXCJcXG5cIilcbiAgICAgICAgPyAxXG4gICAgICAgIDogMDtcblxuICAgIHJlc3VsdHMucHVzaCh7XG4gICAgICBlbmQ6IGxpbmVFbmQsXG4gICAgICBsaW5lQnJlYWtMZW5ndGgsXG4gICAgICBzdGFydDogb2Zmc2V0LFxuICAgICAgdGV4dDogbGluZSxcbiAgICB9KTtcblxuICAgIG9mZnNldCA9IGxpbmVFbmQgKyBsaW5lQnJlYWtMZW5ndGg7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0cztcbn07XG5cbi8qKlxuICogQnVpbGRzIGEgcmVtb3ZhbCByYW5nZSBmb3IgdGhlIHNwZWNpZmllZCBjb21tZW50IGxpbmUuXG4gKiBAcGFyYW0gY29tbWVudFN0YXJ0IENvbW1lbnQgc3RhcnQgb2Zmc2V0IGluIHRoZSBzb3VyY2UuXG4gKiBAcGFyYW0gY29tbWVudFRleHQgRnVsbCBjb21tZW50IHRleHQuXG4gKiBAcGFyYW0gbGluZSBMaW5lIG1ldGFkYXRhIGZvciB0aGUgY29tbWVudC5cbiAqIEByZXR1cm5zIFRoZSByYW5nZSB0byByZW1vdmUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmFuZ2UgPSBidWlsZFJlbW92YWxSYW5nZSgwLCBjb21tZW50VGV4dCwgbGluZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgYnVpbGRSZW1vdmFsUmFuZ2UgPSAoXG4gIGNvbW1lbnRTdGFydDogbnVtYmVyLFxuICBjb21tZW50VGV4dDogc3RyaW5nLFxuICBsaW5lOiBDb21tZW50TGluZSxcbik6IFtudW1iZXIsIG51bWJlcl0gPT4ge1xuICBpZiAobGluZS5saW5lQnJlYWtMZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIGNvbW1lbnRTdGFydCArIGxpbmUuc3RhcnQsXG4gICAgICBjb21tZW50U3RhcnQgKyBsaW5lLmVuZCArIGxpbmUubGluZUJyZWFrTGVuZ3RoLFxuICAgIF07XG4gIH1cblxuICBpZiAobGluZS5zdGFydCA+IDApIHtcbiAgICBjb25zdCBwcmV2aW91c0NoYXIgPSBjb21tZW50VGV4dFtsaW5lLnN0YXJ0IC0gMV07XG4gICAgY29uc3QgcHJldmlvdXNJc0xpbmVCcmVhayA9IHByZXZpb3VzQ2hhciA9PT0gXCJcXG5cIjtcblxuICAgIGlmIChwcmV2aW91c0lzTGluZUJyZWFrKSB7XG4gICAgICBjb25zdCBsaW5lQnJlYWtMZW5ndGggPVxuICAgICAgICBsaW5lLnN0YXJ0ID4gMSAmJiBjb21tZW50VGV4dFtsaW5lLnN0YXJ0IC0gMl0gPT09IFwiXFxyXCIgPyAyIDogMTtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIGNvbW1lbnRTdGFydCArIGxpbmUuc3RhcnQgLSBsaW5lQnJlYWtMZW5ndGgsXG4gICAgICAgIGNvbW1lbnRTdGFydCArIGxpbmUuZW5kLFxuICAgICAgXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gW2NvbW1lbnRTdGFydCArIGxpbmUuc3RhcnQsIGNvbW1lbnRTdGFydCArIGxpbmUuZW5kXTtcbn07XG5cbmV4cG9ydCB7IGJ1aWxkUmVtb3ZhbFJhbmdlLCBnZXRDb21tZW50TGluZXMsIGdldENvbW1lbnRUZXh0LCBnZXRKc2RvY0NvbW1lbnQgfTtcbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"parameter-tags.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/no-interface-member-docs/parameter-tags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAoG/D;;;;;;;;GAQG;AACH,QAAA,MAAM,qBAAqB,GACzB,MAAM,WAAW,KAChB,kBAAkB,GAAG,SAmBvB,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
1
+ {"version":3,"file":"parameter-tags.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/no-interface-member-docs/parameter-tags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAmG/D;;;;;;;;GAQG;AACH,QAAA,MAAM,qBAAqB,GACzB,MAAM,WAAW,KAChB,kBAAkB,GAAG,SAmBvB,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
@@ -98,4 +98,4 @@ const parseParameterTagLine = (line) => {
98
98
  };
99
99
  };
100
100
  export { parseParameterTagLine };
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLXRhZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2RvY3Mvbm8taW50ZXJmYWNlLW1lbWJlci1kb2NzL3BhcmFtZXRlci10YWdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLDZEQUE2RDtBQUM3RCxNQUFNLG1CQUFtQixHQUFHLDZDQUE2QyxDQUFDO0FBRTFFOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsQ0FBQyxJQUFZLEVBQVUsRUFBRSxDQUM5QyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBRTVDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE9BQWUsRUFBVSxFQUFFO0lBQ3BELE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUV2QyxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLE9BQWUsRUFBVSxFQUFFLENBQ3pELGlCQUFpQixDQUFDLE9BQU8sQ0FBQztLQUN2QixPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztLQUNuQixPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztLQUNuQixPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRXpCOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE9BQWUsRUFBc0IsRUFBRTtJQUMvRCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRCxNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzlDLE1BQU0sVUFBVSxHQUFHLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRW5ELE9BQU8sVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckQsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLGFBQWEsR0FBRyxDQUNwQixVQUFrQixFQVNkLEVBQUU7SUFDTixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXpDLElBQUksUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBRXpELE9BQU8sVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuRSxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0scUJBQXFCLEdBQUcsQ0FDNUIsSUFBaUIsRUFDZSxFQUFFO0lBQ2xDLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFN0MsSUFBSSxVQUFVLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMxQixPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFekMsSUFBSSxNQUFNLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN0QixPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPO1FBQ0wsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO1FBQ3pCLFFBQVEsRUFBRSxVQUFVO1FBQ3BCLElBQUk7S0FDTCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbW1lbnRMaW5lLCBQYXJhbWV0ZXJNZW1iZXJUYWcgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKiogRXh0cmFjdHMgdGhlIHBhcmFtZXRlciBuYW1lIGZyb20gYW4gYEBwYXJhbWAgdGFnIGxpbmUuICovXG5jb25zdCBwYXJhbWV0ZXJUYWdQYXR0ZXJuID0gL0BwYXJhbVxccysoPzpcXHtbXn1dKlxcfVxccyspPyg/PG5hbWU+W15cXHMtXSspL3U7XG5cbi8qKlxuICogRGVmaW5lcyBzdHJpcEpzZG9jTGluZS5cbiAqIEBwYXJhbSBsaW5lIElucHV0IGxpbmUgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHN0cmlwSnNkb2NMaW5lKCk7XG4gKiBgYGBcbiAqL1xuY29uc3Qgc3RyaXBKc2RvY0xpbmUgPSAobGluZTogc3RyaW5nKTogc3RyaW5nID0+XG4gIGxpbmUucmVwbGFjZSgvXlxccypcXC8/XFwqKlxccz8vdSwgXCJcIikudHJpbSgpO1xuXG4vKipcbiAqIERlZmluZXMgc3RyaXBEZWZhdWx0VmFsdWUuXG4gKiBAcGFyYW0gcmF3TmFtZSBJbnB1dCByYXdOYW1lIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBzdHJpcERlZmF1bHRWYWx1ZSgpO1xuICogYGBgXG4gKi9cbmNvbnN0IHN0cmlwRGVmYXVsdFZhbHVlID0gKHJhd05hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IFtoZWFkID0gXCJcIl0gPSByYXdOYW1lLnNwbGl0KFwiPVwiKTtcblxuICByZXR1cm4gaGVhZDtcbn07XG5cbi8qKlxuICogTm9ybWFsaXplcyBub3JtYWxpemVQYXJhbWV0ZXJOYW1lLlxuICogQHBhcmFtIHJhd05hbWUgSW5wdXQgcmF3TmFtZSB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogbm9ybWFsaXplUGFyYW1ldGVyTmFtZSgpO1xuICogYGBgXG4gKi9cbmNvbnN0IG5vcm1hbGl6ZVBhcmFtZXRlck5hbWUgPSAocmF3TmFtZTogc3RyaW5nKTogc3RyaW5nID0+XG4gIHN0cmlwRGVmYXVsdFZhbHVlKHJhd05hbWUpXG4gICAgLnJlcGxhY2UoL15cXFsvdSwgXCJcIilcbiAgICAucmVwbGFjZSgvXFxdJC91LCBcIlwiKVxuICAgIC5yZXBsYWNlKC9cXD8kL3UsIFwiXCIpO1xuXG4vKipcbiAqIEdldHMgZ2V0UGFyYW1ldGVyTmFtZS5cbiAqIEBwYXJhbSBjb250ZW50IElucHV0IGNvbnRlbnQgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGdldFBhcmFtZXRlck5hbWUoKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRQYXJhbWV0ZXJOYW1lID0gKGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmICghY29udGVudC5zdGFydHNXaXRoKFwiQHBhcmFtXCIpKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IG1hdGNoID0gcGFyYW1ldGVyVGFnUGF0dGVybi5leGVjKGNvbnRlbnQpO1xuICBjb25zdCByYXdOYW1lID0gbWF0Y2g/Lmdyb3Vwcz8uW1wibmFtZVwiXSA/PyBcIlwiO1xuICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplUGFyYW1ldGVyTmFtZShyYXdOYW1lKTtcblxuICByZXR1cm4gbm9ybWFsaXplZC5sZW5ndGggPiAwID8gbm9ybWFsaXplZCA6IHZvaWQgMDtcbn07XG5cbi8qKlxuICogRXh0cmFjdHMgbWVtYmVyIHBhdGggZGV0YWlscyBmcm9tIGEgbm9ybWFsaXplZCBwYXJhbWV0ZXIgbmFtZS5cbiAqIEBwYXJhbSBub3JtYWxpemVkIE5vcm1hbGl6ZWQgcGFyYW1ldGVyIG5hbWUuXG4gKiBAcmV0dXJucyBNZW1iZXIgcGF0aCBkZXRhaWxzIHdoZW4gYXZhaWxhYmxlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG1lbWJlciA9IGdldE1lbWJlck5hbWUoXCJwcm9wcy50aXRsZVwiKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRNZW1iZXJOYW1lID0gKFxuICBub3JtYWxpemVkOiBzdHJpbmcsXG4pOlxuICB8IHVuZGVmaW5lZFxuICB8IHtcbiAgICAgIC8qKiBCYXNlbmFtZSBmaWVsZCB2YWx1ZS4gKi9cbiAgICAgIGJhc2VuYW1lOiBzdHJpbmc7XG5cbiAgICAgIC8qKiBNZW1iZXJQYXRoIGZpZWxkIHZhbHVlLiAqL1xuICAgICAgbWVtYmVyUGF0aDogc3RyaW5nO1xuICAgIH0gPT4ge1xuICBjb25zdCBkb3RJbmRleCA9IG5vcm1hbGl6ZWQuaW5kZXhPZihcIi5cIik7XG5cbiAgaWYgKGRvdEluZGV4IDw9IDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgYmFzZW5hbWUgPSBub3JtYWxpemVkLnNsaWNlKDAsIGRvdEluZGV4KTtcbiAgY29uc3QgbWVtYmVyUGF0aCA9IG5vcm1hbGl6ZWQuc2xpY2UoZG90SW5kZXggKyAxKS50cmltKCk7XG5cbiAgcmV0dXJuIG1lbWJlclBhdGgubGVuZ3RoID4gMCA/IHsgYmFzZW5hbWUsIG1lbWJlclBhdGggfSA6IHZvaWQgMDtcbn07XG5cbi8qKlxuICogUGFyc2VzIGEgYEBwYXJhbWAgdGFnIGxpbmUgaW50byBhIG1lbWJlciB0YWcgd2hlbiBhcHBsaWNhYmxlLlxuICogQHBhcmFtIGxpbmUgQ29tbWVudCBsaW5lIG1ldGFkYXRhLlxuICogQHJldHVybnMgUGFyc2VkIHBhcmFtZXRlciBtZW1iZXIgdGFnIHdoZW4gcHJlc2VudC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCB0YWcgPSBwYXJzZVBhcmFtZXRlclRhZ0xpbmUobGluZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgcGFyc2VQYXJhbWV0ZXJUYWdMaW5lID0gKFxuICBsaW5lOiBDb21tZW50TGluZSxcbik6IFBhcmFtZXRlck1lbWJlclRhZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGNvbnRlbnQgPSBzdHJpcEpzZG9jTGluZShsaW5lLnRleHQpO1xuICBjb25zdCBub3JtYWxpemVkID0gZ2V0UGFyYW1ldGVyTmFtZShjb250ZW50KTtcblxuICBpZiAobm9ybWFsaXplZCA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IG1lbWJlciA9IGdldE1lbWJlck5hbWUobm9ybWFsaXplZCk7XG5cbiAgaWYgKG1lbWJlciA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYmFzZW5hbWU6IG1lbWJlci5iYXNlbmFtZSxcbiAgICBmdWxsTmFtZTogbm9ybWFsaXplZCxcbiAgICBsaW5lLFxuICB9O1xufTtcblxuZXhwb3J0IHsgcGFyc2VQYXJhbWV0ZXJUYWdMaW5lIH07XG4iXX0=
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLXRhZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2RvY3Mvbm8taW50ZXJmYWNlLW1lbWJlci1kb2NzL3BhcmFtZXRlci10YWdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdBLDZEQUE2RDtBQUM3RCxNQUFNLG1CQUFtQixHQUFHLDZDQUE2QyxDQUFDO0FBRTFFOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsQ0FBQyxJQUFZLEVBQVUsRUFBRSxDQUM5QyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBRTVDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE9BQWUsRUFBVSxFQUFFO0lBQ3BELE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUV2QyxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLE9BQWUsRUFBVSxFQUFFLENBQ3pELGlCQUFpQixDQUFDLE9BQU8sQ0FBQztLQUN2QixPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztLQUNuQixPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztLQUNuQixPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRXpCOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE9BQWUsRUFBc0IsRUFBRTtJQUMvRCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRCxNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzlDLE1BQU0sVUFBVSxHQUFHLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRW5ELE9BQU8sVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckQsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLGFBQWEsR0FBRyxDQUFDLFVBQWtCLEVBQW1DLEVBQUU7SUFDNUUsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUV6QyxJQUFJLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNsQixPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMvQyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUV6RCxPQUFPLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbkUsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLHFCQUFxQixHQUFHLENBQzVCLElBQWlCLEVBQ2UsRUFBRTtJQUNsQyxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTdDLElBQUksVUFBVSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXpDLElBQUksTUFBTSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdEIsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsT0FBTztRQUNMLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtRQUN6QixRQUFRLEVBQUUsVUFBVTtRQUNwQixJQUFJO0tBQ0wsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb21tZW50TGluZSwgUGFyYW1ldGVyTWVtYmVyVGFnIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuLyoqIE1lbWJlciBwYXRoIGRldGFpbHMgZXh0cmFjdGVkIGZyb20gYSBwYXJhbWV0ZXIgdGFnLiAqL1xuaW50ZXJmYWNlIFBhcmFtZXRlck1lbWJlck5hbWUge1xuICAvKiogQmFzZW5hbWUgZmllbGQgdmFsdWUuICovXG4gIGJhc2VuYW1lOiBzdHJpbmc7XG5cbiAgLyoqIE1lbWJlclBhdGggZmllbGQgdmFsdWUuICovXG4gIG1lbWJlclBhdGg6IHN0cmluZztcbn1cblxuLyoqIEV4dHJhY3RzIHRoZSBwYXJhbWV0ZXIgbmFtZSBmcm9tIGFuIGBAcGFyYW1gIHRhZyBsaW5lLiAqL1xuY29uc3QgcGFyYW1ldGVyVGFnUGF0dGVybiA9IC9AcGFyYW1cXHMrKD86XFx7W159XSpcXH1cXHMrKT8oPzxuYW1lPlteXFxzLV0rKS91O1xuXG4vKipcbiAqIERlZmluZXMgc3RyaXBKc2RvY0xpbmUuXG4gKiBAcGFyYW0gbGluZSBJbnB1dCBsaW5lIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBzdHJpcEpzZG9jTGluZSgpO1xuICogYGBgXG4gKi9cbmNvbnN0IHN0cmlwSnNkb2NMaW5lID0gKGxpbmU6IHN0cmluZyk6IHN0cmluZyA9PlxuICBsaW5lLnJlcGxhY2UoL15cXHMqXFwvP1xcKipcXHM/L3UsIFwiXCIpLnRyaW0oKTtcblxuLyoqXG4gKiBEZWZpbmVzIHN0cmlwRGVmYXVsdFZhbHVlLlxuICogQHBhcmFtIHJhd05hbWUgSW5wdXQgcmF3TmFtZSB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogc3RyaXBEZWZhdWx0VmFsdWUoKTtcbiAqIGBgYFxuICovXG5jb25zdCBzdHJpcERlZmF1bHRWYWx1ZSA9IChyYXdOYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBbaGVhZCA9IFwiXCJdID0gcmF3TmFtZS5zcGxpdChcIj1cIik7XG5cbiAgcmV0dXJuIGhlYWQ7XG59O1xuXG4vKipcbiAqIE5vcm1hbGl6ZXMgbm9ybWFsaXplUGFyYW1ldGVyTmFtZS5cbiAqIEBwYXJhbSByYXdOYW1lIElucHV0IHJhd05hbWUgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIG5vcm1hbGl6ZVBhcmFtZXRlck5hbWUoKTtcbiAqIGBgYFxuICovXG5jb25zdCBub3JtYWxpemVQYXJhbWV0ZXJOYW1lID0gKHJhd05hbWU6IHN0cmluZyk6IHN0cmluZyA9PlxuICBzdHJpcERlZmF1bHRWYWx1ZShyYXdOYW1lKVxuICAgIC5yZXBsYWNlKC9eXFxbL3UsIFwiXCIpXG4gICAgLnJlcGxhY2UoL1xcXSQvdSwgXCJcIilcbiAgICAucmVwbGFjZSgvXFw/JC91LCBcIlwiKTtcblxuLyoqXG4gKiBHZXRzIGdldFBhcmFtZXRlck5hbWUuXG4gKiBAcGFyYW0gY29udGVudCBJbnB1dCBjb250ZW50IHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBnZXRQYXJhbWV0ZXJOYW1lKCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0UGFyYW1ldGVyTmFtZSA9IChjb250ZW50OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoIWNvbnRlbnQuc3RhcnRzV2l0aChcIkBwYXJhbVwiKSkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCBtYXRjaCA9IHBhcmFtZXRlclRhZ1BhdHRlcm4uZXhlYyhjb250ZW50KTtcbiAgY29uc3QgcmF3TmFtZSA9IG1hdGNoPy5ncm91cHM/LltcIm5hbWVcIl0gPz8gXCJcIjtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVBhcmFtZXRlck5hbWUocmF3TmFtZSk7XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWQubGVuZ3RoID4gMCA/IG5vcm1hbGl6ZWQgOiB2b2lkIDA7XG59O1xuXG4vKipcbiAqIEV4dHJhY3RzIG1lbWJlciBwYXRoIGRldGFpbHMgZnJvbSBhIG5vcm1hbGl6ZWQgcGFyYW1ldGVyIG5hbWUuXG4gKiBAcGFyYW0gbm9ybWFsaXplZCBOb3JtYWxpemVkIHBhcmFtZXRlciBuYW1lLlxuICogQHJldHVybnMgTWVtYmVyIHBhdGggZGV0YWlscyB3aGVuIGF2YWlsYWJsZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBtZW1iZXIgPSBnZXRNZW1iZXJOYW1lKFwicHJvcHMudGl0bGVcIik7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0TWVtYmVyTmFtZSA9IChub3JtYWxpemVkOiBzdHJpbmcpOiBQYXJhbWV0ZXJNZW1iZXJOYW1lIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgZG90SW5kZXggPSBub3JtYWxpemVkLmluZGV4T2YoXCIuXCIpO1xuXG4gIGlmIChkb3RJbmRleCA8PSAwKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IGJhc2VuYW1lID0gbm9ybWFsaXplZC5zbGljZSgwLCBkb3RJbmRleCk7XG4gIGNvbnN0IG1lbWJlclBhdGggPSBub3JtYWxpemVkLnNsaWNlKGRvdEluZGV4ICsgMSkudHJpbSgpO1xuXG4gIHJldHVybiBtZW1iZXJQYXRoLmxlbmd0aCA+IDAgPyB7IGJhc2VuYW1lLCBtZW1iZXJQYXRoIH0gOiB2b2lkIDA7XG59O1xuXG4vKipcbiAqIFBhcnNlcyBhIGBAcGFyYW1gIHRhZyBsaW5lIGludG8gYSBtZW1iZXIgdGFnIHdoZW4gYXBwbGljYWJsZS5cbiAqIEBwYXJhbSBsaW5lIENvbW1lbnQgbGluZSBtZXRhZGF0YS5cbiAqIEByZXR1cm5zIFBhcnNlZCBwYXJhbWV0ZXIgbWVtYmVyIHRhZyB3aGVuIHByZXNlbnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgdGFnID0gcGFyc2VQYXJhbWV0ZXJUYWdMaW5lKGxpbmUpO1xuICogYGBgXG4gKi9cbmNvbnN0IHBhcnNlUGFyYW1ldGVyVGFnTGluZSA9IChcbiAgbGluZTogQ29tbWVudExpbmUsXG4pOiBQYXJhbWV0ZXJNZW1iZXJUYWcgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBjb250ZW50ID0gc3RyaXBKc2RvY0xpbmUobGluZS50ZXh0KTtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IGdldFBhcmFtZXRlck5hbWUoY29udGVudCk7XG5cbiAgaWYgKG5vcm1hbGl6ZWQgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCBtZW1iZXIgPSBnZXRNZW1iZXJOYW1lKG5vcm1hbGl6ZWQpO1xuXG4gIGlmIChtZW1iZXIgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJhc2VuYW1lOiBtZW1iZXIuYmFzZW5hbWUsXG4gICAgZnVsbE5hbWU6IG5vcm1hbGl6ZWQsXG4gICAgbGluZSxcbiAgfTtcbn07XG5cbmV4cG9ydCB7IHBhcnNlUGFyYW1ldGVyVGFnTGluZSB9O1xuIl19
@@ -122,4 +122,4 @@ const getParameterTypeLookup = (node) => {
122
122
  */
123
123
  const isNamedTypeReference = (typeAnnotation) => typeAnnotation?.type === "TSTypeReference";
124
124
  export { getParameterTypeLookup, isNamedTypeReference };
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLXV0aWxpdGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vZG9jcy9uby1pbnRlcmZhY2UtbWVtYmVyLWRvY3MvcGFyYW1ldGVyLXV0aWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1REE7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLHFCQUFxQixHQUFHLENBQzVCLElBQW9CLEVBQ1ksRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDO0FBRXpFOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLElBQWEsRUFBVyxFQUFFO0lBQ3RELElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxJQUEwQixDQUFDO0lBRTdDLElBQUksU0FBUyxDQUFDLFFBQVEsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbkMsT0FBTyxTQUFTLENBQUMsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssbUJBQW1CLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hFLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sc0JBQXNCLEdBQUcsQ0FDN0IsSUFBYSxFQUNvQixFQUFFO0lBQ25DLE1BQU0sUUFBUSxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTVDLElBQUksUUFBUSxLQUFLLElBQUksSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUN0RCxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxRQUEwQixDQUFDO0lBQzlDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxVQUFVLENBQUM7SUFFNUIsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLFlBQVksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNqRSxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLEVBQUUsR0FBRyxVQUFVLEVBQUUsSUFBSSxFQUF5QixDQUFDO0FBQ3hELENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLElBQWEsRUFBNkIsRUFBRTtJQUNwRSxNQUFNLFVBQVUsR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVoRCxJQUFJLFVBQVUsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzFCLE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sY0FBYyxHQUFHLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXpELE9BQU8sY0FBYyxLQUFLLEtBQUssQ0FBQztRQUM5QixDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUksRUFBRTtRQUMzQixDQUFDLENBQUM7WUFDRSxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUk7WUFDckIsY0FBYztTQUNmLENBQUM7QUFDUixDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBYSxFQUFhLEVBQUU7SUFDakQsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLElBQXdCLENBQUM7SUFFM0MsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ2pFLENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxzQkFBc0IsR0FBRyxDQUM3QixJQUFlLEVBQ2tCLEVBQUU7SUFDbkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7SUFFckQsS0FBSyxNQUFNLFNBQVMsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM1QyxNQUFNLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV6QyxJQUFJLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxDQUMzQixjQUE4QyxFQUNyQyxFQUFFLENBQUMsY0FBYyxFQUFFLElBQUksS0FBSyxpQkFBaUIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHR5cGUgeyBUeXBlQW5ub3RhdGlvbk5vZGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG5pbnRlcmZhY2UgRnVuY3Rpb25MaWtlTm9kZSB7XG4gIC8qKiBQYXJhbXMgaGVscGVyIHZhbHVlLiAqL1xuICBwYXJhbXM/OiB1bmtub3duW107XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBJZGVudGlmaWVyTm9kZSB7XG4gIC8qKiBOYW1lIGhlbHBlciB2YWx1ZS4gKi9cbiAgbmFtZT86IHN0cmluZztcblxuICAvKiogVHlwZSBoZWxwZXIgdmFsdWUuICovXG4gIHR5cGU/OiBzdHJpbmc7XG5cbiAgLyoqIFR5cGVBbm5vdGF0aW9uIGhlbHBlciB2YWx1ZS4gKi9cbiAgdHlwZUFubm90YXRpb24/OiB7XG4gICAgLyoqIFR5cGVBbm5vdGF0aW9uIGhlbHBlciB2YWx1ZS4gKi9cbiAgICB0eXBlQW5ub3RhdGlvbj86IFR5cGVBbm5vdGF0aW9uTm9kZTtcbiAgfTtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIE5hbWVkSWRlbnRpZmllck5vZGUgZXh0ZW5kcyBJZGVudGlmaWVyTm9kZSB7XG4gIC8qKiBOYW1lIGZpZWxkIHZhbHVlLiAqL1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBQYXJhbWV0ZXJDb250YWluZXIge1xuICAvKiogQXJndW1lbnQgaGVscGVyIHZhbHVlLiAqL1xuICBhcmd1bWVudD86IHVua25vd247XG5cbiAgLyoqIExlZnQgaGVscGVyIHZhbHVlLiAqL1xuICBsZWZ0PzogdW5rbm93bjtcblxuICAvKiogUGFyYW1ldGVyIGhlbHBlciB2YWx1ZS4gKi9cbiAgcGFyYW1ldGVyPzogdW5rbm93bjtcblxuICAvKiogVHlwZSBoZWxwZXIgdmFsdWUuICovXG4gIHR5cGU/OiBzdHJpbmc7XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBQYXJhbWV0ZXJJbmZvIHtcbiAgLyoqIE5hbWUgZmllbGQgdmFsdWUuICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKiogVHlwZUFubm90YXRpb24gaGVscGVyIHZhbHVlLiAqL1xuICB0eXBlQW5ub3RhdGlvbj86IFR5cGVBbm5vdGF0aW9uTm9kZTtcbn1cblxuLyoqXG4gKiBHZXRzIGEgdHlwZSBhbm5vdGF0aW9uIG5vZGUgZnJvbSBhbiBpZGVudGlmaWVyLlxuICogQHBhcmFtIG5vZGUgSWRlbnRpZmllciBub2RlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBUaGUgdHlwZSBhbm5vdGF0aW9uIG5vZGUgd2hlbiBwcmVzZW50LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGFubm90YXRpb24gPSBnZXRUeXBlQW5ub3RhdGlvbk5vZGUoaWRlbnRpZmllcik7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0VHlwZUFubm90YXRpb25Ob2RlID0gKFxuICBub2RlOiBJZGVudGlmaWVyTm9kZSxcbik6IFR5cGVBbm5vdGF0aW9uTm9kZSB8IHVuZGVmaW5lZCA9PiBub2RlLnR5cGVBbm5vdGF0aW9uPy50eXBlQW5ub3RhdGlvbjtcblxuLyoqXG4gKiBEZWZpbmVzIHJlc29sdmVQYXJhbWV0ZXJOb2RlLlxuICogQHBhcmFtIG5vZGUgSW5wdXQgbm9kZSB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogcmVzb2x2ZVBhcmFtZXRlck5vZGUoKTtcbiAqIGBgYFxuICovXG5jb25zdCByZXNvbHZlUGFyYW1ldGVyTm9kZSA9IChub2RlOiB1bmtub3duKTogdW5rbm93biA9PiB7XG4gIGlmIChub2RlID09PSBudWxsIHx8IHR5cGVvZiBub2RlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBjb25zdCBjb250YWluZXIgPSBub2RlIGFzIFBhcmFtZXRlckNvbnRhaW5lcjtcblxuICBpZiAoY29udGFpbmVyLmFyZ3VtZW50ICE9PSB2b2lkIDApIHtcbiAgICByZXR1cm4gY29udGFpbmVyLmFyZ3VtZW50O1xuICB9XG5cbiAgaWYgKGNvbnRhaW5lci5wYXJhbWV0ZXIgIT09IHZvaWQgMCkge1xuICAgIHJldHVybiBjb250YWluZXIucGFyYW1ldGVyO1xuICB9XG5cbiAgaWYgKGNvbnRhaW5lci50eXBlID09PSBcIkFzc2lnbm1lbnRQYXR0ZXJuXCIgJiYgY29udGFpbmVyLmxlZnQgIT09IHZvaWQgMCkge1xuICAgIHJldHVybiBjb250YWluZXIubGVmdDtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufTtcblxuLyoqXG4gKiBHZXRzIHRoZSBwYXJhbWV0ZXIgaWRlbnRpZmllciBmb3IgYSBwYXJhbWV0ZXIgbm9kZS5cbiAqIEBwYXJhbSBub2RlIFBhcmFtZXRlciBub2RlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBUaGUgaWRlbnRpZmllciBub2RlIHdoZW4gcHJlc2VudC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBpZGVudGlmaWVyID0gZ2V0UGFyYW1ldGVySWRlbnRpZmllcihub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRQYXJhbWV0ZXJJZGVudGlmaWVyID0gKFxuICBub2RlOiB1bmtub3duLFxuKTogTmFtZWRJZGVudGlmaWVyTm9kZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZVBhcmFtZXRlck5vZGUobm9kZSk7XG5cbiAgaWYgKHJlc29sdmVkID09PSBudWxsIHx8IHR5cGVvZiByZXNvbHZlZCAhPT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCBpZGVudGlmaWVyID0gcmVzb2x2ZWQgYXMgSWRlbnRpZmllck5vZGU7XG4gIGNvbnN0IHsgbmFtZSB9ID0gaWRlbnRpZmllcjtcblxuICBpZiAoaWRlbnRpZmllci50eXBlICE9PSBcIklkZW50aWZpZXJcIiB8fCB0eXBlb2YgbmFtZSAhPT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICByZXR1cm4geyAuLi5pZGVudGlmaWVyLCBuYW1lIH0gYXMgTmFtZWRJZGVudGlmaWVyTm9kZTtcbn07XG5cbi8qKlxuICogR2V0cyBwYXJhbWV0ZXIgaW5mbyBmb3IgdGhlIGdpdmVuIG5vZGUuXG4gKiBAcGFyYW0gbm9kZSBQYXJhbWV0ZXIgbm9kZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMgUGFyYW1ldGVyIGluZm8gd2hlbiBhdmFpbGFibGUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgaW5mbyA9IGdldFBhcmFtZXRlckluZm8obm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0UGFyYW1ldGVySW5mbyA9IChub2RlOiB1bmtub3duKTogUGFyYW1ldGVySW5mbyB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGlkZW50aWZpZXIgPSBnZXRQYXJhbWV0ZXJJZGVudGlmaWVyKG5vZGUpO1xuXG4gIGlmIChpZGVudGlmaWVyID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgdHlwZUFubm90YXRpb24gPSBnZXRUeXBlQW5ub3RhdGlvbk5vZGUoaWRlbnRpZmllcik7XG5cbiAgcmV0dXJuIHR5cGVBbm5vdGF0aW9uID09PSB2b2lkIDBcbiAgICA/IHsgbmFtZTogaWRlbnRpZmllci5uYW1lIH1cbiAgICA6IHtcbiAgICAgICAgbmFtZTogaWRlbnRpZmllci5uYW1lLFxuICAgICAgICB0eXBlQW5ub3RhdGlvbixcbiAgICAgIH07XG59O1xuXG4vKipcbiAqIEdldHMgZ2V0UGFyYW1ldGVycy5cbiAqIEBwYXJhbSBub2RlIElucHV0IG5vZGUgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGdldFBhcmFtZXRlcnMoKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRQYXJhbWV0ZXJzID0gKG5vZGU6IHVua25vd24pOiB1bmtub3duW10gPT4ge1xuICBpZiAobm9kZSA9PT0gbnVsbCB8fCB0eXBlb2Ygbm9kZSAhPT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IHR5cGVkTm9kZSA9IG5vZGUgYXMgRnVuY3Rpb25MaWtlTm9kZTtcblxuICByZXR1cm4gQXJyYXkuaXNBcnJheSh0eXBlZE5vZGUucGFyYW1zKSA/IHR5cGVkTm9kZS5wYXJhbXMgOiBbXTtcbn07XG5cbi8qKlxuICogQnVpbGRzIGEgbG9va3VwIG9mIHBhcmFtZXRlciBuYW1lcyB0byB0eXBlIGFubm90YXRpb25zLlxuICogQHBhcmFtIG5vZGUgRnVuY3Rpb24tbGlrZSBub2RlLlxuICogQHJldHVybnMgTG9va3VwIG9mIHBhcmFtZXRlciBuYW1lcyB0byBhbm5vdGF0aW9ucy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBsb29rdXAgPSBnZXRQYXJhbWV0ZXJUeXBlTG9va3VwKG5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFBhcmFtZXRlclR5cGVMb29rdXAgPSAoXG4gIG5vZGU6IFJ1bGUuTm9kZSxcbik6IE1hcDxzdHJpbmcsIFR5cGVBbm5vdGF0aW9uTm9kZT4gPT4ge1xuICBjb25zdCBsb29rdXAgPSBuZXcgTWFwPHN0cmluZywgVHlwZUFubm90YXRpb25Ob2RlPigpO1xuXG4gIGZvciAoY29uc3QgcGFyYW1ldGVyIG9mIGdldFBhcmFtZXRlcnMobm9kZSkpIHtcbiAgICBjb25zdCBpbmZvID0gZ2V0UGFyYW1ldGVySW5mbyhwYXJhbWV0ZXIpO1xuXG4gICAgaWYgKGluZm8gIT09IHZvaWQgMCAmJiBpbmZvLnR5cGVBbm5vdGF0aW9uICE9PSB2b2lkIDApIHtcbiAgICAgIGxvb2t1cC5zZXQoaW5mby5uYW1lLCBpbmZvLnR5cGVBbm5vdGF0aW9uKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbG9va3VwO1xufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIHR5cGUgYW5ub3RhdGlvbiBpcyBhIG5hbWVkIHR5cGUgcmVmZXJlbmNlLlxuICogQHBhcmFtIHR5cGVBbm5vdGF0aW9uIFR5cGUgYW5ub3RhdGlvbiB0byBpbnNwZWN0LlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBhbm5vdGF0aW9uIGlzIGEgbmFtZWQgcmVmZXJlbmNlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG9rID0gaXNOYW1lZFR5cGVSZWZlcmVuY2UoYW5ub3RhdGlvbik7XG4gKiBgYGBcbiAqL1xuY29uc3QgaXNOYW1lZFR5cGVSZWZlcmVuY2UgPSAoXG4gIHR5cGVBbm5vdGF0aW9uOiBUeXBlQW5ub3RhdGlvbk5vZGUgfCB1bmRlZmluZWQsXG4pOiBib29sZWFuID0+IHR5cGVBbm5vdGF0aW9uPy50eXBlID09PSBcIlRTVHlwZVJlZmVyZW5jZVwiO1xuXG5leHBvcnQgeyBnZXRQYXJhbWV0ZXJUeXBlTG9va3VwLCBpc05hbWVkVHlwZVJlZmVyZW5jZSB9O1xuIl19
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLXV0aWxpdGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vZG9jcy9uby1pbnRlcmZhY2UtbWVtYmVyLWRvY3MvcGFyYW1ldGVyLXV0aWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1REE7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLHFCQUFxQixHQUFHLENBQzVCLElBQW9CLEVBQ1ksRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDO0FBRXpFOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLElBQWEsRUFBVyxFQUFFO0lBQ3RELElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxJQUEwQixDQUFDO0lBRTdDLElBQUksU0FBUyxDQUFDLFFBQVEsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbkMsT0FBTyxTQUFTLENBQUMsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssbUJBQW1CLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hFLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sc0JBQXNCLEdBQUcsQ0FDN0IsSUFBYSxFQUNvQixFQUFFO0lBQ25DLE1BQU0sUUFBUSxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTVDLElBQUksUUFBUSxLQUFLLElBQUksSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUN0RCxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxRQUEwQixDQUFDO0lBQzlDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxVQUFVLENBQUM7SUFFNUIsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLFlBQVksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNqRSxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLEVBQUUsR0FBRyxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDakMsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLENBQUMsSUFBYSxFQUE2QixFQUFFO0lBQ3BFLE1BQU0sVUFBVSxHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWhELElBQUksVUFBVSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxjQUFjLEdBQUcscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFekQsT0FBTyxjQUFjLEtBQUssS0FBSyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSSxFQUFFO1FBQzNCLENBQUMsQ0FBQztZQUNFLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtZQUNyQixjQUFjO1NBQ2YsQ0FBQztBQUNSLENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFhLEVBQWEsRUFBRTtJQUNqRCxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsSUFBd0IsQ0FBQztJQUUzQyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDakUsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLHNCQUFzQixHQUFHLENBQzdCLElBQWUsRUFDa0IsRUFBRTtJQUNuQyxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBOEIsQ0FBQztJQUVyRCxLQUFLLE1BQU0sU0FBUyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzVDLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXpDLElBQUksSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0RCxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLG9CQUFvQixHQUFHLENBQzNCLGNBQThDLEVBQ3JDLEVBQUUsQ0FBQyxjQUFjLEVBQUUsSUFBSSxLQUFLLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgdHlwZSB7IFR5cGVBbm5vdGF0aW9uTm9kZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBGdW5jdGlvbkxpa2VOb2RlIHtcbiAgLyoqIFBhcmFtcyBoZWxwZXIgdmFsdWUuICovXG4gIHBhcmFtcz86IHVua25vd25bXTtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIElkZW50aWZpZXJOb2RlIHtcbiAgLyoqIE5hbWUgaGVscGVyIHZhbHVlLiAqL1xuICBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKiBUeXBlIGhlbHBlciB2YWx1ZS4gKi9cbiAgdHlwZT86IHN0cmluZztcblxuICAvKiogVHlwZUFubm90YXRpb24gaGVscGVyIHZhbHVlLiAqL1xuICB0eXBlQW5ub3RhdGlvbj86IHtcbiAgICAvKiogVHlwZUFubm90YXRpb24gaGVscGVyIHZhbHVlLiAqL1xuICAgIHR5cGVBbm5vdGF0aW9uPzogVHlwZUFubm90YXRpb25Ob2RlO1xuICB9O1xufVxuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG5pbnRlcmZhY2UgTmFtZWRJZGVudGlmaWVyTm9kZSBleHRlbmRzIElkZW50aWZpZXJOb2RlIHtcbiAgLyoqIE5hbWUgZmllbGQgdmFsdWUuICovXG4gIG5hbWU6IHN0cmluZztcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIFBhcmFtZXRlckNvbnRhaW5lciB7XG4gIC8qKiBBcmd1bWVudCBoZWxwZXIgdmFsdWUuICovXG4gIGFyZ3VtZW50PzogdW5rbm93bjtcblxuICAvKiogTGVmdCBoZWxwZXIgdmFsdWUuICovXG4gIGxlZnQ/OiB1bmtub3duO1xuXG4gIC8qKiBQYXJhbWV0ZXIgaGVscGVyIHZhbHVlLiAqL1xuICBwYXJhbWV0ZXI/OiB1bmtub3duO1xuXG4gIC8qKiBUeXBlIGhlbHBlciB2YWx1ZS4gKi9cbiAgdHlwZT86IHN0cmluZztcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIFBhcmFtZXRlckluZm8ge1xuICAvKiogTmFtZSBmaWVsZCB2YWx1ZS4gKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKiBUeXBlQW5ub3RhdGlvbiBoZWxwZXIgdmFsdWUuICovXG4gIHR5cGVBbm5vdGF0aW9uPzogVHlwZUFubm90YXRpb25Ob2RlO1xufVxuXG4vKipcbiAqIEdldHMgYSB0eXBlIGFubm90YXRpb24gbm9kZSBmcm9tIGFuIGlkZW50aWZpZXIuXG4gKiBAcGFyYW0gbm9kZSBJZGVudGlmaWVyIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFRoZSB0eXBlIGFubm90YXRpb24gbm9kZSB3aGVuIHByZXNlbnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgYW5ub3RhdGlvbiA9IGdldFR5cGVBbm5vdGF0aW9uTm9kZShpZGVudGlmaWVyKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRUeXBlQW5ub3RhdGlvbk5vZGUgPSAoXG4gIG5vZGU6IElkZW50aWZpZXJOb2RlLFxuKTogVHlwZUFubm90YXRpb25Ob2RlIHwgdW5kZWZpbmVkID0+IG5vZGUudHlwZUFubm90YXRpb24/LnR5cGVBbm5vdGF0aW9uO1xuXG4vKipcbiAqIERlZmluZXMgcmVzb2x2ZVBhcmFtZXRlck5vZGUuXG4gKiBAcGFyYW0gbm9kZSBJbnB1dCBub2RlIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiByZXNvbHZlUGFyYW1ldGVyTm9kZSgpO1xuICogYGBgXG4gKi9cbmNvbnN0IHJlc29sdmVQYXJhbWV0ZXJOb2RlID0gKG5vZGU6IHVua25vd24pOiB1bmtub3duID0+IHtcbiAgaWYgKG5vZGUgPT09IG51bGwgfHwgdHlwZW9mIG5vZGUgIT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIGNvbnN0IGNvbnRhaW5lciA9IG5vZGUgYXMgUGFyYW1ldGVyQ29udGFpbmVyO1xuXG4gIGlmIChjb250YWluZXIuYXJndW1lbnQgIT09IHZvaWQgMCkge1xuICAgIHJldHVybiBjb250YWluZXIuYXJndW1lbnQ7XG4gIH1cblxuICBpZiAoY29udGFpbmVyLnBhcmFtZXRlciAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIGNvbnRhaW5lci5wYXJhbWV0ZXI7XG4gIH1cblxuICBpZiAoY29udGFpbmVyLnR5cGUgPT09IFwiQXNzaWdubWVudFBhdHRlcm5cIiAmJiBjb250YWluZXIubGVmdCAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIGNvbnRhaW5lci5sZWZ0O1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59O1xuXG4vKipcbiAqIEdldHMgdGhlIHBhcmFtZXRlciBpZGVudGlmaWVyIGZvciBhIHBhcmFtZXRlciBub2RlLlxuICogQHBhcmFtIG5vZGUgUGFyYW1ldGVyIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFRoZSBpZGVudGlmaWVyIG5vZGUgd2hlbiBwcmVzZW50LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGlkZW50aWZpZXIgPSBnZXRQYXJhbWV0ZXJJZGVudGlmaWVyKG5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFBhcmFtZXRlcklkZW50aWZpZXIgPSAoXG4gIG5vZGU6IHVua25vd24sXG4pOiBOYW1lZElkZW50aWZpZXJOb2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlUGFyYW1ldGVyTm9kZShub2RlKTtcblxuICBpZiAocmVzb2x2ZWQgPT09IG51bGwgfHwgdHlwZW9mIHJlc29sdmVkICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IGlkZW50aWZpZXIgPSByZXNvbHZlZCBhcyBJZGVudGlmaWVyTm9kZTtcbiAgY29uc3QgeyBuYW1lIH0gPSBpZGVudGlmaWVyO1xuXG4gIGlmIChpZGVudGlmaWVyLnR5cGUgIT09IFwiSWRlbnRpZmllclwiIHx8IHR5cGVvZiBuYW1lICE9PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIHJldHVybiB7IC4uLmlkZW50aWZpZXIsIG5hbWUgfTtcbn07XG5cbi8qKlxuICogR2V0cyBwYXJhbWV0ZXIgaW5mbyBmb3IgdGhlIGdpdmVuIG5vZGUuXG4gKiBAcGFyYW0gbm9kZSBQYXJhbWV0ZXIgbm9kZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMgUGFyYW1ldGVyIGluZm8gd2hlbiBhdmFpbGFibGUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgaW5mbyA9IGdldFBhcmFtZXRlckluZm8obm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0UGFyYW1ldGVySW5mbyA9IChub2RlOiB1bmtub3duKTogUGFyYW1ldGVySW5mbyB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGlkZW50aWZpZXIgPSBnZXRQYXJhbWV0ZXJJZGVudGlmaWVyKG5vZGUpO1xuXG4gIGlmIChpZGVudGlmaWVyID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgdHlwZUFubm90YXRpb24gPSBnZXRUeXBlQW5ub3RhdGlvbk5vZGUoaWRlbnRpZmllcik7XG5cbiAgcmV0dXJuIHR5cGVBbm5vdGF0aW9uID09PSB2b2lkIDBcbiAgICA/IHsgbmFtZTogaWRlbnRpZmllci5uYW1lIH1cbiAgICA6IHtcbiAgICAgICAgbmFtZTogaWRlbnRpZmllci5uYW1lLFxuICAgICAgICB0eXBlQW5ub3RhdGlvbixcbiAgICAgIH07XG59O1xuXG4vKipcbiAqIEdldHMgZ2V0UGFyYW1ldGVycy5cbiAqIEBwYXJhbSBub2RlIElucHV0IG5vZGUgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGdldFBhcmFtZXRlcnMoKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRQYXJhbWV0ZXJzID0gKG5vZGU6IHVua25vd24pOiB1bmtub3duW10gPT4ge1xuICBpZiAobm9kZSA9PT0gbnVsbCB8fCB0eXBlb2Ygbm9kZSAhPT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IHR5cGVkTm9kZSA9IG5vZGUgYXMgRnVuY3Rpb25MaWtlTm9kZTtcblxuICByZXR1cm4gQXJyYXkuaXNBcnJheSh0eXBlZE5vZGUucGFyYW1zKSA/IHR5cGVkTm9kZS5wYXJhbXMgOiBbXTtcbn07XG5cbi8qKlxuICogQnVpbGRzIGEgbG9va3VwIG9mIHBhcmFtZXRlciBuYW1lcyB0byB0eXBlIGFubm90YXRpb25zLlxuICogQHBhcmFtIG5vZGUgRnVuY3Rpb24tbGlrZSBub2RlLlxuICogQHJldHVybnMgTG9va3VwIG9mIHBhcmFtZXRlciBuYW1lcyB0byBhbm5vdGF0aW9ucy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBsb29rdXAgPSBnZXRQYXJhbWV0ZXJUeXBlTG9va3VwKG5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFBhcmFtZXRlclR5cGVMb29rdXAgPSAoXG4gIG5vZGU6IFJ1bGUuTm9kZSxcbik6IE1hcDxzdHJpbmcsIFR5cGVBbm5vdGF0aW9uTm9kZT4gPT4ge1xuICBjb25zdCBsb29rdXAgPSBuZXcgTWFwPHN0cmluZywgVHlwZUFubm90YXRpb25Ob2RlPigpO1xuXG4gIGZvciAoY29uc3QgcGFyYW1ldGVyIG9mIGdldFBhcmFtZXRlcnMobm9kZSkpIHtcbiAgICBjb25zdCBpbmZvID0gZ2V0UGFyYW1ldGVySW5mbyhwYXJhbWV0ZXIpO1xuXG4gICAgaWYgKGluZm8gIT09IHZvaWQgMCAmJiBpbmZvLnR5cGVBbm5vdGF0aW9uICE9PSB2b2lkIDApIHtcbiAgICAgIGxvb2t1cC5zZXQoaW5mby5uYW1lLCBpbmZvLnR5cGVBbm5vdGF0aW9uKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbG9va3VwO1xufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIHR5cGUgYW5ub3RhdGlvbiBpcyBhIG5hbWVkIHR5cGUgcmVmZXJlbmNlLlxuICogQHBhcmFtIHR5cGVBbm5vdGF0aW9uIFR5cGUgYW5ub3RhdGlvbiB0byBpbnNwZWN0LlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBhbm5vdGF0aW9uIGlzIGEgbmFtZWQgcmVmZXJlbmNlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG9rID0gaXNOYW1lZFR5cGVSZWZlcmVuY2UoYW5ub3RhdGlvbik7XG4gKiBgYGBcbiAqL1xuY29uc3QgaXNOYW1lZFR5cGVSZWZlcmVuY2UgPSAoXG4gIHR5cGVBbm5vdGF0aW9uOiBUeXBlQW5ub3RhdGlvbk5vZGUgfCB1bmRlZmluZWQsXG4pOiBib29sZWFuID0+IHR5cGVBbm5vdGF0aW9uPy50eXBlID09PSBcIlRTVHlwZVJlZmVyZW5jZVwiO1xuXG5leHBvcnQgeyBnZXRQYXJhbWV0ZXJUeXBlTG9va3VwLCBpc05hbWVkVHlwZVJlZmVyZW5jZSB9O1xuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/no-interface-member-docs/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAiPnC,+EAA+E;AAC/E,QAAA,MAAM,kCAAkC,EAAE,IAAI,CAAC,UA8B9C,CAAC;AAEF,OAAO,EAAE,kCAAkC,EAAE,CAAC"}
1
+ {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/no-interface-member-docs/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AA+PnC,+EAA+E;AAC/E,QAAA,MAAM,kCAAkC,EAAE,IAAI,CAAC,UAkC9C,CAAC;AAEF,OAAO,EAAE,kCAAkC,EAAE,CAAC"}
@@ -1,4 +1,3 @@
1
- import { createRuleDocumentation } from "../../custom-rule-documentation.js";
2
1
  import { buildRemovalRange, getCommentLines, getCommentText, getJsdocComment, } from "./comment-utilities.js";
3
2
  import { parseParameterTagLine } from "./parameter-tags.js";
4
3
  import { getParameterTypeLookup, isNamedTypeReference, } from "./parameter-utilities.js";
@@ -124,7 +123,10 @@ const resolveMemberTagContext = (context, node) => {
124
123
  * ```
125
124
  */
126
125
  const handleFunctionLike = (context, node) => {
127
- const resolved = resolveMemberTagContext(context, node);
126
+ const functionLikeNode = node.type === "MethodDefinition"
127
+ ? (node.value ?? node)
128
+ : node;
129
+ const resolved = resolveMemberTagContext(context, functionLikeNode);
128
130
  if (resolved === void 0) {
129
131
  return;
130
132
  }
@@ -147,6 +149,8 @@ const noInterfaceMemberDocumentationRule = {
147
149
  ArrowFunctionExpression: listener,
148
150
  FunctionDeclaration: listener,
149
151
  FunctionExpression: listener,
152
+ MethodDefinition: listener,
153
+ TSAbstractMethodDefinition: listener,
150
154
  TSCallSignatureDeclaration: listener,
151
155
  TSConstructSignatureDeclaration: listener,
152
156
  TSDeclareFunction: listener,
@@ -155,7 +159,11 @@ const noInterfaceMemberDocumentationRule = {
155
159
  };
156
160
  },
157
161
  meta: {
158
- docs: createRuleDocumentation("no-interface-member-docs", "Disallow documenting interface members in @param tags; document them on the interface instead."),
162
+ docs: {
163
+ description: "Disallow documenting interface members in @param tags; document them on the interface instead.",
164
+ recommended: false,
165
+ url: "https://github.com/parloti/eslint-plugin/blob/main/docs/rules/no-interface-member-docs.md",
166
+ },
159
167
  fixable: "code",
160
168
  messages: {
161
169
  interfaceMemberDoc: "Document interface members on the interface instead of using @param for {{parameterName}}.",
@@ -165,4 +173,4 @@ const noInterfaceMemberDocumentationRule = {
165
173
  },
166
174
  };
167
175
  export { noInterfaceMemberDocumentationRule };
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vZG9jcy9uby1pbnRlcmZhY2UtbWVtYmVyLWRvY3MvcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixjQUFjLEVBQ2QsZUFBZSxHQUNoQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pELE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsb0JBQW9CLEdBQ3JCLE1BQU0sdUJBQXVCLENBQUM7QUF1Qi9COzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsQ0FDMUIsR0FBbUMsRUFDbkMsY0FBK0MsRUFDcEIsRUFBRTtJQUM3QixJQUFJLEdBQUcsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ25CLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXZELE9BQU8sb0JBQW9CLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDN0MsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUN4QixXQUFtQixFQUNuQixjQUErQyxFQUN6QixFQUFFLENBQ3hCLGVBQWUsQ0FBQyxXQUFXLENBQUM7S0FDekIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUMxQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0FBRS9EOzs7Ozs7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LGtDQUFrQyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XG5cbmltcG9ydCB0eXBlIHsgQ29tbWVudCwgUGFyYW1ldGVyTWVtYmVyVGFnLCBUeXBlQW5ub3RhdGlvbk5vZGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5pbXBvcnQgeyBjcmVhdGVSdWxlRG9jdW1lbnRhdGlvbiB9IGZyb20gXCIuLi8uLi9jdXN0b20tcnVsZS1kb2N1bWVudGF0aW9uXCI7XG5pbXBvcnQge1xuICBidWlsZFJlbW92YWxSYW5nZSxcbiAgZ2V0Q29tbWVudExpbmVzLFxuICBnZXRDb21tZW50VGV4dCxcbiAgZ2V0SnNkb2NDb21tZW50LFxufSBmcm9tIFwiLi9jb21tZW50LXV0aWxpdGllc1wiO1xuaW1wb3J0IHsgcGFyc2VQYXJhbWV0ZXJUYWdMaW5lIH0gZnJvbSBcIi4vcGFyYW1ldGVyLXRhZ3NcIjtcbmltcG9ydCB7XG4gIGdldFBhcmFtZXRlclR5cGVMb29rdXAsXG4gIGlzTmFtZWRUeXBlUmVmZXJlbmNlLFxufSBmcm9tIFwiLi9wYXJhbWV0ZXItdXRpbGl0aWVzXCI7XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBSZXBvcnRNZW1iZXJEb2N1bWVudGF0aW9uQ29udGV4dCB7XG4gIC8qKiBDb21tZW50IGZpZWxkIHZhbHVlLiAqL1xuICBjb21tZW50OiBDb21tZW50O1xuXG4gIC8qKiBDb21tZW50U3RhcnQgZmllbGQgdmFsdWUuICovXG4gIGNvbW1lbnRTdGFydDogbnVtYmVyO1xuXG4gIC8qKiBDb21tZW50VGV4dCBmaWVsZCB2YWx1ZS4gKi9cbiAgY29tbWVudFRleHQ6IHN0cmluZztcblxuICAvKiogTWVtYmVyVGFncyBmaWVsZCB2YWx1ZS4gKi9cbiAgbWVtYmVyVGFnczogUGFyYW1ldGVyTWVtYmVyVGFnW107XG5cbiAgLyoqIE5vZGUgZmllbGQgdmFsdWUuICovXG4gIG5vZGU6IFJ1bGUuTm9kZTtcblxuICAvKiogU291cmNlQ29kZSBmaWVsZCB2YWx1ZS4gKi9cbiAgc291cmNlQ29kZTogUnVsZS5SdWxlQ29udGV4dFtcInNvdXJjZUNvZGVcIl07XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBwYXJhbWV0ZXIgbWVtYmVyIHRhZyBtYXRjaGVzIGEgbmFtZWQgdHlwZSByZWZlcmVuY2UuXG4gKiBAcGFyYW0gdGFnIFBhcnNlZCBwYXJhbWV0ZXIgbWVtYmVyIHRhZy5cbiAqIEBwYXJhbSBwYXJhbWV0ZXJUeXBlcyBQYXJhbWV0ZXIgdHlwZSBsb29rdXAuXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIHRhZyBtYXRjaGVzIGEgbmFtZWQgdHlwZSByZWZlcmVuY2UuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgb2sgPSBpc01hdGNoaW5nTWVtYmVyVGFnKHRhZywgcGFyYW1ldGVyVHlwZXMpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzTWF0Y2hpbmdNZW1iZXJUYWcgPSAoXG4gIHRhZzogUGFyYW1ldGVyTWVtYmVyVGFnIHwgdW5kZWZpbmVkLFxuICBwYXJhbWV0ZXJUeXBlczogTWFwPHN0cmluZywgVHlwZUFubm90YXRpb25Ob2RlPixcbik6IHRhZyBpcyBQYXJhbWV0ZXJNZW1iZXJUYWcgPT4ge1xuICBpZiAodGFnID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBwYXJhbWV0ZXJUeXBlID0gcGFyYW1ldGVyVHlwZXMuZ2V0KHRhZy5iYXNlbmFtZSk7XG5cbiAgcmV0dXJuIGlzTmFtZWRUeXBlUmVmZXJlbmNlKHBhcmFtZXRlclR5cGUpO1xufTtcblxuLyoqXG4gKiBDb2xsZWN0cyBtZW1iZXIgdGFncyBmcm9tIGEgSlNEb2MgY29tbWVudC5cbiAqIEBwYXJhbSBjb21tZW50VGV4dCBGdWxsIGNvbW1lbnQgdGV4dC5cbiAqIEBwYXJhbSBwYXJhbWV0ZXJUeXBlcyBQYXJhbWV0ZXIgdHlwZSBsb29rdXAuXG4gKiBAcmV0dXJucyBNZW1iZXIgdGFncyB0aGF0IG1hdGNoIG5hbWVkIHR5cGUgcmVmZXJlbmNlcy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCB0YWdzID0gY29sbGVjdE1lbWJlclRhZ3MoY29tbWVudFRleHQsIHBhcmFtZXRlclR5cGVzKTtcbiAqIGBgYFxuICovXG5jb25zdCBjb2xsZWN0TWVtYmVyVGFncyA9IChcbiAgY29tbWVudFRleHQ6IHN0cmluZyxcbiAgcGFyYW1ldGVyVHlwZXM6IE1hcDxzdHJpbmcsIFR5cGVBbm5vdGF0aW9uTm9kZT4sXG4pOiBQYXJhbWV0ZXJNZW1iZXJUYWdbXSA9PlxuICBnZXRDb21tZW50TGluZXMoY29tbWVudFRleHQpXG4gICAgLm1hcCgobGluZSkgPT4gcGFyc2VQYXJhbWV0ZXJUYWdMaW5lKGxpbmUpKVxuICAgIC5maWx0ZXIoKHRhZykgPT4gaXNNYXRjaGluZ01lbWJlclRhZyh0YWcsIHBhcmFtZXRlclR5cGVzKSk7XG5cbi8qKlxuICogUmVwb3J0cyBpbnRlcmZhY2UgbWVtYmVyIGRvY3VtZW50YXRpb24gZW50cmllcyBmb3IgcmVtb3ZhbC5cbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHQuXG4gKiBAcGFyYW0gZGV0YWlscyBDb2xsZWN0ZWQgcnVsZSBkZXRhaWxzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHJlcG9ydE1lbWJlckRvY3VtZW50YXRpb24oY29udGV4dCwgZGV0YWlscyk7XG4gKiBgYGBcbiAqL1xuY29uc3QgcmVwb3J0TWVtYmVyRG9jdW1lbnRhdGlvbiA9IChcbiAgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCxcbiAgZGV0YWlsczogUmVwb3J0TWVtYmVyRG9jdW1lbnRhdGlvbkNvbnRleHQsXG4pOiB2b2lkID0+IHtcbiAgY29uc3QgeyBjb21tZW50U3RhcnQsIGNvbW1lbnRUZXh0LCBtZW1iZXJUYWdzLCBub2RlIH0gPSBkZXRhaWxzO1xuXG4gIGZvciAoY29uc3QgdGFnIG9mIG1lbWJlclRhZ3MpIHtcbiAgICBjb25zdCByZW1vdmFsUmFuZ2UgPSBidWlsZFJlbW92YWxSYW5nZShjb21tZW50U3RhcnQsIGNvbW1lbnRUZXh0LCB0YWcubGluZSk7XG5cbiAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICBkYXRhOiB7IHBhcmFtZXRlck5hbWU6IHRhZy5mdWxsTmFtZSB9LFxuICAgICAgZml4OiAoZml4ZXI6IFJ1bGUuUnVsZUZpeGVyKTogUnVsZS5GaXggPT4gZml4ZXIucmVtb3ZlUmFuZ2UocmVtb3ZhbFJhbmdlKSxcbiAgICAgIG1lc3NhZ2VJZDogXCJpbnRlcmZhY2VNZW1iZXJEb2NcIixcbiAgICAgIG5vZGUsXG4gICAgfSk7XG4gIH1cbn07XG5cbi8qKlxuICogR2V0cyBwYXJhbWV0ZXIgdHlwZSByZWZlcmVuY2VzIGZvciBhIG5vZGUuXG4gKiBAcGFyYW0gbm9kZSBGdW5jdGlvbi1saWtlIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFBhcmFtZXRlciB0eXBlIGxvb2t1cCB3aGVuIHByZXNlbnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbG9va3VwID0gZ2V0UGFyYW1ldGVyVHlwZXMobm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0UGFyYW1ldGVyVHlwZXMgPSAoXG4gIG5vZGU6IFJ1bGUuTm9kZSxcbik6IE1hcDxzdHJpbmcsIFR5cGVBbm5vdGF0aW9uTm9kZT4gfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBwYXJhbWV0ZXJUeXBlcyA9IGdldFBhcmFtZXRlclR5cGVMb29rdXAobm9kZSk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlclR5cGVzLnNpemUgPiAwID8gcGFyYW1ldGVyVHlwZXMgOiB2b2lkIDA7XG59O1xuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBKU0RvYyBjb21tZW50IGRhdGEgZm9yIGEgbm9kZS5cbiAqIEBwYXJhbSBzb3VyY2VDb2RlIFNvdXJjZUNvZGUgd3JhcHBlci5cbiAqIEBwYXJhbSBub2RlIE5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIEpTRG9jIGRhdGEgd2hlbiBhdmFpbGFibGUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZGF0YSA9IGdldEpzZG9jRGF0YShzb3VyY2VDb2RlLCBub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRKc2RvY0RhdGEgPSAoXG4gIHNvdXJjZUNvZGU6IFJ1bGUuUnVsZUNvbnRleHRbXCJzb3VyY2VDb2RlXCJdLFxuICBub2RlOiBSdWxlLk5vZGUsXG4pOlxuICB8IHVuZGVmaW5lZFxuICB8IHtcbiAgICAgIC8qKiBDb21tZW50IGZpZWxkIHZhbHVlLiAqL1xuICAgICAgY29tbWVudDogQ29tbWVudDtcblxuICAgICAgLyoqIENvbW1lbnRTdGFydCBmaWVsZCB2YWx1ZS4gKi9cbiAgICAgIGNvbW1lbnRTdGFydDogbnVtYmVyO1xuXG4gICAgICAvKiogVGV4dCBmaWVsZCB2YWx1ZS4gKi9cbiAgICAgIHRleHQ6IHN0cmluZztcbiAgICB9ID0+IHtcbiAgY29uc3QgY29tbWVudCA9IGdldEpzZG9jQ29tbWVudChzb3VyY2VDb2RlLCBub2RlKTtcblxuICBpZiAoY29tbWVudCA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IGNvbW1lbnRTdGFydCA9IGNvbW1lbnQucmFuZ2U/LlswXTtcblxuICBpZiAodHlwZW9mIGNvbW1lbnRTdGFydCAhPT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCB0ZXh0ID0gZ2V0Q29tbWVudFRleHQoc291cmNlQ29kZSwgY29tbWVudCk7XG5cbiAgcmV0dXJuIHsgY29tbWVudCwgY29tbWVudFN0YXJ0LCB0ZXh0IH07XG59O1xuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBtZW1iZXIgdGFnIGNvbnRleHQgZm9yIGEgbm9kZS5cbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHQuXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBNZW1iZXIgdGFnIGNvbnRleHQgd2hlbiBhdmFpbGFibGUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgY29udGV4dCA9IHJlc29sdmVNZW1iZXJUYWdDb250ZXh0KGNvbnRleHQsIG5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IHJlc29sdmVNZW1iZXJUYWdDb250ZXh0ID0gKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuICBub2RlOiBSdWxlLk5vZGUsXG4pOlxuICB8IHVuZGVmaW5lZFxuICB8IHtcbiAgICAgIC8qKiBDb21tZW50IGZpZWxkIHZhbHVlLiAqL1xuICAgICAgY29tbWVudDogQ29tbWVudDtcblxuICAgICAgLyoqIENvbW1lbnRTdGFydCBmaWVsZCB2YWx1ZS4gKi9cbiAgICAgIGNvbW1lbnRTdGFydDogbnVtYmVyO1xuXG4gICAgICAvKiogQ29tbWVudFRleHQgZmllbGQgdmFsdWUuICovXG4gICAgICBjb21tZW50VGV4dDogc3RyaW5nO1xuXG4gICAgICAvKiogTWVtYmVyVGFncyBmaWVsZCB2YWx1ZS4gKi9cbiAgICAgIG1lbWJlclRhZ3M6IFBhcmFtZXRlck1lbWJlclRhZ1tdO1xuICAgIH0gPT4ge1xuICBjb25zdCBwYXJhbWV0ZXJUeXBlcyA9IGdldFBhcmFtZXRlclR5cGVzKG5vZGUpO1xuICBjb25zdCBqc2RvY0RhdGEgPSBnZXRKc2RvY0RhdGEoY29udGV4dC5zb3VyY2VDb2RlLCBub2RlKTtcblxuICBpZiAocGFyYW1ldGVyVHlwZXMgPT09IHZvaWQgMCB8fCBqc2RvY0RhdGEgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCBtZW1iZXJUYWdzID0gY29sbGVjdE1lbWJlclRhZ3MoanNkb2NEYXRhLnRleHQsIHBhcmFtZXRlclR5cGVzKTtcblxuICByZXR1cm4gbWVtYmVyVGFncy5sZW5ndGggPiAwXG4gICAgPyB7XG4gICAgICAgIGNvbW1lbnQ6IGpzZG9jRGF0YS5jb21tZW50LFxuICAgICAgICBjb21tZW50U3RhcnQ6IGpzZG9jRGF0YS5jb21tZW50U3RhcnQsXG4gICAgICAgIGNvbW1lbnRUZXh0OiBqc2RvY0RhdGEudGV4dCxcbiAgICAgICAgbWVtYmVyVGFncyxcbiAgICAgIH1cbiAgICA6IHZvaWQgMDtcbn07XG5cbi8qKlxuICogSGFuZGxlcyBmdW5jdGlvbi1saWtlIG5vZGVzIGZvciB0aGlzIHJ1bGUuXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBpbnNwZWN0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGhhbmRsZUZ1bmN0aW9uTGlrZShjb250ZXh0LCBub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBoYW5kbGVGdW5jdGlvbkxpa2UgPSAoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIG5vZGU6IFJ1bGUuTm9kZSxcbik6IHZvaWQgPT4ge1xuICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVNZW1iZXJUYWdDb250ZXh0KGNvbnRleHQsIG5vZGUpO1xuXG4gIGlmIChyZXNvbHZlZCA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmVwb3J0TWVtYmVyRG9jdW1lbnRhdGlvbihjb250ZXh0LCB7XG4gICAgY29tbWVudDogcmVzb2x2ZWQuY29tbWVudCxcbiAgICBjb21tZW50U3RhcnQ6IHJlc29sdmVkLmNvbW1lbnRTdGFydCxcbiAgICBjb21tZW50VGV4dDogcmVzb2x2ZWQuY29tbWVudFRleHQsXG4gICAgbWVtYmVyVGFnczogcmVzb2x2ZWQubWVtYmVyVGFncyxcbiAgICBub2RlLFxuICAgIHNvdXJjZUNvZGU6IGNvbnRleHQuc291cmNlQ29kZSxcbiAgfSk7XG59O1xuXG4vKiogRVNMaW50IHJ1bGUgZGlzYWxsb3dpbmcgaW50ZXJmYWNlIG1lbWJlciBkb2N1bWVudGF0aW9uIGluIGBAcGFyYW1gIHRhZ3MuICovXG5jb25zdCBub0ludGVyZmFjZU1lbWJlckRvY3VtZW50YXRpb25SdWxlOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIGNyZWF0ZShjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZS5SdWxlTGlzdGVuZXIge1xuICAgIGNvbnN0IGxpc3RlbmVyID0gKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQgPT4ge1xuICAgICAgaGFuZGxlRnVuY3Rpb25MaWtlKGNvbnRleHQsIG5vZGUpO1xuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgQXJyb3dGdW5jdGlvbkV4cHJlc3Npb246IGxpc3RlbmVyLFxuICAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbjogbGlzdGVuZXIsXG4gICAgICBGdW5jdGlvbkV4cHJlc3Npb246IGxpc3RlbmVyLFxuICAgICAgVFNDYWxsU2lnbmF0dXJlRGVjbGFyYXRpb246IGxpc3RlbmVyLFxuICAgICAgVFNDb25zdHJ1Y3RTaWduYXR1cmVEZWNsYXJhdGlvbjogbGlzdGVuZXIsXG4gICAgICBUU0RlY2xhcmVGdW5jdGlvbjogbGlzdGVuZXIsXG4gICAgICBUU0Z1bmN0aW9uVHlwZTogbGlzdGVuZXIsXG4gICAgICBUU01ldGhvZFNpZ25hdHVyZTogbGlzdGVuZXIsXG4gICAgfTtcbiAgfSxcbiAgbWV0YToge1xuICAgIGRvY3M6IGNyZWF0ZVJ1bGVEb2N1bWVudGF0aW9uKFxuICAgICAgXCJuby1pbnRlcmZhY2UtbWVtYmVyLWRvY3NcIixcbiAgICAgIFwiRGlzYWxsb3cgZG9jdW1lbnRpbmcgaW50ZXJmYWNlIG1lbWJlcnMgaW4gQHBhcmFtIHRhZ3M7IGRvY3VtZW50IHRoZW0gb24gdGhlIGludGVyZmFjZSBpbnN0ZWFkLlwiLFxuICAgICksXG4gICAgZml4YWJsZTogXCJjb2RlXCIsXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIGludGVyZmFjZU1lbWJlckRvYzpcbiAgICAgICAgXCJEb2N1bWVudCBpbnRlcmZhY2UgbWVtYmVycyBvbiB0aGUgaW50ZXJmYWNlIGluc3RlYWQgb2YgdXNpbmcgQHBhcmFtIGZvciB7e3BhcmFtZXRlck5hbWV9fS5cIixcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogXCJwcm9ibGVtXCIsXG4gIH0sXG59O1xuXG5leHBvcnQgeyBub0ludGVyZmFjZU1lbWJlckRvY3VtZW50YXRpb25SdWxlIH07XG4iXX0=
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vZG9jcy9uby1pbnRlcmZhY2UtbWVtYmVyLWRvY3MvcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixjQUFjLEVBQ2QsZUFBZSxHQUNoQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pELE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsb0JBQW9CLEdBQ3JCLE1BQU0sdUJBQXVCLENBQUM7QUFrRC9COzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsQ0FDMUIsR0FBbUMsRUFDbkMsY0FBK0MsRUFDcEIsRUFBRTtJQUM3QixJQUFJLEdBQUcsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ25CLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXZELE9BQU8sb0JBQW9CLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDN0MsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUN4QixXQUFtQixFQUNuQixjQUErQyxFQUN6QixFQUFFLENBQ3hCLGVBQWUsQ0FBQyxXQUFXLENBQUM7S0FDekIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUMxQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0FBRS9EOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSx5QkFBeUIsR0FBRyxDQUNoQyxPQUF5QixFQUN6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O1lBQ2xCLEdBQUcsRUFBRSwyRkFBMkY7U0FDakc7UUFDRCxPQUFPLEVBQUUsTUFBTTtRQUNmLFFBQVEsRUFBRTtZQUNSLGtCQUFrQixFQUNoQiw0RkFBNEY7U0FDL0Y7UUFDRCxNQUFNLEVBQUUsRUFBRTtRQUNWLElBQUksRUFBRSxTQUFTO0tBQ2hCO0NBQ0YsQ0FBQztBQUVGLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbW1lbnQsIFBhcmFtZXRlck1lbWJlclRhZywgVHlwZUFubm90YXRpb25Ob2RlIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuaW1wb3J0IHtcbiAgYnVpbGRSZW1vdmFsUmFuZ2UsXG4gIGdldENvbW1lbnRMaW5lcyxcbiAgZ2V0Q29tbWVudFRleHQsXG4gIGdldEpzZG9jQ29tbWVudCxcbn0gZnJvbSBcIi4vY29tbWVudC11dGlsaXRpZXNcIjtcbmltcG9ydCB7IHBhcnNlUGFyYW1ldGVyVGFnTGluZSB9IGZyb20gXCIuL3BhcmFtZXRlci10YWdzXCI7XG5pbXBvcnQge1xuICBnZXRQYXJhbWV0ZXJUeXBlTG9va3VwLFxuICBpc05hbWVkVHlwZVJlZmVyZW5jZSxcbn0gZnJvbSBcIi4vcGFyYW1ldGVyLXV0aWxpdGllc1wiO1xuXG4vKiogSlNEb2MgZGF0YSBleHRyYWN0ZWQgZnJvbSBhIGZ1bmN0aW9uLWxpa2Ugbm9kZS4gKi9cbmludGVyZmFjZSBKc2RvY0RhdGEge1xuICAvKiogQ29tbWVudCBmaWVsZCB2YWx1ZS4gKi9cbiAgY29tbWVudDogQ29tbWVudDtcblxuICAvKiogQ29tbWVudFN0YXJ0IGZpZWxkIHZhbHVlLiAqL1xuICBjb21tZW50U3RhcnQ6IG51bWJlcjtcblxuICAvKiogVGV4dCBmaWVsZCB2YWx1ZS4gKi9cbiAgdGV4dDogc3RyaW5nO1xufVxuXG4vKiogTWVtYmVyLXRhZyBjb250ZXh0IHJlc29sdmVkIGZvciByZXBvcnRpbmcuICovXG5pbnRlcmZhY2UgTWVtYmVyVGFnQ29udGV4dCB7XG4gIC8qKiBDb21tZW50IGZpZWxkIHZhbHVlLiAqL1xuICBjb21tZW50OiBDb21tZW50O1xuXG4gIC8qKiBDb21tZW50U3RhcnQgZmllbGQgdmFsdWUuICovXG4gIGNvbW1lbnRTdGFydDogbnVtYmVyO1xuXG4gIC8qKiBDb21tZW50VGV4dCBmaWVsZCB2YWx1ZS4gKi9cbiAgY29tbWVudFRleHQ6IHN0cmluZztcblxuICAvKiogTWVtYmVyVGFncyBmaWVsZCB2YWx1ZS4gKi9cbiAgbWVtYmVyVGFnczogUGFyYW1ldGVyTWVtYmVyVGFnW107XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBSZXBvcnRNZW1iZXJEb2N1bWVudGF0aW9uQ29udGV4dCB7XG4gIC8qKiBDb21tZW50IGZpZWxkIHZhbHVlLiAqL1xuICBjb21tZW50OiBDb21tZW50O1xuXG4gIC8qKiBDb21tZW50U3RhcnQgZmllbGQgdmFsdWUuICovXG4gIGNvbW1lbnRTdGFydDogbnVtYmVyO1xuXG4gIC8qKiBDb21tZW50VGV4dCBmaWVsZCB2YWx1ZS4gKi9cbiAgY29tbWVudFRleHQ6IHN0cmluZztcblxuICAvKiogTWVtYmVyVGFncyBmaWVsZCB2YWx1ZS4gKi9cbiAgbWVtYmVyVGFnczogUGFyYW1ldGVyTWVtYmVyVGFnW107XG5cbiAgLyoqIE5vZGUgZmllbGQgdmFsdWUuICovXG4gIG5vZGU6IFJ1bGUuTm9kZTtcblxuICAvKiogU291cmNlQ29kZSBmaWVsZCB2YWx1ZS4gKi9cbiAgc291cmNlQ29kZTogUnVsZS5SdWxlQ29udGV4dFtcInNvdXJjZUNvZGVcIl07XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBwYXJhbWV0ZXIgbWVtYmVyIHRhZyBtYXRjaGVzIGEgbmFtZWQgdHlwZSByZWZlcmVuY2UuXG4gKiBAcGFyYW0gdGFnIFBhcnNlZCBwYXJhbWV0ZXIgbWVtYmVyIHRhZy5cbiAqIEBwYXJhbSBwYXJhbWV0ZXJUeXBlcyBQYXJhbWV0ZXIgdHlwZSBsb29rdXAuXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIHRhZyBtYXRjaGVzIGEgbmFtZWQgdHlwZSByZWZlcmVuY2UuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgb2sgPSBpc01hdGNoaW5nTWVtYmVyVGFnKHRhZywgcGFyYW1ldGVyVHlwZXMpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzTWF0Y2hpbmdNZW1iZXJUYWcgPSAoXG4gIHRhZzogUGFyYW1ldGVyTWVtYmVyVGFnIHwgdW5kZWZpbmVkLFxuICBwYXJhbWV0ZXJUeXBlczogTWFwPHN0cmluZywgVHlwZUFubm90YXRpb25Ob2RlPixcbik6IHRhZyBpcyBQYXJhbWV0ZXJNZW1iZXJUYWcgPT4ge1xuICBpZiAodGFnID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBwYXJhbWV0ZXJUeXBlID0gcGFyYW1ldGVyVHlwZXMuZ2V0KHRhZy5iYXNlbmFtZSk7XG5cbiAgcmV0dXJuIGlzTmFtZWRUeXBlUmVmZXJlbmNlKHBhcmFtZXRlclR5cGUpO1xufTtcblxuLyoqXG4gKiBDb2xsZWN0cyBtZW1iZXIgdGFncyBmcm9tIGEgSlNEb2MgY29tbWVudC5cbiAqIEBwYXJhbSBjb21tZW50VGV4dCBGdWxsIGNvbW1lbnQgdGV4dC5cbiAqIEBwYXJhbSBwYXJhbWV0ZXJUeXBlcyBQYXJhbWV0ZXIgdHlwZSBsb29rdXAuXG4gKiBAcmV0dXJucyBNZW1iZXIgdGFncyB0aGF0IG1hdGNoIG5hbWVkIHR5cGUgcmVmZXJlbmNlcy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCB0YWdzID0gY29sbGVjdE1lbWJlclRhZ3MoY29tbWVudFRleHQsIHBhcmFtZXRlclR5cGVzKTtcbiAqIGBgYFxuICovXG5jb25zdCBjb2xsZWN0TWVtYmVyVGFncyA9IChcbiAgY29tbWVudFRleHQ6IHN0cmluZyxcbiAgcGFyYW1ldGVyVHlwZXM6IE1hcDxzdHJpbmcsIFR5cGVBbm5vdGF0aW9uTm9kZT4sXG4pOiBQYXJhbWV0ZXJNZW1iZXJUYWdbXSA9PlxuICBnZXRDb21tZW50TGluZXMoY29tbWVudFRleHQpXG4gICAgLm1hcCgobGluZSkgPT4gcGFyc2VQYXJhbWV0ZXJUYWdMaW5lKGxpbmUpKVxuICAgIC5maWx0ZXIoKHRhZykgPT4gaXNNYXRjaGluZ01lbWJlclRhZyh0YWcsIHBhcmFtZXRlclR5cGVzKSk7XG5cbi8qKlxuICogUmVwb3J0cyBpbnRlcmZhY2UgbWVtYmVyIGRvY3VtZW50YXRpb24gZW50cmllcyBmb3IgcmVtb3ZhbC5cbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHQuXG4gKiBAcGFyYW0gZGV0YWlscyBDb2xsZWN0ZWQgcnVsZSBkZXRhaWxzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHJlcG9ydE1lbWJlckRvY3VtZW50YXRpb24oY29udGV4dCwgZGV0YWlscyk7XG4gKiBgYGBcbiAqL1xuY29uc3QgcmVwb3J0TWVtYmVyRG9jdW1lbnRhdGlvbiA9IChcbiAgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCxcbiAgZGV0YWlsczogUmVwb3J0TWVtYmVyRG9jdW1lbnRhdGlvbkNvbnRleHQsXG4pOiB2b2lkID0+IHtcbiAgY29uc3QgeyBjb21tZW50U3RhcnQsIGNvbW1lbnRUZXh0LCBtZW1iZXJUYWdzLCBub2RlIH0gPSBkZXRhaWxzO1xuXG4gIGZvciAoY29uc3QgdGFnIG9mIG1lbWJlclRhZ3MpIHtcbiAgICBjb25zdCByZW1vdmFsUmFuZ2UgPSBidWlsZFJlbW92YWxSYW5nZShjb21tZW50U3RhcnQsIGNvbW1lbnRUZXh0LCB0YWcubGluZSk7XG5cbiAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICBkYXRhOiB7IHBhcmFtZXRlck5hbWU6IHRhZy5mdWxsTmFtZSB9LFxuICAgICAgZml4OiAoZml4ZXI6IFJ1bGUuUnVsZUZpeGVyKTogUnVsZS5GaXggPT4gZml4ZXIucmVtb3ZlUmFuZ2UocmVtb3ZhbFJhbmdlKSxcbiAgICAgIG1lc3NhZ2VJZDogXCJpbnRlcmZhY2VNZW1iZXJEb2NcIixcbiAgICAgIG5vZGUsXG4gICAgfSk7XG4gIH1cbn07XG5cbi8qKlxuICogR2V0cyBwYXJhbWV0ZXIgdHlwZSByZWZlcmVuY2VzIGZvciBhIG5vZGUuXG4gKiBAcGFyYW0gbm9kZSBGdW5jdGlvbi1saWtlIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFBhcmFtZXRlciB0eXBlIGxvb2t1cCB3aGVuIHByZXNlbnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbG9va3VwID0gZ2V0UGFyYW1ldGVyVHlwZXMobm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0UGFyYW1ldGVyVHlwZXMgPSAoXG4gIG5vZGU6IFJ1bGUuTm9kZSxcbik6IE1hcDxzdHJpbmcsIFR5cGVBbm5vdGF0aW9uTm9kZT4gfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBwYXJhbWV0ZXJUeXBlcyA9IGdldFBhcmFtZXRlclR5cGVMb29rdXAobm9kZSk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlclR5cGVzLnNpemUgPiAwID8gcGFyYW1ldGVyVHlwZXMgOiB2b2lkIDA7XG59O1xuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBKU0RvYyBjb21tZW50IGRhdGEgZm9yIGEgbm9kZS5cbiAqIEBwYXJhbSBzb3VyY2VDb2RlIFNvdXJjZUNvZGUgd3JhcHBlci5cbiAqIEBwYXJhbSBub2RlIE5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIEpTRG9jIGRhdGEgd2hlbiBhdmFpbGFibGUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZGF0YSA9IGdldEpzZG9jRGF0YShzb3VyY2VDb2RlLCBub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRKc2RvY0RhdGEgPSAoXG4gIHNvdXJjZUNvZGU6IFJ1bGUuUnVsZUNvbnRleHRbXCJzb3VyY2VDb2RlXCJdLFxuICBub2RlOiBSdWxlLk5vZGUsXG4pOiBKc2RvY0RhdGEgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBjb21tZW50ID0gZ2V0SnNkb2NDb21tZW50KHNvdXJjZUNvZGUsIG5vZGUpO1xuXG4gIGlmIChjb21tZW50ID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgY29tbWVudFN0YXJ0ID0gY29tbWVudC5yYW5nZT8uWzBdO1xuXG4gIGlmICh0eXBlb2YgY29tbWVudFN0YXJ0ICE9PSBcIm51bWJlclwiKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IHRleHQgPSBnZXRDb21tZW50VGV4dChzb3VyY2VDb2RlLCBjb21tZW50KTtcblxuICByZXR1cm4geyBjb21tZW50LCBjb21tZW50U3RhcnQsIHRleHQgfTtcbn07XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIG1lbWJlciB0YWcgY29udGV4dCBmb3IgYSBub2RlLlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBleGVjdXRpb24gY29udGV4dC5cbiAqIEBwYXJhbSBub2RlIE5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIE1lbWJlciB0YWcgY29udGV4dCB3aGVuIGF2YWlsYWJsZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjb250ZXh0ID0gcmVzb2x2ZU1lbWJlclRhZ0NvbnRleHQoY29udGV4dCwgbm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgcmVzb2x2ZU1lbWJlclRhZ0NvbnRleHQgPSAoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIG5vZGU6IFJ1bGUuTm9kZSxcbik6IE1lbWJlclRhZ0NvbnRleHQgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBwYXJhbWV0ZXJUeXBlcyA9IGdldFBhcmFtZXRlclR5cGVzKG5vZGUpO1xuICBjb25zdCBqc2RvY0RhdGEgPSBnZXRKc2RvY0RhdGEoY29udGV4dC5zb3VyY2VDb2RlLCBub2RlKTtcblxuICBpZiAocGFyYW1ldGVyVHlwZXMgPT09IHZvaWQgMCB8fCBqc2RvY0RhdGEgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCBtZW1iZXJUYWdzID0gY29sbGVjdE1lbWJlclRhZ3MoanNkb2NEYXRhLnRleHQsIHBhcmFtZXRlclR5cGVzKTtcblxuICByZXR1cm4gbWVtYmVyVGFncy5sZW5ndGggPiAwXG4gICAgPyB7XG4gICAgICAgIGNvbW1lbnQ6IGpzZG9jRGF0YS5jb21tZW50LFxuICAgICAgICBjb21tZW50U3RhcnQ6IGpzZG9jRGF0YS5jb21tZW50U3RhcnQsXG4gICAgICAgIGNvbW1lbnRUZXh0OiBqc2RvY0RhdGEudGV4dCxcbiAgICAgICAgbWVtYmVyVGFncyxcbiAgICAgIH1cbiAgICA6IHZvaWQgMDtcbn07XG5cbi8qKiBIYW5kbGVzIGZ1bmN0aW9uLWxpa2Ugbm9kZXMgZm9yIHRoZSBuby1pbnRlcmZhY2UtbWVtYmVyLWRvY3MgcnVsZS4gKi9cbmludGVyZmFjZSBOb2RlVmFsdWUge1xuICAvKipcbiAgICogVmFsdWUgZmllbGQgZm9yIG1ldGhvZCBkZWZpbml0aW9uczsgZnVuY3Rpb24tbGlrZSBub2RlcyBoYXZlIG5vIHZhbHVlIGZpZWxkLCBzbyB0aGlzIGlzIG9wdGlvbmFsLlxuICAgKi9cbiAgdmFsdWU/OiBSdWxlLk5vZGU7XG59XG5cbi8qKlxuICogSGFuZGxlcyBmdW5jdGlvbi1saWtlIG5vZGVzIGZvciB0aGlzIHJ1bGUuXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBpbnNwZWN0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGhhbmRsZUZ1bmN0aW9uTGlrZShjb250ZXh0LCBub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBoYW5kbGVGdW5jdGlvbkxpa2UgPSAoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIG5vZGU6IFJ1bGUuTm9kZSxcbik6IHZvaWQgPT4ge1xuICBjb25zdCBmdW5jdGlvbkxpa2VOb2RlID1cbiAgICBub2RlLnR5cGUgPT09IFwiTWV0aG9kRGVmaW5pdGlvblwiXG4gICAgICA/ICgobm9kZSBhcyB1bmtub3duIGFzIE5vZGVWYWx1ZSkudmFsdWUgPz8gbm9kZSlcbiAgICAgIDogbm9kZTtcblxuICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVNZW1iZXJUYWdDb250ZXh0KGNvbnRleHQsIGZ1bmN0aW9uTGlrZU5vZGUpO1xuXG4gIGlmIChyZXNvbHZlZCA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmVwb3J0TWVtYmVyRG9jdW1lbnRhdGlvbihjb250ZXh0LCB7XG4gICAgY29tbWVudDogcmVzb2x2ZWQuY29tbWVudCxcbiAgICBjb21tZW50U3RhcnQ6IHJlc29sdmVkLmNvbW1lbnRTdGFydCxcbiAgICBjb21tZW50VGV4dDogcmVzb2x2ZWQuY29tbWVudFRleHQsXG4gICAgbWVtYmVyVGFnczogcmVzb2x2ZWQubWVtYmVyVGFncyxcbiAgICBub2RlLFxuICAgIHNvdXJjZUNvZGU6IGNvbnRleHQuc291cmNlQ29kZSxcbiAgfSk7XG59O1xuXG4vKiogRVNMaW50IHJ1bGUgZGlzYWxsb3dpbmcgaW50ZXJmYWNlIG1lbWJlciBkb2N1bWVudGF0aW9uIGluIGBAcGFyYW1gIHRhZ3MuICovXG5jb25zdCBub0ludGVyZmFjZU1lbWJlckRvY3VtZW50YXRpb25SdWxlOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIGNyZWF0ZShjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZS5SdWxlTGlzdGVuZXIge1xuICAgIGNvbnN0IGxpc3RlbmVyID0gKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQgPT4ge1xuICAgICAgaGFuZGxlRnVuY3Rpb25MaWtlKGNvbnRleHQsIG5vZGUpO1xuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgQXJyb3dGdW5jdGlvbkV4cHJlc3Npb246IGxpc3RlbmVyLFxuICAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbjogbGlzdGVuZXIsXG4gICAgICBGdW5jdGlvbkV4cHJlc3Npb246IGxpc3RlbmVyLFxuICAgICAgTWV0aG9kRGVmaW5pdGlvbjogbGlzdGVuZXIsXG4gICAgICBUU0Fic3RyYWN0TWV0aG9kRGVmaW5pdGlvbjogbGlzdGVuZXIsXG4gICAgICBUU0NhbGxTaWduYXR1cmVEZWNsYXJhdGlvbjogbGlzdGVuZXIsXG4gICAgICBUU0NvbnN0cnVjdFNpZ25hdHVyZURlY2xhcmF0aW9uOiBsaXN0ZW5lcixcbiAgICAgIFRTRGVjbGFyZUZ1bmN0aW9uOiBsaXN0ZW5lcixcbiAgICAgIFRTRnVuY3Rpb25UeXBlOiBsaXN0ZW5lcixcbiAgICAgIFRTTWV0aG9kU2lnbmF0dXJlOiBsaXN0ZW5lcixcbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiRGlzYWxsb3cgZG9jdW1lbnRpbmcgaW50ZXJmYWNlIG1lbWJlcnMgaW4gQHBhcmFtIHRhZ3M7IGRvY3VtZW50IHRoZW0gb24gdGhlIGludGVyZmFjZSBpbnN0ZWFkLlwiLFxuICAgICAgcmVjb21tZW5kZWQ6IGZhbHNlLFxuICAgICAgdXJsOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9wYXJsb3RpL2VzbGludC1wbHVnaW4vYmxvYi9tYWluL2RvY3MvcnVsZXMvbm8taW50ZXJmYWNlLW1lbWJlci1kb2NzLm1kXCIsXG4gICAgfSxcbiAgICBmaXhhYmxlOiBcImNvZGVcIixcbiAgICBtZXNzYWdlczoge1xuICAgICAgaW50ZXJmYWNlTWVtYmVyRG9jOlxuICAgICAgICBcIkRvY3VtZW50IGludGVyZmFjZSBtZW1iZXJzIG9uIHRoZSBpbnRlcmZhY2UgaW5zdGVhZCBvZiB1c2luZyBAcGFyYW0gZm9yIHt7cGFyYW1ldGVyTmFtZX19LlwiLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiBcInByb2JsZW1cIixcbiAgfSxcbn07XG5cbmV4cG9ydCB7IG5vSW50ZXJmYWNlTWVtYmVyRG9jdW1lbnRhdGlvblJ1bGUgfTtcbiJdfQ==