@mnaoumov/typescript-dev-toolkit 0.0.0 → 1.1.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 (332) 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 +483 -0
  61. package/dist/lib/cjs/library-build.d.cts +101 -0
  62. package/dist/lib/cjs/library-references.d.cts +5 -0
  63. package/dist/lib/cjs/linters/cspell-content.cjs +124 -0
  64. package/dist/lib/cjs/linters/cspell-content.d.cts +46 -0
  65. package/dist/lib/cjs/linters/cspell.cjs +103 -0
  66. package/dist/lib/cjs/linters/cspell.d.cts +36 -0
  67. package/dist/lib/cjs/linters/eslint-agnostic-core-boundary.cjs +94 -0
  68. package/dist/lib/cjs/linters/eslint-agnostic-core-boundary.d.cts +49 -0
  69. package/dist/lib/cjs/linters/eslint-config.cjs +1068 -0
  70. package/dist/lib/cjs/linters/eslint-config.d.cts +123 -0
  71. package/dist/lib/cjs/linters/eslint-no-restricted-syntax.cjs +130 -0
  72. package/dist/lib/cjs/linters/eslint-no-restricted-syntax.d.cts +27 -0
  73. package/dist/lib/cjs/linters/eslint-rules/in-house-plugin.cjs +116 -0
  74. package/dist/lib/cjs/linters/eslint-rules/in-house-plugin.d.cts +26 -0
  75. package/dist/lib/cjs/linters/eslint-rules/index.cjs +132 -0
  76. package/dist/lib/cjs/linters/eslint-rules/index.d.cts +13 -0
  77. package/dist/lib/cjs/linters/eslint-rules/no-async-callback-to-unsafe-return.cjs +175 -0
  78. package/dist/lib/cjs/linters/eslint-rules/no-async-callback-to-unsafe-return.d.cts +10 -0
  79. package/dist/lib/cjs/linters/eslint-rules/no-unresolved-jsdoc-link.cjs +290 -0
  80. package/dist/lib/cjs/linters/eslint-rules/no-unresolved-jsdoc-link.d.cts +10 -0
  81. package/dist/lib/cjs/linters/eslint-rules/no-unused-params-members.cjs +265 -0
  82. package/dist/lib/cjs/linters/eslint-rules/no-unused-params-members.d.cts +41 -0
  83. package/dist/lib/cjs/linters/eslint-rules/no-used-underscore-variables.cjs +134 -0
  84. package/dist/lib/cjs/linters/eslint-rules/no-used-underscore-variables.d.cts +20 -0
  85. package/dist/lib/cjs/linters/eslint-rules/params-options-name-match.cjs +217 -0
  86. package/dist/lib/cjs/linters/eslint-rules/params-options-name-match.d.cts +36 -0
  87. package/dist/lib/cjs/linters/eslint-rules/prefer-noop-async.cjs +126 -0
  88. package/dist/lib/cjs/linters/eslint-rules/prefer-noop-async.d.cts +10 -0
  89. package/dist/lib/cjs/linters/eslint-rules/readonly-params-options-result-members.cjs +125 -0
  90. package/dist/lib/cjs/linters/eslint-rules/readonly-params-options-result-members.d.cts +20 -0
  91. package/dist/lib/cjs/linters/eslint-rules/require-method-template.cjs +181 -0
  92. package/dist/lib/cjs/linters/eslint-rules/require-method-template.d.cts +14 -0
  93. package/dist/lib/cjs/linters/eslint-rules/require-super-call.cjs +217 -0
  94. package/dist/lib/cjs/linters/eslint-rules/require-super-call.d.cts +10 -0
  95. package/dist/lib/cjs/linters/eslint-rules/rule-tester-helper.cjs +92 -0
  96. package/dist/lib/cjs/linters/eslint-rules/rule-tester-helper.d.cts +18 -0
  97. package/dist/lib/cjs/linters/eslint-rules/ts-estree-node.cjs +92 -0
  98. package/dist/lib/cjs/linters/eslint-rules/ts-estree-node.d.cts +23 -0
  99. package/dist/lib/cjs/linters/eslint-types/@types/@eslint-community__eslint-plugin-eslint-comments__configs.d.cts +20 -0
  100. package/dist/lib/cjs/linters/eslint-types/@types/eslint-plugin-verify-tsdoc.d.cts +17 -0
  101. package/dist/lib/cjs/linters/eslint.cjs +196 -0
  102. package/dist/lib/cjs/linters/eslint.d.cts +74 -0
  103. package/dist/lib/cjs/linters/index.cjs +138 -0
  104. package/dist/lib/cjs/linters/index.d.cts +15 -0
  105. package/dist/lib/cjs/linters/lint-ignores.cjs +91 -0
  106. package/dist/lib/cjs/linters/lint-ignores.d.cts +30 -0
  107. package/dist/lib/cjs/linters/markdownlint-cli2-config.cjs +169 -0
  108. package/dist/lib/cjs/linters/markdownlint-cli2-config.d.cts +11 -0
  109. package/dist/lib/cjs/linters/markdownlint-content.cjs +120 -0
  110. package/dist/lib/cjs/linters/markdownlint-content.d.cts +47 -0
  111. package/dist/lib/cjs/linters/markdownlint-ignores.cjs +95 -0
  112. package/dist/lib/cjs/linters/markdownlint-ignores.d.cts +35 -0
  113. package/dist/lib/cjs/linters/markdownlint-rules/index.cjs +99 -0
  114. package/dist/lib/cjs/linters/markdownlint-rules/index.d.cts +2 -0
  115. package/dist/lib/cjs/linters/markdownlint-rules/no-soft-break-in-paragraph.cjs +152 -0
  116. package/dist/lib/cjs/linters/markdownlint-rules/no-soft-break-in-paragraph.d.cts +35 -0
  117. package/dist/lib/cjs/linters/markdownlint-types/@types/markdownlint-cli2-config-schema.d.cts +1344 -0
  118. package/dist/lib/cjs/linters/markdownlint-types/@types/markdownlint-cli2.d.cts +67 -0
  119. package/dist/lib/cjs/linters/markdownlint.cjs +151 -0
  120. package/dist/lib/cjs/linters/markdownlint.d.cts +32 -0
  121. package/dist/lib/cjs/linters/over-exposure.cjs +685 -0
  122. package/dist/lib/cjs/linters/over-exposure.d.cts +357 -0
  123. package/dist/lib/cjs/nano-staged-config.cjs +148 -0
  124. package/dist/lib/cjs/nano-staged-config.d.cts +54 -0
  125. package/dist/lib/cjs/npm-publish.cjs +93 -0
  126. package/dist/lib/cjs/npm-publish.d.cts +19 -0
  127. package/dist/lib/cjs/npm-run.cjs +120 -0
  128. package/dist/lib/cjs/npm-run.d.cts +34 -0
  129. package/dist/lib/cjs/npm.cjs +200 -0
  130. package/dist/lib/cjs/npm.d.cts +168 -0
  131. package/dist/lib/cjs/package-lock-integrity.cjs +134 -0
  132. package/dist/lib/cjs/package-lock-integrity.d.cts +38 -0
  133. package/dist/lib/cjs/package-manager.cjs +291 -0
  134. package/dist/lib/cjs/package-manager.d.cts +93 -0
  135. package/dist/lib/cjs/released-issues.cjs +178 -0
  136. package/dist/lib/cjs/released-issues.d.cts +79 -0
  137. package/dist/lib/cjs/repo-paths.cjs +167 -0
  138. package/dist/lib/cjs/repo-paths.d.cts +318 -0
  139. package/dist/lib/cjs/root.cjs +150 -0
  140. package/dist/lib/cjs/root.d.cts +107 -0
  141. package/dist/lib/cjs/test-runners/index.cjs +102 -0
  142. package/dist/lib/cjs/test-runners/index.d.cts +3 -0
  143. package/dist/lib/cjs/test-runners/vitest-config.cjs +126 -0
  144. package/dist/lib/cjs/test-runners/vitest-config.d.cts +90 -0
  145. package/dist/lib/cjs/test-runners/vitest.cjs +115 -0
  146. package/dist/lib/cjs/test-runners/vitest.d.cts +52 -0
  147. package/dist/lib/cjs/validate-declarations.cjs +120 -0
  148. package/dist/lib/cjs/validate-declarations.d.cts +37 -0
  149. package/dist/lib/cjs/version.cjs +758 -0
  150. package/dist/lib/cjs/version.d.cts +418 -0
  151. package/dist/lib/esm/build.d.mts +59 -0
  152. package/dist/lib/esm/build.mjs +165 -0
  153. package/dist/lib/esm/bundlers/esbuild-impl/change-extension-plugin.d.mts +25 -0
  154. package/dist/lib/esm/bundlers/esbuild-impl/change-extension-plugin.mjs +101 -0
  155. package/dist/lib/esm/bundlers/esbuild-impl/custom-esbuild-options-plugin.d.mts +14 -0
  156. package/dist/lib/esm/bundlers/esbuild-impl/custom-esbuild-options-plugin.mjs +59 -0
  157. package/dist/lib/esm/bundlers/esbuild-impl/fix-esm-plugin.d.mts +13 -0
  158. package/dist/lib/esm/bundlers/esbuild-impl/fix-esm-plugin.mjs +69 -0
  159. package/dist/lib/esm/bundlers/esbuild-impl/index.d.mts +6 -0
  160. package/dist/lib/esm/bundlers/esbuild-impl/index.mjs +60 -0
  161. package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.d.mts +143 -0
  162. package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.mjs +176 -0
  163. package/dist/lib/esm/bundlers/esbuild-impl/svelte-wrapper-plugin.d.mts +14 -0
  164. package/dist/lib/esm/bundlers/esbuild-impl/svelte-wrapper-plugin.mjs +82 -0
  165. package/dist/lib/esm/bundlers/index.d.mts +2 -0
  166. package/dist/lib/esm/bundlers/index.mjs +52 -0
  167. package/dist/lib/esm/check-project-types.d.mts +92 -0
  168. package/dist/lib/esm/check-project-types.mjs +123 -0
  169. package/dist/lib/esm/cli-utils.d.mts +123 -0
  170. package/dist/lib/esm/cli-utils.mjs +225 -0
  171. package/dist/lib/esm/code-generator.d.mts +14 -0
  172. package/dist/lib/esm/code-generator.mjs +59 -0
  173. package/dist/lib/esm/commitlint-config.d.mts +14 -0
  174. package/dist/lib/esm/commitlint-config.mjs +79 -0
  175. package/dist/lib/esm/commitlint-forbidden-patterns.d.mts +37 -0
  176. package/dist/lib/esm/commitlint-forbidden-patterns.mjs +75 -0
  177. package/dist/lib/esm/commitlint-spellcheck-header.d.mts +40 -0
  178. package/dist/lib/esm/commitlint-spellcheck-header.mjs +87 -0
  179. package/dist/lib/esm/env-toggle.d.mts +42 -0
  180. package/dist/lib/esm/env-toggle.mjs +84 -0
  181. package/dist/lib/esm/exec.d.mts +162 -0
  182. package/dist/lib/esm/exec.mjs +410 -0
  183. package/dist/lib/esm/forbidden-patterns.d.mts +57 -0
  184. package/dist/lib/esm/forbidden-patterns.mjs +108 -0
  185. package/dist/lib/esm/formatters/dprint.d.mts +33 -0
  186. package/dist/lib/esm/formatters/dprint.mjs +75 -0
  187. package/dist/lib/esm/formatters/index.d.mts +2 -0
  188. package/dist/lib/esm/formatters/index.mjs +52 -0
  189. package/dist/lib/esm/fs.d.mts +80 -0
  190. package/dist/lib/esm/fs.mjs +89 -0
  191. package/dist/lib/esm/gate.d.mts +93 -0
  192. package/dist/lib/esm/gate.mjs +106 -0
  193. package/dist/lib/esm/git.d.mts +37 -0
  194. package/dist/lib/esm/git.mjs +72 -0
  195. package/dist/lib/esm/index.d.mts +35 -0
  196. package/dist/lib/esm/index.mjs +110 -0
  197. package/dist/lib/esm/json.d.mts +102 -0
  198. package/dist/lib/esm/json.mjs +106 -0
  199. package/dist/lib/esm/library-build.d.mts +101 -0
  200. package/dist/lib/esm/library-build.mjs +443 -0
  201. package/dist/lib/esm/library-references.d.mts +5 -0
  202. package/dist/lib/esm/linters/cspell-content.d.mts +46 -0
  203. package/dist/lib/esm/linters/cspell-content.mjs +87 -0
  204. package/dist/lib/esm/linters/cspell.d.mts +36 -0
  205. package/dist/lib/esm/linters/cspell.mjs +69 -0
  206. package/dist/lib/esm/linters/eslint-agnostic-core-boundary.d.mts +49 -0
  207. package/dist/lib/esm/linters/eslint-agnostic-core-boundary.mjs +57 -0
  208. package/dist/lib/esm/linters/eslint-config.d.mts +123 -0
  209. package/dist/lib/esm/linters/eslint-config.mjs +1022 -0
  210. package/dist/lib/esm/linters/eslint-no-restricted-syntax.d.mts +27 -0
  211. package/dist/lib/esm/linters/eslint-no-restricted-syntax.mjs +93 -0
  212. package/dist/lib/esm/linters/eslint-rules/in-house-plugin.d.mts +26 -0
  213. package/dist/lib/esm/linters/eslint-rules/in-house-plugin.mjs +77 -0
  214. package/dist/lib/esm/linters/eslint-rules/index.d.mts +13 -0
  215. package/dist/lib/esm/linters/eslint-rules/index.mjs +74 -0
  216. package/dist/lib/esm/linters/eslint-rules/no-async-callback-to-unsafe-return.d.mts +10 -0
  217. package/dist/lib/esm/linters/eslint-rules/no-async-callback-to-unsafe-return.mjs +144 -0
  218. package/dist/lib/esm/linters/eslint-rules/no-unresolved-jsdoc-link.d.mts +10 -0
  219. package/dist/lib/esm/linters/eslint-rules/no-unresolved-jsdoc-link.mjs +277 -0
  220. package/dist/lib/esm/linters/eslint-rules/no-unused-params-members.d.mts +41 -0
  221. package/dist/lib/esm/linters/eslint-rules/no-unused-params-members.mjs +227 -0
  222. package/dist/lib/esm/linters/eslint-rules/no-used-underscore-variables.d.mts +20 -0
  223. package/dist/lib/esm/linters/eslint-rules/no-used-underscore-variables.mjs +96 -0
  224. package/dist/lib/esm/linters/eslint-rules/params-options-name-match.d.mts +36 -0
  225. package/dist/lib/esm/linters/eslint-rules/params-options-name-match.mjs +179 -0
  226. package/dist/lib/esm/linters/eslint-rules/prefer-noop-async.d.mts +10 -0
  227. package/dist/lib/esm/linters/eslint-rules/prefer-noop-async.mjs +88 -0
  228. package/dist/lib/esm/linters/eslint-rules/readonly-params-options-result-members.d.mts +20 -0
  229. package/dist/lib/esm/linters/eslint-rules/readonly-params-options-result-members.mjs +87 -0
  230. package/dist/lib/esm/linters/eslint-rules/require-method-template.d.mts +14 -0
  231. package/dist/lib/esm/linters/eslint-rules/require-method-template.mjs +142 -0
  232. package/dist/lib/esm/linters/eslint-rules/require-super-call.d.mts +10 -0
  233. package/dist/lib/esm/linters/eslint-rules/require-super-call.mjs +183 -0
  234. package/dist/lib/esm/linters/eslint-rules/rule-tester-helper.d.mts +18 -0
  235. package/dist/lib/esm/linters/eslint-rules/rule-tester-helper.mjs +55 -0
  236. package/dist/lib/esm/linters/eslint-rules/ts-estree-node.d.mts +23 -0
  237. package/dist/lib/esm/linters/eslint-rules/ts-estree-node.mjs +55 -0
  238. package/dist/lib/esm/linters/eslint-types/@types/@eslint-community__eslint-plugin-eslint-comments__configs.d.mts +20 -0
  239. package/dist/lib/esm/linters/eslint-types/@types/eslint-plugin-verify-tsdoc.d.mts +17 -0
  240. package/dist/lib/esm/linters/eslint.d.mts +74 -0
  241. package/dist/lib/esm/linters/eslint.mjs +159 -0
  242. package/dist/lib/esm/linters/index.d.mts +15 -0
  243. package/dist/lib/esm/linters/index.mjs +78 -0
  244. package/dist/lib/esm/linters/lint-ignores.d.mts +30 -0
  245. package/dist/lib/esm/linters/lint-ignores.mjs +54 -0
  246. package/dist/lib/esm/linters/markdownlint-cli2-config.d.mts +11 -0
  247. package/dist/lib/esm/linters/markdownlint-cli2-config.mjs +122 -0
  248. package/dist/lib/esm/linters/markdownlint-content.d.mts +47 -0
  249. package/dist/lib/esm/linters/markdownlint-content.mjs +83 -0
  250. package/dist/lib/esm/linters/markdownlint-ignores.d.mts +35 -0
  251. package/dist/lib/esm/linters/markdownlint-ignores.mjs +57 -0
  252. package/dist/lib/esm/linters/markdownlint-rules/index.d.mts +2 -0
  253. package/dist/lib/esm/linters/markdownlint-rules/index.mjs +52 -0
  254. package/dist/lib/esm/linters/markdownlint-rules/no-soft-break-in-paragraph.d.mts +35 -0
  255. package/dist/lib/esm/linters/markdownlint-rules/no-soft-break-in-paragraph.mjs +114 -0
  256. package/dist/lib/esm/linters/markdownlint-types/@types/markdownlint-cli2-config-schema.d.mts +1344 -0
  257. package/dist/lib/esm/linters/markdownlint-types/@types/markdownlint-cli2.d.mts +67 -0
  258. package/dist/lib/esm/linters/markdownlint.d.mts +32 -0
  259. package/dist/lib/esm/linters/markdownlint.mjs +124 -0
  260. package/dist/lib/esm/linters/over-exposure.d.mts +357 -0
  261. package/dist/lib/esm/linters/over-exposure.mjs +672 -0
  262. package/dist/lib/esm/nano-staged-config.d.mts +54 -0
  263. package/dist/lib/esm/nano-staged-config.mjs +103 -0
  264. package/dist/lib/esm/npm-publish.d.mts +19 -0
  265. package/dist/lib/esm/npm-publish.mjs +56 -0
  266. package/dist/lib/esm/npm-run.d.mts +34 -0
  267. package/dist/lib/esm/npm-run.mjs +81 -0
  268. package/dist/lib/esm/npm.d.mts +168 -0
  269. package/dist/lib/esm/npm.mjs +155 -0
  270. package/dist/lib/esm/package-lock-integrity.d.mts +38 -0
  271. package/dist/lib/esm/package-lock-integrity.mjs +99 -0
  272. package/dist/lib/esm/package-manager.d.mts +93 -0
  273. package/dist/lib/esm/package-manager.mjs +245 -0
  274. package/dist/lib/esm/released-issues.d.mts +79 -0
  275. package/dist/lib/esm/released-issues.mjs +143 -0
  276. package/dist/lib/esm/repo-paths.d.mts +318 -0
  277. package/dist/lib/esm/repo-paths.mjs +130 -0
  278. package/dist/lib/esm/root.d.mts +107 -0
  279. package/dist/lib/esm/root.mjs +115 -0
  280. package/dist/lib/esm/test-runners/index.d.mts +3 -0
  281. package/dist/lib/esm/test-runners/index.mjs +54 -0
  282. package/dist/lib/esm/test-runners/vitest-config.d.mts +90 -0
  283. package/dist/lib/esm/test-runners/vitest-config.mjs +86 -0
  284. package/dist/lib/esm/test-runners/vitest.d.mts +52 -0
  285. package/dist/lib/esm/test-runners/vitest.mjs +76 -0
  286. package/dist/lib/esm/validate-declarations.d.mts +37 -0
  287. package/dist/lib/esm/validate-declarations.mjs +87 -0
  288. package/dist/lib/esm/version.d.mts +418 -0
  289. package/dist/lib/esm/version.mjs +723 -0
  290. package/formatters/dprint/package.json +6 -0
  291. package/formatters/index/package.json +6 -0
  292. package/formatters/package.json +6 -0
  293. package/linters/cspell/package.json +6 -0
  294. package/linters/cspell-content/package.json +6 -0
  295. package/linters/eslint/package.json +6 -0
  296. package/linters/eslint-agnostic-core-boundary/package.json +6 -0
  297. package/linters/eslint-config/package.json +6 -0
  298. package/linters/eslint-no-restricted-syntax/package.json +6 -0
  299. package/linters/eslint-rules/in-house-plugin/package.json +6 -0
  300. package/linters/eslint-rules/index/package.json +6 -0
  301. package/linters/eslint-rules/no-async-callback-to-unsafe-return/package.json +6 -0
  302. package/linters/eslint-rules/no-unresolved-jsdoc-link/package.json +6 -0
  303. package/linters/eslint-rules/no-unused-params-members/package.json +6 -0
  304. package/linters/eslint-rules/no-used-underscore-variables/package.json +6 -0
  305. package/linters/eslint-rules/package.json +6 -0
  306. package/linters/eslint-rules/params-options-name-match/package.json +6 -0
  307. package/linters/eslint-rules/prefer-noop-async/package.json +6 -0
  308. package/linters/eslint-rules/readonly-params-options-result-members/package.json +6 -0
  309. package/linters/eslint-rules/require-method-template/package.json +6 -0
  310. package/linters/eslint-rules/require-super-call/package.json +6 -0
  311. package/linters/eslint-rules/rule-tester-helper/package.json +6 -0
  312. package/linters/eslint-rules/ts-estree-node/package.json +6 -0
  313. package/linters/eslint-types/@types/@eslint-community__eslint-plugin-eslint-comments__configs/package.json +4 -0
  314. package/linters/eslint-types/@types/eslint-plugin-verify-tsdoc/package.json +4 -0
  315. package/linters/index/package.json +6 -0
  316. package/linters/lint-ignores/package.json +6 -0
  317. package/linters/markdownlint/package.json +6 -0
  318. package/linters/markdownlint-cli2-config/package.json +6 -0
  319. package/linters/markdownlint-content/package.json +6 -0
  320. package/linters/markdownlint-ignores/package.json +6 -0
  321. package/linters/markdownlint-rules/index/package.json +6 -0
  322. package/linters/markdownlint-rules/no-soft-break-in-paragraph/package.json +6 -0
  323. package/linters/markdownlint-rules/package.json +6 -0
  324. package/linters/markdownlint-types/@types/markdownlint-cli2/package.json +4 -0
  325. package/linters/markdownlint-types/@types/markdownlint-cli2-config-schema/package.json +4 -0
  326. package/linters/over-exposure/package.json +6 -0
  327. package/linters/package.json +6 -0
  328. package/package.json +329 -13
  329. package/test-runners/index/package.json +6 -0
  330. package/test-runners/package.json +6 -0
  331. package/test-runners/vitest/package.json +6 -0
  332. package/test-runners/vitest-config/package.json +6 -0
@@ -0,0 +1,155 @@
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 { ensureNonNullable } from "@mnaoumov/typescript-lib/type-guards";
50
+ import {
51
+ editJson,
52
+ editJsonSync,
53
+ readJson,
54
+ readJsonSync,
55
+ writeJson,
56
+ writeJsonSync
57
+ } from "./json.mjs";
58
+ import { RepoPaths } from "./repo-paths.mjs";
59
+ import { resolvePathFromRoot } from "./root.mjs";
60
+ async function editNpmShrinkWrapJson(editFunction, options = {}) {
61
+ const {
62
+ cwd,
63
+ shouldSkipIfMissing
64
+ } = options;
65
+ await editJson(normalizeOptionalProperties({ editFunction, path: getNpmShrinkWrapJsonPath(cwd), shouldSkipIfMissing }));
66
+ }
67
+ async function editPackageJson(editFunction, options = {}) {
68
+ const {
69
+ cwd,
70
+ shouldSkipIfMissing
71
+ } = options;
72
+ await editJson(normalizeOptionalProperties({ editFunction, path: getPackageJsonPath(cwd), shouldSkipIfMissing }));
73
+ }
74
+ function editPackageJsonSync(editFunction, options = {}) {
75
+ const {
76
+ cwd,
77
+ shouldSkipIfMissing
78
+ } = options;
79
+ editJsonSync(normalizeOptionalProperties({ editFunction, path: getPackageJsonPath(cwd), shouldSkipIfMissing }));
80
+ }
81
+ async function editPackageLockJson(editFunction, options = {}) {
82
+ const {
83
+ cwd,
84
+ shouldSkipIfMissing
85
+ } = options;
86
+ await editJson(normalizeOptionalProperties({ editFunction, path: getPackageLockJsonPath(cwd), shouldSkipIfMissing }));
87
+ }
88
+ function editPackageLockJsonSync(editFunction, options = {}) {
89
+ const {
90
+ cwd,
91
+ shouldSkipIfMissing
92
+ } = options;
93
+ editJsonSync(normalizeOptionalProperties({ editFunction, path: getPackageLockJsonPath(cwd), shouldSkipIfMissing }));
94
+ }
95
+ function getNpmShrinkWrapJsonPath(cwd) {
96
+ return ensureNonNullable(
97
+ resolvePathFromRoot(normalizeOptionalProperties({ cwd, path: RepoPaths.NpmShrinkwrapJson })),
98
+ "Could not determine the npm-shrinkwrap.json path"
99
+ );
100
+ }
101
+ function getPackageJsonPath(cwd) {
102
+ return ensureNonNullable(
103
+ resolvePathFromRoot(normalizeOptionalProperties({ cwd, path: RepoPaths.PackageJson })),
104
+ "Could not determine the package.json path"
105
+ );
106
+ }
107
+ function getPackageLockJsonPath(cwd) {
108
+ return ensureNonNullable(
109
+ resolvePathFromRoot(normalizeOptionalProperties({ cwd, path: RepoPaths.PackageLockJson })),
110
+ "Could not determine the package-lock.json path"
111
+ );
112
+ }
113
+ async function readPackageJson(cwd) {
114
+ return await readJson(getPackageJsonPath(cwd));
115
+ }
116
+ function readPackageJsonSync(cwd) {
117
+ return readJsonSync(getPackageJsonPath(cwd));
118
+ }
119
+ async function readPackageLockJson(cwd) {
120
+ return await readJson(getPackageLockJsonPath(cwd));
121
+ }
122
+ function readPackageLockJsonSync(cwd) {
123
+ return readJsonSync(getPackageLockJsonPath(cwd));
124
+ }
125
+ async function writePackageJson(packageJson, cwd) {
126
+ await writeJson(getPackageJsonPath(cwd), packageJson);
127
+ }
128
+ function writePackageJsonSync(packageJson, cwd) {
129
+ writeJsonSync(getPackageJsonPath(cwd), packageJson);
130
+ }
131
+ async function writePackageLockJson(packageLockJson, cwd) {
132
+ await writeJson(getPackageLockJsonPath(cwd), packageLockJson);
133
+ }
134
+ function writePackageLockJsonSync(packageLockJson, cwd) {
135
+ writeJsonSync(getPackageLockJsonPath(cwd), packageLockJson);
136
+ }
137
+ export {
138
+ editNpmShrinkWrapJson,
139
+ editPackageJson,
140
+ editPackageJsonSync,
141
+ editPackageLockJson,
142
+ editPackageLockJsonSync,
143
+ getNpmShrinkWrapJsonPath,
144
+ getPackageJsonPath,
145
+ getPackageLockJsonPath,
146
+ readPackageJson,
147
+ readPackageJsonSync,
148
+ readPackageLockJson,
149
+ readPackageLockJsonSync,
150
+ writePackageJson,
151
+ writePackageJsonSync,
152
+ writePackageLockJson,
153
+ writePackageLockJsonSync
154
+ };
155
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL25wbS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBOUE0gcGFja2FnZS5qc29uLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgUGFja2FnZUpzb24sXG4gIFByb21pc2FibGVcbn0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHsgbm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL29iamVjdC11dGlscyc7XG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5cbmltcG9ydCB0eXBlIHtcbiAgRWRpdEpzb25QYXJhbXMsXG4gIEVkaXRKc29uU3luY1BhcmFtc1xufSBmcm9tICcuL2pzb24udHMnO1xuaW1wb3J0IHR5cGUgeyBSZXNvbHZlUGF0aEZyb21Sb290UGFyYW1zIH0gZnJvbSAnLi9yb290LnRzJztcblxuaW1wb3J0IHtcbiAgZWRpdEpzb24sXG4gIGVkaXRKc29uU3luYyxcbiAgcmVhZEpzb24sXG4gIHJlYWRKc29uU3luYyxcbiAgd3JpdGVKc29uLFxuICB3cml0ZUpzb25TeW5jXG59IGZyb20gJy4vanNvbi50cyc7XG5pbXBvcnQgeyBSZXBvUGF0aHMgfSBmcm9tICcuL3JlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVBhdGhGcm9tUm9vdCB9IGZyb20gJy4vcm9vdC50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGVkaXROcG1TaHJpbmtXcmFwSnNvbn0uXG4gKi9cbmV4cG9ydCB0eXBlIEVkaXROcG1TaHJpbmtXcmFwSnNvbk9wdGlvbnMgPSBFZGl0UGFja2FnZUpzb25PcHRpb25zO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBlZGl0UGFja2FnZUpzb259LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVkaXRQYWNrYWdlSnNvbk9wdGlvbnMge1xuICAvKipcbiAgICogQSBjdXJyZW50IHdvcmtpbmcgZm9sZGVyIHdoZXJlIGBwYWNrYWdlLmpzb25gIGlzIGxvY2F0ZWQuXG4gICAqL1xuICByZWFkb25seSBjd2Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgc2tpcHMgZWRpdGluZyBpZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcElmTWlzc2luZz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGVkaXRQYWNrYWdlSnNvblN5bmN9LlxuICovXG5leHBvcnQgdHlwZSBFZGl0UGFja2FnZUpzb25TeW5jT3B0aW9ucyA9IEVkaXRQYWNrYWdlSnNvbk9wdGlvbnM7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGVkaXRQYWNrYWdlTG9ja0pzb259LlxuICovXG5leHBvcnQgdHlwZSBFZGl0UGFja2FnZUxvY2tKc29uT3B0aW9ucyA9IEVkaXRQYWNrYWdlSnNvbk9wdGlvbnM7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGVkaXRQYWNrYWdlTG9ja0pzb25TeW5jfS5cbiAqL1xuZXhwb3J0IHR5cGUgRWRpdFBhY2thZ2VMb2NrSnNvblN5bmNPcHRpb25zID0gRWRpdFBhY2thZ2VKc29uT3B0aW9ucztcblxuLyoqXG4gKiBBIHR5cGUgb2YgdGhlIGBwYWNrYWdlLmpzb25gIGZpbGUuXG4gKi9cblxuLyoqXG4gKiBBIHR5cGUgb2YgdGhlIGBwYWNrYWdlLWxvY2suanNvbmAgZmlsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWNrYWdlTG9ja0pzb24gZXh0ZW5kcyBQYXJ0aWFsPFBhY2thZ2VKc29uPiB7XG4gIC8qKlxuICAgKiBQYWNrYWdlcyBpbiB0aGUgYHBhY2thZ2UtbG9jay5qc29uYCBmaWxlLlxuICAgKi9cbiAgcGFja2FnZXM/OiBSZWNvcmQ8c3RyaW5nLCBQYWNrYWdlSnNvbj47XG59XG5cbi8qKlxuICogUmVhZHMsIGVkaXRzLCBhbmQgd3JpdGVzIGJhY2sgdGhlIGBwYWNrYWdlLWxvY2suanNvbmAgZmlsZSB1c2luZyB0aGUgcHJvdmlkZWQgZWRpdCBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gZWRpdEZ1bmN0aW9uIC0gVGhlIGZ1bmN0aW9uIHRvIGVkaXQgdGhlIHBhcnNlZCBgUGFja2FnZUpzb25gIG9iamVjdC5cbiAqIEBwYXJhbSBvcHRpb25zIC0gQWRkaXRpb25hbCBvcHRpb25zIGZvciBlZGl0aW5nLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBmaWxlIGhhcyBiZWVuIGVkaXRlZCBhbmQgd3JpdHRlbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVkaXROcG1TaHJpbmtXcmFwSnNvbihcbiAgZWRpdEZ1bmN0aW9uOiAocGFja2FnZUxvY2tKc29uOiBQYWNrYWdlTG9ja0pzb24pID0+IFByb21pc2FibGU8dm9pZD4sXG4gIG9wdGlvbnM6IEVkaXROcG1TaHJpbmtXcmFwSnNvbk9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBjd2QsXG4gICAgc2hvdWxkU2tpcElmTWlzc2luZ1xuICB9ID0gb3B0aW9ucztcbiAgYXdhaXQgZWRpdEpzb248UGFja2FnZUpzb24+KG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxFZGl0SnNvblBhcmFtczxQYWNrYWdlSnNvbj4+KHsgZWRpdEZ1bmN0aW9uLCBwYXRoOiBnZXROcG1TaHJpbmtXcmFwSnNvblBhdGgoY3dkKSwgc2hvdWxkU2tpcElmTWlzc2luZyB9KSk7XG59XG5cbi8qKlxuICogUmVhZHMsIGVkaXRzLCBhbmQgd3JpdGVzIGJhY2sgdGhlIGBwYWNrYWdlLmpzb25gIGZpbGUgdXNpbmcgdGhlIHByb3ZpZGVkIGVkaXQgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIGVkaXRGdW5jdGlvbiAtIFRoZSBmdW5jdGlvbiB0byBlZGl0IHRoZSBwYXJzZWQgYFBhY2thZ2VKc29uYCBvYmplY3QuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFkZGl0aW9uYWwgb3B0aW9ucyBmb3IgZWRpdGluZy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZmlsZSBoYXMgYmVlbiBlZGl0ZWQgYW5kIHdyaXR0ZW4uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlZGl0UGFja2FnZUpzb24oXG4gIGVkaXRGdW5jdGlvbjogKHBhY2thZ2VKc29uOiBQYWNrYWdlSnNvbikgPT4gUHJvbWlzYWJsZTx2b2lkPixcbiAgb3B0aW9uczogRWRpdFBhY2thZ2VKc29uT3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIGN3ZCxcbiAgICBzaG91bGRTa2lwSWZNaXNzaW5nXG4gIH0gPSBvcHRpb25zO1xuICBhd2FpdCBlZGl0SnNvbjxQYWNrYWdlSnNvbj4obm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPEVkaXRKc29uUGFyYW1zPFBhY2thZ2VKc29uPj4oeyBlZGl0RnVuY3Rpb24sIHBhdGg6IGdldFBhY2thZ2VKc29uUGF0aChjd2QpLCBzaG91bGRTa2lwSWZNaXNzaW5nIH0pKTtcbn1cblxuLyoqXG4gKiBSZWFkcywgZWRpdHMsIGFuZCB3cml0ZXMgYmFjayB0aGUgYHBhY2thZ2UuanNvbmAgZmlsZSB1c2luZyB0aGUgcHJvdmlkZWQgZWRpdCBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gZWRpdEZ1bmN0aW9uIC0gVGhlIGZ1bmN0aW9uIHRvIGVkaXQgdGhlIHBhcnNlZCBgUGFja2FnZUpzb25gIG9iamVjdC5cbiAqIEBwYXJhbSBvcHRpb25zIC0gQWRkaXRpb25hbCBvcHRpb25zIGZvciBlZGl0aW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZWRpdFBhY2thZ2VKc29uU3luYyhcbiAgZWRpdEZ1bmN0aW9uOiAocGFja2FnZUpzb246IFBhY2thZ2VKc29uKSA9PiB2b2lkLFxuICBvcHRpb25zOiBFZGl0UGFja2FnZUpzb25TeW5jT3B0aW9ucyA9IHt9XG4pOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIGN3ZCxcbiAgICBzaG91bGRTa2lwSWZNaXNzaW5nXG4gIH0gPSBvcHRpb25zO1xuICBlZGl0SnNvblN5bmM8UGFja2FnZUpzb24+KG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxFZGl0SnNvblN5bmNQYXJhbXM8UGFja2FnZUpzb24+Pih7IGVkaXRGdW5jdGlvbiwgcGF0aDogZ2V0UGFja2FnZUpzb25QYXRoKGN3ZCksIHNob3VsZFNraXBJZk1pc3NpbmcgfSkpO1xufVxuXG4vKipcbiAqIFJlYWRzLCBlZGl0cywgYW5kIHdyaXRlcyBiYWNrIHRoZSBgcGFja2FnZS1sb2NrLmpzb25gIGZpbGUgdXNpbmcgdGhlIHByb3ZpZGVkIGVkaXQgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIGVkaXRGdW5jdGlvbiAtIFRoZSBmdW5jdGlvbiB0byBlZGl0IHRoZSBwYXJzZWQgYFBhY2thZ2VKc29uYCBvYmplY3QuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFkZGl0aW9uYWwgb3B0aW9ucyBmb3IgZWRpdGluZy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZmlsZSBoYXMgYmVlbiBlZGl0ZWQgYW5kIHdyaXR0ZW4uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlZGl0UGFja2FnZUxvY2tKc29uKFxuICBlZGl0RnVuY3Rpb246IChwYWNrYWdlTG9ja0pzb246IFBhY2thZ2VMb2NrSnNvbikgPT4gUHJvbWlzYWJsZTx2b2lkPixcbiAgb3B0aW9uczogRWRpdFBhY2thZ2VMb2NrSnNvbk9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBjd2QsXG4gICAgc2hvdWxkU2tpcElmTWlzc2luZ1xuICB9ID0gb3B0aW9ucztcbiAgYXdhaXQgZWRpdEpzb248UGFja2FnZUpzb24+KG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxFZGl0SnNvblBhcmFtczxQYWNrYWdlSnNvbj4+KHsgZWRpdEZ1bmN0aW9uLCBwYXRoOiBnZXRQYWNrYWdlTG9ja0pzb25QYXRoKGN3ZCksIHNob3VsZFNraXBJZk1pc3NpbmcgfSkpO1xufVxuXG4vKipcbiAqIFJlYWRzLCBlZGl0cywgYW5kIHdyaXRlcyBiYWNrIHRoZSBgcGFja2FnZS1sb2NrLmpzb25gIGZpbGUgdXNpbmcgdGhlIHByb3ZpZGVkIGVkaXQgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIGVkaXRGdW5jdGlvbiAtIFRoZSBmdW5jdGlvbiB0byBlZGl0IHRoZSBwYXJzZWQgYFBhY2thZ2VMb2NrSnNvbmAgb2JqZWN0LlxuICogQHBhcmFtIG9wdGlvbnMgLSBBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIGVkaXRpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlZGl0UGFja2FnZUxvY2tKc29uU3luYyhcbiAgZWRpdEZ1bmN0aW9uOiAocGFja2FnZUxvY2tKc29uOiBQYWNrYWdlTG9ja0pzb24pID0+IHZvaWQsXG4gIG9wdGlvbnM6IEVkaXRQYWNrYWdlTG9ja0pzb25TeW5jT3B0aW9ucyA9IHt9XG4pOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIGN3ZCxcbiAgICBzaG91bGRTa2lwSWZNaXNzaW5nXG4gIH0gPSBvcHRpb25zO1xuICBlZGl0SnNvblN5bmM8UGFja2FnZUxvY2tKc29uPihub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8RWRpdEpzb25TeW5jUGFyYW1zPFBhY2thZ2VMb2NrSnNvbj4+KHsgZWRpdEZ1bmN0aW9uLCBwYXRoOiBnZXRQYWNrYWdlTG9ja0pzb25QYXRoKGN3ZCksIHNob3VsZFNraXBJZk1pc3NpbmcgfSkpO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBwYXRoIHRvIHRoZSBgbnBtLXNocmlua3dyYXAuanNvbmAgZmlsZSBpbiB0aGUgc3BlY2lmaWVkIGZvbGRlciBvciBpbiB0aGUgcm9vdCBpZiBubyBmb2xkZXIgaXMgc3BlY2lmaWVkLlxuICpcbiAqIEBwYXJhbSBjd2QgLSBUaGUgY3VycmVudCB3b3JraW5nIGZvbGRlciB3aGVyZSBgbnBtLXNocmlua3dyYXAuanNvbmAgaXMgbG9jYXRlZC5cbiAqIEByZXR1cm5zIFRoZSByZXNvbHZlZCBwYXRoIHRvIHRoZSBgbnBtLXNocmlua3dyYXAuanNvbmAgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE5wbVNocmlua1dyYXBKc29uUGF0aChjd2Q/OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gZW5zdXJlTm9uTnVsbGFibGUoXG4gICAgcmVzb2x2ZVBhdGhGcm9tUm9vdChub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8UmVzb2x2ZVBhdGhGcm9tUm9vdFBhcmFtcz4oeyBjd2QsIHBhdGg6IFJlcG9QYXRocy5OcG1TaHJpbmt3cmFwSnNvbiB9KSksXG4gICAgJ0NvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIG5wbS1zaHJpbmt3cmFwLmpzb24gcGF0aCdcbiAgKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgcGF0aCB0byB0aGUgYHBhY2thZ2UuanNvbmAgZmlsZSBpbiB0aGUgc3BlY2lmaWVkIGZvbGRlciBvciBpbiB0aGUgcm9vdCBpZiBubyBmb2xkZXIgaXMgc3BlY2lmaWVkLlxuICpcbiAqIEBwYXJhbSBjd2QgLSBUaGUgY3VycmVudCB3b3JraW5nIGZvbGRlciB3aGVyZSBgcGFja2FnZS5qc29uYCBpcyBsb2NhdGVkLlxuICogQHJldHVybnMgVGhlIHJlc29sdmVkIHBhdGggdG8gdGhlIGBwYWNrYWdlLmpzb25gIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWNrYWdlSnNvblBhdGgoY3dkPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGVuc3VyZU5vbk51bGxhYmxlKFxuICAgIHJlc29sdmVQYXRoRnJvbVJvb3Qobm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPFJlc29sdmVQYXRoRnJvbVJvb3RQYXJhbXM+KHsgY3dkLCBwYXRoOiBSZXBvUGF0aHMuUGFja2FnZUpzb24gfSkpLFxuICAgICdDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBwYWNrYWdlLmpzb24gcGF0aCdcbiAgKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgcGF0aCB0byB0aGUgYHBhY2thZ2UtbG9jay5qc29uYCBmaWxlIGluIHRoZSBzcGVjaWZpZWQgZm9sZGVyIG9yIGluIHRoZSByb290IGlmIG5vIGZvbGRlciBpcyBzcGVjaWZpZWQuXG4gKlxuICogQHBhcmFtIGN3ZCAtIFRoZSBjdXJyZW50IHdvcmtpbmcgZm9sZGVyIHdoZXJlIGBwYWNrYWdlLWxvY2suanNvbmAgaXMgbG9jYXRlZC5cbiAqIEByZXR1cm5zIFRoZSByZXNvbHZlZCBwYXRoIHRvIHRoZSBgcGFja2FnZS1sb2NrLmpzb25gIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWNrYWdlTG9ja0pzb25QYXRoKGN3ZD86IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBlbnN1cmVOb25OdWxsYWJsZShcbiAgICByZXNvbHZlUGF0aEZyb21Sb290KG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxSZXNvbHZlUGF0aEZyb21Sb290UGFyYW1zPih7IGN3ZCwgcGF0aDogUmVwb1BhdGhzLlBhY2thZ2VMb2NrSnNvbiB9KSksXG4gICAgJ0NvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIHBhY2thZ2UtbG9jay5qc29uIHBhdGgnXG4gICk7XG59XG5cbi8qKlxuICogUmVhZHMgdGhlIGBwYWNrYWdlLmpzb25gIGZpbGUgZnJvbSB0aGUgc3BlY2lmaWVkIGZvbGRlciBvciBmcm9tIHRoZSByb290IGlmIG5vIGZvbGRlciBpcyBzcGVjaWZpZWQuXG4gKlxuICogQHBhcmFtIGN3ZCAtIFRoZSBjdXJyZW50IHdvcmtpbmcgZm9sZGVyIHdoZXJlIGBwYWNrYWdlLmpzb25gIGlzIGxvY2F0ZWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHBhcnNlZCBgUGFja2FnZUpzb25gIG9iamVjdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRQYWNrYWdlSnNvbihjd2Q/OiBzdHJpbmcpOiBQcm9taXNlPFBhY2thZ2VKc29uPiB7XG4gIHJldHVybiBhd2FpdCByZWFkSnNvbjxQYWNrYWdlSnNvbj4oZ2V0UGFja2FnZUpzb25QYXRoKGN3ZCkpO1xufVxuXG4vKipcbiAqIFJlYWRzIHRoZSBgcGFja2FnZS5qc29uYCBmaWxlIGZyb20gdGhlIHNwZWNpZmllZCBmb2xkZXIgb3IgZnJvbSB0aGUgcm9vdCBpZiBubyBmb2xkZXIgaXMgc3BlY2lmaWVkLlxuICpcbiAqIEBwYXJhbSBjd2QgLSBUaGUgY3VycmVudCB3b3JraW5nIGZvbGRlciB3aGVyZSBgcGFja2FnZS5qc29uYCBpcyBsb2NhdGVkLlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBgUGFja2FnZUpzb25gIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRQYWNrYWdlSnNvblN5bmMoY3dkPzogc3RyaW5nKTogUGFja2FnZUpzb24ge1xuICByZXR1cm4gcmVhZEpzb25TeW5jPFBhY2thZ2VKc29uPihnZXRQYWNrYWdlSnNvblBhdGgoY3dkKSk7XG59XG5cbi8qKlxuICogUmVhZHMgdGhlIGBwYWNrYWdlLWxvY2suanNvbmAgZmlsZSBmcm9tIHRoZSBzcGVjaWZpZWQgZm9sZGVyIG9yIGZyb20gdGhlIHJvb3QgaWYgbm8gZm9sZGVyIGlzIHNwZWNpZmllZC5cbiAqXG4gKiBAcGFyYW0gY3dkIC0gVGhlIGN1cnJlbnQgd29ya2luZyBmb2xkZXIgd2hlcmUgYHBhY2thZ2UtbG9jay5qc29uYCBpcyBsb2NhdGVkLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBwYXJzZWQgYFBhY2thZ2VKc29uYCBvYmplY3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkUGFja2FnZUxvY2tKc29uKGN3ZD86IHN0cmluZyk6IFByb21pc2U8UGFja2FnZUxvY2tKc29uPiB7XG4gIHJldHVybiBhd2FpdCByZWFkSnNvbjxQYWNrYWdlTG9ja0pzb24+KGdldFBhY2thZ2VMb2NrSnNvblBhdGgoY3dkKSk7XG59XG5cbi8qKlxuICogUmVhZHMgdGhlIGBwYWNrYWdlLWxvY2suanNvbmAgZmlsZSBmcm9tIHRoZSBzcGVjaWZpZWQgZm9sZGVyIG9yIGZyb20gdGhlIHJvb3QgaWYgbm8gZm9sZGVyIGlzIHNwZWNpZmllZC5cbiAqXG4gKiBAcGFyYW0gY3dkIC0gVGhlIGN1cnJlbnQgd29ya2luZyBmb2xkZXIgd2hlcmUgYHBhY2thZ2UtbG9jay5qc29uYCBpcyBsb2NhdGVkLlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBgUGFja2FnZUxvY2tKc29uYCBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkUGFja2FnZUxvY2tKc29uU3luYyhjd2Q/OiBzdHJpbmcpOiBQYWNrYWdlTG9ja0pzb24ge1xuICByZXR1cm4gcmVhZEpzb25TeW5jPFBhY2thZ2VMb2NrSnNvbj4oZ2V0UGFja2FnZUxvY2tKc29uUGF0aChjd2QpKTtcbn1cblxuLyoqXG4gKiBXcml0ZXMgdGhlIHByb3ZpZGVkIGBQYWNrYWdlSnNvbmAgb2JqZWN0IHRvIHRoZSBgcGFja2FnZS5qc29uYCBmaWxlIGluIHRoZSBzcGVjaWZpZWQgZm9sZGVyIG9yIGluIHRoZSByb290LlxuICpcbiAqIEBwYXJhbSBwYWNrYWdlSnNvbiAtIFRoZSBgUGFja2FnZUpzb25gIG9iamVjdCB0byB3cml0ZS5cbiAqIEBwYXJhbSBjd2QgLSBUaGUgY3VycmVudCB3b3JraW5nIGZvbGRlciB3aGVyZSBgcGFja2FnZS5qc29uYCBpcyBsb2NhdGVkLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBmaWxlIGhhcyBiZWVuIHdyaXR0ZW4uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZVBhY2thZ2VKc29uKHBhY2thZ2VKc29uOiBQYWNrYWdlSnNvbiwgY3dkPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IHdyaXRlSnNvbihnZXRQYWNrYWdlSnNvblBhdGgoY3dkKSwgcGFja2FnZUpzb24pO1xufVxuXG4vKipcbiAqIFdyaXRlcyB0aGUgcHJvdmlkZWQgYFBhY2thZ2VKc29uYCBvYmplY3QgdG8gdGhlIGBwYWNrYWdlLmpzb25gIGZpbGUgaW4gdGhlIHNwZWNpZmllZCBmb2xkZXIgb3IgaW4gdGhlIHJvb3QuXG4gKlxuICogQHBhcmFtIHBhY2thZ2VKc29uIC0gVGhlIGBQYWNrYWdlSnNvbmAgb2JqZWN0IHRvIHdyaXRlLlxuICogQHBhcmFtIGN3ZCAtIFRoZSBjdXJyZW50IHdvcmtpbmcgZm9sZGVyIHdoZXJlIGBwYWNrYWdlLmpzb25gIGlzIGxvY2F0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVBhY2thZ2VKc29uU3luYyhwYWNrYWdlSnNvbjogUGFja2FnZUpzb24sIGN3ZD86IHN0cmluZyk6IHZvaWQge1xuICB3cml0ZUpzb25TeW5jKGdldFBhY2thZ2VKc29uUGF0aChjd2QpLCBwYWNrYWdlSnNvbik7XG59XG5cbi8qKlxuICogV3JpdGVzIHRoZSBwcm92aWRlZCBgUGFja2FnZUpzb25gIG9iamVjdCB0byB0aGUgYHBhY2thZ2UtbG9jay5qc29uYCBmaWxlIGluIHRoZSBzcGVjaWZpZWQgZm9sZGVyIG9yIGluIHRoZSByb290LlxuICpcbiAqIEBwYXJhbSBwYWNrYWdlTG9ja0pzb24gLSBUaGUgYFBhY2thZ2VMb2NrSnNvbmAgb2JqZWN0IHRvIHdyaXRlLlxuICogQHBhcmFtIGN3ZCAtIFRoZSBjdXJyZW50IHdvcmtpbmcgZm9sZGVyIHdoZXJlIGBwYWNrYWdlLWxvY2suanNvbmAgaXMgbG9jYXRlZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZmlsZSBoYXMgYmVlbiB3cml0dGVuLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVQYWNrYWdlTG9ja0pzb24ocGFja2FnZUxvY2tKc29uOiBQYWNrYWdlTG9ja0pzb24sIGN3ZD86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCB3cml0ZUpzb24oZ2V0UGFja2FnZUxvY2tKc29uUGF0aChjd2QpLCBwYWNrYWdlTG9ja0pzb24pO1xufVxuXG4vKipcbiAqIFdyaXRlcyB0aGUgcHJvdmlkZWQgYFBhY2thZ2VMb2NrSnNvbmAgb2JqZWN0IHRvIHRoZSBgcGFja2FnZS1sb2NrLmpzb25gIGZpbGUgaW4gdGhlIHNwZWNpZmllZCBmb2xkZXIgb3IgaW4gdGhlIHJvb3QuXG4gKlxuICogQHBhcmFtIHBhY2thZ2VMb2NrSnNvbiAtIFRoZSBgUGFja2FnZUxvY2tKc29uYCBvYmplY3QgdG8gd3JpdGUuXG4gKiBAcGFyYW0gY3dkIC0gVGhlIGN1cnJlbnQgd29ya2luZyBmb2xkZXIgd2hlcmUgYHBhY2thZ2UtbG9jay5qc29uYCBpcyBsb2NhdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVQYWNrYWdlTG9ja0pzb25TeW5jKHBhY2thZ2VMb2NrSnNvbjogUGFja2FnZUxvY2tKc29uLCBjd2Q/OiBzdHJpbmcpOiB2b2lkIHtcbiAgd3JpdGVKc29uU3luYyhnZXRQYWNrYWdlTG9ja0pzb25QYXRoKGN3ZCksIHBhY2thZ2VMb2NrSnNvbik7XG59XG5cbi8vIFR5cGVTY3JpcHQncyBkZWNsYXJhdGlvbiBlbWl0IGFkZHMgYHdpdGggeyAncmVzb2x1dGlvbi1tb2RlJzogJ2ltcG9ydCcgfWAgdG8gaW1wb3J0IGRlY2xhcmF0aW9ucyBvbmx5LlxuLy8gQSByZS1leHBvcnQtZnJvbSB3b3VsZCB0aHVzIHJlc29sdmUgRVNNLW9ubHkgYHR5cGUtZmVzdGAgdW5kZXIgYHJlcXVpcmVgIGluIHRoZSBgLmQuY3RzYCBidWlsZCAoVFMxNDc5KS5cbi8vIFJlLWV4cG9ydGluZyB0aGUgYmluZGluZyBpbXBvcnRlZCBhYm92ZSBrZWVwcyB0aGF0IHJlc29sdXRpb24gbW9kZSBhdHRhY2hlZC5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL3ByZWZlci1leHBvcnQtZnJvbSAtLSBgZXhwb3J0XHUyMDI2ZnJvbWAgcmUtaW50cm9kdWNlcyBUUzE0NzksIHNlZSBhYm92ZS5cbmV4cG9ydCB0eXBlIHsgUGFja2FnZUpzb24gfTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV0EsU0FBUyxtQ0FBbUM7QUFDNUMsU0FBUyx5QkFBeUI7QUFRbEM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxpQkFBaUI7QUFDMUIsU0FBUywyQkFBMkI7QUE0RHBDLGVBQXNCLHNCQUNwQixjQUNBLFVBQXdDLENBQUMsR0FDMUI7QUFDZixRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxFQUNGLElBQUk7QUFDSixRQUFNLFNBQXNCLDRCQUF5RCxFQUFFLGNBQWMsTUFBTSx5QkFBeUIsR0FBRyxHQUFHLG9CQUFvQixDQUFDLENBQUM7QUFDbEs7QUFTQSxlQUFzQixnQkFDcEIsY0FDQSxVQUFrQyxDQUFDLEdBQ3BCO0FBQ2YsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsRUFDRixJQUFJO0FBQ0osUUFBTSxTQUFzQiw0QkFBeUQsRUFBRSxjQUFjLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDO0FBQzVKO0FBUU8sU0FBUyxvQkFDZCxjQUNBLFVBQXNDLENBQUMsR0FDakM7QUFDTixRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxFQUNGLElBQUk7QUFDSixlQUEwQiw0QkFBNkQsRUFBRSxjQUFjLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDO0FBQzlKO0FBU0EsZUFBc0Isb0JBQ3BCLGNBQ0EsVUFBc0MsQ0FBQyxHQUN4QjtBQUNmLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUNKLFFBQU0sU0FBc0IsNEJBQXlELEVBQUUsY0FBYyxNQUFNLHVCQUF1QixHQUFHLEdBQUcsb0JBQW9CLENBQUMsQ0FBQztBQUNoSztBQVFPLFNBQVMsd0JBQ2QsY0FDQSxVQUEwQyxDQUFDLEdBQ3JDO0FBQ04sUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsRUFDRixJQUFJO0FBQ0osZUFBOEIsNEJBQWlFLEVBQUUsY0FBYyxNQUFNLHVCQUF1QixHQUFHLEdBQUcsb0JBQW9CLENBQUMsQ0FBQztBQUMxSztBQVFPLFNBQVMseUJBQXlCLEtBQXNCO0FBQzdELFNBQU87QUFBQSxJQUNMLG9CQUFvQiw0QkFBdUQsRUFBRSxLQUFLLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxDQUFDO0FBQUEsSUFDdEg7QUFBQSxFQUNGO0FBQ0Y7QUFRTyxTQUFTLG1CQUFtQixLQUFzQjtBQUN2RCxTQUFPO0FBQUEsSUFDTCxvQkFBb0IsNEJBQXVELEVBQUUsS0FBSyxNQUFNLFVBQVUsWUFBWSxDQUFDLENBQUM7QUFBQSxJQUNoSDtBQUFBLEVBQ0Y7QUFDRjtBQVFPLFNBQVMsdUJBQXVCLEtBQXNCO0FBQzNELFNBQU87QUFBQSxJQUNMLG9CQUFvQiw0QkFBdUQsRUFBRSxLQUFLLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxDQUFDO0FBQUEsSUFDcEg7QUFBQSxFQUNGO0FBQ0Y7QUFRQSxlQUFzQixnQkFBZ0IsS0FBb0M7QUFDeEUsU0FBTyxNQUFNLFNBQXNCLG1CQUFtQixHQUFHLENBQUM7QUFDNUQ7QUFRTyxTQUFTLG9CQUFvQixLQUEyQjtBQUM3RCxTQUFPLGFBQTBCLG1CQUFtQixHQUFHLENBQUM7QUFDMUQ7QUFRQSxlQUFzQixvQkFBb0IsS0FBd0M7QUFDaEYsU0FBTyxNQUFNLFNBQTBCLHVCQUF1QixHQUFHLENBQUM7QUFDcEU7QUFRTyxTQUFTLHdCQUF3QixLQUErQjtBQUNyRSxTQUFPLGFBQThCLHVCQUF1QixHQUFHLENBQUM7QUFDbEU7QUFTQSxlQUFzQixpQkFBaUIsYUFBMEIsS0FBNkI7QUFDNUYsUUFBTSxVQUFVLG1CQUFtQixHQUFHLEdBQUcsV0FBVztBQUN0RDtBQVFPLFNBQVMscUJBQXFCLGFBQTBCLEtBQW9CO0FBQ2pGLGdCQUFjLG1CQUFtQixHQUFHLEdBQUcsV0FBVztBQUNwRDtBQVNBLGVBQXNCLHFCQUFxQixpQkFBa0MsS0FBNkI7QUFDeEcsUUFBTSxVQUFVLHVCQUF1QixHQUFHLEdBQUcsZUFBZTtBQUM5RDtBQVFPLFNBQVMseUJBQXlCLGlCQUFrQyxLQUFvQjtBQUM3RixnQkFBYyx1QkFBdUIsR0FBRyxHQUFHLGVBQWU7QUFDNUQ7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -0,0 +1,38 @@
1
+ /// <reference path="./library-references.d.mts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Refuses a `package-lock.json` whose installed entries have lost their `resolved` or `integrity` field.
6
+ *
7
+ * You get such a lock by deleting `package-lock.json` while `node_modules` is still installed and then
8
+ * running `npm install`. npm records every package it reuses from `node_modules` with its version only.
9
+ * One measured lock went from 7 such entries to 1064 of 1234 in a single regeneration. **npm never fills
10
+ * the two fields back in afterwards**: a clean install into an empty directory does not, and neither does
11
+ * `npm install --package-lock-only`. `npm ci` skips integrity verification for those packages, so the
12
+ * defect is permanent and every other check stays green.
13
+ *
14
+ * The check reads the JSON and nothing else. It makes no network call and finishes in well under a second,
15
+ * which is why `gate()` runs it before anything else.
16
+ */
17
+ import type { PackageLockJson } from './npm.mjs';
18
+ /**
19
+ * Throws when the project's `package-lock.json` has an installed entry without `resolved` or `integrity`.
20
+ * A project with no `package-lock.json`, such as one on another package manager, passes.
21
+ *
22
+ * @param cwd - The folder to resolve the project root from. Defaults to the current one.
23
+ * @returns A {@link Promise} that resolves when the lock is complete.
24
+ */
25
+ export declare function assertPackageLockIntegrity(cwd?: string): Promise<void>;
26
+ /**
27
+ * Finds the `packages` entries of a lockfile that have no `resolved` field, or that have a registry
28
+ * `resolved` field and no `integrity` field.
29
+ *
30
+ * Some entries never have these fields in a healthy lock, so they are skipped: the root (`''`), a `link`,
31
+ * a workspace source folder (its key has no `node_modules/` segment), and a bundled dependency (`inBundle`),
32
+ * which comes inside its parent's tarball. `integrity` is only required when `resolved` is a registry URL,
33
+ * because npm records no integrity for a git dependency.
34
+ *
35
+ * @param packageLockJson - The parsed `package-lock.json`.
36
+ * @returns The keys of the offending entries, in lockfile order.
37
+ */
38
+ export declare function findPackageLockEntriesMissingIntegrity(packageLockJson: PackageLockJson): string[];
@@ -0,0 +1,99 @@
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 { existsSync } from "node:fs";
49
+ import {
50
+ getPackageLockJsonPath,
51
+ readPackageLockJson
52
+ } from "./npm.mjs";
53
+ const MAX_REPORTED_KEYS = 5;
54
+ const NODE_MODULES_SEGMENT = "node_modules/";
55
+ const REGISTRY_RESOLVED_REG_EXP = /^https?:\/\//;
56
+ async function assertPackageLockIntegrity(cwd) {
57
+ const packageLockJsonPath = getPackageLockJsonPath(cwd);
58
+ if (!existsSync(packageLockJsonPath)) {
59
+ return;
60
+ }
61
+ const keys = findPackageLockEntriesMissingIntegrity(await readPackageLockJson(cwd));
62
+ if (keys.length === 0) {
63
+ return;
64
+ }
65
+ const shownKeys = keys.slice(0, MAX_REPORTED_KEYS).map((key) => ` ${key}`);
66
+ const remainingCount = keys.length - shownKeys.length;
67
+ if (remainingCount > 0) {
68
+ shownKeys.push(` ... and ${String(remainingCount)} more`);
69
+ }
70
+ throw new Error(
71
+ [
72
+ `${packageLockJsonPath}: ${String(keys.length)} installed package(s) have no \`resolved\` or no \`integrity\`, so \`npm ci\` cannot verify them:`,
73
+ ...shownKeys,
74
+ "npm never adds these fields back by itself, and regenerating the lock would change versions. Fill each entry from the registry",
75
+ "metadata for the version already locked: GET https://registry.npmjs.org/<name, with / written as %2f>/<version>, and copy",
76
+ "`dist.tarball` into `resolved` and `dist.integrity` into `integrity`. The name is the entry's `name` field, or else the text",
77
+ "after the key's last `node_modules/`. Then check that `npm install --package-lock-only` leaves the file byte-identical.",
78
+ "To skip this check for one run, set PACKAGE_LOCK_INTEGRITY=0."
79
+ ].join("\n")
80
+ );
81
+ }
82
+ function findPackageLockEntriesMissingIntegrity(packageLockJson) {
83
+ const keys = [];
84
+ for (const [key, value] of Object.entries(packageLockJson.packages ?? {})) {
85
+ const entry = value;
86
+ if (key === "" || !key.includes(NODE_MODULES_SEGMENT) || entry.link || entry.inBundle) {
87
+ continue;
88
+ }
89
+ if (entry.resolved === void 0 || entry.integrity === void 0 && REGISTRY_RESOLVED_REG_EXP.test(entry.resolved)) {
90
+ keys.push(key);
91
+ }
92
+ }
93
+ return keys;
94
+ }
95
+ export {
96
+ assertPackageLockIntegrity,
97
+ findPackageLockEntriesMissingIntegrity
98
+ };
99
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3BhY2thZ2UtbG9jay1pbnRlZ3JpdHkudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBSZWZ1c2VzIGEgYHBhY2thZ2UtbG9jay5qc29uYCB3aG9zZSBpbnN0YWxsZWQgZW50cmllcyBoYXZlIGxvc3QgdGhlaXIgYHJlc29sdmVkYCBvciBgaW50ZWdyaXR5YCBmaWVsZC5cbiAqXG4gKiBZb3UgZ2V0IHN1Y2ggYSBsb2NrIGJ5IGRlbGV0aW5nIGBwYWNrYWdlLWxvY2suanNvbmAgd2hpbGUgYG5vZGVfbW9kdWxlc2AgaXMgc3RpbGwgaW5zdGFsbGVkIGFuZCB0aGVuXG4gKiBydW5uaW5nIGBucG0gaW5zdGFsbGAuIG5wbSByZWNvcmRzIGV2ZXJ5IHBhY2thZ2UgaXQgcmV1c2VzIGZyb20gYG5vZGVfbW9kdWxlc2Agd2l0aCBpdHMgdmVyc2lvbiBvbmx5LlxuICogT25lIG1lYXN1cmVkIGxvY2sgd2VudCBmcm9tIDcgc3VjaCBlbnRyaWVzIHRvIDEwNjQgb2YgMTIzNCBpbiBhIHNpbmdsZSByZWdlbmVyYXRpb24uICoqbnBtIG5ldmVyIGZpbGxzXG4gKiB0aGUgdHdvIGZpZWxkcyBiYWNrIGluIGFmdGVyd2FyZHMqKjogYSBjbGVhbiBpbnN0YWxsIGludG8gYW4gZW1wdHkgZGlyZWN0b3J5IGRvZXMgbm90LCBhbmQgbmVpdGhlciBkb2VzXG4gKiBgbnBtIGluc3RhbGwgLS1wYWNrYWdlLWxvY2stb25seWAuIGBucG0gY2lgIHNraXBzIGludGVncml0eSB2ZXJpZmljYXRpb24gZm9yIHRob3NlIHBhY2thZ2VzLCBzbyB0aGVcbiAqIGRlZmVjdCBpcyBwZXJtYW5lbnQgYW5kIGV2ZXJ5IG90aGVyIGNoZWNrIHN0YXlzIGdyZWVuLlxuICpcbiAqIFRoZSBjaGVjayByZWFkcyB0aGUgSlNPTiBhbmQgbm90aGluZyBlbHNlLiBJdCBtYWtlcyBubyBuZXR3b3JrIGNhbGwgYW5kIGZpbmlzaGVzIGluIHdlbGwgdW5kZXIgYSBzZWNvbmQsXG4gKiB3aGljaCBpcyB3aHkgYGdhdGUoKWAgcnVucyBpdCBiZWZvcmUgYW55dGhpbmcgZWxzZS5cbiAqL1xuXG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5cbmltcG9ydCB0eXBlIHsgUGFja2FnZUxvY2tKc29uIH0gZnJvbSAnLi9ucG0udHMnO1xuXG5pbXBvcnQge1xuICBnZXRQYWNrYWdlTG9ja0pzb25QYXRoLFxuICByZWFkUGFja2FnZUxvY2tKc29uXG59IGZyb20gJy4vbnBtLnRzJztcblxuLyoqXG4gKiBIb3cgbWFueSBvZmZlbmRpbmcga2V5cyB0aGUgZXJyb3IgbmFtZXMgYmVmb3JlIGl0IHN1bW1hcml6ZXMgdGhlIHJlc3QgYXMgYSBjb3VudC5cbiAqL1xuY29uc3QgTUFYX1JFUE9SVEVEX0tFWVMgPSA1O1xuXG5jb25zdCBOT0RFX01PRFVMRVNfU0VHTUVOVCA9ICdub2RlX21vZHVsZXMvJztcbmNvbnN0IFJFR0lTVFJZX1JFU09MVkVEX1JFR19FWFAgPSAvXmh0dHBzPzpcXC9cXC8vO1xuXG4vKipcbiAqIFRoZSBmaWVsZHMgb2YgYSBgcGFja2FnZXNgIGVudHJ5IHRoaXMgY2hlY2sgcmVhZHMuIFRoZXkgYXJlIG5vdCBvbiBgUGFja2FnZUpzb25gLCBiZWNhdXNlIHRoZXkgZXhpc3Qgb25seVxuICogaW4gYSBsb2NrZmlsZS5cbiAqL1xuaW50ZXJmYWNlIFBhY2thZ2VMb2NrRW50cnkge1xuICByZWFkb25seSBpbkJ1bmRsZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGludGVncml0eT86IHN0cmluZztcbiAgcmVhZG9ubHkgbGluaz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHJlc29sdmVkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRocm93cyB3aGVuIHRoZSBwcm9qZWN0J3MgYHBhY2thZ2UtbG9jay5qc29uYCBoYXMgYW4gaW5zdGFsbGVkIGVudHJ5IHdpdGhvdXQgYHJlc29sdmVkYCBvciBgaW50ZWdyaXR5YC5cbiAqIEEgcHJvamVjdCB3aXRoIG5vIGBwYWNrYWdlLWxvY2suanNvbmAsIHN1Y2ggYXMgb25lIG9uIGFub3RoZXIgcGFja2FnZSBtYW5hZ2VyLCBwYXNzZXMuXG4gKlxuICogQHBhcmFtIGN3ZCAtIFRoZSBmb2xkZXIgdG8gcmVzb2x2ZSB0aGUgcHJvamVjdCByb290IGZyb20uIERlZmF1bHRzIHRvIHRoZSBjdXJyZW50IG9uZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbG9jayBpcyBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzc2VydFBhY2thZ2VMb2NrSW50ZWdyaXR5KGN3ZD86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBwYWNrYWdlTG9ja0pzb25QYXRoID0gZ2V0UGFja2FnZUxvY2tKc29uUGF0aChjd2QpO1xuICBpZiAoIWV4aXN0c1N5bmMocGFja2FnZUxvY2tKc29uUGF0aCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBrZXlzID0gZmluZFBhY2thZ2VMb2NrRW50cmllc01pc3NpbmdJbnRlZ3JpdHkoYXdhaXQgcmVhZFBhY2thZ2VMb2NrSnNvbihjd2QpKTtcbiAgaWYgKGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgc2hvd25LZXlzID0ga2V5cy5zbGljZSgwLCBNQVhfUkVQT1JURURfS0VZUykubWFwKChrZXkpID0+IGAgICR7a2V5fWApO1xuICBjb25zdCByZW1haW5pbmdDb3VudCA9IGtleXMubGVuZ3RoIC0gc2hvd25LZXlzLmxlbmd0aDtcbiAgaWYgKHJlbWFpbmluZ0NvdW50ID4gMCkge1xuICAgIHNob3duS2V5cy5wdXNoKGAgIC4uLiBhbmQgJHtTdHJpbmcocmVtYWluaW5nQ291bnQpfSBtb3JlYCk7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgW1xuICAgICAgYCR7cGFja2FnZUxvY2tKc29uUGF0aH06ICR7U3RyaW5nKGtleXMubGVuZ3RoKX0gaW5zdGFsbGVkIHBhY2thZ2UocykgaGF2ZSBubyBcXGByZXNvbHZlZFxcYCBvciBubyBcXGBpbnRlZ3JpdHlcXGAsIHNvIFxcYG5wbSBjaVxcYCBjYW5ub3QgdmVyaWZ5IHRoZW06YCxcbiAgICAgIC4uLnNob3duS2V5cyxcbiAgICAgICducG0gbmV2ZXIgYWRkcyB0aGVzZSBmaWVsZHMgYmFjayBieSBpdHNlbGYsIGFuZCByZWdlbmVyYXRpbmcgdGhlIGxvY2sgd291bGQgY2hhbmdlIHZlcnNpb25zLiBGaWxsIGVhY2ggZW50cnkgZnJvbSB0aGUgcmVnaXN0cnknLFxuICAgICAgJ21ldGFkYXRhIGZvciB0aGUgdmVyc2lvbiBhbHJlYWR5IGxvY2tlZDogR0VUIGh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnLzxuYW1lLCB3aXRoIC8gd3JpdHRlbiBhcyAlMmY+Lzx2ZXJzaW9uPiwgYW5kIGNvcHknLFxuICAgICAgJ2BkaXN0LnRhcmJhbGxgIGludG8gYHJlc29sdmVkYCBhbmQgYGRpc3QuaW50ZWdyaXR5YCBpbnRvIGBpbnRlZ3JpdHlgLiBUaGUgbmFtZSBpcyB0aGUgZW50cnlcXCdzIGBuYW1lYCBmaWVsZCwgb3IgZWxzZSB0aGUgdGV4dCcsXG4gICAgICAnYWZ0ZXIgdGhlIGtleVxcJ3MgbGFzdCBgbm9kZV9tb2R1bGVzL2AuIFRoZW4gY2hlY2sgdGhhdCBgbnBtIGluc3RhbGwgLS1wYWNrYWdlLWxvY2stb25seWAgbGVhdmVzIHRoZSBmaWxlIGJ5dGUtaWRlbnRpY2FsLicsXG4gICAgICAnVG8gc2tpcCB0aGlzIGNoZWNrIGZvciBvbmUgcnVuLCBzZXQgUEFDS0FHRV9MT0NLX0lOVEVHUklUWT0wLidcbiAgICBdLmpvaW4oJ1xcbicpXG4gICk7XG59XG5cbi8qKlxuICogRmluZHMgdGhlIGBwYWNrYWdlc2AgZW50cmllcyBvZiBhIGxvY2tmaWxlIHRoYXQgaGF2ZSBubyBgcmVzb2x2ZWRgIGZpZWxkLCBvciB0aGF0IGhhdmUgYSByZWdpc3RyeVxuICogYHJlc29sdmVkYCBmaWVsZCBhbmQgbm8gYGludGVncml0eWAgZmllbGQuXG4gKlxuICogU29tZSBlbnRyaWVzIG5ldmVyIGhhdmUgdGhlc2UgZmllbGRzIGluIGEgaGVhbHRoeSBsb2NrLCBzbyB0aGV5IGFyZSBza2lwcGVkOiB0aGUgcm9vdCAoYCcnYCksIGEgYGxpbmtgLFxuICogYSB3b3Jrc3BhY2Ugc291cmNlIGZvbGRlciAoaXRzIGtleSBoYXMgbm8gYG5vZGVfbW9kdWxlcy9gIHNlZ21lbnQpLCBhbmQgYSBidW5kbGVkIGRlcGVuZGVuY3kgKGBpbkJ1bmRsZWApLFxuICogd2hpY2ggY29tZXMgaW5zaWRlIGl0cyBwYXJlbnQncyB0YXJiYWxsLiBgaW50ZWdyaXR5YCBpcyBvbmx5IHJlcXVpcmVkIHdoZW4gYHJlc29sdmVkYCBpcyBhIHJlZ2lzdHJ5IFVSTCxcbiAqIGJlY2F1c2UgbnBtIHJlY29yZHMgbm8gaW50ZWdyaXR5IGZvciBhIGdpdCBkZXBlbmRlbmN5LlxuICpcbiAqIEBwYXJhbSBwYWNrYWdlTG9ja0pzb24gLSBUaGUgcGFyc2VkIGBwYWNrYWdlLWxvY2suanNvbmAuXG4gKiBAcmV0dXJucyBUaGUga2V5cyBvZiB0aGUgb2ZmZW5kaW5nIGVudHJpZXMsIGluIGxvY2tmaWxlIG9yZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFBhY2thZ2VMb2NrRW50cmllc01pc3NpbmdJbnRlZ3JpdHkocGFja2FnZUxvY2tKc29uOiBQYWNrYWdlTG9ja0pzb24pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocGFja2FnZUxvY2tKc29uLnBhY2thZ2VzID8/IHt9KSkge1xuICAgIGNvbnN0IGVudHJ5ID0gdmFsdWUgYXMgUGFja2FnZUxvY2tFbnRyeTtcbiAgICBpZiAoa2V5ID09PSAnJyB8fCAha2V5LmluY2x1ZGVzKE5PREVfTU9EVUxFU19TRUdNRU5UKSB8fCBlbnRyeS5saW5rIHx8IGVudHJ5LmluQnVuZGxlKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoZW50cnkucmVzb2x2ZWQgPT09IHVuZGVmaW5lZCB8fCAoZW50cnkuaW50ZWdyaXR5ID09PSB1bmRlZmluZWQgJiYgUkVHSVNUUllfUkVTT0xWRURfUkVHX0VYUC50ZXN0KGVudHJ5LnJlc29sdmVkKSkpIHtcbiAgICAgIGtleXMucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBrZXlzO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsU0FBUyxrQkFBa0I7QUFJM0I7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFLUCxNQUFNLG9CQUFvQjtBQUUxQixNQUFNLHVCQUF1QjtBQUM3QixNQUFNLDRCQUE0QjtBQW9CbEMsZUFBc0IsMkJBQTJCLEtBQTZCO0FBQzVFLFFBQU0sc0JBQXNCLHVCQUF1QixHQUFHO0FBQ3RELE1BQUksQ0FBQyxXQUFXLG1CQUFtQixHQUFHO0FBQ3BDO0FBQUEsRUFDRjtBQUVBLFFBQU0sT0FBTyx1Q0FBdUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDO0FBQ2xGLE1BQUksS0FBSyxXQUFXLEdBQUc7QUFDckI7QUFBQSxFQUNGO0FBRUEsUUFBTSxZQUFZLEtBQUssTUFBTSxHQUFHLGlCQUFpQixFQUFFLElBQUksQ0FBQyxRQUFRLEtBQUssR0FBRyxFQUFFO0FBQzFFLFFBQU0saUJBQWlCLEtBQUssU0FBUyxVQUFVO0FBQy9DLE1BQUksaUJBQWlCLEdBQUc7QUFDdEIsY0FBVSxLQUFLLGFBQWEsT0FBTyxjQUFjLENBQUMsT0FBTztBQUFBLEVBQzNEO0FBRUEsUUFBTSxJQUFJO0FBQUEsSUFDUjtBQUFBLE1BQ0UsR0FBRyxtQkFBbUIsS0FBSyxPQUFPLEtBQUssTUFBTSxDQUFDO0FBQUEsTUFDOUMsR0FBRztBQUFBLE1BQ0g7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRixFQUFFLEtBQUssSUFBSTtBQUFBLEVBQ2I7QUFDRjtBQWNPLFNBQVMsdUNBQXVDLGlCQUE0QztBQUNqRyxRQUFNLE9BQWlCLENBQUM7QUFFeEIsYUFBVyxDQUFDLEtBQUssS0FBSyxLQUFLLE9BQU8sUUFBUSxnQkFBZ0IsWUFBWSxDQUFDLENBQUMsR0FBRztBQUN6RSxVQUFNLFFBQVE7QUFDZCxRQUFJLFFBQVEsTUFBTSxDQUFDLElBQUksU0FBUyxvQkFBb0IsS0FBSyxNQUFNLFFBQVEsTUFBTSxVQUFVO0FBQ3JGO0FBQUEsSUFDRjtBQUVBLFFBQUksTUFBTSxhQUFhLFVBQWMsTUFBTSxjQUFjLFVBQWEsMEJBQTBCLEtBQUssTUFBTSxRQUFRLEdBQUk7QUFDckgsV0FBSyxLQUFLLEdBQUc7QUFBQSxJQUNmO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFtdCn0K
@@ -0,0 +1,93 @@
1
+ /// <reference path="./library-references.d.mts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Resolves locally-installed tool binaries and package-script runners without assuming `npm`.
6
+ *
7
+ * Delegating to `npx` silently assumes an npm-installed tree. On Windows that assumption is fatal under
8
+ * `bun`: `bun install` writes `node_modules/.bin/<tool>.exe`, not the `<tool>.cmd` that npm's `npx` looks
9
+ * for, so `npx` misses the local install entirely and downloads the tool from the registry instead — which
10
+ * for `tsc` is the well-known decoy package, not TypeScript. Resolving the shim from `node_modules/.bin`
11
+ * ourselves sidesteps the whole shim-format question, because every package manager writes one there.
12
+ */
13
+ /**
14
+ * A package manager that can own a project's dependency tree.
15
+ */
16
+ export declare enum PackageManager {
17
+ /**
18
+ * The `bun` package manager.
19
+ */
20
+ Bun = "bun",
21
+ /**
22
+ * The `npm` package manager.
23
+ */
24
+ Npm = "npm",
25
+ /**
26
+ * The `pnpm` package manager.
27
+ */
28
+ Pnpm = "pnpm",
29
+ /**
30
+ * The `yarn` package manager.
31
+ */
32
+ Yarn = "yarn"
33
+ }
34
+ /**
35
+ * Parameters for {@link resolveToolCommand}.
36
+ */
37
+ export interface ResolveToolCommandParams {
38
+ /**
39
+ * The current working folder to resolve from.
40
+ */
41
+ readonly cwd?: string;
42
+ /**
43
+ * The name of the locally-installed tool, as it appears in `node_modules/.bin`.
44
+ */
45
+ readonly tool: string;
46
+ }
47
+ /**
48
+ * Determines which package manager owns the project's dependency tree.
49
+ *
50
+ * Every signal is collected before any of them is believed, because a repo carrying two lockfiles used to
51
+ * resolve to whichever sat earlier in a fixed list — silently reassigning every package script and every
52
+ * tool invocation to a manager that never installed the tree.
53
+ *
54
+ * The order is:
55
+ *
56
+ * 1. The `packageManager` field of `package.json`. It is a deliberate declaration by the repo's author
57
+ * rather than an artifact left behind by whatever ran last, so it outranks every lockfile — and it is
58
+ * the only signal that helps at all before the first install, when no lockfile exists yet.
59
+ * 2. The sole lockfile, when exactly one manager claims the tree.
60
+ * 3. Among several lockfiles, the manager that launched us (`npm_config_user_agent`), when it owns one of
61
+ * them — a live signal beats a file that may have been abandoned mid-migration. Otherwise the
62
+ * documented fallback order in {@link LOCKFILES} decides. Note this is deliberately NOT "the most
63
+ * recently modified lockfile": a stray lockfile is typically the newest file, so mtime picks precisely
64
+ * the wrong one.
65
+ * 4. `npm_config_user_agent` on its own, when there is no lockfile.
66
+ * 5. {@link PackageManager.Npm}.
67
+ *
68
+ * Whenever more than one manager claims the tree, the disagreement is reported once per project through
69
+ * {@link warnAboutSeveralClaimants} — the resolution stays deterministic, but it stops being silent.
70
+ *
71
+ * @param cwd - The current working folder to resolve from.
72
+ * @returns The detected package manager, or {@link PackageManager.Npm} when nothing indicates otherwise.
73
+ */
74
+ export declare function getPackageManager(cwd?: string): PackageManager;
75
+ /**
76
+ * Builds the command parts that run a package script through the manager that owns the tree.
77
+ *
78
+ * @param cwd - The current working folder to resolve from.
79
+ * @returns The command parts, e.g. `['bun', 'run']`. The script name is appended by the caller.
80
+ */
81
+ export declare function getPackageManagerRunCommand(cwd?: string): string[];
82
+ /**
83
+ * Builds the command parts that run a locally-installed tool, with the tool itself already included.
84
+ *
85
+ * Prefers the shim in the nearest `node_modules/.bin`, walking up through ancestor folders so a hoisted
86
+ * workspace install is still found. Falls back to the owning manager's exec form when no shim resolves —
87
+ * which is both the previous behavior and the only thing that works under yarn's Plug'n'Play, where
88
+ * `node_modules/.bin` does not exist at all.
89
+ *
90
+ * @param params - The parameters for the resolution.
91
+ * @returns The command parts, e.g. `['/project/node_modules/.bin/tsc']` or `['bun', 'x', 'tsc']`.
92
+ */
93
+ export declare function resolveToolCommand(params: ResolveToolCommandParams): string[];