@mnaoumov/typescript-dev-toolkit 0.0.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +15 -1
  3. package/bundlers/esbuild-impl/change-extension-plugin/package.json +6 -0
  4. package/bundlers/esbuild-impl/custom-esbuild-options-plugin/package.json +6 -0
  5. package/bundlers/esbuild-impl/fix-esm-plugin/package.json +6 -0
  6. package/bundlers/esbuild-impl/index/package.json +6 -0
  7. package/bundlers/esbuild-impl/package.json +6 -0
  8. package/bundlers/esbuild-impl/preprocess-plugin/package.json +6 -0
  9. package/bundlers/esbuild-impl/svelte-wrapper-plugin/package.json +6 -0
  10. package/bundlers/index/package.json +6 -0
  11. package/bundlers/package.json +6 -0
  12. package/dist/lib/cjs/build.cjs +191 -0
  13. package/dist/lib/cjs/build.d.cts +59 -0
  14. package/dist/lib/cjs/bundlers/esbuild-impl/change-extension-plugin.cjs +139 -0
  15. package/dist/lib/cjs/bundlers/esbuild-impl/change-extension-plugin.d.cts +25 -0
  16. package/dist/lib/cjs/bundlers/esbuild-impl/custom-esbuild-options-plugin.cjs +96 -0
  17. package/dist/lib/cjs/bundlers/esbuild-impl/custom-esbuild-options-plugin.d.cts +14 -0
  18. package/dist/lib/cjs/bundlers/esbuild-impl/fix-esm-plugin.cjs +106 -0
  19. package/dist/lib/cjs/bundlers/esbuild-impl/fix-esm-plugin.d.cts +13 -0
  20. package/dist/lib/cjs/bundlers/esbuild-impl/index.cjs +111 -0
  21. package/dist/lib/cjs/bundlers/esbuild-impl/index.d.cts +6 -0
  22. package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.cjs +211 -0
  23. package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.d.cts +143 -0
  24. package/dist/lib/cjs/bundlers/esbuild-impl/svelte-wrapper-plugin.cjs +129 -0
  25. package/dist/lib/cjs/bundlers/esbuild-impl/svelte-wrapper-plugin.d.cts +14 -0
  26. package/dist/lib/cjs/bundlers/index.cjs +99 -0
  27. package/dist/lib/cjs/bundlers/index.d.cts +2 -0
  28. package/dist/lib/cjs/check-project-types.cjs +163 -0
  29. package/dist/lib/cjs/check-project-types.d.cts +92 -0
  30. package/dist/lib/cjs/cli-utils.cjs +276 -0
  31. package/dist/lib/cjs/cli-utils.d.cts +123 -0
  32. package/dist/lib/cjs/code-generator.cjs +96 -0
  33. package/dist/lib/cjs/code-generator.d.cts +14 -0
  34. package/dist/lib/cjs/commitlint-config.cjs +110 -0
  35. package/dist/lib/cjs/commitlint-config.d.cts +14 -0
  36. package/dist/lib/cjs/commitlint-forbidden-patterns.cjs +110 -0
  37. package/dist/lib/cjs/commitlint-forbidden-patterns.d.cts +37 -0
  38. package/dist/lib/cjs/commitlint-spellcheck-header.cjs +126 -0
  39. package/dist/lib/cjs/commitlint-spellcheck-header.d.cts +40 -0
  40. package/dist/lib/cjs/env-toggle.cjs +133 -0
  41. package/dist/lib/cjs/env-toggle.d.cts +42 -0
  42. package/dist/lib/cjs/exec.cjs +455 -0
  43. package/dist/lib/cjs/exec.d.cts +162 -0
  44. package/dist/lib/cjs/forbidden-patterns.cjs +157 -0
  45. package/dist/lib/cjs/forbidden-patterns.d.cts +57 -0
  46. package/dist/lib/cjs/formatters/dprint.cjs +108 -0
  47. package/dist/lib/cjs/formatters/dprint.d.cts +33 -0
  48. package/dist/lib/cjs/formatters/index.cjs +99 -0
  49. package/dist/lib/cjs/formatters/index.d.cts +2 -0
  50. package/dist/lib/cjs/fs.cjs +123 -0
  51. package/dist/lib/cjs/fs.d.cts +80 -0
  52. package/dist/lib/cjs/gate.cjs +140 -0
  53. package/dist/lib/cjs/gate.d.cts +93 -0
  54. package/dist/lib/cjs/git.cjs +109 -0
  55. package/dist/lib/cjs/git.d.cts +37 -0
  56. package/dist/lib/cjs/index.cjs +186 -0
  57. package/dist/lib/cjs/index.d.cts +35 -0
  58. package/dist/lib/cjs/json.cjs +141 -0
  59. package/dist/lib/cjs/json.d.cts +102 -0
  60. package/dist/lib/cjs/library-build.cjs +475 -0
  61. package/dist/lib/cjs/library-build.d.cts +97 -0
  62. package/dist/lib/cjs/linters/cspell-content.cjs +124 -0
  63. package/dist/lib/cjs/linters/cspell-content.d.cts +46 -0
  64. package/dist/lib/cjs/linters/cspell.cjs +103 -0
  65. package/dist/lib/cjs/linters/cspell.d.cts +36 -0
  66. package/dist/lib/cjs/linters/eslint-agnostic-core-boundary.cjs +94 -0
  67. package/dist/lib/cjs/linters/eslint-agnostic-core-boundary.d.cts +49 -0
  68. package/dist/lib/cjs/linters/eslint-config.cjs +1068 -0
  69. package/dist/lib/cjs/linters/eslint-config.d.cts +123 -0
  70. package/dist/lib/cjs/linters/eslint-no-restricted-syntax.cjs +130 -0
  71. package/dist/lib/cjs/linters/eslint-no-restricted-syntax.d.cts +27 -0
  72. package/dist/lib/cjs/linters/eslint-rules/in-house-plugin.cjs +116 -0
  73. package/dist/lib/cjs/linters/eslint-rules/in-house-plugin.d.cts +26 -0
  74. package/dist/lib/cjs/linters/eslint-rules/index.cjs +132 -0
  75. package/dist/lib/cjs/linters/eslint-rules/index.d.cts +13 -0
  76. package/dist/lib/cjs/linters/eslint-rules/no-async-callback-to-unsafe-return.cjs +175 -0
  77. package/dist/lib/cjs/linters/eslint-rules/no-async-callback-to-unsafe-return.d.cts +10 -0
  78. package/dist/lib/cjs/linters/eslint-rules/no-unresolved-jsdoc-link.cjs +290 -0
  79. package/dist/lib/cjs/linters/eslint-rules/no-unresolved-jsdoc-link.d.cts +10 -0
  80. package/dist/lib/cjs/linters/eslint-rules/no-unused-params-members.cjs +265 -0
  81. package/dist/lib/cjs/linters/eslint-rules/no-unused-params-members.d.cts +41 -0
  82. package/dist/lib/cjs/linters/eslint-rules/no-used-underscore-variables.cjs +134 -0
  83. package/dist/lib/cjs/linters/eslint-rules/no-used-underscore-variables.d.cts +20 -0
  84. package/dist/lib/cjs/linters/eslint-rules/params-options-name-match.cjs +217 -0
  85. package/dist/lib/cjs/linters/eslint-rules/params-options-name-match.d.cts +36 -0
  86. package/dist/lib/cjs/linters/eslint-rules/prefer-noop-async.cjs +126 -0
  87. package/dist/lib/cjs/linters/eslint-rules/prefer-noop-async.d.cts +10 -0
  88. package/dist/lib/cjs/linters/eslint-rules/readonly-params-options-result-members.cjs +125 -0
  89. package/dist/lib/cjs/linters/eslint-rules/readonly-params-options-result-members.d.cts +20 -0
  90. package/dist/lib/cjs/linters/eslint-rules/require-method-template.cjs +181 -0
  91. package/dist/lib/cjs/linters/eslint-rules/require-method-template.d.cts +14 -0
  92. package/dist/lib/cjs/linters/eslint-rules/require-super-call.cjs +217 -0
  93. package/dist/lib/cjs/linters/eslint-rules/require-super-call.d.cts +10 -0
  94. package/dist/lib/cjs/linters/eslint-rules/rule-tester-helper.cjs +92 -0
  95. package/dist/lib/cjs/linters/eslint-rules/rule-tester-helper.d.cts +18 -0
  96. package/dist/lib/cjs/linters/eslint-rules/ts-estree-node.cjs +92 -0
  97. package/dist/lib/cjs/linters/eslint-rules/ts-estree-node.d.cts +23 -0
  98. package/dist/lib/cjs/linters/eslint-types/@types/@eslint-community__eslint-plugin-eslint-comments__configs.d.cts +20 -0
  99. package/dist/lib/cjs/linters/eslint-types/@types/eslint-plugin-verify-tsdoc.d.cts +17 -0
  100. package/dist/lib/cjs/linters/eslint.cjs +122 -0
  101. package/dist/lib/cjs/linters/eslint.d.cts +35 -0
  102. package/dist/lib/cjs/linters/index.cjs +138 -0
  103. package/dist/lib/cjs/linters/index.d.cts +15 -0
  104. package/dist/lib/cjs/linters/lint-ignores.cjs +91 -0
  105. package/dist/lib/cjs/linters/lint-ignores.d.cts +30 -0
  106. package/dist/lib/cjs/linters/markdownlint-cli2-config.cjs +169 -0
  107. package/dist/lib/cjs/linters/markdownlint-cli2-config.d.cts +11 -0
  108. package/dist/lib/cjs/linters/markdownlint-content.cjs +120 -0
  109. package/dist/lib/cjs/linters/markdownlint-content.d.cts +47 -0
  110. package/dist/lib/cjs/linters/markdownlint-ignores.cjs +95 -0
  111. package/dist/lib/cjs/linters/markdownlint-ignores.d.cts +35 -0
  112. package/dist/lib/cjs/linters/markdownlint-rules/index.cjs +99 -0
  113. package/dist/lib/cjs/linters/markdownlint-rules/index.d.cts +2 -0
  114. package/dist/lib/cjs/linters/markdownlint-rules/no-soft-break-in-paragraph.cjs +152 -0
  115. package/dist/lib/cjs/linters/markdownlint-rules/no-soft-break-in-paragraph.d.cts +35 -0
  116. package/dist/lib/cjs/linters/markdownlint-types/@types/markdownlint-cli2-config-schema.d.cts +1344 -0
  117. package/dist/lib/cjs/linters/markdownlint-types/@types/markdownlint-cli2.d.cts +67 -0
  118. package/dist/lib/cjs/linters/markdownlint.cjs +151 -0
  119. package/dist/lib/cjs/linters/markdownlint.d.cts +32 -0
  120. package/dist/lib/cjs/linters/over-exposure.cjs +685 -0
  121. package/dist/lib/cjs/linters/over-exposure.d.cts +357 -0
  122. package/dist/lib/cjs/nano-staged-config.cjs +148 -0
  123. package/dist/lib/cjs/nano-staged-config.d.cts +54 -0
  124. package/dist/lib/cjs/npm-publish.cjs +93 -0
  125. package/dist/lib/cjs/npm-publish.d.cts +19 -0
  126. package/dist/lib/cjs/npm-run.cjs +120 -0
  127. package/dist/lib/cjs/npm-run.d.cts +34 -0
  128. package/dist/lib/cjs/npm.cjs +200 -0
  129. package/dist/lib/cjs/npm.d.cts +168 -0
  130. package/dist/lib/cjs/package-lock-integrity.cjs +134 -0
  131. package/dist/lib/cjs/package-lock-integrity.d.cts +38 -0
  132. package/dist/lib/cjs/package-manager.cjs +291 -0
  133. package/dist/lib/cjs/package-manager.d.cts +93 -0
  134. package/dist/lib/cjs/released-issues.cjs +178 -0
  135. package/dist/lib/cjs/released-issues.d.cts +79 -0
  136. package/dist/lib/cjs/repo-paths.cjs +167 -0
  137. package/dist/lib/cjs/repo-paths.d.cts +318 -0
  138. package/dist/lib/cjs/root.cjs +150 -0
  139. package/dist/lib/cjs/root.d.cts +107 -0
  140. package/dist/lib/cjs/test-runners/index.cjs +102 -0
  141. package/dist/lib/cjs/test-runners/index.d.cts +3 -0
  142. package/dist/lib/cjs/test-runners/vitest-config.cjs +126 -0
  143. package/dist/lib/cjs/test-runners/vitest-config.d.cts +90 -0
  144. package/dist/lib/cjs/test-runners/vitest.cjs +115 -0
  145. package/dist/lib/cjs/test-runners/vitest.d.cts +52 -0
  146. package/dist/lib/cjs/validate-declarations.cjs +120 -0
  147. package/dist/lib/cjs/validate-declarations.d.cts +37 -0
  148. package/dist/lib/cjs/version.cjs +758 -0
  149. package/dist/lib/cjs/version.d.cts +418 -0
  150. package/dist/lib/esm/build.d.mts +59 -0
  151. package/dist/lib/esm/build.mjs +165 -0
  152. package/dist/lib/esm/bundlers/esbuild-impl/change-extension-plugin.d.mts +25 -0
  153. package/dist/lib/esm/bundlers/esbuild-impl/change-extension-plugin.mjs +101 -0
  154. package/dist/lib/esm/bundlers/esbuild-impl/custom-esbuild-options-plugin.d.mts +14 -0
  155. package/dist/lib/esm/bundlers/esbuild-impl/custom-esbuild-options-plugin.mjs +59 -0
  156. package/dist/lib/esm/bundlers/esbuild-impl/fix-esm-plugin.d.mts +13 -0
  157. package/dist/lib/esm/bundlers/esbuild-impl/fix-esm-plugin.mjs +69 -0
  158. package/dist/lib/esm/bundlers/esbuild-impl/index.d.mts +6 -0
  159. package/dist/lib/esm/bundlers/esbuild-impl/index.mjs +60 -0
  160. package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.d.mts +143 -0
  161. package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.mjs +176 -0
  162. package/dist/lib/esm/bundlers/esbuild-impl/svelte-wrapper-plugin.d.mts +14 -0
  163. package/dist/lib/esm/bundlers/esbuild-impl/svelte-wrapper-plugin.mjs +82 -0
  164. package/dist/lib/esm/bundlers/index.d.mts +2 -0
  165. package/dist/lib/esm/bundlers/index.mjs +52 -0
  166. package/dist/lib/esm/check-project-types.d.mts +92 -0
  167. package/dist/lib/esm/check-project-types.mjs +123 -0
  168. package/dist/lib/esm/cli-utils.d.mts +123 -0
  169. package/dist/lib/esm/cli-utils.mjs +225 -0
  170. package/dist/lib/esm/code-generator.d.mts +14 -0
  171. package/dist/lib/esm/code-generator.mjs +59 -0
  172. package/dist/lib/esm/commitlint-config.d.mts +14 -0
  173. package/dist/lib/esm/commitlint-config.mjs +79 -0
  174. package/dist/lib/esm/commitlint-forbidden-patterns.d.mts +37 -0
  175. package/dist/lib/esm/commitlint-forbidden-patterns.mjs +75 -0
  176. package/dist/lib/esm/commitlint-spellcheck-header.d.mts +40 -0
  177. package/dist/lib/esm/commitlint-spellcheck-header.mjs +87 -0
  178. package/dist/lib/esm/env-toggle.d.mts +42 -0
  179. package/dist/lib/esm/env-toggle.mjs +84 -0
  180. package/dist/lib/esm/exec.d.mts +162 -0
  181. package/dist/lib/esm/exec.mjs +410 -0
  182. package/dist/lib/esm/forbidden-patterns.d.mts +57 -0
  183. package/dist/lib/esm/forbidden-patterns.mjs +108 -0
  184. package/dist/lib/esm/formatters/dprint.d.mts +33 -0
  185. package/dist/lib/esm/formatters/dprint.mjs +75 -0
  186. package/dist/lib/esm/formatters/index.d.mts +2 -0
  187. package/dist/lib/esm/formatters/index.mjs +52 -0
  188. package/dist/lib/esm/fs.d.mts +80 -0
  189. package/dist/lib/esm/fs.mjs +89 -0
  190. package/dist/lib/esm/gate.d.mts +93 -0
  191. package/dist/lib/esm/gate.mjs +106 -0
  192. package/dist/lib/esm/git.d.mts +37 -0
  193. package/dist/lib/esm/git.mjs +72 -0
  194. package/dist/lib/esm/index.d.mts +35 -0
  195. package/dist/lib/esm/index.mjs +110 -0
  196. package/dist/lib/esm/json.d.mts +102 -0
  197. package/dist/lib/esm/json.mjs +106 -0
  198. package/dist/lib/esm/library-build.d.mts +97 -0
  199. package/dist/lib/esm/library-build.mjs +435 -0
  200. package/dist/lib/esm/linters/cspell-content.d.mts +46 -0
  201. package/dist/lib/esm/linters/cspell-content.mjs +87 -0
  202. package/dist/lib/esm/linters/cspell.d.mts +36 -0
  203. package/dist/lib/esm/linters/cspell.mjs +69 -0
  204. package/dist/lib/esm/linters/eslint-agnostic-core-boundary.d.mts +49 -0
  205. package/dist/lib/esm/linters/eslint-agnostic-core-boundary.mjs +57 -0
  206. package/dist/lib/esm/linters/eslint-config.d.mts +123 -0
  207. package/dist/lib/esm/linters/eslint-config.mjs +1022 -0
  208. package/dist/lib/esm/linters/eslint-no-restricted-syntax.d.mts +27 -0
  209. package/dist/lib/esm/linters/eslint-no-restricted-syntax.mjs +93 -0
  210. package/dist/lib/esm/linters/eslint-rules/in-house-plugin.d.mts +26 -0
  211. package/dist/lib/esm/linters/eslint-rules/in-house-plugin.mjs +77 -0
  212. package/dist/lib/esm/linters/eslint-rules/index.d.mts +13 -0
  213. package/dist/lib/esm/linters/eslint-rules/index.mjs +74 -0
  214. package/dist/lib/esm/linters/eslint-rules/no-async-callback-to-unsafe-return.d.mts +10 -0
  215. package/dist/lib/esm/linters/eslint-rules/no-async-callback-to-unsafe-return.mjs +144 -0
  216. package/dist/lib/esm/linters/eslint-rules/no-unresolved-jsdoc-link.d.mts +10 -0
  217. package/dist/lib/esm/linters/eslint-rules/no-unresolved-jsdoc-link.mjs +277 -0
  218. package/dist/lib/esm/linters/eslint-rules/no-unused-params-members.d.mts +41 -0
  219. package/dist/lib/esm/linters/eslint-rules/no-unused-params-members.mjs +227 -0
  220. package/dist/lib/esm/linters/eslint-rules/no-used-underscore-variables.d.mts +20 -0
  221. package/dist/lib/esm/linters/eslint-rules/no-used-underscore-variables.mjs +96 -0
  222. package/dist/lib/esm/linters/eslint-rules/params-options-name-match.d.mts +36 -0
  223. package/dist/lib/esm/linters/eslint-rules/params-options-name-match.mjs +179 -0
  224. package/dist/lib/esm/linters/eslint-rules/prefer-noop-async.d.mts +10 -0
  225. package/dist/lib/esm/linters/eslint-rules/prefer-noop-async.mjs +88 -0
  226. package/dist/lib/esm/linters/eslint-rules/readonly-params-options-result-members.d.mts +20 -0
  227. package/dist/lib/esm/linters/eslint-rules/readonly-params-options-result-members.mjs +87 -0
  228. package/dist/lib/esm/linters/eslint-rules/require-method-template.d.mts +14 -0
  229. package/dist/lib/esm/linters/eslint-rules/require-method-template.mjs +142 -0
  230. package/dist/lib/esm/linters/eslint-rules/require-super-call.d.mts +10 -0
  231. package/dist/lib/esm/linters/eslint-rules/require-super-call.mjs +183 -0
  232. package/dist/lib/esm/linters/eslint-rules/rule-tester-helper.d.mts +18 -0
  233. package/dist/lib/esm/linters/eslint-rules/rule-tester-helper.mjs +55 -0
  234. package/dist/lib/esm/linters/eslint-rules/ts-estree-node.d.mts +23 -0
  235. package/dist/lib/esm/linters/eslint-rules/ts-estree-node.mjs +55 -0
  236. package/dist/lib/esm/linters/eslint-types/@types/@eslint-community__eslint-plugin-eslint-comments__configs.d.mts +20 -0
  237. package/dist/lib/esm/linters/eslint-types/@types/eslint-plugin-verify-tsdoc.d.mts +17 -0
  238. package/dist/lib/esm/linters/eslint.d.mts +35 -0
  239. package/dist/lib/esm/linters/eslint.mjs +88 -0
  240. package/dist/lib/esm/linters/index.d.mts +15 -0
  241. package/dist/lib/esm/linters/index.mjs +78 -0
  242. package/dist/lib/esm/linters/lint-ignores.d.mts +30 -0
  243. package/dist/lib/esm/linters/lint-ignores.mjs +54 -0
  244. package/dist/lib/esm/linters/markdownlint-cli2-config.d.mts +11 -0
  245. package/dist/lib/esm/linters/markdownlint-cli2-config.mjs +122 -0
  246. package/dist/lib/esm/linters/markdownlint-content.d.mts +47 -0
  247. package/dist/lib/esm/linters/markdownlint-content.mjs +83 -0
  248. package/dist/lib/esm/linters/markdownlint-ignores.d.mts +35 -0
  249. package/dist/lib/esm/linters/markdownlint-ignores.mjs +57 -0
  250. package/dist/lib/esm/linters/markdownlint-rules/index.d.mts +2 -0
  251. package/dist/lib/esm/linters/markdownlint-rules/index.mjs +52 -0
  252. package/dist/lib/esm/linters/markdownlint-rules/no-soft-break-in-paragraph.d.mts +35 -0
  253. package/dist/lib/esm/linters/markdownlint-rules/no-soft-break-in-paragraph.mjs +114 -0
  254. package/dist/lib/esm/linters/markdownlint-types/@types/markdownlint-cli2-config-schema.d.mts +1344 -0
  255. package/dist/lib/esm/linters/markdownlint-types/@types/markdownlint-cli2.d.mts +67 -0
  256. package/dist/lib/esm/linters/markdownlint.d.mts +32 -0
  257. package/dist/lib/esm/linters/markdownlint.mjs +124 -0
  258. package/dist/lib/esm/linters/over-exposure.d.mts +357 -0
  259. package/dist/lib/esm/linters/over-exposure.mjs +672 -0
  260. package/dist/lib/esm/nano-staged-config.d.mts +54 -0
  261. package/dist/lib/esm/nano-staged-config.mjs +103 -0
  262. package/dist/lib/esm/npm-publish.d.mts +19 -0
  263. package/dist/lib/esm/npm-publish.mjs +56 -0
  264. package/dist/lib/esm/npm-run.d.mts +34 -0
  265. package/dist/lib/esm/npm-run.mjs +81 -0
  266. package/dist/lib/esm/npm.d.mts +168 -0
  267. package/dist/lib/esm/npm.mjs +155 -0
  268. package/dist/lib/esm/package-lock-integrity.d.mts +38 -0
  269. package/dist/lib/esm/package-lock-integrity.mjs +99 -0
  270. package/dist/lib/esm/package-manager.d.mts +93 -0
  271. package/dist/lib/esm/package-manager.mjs +245 -0
  272. package/dist/lib/esm/released-issues.d.mts +79 -0
  273. package/dist/lib/esm/released-issues.mjs +143 -0
  274. package/dist/lib/esm/repo-paths.d.mts +318 -0
  275. package/dist/lib/esm/repo-paths.mjs +130 -0
  276. package/dist/lib/esm/root.d.mts +107 -0
  277. package/dist/lib/esm/root.mjs +115 -0
  278. package/dist/lib/esm/test-runners/index.d.mts +3 -0
  279. package/dist/lib/esm/test-runners/index.mjs +54 -0
  280. package/dist/lib/esm/test-runners/vitest-config.d.mts +90 -0
  281. package/dist/lib/esm/test-runners/vitest-config.mjs +86 -0
  282. package/dist/lib/esm/test-runners/vitest.d.mts +52 -0
  283. package/dist/lib/esm/test-runners/vitest.mjs +76 -0
  284. package/dist/lib/esm/validate-declarations.d.mts +37 -0
  285. package/dist/lib/esm/validate-declarations.mjs +87 -0
  286. package/dist/lib/esm/version.d.mts +418 -0
  287. package/dist/lib/esm/version.mjs +723 -0
  288. package/formatters/dprint/package.json +6 -0
  289. package/formatters/index/package.json +6 -0
  290. package/formatters/package.json +6 -0
  291. package/linters/cspell/package.json +6 -0
  292. package/linters/cspell-content/package.json +6 -0
  293. package/linters/eslint/package.json +6 -0
  294. package/linters/eslint-agnostic-core-boundary/package.json +6 -0
  295. package/linters/eslint-config/package.json +6 -0
  296. package/linters/eslint-no-restricted-syntax/package.json +6 -0
  297. package/linters/eslint-rules/in-house-plugin/package.json +6 -0
  298. package/linters/eslint-rules/index/package.json +6 -0
  299. package/linters/eslint-rules/no-async-callback-to-unsafe-return/package.json +6 -0
  300. package/linters/eslint-rules/no-unresolved-jsdoc-link/package.json +6 -0
  301. package/linters/eslint-rules/no-unused-params-members/package.json +6 -0
  302. package/linters/eslint-rules/no-used-underscore-variables/package.json +6 -0
  303. package/linters/eslint-rules/package.json +6 -0
  304. package/linters/eslint-rules/params-options-name-match/package.json +6 -0
  305. package/linters/eslint-rules/prefer-noop-async/package.json +6 -0
  306. package/linters/eslint-rules/readonly-params-options-result-members/package.json +6 -0
  307. package/linters/eslint-rules/require-method-template/package.json +6 -0
  308. package/linters/eslint-rules/require-super-call/package.json +6 -0
  309. package/linters/eslint-rules/rule-tester-helper/package.json +6 -0
  310. package/linters/eslint-rules/ts-estree-node/package.json +6 -0
  311. package/linters/eslint-types/@types/@eslint-community__eslint-plugin-eslint-comments__configs/package.json +4 -0
  312. package/linters/eslint-types/@types/eslint-plugin-verify-tsdoc/package.json +4 -0
  313. package/linters/index/package.json +6 -0
  314. package/linters/lint-ignores/package.json +6 -0
  315. package/linters/markdownlint/package.json +6 -0
  316. package/linters/markdownlint-cli2-config/package.json +6 -0
  317. package/linters/markdownlint-content/package.json +6 -0
  318. package/linters/markdownlint-ignores/package.json +6 -0
  319. package/linters/markdownlint-rules/index/package.json +6 -0
  320. package/linters/markdownlint-rules/no-soft-break-in-paragraph/package.json +6 -0
  321. package/linters/markdownlint-rules/package.json +6 -0
  322. package/linters/markdownlint-types/@types/markdownlint-cli2/package.json +4 -0
  323. package/linters/markdownlint-types/@types/markdownlint-cli2-config-schema/package.json +4 -0
  324. package/linters/over-exposure/package.json +6 -0
  325. package/linters/package.json +6 -0
  326. package/package.json +329 -13
  327. package/test-runners/index/package.json +6 -0
  328. package/test-runners/package.json +6 -0
  329. package/test-runners/vitest/package.json +6 -0
  330. package/test-runners/vitest-config/package.json +6 -0
@@ -0,0 +1,115 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function () {
7
+ function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
+ symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
+ symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
10
+ }
11
+
12
+ function ensureBrowserProcess() {
13
+ const browserProcess = {
14
+ browser: true,
15
+ cwd() {
16
+ return '/';
17
+ },
18
+ env: {},
19
+ platform: 'android'
20
+ };
21
+
22
+ const existingProcess = globalThis.process;
23
+
24
+ if (!existingProcess) {
25
+ globalThis.process = browserProcess;
26
+ return;
27
+ }
28
+
29
+ if (existingProcess.versions?.node) {
30
+ return;
31
+ }
32
+
33
+ const existingProcessRecord = existingProcess;
34
+
35
+ for (const [key, value] of Object.entries(browserProcess)) {
36
+ existingProcessRecord[key] ??= value;
37
+ }
38
+
39
+ existingProcessRecord['browser'] = true;
40
+ }
41
+
42
+ (function initEsm() {
43
+ ensureDisposeSymbols();
44
+ ensureBrowserProcess();
45
+ })();
46
+ })();
47
+
48
+ import { normalizeOptionalProperties } from "@mnaoumov/typescript-lib/object-utils";
49
+ import {
50
+ dirname,
51
+ join,
52
+ relative,
53
+ resolve,
54
+ toPosixPath
55
+ } from "@mnaoumov/typescript-lib/path";
56
+ import { existsSync } from "node:fs";
57
+ import { exec } from "./exec.mjs";
58
+ import { RepoPaths } from "./repo-paths.mjs";
59
+ function execFromRoot(command, options = {}) {
60
+ let root = getRootFolder(options.cwd);
61
+ if (!root) {
62
+ if (options.shouldFailIfCalledFromOutsideRoot ?? true) {
63
+ throw new Error("Could not find root folder");
64
+ }
65
+ root = options.cwd ?? process.cwd();
66
+ }
67
+ return options.shouldIncludeDetails ? exec(command, { ...options, cwd: root, shouldIncludeDetails: true }) : exec(command, { ...options, cwd: root, shouldIncludeDetails: false });
68
+ }
69
+ function getRootFolder(cwd) {
70
+ let currentFolder = toPosixPath(cwd ?? process.cwd());
71
+ while (currentFolder !== RepoPaths.CurrentFolder && currentFolder !== RepoPaths.RootFolder) {
72
+ if (existsSync(join(currentFolder, RepoPaths.PackageJson))) {
73
+ return toPosixPath(currentFolder);
74
+ }
75
+ currentFolder = dirname(currentFolder);
76
+ }
77
+ return null;
78
+ }
79
+ function resolvePathFromRoot(params) {
80
+ const {
81
+ cwd,
82
+ path
83
+ } = params;
84
+ const rootFolder = getRootFolder(cwd);
85
+ return rootFolder ? resolve(rootFolder, path) : null;
86
+ }
87
+ function resolvePathFromRootSafe(params) {
88
+ const {
89
+ cwd,
90
+ path
91
+ } = params;
92
+ return resolvePathFromRoot(normalizeOptionalProperties({ cwd, path })) ?? path;
93
+ }
94
+ function toRelativeFromRoot(params) {
95
+ const {
96
+ cwd
97
+ } = params;
98
+ let {
99
+ path
100
+ } = params;
101
+ const rootFolder = getRootFolder(cwd);
102
+ if (!rootFolder) {
103
+ return null;
104
+ }
105
+ path = toPosixPath(path);
106
+ return relative(rootFolder, path);
107
+ }
108
+ export {
109
+ execFromRoot,
110
+ getRootFolder,
111
+ resolvePathFromRoot,
112
+ resolvePathFromRootSafe,
113
+ toRelativeFromRoot
114
+ };
115
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3Jvb3QudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgZXhlY3V0aW5nIGNvbW1hbmRzIGZyb20gdGhlIHJvb3QgZm9sZGVyIG9mIGEgcHJvamVjdCxcbiAqIHJlc29sdmluZyBwYXRocyByZWxhdGl2ZSB0byB0aGUgcm9vdC5cbiAqL1xuXG5pbXBvcnQgeyBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvb2JqZWN0LXV0aWxzJztcbmltcG9ydCB7XG4gIGRpcm5hbWUsXG4gIGpvaW4sXG4gIHJlbGF0aXZlLFxuICByZXNvbHZlLFxuICB0b1Bvc2l4UGF0aFxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5cbmltcG9ydCB0eXBlIHtcbiAgQ29tbWFuZFBhcnQsXG4gIEV4ZWNEZXRhaWxlZE9wdGlvbnMsXG4gIEV4ZWNPcHRpb25zLFxuICBFeGVjUmVzdWx0LFxuICBFeGVjU2ltcGxlT3B0aW9uc1xufSBmcm9tICcuL2V4ZWMudHMnO1xuXG5pbXBvcnQgeyBleGVjIH0gZnJvbSAnLi9leGVjLnRzJztcbmltcG9ydCB7IFJlcG9QYXRocyB9IGZyb20gJy4vcmVwby1wYXRocy50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGV4ZWNGcm9tUm9vdH0uXG4gKi9cbmV4cG9ydCB0eXBlIEV4ZWNGcm9tUm9vdE9wdGlvbnMgPSBFeGVjT3B0aW9ucztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVzb2x2ZVBhdGhGcm9tUm9vdH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZVBhdGhGcm9tUm9vdFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCB3b3JraW5nIGZvbGRlciB0byByZXNvbHZlIGZyb20uXG4gICAqL1xuICByZWFkb25seSBjd2Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIHJlc29sdmUuXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG59XG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZXNvbHZlUGF0aEZyb21Sb290U2FmZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGN1cnJlbnQgd29ya2luZyBmb2xkZXIgdG8gcmVzb2x2ZSBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgY3dkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byByZXNvbHZlLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgdG9SZWxhdGl2ZUZyb21Sb290fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb1JlbGF0aXZlRnJvbVJvb3RQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGN1cnJlbnQgd29ya2luZyBmb2xkZXIgdG8gcmVzb2x2ZSBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgY3dkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWJzb2x1dGUgcGF0aCB0byBjb252ZXJ0LlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEV4ZWN1dGVzIGEgY29tbWFuZCBmcm9tIHRoZSByb290IGZvbGRlciBvZiB0aGUgcHJvamVjdC5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIHRvIGV4ZWN1dGUuIEl0IGNhbiBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGV4ZWN1dGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgb3V0cHV0IG9mIHRoZSBjb21tYW5kLlxuICogQHRocm93cyBJZiB0aGUgY29tbWFuZCBmYWlscyB3aXRoIGEgbm9uLXplcm8gZXhpdCBjb2RlIGFuZCBpZ25vcmVFeGl0Q29kZSBpcyBgZmFsc2VgLlxuICogICAgICAgICBUaGUgZXJyb3IgbWVzc2FnZSBpbmNsdWRlcyB0aGUgZXhpdCBjb2RlLCB0aGUgY29tbWFuZCwgc3RkZXJyLCBhbmQgc3Rkb3V0IChvciBhIG5vdGUgdGhhdCBpdCB3YXNcbiAqICAgICAgICAgcHJpbnRlZCksIGFuZCBzYXlzIHdoZW4gdGhlIGNoaWxkIGNyYXNoZWQgb3Igd2FzIGtpbGxlZCByYXRoZXIgdGhhbiBleGl0aW5nIG9uIGl0cyBvd24uXG4gKiAgICAgICAgIElmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBhbmQgaWdub3JlRXhpdENvZGUgaXMgYHRydWVgLFxuICogICAgICAgICB0aGUgZXJyb3IgaXMgcmVzb2x2ZWQgd2l0aCB0aGUgc3Rkb3V0IGFuZCBzdGRlcnIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleGVjRnJvbVJvb3QoY29tbWFuZDogQ29tbWFuZFBhcnRbXSB8IHN0cmluZywgb3B0aW9ucz86IEV4ZWNTaW1wbGVPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+O1xuLyoqXG4gKiBFeGVjdXRlcyBhIGNvbW1hbmQgZnJvbSB0aGUgcm9vdCBmb2xkZXIgb2YgdGhlIHByb2plY3QuXG4gKlxuICogQHBhcmFtIGNvbW1hbmQgLSBUaGUgY29tbWFuZCB0byBleGVjdXRlLiBJdCBjYW4gYmUgYSBzdHJpbmcgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBleGVjdXRpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggRXhlY1Jlc3VsdCBvYmplY3QuXG4gKiAgICAgICAgICBUaGUgRXhlY1Jlc3VsdCBvYmplY3QgY29udGFpbnMgdGhlIGV4aXQgY29kZSwgZXhpdCBzaWduYWwsIHN0ZGVyciwgYW5kIHN0ZG91dC5cbiAqIEB0aHJvd3MgSWYgdGhlIGNvbW1hbmQgZmFpbHMgd2l0aCBhIG5vbi16ZXJvIGV4aXQgY29kZSBhbmQgaWdub3JlRXhpdENvZGUgaXMgYGZhbHNlYC5cbiAqICAgICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgaW5jbHVkZXMgdGhlIGV4aXQgY29kZSwgdGhlIGNvbW1hbmQsIHN0ZGVyciwgYW5kIHN0ZG91dCAob3IgYSBub3RlIHRoYXQgaXQgd2FzXG4gKiAgICAgICAgIHByaW50ZWQpLCBhbmQgc2F5cyB3aGVuIHRoZSBjaGlsZCBjcmFzaGVkIG9yIHdhcyBraWxsZWQgcmF0aGVyIHRoYW4gZXhpdGluZyBvbiBpdHMgb3duLlxuICogICAgICAgICBJZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBleGVjdXRpb24gYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGB0cnVlYCxcbiAqICAgICAgICAgdGhlIGVycm9yIGlzIHJlc29sdmVkIHdpdGggdGhlIHN0ZG91dCBhbmQgc3RkZXJyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlY0Zyb21Sb290KGNvbW1hbmQ6IENvbW1hbmRQYXJ0W10gfCBzdHJpbmcsIG9wdGlvbnM6IEV4ZWNEZXRhaWxlZE9wdGlvbnMpOiBQcm9taXNlPEV4ZWNSZXN1bHQ+O1xuLyoqXG4gKiBFeGVjdXRlcyBhIGNvbW1hbmQgZnJvbSB0aGUgcm9vdCBmb2xkZXIgb2YgdGhlIHByb2plY3QuXG4gKlxuICogQHBhcmFtIGNvbW1hbmQgLSBUaGUgY29tbWFuZCB0byBleGVjdXRlLiBJdCBjYW4gYmUgYSBzdHJpbmcgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBleGVjdXRpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIG91dHB1dCBvZiB0aGUgY29tbWFuZCBvciBhbiBFeGVjUmVzdWx0IG9iamVjdC5cbiAqICAgICAgICAgIFRoZSBFeGVjUmVzdWx0IG9iamVjdCBjb250YWlucyB0aGUgZXhpdCBjb2RlLCBleGl0IHNpZ25hbCwgc3RkZXJyLCBhbmQgc3Rkb3V0LlxuICogQHRocm93cyBJZiB0aGUgY29tbWFuZCBmYWlscyB3aXRoIGEgbm9uLXplcm8gZXhpdCBjb2RlIGFuZCBpZ25vcmVFeGl0Q29kZSBpcyBgZmFsc2VgLlxuICogICAgICAgICBUaGUgZXJyb3IgbWVzc2FnZSBpbmNsdWRlcyB0aGUgZXhpdCBjb2RlLCB0aGUgY29tbWFuZCwgc3RkZXJyLCBhbmQgc3Rkb3V0IChvciBhIG5vdGUgdGhhdCBpdCB3YXNcbiAqICAgICAgICAgcHJpbnRlZCksIGFuZCBzYXlzIHdoZW4gdGhlIGNoaWxkIGNyYXNoZWQgb3Igd2FzIGtpbGxlZCByYXRoZXIgdGhhbiBleGl0aW5nIG9uIGl0cyBvd24uXG4gKiAgICAgICAgIElmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBhbmQgaWdub3JlRXhpdENvZGUgaXMgYHRydWVgLFxuICogICAgICAgICB0aGUgZXJyb3IgaXMgcmVzb2x2ZWQgd2l0aCB0aGUgc3Rkb3V0IGFuZCBzdGRlcnIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleGVjRnJvbVJvb3QoY29tbWFuZDogQ29tbWFuZFBhcnRbXSB8IHN0cmluZywgb3B0aW9uczogRXhlY0Zyb21Sb290T3B0aW9ucyA9IHt9KTogUHJvbWlzZTxFeGVjUmVzdWx0IHwgc3RyaW5nPiB7XG4gIGxldCByb290ID0gZ2V0Um9vdEZvbGRlcihvcHRpb25zLmN3ZCk7XG5cbiAgaWYgKCFyb290KSB7XG4gICAgaWYgKG9wdGlvbnMuc2hvdWxkRmFpbElmQ2FsbGVkRnJvbU91dHNpZGVSb290ID8/IHRydWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGZpbmQgcm9vdCBmb2xkZXInKTtcbiAgICB9XG5cbiAgICByb290ID0gb3B0aW9ucy5jd2QgPz8gcHJvY2Vzcy5jd2QoKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL3ByZWZlci1taW5pbWFsLXRlcm5hcnkgLS0gRWFjaCBicmFuY2ggcGlja3MgYSBkaWZmZXJlbnQgYGV4ZWNgIG92ZXJsb2FkIGJ5IHRoZSBsaXRlcmFsIGBzaG91bGRJbmNsdWRlRGV0YWlsc2A7IGEgYGJvb2xlYW5gIG1hdGNoZXMgbmVpdGhlci5cbiAgcmV0dXJuIG9wdGlvbnMuc2hvdWxkSW5jbHVkZURldGFpbHMgPyBleGVjKGNvbW1hbmQsIHsgLi4ub3B0aW9ucywgY3dkOiByb290LCBzaG91bGRJbmNsdWRlRGV0YWlsczogdHJ1ZSB9KSA6IGV4ZWMoY29tbWFuZCwgeyAuLi5vcHRpb25zLCBjd2Q6IHJvb3QsIHNob3VsZEluY2x1ZGVEZXRhaWxzOiBmYWxzZSB9KTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIHJvb3QgZm9sZGVyIG9mIHRoZSBwcm9qZWN0LlxuICpcbiAqIEBwYXJhbSBjd2QgLSBUaGUgY3VycmVudCB3b3JraW5nIGZvbGRlciB0byByZXNvbHZlIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgcGF0aCB0byB0aGUgcm9vdCBmb2xkZXIuXG4gKiBAdGhyb3dzIElmIHRoZSByb290IGZvbGRlciBjYW5ub3QgYmUgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb290Rm9sZGVyKGN3ZD86IHN0cmluZyk6IG51bGwgfCBzdHJpbmcge1xuICBsZXQgY3VycmVudEZvbGRlciA9IHRvUG9zaXhQYXRoKGN3ZCA/PyBwcm9jZXNzLmN3ZCgpKTtcbiAgd2hpbGUgKGN1cnJlbnRGb2xkZXIgIT09IFJlcG9QYXRocy5DdXJyZW50Rm9sZGVyIGFzIHN0cmluZyAmJiBjdXJyZW50Rm9sZGVyICE9PSBSZXBvUGF0aHMuUm9vdEZvbGRlciBhcyBzdHJpbmcpIHtcbiAgICBpZiAoZXhpc3RzU3luYyhqb2luKGN1cnJlbnRGb2xkZXIsIFJlcG9QYXRocy5QYWNrYWdlSnNvbikpKSB7XG4gICAgICByZXR1cm4gdG9Qb3NpeFBhdGgoY3VycmVudEZvbGRlcik7XG4gICAgfVxuICAgIGN1cnJlbnRGb2xkZXIgPSBkaXJuYW1lKGN1cnJlbnRGb2xkZXIpO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgYSBwYXRoIHJlbGF0aXZlIHRvIHRoZSByb290IGZvbGRlciBvZiB0aGUgcHJvamVjdC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSByZXNvbHZlZCBhYnNvbHV0ZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVBhdGhGcm9tUm9vdChwYXJhbXM6IFJlc29sdmVQYXRoRnJvbVJvb3RQYXJhbXMpOiBudWxsIHwgc3RyaW5nIHtcbiAgY29uc3Qge1xuICAgIGN3ZCxcbiAgICBwYXRoXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHJvb3RGb2xkZXIgPSBnZXRSb290Rm9sZGVyKGN3ZCk7XG4gIHJldHVybiByb290Rm9sZGVyID8gcmVzb2x2ZShyb290Rm9sZGVyLCBwYXRoKSA6IG51bGw7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgYSBwYXRoIHJlbGF0aXZlIHRvIHRoZSByb290IGZvbGRlciwgcmV0dXJuaW5nIHRoZSByZXNvbHZlZCBwYXRoIG9yIHRoZSBvcmlnaW5hbCBwYXRoIGlmIGl0IGRvZXMgbm90IGV4aXN0LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZ1bmN0aW9uLlxuICogQHJldHVybnMgVGhlIHJlc29sdmVkIHBhdGggb3IgdGhlIG9yaWdpbmFsIHBhdGggaWYgaXQgZG9lcyBub3QgZXhpc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUGF0aEZyb21Sb290U2FmZShwYXJhbXM6IFJlc29sdmVQYXRoRnJvbVJvb3RTYWZlUGFyYW1zKTogc3RyaW5nIHtcbiAgY29uc3Qge1xuICAgIGN3ZCxcbiAgICBwYXRoXG4gIH0gPSBwYXJhbXM7XG4gIHJldHVybiByZXNvbHZlUGF0aEZyb21Sb290KG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxSZXNvbHZlUGF0aEZyb21Sb290UGFyYW1zPih7IGN3ZCwgcGF0aCB9KSkgPz8gcGF0aDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhYnNvbHV0ZSBwYXRoIHRvIGEgcmVsYXRpdmUgcGF0aCBmcm9tIHRoZSByb290IGZvbGRlciBvZiB0aGUgcHJvamVjdC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSByZWxhdGl2ZSBwYXRoIGZyb20gdGhlIHJvb3QgZm9sZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9SZWxhdGl2ZUZyb21Sb290KHBhcmFtczogVG9SZWxhdGl2ZUZyb21Sb290UGFyYW1zKTogbnVsbCB8IHN0cmluZyB7XG4gIGNvbnN0IHtcbiAgICBjd2RcbiAgfSA9IHBhcmFtcztcbiAgbGV0IHtcbiAgICBwYXRoXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHJvb3RGb2xkZXIgPSBnZXRSb290Rm9sZGVyKGN3ZCk7XG4gIGlmICghcm9vdEZvbGRlcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcGF0aCA9IHRvUG9zaXhQYXRoKHBhdGgpO1xuICByZXR1cm4gcmVsYXRpdmUocm9vdEZvbGRlciwgcGF0aCk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9BLFNBQVMsbUNBQW1DO0FBQzVDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxrQkFBa0I7QUFVM0IsU0FBUyxZQUFZO0FBQ3JCLFNBQVMsaUJBQWlCO0FBMEZuQixTQUFTLGFBQWEsU0FBaUMsVUFBK0IsQ0FBQyxHQUFpQztBQUM3SCxNQUFJLE9BQU8sY0FBYyxRQUFRLEdBQUc7QUFFcEMsTUFBSSxDQUFDLE1BQU07QUFDVCxRQUFJLFFBQVEscUNBQXFDLE1BQU07QUFDckQsWUFBTSxJQUFJLE1BQU0sNEJBQTRCO0FBQUEsSUFDOUM7QUFFQSxXQUFPLFFBQVEsT0FBTyxRQUFRLElBQUk7QUFBQSxFQUNwQztBQUdBLFNBQU8sUUFBUSx1QkFBdUIsS0FBSyxTQUFTLEVBQUUsR0FBRyxTQUFTLEtBQUssTUFBTSxzQkFBc0IsS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsR0FBRyxTQUFTLEtBQUssTUFBTSxzQkFBc0IsTUFBTSxDQUFDO0FBQ25MO0FBU08sU0FBUyxjQUFjLEtBQTZCO0FBQ3pELE1BQUksZ0JBQWdCLFlBQVksT0FBTyxRQUFRLElBQUksQ0FBQztBQUNwRCxTQUFPLGtCQUFrQixVQUFVLGlCQUEyQixrQkFBa0IsVUFBVSxZQUFzQjtBQUM5RyxRQUFJLFdBQVcsS0FBSyxlQUFlLFVBQVUsV0FBVyxDQUFDLEdBQUc7QUFDMUQsYUFBTyxZQUFZLGFBQWE7QUFBQSxJQUNsQztBQUNBLG9CQUFnQixRQUFRLGFBQWE7QUFBQSxFQUN2QztBQUVBLFNBQU87QUFDVDtBQVFPLFNBQVMsb0JBQW9CLFFBQWtEO0FBQ3BGLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUNKLFFBQU0sYUFBYSxjQUFjLEdBQUc7QUFDcEMsU0FBTyxhQUFhLFFBQVEsWUFBWSxJQUFJLElBQUk7QUFDbEQ7QUFRTyxTQUFTLHdCQUF3QixRQUErQztBQUNyRixRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxFQUNGLElBQUk7QUFDSixTQUFPLG9CQUFvQiw0QkFBdUQsRUFBRSxLQUFLLEtBQUssQ0FBQyxDQUFDLEtBQUs7QUFDdkc7QUFRTyxTQUFTLG1CQUFtQixRQUFpRDtBQUNsRixRQUFNO0FBQUEsSUFDSjtBQUFBLEVBQ0YsSUFBSTtBQUNKLE1BQUk7QUFBQSxJQUNGO0FBQUEsRUFDRixJQUFJO0FBQ0osUUFBTSxhQUFhLGNBQWMsR0FBRztBQUNwQyxNQUFJLENBQUMsWUFBWTtBQUNmLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxZQUFZLElBQUk7QUFDdkIsU0FBTyxTQUFTLFlBQVksSUFBSTtBQUNsQzsiLAogICJuYW1lcyI6IFtdCn0K
@@ -0,0 +1,3 @@
1
+ /// <reference path="../index.d.mts" />
2
+ export * as 'vitest-config' from './vitest-config.mjs';
3
+ export * as 'vitest' from './vitest.mjs';
@@ -0,0 +1,54 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function () {
7
+ function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
+ symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
+ symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
10
+ }
11
+
12
+ function ensureBrowserProcess() {
13
+ const browserProcess = {
14
+ browser: true,
15
+ cwd() {
16
+ return '/';
17
+ },
18
+ env: {},
19
+ platform: 'android'
20
+ };
21
+
22
+ const existingProcess = globalThis.process;
23
+
24
+ if (!existingProcess) {
25
+ globalThis.process = browserProcess;
26
+ return;
27
+ }
28
+
29
+ if (existingProcess.versions?.node) {
30
+ return;
31
+ }
32
+
33
+ const existingProcessRecord = existingProcess;
34
+
35
+ for (const [key, value] of Object.entries(browserProcess)) {
36
+ existingProcessRecord[key] ??= value;
37
+ }
38
+
39
+ existingProcessRecord['browser'] = true;
40
+ }
41
+
42
+ (function initEsm() {
43
+ ensureDisposeSymbols();
44
+ ensureBrowserProcess();
45
+ })();
46
+ })();
47
+
48
+ import * as vitest_config from "./vitest-config.mjs";
49
+ import * as vitest from "./vitest.mjs";
50
+ export {
51
+ vitest,
52
+ vitest_config as "vitest-config"
53
+ };
54
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3Rlc3QtcnVubmVycy9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzICd2aXRlc3QtY29uZmlnJyBmcm9tICcuL3ZpdGVzdC1jb25maWcudHMnO1xuZXhwb3J0ICogYXMgJ3ZpdGVzdCcgZnJvbSAnLi92aXRlc3QudHMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxZQUFZQSxtQkFBcUI7QUFDakMsWUFBWSxZQUFjOyIsCiAgIm5hbWVzIjogWyJ2aXRlc3QtY29uZmlnIl0KfQo=
@@ -0,0 +1,90 @@
1
+ /// <reference path="../index.d.mts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Shared vitest configuration for TypeScript LIBRARY packages: the pinned reporters, the test excludes, the coverage
6
+ * block, and {@link defineLibraryVitestConfig}, which wraps a package's own projects in them.
7
+ *
8
+ * The Obsidian plugin configuration (`@mnaoumov/obsidian-dev-toolkit/test-runners/vitest-config`) builds on the same
9
+ * reporters and excludes, so the two cannot drift apart.
10
+ */
11
+ import type { TestProjectConfiguration, ViteUserConfig } from 'vitest/config';
12
+ import type { Reporter } from 'vitest/node';
13
+ /**
14
+ * One entry of a vitest `reporters` list: the name of a built-in reporter (`'default'`, `'junit'`,
15
+ * `'minimal'`, …) or a reporter instance.
16
+ *
17
+ * Spelled out rather than derived from vitest's own option type, whose parts (`ReporterName`,
18
+ * `InlineReporter`) are internal to vitest and exported from none of its entry points. Naming the two
19
+ * shapes directly keeps a reporters list a plain array a caller pushes onto, which the option type itself
20
+ * cannot be, because it is a union of an array with a single value. Vitest's third accepted shape, a
21
+ * `[name, options]` tuple, is deliberately left out: no repository on this toolchain uses one.
22
+ */
23
+ export type VitestReporter = Reporter | string;
24
+ /**
25
+ * The reporters every repo on this toolchain prints through.
26
+ *
27
+ * **Pinned, because vitest's fallback is not one reporter but two.** An unset `reporters` resolves to
28
+ * `isAgent ? 'minimal' : 'default'`, and `std-env`'s `isAgent` is true inside every AI coding session —
29
+ * it reads `AI_AGENT` plus a dozen tool-specific variables. `MinimalReporter` extends the default one
30
+ * with `summary: false`, `silent: 'passed-only'`, and a `printTestModule` that returns early unless the
31
+ * module FAILED. So the SAME `npm run test`, on the SAME tree, prints a line per test file for a
32
+ * developer and not one for a session, and swallows a passing test's console output in the second case
33
+ * only. Measured on the `unit-tests:script-utils` project of `obsidian-dev-utils` (43 files, vitest 5.0.1,
34
+ * 2026-09-23): 46 per-file lines over a 58-line log pinned, 0 over a 13-line log unset.
35
+ *
36
+ * A gate should not report differently depending on who runs it, and a `console.log` a developer adds
37
+ * to find something should not vanish because a session ran the suite. The cost of the pin is the ~45
38
+ * lines above.
39
+ *
40
+ * **What this deliberately does NOT carry is a reporter naming the file a dead pool worker took with it,
41
+ * because vitest 5 already does that itself.** `emitUnexpectedExit` is `(code, signal) => …` there, building
42
+ * its message from the exit code, the signal, the runner state and the files the worker held. Driven
43
+ * against real runs on 2026-09-23 in all four shapes: a worker `SIGKILL`ed mid-file, one killed at
44
+ * import before collection, the same under `minimal`, and the realistic one — the dying file among 42
45
+ * others in a parallel run — which reported `42 passed (43)` AND named the file. Under vitest 4 none of
46
+ * that existed and the reader was left subtracting over file names the log did not contain, which is
47
+ * what a reconciling reporter was written for; on 5 it would be a module, a test file and a coverage
48
+ * burden for every consumer, carrying a claim that is no longer true.
49
+ */
50
+ export declare const DEFAULT_VITEST_REPORTERS: readonly VitestReporter[];
51
+ /**
52
+ * Folders vitest never collects tests from.
53
+ */
54
+ export declare const DEFAULT_VITEST_TEST_EXCLUDE: readonly string[];
55
+ /**
56
+ * The coverage options of a library package: v8 over its own `src/`, without the generated barrels, the
57
+ * declarations, the tests and the test helpers. The threshold is the `test:coverage` script's to set.
58
+ */
59
+ export declare const LIBRARY_VITEST_COVERAGE: {
60
+ exclude: string[];
61
+ include: string[];
62
+ provider: "v8";
63
+ reporter: string[];
64
+ reportsDirectory: string;
65
+ };
66
+ /**
67
+ * Parameters for {@link defineLibraryVitestConfig}.
68
+ */
69
+ export interface DefineLibraryVitestConfigParams {
70
+ /**
71
+ * The vite plugins, e.g. a resolver mapping sibling packages onto their source.
72
+ */
73
+ readonly plugins?: ViteUserConfig['plugins'];
74
+ /**
75
+ * The package's vitest projects.
76
+ */
77
+ readonly projects: TestProjectConfiguration[];
78
+ /**
79
+ * The top-level `resolve` options, applied to every project that does not set its own.
80
+ */
81
+ readonly resolve?: ViteUserConfig['resolve'];
82
+ }
83
+ /**
84
+ * Defines a library package's vitest configuration: its own projects, wrapped in the shared reporters, excludes and
85
+ * coverage block, with console output from passing tests suppressed.
86
+ *
87
+ * @param params - The configuration parameters.
88
+ * @returns The vitest configuration.
89
+ */
90
+ export declare function defineLibraryVitestConfig(params: DefineLibraryVitestConfigParams): ViteUserConfig;
@@ -0,0 +1,86 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function () {
7
+ function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
+ symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
+ symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
10
+ }
11
+
12
+ function ensureBrowserProcess() {
13
+ const browserProcess = {
14
+ browser: true,
15
+ cwd() {
16
+ return '/';
17
+ },
18
+ env: {},
19
+ platform: 'android'
20
+ };
21
+
22
+ const existingProcess = globalThis.process;
23
+
24
+ if (!existingProcess) {
25
+ globalThis.process = browserProcess;
26
+ return;
27
+ }
28
+
29
+ if (existingProcess.versions?.node) {
30
+ return;
31
+ }
32
+
33
+ const existingProcessRecord = existingProcess;
34
+
35
+ for (const [key, value] of Object.entries(browserProcess)) {
36
+ existingProcessRecord[key] ??= value;
37
+ }
38
+
39
+ existingProcessRecord['browser'] = true;
40
+ }
41
+
42
+ (function initEsm() {
43
+ ensureDisposeSymbols();
44
+ ensureBrowserProcess();
45
+ })();
46
+ })();
47
+
48
+ const DEFAULT_VITEST_REPORTERS = ["default"];
49
+ const DEFAULT_VITEST_TEST_EXCLUDE = ["node_modules", "dist"];
50
+ const LIBRARY_VITEST_COVERAGE = {
51
+ exclude: [
52
+ "src/**/@types/**",
53
+ "src/**/index.ts",
54
+ "src/**/*.d.ts",
55
+ "src/**/*.test.ts",
56
+ "src/test-helpers/**"
57
+ ],
58
+ include: ["src/**/*.ts"],
59
+ provider: "v8",
60
+ reporter: ["text", "lcov", "html"],
61
+ reportsDirectory: "./coverage"
62
+ };
63
+ function defineLibraryVitestConfig(params) {
64
+ const config = {
65
+ plugins: params.plugins ?? [],
66
+ test: {
67
+ coverage: LIBRARY_VITEST_COVERAGE,
68
+ exclude: [...DEFAULT_VITEST_TEST_EXCLUDE],
69
+ globals: false,
70
+ onConsoleLog: () => false,
71
+ projects: params.projects,
72
+ reporters: [...DEFAULT_VITEST_REPORTERS]
73
+ }
74
+ };
75
+ if (params.resolve) {
76
+ config.resolve = params.resolve;
77
+ }
78
+ return config;
79
+ }
80
+ export {
81
+ DEFAULT_VITEST_REPORTERS,
82
+ DEFAULT_VITEST_TEST_EXCLUDE,
83
+ LIBRARY_VITEST_COVERAGE,
84
+ defineLibraryVitestConfig
85
+ };
86
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3Rlc3QtcnVubmVycy92aXRlc3QtY29uZmlnLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogU2hhcmVkIHZpdGVzdCBjb25maWd1cmF0aW9uIGZvciBUeXBlU2NyaXB0IExJQlJBUlkgcGFja2FnZXM6IHRoZSBwaW5uZWQgcmVwb3J0ZXJzLCB0aGUgdGVzdCBleGNsdWRlcywgdGhlIGNvdmVyYWdlXG4gKiBibG9jaywgYW5kIHtAbGluayBkZWZpbmVMaWJyYXJ5Vml0ZXN0Q29uZmlnfSwgd2hpY2ggd3JhcHMgYSBwYWNrYWdlJ3Mgb3duIHByb2plY3RzIGluIHRoZW0uXG4gKlxuICogVGhlIE9ic2lkaWFuIHBsdWdpbiBjb25maWd1cmF0aW9uIChgQG1uYW91bW92L29ic2lkaWFuLWRldi10b29sa2l0L3Rlc3QtcnVubmVycy92aXRlc3QtY29uZmlnYCkgYnVpbGRzIG9uIHRoZSBzYW1lXG4gKiByZXBvcnRlcnMgYW5kIGV4Y2x1ZGVzLCBzbyB0aGUgdHdvIGNhbm5vdCBkcmlmdCBhcGFydC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIFRlc3RQcm9qZWN0Q29uZmlndXJhdGlvbixcbiAgVml0ZVVzZXJDb25maWdcbn0gZnJvbSAndml0ZXN0L2NvbmZpZyc7XG5pbXBvcnQgdHlwZSB7IFJlcG9ydGVyIH0gZnJvbSAndml0ZXN0L25vZGUnO1xuXG4vKipcbiAqIE9uZSBlbnRyeSBvZiBhIHZpdGVzdCBgcmVwb3J0ZXJzYCBsaXN0OiB0aGUgbmFtZSBvZiBhIGJ1aWx0LWluIHJlcG9ydGVyIChgJ2RlZmF1bHQnYCwgYCdqdW5pdCdgLFxuICogYCdtaW5pbWFsJ2AsIFx1MjAyNikgb3IgYSByZXBvcnRlciBpbnN0YW5jZS5cbiAqXG4gKiBTcGVsbGVkIG91dCByYXRoZXIgdGhhbiBkZXJpdmVkIGZyb20gdml0ZXN0J3Mgb3duIG9wdGlvbiB0eXBlLCB3aG9zZSBwYXJ0cyAoYFJlcG9ydGVyTmFtZWAsXG4gKiBgSW5saW5lUmVwb3J0ZXJgKSBhcmUgaW50ZXJuYWwgdG8gdml0ZXN0IGFuZCBleHBvcnRlZCBmcm9tIG5vbmUgb2YgaXRzIGVudHJ5IHBvaW50cy4gTmFtaW5nIHRoZSB0d29cbiAqIHNoYXBlcyBkaXJlY3RseSBrZWVwcyBhIHJlcG9ydGVycyBsaXN0IGEgcGxhaW4gYXJyYXkgYSBjYWxsZXIgcHVzaGVzIG9udG8sIHdoaWNoIHRoZSBvcHRpb24gdHlwZSBpdHNlbGZcbiAqIGNhbm5vdCBiZSwgYmVjYXVzZSBpdCBpcyBhIHVuaW9uIG9mIGFuIGFycmF5IHdpdGggYSBzaW5nbGUgdmFsdWUuIFZpdGVzdCdzIHRoaXJkIGFjY2VwdGVkIHNoYXBlLCBhXG4gKiBgW25hbWUsIG9wdGlvbnNdYCB0dXBsZSwgaXMgZGVsaWJlcmF0ZWx5IGxlZnQgb3V0OiBubyByZXBvc2l0b3J5IG9uIHRoaXMgdG9vbGNoYWluIHVzZXMgb25lLlxuICovXG5leHBvcnQgdHlwZSBWaXRlc3RSZXBvcnRlciA9IFJlcG9ydGVyIHwgc3RyaW5nO1xuXG4vKipcbiAqIFRoZSByZXBvcnRlcnMgZXZlcnkgcmVwbyBvbiB0aGlzIHRvb2xjaGFpbiBwcmludHMgdGhyb3VnaC5cbiAqXG4gKiAqKlBpbm5lZCwgYmVjYXVzZSB2aXRlc3QncyBmYWxsYmFjayBpcyBub3Qgb25lIHJlcG9ydGVyIGJ1dCB0d28uKiogQW4gdW5zZXQgYHJlcG9ydGVyc2AgcmVzb2x2ZXMgdG9cbiAqIGBpc0FnZW50ID8gJ21pbmltYWwnIDogJ2RlZmF1bHQnYCwgYW5kIGBzdGQtZW52YCdzIGBpc0FnZW50YCBpcyB0cnVlIGluc2lkZSBldmVyeSBBSSBjb2Rpbmcgc2Vzc2lvbiBcdTIwMTRcbiAqIGl0IHJlYWRzIGBBSV9BR0VOVGAgcGx1cyBhIGRvemVuIHRvb2wtc3BlY2lmaWMgdmFyaWFibGVzLiBgTWluaW1hbFJlcG9ydGVyYCBleHRlbmRzIHRoZSBkZWZhdWx0IG9uZVxuICogd2l0aCBgc3VtbWFyeTogZmFsc2VgLCBgc2lsZW50OiAncGFzc2VkLW9ubHknYCwgYW5kIGEgYHByaW50VGVzdE1vZHVsZWAgdGhhdCByZXR1cm5zIGVhcmx5IHVubGVzcyB0aGVcbiAqIG1vZHVsZSBGQUlMRUQuIFNvIHRoZSBTQU1FIGBucG0gcnVuIHRlc3RgLCBvbiB0aGUgU0FNRSB0cmVlLCBwcmludHMgYSBsaW5lIHBlciB0ZXN0IGZpbGUgZm9yIGFcbiAqIGRldmVsb3BlciBhbmQgbm90IG9uZSBmb3IgYSBzZXNzaW9uLCBhbmQgc3dhbGxvd3MgYSBwYXNzaW5nIHRlc3QncyBjb25zb2xlIG91dHB1dCBpbiB0aGUgc2Vjb25kIGNhc2VcbiAqIG9ubHkuIE1lYXN1cmVkIG9uIHRoZSBgdW5pdC10ZXN0czpzY3JpcHQtdXRpbHNgIHByb2plY3Qgb2YgYG9ic2lkaWFuLWRldi11dGlsc2AgKDQzIGZpbGVzLCB2aXRlc3QgNS4wLjEsXG4gKiAyMDI2LTA5LTIzKTogNDYgcGVyLWZpbGUgbGluZXMgb3ZlciBhIDU4LWxpbmUgbG9nIHBpbm5lZCwgMCBvdmVyIGEgMTMtbGluZSBsb2cgdW5zZXQuXG4gKlxuICogQSBnYXRlIHNob3VsZCBub3QgcmVwb3J0IGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiB3aG8gcnVucyBpdCwgYW5kIGEgYGNvbnNvbGUubG9nYCBhIGRldmVsb3BlciBhZGRzXG4gKiB0byBmaW5kIHNvbWV0aGluZyBzaG91bGQgbm90IHZhbmlzaCBiZWNhdXNlIGEgc2Vzc2lvbiByYW4gdGhlIHN1aXRlLiBUaGUgY29zdCBvZiB0aGUgcGluIGlzIHRoZSB+NDVcbiAqIGxpbmVzIGFib3ZlLlxuICpcbiAqICoqV2hhdCB0aGlzIGRlbGliZXJhdGVseSBkb2VzIE5PVCBjYXJyeSBpcyBhIHJlcG9ydGVyIG5hbWluZyB0aGUgZmlsZSBhIGRlYWQgcG9vbCB3b3JrZXIgdG9vayB3aXRoIGl0LFxuICogYmVjYXVzZSB2aXRlc3QgNSBhbHJlYWR5IGRvZXMgdGhhdCBpdHNlbGYuKiogYGVtaXRVbmV4cGVjdGVkRXhpdGAgaXMgYChjb2RlLCBzaWduYWwpID0+IFx1MjAyNmAgdGhlcmUsIGJ1aWxkaW5nXG4gKiBpdHMgbWVzc2FnZSBmcm9tIHRoZSBleGl0IGNvZGUsIHRoZSBzaWduYWwsIHRoZSBydW5uZXIgc3RhdGUgYW5kIHRoZSBmaWxlcyB0aGUgd29ya2VyIGhlbGQuIERyaXZlblxuICogYWdhaW5zdCByZWFsIHJ1bnMgb24gMjAyNi0wOS0yMyBpbiBhbGwgZm91ciBzaGFwZXM6IGEgd29ya2VyIGBTSUdLSUxMYGVkIG1pZC1maWxlLCBvbmUga2lsbGVkIGF0XG4gKiBpbXBvcnQgYmVmb3JlIGNvbGxlY3Rpb24sIHRoZSBzYW1lIHVuZGVyIGBtaW5pbWFsYCwgYW5kIHRoZSByZWFsaXN0aWMgb25lIFx1MjAxNCB0aGUgZHlpbmcgZmlsZSBhbW9uZyA0MlxuICogb3RoZXJzIGluIGEgcGFyYWxsZWwgcnVuIFx1MjAxNCB3aGljaCByZXBvcnRlZCBgNDIgcGFzc2VkICg0MylgIEFORCBuYW1lZCB0aGUgZmlsZS4gVW5kZXIgdml0ZXN0IDQgbm9uZSBvZlxuICogdGhhdCBleGlzdGVkIGFuZCB0aGUgcmVhZGVyIHdhcyBsZWZ0IHN1YnRyYWN0aW5nIG92ZXIgZmlsZSBuYW1lcyB0aGUgbG9nIGRpZCBub3QgY29udGFpbiwgd2hpY2ggaXNcbiAqIHdoYXQgYSByZWNvbmNpbGluZyByZXBvcnRlciB3YXMgd3JpdHRlbiBmb3I7IG9uIDUgaXQgd291bGQgYmUgYSBtb2R1bGUsIGEgdGVzdCBmaWxlIGFuZCBhIGNvdmVyYWdlXG4gKiBidXJkZW4gZm9yIGV2ZXJ5IGNvbnN1bWVyLCBjYXJyeWluZyBhIGNsYWltIHRoYXQgaXMgbm8gbG9uZ2VyIHRydWUuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1ZJVEVTVF9SRVBPUlRFUlM6IHJlYWRvbmx5IFZpdGVzdFJlcG9ydGVyW10gPSBbJ2RlZmF1bHQnXTtcblxuLyoqXG4gKiBGb2xkZXJzIHZpdGVzdCBuZXZlciBjb2xsZWN0cyB0ZXN0cyBmcm9tLlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9WSVRFU1RfVEVTVF9FWENMVURFOiByZWFkb25seSBzdHJpbmdbXSA9IFsnbm9kZV9tb2R1bGVzJywgJ2Rpc3QnXTtcblxuLyoqXG4gKiBUaGUgY292ZXJhZ2Ugb3B0aW9ucyBvZiBhIGxpYnJhcnkgcGFja2FnZTogdjggb3ZlciBpdHMgb3duIGBzcmMvYCwgd2l0aG91dCB0aGUgZ2VuZXJhdGVkIGJhcnJlbHMsIHRoZVxuICogZGVjbGFyYXRpb25zLCB0aGUgdGVzdHMgYW5kIHRoZSB0ZXN0IGhlbHBlcnMuIFRoZSB0aHJlc2hvbGQgaXMgdGhlIGB0ZXN0OmNvdmVyYWdlYCBzY3JpcHQncyB0byBzZXQuXG4gKi9cbmV4cG9ydCBjb25zdCBMSUJSQVJZX1ZJVEVTVF9DT1ZFUkFHRSA9IHtcbiAgZXhjbHVkZTogW1xuICAgICdzcmMvKiovQHR5cGVzLyoqJyxcbiAgICAnc3JjLyoqL2luZGV4LnRzJyxcbiAgICAnc3JjLyoqLyouZC50cycsXG4gICAgJ3NyYy8qKi8qLnRlc3QudHMnLFxuICAgICdzcmMvdGVzdC1oZWxwZXJzLyoqJ1xuICBdLFxuICBpbmNsdWRlOiBbJ3NyYy8qKi8qLnRzJ10sXG4gIHByb3ZpZGVyOiAndjgnIGFzIGNvbnN0LFxuICByZXBvcnRlcjogWyd0ZXh0JywgJ2xjb3YnLCAnaHRtbCddLFxuICByZXBvcnRzRGlyZWN0b3J5OiAnLi9jb3ZlcmFnZSdcbn07XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGRlZmluZUxpYnJhcnlWaXRlc3RDb25maWd9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmluZUxpYnJhcnlWaXRlc3RDb25maWdQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHZpdGUgcGx1Z2lucywgZS5nLiBhIHJlc29sdmVyIG1hcHBpbmcgc2libGluZyBwYWNrYWdlcyBvbnRvIHRoZWlyIHNvdXJjZS5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbnM/OiBWaXRlVXNlckNvbmZpZ1sncGx1Z2lucyddO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFja2FnZSdzIHZpdGVzdCBwcm9qZWN0cy5cbiAgICovXG4gIHJlYWRvbmx5IHByb2plY3RzOiBUZXN0UHJvamVjdENvbmZpZ3VyYXRpb25bXTtcblxuICAvKipcbiAgICogVGhlIHRvcC1sZXZlbCBgcmVzb2x2ZWAgb3B0aW9ucywgYXBwbGllZCB0byBldmVyeSBwcm9qZWN0IHRoYXQgZG9lcyBub3Qgc2V0IGl0cyBvd24uXG4gICAqL1xuICByZWFkb25seSByZXNvbHZlPzogVml0ZVVzZXJDb25maWdbJ3Jlc29sdmUnXTtcbn1cblxuLyoqXG4gKiBEZWZpbmVzIGEgbGlicmFyeSBwYWNrYWdlJ3Mgdml0ZXN0IGNvbmZpZ3VyYXRpb246IGl0cyBvd24gcHJvamVjdHMsIHdyYXBwZWQgaW4gdGhlIHNoYXJlZCByZXBvcnRlcnMsIGV4Y2x1ZGVzIGFuZFxuICogY292ZXJhZ2UgYmxvY2ssIHdpdGggY29uc29sZSBvdXRwdXQgZnJvbSBwYXNzaW5nIHRlc3RzIHN1cHByZXNzZWQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBUaGUgdml0ZXN0IGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVMaWJyYXJ5Vml0ZXN0Q29uZmlnKHBhcmFtczogRGVmaW5lTGlicmFyeVZpdGVzdENvbmZpZ1BhcmFtcyk6IFZpdGVVc2VyQ29uZmlnIHtcbiAgY29uc3QgY29uZmlnOiBWaXRlVXNlckNvbmZpZyA9IHtcbiAgICBwbHVnaW5zOiBwYXJhbXMucGx1Z2lucyA/PyBbXSxcbiAgICB0ZXN0OiB7XG4gICAgICBjb3ZlcmFnZTogTElCUkFSWV9WSVRFU1RfQ09WRVJBR0UsXG4gICAgICBleGNsdWRlOiBbLi4uREVGQVVMVF9WSVRFU1RfVEVTVF9FWENMVURFXSxcbiAgICAgIGdsb2JhbHM6IGZhbHNlLFxuICAgICAgb25Db25zb2xlTG9nOiAoKTogZmFsc2UgPT4gZmFsc2UsXG4gICAgICBwcm9qZWN0czogcGFyYW1zLnByb2plY3RzLFxuICAgICAgcmVwb3J0ZXJzOiBbLi4uREVGQVVMVF9WSVRFU1RfUkVQT1JURVJTXVxuICAgIH1cbiAgfTtcblxuICBpZiAocGFyYW1zLnJlc29sdmUpIHtcbiAgICBjb25maWcucmVzb2x2ZSA9IHBhcmFtcy5yZXNvbHZlO1xuICB9XG5cbiAgcmV0dXJuIGNvbmZpZztcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0RPLE1BQU0sMkJBQXNELENBQUMsU0FBUztBQUt0RSxNQUFNLDhCQUFpRCxDQUFDLGdCQUFnQixNQUFNO0FBTTlFLE1BQU0sMEJBQTBCO0FBQUEsRUFDckMsU0FBUztBQUFBLElBQ1A7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRjtBQUFBLEVBQ0EsU0FBUyxDQUFDLGFBQWE7QUFBQSxFQUN2QixVQUFVO0FBQUEsRUFDVixVQUFVLENBQUMsUUFBUSxRQUFRLE1BQU07QUFBQSxFQUNqQyxrQkFBa0I7QUFDcEI7QUE2Qk8sU0FBUywwQkFBMEIsUUFBeUQ7QUFDakcsUUFBTSxTQUF5QjtBQUFBLElBQzdCLFNBQVMsT0FBTyxXQUFXLENBQUM7QUFBQSxJQUM1QixNQUFNO0FBQUEsTUFDSixVQUFVO0FBQUEsTUFDVixTQUFTLENBQUMsR0FBRywyQkFBMkI7QUFBQSxNQUN4QyxTQUFTO0FBQUEsTUFDVCxjQUFjLE1BQWE7QUFBQSxNQUMzQixVQUFVLE9BQU87QUFBQSxNQUNqQixXQUFXLENBQUMsR0FBRyx3QkFBd0I7QUFBQSxJQUN6QztBQUFBLEVBQ0Y7QUFFQSxNQUFJLE9BQU8sU0FBUztBQUNsQixXQUFPLFVBQVUsT0FBTztBQUFBLEVBQzFCO0FBRUEsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,52 @@
1
+ /// <reference path="../index.d.mts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * This module provides functions for running tests using the Vitest framework.
6
+ */
7
+ /**
8
+ * Options for running tests with coverage.
9
+ */
10
+ export interface TestCoverageOptions extends TestOptions {
11
+ /**
12
+ * Minimum coverage percentage required. If the actual coverage falls below
13
+ * this threshold, the process exits with a non-zero code.
14
+ *
15
+ * @default `0`
16
+ */
17
+ readonly minCoverageInPercents?: number;
18
+ }
19
+ /**
20
+ * Options for running tests.
21
+ */
22
+ export interface TestOptions {
23
+ /**
24
+ * The projects to run.
25
+ */
26
+ readonly projects?: string[];
27
+ }
28
+ /**
29
+ * Options for running tests in watch mode.
30
+ */
31
+ export type TestWatchOptions = TestOptions;
32
+ /**
33
+ * Runs the test suite.
34
+ *
35
+ * @param options - The options for the test.
36
+ * @returns A {@link Promise} that resolves when the tests have completed.
37
+ */
38
+ export declare function test(options?: TestOptions): Promise<void>;
39
+ /**
40
+ * Runs the test suite with coverage.
41
+ *
42
+ * @param options - Optional coverage configuration.
43
+ * @returns A {@link Promise} that resolves when the tests have completed.
44
+ */
45
+ export declare function testCoverage(options?: TestCoverageOptions): Promise<void>;
46
+ /**
47
+ * Runs the test suite in watch mode.
48
+ *
49
+ * @param options - The options for the test.
50
+ * @returns A {@link Promise} that resolves when the tests have completed.
51
+ */
52
+ export declare function testWatch(options?: TestWatchOptions): Promise<void>;
@@ -0,0 +1,76 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function () {
7
+ function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
+ symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
+ symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
10
+ }
11
+
12
+ function ensureBrowserProcess() {
13
+ const browserProcess = {
14
+ browser: true,
15
+ cwd() {
16
+ return '/';
17
+ },
18
+ env: {},
19
+ platform: 'android'
20
+ };
21
+
22
+ const existingProcess = globalThis.process;
23
+
24
+ if (!existingProcess) {
25
+ globalThis.process = browserProcess;
26
+ return;
27
+ }
28
+
29
+ if (existingProcess.versions?.node) {
30
+ return;
31
+ }
32
+
33
+ const existingProcessRecord = existingProcess;
34
+
35
+ for (const [key, value] of Object.entries(browserProcess)) {
36
+ existingProcessRecord[key] ??= value;
37
+ }
38
+
39
+ existingProcessRecord['browser'] = true;
40
+ }
41
+
42
+ (function initEsm() {
43
+ ensureDisposeSymbols();
44
+ ensureBrowserProcess();
45
+ })();
46
+ })();
47
+
48
+ import { execFromRoot } from "../root.mjs";
49
+ async function test(options = {}) {
50
+ await execFromRoot(["vitest", "run", ...buildProjectFlags(options.projects)]);
51
+ }
52
+ async function testCoverage(options = {}) {
53
+ const threshold = String(options.minCoverageInPercents ?? 0);
54
+ await execFromRoot([
55
+ "vitest",
56
+ "run",
57
+ ...buildProjectFlags(options.projects),
58
+ "--coverage",
59
+ `--coverage.thresholds.lines=${threshold}`,
60
+ `--coverage.thresholds.functions=${threshold}`,
61
+ `--coverage.thresholds.branches=${threshold}`,
62
+ `--coverage.thresholds.statements=${threshold}`
63
+ ]);
64
+ }
65
+ async function testWatch(options = {}) {
66
+ await execFromRoot(["vitest", ...buildProjectFlags(options.projects)]);
67
+ }
68
+ function buildProjectFlags(projects) {
69
+ return (projects ?? []).flatMap((project) => [`--project=${project}`, `--project=${project}:*`]);
70
+ }
71
+ export {
72
+ test,
73
+ testCoverage,
74
+ testWatch
75
+ };
76
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3Rlc3QtcnVubmVycy92aXRlc3QudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBmdW5jdGlvbnMgZm9yIHJ1bm5pbmcgdGVzdHMgdXNpbmcgdGhlIFZpdGVzdCBmcmFtZXdvcmsuXG4gKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIEV4ZWN1dGVzIHZpdGVzdCBhcyBhIENMSSBzdWJwcm9jZXNzOyBjb3JyZWN0bmVzcyBpcyB2ZXJpZmllZCBieSBydW5uaW5nIHRlc3RzLCBub3QgdW5pdCB0ZXN0cy4gKi9cblxuaW1wb3J0IHsgZXhlY0Zyb21Sb290IH0gZnJvbSAnLi4vcm9vdC50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgcnVubmluZyB0ZXN0cyB3aXRoIGNvdmVyYWdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RDb3ZlcmFnZU9wdGlvbnMgZXh0ZW5kcyBUZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBNaW5pbXVtIGNvdmVyYWdlIHBlcmNlbnRhZ2UgcmVxdWlyZWQuIElmIHRoZSBhY3R1YWwgY292ZXJhZ2UgZmFsbHMgYmVsb3dcbiAgICogdGhpcyB0aHJlc2hvbGQsIHRoZSBwcm9jZXNzIGV4aXRzIHdpdGggYSBub24temVybyBjb2RlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgMGBcbiAgICovXG4gIHJlYWRvbmx5IG1pbkNvdmVyYWdlSW5QZXJjZW50cz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBydW5uaW5nIHRlc3RzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBwcm9qZWN0cyB0byBydW4uXG4gICAqL1xuICByZWFkb25seSBwcm9qZWN0cz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHJ1bm5pbmcgdGVzdHMgaW4gd2F0Y2ggbW9kZS5cbiAqL1xuZXhwb3J0IHR5cGUgVGVzdFdhdGNoT3B0aW9ucyA9IFRlc3RPcHRpb25zO1xuXG4vKipcbiAqIFJ1bnMgdGhlIHRlc3Qgc3VpdGUuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIHRlc3QuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHRlc3RzIGhhdmUgY29tcGxldGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGVzdChvcHRpb25zOiBUZXN0T3B0aW9ucyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbJ3ZpdGVzdCcsICdydW4nLCAuLi5idWlsZFByb2plY3RGbGFncyhvcHRpb25zLnByb2plY3RzKV0pO1xufVxuXG4vKipcbiAqIFJ1bnMgdGhlIHRlc3Qgc3VpdGUgd2l0aCBjb3ZlcmFnZS5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIGNvdmVyYWdlIGNvbmZpZ3VyYXRpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHRlc3RzIGhhdmUgY29tcGxldGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGVzdENvdmVyYWdlKG9wdGlvbnM6IFRlc3RDb3ZlcmFnZU9wdGlvbnMgPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB0aHJlc2hvbGQgPSBTdHJpbmcob3B0aW9ucy5taW5Db3ZlcmFnZUluUGVyY2VudHMgPz8gMCk7XG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbXG4gICAgJ3ZpdGVzdCcsXG4gICAgJ3J1bicsXG4gICAgLi4uYnVpbGRQcm9qZWN0RmxhZ3Mob3B0aW9ucy5wcm9qZWN0cyksXG4gICAgJy0tY292ZXJhZ2UnLFxuICAgIGAtLWNvdmVyYWdlLnRocmVzaG9sZHMubGluZXM9JHt0aHJlc2hvbGR9YCxcbiAgICBgLS1jb3ZlcmFnZS50aHJlc2hvbGRzLmZ1bmN0aW9ucz0ke3RocmVzaG9sZH1gLFxuICAgIGAtLWNvdmVyYWdlLnRocmVzaG9sZHMuYnJhbmNoZXM9JHt0aHJlc2hvbGR9YCxcbiAgICBgLS1jb3ZlcmFnZS50aHJlc2hvbGRzLnN0YXRlbWVudHM9JHt0aHJlc2hvbGR9YFxuICBdKTtcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSB0ZXN0IHN1aXRlIGluIHdhdGNoIG1vZGUuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIHRlc3QuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHRlc3RzIGhhdmUgY29tcGxldGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGVzdFdhdGNoKG9wdGlvbnM6IFRlc3RXYXRjaE9wdGlvbnMgPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBleGVjRnJvbVJvb3QoWyd2aXRlc3QnLCAuLi5idWlsZFByb2plY3RGbGFncyhvcHRpb25zLnByb2plY3RzKV0pO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBgLS1wcm9qZWN0YCBmbGFncyBmb3IgdGhlIGdpdmVuIHByb2plY3QgcHJlZml4ZXMuXG4gKiBFYWNoIHByZWZpeCBleHBhbmRzIHRvIGJvdGggYC0tcHJvamVjdD1wcmVmaXhgIChleGFjdCBtYXRjaClcbiAqIGFuZCBgLS1wcm9qZWN0PXByZWZpeDoqYCAoc3ViLXByb2plY3RzKS5cbiAqXG4gKiBAcGFyYW0gcHJvamVjdHMgLSBUaGUgcHJvamVjdCBuYW1lIHByZWZpeGVzLlxuICogQHJldHVybnMgVGhlIGAtLXByb2plY3RgIGZsYWdzIGFycmF5LlxuICovXG5mdW5jdGlvbiBidWlsZFByb2plY3RGbGFncyhwcm9qZWN0cz86IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICByZXR1cm4gKHByb2plY3RzID8/IFtdKS5mbGF0TWFwKChwcm9qZWN0KSA9PiBbYC0tcHJvamVjdD0ke3Byb2plY3R9YCwgYC0tcHJvamVjdD0ke3Byb2plY3R9OipgXSk7XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFBLFNBQVMsb0JBQW9CO0FBb0M3QixlQUFzQixLQUFLLFVBQXVCLENBQUMsR0FBa0I7QUFDbkUsUUFBTSxhQUFhLENBQUMsVUFBVSxPQUFPLEdBQUcsa0JBQWtCLFFBQVEsUUFBUSxDQUFDLENBQUM7QUFDOUU7QUFRQSxlQUFzQixhQUFhLFVBQStCLENBQUMsR0FBa0I7QUFDbkYsUUFBTSxZQUFZLE9BQU8sUUFBUSx5QkFBeUIsQ0FBQztBQUMzRCxRQUFNLGFBQWE7QUFBQSxJQUNqQjtBQUFBLElBQ0E7QUFBQSxJQUNBLEdBQUcsa0JBQWtCLFFBQVEsUUFBUTtBQUFBLElBQ3JDO0FBQUEsSUFDQSwrQkFBK0IsU0FBUztBQUFBLElBQ3hDLG1DQUFtQyxTQUFTO0FBQUEsSUFDNUMsa0NBQWtDLFNBQVM7QUFBQSxJQUMzQyxvQ0FBb0MsU0FBUztBQUFBLEVBQy9DLENBQUM7QUFDSDtBQVFBLGVBQXNCLFVBQVUsVUFBNEIsQ0FBQyxHQUFrQjtBQUM3RSxRQUFNLGFBQWEsQ0FBQyxVQUFVLEdBQUcsa0JBQWtCLFFBQVEsUUFBUSxDQUFDLENBQUM7QUFDdkU7QUFVQSxTQUFTLGtCQUFrQixVQUErQjtBQUN4RCxVQUFRLFlBQVksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsYUFBYSxPQUFPLElBQUksYUFBYSxPQUFPLElBQUksQ0FBQztBQUNqRzsiLAogICJuYW1lcyI6IFtdCn0K
@@ -0,0 +1,37 @@
1
+ /// <reference path="./index.d.mts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Type-checks the generated declaration files (`.d.cts` / `.d.mts`) to prove they are self-contained
6
+ * — every `lib` and internal cross-reference they rely on resolves on its own, independent of the
7
+ * consumer's `tsconfig`.
8
+ *
9
+ * Only diagnostics whose source file is one we own (under the project root, outside `node_modules`)
10
+ * are reported. Diagnostics inside `node_modules` — broken upstream `.d.ts` files we do not control —
11
+ * are ignored. Cross-module-format interop diagnostics in our own declarations (for example a
12
+ * CommonJS `.d.cts` importing an ESM-only package, `TS1541` / `TS1542` / `TS1479`) are NOT ignored:
13
+ * they describe declarations we emit, so the generator must produce valid output (e.g. add the
14
+ * required `resolution-mode` attribute) rather than the validator hiding the problem.
15
+ */
16
+ /**
17
+ * Options for {@link validateDeclarations}.
18
+ */
19
+ export interface ValidateDeclarationsOptions {
20
+ /**
21
+ * When `true`, the ignored `node_modules` diagnostics are printed in full in addition to their
22
+ * count, so they can be inspected. When omitted or `false`, only the count is printed.
23
+ *
24
+ * @default `false`
25
+ */
26
+ readonly isVerbose?: boolean;
27
+ }
28
+ /**
29
+ * Validates the generated declaration files against the `tsconfig.validate-declarations*.json`
30
+ * configs, reporting every diagnostic that concerns the library's own declarations and ignoring only
31
+ * those whose source file lives in `node_modules`.
32
+ *
33
+ * @param options - The options controlling validation output.
34
+ * @returns `true` when the library's own declarations have no type errors, `false` otherwise.
35
+ * @throws If the root folder cannot be found.
36
+ */
37
+ export declare function validateDeclarations(options?: ValidateDeclarationsOptions): boolean;
@@ -0,0 +1,87 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function () {
7
+ function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
+ symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
+ symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
10
+ }
11
+
12
+ function ensureBrowserProcess() {
13
+ const browserProcess = {
14
+ browser: true,
15
+ cwd() {
16
+ return '/';
17
+ },
18
+ env: {},
19
+ platform: 'android'
20
+ };
21
+
22
+ const existingProcess = globalThis.process;
23
+
24
+ if (!existingProcess) {
25
+ globalThis.process = browserProcess;
26
+ return;
27
+ }
28
+
29
+ if (existingProcess.versions?.node) {
30
+ return;
31
+ }
32
+
33
+ const existingProcessRecord = existingProcess;
34
+
35
+ for (const [key, value] of Object.entries(browserProcess)) {
36
+ existingProcessRecord[key] ??= value;
37
+ }
38
+
39
+ existingProcessRecord['browser'] = true;
40
+ }
41
+
42
+ (function initEsm() {
43
+ ensureDisposeSymbols();
44
+ ensureBrowserProcess();
45
+ })();
46
+ })();
47
+
48
+ import { join } from "@mnaoumov/typescript-lib/path";
49
+ import {
50
+ checkProjectTypes,
51
+ parseTsConfig,
52
+ toCanonical
53
+ } from "./check-project-types.mjs";
54
+ import { RepoPaths } from "./repo-paths.mjs";
55
+ import { getRootFolder } from "./root.mjs";
56
+ const NODE_MODULES_SEGMENT = "/node_modules/";
57
+ const VALIDATE_DECLARATIONS_TS_CONFIG_FILE_NAMES = [
58
+ RepoPaths.TsConfigValidateDeclarationsJson,
59
+ RepoPaths.TsConfigValidateDeclarationsCjsJson
60
+ ];
61
+ function validateDeclarations(options = {}) {
62
+ const root = getRootFolder();
63
+ if (!root) {
64
+ throw new Error("Could not find root folder");
65
+ }
66
+ const rootCanonical = toCanonical(root);
67
+ let isValid = true;
68
+ for (const tsConfigFileName of VALIDATE_DECLARATIONS_TS_CONFIG_FILE_NAMES) {
69
+ const { fileNames, options: compilerOptions } = parseTsConfig(join(root, tsConfigFileName));
70
+ const isConfigValid = checkProjectTypes({
71
+ isVerbose: options.isVerbose ?? false,
72
+ options: compilerOptions,
73
+ rootNames: fileNames,
74
+ shouldKeepFile: (fileName) => shouldKeepProjectFile({ fileName, rootCanonical })
75
+ });
76
+ isValid &&= isConfigValid;
77
+ }
78
+ return isValid;
79
+ }
80
+ function shouldKeepProjectFile(params) {
81
+ const { fileName, rootCanonical } = params;
82
+ return fileName.startsWith(`${rootCanonical}/`) && !fileName.includes(NODE_MODULES_SEGMENT);
83
+ }
84
+ export {
85
+ validateDeclarations
86
+ };
87
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3ZhbGlkYXRlLWRlY2xhcmF0aW9ucy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFR5cGUtY2hlY2tzIHRoZSBnZW5lcmF0ZWQgZGVjbGFyYXRpb24gZmlsZXMgKGAuZC5jdHNgIC8gYC5kLm10c2ApIHRvIHByb3ZlIHRoZXkgYXJlIHNlbGYtY29udGFpbmVkXG4gKiBcdTIwMTQgZXZlcnkgYGxpYmAgYW5kIGludGVybmFsIGNyb3NzLXJlZmVyZW5jZSB0aGV5IHJlbHkgb24gcmVzb2x2ZXMgb24gaXRzIG93biwgaW5kZXBlbmRlbnQgb2YgdGhlXG4gKiBjb25zdW1lcidzIGB0c2NvbmZpZ2AuXG4gKlxuICogT25seSBkaWFnbm9zdGljcyB3aG9zZSBzb3VyY2UgZmlsZSBpcyBvbmUgd2Ugb3duICh1bmRlciB0aGUgcHJvamVjdCByb290LCBvdXRzaWRlIGBub2RlX21vZHVsZXNgKVxuICogYXJlIHJlcG9ydGVkLiBEaWFnbm9zdGljcyBpbnNpZGUgYG5vZGVfbW9kdWxlc2AgXHUyMDE0IGJyb2tlbiB1cHN0cmVhbSBgLmQudHNgIGZpbGVzIHdlIGRvIG5vdCBjb250cm9sIFx1MjAxNFxuICogYXJlIGlnbm9yZWQuIENyb3NzLW1vZHVsZS1mb3JtYXQgaW50ZXJvcCBkaWFnbm9zdGljcyBpbiBvdXIgb3duIGRlY2xhcmF0aW9ucyAoZm9yIGV4YW1wbGUgYVxuICogQ29tbW9uSlMgYC5kLmN0c2AgaW1wb3J0aW5nIGFuIEVTTS1vbmx5IHBhY2thZ2UsIGBUUzE1NDFgIC8gYFRTMTU0MmAgLyBgVFMxNDc5YCkgYXJlIE5PVCBpZ25vcmVkOlxuICogdGhleSBkZXNjcmliZSBkZWNsYXJhdGlvbnMgd2UgZW1pdCwgc28gdGhlIGdlbmVyYXRvciBtdXN0IHByb2R1Y2UgdmFsaWQgb3V0cHV0IChlLmcuIGFkZCB0aGVcbiAqIHJlcXVpcmVkIGByZXNvbHV0aW9uLW1vZGVgIGF0dHJpYnV0ZSkgcmF0aGVyIHRoYW4gdGhlIHZhbGlkYXRvciBoaWRpbmcgdGhlIHByb2JsZW0uXG4gKi9cblxuaW1wb3J0IHsgam9pbiB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9wYXRoJztcblxuaW1wb3J0IHtcbiAgY2hlY2tQcm9qZWN0VHlwZXMsXG4gIHBhcnNlVHNDb25maWcsXG4gIHRvQ2Fub25pY2FsXG59IGZyb20gJy4vY2hlY2stcHJvamVjdC10eXBlcy50cyc7XG5pbXBvcnQgeyBSZXBvUGF0aHMgfSBmcm9tICcuL3JlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHsgZ2V0Um9vdEZvbGRlciB9IGZyb20gJy4vcm9vdC50cyc7XG5cbmNvbnN0IE5PREVfTU9EVUxFU19TRUdNRU5UID0gJy9ub2RlX21vZHVsZXMvJztcblxuY29uc3QgVkFMSURBVEVfREVDTEFSQVRJT05TX1RTX0NPTkZJR19GSUxFX05BTUVTID0gW1xuICBSZXBvUGF0aHMuVHNDb25maWdWYWxpZGF0ZURlY2xhcmF0aW9uc0pzb24sXG4gIFJlcG9QYXRocy5Uc0NvbmZpZ1ZhbGlkYXRlRGVjbGFyYXRpb25zQ2pzSnNvblxuXTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgdmFsaWRhdGVEZWNsYXJhdGlvbnN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRlRGVjbGFyYXRpb25zT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGVuIGB0cnVlYCwgdGhlIGlnbm9yZWQgYG5vZGVfbW9kdWxlc2AgZGlhZ25vc3RpY3MgYXJlIHByaW50ZWQgaW4gZnVsbCBpbiBhZGRpdGlvbiB0byB0aGVpclxuICAgKiBjb3VudCwgc28gdGhleSBjYW4gYmUgaW5zcGVjdGVkLiBXaGVuIG9taXR0ZWQgb3IgYGZhbHNlYCwgb25seSB0aGUgY291bnQgaXMgcHJpbnRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNWZXJib3NlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgc2hvdWxkS2VlcFByb2plY3RGaWxlfS5cbiAqL1xuaW50ZXJmYWNlIFNob3VsZEtlZXBQcm9qZWN0RmlsZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBBYnNvbHV0ZSBwYXRoIG9mIHRoZSBmaWxlIHVuZGVyIGNvbnNpZGVyYXRpb24uXG4gICAqL1xuICByZWFkb25seSBmaWxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBYnNvbHV0ZSAoY2Fub25pY2FsKSBwYXRoIG9mIHRoZSBwcm9qZWN0IHJvb3QuXG4gICAqL1xuICByZWFkb25seSByb290Q2Fub25pY2FsOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHRoZSBnZW5lcmF0ZWQgZGVjbGFyYXRpb24gZmlsZXMgYWdhaW5zdCB0aGUgYHRzY29uZmlnLnZhbGlkYXRlLWRlY2xhcmF0aW9ucyouanNvbmBcbiAqIGNvbmZpZ3MsIHJlcG9ydGluZyBldmVyeSBkaWFnbm9zdGljIHRoYXQgY29uY2VybnMgdGhlIGxpYnJhcnkncyBvd24gZGVjbGFyYXRpb25zIGFuZCBpZ25vcmluZyBvbmx5XG4gKiB0aG9zZSB3aG9zZSBzb3VyY2UgZmlsZSBsaXZlcyBpbiBgbm9kZV9tb2R1bGVzYC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGNvbnRyb2xsaW5nIHZhbGlkYXRpb24gb3V0cHV0LlxuICogQHJldHVybnMgYHRydWVgIHdoZW4gdGhlIGxpYnJhcnkncyBvd24gZGVjbGFyYXRpb25zIGhhdmUgbm8gdHlwZSBlcnJvcnMsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICogQHRocm93cyBJZiB0aGUgcm9vdCBmb2xkZXIgY2Fubm90IGJlIGZvdW5kLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9jb25zaXN0ZW50LWJvb2xlYW4tbmFtZSAtLSBUaGUgbmFtZSBzdGF0ZXMgdGhlIGFjdGlvbjsgdGhlIGJvb2xlYW4gb25seSByZXBvcnRzIHdoZXRoZXIgdmFsaWRhdGlvbiBwYXNzZWQuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVEZWNsYXJhdGlvbnMob3B0aW9uczogVmFsaWRhdGVEZWNsYXJhdGlvbnNPcHRpb25zID0ge30pOiBib29sZWFuIHtcbiAgY29uc3Qgcm9vdCA9IGdldFJvb3RGb2xkZXIoKTtcblxuICBpZiAoIXJvb3QpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIHJvb3QgZm9sZGVyJyk7XG4gIH1cblxuICBjb25zdCByb290Q2Fub25pY2FsID0gdG9DYW5vbmljYWwocm9vdCk7XG5cbiAgbGV0IGlzVmFsaWQgPSB0cnVlO1xuXG4gIGZvciAoY29uc3QgdHNDb25maWdGaWxlTmFtZSBvZiBWQUxJREFURV9ERUNMQVJBVElPTlNfVFNfQ09ORklHX0ZJTEVfTkFNRVMpIHtcbiAgICBjb25zdCB7IGZpbGVOYW1lcywgb3B0aW9uczogY29tcGlsZXJPcHRpb25zIH0gPSBwYXJzZVRzQ29uZmlnKGpvaW4ocm9vdCwgdHNDb25maWdGaWxlTmFtZSkpO1xuICAgIGNvbnN0IGlzQ29uZmlnVmFsaWQgPSBjaGVja1Byb2plY3RUeXBlcyh7XG4gICAgICBpc1ZlcmJvc2U6IG9wdGlvbnMuaXNWZXJib3NlID8/IGZhbHNlLFxuICAgICAgb3B0aW9uczogY29tcGlsZXJPcHRpb25zLFxuICAgICAgcm9vdE5hbWVzOiBmaWxlTmFtZXMsXG4gICAgICBzaG91bGRLZWVwRmlsZTogKGZpbGVOYW1lKSA9PiBzaG91bGRLZWVwUHJvamVjdEZpbGUoeyBmaWxlTmFtZSwgcm9vdENhbm9uaWNhbCB9KVxuICAgIH0pO1xuICAgIGlzVmFsaWQgJiY9IGlzQ29uZmlnVmFsaWQ7XG4gIH1cblxuICByZXR1cm4gaXNWYWxpZDtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBmaWxlIGJlbG9uZ3MgdG8gdGhlIHByb2plY3QgKHVuZGVyIHRoZSByb290IGZvbGRlciwgb3V0c2lkZSBgbm9kZV9tb2R1bGVzYCkuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiB0aGUgZmlsZSBiZWxvbmdzIHRvIHRoZSBwcm9qZWN0LlxuICovXG5mdW5jdGlvbiBzaG91bGRLZWVwUHJvamVjdEZpbGUocGFyYW1zOiBTaG91bGRLZWVwUHJvamVjdEZpbGVQYXJhbXMpOiBib29sZWFuIHtcbiAgY29uc3QgeyBmaWxlTmFtZSwgcm9vdENhbm9uaWNhbCB9ID0gcGFyYW1zO1xuICByZXR1cm4gZmlsZU5hbWUuc3RhcnRzV2l0aChgJHtyb290Q2Fub25pY2FsfS9gKSAmJiAhZmlsZU5hbWUuaW5jbHVkZXMoTk9ERV9NT0RVTEVTX1NFR01FTlQpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFlQSxTQUFTLFlBQVk7QUFFckI7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxpQkFBaUI7QUFDMUIsU0FBUyxxQkFBcUI7QUFFOUIsTUFBTSx1QkFBdUI7QUFFN0IsTUFBTSw2Q0FBNkM7QUFBQSxFQUNqRCxVQUFVO0FBQUEsRUFDVixVQUFVO0FBQ1o7QUF3Q08sU0FBUyxxQkFBcUIsVUFBdUMsQ0FBQyxHQUFZO0FBQ3ZGLFFBQU0sT0FBTyxjQUFjO0FBRTNCLE1BQUksQ0FBQyxNQUFNO0FBQ1QsVUFBTSxJQUFJLE1BQU0sNEJBQTRCO0FBQUEsRUFDOUM7QUFFQSxRQUFNLGdCQUFnQixZQUFZLElBQUk7QUFFdEMsTUFBSSxVQUFVO0FBRWQsYUFBVyxvQkFBb0IsNENBQTRDO0FBQ3pFLFVBQU0sRUFBRSxXQUFXLFNBQVMsZ0JBQWdCLElBQUksY0FBYyxLQUFLLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUYsVUFBTSxnQkFBZ0Isa0JBQWtCO0FBQUEsTUFDdEMsV0FBVyxRQUFRLGFBQWE7QUFBQSxNQUNoQyxTQUFTO0FBQUEsTUFDVCxXQUFXO0FBQUEsTUFDWCxnQkFBZ0IsQ0FBQyxhQUFhLHNCQUFzQixFQUFFLFVBQVUsY0FBYyxDQUFDO0FBQUEsSUFDakYsQ0FBQztBQUNELGdCQUFZO0FBQUEsRUFDZDtBQUVBLFNBQU87QUFDVDtBQVFBLFNBQVMsc0JBQXNCLFFBQThDO0FBQzNFLFFBQU0sRUFBRSxVQUFVLGNBQWMsSUFBSTtBQUNwQyxTQUFPLFNBQVMsV0FBVyxHQUFHLGFBQWEsR0FBRyxLQUFLLENBQUMsU0FBUyxTQUFTLG9CQUFvQjtBQUM1RjsiLAogICJuYW1lcyI6IFtdCn0K