@eui/mcp 1.0.3 → 1.3.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 (315) hide show
  1. package/README.md +117 -743
  2. package/dist/config/__tests__/schema.property.test.d.ts +2 -0
  3. package/dist/config/__tests__/schema.property.test.d.ts.map +1 -0
  4. package/dist/config/__tests__/schema.property.test.js +203 -0
  5. package/dist/config/__tests__/schema.property.test.js.map +1 -0
  6. package/dist/config/__tests__/schema.test.d.ts +2 -0
  7. package/dist/config/__tests__/schema.test.d.ts.map +1 -0
  8. package/dist/config/__tests__/schema.test.js +454 -0
  9. package/dist/config/__tests__/schema.test.js.map +1 -0
  10. package/dist/config/loader.js +4 -4
  11. package/dist/config/loader.js.map +1 -1
  12. package/dist/index.js +2 -2
  13. package/dist/index.js.map +1 -1
  14. package/dist/loader/__tests__/cache-manager.property.test.d.ts +2 -0
  15. package/dist/loader/__tests__/cache-manager.property.test.d.ts.map +1 -0
  16. package/dist/loader/__tests__/cache-manager.property.test.js +245 -0
  17. package/dist/loader/__tests__/cache-manager.property.test.js.map +1 -0
  18. package/dist/loader/__tests__/cache-manager.test.d.ts +2 -0
  19. package/dist/loader/__tests__/cache-manager.test.d.ts.map +1 -0
  20. package/dist/loader/__tests__/cache-manager.test.js +256 -0
  21. package/dist/loader/__tests__/cache-manager.test.js.map +1 -0
  22. package/dist/loader/__tests__/documentation-loader.integration.test.d.ts +2 -0
  23. package/dist/loader/__tests__/documentation-loader.integration.test.d.ts.map +1 -0
  24. package/dist/loader/__tests__/documentation-loader.integration.test.js +498 -0
  25. package/dist/loader/__tests__/documentation-loader.integration.test.js.map +1 -0
  26. package/dist/loader/__tests__/documentation-loader.property.test.d.ts +2 -0
  27. package/dist/loader/__tests__/documentation-loader.property.test.d.ts.map +1 -0
  28. package/dist/loader/__tests__/documentation-loader.property.test.js +258 -0
  29. package/dist/loader/__tests__/documentation-loader.property.test.js.map +1 -0
  30. package/dist/loader/__tests__/errors.test.d.ts +2 -0
  31. package/dist/loader/__tests__/errors.test.d.ts.map +1 -0
  32. package/dist/loader/__tests__/errors.test.js +132 -0
  33. package/dist/loader/__tests__/errors.test.js.map +1 -0
  34. package/dist/loader/__tests__/http-client.property.test.d.ts +2 -0
  35. package/dist/loader/__tests__/http-client.property.test.d.ts.map +1 -0
  36. package/dist/loader/__tests__/http-client.property.test.js +288 -0
  37. package/dist/loader/__tests__/http-client.property.test.js.map +1 -0
  38. package/dist/loader/__tests__/http-client.test.d.ts +2 -0
  39. package/dist/loader/__tests__/http-client.test.d.ts.map +1 -0
  40. package/dist/loader/__tests__/http-client.test.js +497 -0
  41. package/dist/loader/__tests__/http-client.test.js.map +1 -0
  42. package/dist/loader/__tests__/local-documentation-source.property.test.d.ts +2 -0
  43. package/dist/loader/__tests__/local-documentation-source.property.test.d.ts.map +1 -0
  44. package/dist/loader/__tests__/local-documentation-source.property.test.js +373 -0
  45. package/dist/loader/__tests__/local-documentation-source.property.test.js.map +1 -0
  46. package/dist/loader/__tests__/local-documentation-source.test.d.ts +2 -0
  47. package/dist/loader/__tests__/local-documentation-source.test.d.ts.map +1 -0
  48. package/dist/loader/__tests__/local-documentation-source.test.js +544 -0
  49. package/dist/loader/__tests__/local-documentation-source.test.js.map +1 -0
  50. package/dist/loader/__tests__/path-type-detector.property.test.d.ts +2 -0
  51. package/dist/loader/__tests__/path-type-detector.property.test.d.ts.map +1 -0
  52. package/dist/loader/__tests__/path-type-detector.property.test.js +245 -0
  53. package/dist/loader/__tests__/path-type-detector.property.test.js.map +1 -0
  54. package/dist/loader/__tests__/path-type-detector.test.d.ts +2 -0
  55. package/dist/loader/__tests__/path-type-detector.test.d.ts.map +1 -0
  56. package/dist/loader/__tests__/path-type-detector.test.js +390 -0
  57. package/dist/loader/__tests__/path-type-detector.test.js.map +1 -0
  58. package/dist/loader/__tests__/remote-documentation-source.property.test.d.ts +2 -0
  59. package/dist/loader/__tests__/remote-documentation-source.property.test.d.ts.map +1 -0
  60. package/dist/loader/__tests__/remote-documentation-source.property.test.js +462 -0
  61. package/dist/loader/__tests__/remote-documentation-source.property.test.js.map +1 -0
  62. package/dist/loader/__tests__/remote-documentation-source.test.d.ts +2 -0
  63. package/dist/loader/__tests__/remote-documentation-source.test.d.ts.map +1 -0
  64. package/dist/loader/__tests__/remote-documentation-source.test.js +707 -0
  65. package/dist/loader/__tests__/remote-documentation-source.test.js.map +1 -0
  66. package/dist/loader/remote-documentation-source.d.ts +0 -4
  67. package/dist/loader/remote-documentation-source.d.ts.map +1 -1
  68. package/dist/loader/remote-documentation-source.js +1 -4
  69. package/dist/loader/remote-documentation-source.js.map +1 -1
  70. package/dist/main.js +0 -0
  71. package/dist/main.js.map +1 -1
  72. package/dist/mcp/__tests__/server.property.test.d.ts +2 -0
  73. package/dist/mcp/__tests__/server.property.test.d.ts.map +1 -0
  74. package/dist/mcp/__tests__/server.property.test.js +286 -0
  75. package/dist/mcp/__tests__/server.property.test.js.map +1 -0
  76. package/dist/mcp/__tests__/server.test.d.ts +2 -0
  77. package/dist/mcp/__tests__/server.test.d.ts.map +1 -0
  78. package/dist/mcp/__tests__/server.test.js +101 -0
  79. package/dist/mcp/__tests__/server.test.js.map +1 -0
  80. package/dist/mcp/server.d.ts.map +1 -1
  81. package/dist/mcp/server.js +16 -4
  82. package/dist/mcp/server.js.map +1 -1
  83. package/dist/publish/__tests__/publish-utils.test.d.ts +5 -0
  84. package/dist/publish/__tests__/publish-utils.test.d.ts.map +1 -0
  85. package/dist/publish/__tests__/publish-utils.test.js +189 -0
  86. package/dist/publish/__tests__/publish-utils.test.js.map +1 -0
  87. package/dist/query/__tests__/deprecation-parser.test.d.ts +2 -0
  88. package/dist/query/__tests__/deprecation-parser.test.d.ts.map +1 -0
  89. package/dist/query/__tests__/deprecation-parser.test.js +154 -0
  90. package/dist/query/__tests__/deprecation-parser.test.js.map +1 -0
  91. package/dist/query/__tests__/deprecation-query.test.d.ts +2 -0
  92. package/dist/query/__tests__/deprecation-query.test.d.ts.map +1 -0
  93. package/dist/query/__tests__/deprecation-query.test.js +199 -0
  94. package/dist/query/__tests__/deprecation-query.test.js.map +1 -0
  95. package/dist/query/__tests__/index-builder-debug.test.d.ts +2 -0
  96. package/dist/query/__tests__/index-builder-debug.test.d.ts.map +1 -0
  97. package/dist/query/__tests__/index-builder-debug.test.js +34 -0
  98. package/dist/query/__tests__/index-builder-debug.test.js.map +1 -0
  99. package/dist/query/__tests__/index-builder.property.test.d.ts +2 -0
  100. package/dist/query/__tests__/index-builder.property.test.d.ts.map +1 -0
  101. package/dist/query/__tests__/index-builder.property.test.js +422 -0
  102. package/dist/query/__tests__/index-builder.property.test.js.map +1 -0
  103. package/dist/query/__tests__/index-builder.test.d.ts +2 -0
  104. package/dist/query/__tests__/index-builder.test.d.ts.map +1 -0
  105. package/dist/query/__tests__/index-builder.test.js +55 -0
  106. package/dist/query/__tests__/index-builder.test.js.map +1 -0
  107. package/dist/query/__tests__/result-formatter-deprecation.test.d.ts +2 -0
  108. package/dist/query/__tests__/result-formatter-deprecation.test.d.ts.map +1 -0
  109. package/dist/query/__tests__/result-formatter-deprecation.test.js +159 -0
  110. package/dist/query/__tests__/result-formatter-deprecation.test.js.map +1 -0
  111. package/dist/query/__tests__/result-formatter.integration.test.d.ts +2 -0
  112. package/dist/query/__tests__/result-formatter.integration.test.d.ts.map +1 -0
  113. package/dist/query/__tests__/result-formatter.integration.test.js +140 -0
  114. package/dist/query/__tests__/result-formatter.integration.test.js.map +1 -0
  115. package/dist/query/__tests__/result-formatter.property.test.d.ts +2 -0
  116. package/dist/query/__tests__/result-formatter.property.test.d.ts.map +1 -0
  117. package/dist/query/__tests__/result-formatter.property.test.js +163 -0
  118. package/dist/query/__tests__/result-formatter.property.test.js.map +1 -0
  119. package/dist/query/__tests__/result-formatter.test.d.ts +2 -0
  120. package/dist/query/__tests__/result-formatter.test.d.ts.map +1 -0
  121. package/dist/query/__tests__/result-formatter.test.js +85 -0
  122. package/dist/query/__tests__/result-formatter.test.js.map +1 -0
  123. package/dist/query/__tests__/search-engine.property.test.d.ts +2 -0
  124. package/dist/query/__tests__/search-engine.property.test.d.ts.map +1 -0
  125. package/dist/query/__tests__/search-engine.property.test.js +389 -0
  126. package/dist/query/__tests__/search-engine.property.test.js.map +1 -0
  127. package/dist/query/deprecation-parser.d.ts +46 -0
  128. package/dist/query/deprecation-parser.d.ts.map +1 -0
  129. package/dist/query/deprecation-parser.js +81 -0
  130. package/dist/query/deprecation-parser.js.map +1 -0
  131. package/dist/query/deprecation-query.d.ts +19 -0
  132. package/dist/query/deprecation-query.d.ts.map +1 -0
  133. package/dist/query/deprecation-query.js +73 -0
  134. package/dist/query/deprecation-query.js.map +1 -0
  135. package/dist/query/result-formatter.d.ts +27 -0
  136. package/dist/query/result-formatter.d.ts.map +1 -1
  137. package/dist/query/result-formatter.js +64 -5
  138. package/dist/query/result-formatter.js.map +1 -1
  139. package/dist/tools/__tests__/deprecation-tools.test.d.ts +2 -0
  140. package/dist/tools/__tests__/deprecation-tools.test.d.ts.map +1 -0
  141. package/dist/tools/__tests__/deprecation-tools.test.js +178 -0
  142. package/dist/tools/__tests__/deprecation-tools.test.js.map +1 -0
  143. package/dist/tools/__tests__/get-component-docs.property.test.d.ts +2 -0
  144. package/dist/tools/__tests__/get-component-docs.property.test.d.ts.map +1 -0
  145. package/dist/tools/__tests__/get-component-docs.property.test.js +594 -0
  146. package/dist/tools/__tests__/get-component-docs.property.test.js.map +1 -0
  147. package/dist/tools/__tests__/get-component-docs.test.d.ts +2 -0
  148. package/dist/tools/__tests__/get-component-docs.test.d.ts.map +1 -0
  149. package/dist/tools/__tests__/get-component-docs.test.js +137 -0
  150. package/dist/tools/__tests__/get-component-docs.test.js.map +1 -0
  151. package/dist/tools/__tests__/get-component-examples.property.test.d.ts +2 -0
  152. package/dist/tools/__tests__/get-component-examples.property.test.d.ts.map +1 -0
  153. package/dist/tools/__tests__/get-component-examples.property.test.js +245 -0
  154. package/dist/tools/__tests__/get-component-examples.property.test.js.map +1 -0
  155. package/dist/tools/__tests__/get-component-examples.test.d.ts +2 -0
  156. package/dist/tools/__tests__/get-component-examples.test.d.ts.map +1 -0
  157. package/dist/tools/__tests__/get-component-examples.test.js +128 -0
  158. package/dist/tools/__tests__/get-component-examples.test.js.map +1 -0
  159. package/dist/tools/__tests__/get-component-inputs.property.test.d.ts +2 -0
  160. package/dist/tools/__tests__/get-component-inputs.property.test.d.ts.map +1 -0
  161. package/dist/tools/__tests__/get-component-inputs.property.test.js +310 -0
  162. package/dist/tools/__tests__/get-component-inputs.property.test.js.map +1 -0
  163. package/dist/tools/__tests__/get-component-inputs.test.d.ts +2 -0
  164. package/dist/tools/__tests__/get-component-inputs.test.d.ts.map +1 -0
  165. package/dist/tools/__tests__/get-component-inputs.test.js +245 -0
  166. package/dist/tools/__tests__/get-component-inputs.test.js.map +1 -0
  167. package/dist/tools/__tests__/get-component-outputs.property.test.d.ts +2 -0
  168. package/dist/tools/__tests__/get-component-outputs.property.test.d.ts.map +1 -0
  169. package/dist/tools/__tests__/get-component-outputs.property.test.js +227 -0
  170. package/dist/tools/__tests__/get-component-outputs.property.test.js.map +1 -0
  171. package/dist/tools/__tests__/get-component-outputs.test.d.ts +2 -0
  172. package/dist/tools/__tests__/get-component-outputs.test.d.ts.map +1 -0
  173. package/dist/tools/__tests__/get-component-outputs.test.js +189 -0
  174. package/dist/tools/__tests__/get-component-outputs.test.js.map +1 -0
  175. package/dist/tools/__tests__/get-library-version.property.test.d.ts +2 -0
  176. package/dist/tools/__tests__/get-library-version.property.test.d.ts.map +1 -0
  177. package/dist/tools/__tests__/get-library-version.property.test.js +115 -0
  178. package/dist/tools/__tests__/get-library-version.property.test.js.map +1 -0
  179. package/dist/tools/__tests__/get-library-version.test.d.ts +2 -0
  180. package/dist/tools/__tests__/get-library-version.test.d.ts.map +1 -0
  181. package/dist/tools/__tests__/get-library-version.test.js +97 -0
  182. package/dist/tools/__tests__/get-library-version.test.js.map +1 -0
  183. package/dist/tools/__tests__/list-components.property.test.d.ts +2 -0
  184. package/dist/tools/__tests__/list-components.property.test.d.ts.map +1 -0
  185. package/dist/tools/__tests__/list-components.property.test.js +241 -0
  186. package/dist/tools/__tests__/list-components.property.test.js.map +1 -0
  187. package/dist/tools/__tests__/list-components.test.d.ts +2 -0
  188. package/dist/tools/__tests__/list-components.test.d.ts.map +1 -0
  189. package/dist/tools/__tests__/list-components.test.js +170 -0
  190. package/dist/tools/__tests__/list-components.test.js.map +1 -0
  191. package/dist/tools/__tests__/search-components.test.d.ts +2 -0
  192. package/dist/tools/__tests__/search-components.test.d.ts.map +1 -0
  193. package/dist/tools/__tests__/search-components.test.js +239 -0
  194. package/dist/tools/__tests__/search-components.test.js.map +1 -0
  195. package/dist/tools/get-deprecation-info.d.ts +42 -0
  196. package/dist/tools/get-deprecation-info.d.ts.map +1 -0
  197. package/dist/tools/get-deprecation-info.js +55 -0
  198. package/dist/tools/get-deprecation-info.js.map +1 -0
  199. package/dist/tools/get-library-version.d.ts +33 -0
  200. package/dist/tools/get-library-version.d.ts.map +1 -0
  201. package/dist/tools/get-library-version.js +62 -0
  202. package/dist/tools/get-library-version.js.map +1 -0
  203. package/dist/tools/index.d.ts +3 -0
  204. package/dist/tools/index.d.ts.map +1 -1
  205. package/dist/tools/index.js +3 -0
  206. package/dist/tools/index.js.map +1 -1
  207. package/dist/tools/list-deprecated.d.ts +47 -0
  208. package/dist/tools/list-deprecated.d.ts.map +1 -0
  209. package/dist/tools/list-deprecated.js +56 -0
  210. package/dist/tools/list-deprecated.js.map +1 -0
  211. package/dist/types/compodoc.d.ts +1 -0
  212. package/dist/types/compodoc.d.ts.map +1 -1
  213. package/dist/types/deprecation.d.ts +33 -0
  214. package/dist/types/deprecation.d.ts.map +1 -0
  215. package/dist/types/deprecation.js +5 -0
  216. package/dist/types/deprecation.js.map +1 -0
  217. package/dist/utils/__tests__/credential-masking.property.test.d.ts +2 -0
  218. package/dist/utils/__tests__/credential-masking.property.test.d.ts.map +1 -0
  219. package/dist/utils/__tests__/credential-masking.property.test.js +145 -0
  220. package/dist/utils/__tests__/credential-masking.property.test.js.map +1 -0
  221. package/dist/utils/__tests__/credential-masking.test.d.ts +2 -0
  222. package/dist/utils/__tests__/credential-masking.test.d.ts.map +1 -0
  223. package/dist/utils/__tests__/credential-masking.test.js +188 -0
  224. package/dist/utils/__tests__/credential-masking.test.js.map +1 -0
  225. package/dist/utils/__tests__/errors.test.d.ts +2 -0
  226. package/dist/utils/__tests__/errors.test.d.ts.map +1 -0
  227. package/dist/utils/__tests__/errors.test.js +110 -0
  228. package/dist/utils/__tests__/errors.test.js.map +1 -0
  229. package/dist/utils/__tests__/integration.test.d.ts +2 -0
  230. package/dist/utils/__tests__/integration.test.d.ts.map +1 -0
  231. package/dist/utils/__tests__/integration.test.js +142 -0
  232. package/dist/utils/__tests__/integration.test.js.map +1 -0
  233. package/dist/utils/__tests__/logger.test.d.ts +2 -0
  234. package/dist/utils/__tests__/logger.test.d.ts.map +1 -0
  235. package/dist/utils/__tests__/logger.test.js +119 -0
  236. package/dist/utils/__tests__/logger.test.js.map +1 -0
  237. package/dist/utils/__tests__/retry.test.d.ts +2 -0
  238. package/dist/utils/__tests__/retry.test.d.ts.map +1 -0
  239. package/dist/utils/__tests__/retry.test.js +84 -0
  240. package/dist/utils/__tests__/retry.test.js.map +1 -0
  241. package/dist/utils/credential-masking.js +4 -4
  242. package/dist/utils/credential-masking.js.map +1 -1
  243. package/dist/version/__tests__/changelog-commit-grouping.property.test.d.ts +2 -0
  244. package/dist/version/__tests__/changelog-commit-grouping.property.test.d.ts.map +1 -0
  245. package/dist/version/__tests__/changelog-commit-grouping.property.test.js +297 -0
  246. package/dist/version/__tests__/changelog-commit-grouping.property.test.js.map +1 -0
  247. package/dist/version/__tests__/changelog-commit-parsing.property.test.d.ts +2 -0
  248. package/dist/version/__tests__/changelog-commit-parsing.property.test.d.ts.map +1 -0
  249. package/dist/version/__tests__/changelog-commit-parsing.property.test.js +396 -0
  250. package/dist/version/__tests__/changelog-commit-parsing.property.test.js.map +1 -0
  251. package/dist/version/__tests__/changelog-file-updates.property.test.d.ts +11 -0
  252. package/dist/version/__tests__/changelog-file-updates.property.test.d.ts.map +1 -0
  253. package/dist/version/__tests__/changelog-file-updates.property.test.js +452 -0
  254. package/dist/version/__tests__/changelog-file-updates.property.test.js.map +1 -0
  255. package/dist/version/__tests__/dry-run-action.property.test.d.ts +8 -0
  256. package/dist/version/__tests__/dry-run-action.property.test.d.ts.map +1 -0
  257. package/dist/version/__tests__/dry-run-action.property.test.js +50 -0
  258. package/dist/version/__tests__/dry-run-action.property.test.js.map +1 -0
  259. package/dist/version/__tests__/dry-run-changelog.property.test.d.ts +8 -0
  260. package/dist/version/__tests__/dry-run-changelog.property.test.d.ts.map +1 -0
  261. package/dist/version/__tests__/dry-run-changelog.property.test.js +53 -0
  262. package/dist/version/__tests__/dry-run-changelog.property.test.js.map +1 -0
  263. package/dist/version/__tests__/dry-run-utils.test.d.ts +7 -0
  264. package/dist/version/__tests__/dry-run-utils.test.d.ts.map +1 -0
  265. package/dist/version/__tests__/dry-run-utils.test.js +205 -0
  266. package/dist/version/__tests__/dry-run-utils.test.js.map +1 -0
  267. package/dist/version/__tests__/dry-run-version.property.test.d.ts +8 -0
  268. package/dist/version/__tests__/dry-run-version.property.test.d.ts.map +1 -0
  269. package/dist/version/__tests__/dry-run-version.property.test.js +59 -0
  270. package/dist/version/__tests__/dry-run-version.property.test.js.map +1 -0
  271. package/dist/version/__tests__/git-tag-annotation.property.test.d.ts +11 -0
  272. package/dist/version/__tests__/git-tag-annotation.property.test.d.ts.map +1 -0
  273. package/dist/version/__tests__/git-tag-annotation.property.test.js +271 -0
  274. package/dist/version/__tests__/git-tag-annotation.property.test.js.map +1 -0
  275. package/dist/version/__tests__/git-tag-format.property.test.d.ts +11 -0
  276. package/dist/version/__tests__/git-tag-format.property.test.d.ts.map +1 -0
  277. package/dist/version/__tests__/git-tag-format.property.test.js +411 -0
  278. package/dist/version/__tests__/git-tag-format.property.test.js.map +1 -0
  279. package/dist/version/__tests__/git-tag-utils.test.d.ts +2 -0
  280. package/dist/version/__tests__/git-tag-utils.test.d.ts.map +1 -0
  281. package/dist/version/__tests__/git-tag-utils.test.js +142 -0
  282. package/dist/version/__tests__/git-tag-utils.test.js.map +1 -0
  283. package/dist/version/__tests__/npm-tag-selection.property.test.d.ts +2 -0
  284. package/dist/version/__tests__/npm-tag-selection.property.test.d.ts.map +1 -0
  285. package/dist/version/__tests__/npm-tag-selection.property.test.js +79 -0
  286. package/dist/version/__tests__/npm-tag-selection.property.test.js.map +1 -0
  287. package/dist/version/__tests__/release-title-format.property.test.d.ts +11 -0
  288. package/dist/version/__tests__/release-title-format.property.test.d.ts.map +1 -0
  289. package/dist/version/__tests__/release-title-format.property.test.js +422 -0
  290. package/dist/version/__tests__/release-title-format.property.test.js.map +1 -0
  291. package/dist/version/__tests__/release-utils.test.d.ts +7 -0
  292. package/dist/version/__tests__/release-utils.test.d.ts.map +1 -0
  293. package/dist/version/__tests__/release-utils.test.js +176 -0
  294. package/dist/version/__tests__/release-utils.test.js.map +1 -0
  295. package/dist/version/__tests__/rollback-changelog.property.test.d.ts +8 -0
  296. package/dist/version/__tests__/rollback-changelog.property.test.d.ts.map +1 -0
  297. package/dist/version/__tests__/rollback-changelog.property.test.js +61 -0
  298. package/dist/version/__tests__/rollback-changelog.property.test.js.map +1 -0
  299. package/dist/version/__tests__/rollback-utils.test.d.ts +7 -0
  300. package/dist/version/__tests__/rollback-utils.test.d.ts.map +1 -0
  301. package/dist/version/__tests__/rollback-utils.test.js +74 -0
  302. package/dist/version/__tests__/rollback-utils.test.js.map +1 -0
  303. package/dist/version/__tests__/version-manager.property.test.d.ts +2 -0
  304. package/dist/version/__tests__/version-manager.property.test.d.ts.map +1 -0
  305. package/dist/version/__tests__/version-manager.property.test.js +143 -0
  306. package/dist/version/__tests__/version-manager.property.test.js.map +1 -0
  307. package/dist/version/__tests__/version-manager.test.d.ts +2 -0
  308. package/dist/version/__tests__/version-manager.test.d.ts.map +1 -0
  309. package/dist/version/__tests__/version-manager.test.js +203 -0
  310. package/dist/version/__tests__/version-manager.test.js.map +1 -0
  311. package/dist/version/version-manager.d.ts.map +1 -1
  312. package/dist/version/version-manager.js +0 -4
  313. package/dist/version/version-manager.js.map +1 -1
  314. package/package.json +1 -1
  315. package/dist/test-error.ts +0 -1
@@ -0,0 +1,452 @@
1
+ /**
2
+ * Property-based tests for changelog file updates
3
+ *
4
+ * **Property 10: Changelog File Update Idempotence**
5
+ * **Validates: Requirements 7.4, 7.5**
6
+ *
7
+ * For any existing CHANGELOG.md file, adding a new version section should preserve
8
+ * all existing version sections and place the new section at the top.
9
+ */
10
+ import { describe, it, expect } from '@jest/globals';
11
+ import fc from 'fast-check';
12
+ import { addChangelogEntry, parseChangelog, extractVersions, hasVersion, createChangelog, } from '../changelog-file-utils.js';
13
+ // Arbitrary generators for property-based testing
14
+ /**
15
+ * Generates a valid semantic version
16
+ */
17
+ const versionArb = fc.record({
18
+ major: fc.nat(100),
19
+ minor: fc.nat(100),
20
+ patch: fc.nat(100),
21
+ }).map(v => `${v.major}.${v.minor}.${v.patch}`);
22
+ /**
23
+ * Generates a valid date string in YYYY-MM-DD format
24
+ */
25
+ const dateArb = fc.date({
26
+ min: new Date('2020-01-01'),
27
+ max: new Date('2030-12-31'),
28
+ }).map(d => d.toISOString().split('T')[0]);
29
+ /**
30
+ * Generates an array of change descriptions
31
+ */
32
+ const changesArb = fc.array(fc.string({ minLength: 5, maxLength: 100 }).filter(s => s.trim().length > 0), { minLength: 0, maxLength: 10 });
33
+ /**
34
+ * Generates a changelog entry
35
+ */
36
+ const changelogEntryArb = fc.record({
37
+ version: versionArb,
38
+ date: dateArb,
39
+ features: fc.option(changesArb, { nil: undefined }),
40
+ fixes: fc.option(changesArb, { nil: undefined }),
41
+ breaking: fc.option(changesArb, { nil: undefined }),
42
+ other: fc.option(changesArb, { nil: undefined }),
43
+ });
44
+ /**
45
+ * Generates an array of unique changelog entries (no duplicate versions)
46
+ */
47
+ const uniqueEntriesArb = fc.array(changelogEntryArb, { minLength: 1, maxLength: 10 })
48
+ .chain(entries => {
49
+ // Ensure all versions are unique
50
+ const uniqueVersions = new Set();
51
+ const uniqueEntries = [];
52
+ for (const entry of entries) {
53
+ if (!uniqueVersions.has(entry.version)) {
54
+ uniqueVersions.add(entry.version);
55
+ uniqueEntries.push(entry);
56
+ }
57
+ }
58
+ return fc.constant(uniqueEntries);
59
+ })
60
+ .filter(entries => entries.length > 0);
61
+ describe('Feature: pipeline-release-support, Property 10: Changelog File Update Idempotence', () => {
62
+ describe('Version Preservation', () => {
63
+ /**
64
+ * For any existing changelog and new entry, all existing versions should be preserved
65
+ */
66
+ it('should preserve all existing version sections when adding a new entry', () => {
67
+ fc.assert(fc.property(uniqueEntriesArb, changelogEntryArb, (existingEntries, newEntry) => {
68
+ // Ensure new entry has a unique version
69
+ const existingVersions = existingEntries.map(e => e.version);
70
+ if (existingVersions.includes(newEntry.version)) {
71
+ // Make version unique by appending to major version
72
+ const maxMajor = Math.max(...existingVersions.map(v => parseInt(v.split('.')[0])));
73
+ newEntry = { ...newEntry, version: `${maxMajor + 1}.0.0` };
74
+ }
75
+ // Create changelog with existing entries
76
+ let changelog = createChangelog(existingEntries[0]);
77
+ for (let i = 1; i < existingEntries.length; i++) {
78
+ changelog = addChangelogEntry(changelog, existingEntries[i]);
79
+ }
80
+ // Get versions before adding new entry
81
+ const versionsBefore = extractVersions(changelog);
82
+ // Add new entry
83
+ const updatedChangelog = addChangelogEntry(changelog, newEntry);
84
+ // Get versions after adding new entry
85
+ const versionsAfter = extractVersions(updatedChangelog);
86
+ // Property: All existing versions should still be present
87
+ for (const version of versionsBefore) {
88
+ expect(versionsAfter).toContain(version);
89
+ }
90
+ // Property: New version should be added
91
+ expect(versionsAfter).toContain(newEntry.version);
92
+ // Property: Total count should be original + 1
93
+ expect(versionsAfter.length).toBe(versionsBefore.length + 1);
94
+ return true;
95
+ }), { numRuns: 100 });
96
+ });
97
+ /**
98
+ * For any changelog, all section content should be preserved
99
+ */
100
+ it('should preserve all section content when adding a new entry', () => {
101
+ fc.assert(fc.property(uniqueEntriesArb, changelogEntryArb, (existingEntries, newEntry) => {
102
+ // Ensure new entry has a unique version
103
+ const existingVersions = existingEntries.map(e => e.version);
104
+ if (existingVersions.includes(newEntry.version)) {
105
+ const maxMajor = Math.max(...existingVersions.map(v => parseInt(v.split('.')[0])));
106
+ newEntry = { ...newEntry, version: `${maxMajor + 1}.0.0` };
107
+ }
108
+ // Create changelog with existing entries
109
+ let changelog = createChangelog(existingEntries[0]);
110
+ for (let i = 1; i < existingEntries.length; i++) {
111
+ changelog = addChangelogEntry(changelog, existingEntries[i]);
112
+ }
113
+ // Parse sections before
114
+ const sectionsBefore = parseChangelog(changelog);
115
+ // Add new entry
116
+ const updatedChangelog = addChangelogEntry(changelog, newEntry);
117
+ // Parse sections after
118
+ const sectionsAfter = parseChangelog(updatedChangelog);
119
+ // Property: All existing sections should still be present
120
+ for (const sectionBefore of sectionsBefore) {
121
+ const matchingSection = sectionsAfter.find(s => s.version === sectionBefore.version);
122
+ expect(matchingSection).toBeDefined();
123
+ expect(matchingSection?.content).toBe(sectionBefore.content);
124
+ }
125
+ return true;
126
+ }), { numRuns: 100 });
127
+ });
128
+ });
129
+ describe('Top Placement', () => {
130
+ /**
131
+ * For any changelog and new entry, the new entry should be placed at the top
132
+ */
133
+ it('should place new version section at the top of the changelog', () => {
134
+ fc.assert(fc.property(uniqueEntriesArb, changelogEntryArb, (existingEntries, newEntry) => {
135
+ // Ensure new entry has a unique version
136
+ const existingVersions = existingEntries.map(e => e.version);
137
+ if (existingVersions.includes(newEntry.version)) {
138
+ const maxMajor = Math.max(...existingVersions.map(v => parseInt(v.split('.')[0])));
139
+ newEntry = { ...newEntry, version: `${maxMajor + 1}.0.0` };
140
+ }
141
+ // Create changelog with existing entries
142
+ let changelog = createChangelog(existingEntries[0]);
143
+ for (let i = 1; i < existingEntries.length; i++) {
144
+ changelog = addChangelogEntry(changelog, existingEntries[i]);
145
+ }
146
+ // Add new entry
147
+ const updatedChangelog = addChangelogEntry(changelog, newEntry);
148
+ // Get versions after adding
149
+ const versionsAfter = extractVersions(updatedChangelog);
150
+ // Property: New version should be first in the list
151
+ expect(versionsAfter[0]).toBe(newEntry.version);
152
+ return true;
153
+ }), { numRuns: 100 });
154
+ });
155
+ /**
156
+ * For any changelog, the new entry should appear before all existing entries
157
+ */
158
+ it('should place new entry before all existing entries in the file', () => {
159
+ fc.assert(fc.property(uniqueEntriesArb, changelogEntryArb, (existingEntries, newEntry) => {
160
+ // Ensure new entry has a unique version
161
+ const existingVersions = existingEntries.map(e => e.version);
162
+ if (existingVersions.includes(newEntry.version)) {
163
+ const maxMajor = Math.max(...existingVersions.map(v => parseInt(v.split('.')[0])));
164
+ newEntry = { ...newEntry, version: `${maxMajor + 1}.0.0` };
165
+ }
166
+ // Create changelog with existing entries
167
+ let changelog = createChangelog(existingEntries[0]);
168
+ for (let i = 1; i < existingEntries.length; i++) {
169
+ changelog = addChangelogEntry(changelog, existingEntries[i]);
170
+ }
171
+ // Add new entry
172
+ const updatedChangelog = addChangelogEntry(changelog, newEntry);
173
+ // Find position of new version header in the file
174
+ const newVersionHeaderRegex = new RegExp(`## \\[${newEntry.version.replace(/\./g, '\\.')}\\]`);
175
+ const newVersionMatch = updatedChangelog.match(newVersionHeaderRegex);
176
+ expect(newVersionMatch).not.toBeNull();
177
+ const newVersionIndex = newVersionMatch ? updatedChangelog.indexOf(newVersionMatch[0]) : -1;
178
+ // Find positions of all existing version headers
179
+ for (const existingEntry of existingEntries) {
180
+ const existingVersionRegex = new RegExp(`## \\[${existingEntry.version.replace(/\./g, '\\.')}\\]`);
181
+ const existingVersionMatch = updatedChangelog.match(existingVersionRegex);
182
+ if (existingVersionMatch) {
183
+ const existingVersionIndex = updatedChangelog.indexOf(existingVersionMatch[0]);
184
+ // Property: New version should appear before existing versions
185
+ expect(newVersionIndex).toBeLessThan(existingVersionIndex);
186
+ }
187
+ }
188
+ return true;
189
+ }), { numRuns: 100 });
190
+ });
191
+ });
192
+ describe('Idempotence', () => {
193
+ /**
194
+ * For any changelog and entry, adding the same entry twice should not duplicate it
195
+ */
196
+ it('should not duplicate entries when adding the same version twice', () => {
197
+ fc.assert(fc.property(uniqueEntriesArb, changelogEntryArb, (existingEntries, newEntry) => {
198
+ // Ensure new entry has a unique version
199
+ const existingVersions = existingEntries.map(e => e.version);
200
+ if (existingVersions.includes(newEntry.version)) {
201
+ const maxMajor = Math.max(...existingVersions.map(v => parseInt(v.split('.')[0])));
202
+ newEntry = { ...newEntry, version: `${maxMajor + 1}.0.0` };
203
+ }
204
+ // Create changelog with existing entries
205
+ let changelog = createChangelog(existingEntries[0]);
206
+ for (let i = 1; i < existingEntries.length; i++) {
207
+ changelog = addChangelogEntry(changelog, existingEntries[i]);
208
+ }
209
+ // Add new entry once
210
+ const changelog1 = addChangelogEntry(changelog, newEntry);
211
+ // Add same entry again
212
+ const changelog2 = addChangelogEntry(changelog1, newEntry);
213
+ // Property: Second addition should not change the changelog
214
+ expect(changelog2).toBe(changelog1);
215
+ // Property: Version should appear exactly once
216
+ const versions = extractVersions(changelog2);
217
+ const occurrences = versions.filter(v => v === newEntry.version).length;
218
+ expect(occurrences).toBe(1);
219
+ return true;
220
+ }), { numRuns: 100 });
221
+ });
222
+ /**
223
+ * For any changelog and entry, adding the same entry multiple times is idempotent
224
+ */
225
+ it('should be idempotent when adding the same entry multiple times', () => {
226
+ fc.assert(fc.property(uniqueEntriesArb, changelogEntryArb, fc.integer({ min: 2, max: 5 }), (existingEntries, newEntry, repetitions) => {
227
+ // Ensure new entry has a unique version
228
+ const existingVersions = existingEntries.map(e => e.version);
229
+ if (existingVersions.includes(newEntry.version)) {
230
+ const maxMajor = Math.max(...existingVersions.map(v => parseInt(v.split('.')[0])));
231
+ newEntry = { ...newEntry, version: `${maxMajor + 1}.0.0` };
232
+ }
233
+ // Create changelog with existing entries
234
+ let changelog = createChangelog(existingEntries[0]);
235
+ for (let i = 1; i < existingEntries.length; i++) {
236
+ changelog = addChangelogEntry(changelog, existingEntries[i]);
237
+ }
238
+ // Add new entry once
239
+ const changelogAfterFirst = addChangelogEntry(changelog, newEntry);
240
+ // Add same entry multiple times
241
+ let changelogAfterMultiple = changelogAfterFirst;
242
+ for (let i = 0; i < repetitions; i++) {
243
+ changelogAfterMultiple = addChangelogEntry(changelogAfterMultiple, newEntry);
244
+ }
245
+ // Property: Multiple additions should produce same result as single addition
246
+ expect(changelogAfterMultiple).toBe(changelogAfterFirst);
247
+ return true;
248
+ }), { numRuns: 100 });
249
+ });
250
+ /**
251
+ * For any existing version in changelog, attempting to add it again returns unchanged
252
+ */
253
+ it('should return unchanged changelog when adding an existing version', () => {
254
+ fc.assert(fc.property(uniqueEntriesArb, fc.integer({ min: 0, max: 9 }), (existingEntries, indexToReAdd) => {
255
+ // Create changelog with existing entries
256
+ let changelog = createChangelog(existingEntries[0]);
257
+ for (let i = 1; i < existingEntries.length; i++) {
258
+ changelog = addChangelogEntry(changelog, existingEntries[i]);
259
+ }
260
+ // Try to add an existing entry again
261
+ const entryToReAdd = existingEntries[indexToReAdd % existingEntries.length];
262
+ const updatedChangelog = addChangelogEntry(changelog, entryToReAdd);
263
+ // Property: Changelog should remain unchanged
264
+ expect(updatedChangelog).toBe(changelog);
265
+ return true;
266
+ }), { numRuns: 100 });
267
+ });
268
+ });
269
+ describe('Order Preservation', () => {
270
+ /**
271
+ * For any changelog, the relative order of existing entries should be preserved
272
+ */
273
+ it('should preserve the relative order of existing entries', () => {
274
+ fc.assert(fc.property(uniqueEntriesArb, changelogEntryArb, (existingEntries, newEntry) => {
275
+ // Ensure new entry has a unique version
276
+ const existingVersions = existingEntries.map(e => e.version);
277
+ if (existingVersions.includes(newEntry.version)) {
278
+ const maxMajor = Math.max(...existingVersions.map(v => parseInt(v.split('.')[0])));
279
+ newEntry = { ...newEntry, version: `${maxMajor + 1}.0.0` };
280
+ }
281
+ // Create changelog with existing entries
282
+ let changelog = createChangelog(existingEntries[0]);
283
+ for (let i = 1; i < existingEntries.length; i++) {
284
+ changelog = addChangelogEntry(changelog, existingEntries[i]);
285
+ }
286
+ // Get order before
287
+ const versionsBefore = extractVersions(changelog);
288
+ // Add new entry
289
+ const updatedChangelog = addChangelogEntry(changelog, newEntry);
290
+ // Get order after
291
+ const versionsAfter = extractVersions(updatedChangelog);
292
+ // Property: Relative order of existing versions should be preserved
293
+ // (they should appear in the same order, just shifted by 1 position)
294
+ for (let i = 0; i < versionsBefore.length; i++) {
295
+ expect(versionsAfter[i + 1]).toBe(versionsBefore[i]);
296
+ }
297
+ return true;
298
+ }), { numRuns: 100 });
299
+ });
300
+ /**
301
+ * For any sequence of additions, the order should reflect the addition sequence
302
+ */
303
+ it('should maintain order reflecting the sequence of additions', () => {
304
+ fc.assert(fc.property(uniqueEntriesArb, (entries) => {
305
+ // Add entries one by one
306
+ let changelog = createChangelog(entries[0]);
307
+ for (let i = 1; i < entries.length; i++) {
308
+ changelog = addChangelogEntry(changelog, entries[i]);
309
+ }
310
+ // Get final order
311
+ const finalVersions = extractVersions(changelog);
312
+ // Property: Versions should be in reverse order of addition
313
+ // (most recently added first)
314
+ for (let i = 0; i < entries.length; i++) {
315
+ const expectedVersion = entries[entries.length - 1 - i].version;
316
+ expect(finalVersions[i]).toBe(expectedVersion);
317
+ }
318
+ return true;
319
+ }), { numRuns: 100 });
320
+ });
321
+ });
322
+ describe('Edge Cases', () => {
323
+ /**
324
+ * For any entry, adding to an empty changelog should work correctly
325
+ */
326
+ it('should handle adding to a changelog with only a title', () => {
327
+ fc.assert(fc.property(changelogEntryArb, (entry) => {
328
+ const emptyChangelog = '# Changelog\n\n';
329
+ const updatedChangelog = addChangelogEntry(emptyChangelog, entry);
330
+ // Property: Should contain the new version
331
+ expect(hasVersion(updatedChangelog, entry.version)).toBe(true);
332
+ // Property: Should have exactly one version
333
+ const versions = extractVersions(updatedChangelog);
334
+ expect(versions.length).toBe(1);
335
+ expect(versions[0]).toBe(entry.version);
336
+ return true;
337
+ }), { numRuns: 100 });
338
+ });
339
+ /**
340
+ * For any entry with empty change arrays, formatting should still work
341
+ */
342
+ it('should handle entries with no changes', () => {
343
+ fc.assert(fc.property(versionArb, dateArb, (version, date) => {
344
+ const emptyEntry = {
345
+ version,
346
+ date,
347
+ features: undefined,
348
+ fixes: undefined,
349
+ breaking: undefined,
350
+ other: undefined,
351
+ };
352
+ const changelog = createChangelog(emptyEntry);
353
+ // Property: Should create valid changelog
354
+ expect(changelog).toContain('# Changelog');
355
+ expect(changelog).toContain(`## [${version}]`);
356
+ expect(changelog).toContain(date);
357
+ return true;
358
+ }), { numRuns: 100 });
359
+ });
360
+ /**
361
+ * For any changelog, adding entries with same version but different content is idempotent
362
+ */
363
+ it('should ignore content differences when version already exists', () => {
364
+ fc.assert(fc.property(changelogEntryArb, changelogEntryArb, (entry1, entry2) => {
365
+ // Make entry2 have same version as entry1 but different content
366
+ const entry2Modified = {
367
+ ...entry2,
368
+ version: entry1.version,
369
+ };
370
+ // Create changelog with first entry
371
+ const changelog = createChangelog(entry1);
372
+ // Try to add second entry with same version
373
+ const updatedChangelog = addChangelogEntry(changelog, entry2Modified);
374
+ // Property: Changelog should remain unchanged
375
+ expect(updatedChangelog).toBe(changelog);
376
+ // Property: Should still have only one version
377
+ const versions = extractVersions(updatedChangelog);
378
+ expect(versions.length).toBe(1);
379
+ return true;
380
+ }), { numRuns: 100 });
381
+ });
382
+ /**
383
+ * For any large number of entries, the operation should remain efficient
384
+ */
385
+ it('should handle large changelogs efficiently', () => {
386
+ fc.assert(fc.property(fc.array(changelogEntryArb, { minLength: 20, maxLength: 50 })
387
+ .chain(entries => {
388
+ // Ensure all versions are unique
389
+ const uniqueVersions = new Set();
390
+ const uniqueEntries = [];
391
+ for (const entry of entries) {
392
+ if (!uniqueVersions.has(entry.version)) {
393
+ uniqueVersions.add(entry.version);
394
+ uniqueEntries.push(entry);
395
+ }
396
+ }
397
+ return fc.constant(uniqueEntries);
398
+ })
399
+ .filter(entries => entries.length >= 20), (entries) => {
400
+ // Create changelog with many entries
401
+ let changelog = createChangelog(entries[0]);
402
+ for (let i = 1; i < entries.length; i++) {
403
+ changelog = addChangelogEntry(changelog, entries[i]);
404
+ }
405
+ // Property: All versions should be present
406
+ const versions = extractVersions(changelog);
407
+ expect(versions.length).toBe(entries.length);
408
+ // Property: All entries should be accounted for
409
+ for (const entry of entries) {
410
+ expect(versions).toContain(entry.version);
411
+ }
412
+ return true;
413
+ }), { numRuns: 20 } // Fewer runs for performance
414
+ );
415
+ });
416
+ });
417
+ describe('Content Integrity', () => {
418
+ /**
419
+ * For any entry with special characters, content should be preserved
420
+ */
421
+ it('should preserve special characters in change descriptions', () => {
422
+ fc.assert(fc.property(versionArb, dateArb, fc.array(fc.constantFrom('Add support for @mentions', 'Fix issue #123', 'Update version to 1.2.3', 'Remove deprecated API (breaking)', 'Add feature: new component', 'Fix: nested colons work', 'Update [config] settings', 'Add {new} syntax support', 'Handle "quoted" strings', "Handle 'single quotes'", 'Handle <html> tags', 'Handle & ampersands', 'Handle * asterisks *', 'Handle _underscores_'), { minLength: 1, maxLength: 5 }), (version, date, features) => {
423
+ const entry = {
424
+ version,
425
+ date,
426
+ features,
427
+ };
428
+ const changelog = createChangelog(entry);
429
+ // Property: All special characters should be preserved
430
+ for (const feature of features) {
431
+ expect(changelog).toContain(feature);
432
+ }
433
+ return true;
434
+ }), { numRuns: 100 });
435
+ });
436
+ /**
437
+ * For any entry, the date format should be preserved
438
+ */
439
+ it('should preserve date format in changelog entries', () => {
440
+ fc.assert(fc.property(changelogEntryArb, (entry) => {
441
+ const changelog = createChangelog(entry);
442
+ // Property: Date should appear in the changelog
443
+ expect(changelog).toContain(entry.date);
444
+ // Property: Date should be in the header line
445
+ const headerRegex = new RegExp(`## \\[${entry.version.replace(/\./g, '\\.')}\\] - ${entry.date}`);
446
+ expect(changelog).toMatch(headerRegex);
447
+ return true;
448
+ }), { numRuns: 100 });
449
+ });
450
+ });
451
+ });
452
+ //# sourceMappingURL=changelog-file-updates.property.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changelog-file-updates.property.test.js","sourceRoot":"","sources":["../../../src/version/__tests__/changelog-file-updates.property.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,UAAU,EACV,eAAe,GAEhB,MAAM,4BAA4B,CAAC;AAEpC,kDAAkD;AAElD;;GAEG;AACH,MAAM,UAAU,GAAG,EAAE,CAAC,MAAM,CAAC;IAC3B,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;IAClB,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;IAClB,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;CACnB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AAEhD;;GAEG;AACH,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC;IACtB,GAAG,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;IAC3B,GAAG,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;CAC5B,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3C;;GAEG;AACH,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CACzB,EAAE,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAC5E,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,iBAAiB,GAAG,EAAE,CAAC,MAAM,CAAC;IAClC,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;IACnD,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;IAChD,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;IACnD,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;CACjD,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,gBAAgB,GAAG,EAAE,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;KAClF,KAAK,CAAC,OAAO,CAAC,EAAE;IACf,iCAAiC;IACjC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,MAAM,aAAa,GAAqB,EAAE,CAAC;IAE3C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAClC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACpC,CAAC,CAAC;KACD,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAEzC,QAAQ,CAAC,mFAAmF,EAAE,GAAG,EAAE;IACjG,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC;;WAEG;QACH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;YAC/E,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,gBAAgB,EAChB,iBAAiB,EACjB,CAAC,eAAe,EAAE,QAAQ,EAAE,EAAE;gBAC5B,wCAAwC;gBACxC,MAAM,gBAAgB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC7D,IAAI,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAChD,oDAAoD;oBACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnF,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;gBAC7D,CAAC;gBAED,yCAAyC;gBACzC,IAAI,SAAS,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAChD,SAAS,GAAG,iBAAiB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/D,CAAC;gBAED,uCAAuC;gBACvC,MAAM,cAAc,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;gBAElD,gBAAgB;gBAChB,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAEhE,sCAAsC;gBACtC,MAAM,aAAa,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC;gBAExD,0DAA0D;gBAC1D,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;oBACrC,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBAC3C,CAAC;gBAED,wCAAwC;gBACxC,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAElD,+CAA+C;gBAC/C,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAE7D,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH;;WAEG;QACH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;YACrE,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,gBAAgB,EAChB,iBAAiB,EACjB,CAAC,eAAe,EAAE,QAAQ,EAAE,EAAE;gBAC5B,wCAAwC;gBACxC,MAAM,gBAAgB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC7D,IAAI,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnF,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;gBAC7D,CAAC;gBAED,yCAAyC;gBACzC,IAAI,SAAS,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAChD,SAAS,GAAG,iBAAiB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/D,CAAC;gBAED,wBAAwB;gBACxB,MAAM,cAAc,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAEjD,gBAAgB;gBAChB,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAEhE,uBAAuB;gBACvB,MAAM,aAAa,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;gBAEvD,0DAA0D;gBAC1D,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;oBAC3C,MAAM,eAAe,GAAG,aAAa,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,aAAa,CAAC,OAAO,CACzC,CAAC;oBAEF,MAAM,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE,CAAC;oBACtC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC/D,CAAC;gBAED,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B;;WAEG;QACH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;YACtE,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,gBAAgB,EAChB,iBAAiB,EACjB,CAAC,eAAe,EAAE,QAAQ,EAAE,EAAE;gBAC5B,wCAAwC;gBACxC,MAAM,gBAAgB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC7D,IAAI,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnF,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;gBAC7D,CAAC;gBAED,yCAAyC;gBACzC,IAAI,SAAS,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAChD,SAAS,GAAG,iBAAiB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/D,CAAC;gBAED,gBAAgB;gBAChB,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAEhE,4BAA4B;gBAC5B,MAAM,aAAa,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC;gBAExD,oDAAoD;gBACpD,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAEhD,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH;;WAEG;QACH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;YACxE,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,gBAAgB,EAChB,iBAAiB,EACjB,CAAC,eAAe,EAAE,QAAQ,EAAE,EAAE;gBAC5B,wCAAwC;gBACxC,MAAM,gBAAgB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC7D,IAAI,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnF,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;gBAC7D,CAAC;gBAED,yCAAyC;gBACzC,IAAI,SAAS,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAChD,SAAS,GAAG,iBAAiB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/D,CAAC;gBAED,gBAAgB;gBAChB,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAEhE,kDAAkD;gBAClD,MAAM,qBAAqB,GAAG,IAAI,MAAM,CAAC,SAAS,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC/F,MAAM,eAAe,GAAG,gBAAgB,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBACtE,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAEvC,MAAM,eAAe,GAAG,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE5F,iDAAiD;gBACjD,KAAK,MAAM,aAAa,IAAI,eAAe,EAAE,CAAC;oBAC5C,MAAM,oBAAoB,GAAG,IAAI,MAAM,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;oBACnG,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;oBAE1E,IAAI,oBAAoB,EAAE,CAAC;wBACzB,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;wBAE/E,+DAA+D;wBAC/D,MAAM,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;oBAC7D,CAAC;gBACH,CAAC;gBAED,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B;;WAEG;QACH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;YACzE,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,gBAAgB,EAChB,iBAAiB,EACjB,CAAC,eAAe,EAAE,QAAQ,EAAE,EAAE;gBAC5B,wCAAwC;gBACxC,MAAM,gBAAgB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC7D,IAAI,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnF,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;gBAC7D,CAAC;gBAED,yCAAyC;gBACzC,IAAI,SAAS,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAChD,SAAS,GAAG,iBAAiB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/D,CAAC;gBAED,qBAAqB;gBACrB,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAE1D,uBAAuB;gBACvB,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBAE3D,4DAA4D;gBAC5D,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAEpC,+CAA+C;gBAC/C,MAAM,QAAQ,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;gBAC7C,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;gBACxE,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAE5B,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH;;WAEG;QACH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;YACxE,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,gBAAgB,EAChB,iBAAiB,EACjB,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAC9B,CAAC,eAAe,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE;gBACzC,wCAAwC;gBACxC,MAAM,gBAAgB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC7D,IAAI,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnF,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;gBAC7D,CAAC;gBAED,yCAAyC;gBACzC,IAAI,SAAS,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAChD,SAAS,GAAG,iBAAiB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/D,CAAC;gBAED,qBAAqB;gBACrB,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAEnE,gCAAgC;gBAChC,IAAI,sBAAsB,GAAG,mBAAmB,CAAC;gBACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrC,sBAAsB,GAAG,iBAAiB,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;gBAC/E,CAAC;gBAED,6EAA6E;gBAC7E,MAAM,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBAEzD,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH;;WAEG;QACH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;YAC3E,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,gBAAgB,EAChB,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAC9B,CAAC,eAAe,EAAE,YAAY,EAAE,EAAE;gBAChC,yCAAyC;gBACzC,IAAI,SAAS,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAChD,SAAS,GAAG,iBAAiB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/D,CAAC;gBAED,qCAAqC;gBACrC,MAAM,YAAY,GAAG,eAAe,CAAC,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;gBAC5E,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;gBAEpE,8CAA8C;gBAC9C,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAEzC,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC;;WAEG;QACH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAChE,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,gBAAgB,EAChB,iBAAiB,EACjB,CAAC,eAAe,EAAE,QAAQ,EAAE,EAAE;gBAC5B,wCAAwC;gBACxC,MAAM,gBAAgB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC7D,IAAI,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnF,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;gBAC7D,CAAC;gBAED,yCAAyC;gBACzC,IAAI,SAAS,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAChD,SAAS,GAAG,iBAAiB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/D,CAAC;gBAED,mBAAmB;gBACnB,MAAM,cAAc,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;gBAElD,gBAAgB;gBAChB,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAEhE,kBAAkB;gBAClB,MAAM,aAAa,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC;gBAExD,oEAAoE;gBACpE,qEAAqE;gBACrE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/C,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvD,CAAC;gBAED,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH;;WAEG;QACH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;YACpE,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,gBAAgB,EAChB,CAAC,OAAO,EAAE,EAAE;gBACV,yBAAyB;gBACzB,IAAI,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACxC,SAAS,GAAG,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvD,CAAC;gBAED,kBAAkB;gBAClB,MAAM,aAAa,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;gBAEjD,4DAA4D;gBAC5D,8BAA8B;gBAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACxC,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;oBAChE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACjD,CAAC;gBAED,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B;;WAEG;QACH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC/D,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,iBAAiB,EACjB,CAAC,KAAK,EAAE,EAAE;gBACR,MAAM,cAAc,GAAG,iBAAiB,CAAC;gBAEzC,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;gBAElE,2CAA2C;gBAC3C,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAE/D,4CAA4C;gBAC5C,MAAM,QAAQ,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC;gBACnD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAExC,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH;;WAEG;QACH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,UAAU,EACV,OAAO,EACP,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;gBAChB,MAAM,UAAU,GAAmB;oBACjC,OAAO;oBACP,IAAI;oBACJ,QAAQ,EAAE,SAAS;oBACnB,KAAK,EAAE,SAAS;oBAChB,QAAQ,EAAE,SAAS;oBACnB,KAAK,EAAE,SAAS;iBACjB,CAAC;gBAEF,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;gBAE9C,0CAA0C;gBAC1C,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;gBAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,OAAO,OAAO,GAAG,CAAC,CAAC;gBAC/C,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAElC,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH;;WAEG;QACH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;YACvE,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,iBAAiB,EACjB,iBAAiB,EACjB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;gBACjB,gEAAgE;gBAChE,MAAM,cAAc,GAAG;oBACrB,GAAG,MAAM;oBACT,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB,CAAC;gBAEF,oCAAoC;gBACpC,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;gBAE1C,4CAA4C;gBAC5C,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;gBAEtE,8CAA8C;gBAC9C,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAEzC,+CAA+C;gBAC/C,MAAM,QAAQ,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC;gBACnD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAEhC,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH;;WAEG;QACH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,EAAE,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;iBAC1D,KAAK,CAAC,OAAO,CAAC,EAAE;gBACf,iCAAiC;gBACjC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;gBACzC,MAAM,aAAa,GAAqB,EAAE,CAAC;gBAE3C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;wBACvC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBAClC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC;gBAED,OAAO,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YACpC,CAAC,CAAC;iBACD,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,EAC1C,CAAC,OAAO,EAAE,EAAE;gBACV,qCAAqC;gBACrC,IAAI,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACxC,SAAS,GAAG,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvD,CAAC;gBAED,2CAA2C;gBAC3C,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;gBAC5C,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAE7C,gDAAgD;gBAChD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC5C,CAAC;gBAED,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,6BAA6B;aAC9C,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC;;WAEG;QACH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;YACnE,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,UAAU,EACV,OAAO,EACP,EAAE,CAAC,KAAK,CACN,EAAE,CAAC,YAAY,CACb,2BAA2B,EAC3B,gBAAgB,EAChB,yBAAyB,EACzB,kCAAkC,EAClC,4BAA4B,EAC5B,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,CACvB,EACD,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAC/B,EACD,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;gBAC1B,MAAM,KAAK,GAAmB;oBAC5B,OAAO;oBACP,IAAI;oBACJ,QAAQ;iBACT,CAAC;gBAEF,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;gBAEzC,uDAAuD;gBACvD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;oBAC/B,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACvC,CAAC;gBAED,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH;;WAEG;QACH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,QAAQ,CACT,iBAAiB,EACjB,CAAC,KAAK,EAAE,EAAE;gBACR,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;gBAEzC,gDAAgD;gBAChD,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAExC,8CAA8C;gBAC9C,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClG,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBAEvC,OAAO,IAAI,CAAC;YACd,CAAC,CACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Property Tests for Dry Run Action Reporting
3
+ *
4
+ * Property 17: Dry Run Action Reporting
5
+ * Validates: Requirements 15.5
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=dry-run-action.property.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dry-run-action.property.test.d.ts","sourceRoot":"","sources":["../../../src/version/__tests__/dry-run-action.property.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Property Tests for Dry Run Action Reporting
3
+ *
4
+ * Property 17: Dry Run Action Reporting
5
+ * Validates: Requirements 15.5
6
+ */
7
+ import { describe, it, expect } from '@jest/globals';
8
+ import fc from 'fast-check';
9
+ import { createDryRunSummary } from '../dry-run-utils.js';
10
+ describe('Feature: pipeline-release-support, Property 17: Dry Run Action Reporting', () => {
11
+ const actionArb = fc.record({
12
+ type: fc.constantFrom('version', 'changelog', 'git', 'npm', 'release'),
13
+ description: fc.stringOf(fc.char(), { minLength: 5, maxLength: 50 }),
14
+ details: fc.option(fc.dictionary(fc.stringOf(fc.char(), { minLength: 1, maxLength: 10 }), fc.oneof(fc.string(), fc.integer(), fc.boolean())), { nil: undefined }),
15
+ });
16
+ it('should create summary with all actions preserved', () => {
17
+ fc.assert(fc.property(fc.array(actionArb, { minLength: 0, maxLength: 20 }), (actions) => {
18
+ const summary = createDryRunSummary(actions);
19
+ // Should preserve all actions
20
+ expect(summary.actions).toEqual(actions);
21
+ expect(summary.totalActions).toBe(actions.length);
22
+ // Should have timestamp
23
+ expect(summary.timestamp).toBeTruthy();
24
+ expect(new Date(summary.timestamp).getTime()).toBeGreaterThan(0);
25
+ }));
26
+ });
27
+ it('should count actions correctly', () => {
28
+ fc.assert(fc.property(fc.array(actionArb, { minLength: 0, maxLength: 50 }), (actions) => {
29
+ const summary = createDryRunSummary(actions);
30
+ expect(summary.totalActions).toBe(actions.length);
31
+ expect(summary.actions.length).toBe(actions.length);
32
+ }));
33
+ });
34
+ it('should handle empty action list', () => {
35
+ const summary = createDryRunSummary([]);
36
+ expect(summary.actions).toEqual([]);
37
+ expect(summary.totalActions).toBe(0);
38
+ expect(summary.timestamp).toBeTruthy();
39
+ });
40
+ it('should preserve action types and descriptions', () => {
41
+ fc.assert(fc.property(fc.array(actionArb, { minLength: 1, maxLength: 10 }), (actions) => {
42
+ const summary = createDryRunSummary(actions);
43
+ for (let i = 0; i < actions.length; i++) {
44
+ expect(summary.actions[i].type).toBe(actions[i].type);
45
+ expect(summary.actions[i].description).toBe(actions[i].description);
46
+ }
47
+ }));
48
+ });
49
+ });
50
+ //# sourceMappingURL=dry-run-action.property.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dry-run-action.property.test.js","sourceRoot":"","sources":["../../../src/version/__tests__/dry-run-action.property.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Property Tests for Dry Run Changelog Generation
3
+ *
4
+ * Property 16: Dry Run Changelog Generation
5
+ * Validates: Requirements 15.3
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=dry-run-changelog.property.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dry-run-changelog.property.test.d.ts","sourceRoot":"","sources":["../../../src/version/__tests__/dry-run-changelog.property.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Property Tests for Dry Run Changelog Generation
3
+ *
4
+ * Property 16: Dry Run Changelog Generation
5
+ * Validates: Requirements 15.3
6
+ */
7
+ import { describe, it, expect } from '@jest/globals';
8
+ import fc from 'fast-check';
9
+ import { generateDryRunChangelog } from '../changelog-utils.js';
10
+ describe('Feature: pipeline-release-support, Property 16: Dry Run Changelog Generation', () => {
11
+ const commitArb = fc.record({
12
+ type: fc.constantFrom('feat', 'fix', 'docs', 'chore'),
13
+ scope: fc.option(fc.stringOf(fc.char(), { minLength: 1, maxLength: 10 }), { nil: undefined }),
14
+ message: fc.stringOf(fc.char(), { minLength: 5, maxLength: 50 }),
15
+ breaking: fc.boolean(),
16
+ }).map(({ type, scope, message, breaking }) => {
17
+ const scopePart = scope ? `(${scope})` : '';
18
+ const breakingPart = breaking ? '!' : '';
19
+ return `${type}${scopePart}${breakingPart}: ${message}`;
20
+ });
21
+ it('should generate preview without modifying input commits', () => {
22
+ fc.assert(fc.property(fc.stringOf(fc.char(), { minLength: 5, maxLength: 10 }), fc.array(commitArb, { minLength: 1, maxLength: 20 }), (version, commits) => {
23
+ const commitsCopy = [...commits];
24
+ const result = generateDryRunChangelog(version, commits);
25
+ // Should return dry run result
26
+ expect(result.isDryRun).toBe(true);
27
+ expect(result.version).toBe(version);
28
+ expect(result.preview).toBeTruthy();
29
+ // Should not modify input
30
+ expect(commits).toEqual(commitsCopy);
31
+ // Preview should contain version
32
+ expect(result.preview).toContain(version);
33
+ }));
34
+ });
35
+ it('should include all commit types in grouped commits', () => {
36
+ fc.assert(fc.property(fc.stringOf(fc.char(), { minLength: 5, maxLength: 10 }), fc.array(commitArb, { minLength: 1, maxLength: 20 }), (version, commits) => {
37
+ const result = generateDryRunChangelog(version, commits);
38
+ // All commits should be grouped
39
+ const totalGrouped = Object.values(result.commits).reduce((sum, arr) => sum + arr.length, 0);
40
+ // Should group at least some commits (conventional format)
41
+ expect(totalGrouped).toBeGreaterThanOrEqual(0);
42
+ }));
43
+ });
44
+ it('should be idempotent - calling twice produces same preview', () => {
45
+ fc.assert(fc.property(fc.stringOf(fc.char(), { minLength: 5, maxLength: 10 }), fc.array(commitArb, { minLength: 1, maxLength: 10 }), (version, commits) => {
46
+ const result1 = generateDryRunChangelog(version, commits);
47
+ const result2 = generateDryRunChangelog(version, commits);
48
+ expect(result1.version).toBe(result2.version);
49
+ expect(result1.preview).toBe(result2.preview);
50
+ }));
51
+ });
52
+ });
53
+ //# sourceMappingURL=dry-run-changelog.property.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dry-run-changelog.property.test.js","sourceRoot":"","sources":["../../../src/version/__tests__/dry-run-changelog.property.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Unit Tests for Dry Run Utilities
3
+ *
4
+ * Tests the dry run mode detection and configuration functions.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=dry-run-utils.test.d.ts.map