@ykdz/template 0.0.23 → 0.0.24

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 (451) hide show
  1. package/dist/cli.js +4 -575
  2. package/dist/main.d.ts +1 -0
  3. package/dist/main.js +370 -0
  4. package/node_modules/@typescript/old/LICENSE.txt +55 -0
  5. package/node_modules/@typescript/old/README.md +50 -0
  6. package/node_modules/@typescript/old/SECURITY.md +39 -0
  7. package/node_modules/@typescript/old/ThirdPartyNoticeText.txt +193 -0
  8. package/node_modules/@typescript/old/bin/tsc +2 -0
  9. package/node_modules/@typescript/old/bin/tsserver +2 -0
  10. package/node_modules/@typescript/old/lib/_tsc.js +134465 -0
  11. package/node_modules/@typescript/old/lib/_tsserver.js +659 -0
  12. package/node_modules/@typescript/old/lib/_typingsInstaller.js +222 -0
  13. package/node_modules/@typescript/old/lib/cs/diagnosticMessages.generated.json +2129 -0
  14. package/node_modules/@typescript/old/lib/de/diagnosticMessages.generated.json +2125 -0
  15. package/node_modules/@typescript/old/lib/es/diagnosticMessages.generated.json +2129 -0
  16. package/node_modules/@typescript/old/lib/fr/diagnosticMessages.generated.json +2129 -0
  17. package/node_modules/@typescript/old/lib/it/diagnosticMessages.generated.json +2125 -0
  18. package/node_modules/@typescript/old/lib/ja/diagnosticMessages.generated.json +2129 -0
  19. package/node_modules/@typescript/old/lib/ko/diagnosticMessages.generated.json +2129 -0
  20. package/node_modules/@typescript/old/lib/lib.d.ts +20 -0
  21. package/node_modules/@typescript/old/lib/lib.decorators.d.ts +382 -0
  22. package/node_modules/@typescript/old/lib/lib.decorators.legacy.d.ts +20 -0
  23. package/node_modules/@typescript/old/lib/lib.dom.asynciterable.d.ts +18 -0
  24. package/node_modules/@typescript/old/lib/lib.dom.d.ts +45125 -0
  25. package/node_modules/@typescript/old/lib/lib.dom.iterable.d.ts +18 -0
  26. package/node_modules/@typescript/old/lib/lib.es2015.collection.d.ts +150 -0
  27. package/node_modules/@typescript/old/lib/lib.es2015.core.d.ts +595 -0
  28. package/node_modules/@typescript/old/lib/lib.es2015.d.ts +26 -0
  29. package/node_modules/@typescript/old/lib/lib.es2015.generator.d.ts +75 -0
  30. package/node_modules/@typescript/old/lib/lib.es2015.iterable.d.ts +603 -0
  31. package/node_modules/@typescript/old/lib/lib.es2015.promise.d.ts +79 -0
  32. package/node_modules/@typescript/old/lib/lib.es2015.proxy.d.ts +126 -0
  33. package/node_modules/@typescript/old/lib/lib.es2015.reflect.d.ts +142 -0
  34. package/node_modules/@typescript/old/lib/lib.es2015.symbol.d.ts +44 -0
  35. package/node_modules/@typescript/old/lib/lib.es2015.symbol.wellknown.d.ts +324 -0
  36. package/node_modules/@typescript/old/lib/lib.es2016.array.include.d.ts +114 -0
  37. package/node_modules/@typescript/old/lib/lib.es2016.d.ts +19 -0
  38. package/node_modules/@typescript/old/lib/lib.es2016.full.d.ts +21 -0
  39. package/node_modules/@typescript/old/lib/lib.es2016.intl.d.ts +29 -0
  40. package/node_modules/@typescript/old/lib/lib.es2017.arraybuffer.d.ts +19 -0
  41. package/node_modules/@typescript/old/lib/lib.es2017.d.ts +24 -0
  42. package/node_modules/@typescript/old/lib/lib.es2017.date.d.ts +29 -0
  43. package/node_modules/@typescript/old/lib/lib.es2017.full.d.ts +21 -0
  44. package/node_modules/@typescript/old/lib/lib.es2017.intl.d.ts +42 -0
  45. package/node_modules/@typescript/old/lib/lib.es2017.object.d.ts +47 -0
  46. package/node_modules/@typescript/old/lib/lib.es2017.sharedmemory.d.ts +133 -0
  47. package/node_modules/@typescript/old/lib/lib.es2017.string.d.ts +43 -0
  48. package/node_modules/@typescript/old/lib/lib.es2017.typedarrays.d.ts +51 -0
  49. package/node_modules/@typescript/old/lib/lib.es2018.asyncgenerator.d.ts +75 -0
  50. package/node_modules/@typescript/old/lib/lib.es2018.asynciterable.d.ts +51 -0
  51. package/node_modules/@typescript/old/lib/lib.es2018.d.ts +22 -0
  52. package/node_modules/@typescript/old/lib/lib.es2018.full.d.ts +22 -0
  53. package/node_modules/@typescript/old/lib/lib.es2018.intl.d.ts +81 -0
  54. package/node_modules/@typescript/old/lib/lib.es2018.promise.d.ts +28 -0
  55. package/node_modules/@typescript/old/lib/lib.es2018.regexp.d.ts +35 -0
  56. package/node_modules/@typescript/old/lib/lib.es2019.array.d.ts +77 -0
  57. package/node_modules/@typescript/old/lib/lib.es2019.d.ts +22 -0
  58. package/node_modules/@typescript/old/lib/lib.es2019.full.d.ts +22 -0
  59. package/node_modules/@typescript/old/lib/lib.es2019.intl.d.ts +21 -0
  60. package/node_modules/@typescript/old/lib/lib.es2019.object.d.ts +31 -0
  61. package/node_modules/@typescript/old/lib/lib.es2019.string.d.ts +35 -0
  62. package/node_modules/@typescript/old/lib/lib.es2019.symbol.d.ts +22 -0
  63. package/node_modules/@typescript/old/lib/lib.es2020.bigint.d.ts +763 -0
  64. package/node_modules/@typescript/old/lib/lib.es2020.d.ts +25 -0
  65. package/node_modules/@typescript/old/lib/lib.es2020.date.d.ts +40 -0
  66. package/node_modules/@typescript/old/lib/lib.es2020.full.d.ts +22 -0
  67. package/node_modules/@typescript/old/lib/lib.es2020.intl.d.ts +472 -0
  68. package/node_modules/@typescript/old/lib/lib.es2020.number.d.ts +26 -0
  69. package/node_modules/@typescript/old/lib/lib.es2020.promise.d.ts +45 -0
  70. package/node_modules/@typescript/old/lib/lib.es2020.sharedmemory.d.ts +97 -0
  71. package/node_modules/@typescript/old/lib/lib.es2020.string.d.ts +42 -0
  72. package/node_modules/@typescript/old/lib/lib.es2020.symbol.wellknown.d.ts +39 -0
  73. package/node_modules/@typescript/old/lib/lib.es2021.d.ts +21 -0
  74. package/node_modules/@typescript/old/lib/lib.es2021.full.d.ts +22 -0
  75. package/node_modules/@typescript/old/lib/lib.es2021.intl.d.ts +164 -0
  76. package/node_modules/@typescript/old/lib/lib.es2021.promise.d.ts +46 -0
  77. package/node_modules/@typescript/old/lib/lib.es2021.string.d.ts +31 -0
  78. package/node_modules/@typescript/old/lib/lib.es2021.weakref.d.ts +76 -0
  79. package/node_modules/@typescript/old/lib/lib.es2022.array.d.ts +119 -0
  80. package/node_modules/@typescript/old/lib/lib.es2022.d.ts +23 -0
  81. package/node_modules/@typescript/old/lib/lib.es2022.error.d.ts +73 -0
  82. package/node_modules/@typescript/old/lib/lib.es2022.full.d.ts +22 -0
  83. package/node_modules/@typescript/old/lib/lib.es2022.intl.d.ts +143 -0
  84. package/node_modules/@typescript/old/lib/lib.es2022.object.d.ts +24 -0
  85. package/node_modules/@typescript/old/lib/lib.es2022.regexp.d.ts +37 -0
  86. package/node_modules/@typescript/old/lib/lib.es2022.string.d.ts +23 -0
  87. package/node_modules/@typescript/old/lib/lib.es2023.array.d.ts +922 -0
  88. package/node_modules/@typescript/old/lib/lib.es2023.collection.d.ts +19 -0
  89. package/node_modules/@typescript/old/lib/lib.es2023.d.ts +20 -0
  90. package/node_modules/@typescript/old/lib/lib.es2023.full.d.ts +22 -0
  91. package/node_modules/@typescript/old/lib/lib.es2023.intl.d.ts +62 -0
  92. package/node_modules/@typescript/old/lib/lib.es2024.arraybuffer.d.ts +63 -0
  93. package/node_modules/@typescript/old/lib/lib.es2024.collection.d.ts +27 -0
  94. package/node_modules/@typescript/old/lib/lib.es2024.d.ts +24 -0
  95. package/node_modules/@typescript/old/lib/lib.es2024.full.d.ts +22 -0
  96. package/node_modules/@typescript/old/lib/lib.es2024.object.d.ts +27 -0
  97. package/node_modules/@typescript/old/lib/lib.es2024.promise.d.ts +33 -0
  98. package/node_modules/@typescript/old/lib/lib.es2024.regexp.d.ts +23 -0
  99. package/node_modules/@typescript/old/lib/lib.es2024.sharedmemory.d.ts +66 -0
  100. package/node_modules/@typescript/old/lib/lib.es2024.string.d.ts +27 -0
  101. package/node_modules/@typescript/old/lib/lib.es2025.collection.d.ts +94 -0
  102. package/node_modules/@typescript/old/lib/lib.es2025.d.ts +23 -0
  103. package/node_modules/@typescript/old/lib/lib.es2025.float16.d.ts +443 -0
  104. package/node_modules/@typescript/old/lib/lib.es2025.full.d.ts +22 -0
  105. package/node_modules/@typescript/old/lib/lib.es2025.intl.d.ts +200 -0
  106. package/node_modules/@typescript/old/lib/lib.es2025.iterator.d.ts +146 -0
  107. package/node_modules/@typescript/old/lib/lib.es2025.promise.d.ts +32 -0
  108. package/node_modules/@typescript/old/lib/lib.es2025.regexp.d.ts +30 -0
  109. package/node_modules/@typescript/old/lib/lib.es5.d.ts +4599 -0
  110. package/node_modules/@typescript/old/lib/lib.es6.d.ts +21 -0
  111. package/node_modules/@typescript/old/lib/lib.esnext.array.d.ts +33 -0
  112. package/node_modules/@typescript/old/lib/lib.esnext.collection.d.ts +47 -0
  113. package/node_modules/@typescript/old/lib/lib.esnext.d.ts +27 -0
  114. package/node_modules/@typescript/old/lib/lib.esnext.date.d.ts +21 -0
  115. package/node_modules/@typescript/old/lib/lib.esnext.decorators.d.ts +26 -0
  116. package/node_modules/@typescript/old/lib/lib.esnext.disposable.d.ts +191 -0
  117. package/node_modules/@typescript/old/lib/lib.esnext.error.d.ts +22 -0
  118. package/node_modules/@typescript/old/lib/lib.esnext.full.d.ts +22 -0
  119. package/node_modules/@typescript/old/lib/lib.esnext.intl.d.ts +107 -0
  120. package/node_modules/@typescript/old/lib/lib.esnext.sharedmemory.d.ts +23 -0
  121. package/node_modules/@typescript/old/lib/lib.esnext.temporal.d.ts +485 -0
  122. package/node_modules/@typescript/old/lib/lib.esnext.typedarrays.d.ts +90 -0
  123. package/node_modules/@typescript/old/lib/lib.scripthost.d.ts +320 -0
  124. package/node_modules/@typescript/old/lib/lib.webworker.asynciterable.d.ts +18 -0
  125. package/node_modules/@typescript/old/lib/lib.webworker.d.ts +15606 -0
  126. package/node_modules/@typescript/old/lib/lib.webworker.importscripts.d.ts +21 -0
  127. package/node_modules/@typescript/old/lib/lib.webworker.iterable.d.ts +18 -0
  128. package/node_modules/@typescript/old/lib/pl/diagnosticMessages.generated.json +2129 -0
  129. package/node_modules/@typescript/old/lib/pt-br/diagnosticMessages.generated.json +2129 -0
  130. package/node_modules/@typescript/old/lib/ru/diagnosticMessages.generated.json +2125 -0
  131. package/node_modules/@typescript/old/lib/tr/diagnosticMessages.generated.json +2129 -0
  132. package/node_modules/@typescript/old/lib/tsc.js +8 -0
  133. package/node_modules/@typescript/old/lib/tsserver.js +8 -0
  134. package/node_modules/@typescript/old/lib/tsserverlibrary.d.ts +17 -0
  135. package/node_modules/@typescript/old/lib/tsserverlibrary.js +21 -0
  136. package/node_modules/@typescript/old/lib/typesMap.json +497 -0
  137. package/node_modules/@typescript/old/lib/typescript.d.ts +11448 -0
  138. package/node_modules/@typescript/old/lib/typescript.js +201039 -0
  139. package/node_modules/@typescript/old/lib/typingsInstaller.js +8 -0
  140. package/node_modules/@typescript/old/lib/watchGuard.js +53 -0
  141. package/node_modules/@typescript/old/lib/zh-cn/diagnosticMessages.generated.json +2129 -0
  142. package/node_modules/@typescript/old/lib/zh-tw/diagnosticMessages.generated.json +2125 -0
  143. package/node_modules/@typescript/old/package.json +118 -0
  144. package/node_modules/@ykdz/template-builtin-presets/dist/src/foundation.d.ts +85 -0
  145. package/node_modules/@ykdz/template-builtin-presets/dist/src/foundation.js +797 -0
  146. package/node_modules/@ykdz/template-builtin-presets/dist/src/index.d.ts +3 -0
  147. package/node_modules/@ykdz/template-builtin-presets/dist/src/index.js +2 -0
  148. package/node_modules/@ykdz/template-builtin-presets/dist/src/rust-bin/definition.d.ts +2 -0
  149. package/node_modules/@ykdz/template-builtin-presets/dist/src/rust-bin/definition.js +134 -0
  150. package/node_modules/@ykdz/template-builtin-presets/dist/src/shared/vue.d.ts +36 -0
  151. package/node_modules/@ykdz/template-builtin-presets/dist/src/shared/vue.js +106 -0
  152. package/node_modules/@ykdz/template-builtin-presets/dist/src/template-sources.d.ts +14 -0
  153. package/node_modules/@ykdz/template-builtin-presets/dist/src/template-sources.js +26 -0
  154. package/node_modules/@ykdz/template-builtin-presets/dist/src/ts-lib/definition.d.ts +2 -0
  155. package/node_modules/@ykdz/template-builtin-presets/dist/src/ts-lib/definition.js +138 -0
  156. package/node_modules/@ykdz/template-builtin-presets/dist/src/vike-app/definition.d.ts +2 -0
  157. package/node_modules/@ykdz/template-builtin-presets/dist/src/vike-app/definition.js +408 -0
  158. package/node_modules/@ykdz/template-builtin-presets/dist/src/vue-app/definition.d.ts +2 -0
  159. package/node_modules/@ykdz/template-builtin-presets/dist/src/vue-app/definition.js +94 -0
  160. package/node_modules/@ykdz/template-builtin-presets/dist/src/vue-hono-app/definition.d.ts +2 -0
  161. package/node_modules/@ykdz/template-builtin-presets/dist/src/vue-hono-app/definition.js +179 -0
  162. package/node_modules/@ykdz/template-builtin-presets/package.json +67 -0
  163. package/node_modules/@ykdz/{template-builtin-source/templates/vue-app/.github/dependabot.yml → template-builtin-presets/templates/foundation/.github/dependabot-rust.yml} +13 -0
  164. package/node_modules/@ykdz/template-builtin-presets/templates/foundation/.github/dependabot.dynamic.template +4 -0
  165. package/node_modules/@ykdz/{template-builtin-source/templates/ts-lib → template-builtin-presets/templates/foundation}/.github/dependabot.yml +5 -0
  166. package/node_modules/@ykdz/template-builtin-presets/templates/foundation/.github/workflows/check.dynamic.template +19 -0
  167. package/node_modules/@ykdz/template-builtin-presets/templates/foundation/.pnpmfile.cts +14 -0
  168. package/node_modules/@ykdz/template-builtin-presets/templates/foundation/TODO.md.template +5 -0
  169. package/node_modules/@ykdz/template-builtin-presets/templates/foundation/devcontainer.json +16 -0
  170. package/node_modules/@ykdz/template-builtin-presets/templates/foundation/gitignore +8 -0
  171. package/node_modules/@ykdz/template-builtin-presets/templates/foundation/pnpm-workspace.dynamic.txt +23 -0
  172. package/node_modules/@ykdz/template-builtin-presets/templates/foundation/pnpm-workspace.yaml +29 -0
  173. package/node_modules/@ykdz/template-builtin-presets/templates/foundation/rust/.vscode/extensions.json +3 -0
  174. package/node_modules/@ykdz/template-builtin-presets/templates/foundation/rust/.vscode/settings.json +5 -0
  175. package/node_modules/@ykdz/template-builtin-presets/templates/foundation/rust/devcontainer/devcontainer.json +21 -0
  176. package/node_modules/@ykdz/template-builtin-presets/templates/foundation/tsconfig.json +4 -0
  177. package/node_modules/@ykdz/template-builtin-presets/templates/foundation/turbo.json +18 -0
  178. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/rust-bin/.github/dependabot.yml +5 -0
  179. package/node_modules/@ykdz/template-builtin-presets/templates/rust-bin/.github/workflows/check.yml +23 -0
  180. package/node_modules/@ykdz/template-builtin-presets/templates/rust-bin/.vscode/extensions.json +3 -0
  181. package/node_modules/@ykdz/template-builtin-presets/templates/rust-bin/.vscode/settings.json +5 -0
  182. package/node_modules/@ykdz/template-builtin-presets/templates/rust-bin/Cargo.lock +16 -0
  183. package/node_modules/@ykdz/template-builtin-presets/templates/rust-bin/Cargo.toml +27 -0
  184. package/node_modules/@ykdz/template-builtin-presets/templates/rust-bin/devcontainer/devcontainer.json +21 -0
  185. package/node_modules/@ykdz/template-builtin-presets/templates/rust-bin/devcontainer/rust.Dockerfile +16 -0
  186. package/node_modules/@ykdz/template-builtin-presets/templates/rust-bin/rust-toolchain.toml +3 -0
  187. package/node_modules/@ykdz/template-builtin-presets/templates/shared/devcontainer/node-pnpm.Dockerfile +12 -0
  188. package/node_modules/@ykdz/template-builtin-presets/templates/shared/devcontainer/shellcheck.Dockerfile +3 -0
  189. package/node_modules/@ykdz/template-builtin-presets/templates/shared/editor-customization/capabilities.json +38 -0
  190. package/node_modules/@ykdz/template-builtin-presets/templates/shared/oxc/node/oxlint.config.ts +6 -0
  191. package/node_modules/@ykdz/template-builtin-presets/templates/shared/oxc/oxfmt.config.ts +3 -0
  192. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/shared/oxc/tsconfig.config.json +2 -2
  193. package/node_modules/@ykdz/template-builtin-presets/templates/shared/vue/tsconfig.app.json +25 -0
  194. package/node_modules/@ykdz/template-builtin-presets/templates/shared/vue/tsconfig.json +8 -0
  195. package/node_modules/@ykdz/template-builtin-presets/templates/shared/vue/tsconfig.node.json +30 -0
  196. package/node_modules/@ykdz/template-builtin-presets/templates/shared/vue/tsconfig.test.json +9 -0
  197. package/node_modules/@ykdz/template-builtin-presets/templates/shared/vue/typescript/run-vue-tsc.ts +12 -0
  198. package/node_modules/@ykdz/{template-builtin-source/templates/vue-hono-app → template-builtin-presets/templates/ts-lib}/.github/dependabot.yml +5 -0
  199. package/node_modules/@ykdz/template-builtin-presets/templates/ts-lib/.github/workflows/check.yml +19 -0
  200. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/ts-lib/src/index.ts +1 -3
  201. package/node_modules/@ykdz/template-builtin-presets/templates/ts-lib/tsconfig.json +13 -0
  202. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/db/src/readiness.ts +2 -2
  203. package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/db/src/types.d.ts +1 -0
  204. package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/db/tsconfig.json +26 -0
  205. package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/db-migrations/drizzle.config.ts +17 -0
  206. package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/db-migrations/scripts/prepare-database.ts +45 -0
  207. package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/db-migrations/tsconfig.json +22 -0
  208. package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/db-migrations/turbo.json +10 -0
  209. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/Dockerfile +21 -30
  210. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/pages/index/+Page.telefunc.ts +0 -2
  211. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/pages/index/+Page.vue +2 -1
  212. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/playwright.config.ts +1 -1
  213. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/scripts/check-standalone-deployment.ts +83 -21
  214. package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/web/scripts/container-entrypoint.sh +33 -0
  215. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/test/e2e/app.spec.ts +3 -1
  216. package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/web/tsconfig.app.json +34 -0
  217. package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/web/tsconfig.json +9 -0
  218. package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/web/tsconfig.node.json +31 -0
  219. package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/web/tsconfig.test.json +11 -0
  220. package/node_modules/@ykdz/{template-builtin-source/templates/vue-app → template-builtin-presets/templates/vike-app/web}/turbo.json +1 -0
  221. package/node_modules/@ykdz/{template-builtin-source/templates/vike-app → template-builtin-presets/templates/vue-app}/.github/dependabot.yml +5 -4
  222. package/node_modules/@ykdz/{template-builtin-source/templates/vue-hono-app/web → template-builtin-presets/templates/vue-app}/turbo.json +2 -1
  223. package/node_modules/@ykdz/template-builtin-presets/templates/vue-app/typescript/tsconfig.json +8 -0
  224. package/node_modules/@ykdz/template-builtin-presets/templates/vue-hono-app/api/src/index.ts +3 -0
  225. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/api/src/server.ts +1 -1
  226. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/api/test/app.test.ts +1 -1
  227. package/node_modules/@ykdz/template-builtin-presets/templates/vue-hono-app/api/tsconfig.build.json +9 -0
  228. package/node_modules/@ykdz/template-builtin-presets/templates/vue-hono-app/api/tsconfig.json +25 -0
  229. package/node_modules/@ykdz/template-core/dist/Cargo.toml +1 -1
  230. package/node_modules/@ykdz/template-core/dist/dependency-catalog.d.ts +9 -0
  231. package/node_modules/@ykdz/template-core/dist/dependency-catalog.js +54 -12
  232. package/node_modules/@ykdz/template-core/dist/devcontainer.d.ts +11 -3
  233. package/node_modules/@ykdz/template-core/dist/devcontainer.js +17 -3
  234. package/node_modules/@ykdz/template-core/dist/editor-customization.d.ts +5 -9
  235. package/node_modules/@ykdz/template-core/dist/editor-customization.js +8 -46
  236. package/node_modules/@ykdz/template-core/dist/module-graph.d.ts +31 -2
  237. package/node_modules/@ykdz/template-core/dist/module-graph.js +40 -0
  238. package/node_modules/@ykdz/template-core/dist/package-contribution.d.ts +43 -0
  239. package/node_modules/@ykdz/template-core/dist/package-contribution.js +24 -0
  240. package/node_modules/@ykdz/template-core/dist/pnpm-workspace.yaml +24 -8
  241. package/node_modules/@ykdz/template-core/dist/preset-definition.d.ts +42 -0
  242. package/node_modules/@ykdz/template-core/dist/preset-definition.js +1 -0
  243. package/node_modules/@ykdz/template-core/dist/project-blueprint-v2.d.ts +33 -0
  244. package/node_modules/@ykdz/template-core/dist/project-blueprint-v2.js +161 -0
  245. package/node_modules/@ykdz/template-core/dist/project-github.d.ts +8 -1
  246. package/node_modules/@ykdz/template-core/dist/project-github.js +86 -8
  247. package/node_modules/@ykdz/template-core/dist/project-linking-v2.d.ts +20 -0
  248. package/node_modules/@ykdz/template-core/dist/project-linking-v2.js +37 -0
  249. package/node_modules/@ykdz/template-core/dist/renderer.d.ts +40 -5
  250. package/node_modules/@ykdz/template-core/dist/renderer.js +115 -30
  251. package/node_modules/@ykdz/template-core/dist/template-boundary-check.d.ts +21 -15
  252. package/node_modules/@ykdz/template-core/dist/template-boundary-check.js +100 -50
  253. package/node_modules/@ykdz/template-core/dist/toolchain-baseline-update.d.ts +45 -0
  254. package/node_modules/@ykdz/template-core/dist/toolchain-baseline-update.js +27 -0
  255. package/node_modules/@ykdz/template-core/dist/toolchain-resolution.d.ts +1 -0
  256. package/node_modules/@ykdz/template-core/dist/toolchain-resolution.js +50 -52
  257. package/node_modules/@ykdz/template-core/package.json +10 -8
  258. package/node_modules/semver/LICENSE +15 -0
  259. package/node_modules/semver/README.md +680 -0
  260. package/node_modules/semver/bin/semver.js +195 -0
  261. package/node_modules/semver/classes/comparator.js +143 -0
  262. package/node_modules/semver/classes/index.js +7 -0
  263. package/node_modules/semver/classes/range.js +577 -0
  264. package/node_modules/semver/classes/semver.js +350 -0
  265. package/node_modules/semver/functions/clean.js +8 -0
  266. package/node_modules/semver/functions/cmp.js +54 -0
  267. package/node_modules/semver/functions/coerce.js +62 -0
  268. package/node_modules/semver/functions/compare-build.js +9 -0
  269. package/node_modules/semver/functions/compare-loose.js +5 -0
  270. package/node_modules/semver/functions/compare.js +7 -0
  271. package/node_modules/semver/functions/diff.js +60 -0
  272. package/node_modules/semver/functions/eq.js +5 -0
  273. package/node_modules/semver/functions/gt.js +5 -0
  274. package/node_modules/semver/functions/gte.js +5 -0
  275. package/node_modules/semver/functions/inc.js +21 -0
  276. package/node_modules/semver/functions/lt.js +5 -0
  277. package/node_modules/semver/functions/lte.js +5 -0
  278. package/node_modules/semver/functions/major.js +5 -0
  279. package/node_modules/semver/functions/minor.js +5 -0
  280. package/node_modules/semver/functions/neq.js +5 -0
  281. package/node_modules/semver/functions/parse.js +18 -0
  282. package/node_modules/semver/functions/patch.js +5 -0
  283. package/node_modules/semver/functions/prerelease.js +8 -0
  284. package/node_modules/semver/functions/rcompare.js +5 -0
  285. package/node_modules/semver/functions/rsort.js +5 -0
  286. package/node_modules/semver/functions/satisfies.js +12 -0
  287. package/node_modules/semver/functions/sort.js +5 -0
  288. package/node_modules/semver/functions/truncate.js +48 -0
  289. package/node_modules/semver/functions/valid.js +8 -0
  290. package/node_modules/semver/index.js +93 -0
  291. package/node_modules/semver/internal/constants.js +37 -0
  292. package/node_modules/semver/internal/debug.js +11 -0
  293. package/node_modules/semver/internal/identifiers.js +29 -0
  294. package/node_modules/semver/internal/lrucache.js +42 -0
  295. package/node_modules/semver/internal/parse-options.js +17 -0
  296. package/node_modules/semver/internal/re.js +223 -0
  297. package/node_modules/semver/package.json +78 -0
  298. package/node_modules/semver/preload.js +4 -0
  299. package/node_modules/semver/range.bnf +17 -0
  300. package/node_modules/semver/ranges/gtr.js +6 -0
  301. package/node_modules/semver/ranges/intersects.js +9 -0
  302. package/node_modules/semver/ranges/ltr.js +6 -0
  303. package/node_modules/semver/ranges/max-satisfying.js +27 -0
  304. package/node_modules/semver/ranges/min-satisfying.js +26 -0
  305. package/node_modules/semver/ranges/min-version.js +63 -0
  306. package/node_modules/semver/ranges/outside.js +82 -0
  307. package/node_modules/semver/ranges/simplify.js +49 -0
  308. package/node_modules/semver/ranges/subset.js +249 -0
  309. package/node_modules/semver/ranges/to-comparators.js +10 -0
  310. package/node_modules/semver/ranges/valid.js +13 -0
  311. package/node_modules/typescript/LICENSE.txt +55 -0
  312. package/node_modules/typescript/README.md +9 -0
  313. package/node_modules/typescript/bin/tsc6 +2 -0
  314. package/node_modules/typescript/lib/tsc.js +1 -0
  315. package/node_modules/typescript/lib/tsserverlibrary.d.ts +2 -0
  316. package/node_modules/typescript/lib/tsserverlibrary.js +1 -0
  317. package/node_modules/typescript/lib/typescript.d.ts +2 -0
  318. package/node_modules/typescript/lib/typescript.js +1 -0
  319. package/node_modules/typescript/package.json +39 -0
  320. package/node_modules/valibot/LICENSE.md +9 -0
  321. package/node_modules/valibot/README.md +94 -0
  322. package/node_modules/valibot/dist/index.cjs +7974 -0
  323. package/node_modules/valibot/dist/index.d.cts +16184 -0
  324. package/node_modules/valibot/dist/index.d.mts +16184 -0
  325. package/node_modules/valibot/dist/index.min.cjs +2 -0
  326. package/node_modules/valibot/dist/index.min.mjs +2 -0
  327. package/node_modules/valibot/dist/index.mjs +7663 -0
  328. package/node_modules/valibot/package.json +79 -0
  329. package/package.json +18 -12
  330. package/LICENSE +0 -21
  331. package/node_modules/@ykdz/template-builtin-source/dist/src/index.d.ts +0 -22
  332. package/node_modules/@ykdz/template-builtin-source/dist/src/index.js +0 -103
  333. package/node_modules/@ykdz/template-builtin-source/dist/templates/projection-plans.d.ts +0 -7
  334. package/node_modules/@ykdz/template-builtin-source/dist/templates/projection-plans.js +0 -98
  335. package/node_modules/@ykdz/template-builtin-source/dist/templates/registry.d.ts +0 -2
  336. package/node_modules/@ykdz/template-builtin-source/dist/templates/registry.js +0 -15
  337. package/node_modules/@ykdz/template-builtin-source/dist/templates/rust-bin/projection.d.ts +0 -9
  338. package/node_modules/@ykdz/template-builtin-source/dist/templates/rust-bin/projection.js +0 -105
  339. package/node_modules/@ykdz/template-builtin-source/dist/templates/ts-lib/projection.d.ts +0 -6
  340. package/node_modules/@ykdz/template-builtin-source/dist/templates/ts-lib/projection.js +0 -197
  341. package/node_modules/@ykdz/template-builtin-source/dist/templates/vike-app/projection.d.ts +0 -5
  342. package/node_modules/@ykdz/template-builtin-source/dist/templates/vike-app/projection.js +0 -71
  343. package/node_modules/@ykdz/template-builtin-source/dist/templates/vue-app/projection.d.ts +0 -6
  344. package/node_modules/@ykdz/template-builtin-source/dist/templates/vue-app/projection.js +0 -281
  345. package/node_modules/@ykdz/template-builtin-source/dist/templates/vue-hono-app/projection.d.ts +0 -8
  346. package/node_modules/@ykdz/template-builtin-source/dist/templates/vue-hono-app/projection.js +0 -154
  347. package/node_modules/@ykdz/template-builtin-source/package.json +0 -93
  348. package/node_modules/@ykdz/template-builtin-source/templates/preset-source.json +0 -524
  349. package/node_modules/@ykdz/template-builtin-source/templates/shared/devcontainer/node-pnpm.Dockerfile +0 -6
  350. package/node_modules/@ykdz/template-builtin-source/templates/shared/editor-customization/capabilities.json +0 -56
  351. package/node_modules/@ykdz/template-builtin-source/templates/shared/oxc/node/oxlint.config.ts +0 -34
  352. package/node_modules/@ykdz/template-builtin-source/templates/shared/oxc/oxfmt.config.ts +0 -8
  353. package/node_modules/@ykdz/template-builtin-source/templates/shared/oxc/vue/oxlint.config.ts +0 -36
  354. package/node_modules/@ykdz/template-builtin-source/templates/vike-app/.github/workflows/check.yml +0 -22
  355. package/node_modules/@ykdz/template-builtin-source/templates/vike-app/db/drizzle.config.ts +0 -10
  356. package/node_modules/@ykdz/template-builtin-source/templates/vike-app/web/scripts/container-entrypoint.sh +0 -52
  357. package/node_modules/@ykdz/template-builtin-source/templates/vike-app/web/scripts/prepare-database.sh +0 -6
  358. package/node_modules/@ykdz/template-builtin-source/templates/vue-hono-app/api/src/index.ts +0 -3
  359. package/node_modules/@ykdz/template-builtin-source/templates/vue-hono-app/web/src/main.ts +0 -8
  360. package/node_modules/@ykdz/template-builtin-source/templates/vue-hono-app/web/src/stores/counter.ts +0 -12
  361. package/node_modules/@ykdz/template-builtin-source/templates/vue-hono-app/web/src/style.css +0 -1
  362. package/node_modules/@ykdz/template-builtin-source/templates/vue-hono-app/web/test/app.test.ts +0 -14
  363. package/node_modules/@ykdz/template-core/dist/declarations.d.ts +0 -2
  364. package/node_modules/@ykdz/template-core/dist/declarations.js +0 -1
  365. package/node_modules/@ykdz/template-core/dist/generated-scenarios.d.ts +0 -76
  366. package/node_modules/@ykdz/template-core/dist/generated-scenarios.js +0 -658
  367. package/node_modules/@ykdz/template-core/dist/generation-context.d.ts +0 -23
  368. package/node_modules/@ykdz/template-core/dist/generation-context.js +0 -20
  369. package/node_modules/@ykdz/template-core/dist/next-step-instructions.d.ts +0 -30
  370. package/node_modules/@ykdz/template-core/dist/next-step-instructions.js +0 -181
  371. package/node_modules/@ykdz/template-core/dist/package-addition-support.d.ts +0 -6
  372. package/node_modules/@ykdz/template-core/dist/package-addition-support.js +0 -2
  373. package/node_modules/@ykdz/template-core/dist/package-addition.d.ts +0 -12
  374. package/node_modules/@ykdz/template-core/dist/package-addition.js +0 -665
  375. package/node_modules/@ykdz/template-core/dist/package-linking.d.ts +0 -75
  376. package/node_modules/@ykdz/template-core/dist/package-linking.js +0 -157
  377. package/node_modules/@ykdz/template-core/dist/preset-projection.d.ts +0 -68
  378. package/node_modules/@ykdz/template-core/dist/preset-projection.js +0 -8
  379. package/node_modules/@ykdz/template-core/dist/preset-source.d.ts +0 -14
  380. package/node_modules/@ykdz/template-core/dist/preset-source.js +0 -294
  381. package/node_modules/@ykdz/template-core/dist/projection-capabilities.d.ts +0 -31
  382. package/node_modules/@ykdz/template-core/dist/projection-capabilities.js +0 -2170
  383. package/node_modules/@ykdz/template-core/dist/runtime-paths.d.ts +0 -1
  384. package/node_modules/@ykdz/template-core/dist/runtime-paths.js +0 -13
  385. package/node_modules/@ykdz/template-shared/dist/index.d.ts +0 -645
  386. package/node_modules/@ykdz/template-shared/dist/index.js +0 -1408
  387. package/node_modules/@ykdz/template-shared/package.json +0 -37
  388. /package/node_modules/@ykdz/{template-builtin-source/templates/vue-app/.github/workflows/check.yml → template-builtin-presets/templates/foundation/.github/workflows/check-playwright.yml} +0 -0
  389. /package/node_modules/@ykdz/{template-builtin-source/templates/rust-bin/.github/workflows/check.yml → template-builtin-presets/templates/foundation/.github/workflows/check-rust.yml} +0 -0
  390. /package/node_modules/@ykdz/{template-builtin-source/templates/ts-lib → template-builtin-presets/templates/foundation}/.github/workflows/check.yml +0 -0
  391. /package/node_modules/@ykdz/{template-builtin-source/templates/shared → template-builtin-presets/templates/foundation/rust}/devcontainer/rust.Dockerfile +0 -0
  392. /package/node_modules/@ykdz/{template-builtin-source/templates/rust-bin → template-builtin-presets/templates/foundation/rust}/rust-toolchain.toml +0 -0
  393. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/rust-bin/rustfmt.toml +0 -0
  394. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/rust-bin/src/main.rs +0 -0
  395. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/rust-bin/turbo.json +0 -0
  396. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/shared/devcontainer/browser-test.Dockerfile +0 -0
  397. /package/node_modules/@ykdz/{template-builtin-source/templates/vue-app → template-builtin-presets/templates/shared/vue}/src/main.ts +0 -0
  398. /package/node_modules/@ykdz/{template-builtin-source/templates/vue-app → template-builtin-presets/templates/shared/vue}/src/stores/counter.ts +0 -0
  399. /package/node_modules/@ykdz/{template-builtin-source/templates/vue-app → template-builtin-presets/templates/shared/vue}/src/style.css +0 -0
  400. /package/node_modules/@ykdz/{template-builtin-source/templates/vue-app → template-builtin-presets/templates/shared/vue}/test/app.test.ts +0 -0
  401. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/ts-lib/src/name-schema.ts +0 -0
  402. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/ts-lib/turbo.json +0 -0
  403. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/db/scripts/seed-example.ts +0 -0
  404. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/db/src/db.ts +0 -0
  405. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/db/src/index.ts +0 -0
  406. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/db/src/queries/todos.ts +0 -0
  407. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/db/src/schema.ts +0 -0
  408. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/db/src/seed/example.ts +0 -0
  409. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/db/test/todos.test.ts +0 -0
  410. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/db/turbo.json +0 -0
  411. /package/node_modules/@ykdz/{template-builtin-source/templates/vike-app/db → template-builtin-presets/templates/vike-app/db-migrations}/drizzle/migrations/20260709120325_old_captain_flint/migration.sql +0 -0
  412. /package/node_modules/@ykdz/{template-builtin-source/templates/vike-app/db → template-builtin-presets/templates/vike-app/db-migrations}/drizzle/migrations/20260709120325_old_captain_flint/snapshot.json +0 -0
  413. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/+server.ts +0 -0
  414. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/.env.example +0 -0
  415. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/Dockerfile.dockerignore +0 -0
  416. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/assets/logo.svg +0 -0
  417. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/components/CounterButton.vue +0 -0
  418. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/components/PageShell.vue +0 -0
  419. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/pages/+Head.vue +0 -0
  420. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/pages/+Layout.vue +0 -0
  421. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/pages/+config.ts +0 -0
  422. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/pages/tailwind.css +0 -0
  423. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/scripts/run-playwright.ts +0 -0
  424. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/server/api.ts +0 -0
  425. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/server/app.ts +0 -0
  426. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/types/env.d.ts +0 -0
  427. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/types/global.d.ts +0 -0
  428. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/vite.config.ts +0 -0
  429. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/vitest.config.ts +0 -0
  430. /package/node_modules/@ykdz/{template-builtin-source/templates/vue-hono-app → template-builtin-presets/templates/vue-app}/.github/workflows/check.yml +0 -0
  431. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-app/env.d.ts +0 -0
  432. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-app/index.html +0 -0
  433. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-app/playwright.config.ts +0 -0
  434. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-app/scripts/run-playwright.ts +0 -0
  435. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-app/src/App.vue +0 -0
  436. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-app/test/e2e/app.spec.ts +0 -0
  437. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-app/vite.config.ts +0 -0
  438. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-app/vitest.config.ts +0 -0
  439. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/api/src/runtime.ts +0 -0
  440. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/api/turbo.json +0 -0
  441. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/api/vitest.config.ts +0 -0
  442. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/web/env.d.ts +0 -0
  443. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/web/index.html +0 -0
  444. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/web/playwright.config.ts +0 -0
  445. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/web/scripts/run-playwright.ts +0 -0
  446. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/web/src/App.vue +0 -0
  447. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/web/src/api.ts +0 -0
  448. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/web/test/e2e/app.spec.ts +0 -0
  449. /package/node_modules/@ykdz/{template-builtin-source/templates/vike-app → template-builtin-presets/templates/vue-hono-app}/web/turbo.json +0 -0
  450. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/web/vite.config.ts +0 -0
  451. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/web/vitest.config.ts +0 -0
@@ -1,6 +1,29 @@
1
1
  import { constants } from "node:fs";
2
- import { chmod, copyFile, mkdir, mkdtemp, readFile, readdir, rename, rm, rmdir, stat, writeFile, } from "node:fs/promises";
2
+ import { chmod, cp, copyFile, mkdir, mkdtemp, readFile, readdir, rename, rm, rmdir, stat, writeFile, } from "node:fs/promises";
3
3
  import path from "node:path";
4
+ /**
5
+ * An opaque, owned Template Source reference. A renderer operation carries
6
+ * this directly instead of selecting a root from a string-keyed side map.
7
+ */
8
+ const templateSourceHandleBrand = Symbol("template-source");
9
+ const templateSourceRoots = new WeakMap();
10
+ export function createTemplateSourceHandle(root) {
11
+ const handle = Object.freeze({
12
+ [templateSourceHandleBrand]: true,
13
+ });
14
+ templateSourceRoots.set(handle, path.resolve(root));
15
+ return handle;
16
+ }
17
+ /** Resolves a handle-owned source path while enforcing containment. */
18
+ export function resolveTemplateSource(source, relativePath) {
19
+ const root = typeof source === "object" && source !== null
20
+ ? templateSourceRoots.get(source)
21
+ : undefined;
22
+ if (root === undefined) {
23
+ throw new Error("Renderer received an unknown Template Source handle");
24
+ }
25
+ return resolveContainedPath(root, relativePath);
26
+ }
4
27
  function expandTemplatePath(templatePath, variables) {
5
28
  return templatePath.replaceAll(/\{\{([A-Za-z][A-Za-z0-9_]*)\}\}/g, (_, name) => {
6
29
  const value = variables[name];
@@ -31,17 +54,11 @@ function expandOperationPath(relativePath, options) {
31
54
  }
32
55
  async function renderCopyFile(operation, options) {
33
56
  const variables = options.variables ?? {};
34
- const sourceRoot = operation.sourceRoot === undefined
35
- ? options.sourceRoot
36
- : options.sourceRoots?.[operation.sourceRoot];
37
- if (sourceRoot === undefined) {
38
- throw new Error(`Unknown renderer source root: ${operation.sourceRoot}`);
39
- }
40
- const from = resolveContainedPath(sourceRoot, expandTemplatePath(operation.from, variables));
57
+ const from = resolveTemplateSource(operation.source, expandTemplatePath(operation.from, variables));
41
58
  const to = resolveContainedPath(options.targetRoot, expandTemplatePath(operation.to, variables));
42
59
  const sourceMode = (await stat(from)).mode;
43
60
  await mkdir(path.dirname(to), { recursive: true });
44
- await copyGeneratedFile(from, to);
61
+ await copyGeneratedFile(from, to, operation.overwrite ?? false);
45
62
  await chmod(to, sourceMode & 0o777);
46
63
  }
47
64
  function isRecord(value) {
@@ -147,7 +164,7 @@ async function writeJsonFile(targetRoot, toPath, value, multilineArrays, overwri
147
164
  await writeGeneratedFile(to, serializeJson(value, multilineArrays, rootKeyOrderForPath(toPath)), overwrite);
148
165
  }
149
166
  async function renderWriteJson(operation, options) {
150
- await writeJsonFile(options.targetRoot, expandOperationPath(operation.to, options), operation.value, operation.multilineArrays);
167
+ await writeJsonFile(options.targetRoot, expandOperationPath(operation.to, options), operation.value, operation.multilineArrays, operation.overwrite);
151
168
  }
152
169
  async function renderMergeJson(operation, options) {
153
170
  const toPath = expandOperationPath(operation.to, options);
@@ -161,7 +178,7 @@ async function renderMergeJson(operation, options) {
161
178
  throw error;
162
179
  }
163
180
  }
164
- await writeJsonFile(options.targetRoot, toPath, mergeJsonValue(existing, operation.value), undefined, true);
181
+ await writeJsonFile(options.targetRoot, toPath, mergeJsonValue(existing, operation.value), operation.multilineArrays, true);
165
182
  }
166
183
  const foundationTextFiles = new Set([
167
184
  ".dockerignore",
@@ -209,6 +226,9 @@ function assertFoundationTextPath(relativePath) {
209
226
  if (normalizedPath === ".devcontainer/Dockerfile") {
210
227
  return;
211
228
  }
229
+ if (normalizedPath === ".devcontainer/devcontainer.json") {
230
+ return;
231
+ }
212
232
  throw new Error(`Text output is limited to foundation files: ${relativePath}`);
213
233
  }
214
234
  function assertTextTemplatePath(relativePath) {
@@ -233,18 +253,12 @@ async function renderWriteTextFromFragments(operation, options) {
233
253
  assertFoundationTextPath(toPath);
234
254
  const to = resolveContainedPath(options.targetRoot, toPath);
235
255
  const texts = await Promise.all(operation.fragments.map(async (fragment) => {
236
- const sourceRoot = fragment.sourceRoot === undefined
237
- ? options.sourceRoot
238
- : options.sourceRoots?.[fragment.sourceRoot];
239
- if (sourceRoot === undefined) {
240
- throw new Error(`Unknown renderer source root: ${fragment.sourceRoot}`);
241
- }
242
256
  const fromPath = expandTemplatePath(fragment.from, options.variables ?? {});
243
- const from = resolveContainedPath(sourceRoot, fromPath);
257
+ const from = resolveTemplateSource(fragment.source, fromPath);
244
258
  return readFile(from, "utf8");
245
259
  }));
246
260
  await mkdir(path.dirname(to), { recursive: true });
247
- await writeGeneratedFile(to, texts.map((text) => text.trimEnd()).join("\n\n") + "\n");
261
+ await writeGeneratedFile(to, texts.map((text) => text.trimEnd()).join("\n\n") + "\n", operation.overwrite ?? false);
248
262
  }
249
263
  function replaceTextTemplateVariables(sourceText, replacements) {
250
264
  const used = new Set();
@@ -264,19 +278,13 @@ function replaceTextTemplateVariables(sourceText, replacements) {
264
278
  return rendered;
265
279
  }
266
280
  async function renderWriteTextTemplate(operation, options) {
267
- const sourceRoot = operation.sourceRoot === undefined
268
- ? options.sourceRoot
269
- : options.sourceRoots?.[operation.sourceRoot];
270
- if (sourceRoot === undefined) {
271
- throw new Error(`Unknown renderer source root: ${operation.sourceRoot}`);
272
- }
273
281
  const toPath = expandOperationPath(operation.to, options);
274
282
  assertTextTemplatePath(toPath);
275
- const from = resolveContainedPath(sourceRoot, expandTemplatePath(operation.from, options.variables ?? {}));
283
+ const from = resolveTemplateSource(operation.source, expandTemplatePath(operation.from, options.variables ?? {}));
276
284
  const to = resolveContainedPath(options.targetRoot, toPath);
277
285
  const sourceText = await readFile(from, "utf8");
278
286
  await mkdir(path.dirname(to), { recursive: true });
279
- await writeGeneratedFile(to, replaceTextTemplateVariables(sourceText, operation.replacements));
287
+ await writeGeneratedFile(to, replaceTextTemplateVariables(sourceText, operation.replacements), operation.overwrite);
280
288
  }
281
289
  async function renderSetExecutable(operation, options) {
282
290
  const filePath = resolveContainedPath(options.targetRoot, expandOperationPath(operation.path, options));
@@ -296,7 +304,7 @@ function parseAnchorComment(commentText) {
296
304
  return multiline?.[1];
297
305
  }
298
306
  async function findTypeScriptAnchorRanges(sourceText) {
299
- const ts = await import("@typescript/typescript6");
307
+ const ts = await import("typescript");
300
308
  const sourceFile = ts.createSourceFile("template-anchor.ts", sourceText, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
301
309
  const anchors = [];
302
310
  const seenRanges = new Set();
@@ -377,9 +385,9 @@ async function targetDirectoryStatus(targetRoot) {
377
385
  }
378
386
  return "empty";
379
387
  }
380
- async function copyGeneratedFile(from, to) {
388
+ async function copyGeneratedFile(from, to, overwrite = false) {
381
389
  try {
382
- await copyFile(from, to, constants.COPYFILE_EXCL);
390
+ await copyFile(from, to, overwrite ? 0 : constants.COPYFILE_EXCL);
383
391
  }
384
392
  catch (error) {
385
393
  if (isNodeError(error) && error.code === "EEXIST") {
@@ -443,6 +451,83 @@ export async function renderProject(options) {
443
451
  throw new Error(`Unsupported renderer operation: ${operation.kind}`);
444
452
  }
445
453
  }
454
+ /**
455
+ * Applies a follow-up plan in a sibling staging directory. In particular,
456
+ * metadata updates cannot become visible when a later source operation fails.
457
+ */
458
+ export async function renderProjectAtomically(options) {
459
+ const targetRoot = path.resolve(options.targetRoot);
460
+ await stat(targetRoot);
461
+ const parent = path.dirname(targetRoot);
462
+ const stagingRoot = await mkdtemp(path.join(parent, `.${path.basename(targetRoot)}.template-update-`));
463
+ const backupRoot = await mkdtemp(path.join(parent, `.${path.basename(targetRoot)}.template-backup-`));
464
+ const changedEntries = changedRootEntries(options.operations);
465
+ let committed = false;
466
+ try {
467
+ await cp(targetRoot, stagingRoot, { recursive: true });
468
+ await renderProject({ ...options, targetRoot: stagingRoot });
469
+ // Commit only the entries changed by the staged plan. In particular, do
470
+ // not rename the target directory: callers commonly run `template add`
471
+ // from that directory, and renaming it leaves their shell on a deleted
472
+ // inode. Each entry has a rollback copy before it is made visible.
473
+ for (const entry of changedEntries) {
474
+ const current = path.join(targetRoot, entry);
475
+ try {
476
+ await cp(current, path.join(backupRoot, entry), { recursive: true });
477
+ }
478
+ catch (error) {
479
+ if (!isNodeError(error) || error.code !== "ENOENT")
480
+ throw error;
481
+ }
482
+ }
483
+ try {
484
+ for (const entry of changedEntries) {
485
+ await cp(path.join(stagingRoot, entry), path.join(targetRoot, entry), {
486
+ recursive: true,
487
+ force: true,
488
+ });
489
+ }
490
+ committed = true;
491
+ }
492
+ catch (error) {
493
+ await rollbackStagedEntries({ targetRoot, backupRoot, changedEntries });
494
+ throw error;
495
+ }
496
+ }
497
+ finally {
498
+ if (!committed)
499
+ await rm(stagingRoot, { recursive: true, force: true });
500
+ await rm(backupRoot, { recursive: true, force: true });
501
+ if (committed)
502
+ await rm(stagingRoot, { recursive: true, force: true });
503
+ }
504
+ }
505
+ function changedRootEntries(operations) {
506
+ const entries = new Set();
507
+ for (const operation of operations) {
508
+ const outputPath = operation.kind === "setExecutable" || operation.kind === "replaceAnchors"
509
+ ? operation.path
510
+ : operation.to;
511
+ const entry = outputPath.split(/[\\/]/)[0];
512
+ if (entry !== undefined && entry.length > 0)
513
+ entries.add(entry);
514
+ }
515
+ return [...entries];
516
+ }
517
+ async function rollbackStagedEntries(options) {
518
+ for (const entry of options.changedEntries) {
519
+ const target = path.join(options.targetRoot, entry);
520
+ const backup = path.join(options.backupRoot, entry);
521
+ await rm(target, { recursive: true, force: true });
522
+ try {
523
+ await cp(backup, target, { recursive: true });
524
+ }
525
+ catch (error) {
526
+ if (!isNodeError(error) || error.code !== "ENOENT")
527
+ throw error;
528
+ }
529
+ }
530
+ }
446
531
  async function commitStagedProject(stagingRoot, targetRoot) {
447
532
  const targetStatus = await targetDirectoryStatus(targetRoot);
448
533
  if (targetStatus === "empty") {
@@ -1,38 +1,44 @@
1
- import type { RenderOperation } from "./renderer.js";
2
- export type TemplateBoundaryDebt = {
3
- readonly preset: string;
4
- readonly generatedPath: string;
5
- readonly owningFunction: string;
6
- readonly reason: string;
7
- };
1
+ import { type RenderOperation } from "./renderer.ts";
8
2
  export type TemplateBoundaryViolation = {
9
3
  readonly preset: string;
10
4
  readonly generatedPath: string;
11
5
  readonly owningFunction: string;
12
6
  readonly operationKind: RenderOperation["kind"];
13
7
  readonly sourceFilePath: string;
14
- readonly allowlistReason?: string;
8
+ /** Real registry plans retain their Definition and contribution provenance. */
9
+ readonly definitionName?: string;
10
+ readonly planningContribution?: string;
11
+ readonly ownershipRule?: string;
15
12
  };
16
13
  export type TemplateBoundaryCheckProjection = {
17
14
  readonly name: string;
18
15
  readonly sourceFilePath: string;
16
+ readonly definitionName?: string;
17
+ readonly planningContribution?: string;
19
18
  readonly plan: {
20
- readonly sourceRoot: string;
21
- readonly sourceRoots?: Record<string, string> | undefined;
22
19
  readonly operations: readonly RenderOperation[];
23
20
  };
24
21
  };
22
+ /** A Template Source root directly checked independently of any render plan. */
23
+ export type TemplateSourceContext = {
24
+ readonly name: string;
25
+ readonly root: string;
26
+ /** Every readable source file discovered by a direct Template Source check. */
27
+ readonly checkedFiles?: readonly string[];
28
+ };
25
29
  export type TemplateBoundaryCheckResult = {
26
30
  readonly ok: boolean;
27
31
  readonly violations: readonly TemplateBoundaryViolation[];
28
- readonly allowlistedDebt: readonly TemplateBoundaryViolation[];
29
- readonly unusedAllowlistEntries: readonly TemplateBoundaryDebt[];
30
32
  };
31
33
  export type CheckTemplateSourceBoundaryOptions = {
32
34
  readonly projections: readonly TemplateBoundaryCheckProjection[];
35
+ readonly templateSourceContexts?: readonly TemplateSourceContext[];
33
36
  readonly manifestReferencedSourceFiles?: readonly string[];
34
- readonly allowlist?: readonly TemplateBoundaryDebt[];
35
37
  };
36
- export declare const templateBoundaryDebtAllowlist: readonly TemplateBoundaryDebt[];
38
+ /**
39
+ * Reads each registered Template Source context before any plan is inspected.
40
+ * The resulting file sets are an independent proof consumed by the boundary check.
41
+ */
42
+ export declare function checkTemplateSourceContexts(contexts: readonly Omit<TemplateSourceContext, "checkedFiles">[]): Promise<readonly TemplateSourceContext[]>;
37
43
  export declare function isProtectedGeneratedPath(generatedPath: string): boolean;
38
- export declare function checkTemplateSourceBoundary({ projections, manifestReferencedSourceFiles, allowlist, }: CheckTemplateSourceBoundaryOptions): Promise<TemplateBoundaryCheckResult>;
44
+ export declare function checkTemplateSourceBoundary({ projections, templateSourceContexts, manifestReferencedSourceFiles, }: CheckTemplateSourceBoundaryOptions): Promise<TemplateBoundaryCheckResult>;
@@ -1,12 +1,46 @@
1
- import { readFile } from "node:fs/promises";
1
+ import { readdir, readFile, stat } from "node:fs/promises";
2
2
  import path from "node:path";
3
- import ts from "@typescript/typescript6";
3
+ import ts from "typescript";
4
+ import { resolveTemplateSource } from "./renderer.js";
4
5
  const inlineOperationKinds = new Set([
5
6
  "writeText",
6
7
  "writeJson",
7
8
  "mergeJson",
8
9
  ]);
9
- export const templateBoundaryDebtAllowlist = [];
10
+ async function listTemplateSourceFiles(root) {
11
+ const entries = await readdir(root, { withFileTypes: true });
12
+ const files = [];
13
+ for (const entry of entries) {
14
+ const entryPath = path.join(root, entry.name);
15
+ if (entry.isDirectory()) {
16
+ files.push(...(await listTemplateSourceFiles(entryPath)));
17
+ continue;
18
+ }
19
+ if (!entry.isFile())
20
+ continue;
21
+ await readFile(entryPath);
22
+ files.push(path.resolve(entryPath));
23
+ }
24
+ return files;
25
+ }
26
+ /**
27
+ * Reads each registered Template Source context before any plan is inspected.
28
+ * The resulting file sets are an independent proof consumed by the boundary check.
29
+ */
30
+ export async function checkTemplateSourceContexts(contexts) {
31
+ return await Promise.all(contexts.map(async (context) => {
32
+ const root = path.resolve(context.root);
33
+ const rootStats = await stat(root);
34
+ if (!rootStats.isDirectory()) {
35
+ throw new Error(`Template Source context ${context.name} root is not a directory: ${root}`);
36
+ }
37
+ return {
38
+ ...context,
39
+ root,
40
+ checkedFiles: await listTemplateSourceFiles(root),
41
+ };
42
+ }));
43
+ }
10
44
  function operationTarget(operation) {
11
45
  if ("to" in operation) {
12
46
  return operation.to;
@@ -464,33 +498,46 @@ function isAllowedStructuralMachineDeclaration(sourceFile, operation) {
464
498
  return value !== undefined && isDevelopmentContainerPlanValue(value);
465
499
  }));
466
500
  }
467
- function allowlistKey(preset, generatedPath, owningFunction) {
468
- return `${preset}\0${owningFunction}\0${generatedPath}`;
469
- }
470
- function resolveOperationSourceRoot(projection, sourceRootName) {
471
- if (sourceRootName === undefined) {
472
- return projection.plan.sourceRoot;
473
- }
474
- return projection.plan.sourceRoots?.[sourceRootName];
475
- }
476
501
  function sourceBackedOperationSourceFiles(projection, operation) {
477
502
  if (operation.kind === "writeTextFromFragments") {
478
503
  return operation.fragments.map((fragment) => {
479
- const root = resolveOperationSourceRoot(projection, fragment.sourceRoot);
480
- return root === undefined
481
- ? `missing-source-root:${fragment.sourceRoot}`
482
- : path.resolve(root, fragment.from);
504
+ try {
505
+ return resolveTemplateSource(fragment.source, fragment.from);
506
+ }
507
+ catch (error) {
508
+ return `invalid-source:${error instanceof Error ? error.message : String(error)}`;
509
+ }
483
510
  });
484
511
  }
485
- const root = resolveOperationSourceRoot(projection, operation.sourceRoot);
486
- return [
487
- root === undefined
488
- ? `missing-source-root:${operation.sourceRoot}`
489
- : path.resolve(root, operation.from),
490
- ];
512
+ try {
513
+ return [resolveTemplateSource(operation.source, operation.from)];
514
+ }
515
+ catch (error) {
516
+ return [
517
+ `invalid-source:${error instanceof Error ? error.message : String(error)}`,
518
+ ];
519
+ }
491
520
  }
492
- function operationUsesManifestReferencedSource(projection, operation, manifestReferencedSourceFiles) {
493
- return sourceBackedOperationSourceFiles(projection, operation).every((sourceFile) => manifestReferencedSourceFiles.has(sourceFile));
521
+ async function operationUsesCheckedTemplateSource(projection, operation, templateSourceContexts, manifestReferencedSourceFiles) {
522
+ const sourceFiles = sourceBackedOperationSourceFiles(projection, operation);
523
+ const results = await Promise.all(sourceFiles.map(async (sourceFile) => {
524
+ const context = templateSourceContexts.find((candidate) => {
525
+ const root = path.resolve(candidate.root);
526
+ return (sourceFile.startsWith(`${root}${path.sep}`) || sourceFile === root);
527
+ });
528
+ if (context === undefined) {
529
+ return manifestReferencedSourceFiles.has(sourceFile);
530
+ }
531
+ const relativePath = path.relative(path.resolve(context.root), sourceFile);
532
+ if (relativePath.length === 0 ||
533
+ relativePath === ".." ||
534
+ relativePath.startsWith(`..${path.sep}`) ||
535
+ path.isAbsolute(relativePath)) {
536
+ return false;
537
+ }
538
+ return context.checkedFiles?.includes(sourceFile) ?? false;
539
+ }));
540
+ return results.every(Boolean);
494
541
  }
495
542
  function pushSourceBackedOperationViolations(options) {
496
543
  const generatedPath = operationTarget(options.operation);
@@ -504,26 +551,31 @@ function pushSourceBackedOperationViolations(options) {
504
551
  generatedPath,
505
552
  owningFunction,
506
553
  operationKind: options.operation.kind,
507
- sourceFilePath: options.projection.sourceFilePath,
554
+ sourceFilePath: options.operation.provenance?.plannerSourceFile ??
555
+ options.projection.sourceFilePath,
556
+ ...(options.operation.provenance === undefined &&
557
+ options.projection.definitionName === undefined
558
+ ? {}
559
+ : {
560
+ definitionName: options.operation.provenance?.definitionName ??
561
+ options.projection.definitionName,
562
+ planningContribution: options.operation.provenance?.planningContribution ??
563
+ options.projection.planningContribution,
564
+ ownershipRule: options.operation.provenance?.ownershipRule ??
565
+ "source-backed protected output must use declared, contained Template Source",
566
+ }),
508
567
  });
509
568
  }
510
569
  }
511
- export async function checkTemplateSourceBoundary({ projections, manifestReferencedSourceFiles = [], allowlist = [], }) {
570
+ export async function checkTemplateSourceBoundary({ projections, templateSourceContexts = [], manifestReferencedSourceFiles = [], }) {
512
571
  const manifestReferencedSourceFileSet = new Set(manifestReferencedSourceFiles.map((sourceFile) => path.resolve(sourceFile)));
513
- const allowed = new Map(allowlist.map((entry) => [
514
- allowlistKey(entry.preset, entry.generatedPath, entry.owningFunction),
515
- entry.reason,
516
- ]));
517
- const checkedPresets = new Set(projections.map((projection) => projection.name));
518
- const usedAllowlistKeys = new Set();
519
572
  const violations = [];
520
- const allowlistedDebt = [];
521
573
  for (const projection of projections) {
522
574
  const sourceText = await readFile(projection.sourceFilePath, "utf8");
523
575
  const sourceFile = ts.createSourceFile(projection.sourceFilePath, sourceText, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
524
576
  for (const operation of projection.plan.operations) {
525
577
  if (isProtectedSourceBackedOperation(operation)) {
526
- if (!operationUsesManifestReferencedSource(projection, operation, manifestReferencedSourceFileSet)) {
578
+ if (!(await operationUsesCheckedTemplateSource(projection, operation, templateSourceContexts, manifestReferencedSourceFileSet))) {
527
579
  pushSourceBackedOperationViolations({
528
580
  projection,
529
581
  sourceFile,
@@ -549,28 +601,26 @@ export async function checkTemplateSourceBoundary({ projections, manifestReferen
549
601
  generatedPath: operation.to,
550
602
  owningFunction,
551
603
  operationKind: operation.kind,
552
- sourceFilePath: projection.sourceFilePath,
604
+ sourceFilePath: operation.provenance?.plannerSourceFile ??
605
+ projection.sourceFilePath,
606
+ ...(operation.provenance === undefined &&
607
+ projection.definitionName === undefined
608
+ ? {}
609
+ : {
610
+ definitionName: operation.provenance?.definitionName ??
611
+ projection.definitionName,
612
+ planningContribution: operation.provenance?.planningContribution ??
613
+ projection.planningContribution,
614
+ ownershipRule: operation.provenance?.ownershipRule ??
615
+ "protected generated output must be Template Source-backed",
616
+ }),
553
617
  };
554
- const allowlistReason = allowed.get(allowlistKey(projection.name, operation.to, owningFunction));
555
- if (allowlistReason) {
556
- usedAllowlistKeys.add(allowlistKey(projection.name, operation.to, owningFunction));
557
- allowlistedDebt.push({ ...diagnostic, allowlistReason });
558
- continue;
559
- }
560
618
  violations.push(diagnostic);
561
619
  }
562
620
  }
563
621
  }
564
- const unusedAllowlistEntries = allowlist.filter((entry) => {
565
- if (!checkedPresets.has(entry.preset)) {
566
- return false;
567
- }
568
- return !usedAllowlistKeys.has(allowlistKey(entry.preset, entry.generatedPath, entry.owningFunction));
569
- });
570
622
  return {
571
- ok: violations.length === 0 && unusedAllowlistEntries.length === 0,
623
+ ok: violations.length === 0,
572
624
  violations,
573
- allowlistedDebt,
574
- unusedAllowlistEntries,
575
625
  };
576
626
  }
@@ -0,0 +1,45 @@
1
+ export type ToolchainBaseline = {
2
+ readonly nodeLtsMajor: string;
3
+ readonly packageManagerPin: `pnpm@${string}`;
4
+ };
5
+ export type ToolchainPullRequestCandidate = {
6
+ readonly kind: "absent";
7
+ } | {
8
+ readonly kind: "open";
9
+ readonly pullRequestNumber: number;
10
+ };
11
+ export type ToolchainRemoteBranch = {
12
+ readonly kind: "absent";
13
+ } | {
14
+ readonly kind: "present";
15
+ readonly sha: string;
16
+ };
17
+ export type ToolchainUpdateCandidate = {
18
+ readonly pullRequest: ToolchainPullRequestCandidate;
19
+ readonly remoteBranch: ToolchainRemoteBranch;
20
+ };
21
+ export type ToolchainBaselineUpdatePlan = {
22
+ readonly kind: "no-drift";
23
+ } | {
24
+ readonly kind: "cleanup-stale";
25
+ readonly pullRequestNumber?: number;
26
+ readonly deleteBranch: true;
27
+ } | {
28
+ readonly kind: "update";
29
+ readonly mode: "create";
30
+ readonly desired: ToolchainBaseline;
31
+ } | {
32
+ readonly kind: "update";
33
+ readonly mode: "replace";
34
+ readonly pullRequestNumber: number;
35
+ readonly desired: ToolchainBaseline;
36
+ };
37
+ type PlanToolchainBaselineUpdateOptions = {
38
+ readonly current: ToolchainBaseline & {
39
+ readonly materialConsistent?: boolean;
40
+ };
41
+ readonly desired: ToolchainBaseline;
42
+ readonly candidate: ToolchainUpdateCandidate;
43
+ };
44
+ export declare function planToolchainBaselineUpdate(options: PlanToolchainBaselineUpdateOptions): ToolchainBaselineUpdatePlan;
45
+ export {};
@@ -0,0 +1,27 @@
1
+ export function planToolchainBaselineUpdate(options) {
2
+ const hasDrift = options.current.materialConsistent === false ||
3
+ options.current.nodeLtsMajor !== options.desired.nodeLtsMajor ||
4
+ options.current.packageManagerPin !== options.desired.packageManagerPin;
5
+ if (!hasDrift) {
6
+ return options.candidate.pullRequest.kind === "absent" &&
7
+ options.candidate.remoteBranch.kind === "absent"
8
+ ? { kind: "no-drift" }
9
+ : {
10
+ kind: "cleanup-stale",
11
+ ...(options.candidate.pullRequest.kind === "open"
12
+ ? {
13
+ pullRequestNumber: options.candidate.pullRequest.pullRequestNumber,
14
+ }
15
+ : {}),
16
+ deleteBranch: true,
17
+ };
18
+ }
19
+ return options.candidate.pullRequest.kind === "absent"
20
+ ? { kind: "update", mode: "create", desired: options.desired }
21
+ : {
22
+ kind: "update",
23
+ mode: "replace",
24
+ pullRequestNumber: options.candidate.pullRequest.pullRequestNumber,
25
+ desired: options.desired,
26
+ };
27
+ }
@@ -18,6 +18,7 @@ export type ResolveToolchainVersionsOptions = {
18
18
  readonly fetchJson?: ((url: string) => Promise<unknown>) | undefined;
19
19
  readonly nodeReleaseIndexUrl?: string | undefined;
20
20
  readonly pnpmRegistryUrl?: string | undefined;
21
+ readonly now?: Date | string | undefined;
21
22
  };
22
23
  export declare const nodeReleaseIndexUrl = "https://nodejs.org/dist/index.json";
23
24
  export declare const pnpmRegistryUrl = "https://registry.npmjs.org/pnpm";