@ykdz/template 0.0.22 → 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 (452) 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-presets/templates/vike-app/web/Dockerfile +74 -0
  210. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/pages/index/+Page.telefunc.ts +1 -4
  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-presets/templates/vike-app/web/playwright.config.ts +79 -0
  213. package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/web/scripts/check-standalone-deployment.ts +511 -0
  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-presets/templates/vike-app/web/scripts/run-playwright.ts +151 -0
  216. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/test/e2e/app.spec.ts +3 -1
  217. package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/web/tsconfig.app.json +34 -0
  218. package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/web/tsconfig.json +9 -0
  219. package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/web/tsconfig.node.json +31 -0
  220. package/node_modules/@ykdz/template-builtin-presets/templates/vike-app/web/tsconfig.test.json +11 -0
  221. package/node_modules/@ykdz/{template-builtin-source/templates/vue-app → template-builtin-presets/templates/vike-app/web}/turbo.json +1 -0
  222. package/node_modules/@ykdz/{template-builtin-source/templates/vike-app → template-builtin-presets/templates/vue-app}/.github/dependabot.yml +5 -4
  223. package/node_modules/@ykdz/{template-builtin-source/templates/vue-hono-app/web → template-builtin-presets/templates/vue-app}/turbo.json +2 -1
  224. package/node_modules/@ykdz/template-builtin-presets/templates/vue-app/typescript/tsconfig.json +8 -0
  225. package/node_modules/@ykdz/template-builtin-presets/templates/vue-hono-app/api/src/index.ts +3 -0
  226. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/api/src/server.ts +1 -1
  227. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/api/test/app.test.ts +1 -1
  228. package/node_modules/@ykdz/template-builtin-presets/templates/vue-hono-app/api/tsconfig.build.json +9 -0
  229. package/node_modules/@ykdz/template-builtin-presets/templates/vue-hono-app/api/tsconfig.json +25 -0
  230. package/node_modules/@ykdz/template-core/dist/Cargo.toml +1 -1
  231. package/node_modules/@ykdz/template-core/dist/dependency-catalog.d.ts +9 -0
  232. package/node_modules/@ykdz/template-core/dist/dependency-catalog.js +56 -1
  233. package/node_modules/@ykdz/template-core/dist/devcontainer.d.ts +11 -3
  234. package/node_modules/@ykdz/template-core/dist/devcontainer.js +17 -3
  235. package/node_modules/@ykdz/template-core/dist/editor-customization.d.ts +5 -9
  236. package/node_modules/@ykdz/template-core/dist/editor-customization.js +8 -46
  237. package/node_modules/@ykdz/template-core/dist/module-graph.d.ts +43 -2
  238. package/node_modules/@ykdz/template-core/dist/module-graph.js +58 -0
  239. package/node_modules/@ykdz/template-core/dist/package-contribution.d.ts +43 -0
  240. package/node_modules/@ykdz/template-core/dist/package-contribution.js +24 -0
  241. package/node_modules/@ykdz/template-core/dist/pnpm-workspace.yaml +28 -9
  242. package/node_modules/@ykdz/template-core/dist/preset-definition.d.ts +42 -0
  243. package/node_modules/@ykdz/template-core/dist/preset-definition.js +1 -0
  244. package/node_modules/@ykdz/template-core/dist/project-blueprint-v2.d.ts +33 -0
  245. package/node_modules/@ykdz/template-core/dist/project-blueprint-v2.js +161 -0
  246. package/node_modules/@ykdz/template-core/dist/project-github.d.ts +8 -9
  247. package/node_modules/@ykdz/template-core/dist/project-github.js +94 -9
  248. package/node_modules/@ykdz/template-core/dist/project-linking-v2.d.ts +20 -0
  249. package/node_modules/@ykdz/template-core/dist/project-linking-v2.js +37 -0
  250. package/node_modules/@ykdz/template-core/dist/renderer.d.ts +40 -5
  251. package/node_modules/@ykdz/template-core/dist/renderer.js +114 -29
  252. package/node_modules/@ykdz/template-core/dist/template-boundary-check.d.ts +21 -15
  253. package/node_modules/@ykdz/template-core/dist/template-boundary-check.js +99 -49
  254. package/node_modules/@ykdz/template-core/dist/toolchain-baseline-update.d.ts +45 -0
  255. package/node_modules/@ykdz/template-core/dist/toolchain-baseline-update.js +27 -0
  256. package/node_modules/@ykdz/template-core/dist/toolchain-resolution.d.ts +1 -0
  257. package/node_modules/@ykdz/template-core/dist/toolchain-resolution.js +50 -52
  258. package/node_modules/@ykdz/template-core/package.json +9 -6
  259. package/node_modules/semver/LICENSE +15 -0
  260. package/node_modules/semver/README.md +680 -0
  261. package/node_modules/semver/bin/semver.js +195 -0
  262. package/node_modules/semver/classes/comparator.js +143 -0
  263. package/node_modules/semver/classes/index.js +7 -0
  264. package/node_modules/semver/classes/range.js +577 -0
  265. package/node_modules/semver/classes/semver.js +350 -0
  266. package/node_modules/semver/functions/clean.js +8 -0
  267. package/node_modules/semver/functions/cmp.js +54 -0
  268. package/node_modules/semver/functions/coerce.js +62 -0
  269. package/node_modules/semver/functions/compare-build.js +9 -0
  270. package/node_modules/semver/functions/compare-loose.js +5 -0
  271. package/node_modules/semver/functions/compare.js +7 -0
  272. package/node_modules/semver/functions/diff.js +60 -0
  273. package/node_modules/semver/functions/eq.js +5 -0
  274. package/node_modules/semver/functions/gt.js +5 -0
  275. package/node_modules/semver/functions/gte.js +5 -0
  276. package/node_modules/semver/functions/inc.js +21 -0
  277. package/node_modules/semver/functions/lt.js +5 -0
  278. package/node_modules/semver/functions/lte.js +5 -0
  279. package/node_modules/semver/functions/major.js +5 -0
  280. package/node_modules/semver/functions/minor.js +5 -0
  281. package/node_modules/semver/functions/neq.js +5 -0
  282. package/node_modules/semver/functions/parse.js +18 -0
  283. package/node_modules/semver/functions/patch.js +5 -0
  284. package/node_modules/semver/functions/prerelease.js +8 -0
  285. package/node_modules/semver/functions/rcompare.js +5 -0
  286. package/node_modules/semver/functions/rsort.js +5 -0
  287. package/node_modules/semver/functions/satisfies.js +12 -0
  288. package/node_modules/semver/functions/sort.js +5 -0
  289. package/node_modules/semver/functions/truncate.js +48 -0
  290. package/node_modules/semver/functions/valid.js +8 -0
  291. package/node_modules/semver/index.js +93 -0
  292. package/node_modules/semver/internal/constants.js +37 -0
  293. package/node_modules/semver/internal/debug.js +11 -0
  294. package/node_modules/semver/internal/identifiers.js +29 -0
  295. package/node_modules/semver/internal/lrucache.js +42 -0
  296. package/node_modules/semver/internal/parse-options.js +17 -0
  297. package/node_modules/semver/internal/re.js +223 -0
  298. package/node_modules/semver/package.json +78 -0
  299. package/node_modules/semver/preload.js +4 -0
  300. package/node_modules/semver/range.bnf +17 -0
  301. package/node_modules/semver/ranges/gtr.js +6 -0
  302. package/node_modules/semver/ranges/intersects.js +9 -0
  303. package/node_modules/semver/ranges/ltr.js +6 -0
  304. package/node_modules/semver/ranges/max-satisfying.js +27 -0
  305. package/node_modules/semver/ranges/min-satisfying.js +26 -0
  306. package/node_modules/semver/ranges/min-version.js +63 -0
  307. package/node_modules/semver/ranges/outside.js +82 -0
  308. package/node_modules/semver/ranges/simplify.js +49 -0
  309. package/node_modules/semver/ranges/subset.js +249 -0
  310. package/node_modules/semver/ranges/to-comparators.js +10 -0
  311. package/node_modules/semver/ranges/valid.js +13 -0
  312. package/node_modules/typescript/LICENSE.txt +55 -0
  313. package/node_modules/typescript/README.md +9 -0
  314. package/node_modules/typescript/bin/tsc6 +2 -0
  315. package/node_modules/typescript/lib/tsc.js +1 -0
  316. package/node_modules/typescript/lib/tsserverlibrary.d.ts +2 -0
  317. package/node_modules/typescript/lib/tsserverlibrary.js +1 -0
  318. package/node_modules/typescript/lib/typescript.d.ts +2 -0
  319. package/node_modules/typescript/lib/typescript.js +1 -0
  320. package/node_modules/typescript/package.json +39 -0
  321. package/node_modules/valibot/LICENSE.md +9 -0
  322. package/node_modules/valibot/README.md +94 -0
  323. package/node_modules/valibot/dist/index.cjs +7974 -0
  324. package/node_modules/valibot/dist/index.d.cts +16184 -0
  325. package/node_modules/valibot/dist/index.d.mts +16184 -0
  326. package/node_modules/valibot/dist/index.min.cjs +2 -0
  327. package/node_modules/valibot/dist/index.min.mjs +2 -0
  328. package/node_modules/valibot/dist/index.mjs +7663 -0
  329. package/node_modules/valibot/package.json +79 -0
  330. package/package.json +20 -13
  331. package/LICENSE +0 -21
  332. package/node_modules/@ykdz/template-builtin-source/dist/src/index.d.ts +0 -22
  333. package/node_modules/@ykdz/template-builtin-source/dist/src/index.js +0 -103
  334. package/node_modules/@ykdz/template-builtin-source/dist/templates/projection-plans.d.ts +0 -7
  335. package/node_modules/@ykdz/template-builtin-source/dist/templates/projection-plans.js +0 -98
  336. package/node_modules/@ykdz/template-builtin-source/dist/templates/registry.d.ts +0 -2
  337. package/node_modules/@ykdz/template-builtin-source/dist/templates/registry.js +0 -15
  338. package/node_modules/@ykdz/template-builtin-source/dist/templates/rust-bin/projection.d.ts +0 -9
  339. package/node_modules/@ykdz/template-builtin-source/dist/templates/rust-bin/projection.js +0 -105
  340. package/node_modules/@ykdz/template-builtin-source/dist/templates/ts-lib/projection.d.ts +0 -6
  341. package/node_modules/@ykdz/template-builtin-source/dist/templates/ts-lib/projection.js +0 -197
  342. package/node_modules/@ykdz/template-builtin-source/dist/templates/vike-app/projection.d.ts +0 -5
  343. package/node_modules/@ykdz/template-builtin-source/dist/templates/vike-app/projection.js +0 -71
  344. package/node_modules/@ykdz/template-builtin-source/dist/templates/vue-app/projection.d.ts +0 -6
  345. package/node_modules/@ykdz/template-builtin-source/dist/templates/vue-app/projection.js +0 -281
  346. package/node_modules/@ykdz/template-builtin-source/dist/templates/vue-hono-app/projection.d.ts +0 -8
  347. package/node_modules/@ykdz/template-builtin-source/dist/templates/vue-hono-app/projection.js +0 -154
  348. package/node_modules/@ykdz/template-builtin-source/package.json +0 -93
  349. package/node_modules/@ykdz/template-builtin-source/templates/preset-source.json +0 -517
  350. package/node_modules/@ykdz/template-builtin-source/templates/shared/devcontainer/node-pnpm.Dockerfile +0 -6
  351. package/node_modules/@ykdz/template-builtin-source/templates/shared/editor-customization/capabilities.json +0 -56
  352. package/node_modules/@ykdz/template-builtin-source/templates/shared/oxc/node/oxlint.config.ts +0 -34
  353. package/node_modules/@ykdz/template-builtin-source/templates/shared/oxc/oxfmt.config.ts +0 -8
  354. package/node_modules/@ykdz/template-builtin-source/templates/shared/oxc/vue/oxlint.config.ts +0 -36
  355. package/node_modules/@ykdz/template-builtin-source/templates/vike-app/.github/workflows/check.yml +0 -28
  356. package/node_modules/@ykdz/template-builtin-source/templates/vike-app/db/drizzle.config.ts +0 -10
  357. package/node_modules/@ykdz/template-builtin-source/templates/vike-app/web/Dockerfile +0 -47
  358. package/node_modules/@ykdz/template-builtin-source/templates/vike-app/web/playwright.config.ts +0 -43
  359. package/node_modules/@ykdz/template-builtin-source/templates/vike-app/web/scripts/run-playwright.ts +0 -81
  360. package/node_modules/@ykdz/template-builtin-source/templates/vue-hono-app/api/src/index.ts +0 -3
  361. package/node_modules/@ykdz/template-builtin-source/templates/vue-hono-app/web/src/main.ts +0 -8
  362. package/node_modules/@ykdz/template-builtin-source/templates/vue-hono-app/web/src/stores/counter.ts +0 -12
  363. package/node_modules/@ykdz/template-builtin-source/templates/vue-hono-app/web/src/style.css +0 -1
  364. package/node_modules/@ykdz/template-builtin-source/templates/vue-hono-app/web/test/app.test.ts +0 -14
  365. package/node_modules/@ykdz/template-core/dist/declarations.d.ts +0 -2
  366. package/node_modules/@ykdz/template-core/dist/declarations.js +0 -1
  367. package/node_modules/@ykdz/template-core/dist/generated-scenarios.d.ts +0 -75
  368. package/node_modules/@ykdz/template-core/dist/generated-scenarios.js +0 -572
  369. package/node_modules/@ykdz/template-core/dist/generation-context.d.ts +0 -23
  370. package/node_modules/@ykdz/template-core/dist/generation-context.js +0 -20
  371. package/node_modules/@ykdz/template-core/dist/next-step-instructions.d.ts +0 -30
  372. package/node_modules/@ykdz/template-core/dist/next-step-instructions.js +0 -181
  373. package/node_modules/@ykdz/template-core/dist/package-addition-support.d.ts +0 -6
  374. package/node_modules/@ykdz/template-core/dist/package-addition-support.js +0 -2
  375. package/node_modules/@ykdz/template-core/dist/package-addition.d.ts +0 -12
  376. package/node_modules/@ykdz/template-core/dist/package-addition.js +0 -665
  377. package/node_modules/@ykdz/template-core/dist/package-linking.d.ts +0 -75
  378. package/node_modules/@ykdz/template-core/dist/package-linking.js +0 -157
  379. package/node_modules/@ykdz/template-core/dist/preset-projection.d.ts +0 -69
  380. package/node_modules/@ykdz/template-core/dist/preset-projection.js +0 -8
  381. package/node_modules/@ykdz/template-core/dist/preset-source.d.ts +0 -14
  382. package/node_modules/@ykdz/template-core/dist/preset-source.js +0 -294
  383. package/node_modules/@ykdz/template-core/dist/projection-capabilities.d.ts +0 -31
  384. package/node_modules/@ykdz/template-core/dist/projection-capabilities.js +0 -2168
  385. package/node_modules/@ykdz/template-core/dist/runtime-paths.d.ts +0 -1
  386. package/node_modules/@ykdz/template-core/dist/runtime-paths.js +0 -13
  387. package/node_modules/@ykdz/template-shared/dist/index.d.ts +0 -645
  388. package/node_modules/@ykdz/template-shared/dist/index.js +0 -1408
  389. package/node_modules/@ykdz/template-shared/package.json +0 -36
  390. 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
  391. 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
  392. package/node_modules/@ykdz/{template-builtin-source/templates/ts-lib → template-builtin-presets/templates/foundation}/.github/workflows/check.yml +0 -0
  393. package/node_modules/@ykdz/{template-builtin-source/templates/shared → template-builtin-presets/templates/foundation/rust}/devcontainer/rust.Dockerfile +0 -0
  394. package/node_modules/@ykdz/{template-builtin-source/templates/rust-bin → template-builtin-presets/templates/foundation/rust}/rust-toolchain.toml +0 -0
  395. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/rust-bin/rustfmt.toml +0 -0
  396. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/rust-bin/src/main.rs +0 -0
  397. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/rust-bin/turbo.json +0 -0
  398. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/shared/devcontainer/browser-test.Dockerfile +0 -0
  399. package/node_modules/@ykdz/{template-builtin-source/templates/vue-app → template-builtin-presets/templates/shared/vue}/src/main.ts +0 -0
  400. package/node_modules/@ykdz/{template-builtin-source/templates/vue-app → template-builtin-presets/templates/shared/vue}/src/stores/counter.ts +0 -0
  401. package/node_modules/@ykdz/{template-builtin-source/templates/vue-app → template-builtin-presets/templates/shared/vue}/src/style.css +0 -0
  402. package/node_modules/@ykdz/{template-builtin-source/templates/vue-app → template-builtin-presets/templates/shared/vue}/test/app.test.ts +0 -0
  403. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/ts-lib/src/name-schema.ts +0 -0
  404. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/ts-lib/turbo.json +0 -0
  405. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/db/scripts/seed-example.ts +0 -0
  406. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/db/src/db.ts +0 -0
  407. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/db/src/index.ts +0 -0
  408. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/db/src/queries/todos.ts +0 -0
  409. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/db/src/schema.ts +0 -0
  410. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/db/src/seed/example.ts +0 -0
  411. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/db/test/todos.test.ts +0 -0
  412. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/db/turbo.json +0 -0
  413. 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
  414. 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
  415. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/+server.ts +0 -0
  416. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/.env.example +0 -0
  417. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/Dockerfile.dockerignore +0 -0
  418. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/assets/logo.svg +0 -0
  419. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/components/CounterButton.vue +0 -0
  420. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/components/PageShell.vue +0 -0
  421. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/pages/+Head.vue +0 -0
  422. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/pages/+Layout.vue +0 -0
  423. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/pages/+config.ts +0 -0
  424. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/pages/tailwind.css +0 -0
  425. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/server/api.ts +0 -0
  426. package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/server/app.ts +1 -1
  427. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/types/env.d.ts +0 -0
  428. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/types/global.d.ts +0 -0
  429. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/vite.config.ts +0 -0
  430. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vike-app/web/vitest.config.ts +0 -0
  431. /package/node_modules/@ykdz/{template-builtin-source/templates/vue-hono-app → template-builtin-presets/templates/vue-app}/.github/workflows/check.yml +0 -0
  432. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-app/env.d.ts +0 -0
  433. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-app/index.html +0 -0
  434. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-app/playwright.config.ts +0 -0
  435. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-app/scripts/run-playwright.ts +0 -0
  436. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-app/src/App.vue +0 -0
  437. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-app/test/e2e/app.spec.ts +0 -0
  438. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-app/vite.config.ts +0 -0
  439. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-app/vitest.config.ts +0 -0
  440. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/api/src/runtime.ts +0 -0
  441. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/api/turbo.json +0 -0
  442. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/api/vitest.config.ts +0 -0
  443. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/web/env.d.ts +0 -0
  444. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/web/index.html +0 -0
  445. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/web/playwright.config.ts +0 -0
  446. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/web/scripts/run-playwright.ts +0 -0
  447. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/web/src/App.vue +0 -0
  448. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/web/src/api.ts +0 -0
  449. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/web/test/e2e/app.spec.ts +0 -0
  450. /package/node_modules/@ykdz/{template-builtin-source/templates/vike-app → template-builtin-presets/templates/vue-hono-app}/web/turbo.json +0 -0
  451. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/web/vite.config.ts +0 -0
  452. /package/node_modules/@ykdz/{template-builtin-source → template-builtin-presets}/templates/vue-hono-app/web/vitest.config.ts +0 -0
@@ -0,0 +1,511 @@
1
+ import { spawn } from "node:child_process";
2
+ import path from "node:path";
3
+
4
+ const webRoot = path.resolve(import.meta.dirname, "..");
5
+ const repositoryRoot = path.resolve(webRoot, "../..");
6
+ const uniqueId = `${process.pid}-${Date.now()}`;
7
+ const standaloneImage = `vike-deployment-check-standalone:${uniqueId}`;
8
+ const runtimeImage = `vike-deployment-check-runtime:${uniqueId}`;
9
+ const network = `vike-deployment-check-${uniqueId}`;
10
+ const containers = {
11
+ standalone: `vike-deployment-check-standalone-${uniqueId}`,
12
+ preparation: `vike-deployment-check-preparation-${uniqueId}`,
13
+ runtime: `vike-deployment-check-runtime-${uniqueId}`,
14
+ unprepared: `vike-deployment-check-unprepared-${uniqueId}`,
15
+ } as const;
16
+ const volumes = {
17
+ standalone: `vike-deployment-check-standalone-${uniqueId}`,
18
+ prepared: `vike-deployment-check-prepared-${uniqueId}`,
19
+ unprepared: `vike-deployment-check-unprepared-${uniqueId}`,
20
+ } as const;
21
+ const abortController = new AbortController();
22
+ const forwardedSignals = ["SIGINT", "SIGTERM"] as const;
23
+ const signalHandlers = new Map<NodeJS.Signals, () => void>();
24
+ const defaultReadinessTimeoutMs = 60_000;
25
+
26
+ interface CommandResult {
27
+ readonly stderr: string;
28
+ readonly stdout: string;
29
+ }
30
+
31
+ interface CommandOptions {
32
+ readonly cwd?: string;
33
+ readonly env?: NodeJS.ProcessEnv;
34
+ readonly signal?: AbortSignal;
35
+ readonly timeout: number;
36
+ }
37
+
38
+ type DeploymentMode =
39
+ | "standalone"
40
+ | "external-preparation"
41
+ | "runtime"
42
+ | "fresh-runtime";
43
+
44
+ async function deploymentPhase<T>(
45
+ mode: DeploymentMode,
46
+ phase: string,
47
+ operation: () => Promise<T>,
48
+ ): Promise<T> {
49
+ try {
50
+ return await operation();
51
+ } catch (error: unknown) {
52
+ throw new Error(`Deployment mode ${mode} failed during ${phase}.`, {
53
+ cause: error,
54
+ });
55
+ }
56
+ }
57
+
58
+ function commandDisplay(command: string, args: readonly string[]): string {
59
+ return [command, ...args].map((part) => JSON.stringify(part)).join(" ");
60
+ }
61
+
62
+ function runCommand(
63
+ command: string,
64
+ args: readonly string[],
65
+ options: CommandOptions,
66
+ ): Promise<CommandResult> {
67
+ return new Promise((resolve, reject) => {
68
+ const child = spawn(command, args, {
69
+ cwd: options.cwd,
70
+ env: options.env,
71
+ signal: options.signal,
72
+ stdio: ["ignore", "pipe", "pipe"],
73
+ });
74
+ let stderr = "";
75
+ let stdout = "";
76
+ let timedOut = false;
77
+ let settled = false;
78
+ child.stdout.setEncoding("utf8");
79
+ child.stderr.setEncoding("utf8");
80
+ child.stdout.on("data", (chunk: string) => {
81
+ stdout += chunk;
82
+ });
83
+ child.stderr.on("data", (chunk: string) => {
84
+ stderr += chunk;
85
+ });
86
+ const timeout = setTimeout(() => {
87
+ timedOut = true;
88
+ child.kill("SIGKILL");
89
+ }, options.timeout);
90
+ const finish = (error?: Error): void => {
91
+ if (settled) return;
92
+ settled = true;
93
+ clearTimeout(timeout);
94
+ if (error === undefined) {
95
+ resolve({ stderr, stdout });
96
+ } else {
97
+ reject(Object.assign(error, { stderr, stdout }));
98
+ }
99
+ };
100
+ child.once("error", (error) => finish(error));
101
+ child.once("close", (code, signal) => {
102
+ if (code === 0 && !timedOut) {
103
+ finish();
104
+ return;
105
+ }
106
+ finish(
107
+ Object.assign(
108
+ new Error(
109
+ `${commandDisplay(command, args)} ${
110
+ timedOut
111
+ ? `timed out after ${options.timeout}ms`
112
+ : `exited with code ${String(code)}${signal === null ? "" : ` from ${signal}`}`
113
+ }\nstdout:\n${stdout}\nstderr:\n${stderr}`,
114
+ ),
115
+ { code, signal },
116
+ ),
117
+ );
118
+ });
119
+ });
120
+ }
121
+
122
+ function readinessTimeoutMs(): number {
123
+ const configured = process.env.STANDALONE_DEPLOYMENT_READINESS_TIMEOUT_MS;
124
+ if (configured === undefined) {
125
+ return defaultReadinessTimeoutMs;
126
+ }
127
+
128
+ const timeout = Number(configured);
129
+ if (!Number.isSafeInteger(timeout) || timeout <= 0) {
130
+ throw new Error(
131
+ "STANDALONE_DEPLOYMENT_READINESS_TIMEOUT_MS must be a positive integer",
132
+ );
133
+ }
134
+ return timeout;
135
+ }
136
+
137
+ async function dockerWithTimeout(
138
+ timeout: number,
139
+ ...args: string[]
140
+ ): Promise<string> {
141
+ const { stdout } = await runCommand("docker", args, {
142
+ cwd: repositoryRoot,
143
+ signal: abortController.signal,
144
+ timeout,
145
+ });
146
+ return stdout.trim();
147
+ }
148
+
149
+ async function docker(...args: string[]): Promise<string> {
150
+ return dockerWithTimeout(600_000, ...args);
151
+ }
152
+
153
+ async function cleanup(): Promise<void> {
154
+ const cleanupCommands = [
155
+ ...Object.values(containers).map((name) => ["rm", "--force", name]),
156
+ ...Object.values(volumes).map((name) => ["volume", "rm", "--force", name]),
157
+ ["network", "rm", network],
158
+ ["image", "rm", "--force", runtimeImage],
159
+ ["image", "rm", "--force", standaloneImage],
160
+ ];
161
+
162
+ for (const args of cleanupCommands) {
163
+ try {
164
+ await runCommand("docker", args, {
165
+ cwd: repositoryRoot,
166
+ timeout: 30_000,
167
+ });
168
+ } catch {
169
+ // A resource may not have been created yet.
170
+ }
171
+ }
172
+ }
173
+
174
+ async function containerLogs(container: string): Promise<string> {
175
+ try {
176
+ const { stderr, stdout } = await runCommand("docker", ["logs", container], {
177
+ cwd: repositoryRoot,
178
+ signal: AbortSignal.timeout(10_000),
179
+ timeout: 10_000,
180
+ });
181
+ return [stdout.trim(), stderr.trim()].filter(Boolean).join("\n");
182
+ } catch (error) {
183
+ return `Container logs unavailable: ${String(error)}`;
184
+ }
185
+ }
186
+
187
+ async function deploymentLogs(): Promise<string> {
188
+ const logs = await Promise.all(
189
+ Object.entries(containers).map(
190
+ async ([phase, container]) =>
191
+ `${phase} container logs:\n${await containerLogs(container)}`,
192
+ ),
193
+ );
194
+ return logs.join("\n");
195
+ }
196
+
197
+ async function publishedBaseUrl(container: string): Promise<string> {
198
+ const portOutput = await dockerWithTimeout(
199
+ 10_000,
200
+ "port",
201
+ container,
202
+ "3000/tcp",
203
+ );
204
+ const match = /:(\d+)$/u.exec(portOutput.split("\n")[0] ?? "");
205
+ if (!match?.[1]) {
206
+ throw new Error(
207
+ `Could not determine the published web port: ${portOutput}`,
208
+ );
209
+ }
210
+ return `http://127.0.0.1:${match[1]}`;
211
+ }
212
+
213
+ async function waitForReady(
214
+ phase: "Standalone" | "Runtime",
215
+ container: string,
216
+ baseUrl: string,
217
+ ): Promise<void> {
218
+ const timeout = readinessTimeoutMs();
219
+ const deadline = Date.now() + timeout;
220
+ while (Date.now() < deadline) {
221
+ try {
222
+ const response = await fetch(baseUrl, {
223
+ signal: AbortSignal.timeout(2_000),
224
+ });
225
+ if (response.ok) {
226
+ return;
227
+ }
228
+ } catch {
229
+ // The container may still be starting the server.
230
+ }
231
+
232
+ const running = await dockerWithTimeout(
233
+ 5_000,
234
+ "inspect",
235
+ "--format={{.State.Running}}",
236
+ container,
237
+ );
238
+ if (running !== "true") {
239
+ throw new Error(
240
+ `${phase} container exited before readiness.\n${await containerLogs(container)}`,
241
+ );
242
+ }
243
+ await new Promise((resolve) => setTimeout(resolve, 250));
244
+ }
245
+
246
+ throw new Error(
247
+ `${phase} container was not ready within ${timeout}ms.\n${await containerLogs(container)}`,
248
+ );
249
+ }
250
+
251
+ async function assertProcessIdentity(
252
+ phase: "Standalone" | "Runtime",
253
+ container: string,
254
+ ): Promise<void> {
255
+ await docker(
256
+ "exec",
257
+ container,
258
+ "node",
259
+ "--input-type=module",
260
+ "--eval",
261
+ `import { statSync } from "node:fs";
262
+ import { DatabaseSync } from "node:sqlite";
263
+ const expectedIdentity = 1001;
264
+ if (process.getuid() !== expectedIdentity || process.getgid() !== expectedIdentity) {
265
+ throw new Error(\`${phase} process identity must be 1001:1001, received \${process.getuid()}:\${process.getgid()}\`);
266
+ }
267
+ const databaseStat = statSync(process.env.DATABASE_FILE);
268
+ if (databaseStat.uid !== expectedIdentity || databaseStat.gid !== expectedIdentity) {
269
+ throw new Error(\`Database ownership must be 1001:1001, received \${databaseStat.uid}:\${databaseStat.gid}\`);
270
+ }`,
271
+ );
272
+ }
273
+
274
+ async function assertEmptyDatabase(container: string): Promise<void> {
275
+ await docker(
276
+ "exec",
277
+ container,
278
+ "node",
279
+ "--input-type=module",
280
+ "--eval",
281
+ `import { DatabaseSync } from "node:sqlite";
282
+ const db = new DatabaseSync(process.env.DATABASE_FILE);
283
+ const row = db.prepare("select count(*) as count from todos").get();
284
+ if (row.count !== 0) throw new Error(\`Fresh deployment must contain zero TODOs, received \${row.count}\`);`,
285
+ );
286
+ }
287
+
288
+ async function runPlaywright(baseUrl: string): Promise<void> {
289
+ await runCommand("pnpm", ["--dir", "apps/web", "run", "test:e2e:run"], {
290
+ cwd: repositoryRoot,
291
+ env: {
292
+ ...process.env,
293
+ PLAYWRIGHT_EXTERNAL_BASE_URL: baseUrl,
294
+ },
295
+ signal: abortController.signal,
296
+ timeout: 120_000,
297
+ });
298
+ }
299
+
300
+ async function runStartedDeployment(
301
+ mode: "standalone" | "runtime",
302
+ readinessLabel: "Standalone" | "Runtime",
303
+ container: string,
304
+ volume: string,
305
+ image: string,
306
+ ): Promise<void> {
307
+ await deploymentPhase(mode, "start", async () =>
308
+ docker(
309
+ "run",
310
+ "--detach",
311
+ "--name",
312
+ container,
313
+ "--network",
314
+ network,
315
+ "--publish",
316
+ "127.0.0.1::3000",
317
+ "--volume",
318
+ `${volume}:/data`,
319
+ image,
320
+ ),
321
+ );
322
+ const baseUrl = await deploymentPhase(mode, "start", async () =>
323
+ publishedBaseUrl(container),
324
+ );
325
+ await deploymentPhase(mode, "readiness", async () =>
326
+ waitForReady(readinessLabel, container, baseUrl),
327
+ );
328
+ await deploymentPhase(mode, "identity", async () =>
329
+ assertProcessIdentity(readinessLabel, container),
330
+ );
331
+ await deploymentPhase(mode, "empty-database", async () =>
332
+ assertEmptyDatabase(container),
333
+ );
334
+ await deploymentPhase(mode, "playwright", async () => runPlaywright(baseUrl));
335
+ }
336
+
337
+ async function assertUnpreparedRuntimeFails(): Promise<void> {
338
+ await dockerWithTimeout(
339
+ 30_000,
340
+ "run",
341
+ "--detach",
342
+ "--name",
343
+ containers.unprepared,
344
+ "--network",
345
+ network,
346
+ "--publish",
347
+ "127.0.0.1::3000",
348
+ "--volume",
349
+ `${volumes.unprepared}:/data`,
350
+ runtimeImage,
351
+ );
352
+ const baseUrl = await publishedBaseUrl(containers.unprepared);
353
+ const deadline = Date.now() + 30_000;
354
+
355
+ while (Date.now() < deadline) {
356
+ const statePromise = dockerWithTimeout(
357
+ 5_000,
358
+ "inspect",
359
+ "--format={{.State.Status}}:{{.State.ExitCode}}",
360
+ containers.unprepared,
361
+ ).then(
362
+ (state) => ({ state }),
363
+ (error: unknown) => ({ error }),
364
+ );
365
+ const probe = await fetch(baseUrl, {
366
+ signal: AbortSignal.timeout(500),
367
+ }).then(
368
+ (response) => ({ response }),
369
+ () => ({ response: undefined }),
370
+ );
371
+
372
+ if (probe.response !== undefined) {
373
+ throw new Error(
374
+ `Unprepared runtime served HTTP ${probe.response.status} before exiting.`,
375
+ );
376
+ }
377
+
378
+ const stateResult = await statePromise;
379
+ if ("error" in stateResult) {
380
+ throw stateResult.error;
381
+ }
382
+ const match =
383
+ /^(created|running|paused|restarting|removing|exited|dead):(\d+)$/u.exec(
384
+ stateResult.state,
385
+ );
386
+ if (match?.[1] === "exited") {
387
+ const exitCode = Number(match[2]);
388
+ const logs = await containerLogs(containers.unprepared);
389
+ if (exitCode === 0) {
390
+ throw new Error(
391
+ `Unprepared runtime exited successfully instead of rejecting startup.\n${logs}`,
392
+ );
393
+ }
394
+ if (!logs.includes("Database is not ready")) {
395
+ throw new Error(
396
+ `Unprepared runtime did not report database readiness failure.\n${logs}`,
397
+ );
398
+ }
399
+ return;
400
+ }
401
+ if (match === null || match[1] === "dead") {
402
+ throw new Error(
403
+ `Unprepared runtime entered unexpected state ${stateResult.state}.`,
404
+ );
405
+ }
406
+ await new Promise((resolve) => setTimeout(resolve, 100));
407
+ }
408
+
409
+ throw new Error("Unprepared runtime did not exit within 30000ms");
410
+ }
411
+
412
+ for (const signal of forwardedSignals) {
413
+ const handler = (): void => {
414
+ abortController.abort(new Error(`Received ${signal}`));
415
+ };
416
+ signalHandlers.set(signal, handler);
417
+ process.once(signal, handler);
418
+ }
419
+
420
+ try {
421
+ await deploymentPhase("standalone", "build", async () =>
422
+ docker(
423
+ "build",
424
+ "--file",
425
+ "apps/web/Dockerfile",
426
+ "--target",
427
+ "standalone",
428
+ "--build-arg",
429
+ `DEPLOYMENT_BUILD_ID=${uniqueId}`,
430
+ "--tag",
431
+ standaloneImage,
432
+ ".",
433
+ ),
434
+ );
435
+ await deploymentPhase("runtime", "build", async () =>
436
+ docker(
437
+ "build",
438
+ "--file",
439
+ "apps/web/Dockerfile",
440
+ "--target",
441
+ "runtime",
442
+ "--build-arg",
443
+ `DEPLOYMENT_BUILD_ID=${uniqueId}`,
444
+ "--tag",
445
+ runtimeImage,
446
+ ".",
447
+ ),
448
+ );
449
+ for (const volume of Object.values(volumes)) {
450
+ await docker("volume", "create", volume);
451
+ }
452
+ await docker("network", "create", network);
453
+
454
+ await runStartedDeployment(
455
+ "standalone",
456
+ "Standalone",
457
+ containers.standalone,
458
+ volumes.standalone,
459
+ standaloneImage,
460
+ );
461
+
462
+ await deploymentPhase("external-preparation", "prepare", async () =>
463
+ docker(
464
+ "run",
465
+ "--name",
466
+ containers.preparation,
467
+ "--network",
468
+ network,
469
+ "--volume",
470
+ `${volumes.prepared}:/data`,
471
+ standaloneImage,
472
+ "prepare-only",
473
+ ),
474
+ );
475
+ await deploymentPhase("external-preparation", "exit", async () => {
476
+ const state = await dockerWithTimeout(
477
+ 10_000,
478
+ "inspect",
479
+ "--format={{.State.Status}}:{{.State.ExitCode}}",
480
+ containers.preparation,
481
+ );
482
+ if (state !== "exited:0") {
483
+ throw new Error(
484
+ `Preparation-only container must exit successfully, received ${state}.\n${await containerLogs(containers.preparation)}`,
485
+ );
486
+ }
487
+ });
488
+ await runStartedDeployment(
489
+ "runtime",
490
+ "Runtime",
491
+ containers.runtime,
492
+ volumes.prepared,
493
+ runtimeImage,
494
+ );
495
+
496
+ await deploymentPhase("fresh-runtime", "rejection", async () =>
497
+ assertUnpreparedRuntimeFails(),
498
+ );
499
+ } catch (error) {
500
+ console.error(error);
501
+ console.error(await deploymentLogs());
502
+ process.exitCode = 1;
503
+ } finally {
504
+ for (const signal of forwardedSignals) {
505
+ const handler = signalHandlers.get(signal);
506
+ if (handler) {
507
+ process.removeListener(signal, handler);
508
+ }
509
+ }
510
+ await cleanup();
511
+ }
@@ -0,0 +1,33 @@
1
+ #!/bin/sh
2
+ set -eu
3
+
4
+ database_file=${DATABASE_FILE:-/data/app.sqlite}
5
+ case "$database_file" in
6
+ /*) ;;
7
+ *)
8
+ echo "DATABASE_FILE must be an absolute path: $database_file" >&2
9
+ exit 64
10
+ ;;
11
+ esac
12
+
13
+ prepare_database() {
14
+ mkdir -p "$(dirname "$database_file")"
15
+ (
16
+ cd /migration
17
+ DATABASE_FILE="$database_file" drizzle-kit migrate --config drizzle.config.ts
18
+ )
19
+ }
20
+
21
+ case "${1:-}" in
22
+ prepare-only)
23
+ prepare_database
24
+ ;;
25
+ prepare-and-start)
26
+ prepare_database
27
+ exec node /app/dist/server/index.mjs
28
+ ;;
29
+ *)
30
+ echo "Unsupported container command '${1:-}'. Expected prepare-only or prepare-and-start." >&2
31
+ exit 64
32
+ ;;
33
+ esac
@@ -0,0 +1,151 @@
1
+ import { spawn } from "node:child_process";
2
+ import { mkdir, rm } from "node:fs/promises";
3
+ import { createServer } from "node:net";
4
+ import path from "node:path";
5
+ import { fileURLToPath } from "node:url";
6
+
7
+ const databaseFile = fileURLToPath(
8
+ new URL("../node_modules/.tmp/e2e.sqlite", import.meta.url),
9
+ );
10
+ const externalBaseUrlName = "PLAYWRIGHT_EXTERNAL_BASE_URL";
11
+ const externalReadinessTimeoutMs = 30_000;
12
+
13
+ function externalBaseUrl(): string | undefined {
14
+ if (!Object.hasOwn(process.env, externalBaseUrlName)) {
15
+ return undefined;
16
+ }
17
+
18
+ const value = process.env[externalBaseUrlName]?.trim();
19
+ if (!value) {
20
+ throw new Error(`${externalBaseUrlName} must be a non-empty HTTP(S) URL`);
21
+ }
22
+
23
+ let url: URL;
24
+ try {
25
+ url = new URL(value);
26
+ } catch {
27
+ throw new Error(`${externalBaseUrlName} must be a valid HTTP(S) URL`);
28
+ }
29
+
30
+ if (url.protocol !== "http:" && url.protocol !== "https:") {
31
+ throw new Error(`${externalBaseUrlName} must use HTTP or HTTPS`);
32
+ }
33
+
34
+ return url.toString();
35
+ }
36
+
37
+ async function availablePort(): Promise<string> {
38
+ return await new Promise((resolve, reject) => {
39
+ const server = createServer();
40
+
41
+ server.once("error", reject);
42
+ server.listen(0, "127.0.0.1", () => {
43
+ const address = server.address();
44
+
45
+ if (typeof address !== "object" || address === null) {
46
+ server.close(() => {
47
+ reject(new Error("Could not allocate a Playwright web port"));
48
+ });
49
+ return;
50
+ }
51
+
52
+ const port = String(address.port);
53
+ server.close((error) => {
54
+ if (error) {
55
+ reject(error);
56
+ return;
57
+ }
58
+
59
+ resolve(port);
60
+ });
61
+ });
62
+ });
63
+ }
64
+
65
+ async function awaitExternalService(baseUrl: string): Promise<void> {
66
+ const deadline = Date.now() + externalReadinessTimeoutMs;
67
+
68
+ while (Date.now() < deadline) {
69
+ try {
70
+ const response = await fetch(baseUrl, {
71
+ signal: AbortSignal.timeout(2_000),
72
+ });
73
+ if (response.ok) {
74
+ return;
75
+ }
76
+ } catch {
77
+ // The externally managed service may still be starting.
78
+ }
79
+
80
+ await new Promise((resolve) => setTimeout(resolve, 250));
81
+ }
82
+
83
+ throw new Error(
84
+ `External Playwright service at ${baseUrl} was not ready within ${externalReadinessTimeoutMs}ms`,
85
+ );
86
+ }
87
+
88
+ async function localPlaywrightEnv(): Promise<NodeJS.ProcessEnv> {
89
+ return {
90
+ ...process.env,
91
+ DATABASE_FILE: process.env.DATABASE_FILE ?? databaseFile,
92
+ PLAYWRIGHT_WEB_PORT:
93
+ process.env.PLAYWRIGHT_WEB_PORT ?? (await availablePort()),
94
+ };
95
+ }
96
+
97
+ const externalServiceUrl = externalBaseUrl();
98
+ const env = externalServiceUrl
99
+ ? { ...process.env }
100
+ : await localPlaywrightEnv();
101
+ const localDatabaseFile = externalServiceUrl ? undefined : env.DATABASE_FILE;
102
+ delete env.NO_COLOR;
103
+
104
+ if (externalServiceUrl) {
105
+ await awaitExternalService(externalServiceUrl);
106
+ } else {
107
+ await mkdir(path.dirname(localDatabaseFile!), { recursive: true });
108
+ await rm(localDatabaseFile!, { force: true });
109
+ }
110
+
111
+ const command = process.platform === "win32" ? "playwright.cmd" : "playwright";
112
+ const child = spawn(command, ["test", ...process.argv.slice(2)], {
113
+ env,
114
+ stdio: "inherit",
115
+ });
116
+
117
+ const forwardedSignals = ["SIGINT", "SIGTERM"] as const;
118
+ const forwardSignal = (signal: NodeJS.Signals): void => {
119
+ child.kill(signal);
120
+ };
121
+ for (const signal of forwardedSignals) {
122
+ process.once(signal, forwardSignal);
123
+ }
124
+
125
+ try {
126
+ const result = await new Promise<{
127
+ code: number | null;
128
+ signal: NodeJS.Signals | null;
129
+ }>((resolve, reject) => {
130
+ child.once("error", reject);
131
+ child.once("exit", (code, signal) => resolve({ code, signal }));
132
+ });
133
+
134
+ if (result.signal) {
135
+ console.error(`Playwright exited with signal ${result.signal}`);
136
+ process.exitCode = 1;
137
+ } else {
138
+ process.exitCode = result.code ?? 1;
139
+ }
140
+ } catch (error) {
141
+ console.error(error);
142
+ process.exitCode = 1;
143
+ } finally {
144
+ for (const signal of forwardedSignals) {
145
+ process.removeListener(signal, forwardSignal);
146
+ }
147
+
148
+ if (localDatabaseFile) {
149
+ await rm(localDatabaseFile, { force: true });
150
+ }
151
+ }
@@ -3,7 +3,9 @@ import { expect, test } from "@playwright/test";
3
3
  test("renders the Vike home page", async ({ page }) => {
4
4
  const todoTitle = `编写生成项目端到端测试 ${Date.now()}`;
5
5
 
6
- await page.goto("/", { waitUntil: "networkidle" });
6
+ // Vike can retain background browser requests after its interactive page is
7
+ // ready; the visible UI assertions below are the actual readiness contract.
8
+ await page.goto("/", { waitUntil: "domcontentloaded" });
7
9
  await expect(
8
10
  page.getByRole("heading", { name: "全栈 Vike 应用" }),
9
11
  ).toBeVisible();