create-authenik8-app 2.4.12 → 2.4.14

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 (235) hide show
  1. package/README.md +160 -57
  2. package/assets/logo.svg +53 -0
  3. package/dist/src/bin/index.js +199 -125
  4. package/dist/src/bin/index.js.map +1 -1
  5. package/dist/src/lib/args.d.ts +18 -0
  6. package/dist/src/lib/args.d.ts.map +1 -0
  7. package/dist/src/lib/args.js +82 -0
  8. package/dist/src/lib/args.js.map +1 -0
  9. package/dist/src/lib/constants.d.ts +1 -0
  10. package/dist/src/lib/constants.d.ts.map +1 -1
  11. package/dist/src/lib/constants.js +10 -11
  12. package/dist/src/lib/constants.js.map +1 -1
  13. package/dist/src/lib/preflight.d.ts +3 -0
  14. package/dist/src/lib/preflight.d.ts.map +1 -0
  15. package/dist/src/lib/preflight.js +21 -0
  16. package/dist/src/lib/preflight.js.map +1 -0
  17. package/dist/src/lib/process.d.ts +6 -2
  18. package/dist/src/lib/process.d.ts.map +1 -1
  19. package/dist/src/lib/process.js +66 -8
  20. package/dist/src/lib/process.js.map +1 -1
  21. package/dist/src/lib/projectName.d.ts +2 -0
  22. package/dist/src/lib/projectName.d.ts.map +1 -0
  23. package/dist/src/lib/projectName.js +6 -0
  24. package/dist/src/lib/projectName.js.map +1 -0
  25. package/dist/src/lib/schemas.d.ts +192 -0
  26. package/dist/src/lib/schemas.d.ts.map +1 -0
  27. package/dist/src/lib/schemas.js +171 -0
  28. package/dist/src/lib/schemas.js.map +1 -0
  29. package/dist/src/lib/state.d.ts.map +1 -1
  30. package/dist/src/lib/state.js +20 -3
  31. package/dist/src/lib/state.js.map +1 -1
  32. package/dist/src/lib/types.d.ts +6 -13
  33. package/dist/src/lib/types.d.ts.map +1 -1
  34. package/dist/src/lib/ui.d.ts +8 -3
  35. package/dist/src/lib/ui.d.ts.map +1 -1
  36. package/dist/src/lib/ui.js +76 -112
  37. package/dist/src/lib/ui.js.map +1 -1
  38. package/dist/src/steps/configurePrisma.d.ts.map +1 -1
  39. package/dist/src/steps/configurePrisma.js +83 -9
  40. package/dist/src/steps/configurePrisma.js.map +1 -1
  41. package/dist/src/steps/createProject.d.ts +2 -1
  42. package/dist/src/steps/createProject.d.ts.map +1 -1
  43. package/dist/src/steps/createProject.js +148 -27
  44. package/dist/src/steps/createProject.js.map +1 -1
  45. package/dist/src/steps/finalSetup.d.ts +3 -3
  46. package/dist/src/steps/finalSetup.d.ts.map +1 -1
  47. package/dist/src/steps/finalSetup.js +24 -28
  48. package/dist/src/steps/finalSetup.js.map +1 -1
  49. package/dist/src/steps/installAuth.d.ts +1 -1
  50. package/dist/src/steps/installAuth.d.ts.map +1 -1
  51. package/dist/src/steps/installAuth.js +5 -4
  52. package/dist/src/steps/installAuth.js.map +1 -1
  53. package/dist/src/steps/installDeps.d.ts +11 -4
  54. package/dist/src/steps/installDeps.d.ts.map +1 -1
  55. package/dist/src/steps/installDeps.js +45 -77
  56. package/dist/src/steps/installDeps.js.map +1 -1
  57. package/dist/src/steps/prompts.d.ts +1 -1
  58. package/dist/src/steps/prompts.d.ts.map +1 -1
  59. package/dist/src/steps/prompts.js +42 -30
  60. package/dist/src/steps/prompts.js.map +1 -1
  61. package/dist/src/utils/jwk.d.ts +2 -0
  62. package/dist/src/utils/jwk.d.ts.map +1 -0
  63. package/dist/src/utils/jwk.js +44 -0
  64. package/dist/src/utils/jwk.js.map +1 -0
  65. package/dist/src/utils/output.d.ts +1 -1
  66. package/dist/src/utils/output.d.ts.map +1 -1
  67. package/dist/src/utils/output.js +75 -68
  68. package/dist/src/utils/output.js.map +1 -1
  69. package/package.json +17 -9
  70. package/templates/AGENT_IDENTITY.md +112 -0
  71. package/templates/THREAT_MODEL.md +27 -5
  72. package/templates/express-auth/README.md +13 -10
  73. package/templates/express-auth/docker-compose.yml +10 -0
  74. package/templates/express-auth/gitignore.template +6 -0
  75. package/templates/express-auth/package.json +12 -5
  76. package/templates/express-auth/src/app.ts +2 -0
  77. package/templates/express-auth/src/controllers/auth.controller.ts +2 -6
  78. package/templates/express-auth/src/controllers/protected.controller.ts +25 -10
  79. package/templates/express-auth/src/middleware/auth.middleware.ts +1 -0
  80. package/templates/express-auth/src/routes/protected.routes.ts +3 -1
  81. package/templates/express-auth/src/server.ts +6 -12
  82. package/templates/express-auth/src/utils/security.ts +119 -32
  83. package/templates/express-auth+/README.md +13 -10
  84. package/templates/express-auth+/docker-compose.yml +10 -0
  85. package/templates/express-auth+/gitignore.template +6 -0
  86. package/templates/express-auth+/package.json +12 -5
  87. package/templates/express-auth+/src/auth/auth.ts +3 -2
  88. package/templates/express-auth+/src/auth/controllers/password.controller.ts +3 -7
  89. package/templates/express-auth+/src/auth/controllers/protected.controller.ts +26 -11
  90. package/templates/express-auth+/src/auth/identity.adapter.ts +90 -0
  91. package/templates/express-auth+/src/auth/middleware/auth.middleware.ts +3 -4
  92. package/templates/express-auth+/src/auth/routes/protected.routes.ts +2 -2
  93. package/templates/express-auth+/src/oauth-providers/github/src/auth/auth.ts +3 -2
  94. package/templates/express-auth+/src/oauth-providers/google/src/auth/auth.ts +3 -2
  95. package/templates/express-auth+/src/oauth-providers/google-github/src/auth/auth.ts +3 -2
  96. package/templates/express-auth+/src/server.ts +5 -10
  97. package/templates/express-auth+/src/utils/security.ts +109 -28
  98. package/templates/express-base/README.md +13 -6
  99. package/templates/express-base/app.ts +2 -0
  100. package/templates/express-base/controllers/base.controller.ts +33 -19
  101. package/templates/express-base/docker-compose.yml +10 -0
  102. package/templates/express-base/gitignore.template +6 -0
  103. package/templates/express-base/package.json +11 -5
  104. package/templates/express-base/routes/base.routes.ts +1 -1
  105. package/templates/express-base/src/.env.example +7 -2
  106. package/templates/express-base/src/server.ts +6 -12
  107. package/templates/express-base/tsconfig.json +7 -40
  108. package/templates/express-base/utils/security.ts +111 -15
  109. package/templates/fullstack/.env.example +24 -0
  110. package/templates/fullstack/PRESET_CONTRACT.md +46 -0
  111. package/templates/fullstack/README.md +65 -0
  112. package/templates/fullstack/THREAT_MODEL.md +30 -0
  113. package/templates/fullstack/apps/api/package.json +48 -0
  114. package/templates/fullstack/apps/api/prisma/schema.prisma +124 -0
  115. package/templates/fullstack/apps/api/prisma/seed.ts +36 -0
  116. package/templates/fullstack/apps/api/prisma.config.ts +18 -0
  117. package/templates/fullstack/apps/api/src/app.ts +68 -0
  118. package/templates/fullstack/apps/api/src/auth/auth.controller.ts +125 -0
  119. package/templates/fullstack/apps/api/src/auth/auth.routes.ts +50 -0
  120. package/templates/fullstack/apps/api/src/auth/auth.service.ts +257 -0
  121. package/templates/fullstack/apps/api/src/auth/authenik8.ts +67 -0
  122. package/templates/fullstack/apps/api/src/auth/cookies.ts +36 -0
  123. package/templates/fullstack/apps/api/src/config/env.ts +72 -0
  124. package/templates/fullstack/apps/api/src/config/logger.ts +17 -0
  125. package/templates/fullstack/apps/api/src/config/mailer.ts +32 -0
  126. package/templates/fullstack/apps/api/src/config/origins.ts +27 -0
  127. package/templates/fullstack/apps/api/src/config/prisma.ts +9 -0
  128. package/templates/fullstack/apps/api/src/middleware/authenticate.ts +35 -0
  129. package/templates/fullstack/apps/api/src/middleware/csrf.ts +60 -0
  130. package/templates/fullstack/apps/api/src/middleware/origin.ts +12 -0
  131. package/templates/fullstack/apps/api/src/middleware/request-id.ts +9 -0
  132. package/templates/fullstack/apps/api/src/modules/admin/admin.controller.ts +17 -0
  133. package/templates/fullstack/apps/api/src/modules/admin/admin.routes.ts +14 -0
  134. package/templates/fullstack/apps/api/src/modules/admin/admin.service.ts +54 -0
  135. package/templates/fullstack/apps/api/src/modules/projects/project.controller.ts +22 -0
  136. package/templates/fullstack/apps/api/src/modules/projects/project.policy.ts +14 -0
  137. package/templates/fullstack/apps/api/src/modules/projects/project.repository.ts +20 -0
  138. package/templates/fullstack/apps/api/src/modules/projects/project.routes.ts +21 -0
  139. package/templates/fullstack/apps/api/src/modules/projects/project.service.ts +41 -0
  140. package/templates/fullstack/apps/api/src/modules/users/user.controller.ts +26 -0
  141. package/templates/fullstack/apps/api/src/modules/users/user.presenter.ts +13 -0
  142. package/templates/fullstack/apps/api/src/modules/users/user.routes.ts +21 -0
  143. package/templates/fullstack/apps/api/src/modules/users/user.service.ts +71 -0
  144. package/templates/fullstack/apps/api/src/openapi.ts +32 -0
  145. package/templates/fullstack/apps/api/src/server.ts +29 -0
  146. package/templates/fullstack/apps/api/src/types.ts +15 -0
  147. package/templates/fullstack/apps/api/src/utils/crypto.ts +4 -0
  148. package/templates/fullstack/apps/api/src/utils/http.ts +33 -0
  149. package/templates/fullstack/apps/api/src/utils/sealed-value.ts +37 -0
  150. package/templates/fullstack/apps/api/tests/project.policy.test.ts +26 -0
  151. package/templates/fullstack/apps/api/tests/registration.test.ts +69 -0
  152. package/templates/fullstack/apps/api/tests/security.test.ts +98 -0
  153. package/templates/fullstack/apps/api/tests/validation.test.ts +37 -0
  154. package/templates/fullstack/apps/api/tsconfig.json +16 -0
  155. package/templates/fullstack/apps/api/vitest.config.ts +9 -0
  156. package/templates/fullstack/apps/web/index.html +14 -0
  157. package/templates/fullstack/apps/web/package.json +31 -0
  158. package/templates/fullstack/apps/web/public/authenik8-logo.svg +53 -0
  159. package/templates/fullstack/apps/web/src/App.tsx +45 -0
  160. package/templates/fullstack/apps/web/src/auth/AuthProvider.tsx +53 -0
  161. package/templates/fullstack/apps/web/src/auth/RouteGuards.tsx +16 -0
  162. package/templates/fullstack/apps/web/src/auth/providers.ts +3 -0
  163. package/templates/fullstack/apps/web/src/components/AppShell.tsx +80 -0
  164. package/templates/fullstack/apps/web/src/components/AuthShell.tsx +26 -0
  165. package/templates/fullstack/apps/web/src/components/Page.tsx +30 -0
  166. package/templates/fullstack/apps/web/src/features/projects/ProjectPages.tsx +79 -0
  167. package/templates/fullstack/apps/web/src/main.tsx +24 -0
  168. package/templates/fullstack/apps/web/src/pages/DashboardPage.tsx +48 -0
  169. package/templates/fullstack/apps/web/src/pages/StatusPages.tsx +8 -0
  170. package/templates/fullstack/apps/web/src/pages/admin/AuditPage.tsx +19 -0
  171. package/templates/fullstack/apps/web/src/pages/admin/UsersPage.tsx +24 -0
  172. package/templates/fullstack/apps/web/src/pages/auth/LoginPage.tsx +51 -0
  173. package/templates/fullstack/apps/web/src/pages/auth/OAuthCallbackPage.tsx +26 -0
  174. package/templates/fullstack/apps/web/src/pages/auth/RecoveryPages.tsx +53 -0
  175. package/templates/fullstack/apps/web/src/pages/auth/RegisterPage.tsx +86 -0
  176. package/templates/fullstack/apps/web/src/pages/auth/VerifyEmailPage.tsx +24 -0
  177. package/templates/fullstack/apps/web/src/pages/settings/ProfilePage.tsx +34 -0
  178. package/templates/fullstack/apps/web/src/pages/settings/SecurityPage.tsx +57 -0
  179. package/templates/fullstack/apps/web/src/styles.css +289 -0
  180. package/templates/fullstack/apps/web/src/token-storage.test.ts +12 -0
  181. package/templates/fullstack/apps/web/tsconfig.app.json +19 -0
  182. package/templates/fullstack/apps/web/tsconfig.json +7 -0
  183. package/templates/fullstack/apps/web/tsconfig.node.json +10 -0
  184. package/templates/fullstack/apps/web/vite.config.ts +18 -0
  185. package/templates/fullstack/docker-compose.yml +35 -0
  186. package/templates/fullstack/docs/PRODUCTION.md +30 -0
  187. package/templates/fullstack/gitignore.template +8 -0
  188. package/templates/fullstack/package.json +39 -0
  189. package/templates/fullstack/packages/api-client/package.json +20 -0
  190. package/templates/fullstack/packages/api-client/src/index.ts +203 -0
  191. package/templates/fullstack/packages/api-client/tsconfig.json +14 -0
  192. package/templates/fullstack/packages/contracts/package.json +20 -0
  193. package/templates/fullstack/packages/contracts/src/index.ts +146 -0
  194. package/templates/fullstack/packages/contracts/tsconfig.json +13 -0
  195. package/templates/fullstack/packages/ui/package.json +22 -0
  196. package/templates/fullstack/packages/ui/src/index.tsx +33 -0
  197. package/templates/fullstack/packages/ui/tsconfig.json +14 -0
  198. package/templates/prisma/postgresql/.env.example +6 -2
  199. package/templates/prisma/postgresql/client.ts +17 -0
  200. package/templates/prisma/postgresql/prisma.config.ts +12 -0
  201. package/templates/prisma/postgresql/schema.prisma +0 -1
  202. package/templates/prisma/sqlite/.env.example +6 -2
  203. package/templates/prisma/sqlite/client.ts +16 -0
  204. package/templates/prisma/sqlite/prisma.config.ts +12 -0
  205. package/templates/prisma/sqlite/schema.prisma +0 -1
  206. package/dist/src/tests/templated-routes.test.d.ts +0 -2
  207. package/dist/src/tests/templated-routes.test.d.ts.map +0 -1
  208. package/dist/src/tests/templated-routes.test.js +0 -325
  209. package/dist/src/tests/templated-routes.test.js.map +0 -1
  210. package/dist/templates/THREAT_MODEL.md +0 -138
  211. package/dist/templates/express-auth/src/controllers/protected.controller.d.ts +0 -8
  212. package/dist/templates/express-auth/src/controllers/protected.controller.d.ts.map +0 -1
  213. package/dist/templates/express-auth/src/controllers/protected.controller.js +0 -50
  214. package/dist/templates/express-auth/src/controllers/protected.controller.js.map +0 -1
  215. package/dist/templates/express-auth/src/routes/protected.routes.d.ts +0 -2
  216. package/dist/templates/express-auth/src/routes/protected.routes.d.ts.map +0 -1
  217. package/dist/templates/express-auth/src/routes/protected.routes.js +0 -16
  218. package/dist/templates/express-auth/src/routes/protected.routes.js.map +0 -1
  219. package/dist/templates/express-auth/src/utils/security.d.ts +0 -8
  220. package/dist/templates/express-auth/src/utils/security.d.ts.map +0 -1
  221. package/dist/templates/express-auth/src/utils/security.js +0 -55
  222. package/dist/templates/express-auth/src/utils/security.js.map +0 -1
  223. package/dist/templates/express-base/controllers/base.controller.d.ts +0 -12
  224. package/dist/templates/express-base/controllers/base.controller.d.ts.map +0 -1
  225. package/dist/templates/express-base/controllers/base.controller.js +0 -77
  226. package/dist/templates/express-base/controllers/base.controller.js.map +0 -1
  227. package/dist/templates/express-base/routes/base.routes.d.ts +0 -2
  228. package/dist/templates/express-base/routes/base.routes.d.ts.map +0 -1
  229. package/dist/templates/express-base/routes/base.routes.js +0 -20
  230. package/dist/templates/express-base/routes/base.routes.js.map +0 -1
  231. package/dist/templates/express-base/utils/security.d.ts +0 -5
  232. package/dist/templates/express-base/utils/security.d.ts.map +0 -1
  233. package/dist/templates/express-base/utils/security.js +0 -40
  234. package/dist/templates/express-base/utils/security.js.map +0 -1
  235. package/dist/templates/package.json +0 -27
@@ -1,3 +1,4 @@
1
+ export const PRISMA_VERSION = "7.8.0";
1
2
  export const stepOrder = [
2
3
  "start",
3
4
  "prompts",
@@ -6,20 +7,18 @@ export const stepOrder = [
6
7
  "prisma-configured",
7
8
  "production-configured",
8
9
  "deps-installed",
9
- "prisma-generated",
10
10
  "git-initialized",
11
11
  "done",
12
12
  ];
13
13
  export const stepLabels = {
14
- start: "Starting",
15
- prompts: "Collecting inputs",
16
- "project-created": "Project scaffold",
17
- "auth-installed": "Auth setup",
18
- "prisma-configured": "Prisma setup",
19
- "deps-installed": "Dependencies install",
20
- "prisma-generated": "Prisma generate",
21
- "production-configured": "Production setup",
22
- "git-initialized": "Git init",
23
- done: "Completed",
14
+ start: "Start setup",
15
+ prompts: "Collect configuration",
16
+ "project-created": "Create project files",
17
+ "auth-installed": "Configure authentication",
18
+ "prisma-configured": "Configure database",
19
+ "deps-installed": "Install dependencies",
20
+ "production-configured": "Configure production runtime",
21
+ "git-initialized": "Initialize Git repository",
22
+ done: "Project ready",
24
23
  };
25
24
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAe;IACnC,OAAO;IACP,SAAS;IACT,iBAAiB;IACjB,gBAAgB;IAChB,mBAAmB;IACnB,uBAAuB;IACvB,gBAAgB;IAChB,kBAAkB;IAClB,iBAAiB;IACjB,MAAM;CACP,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAA6B;IAClD,KAAK,EAAE,UAAU;IACjB,OAAO,EAAE,mBAAmB;IAC5B,iBAAiB,EAAE,kBAAkB;IACrC,gBAAgB,EAAE,YAAY;IAC9B,mBAAmB,EAAE,cAAc;IACnC,gBAAgB,EAAE,sBAAsB;IACxC,kBAAkB,EAAE,iBAAiB;IACrC,uBAAuB,EAAE,kBAAkB;IAC3C,iBAAiB,EAAE,UAAU;IAC7B,IAAI,EAAE,WAAW;CAClB,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AAEtC,MAAM,CAAC,MAAM,SAAS,GAAe;IACnC,OAAO;IACP,SAAS;IACT,iBAAiB;IACjB,gBAAgB;IAChB,mBAAmB;IACnB,uBAAuB;IACvB,gBAAgB;IAChB,iBAAiB;IACjB,MAAM;CACP,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAA6B;IAClD,KAAK,EAAE,aAAa;IACpB,OAAO,EAAE,uBAAuB;IAChC,iBAAiB,EAAE,sBAAsB;IACzC,gBAAgB,EAAE,0BAA0B;IAC5C,mBAAmB,EAAE,oBAAoB;IACzC,gBAAgB,EAAE,sBAAsB;IACxC,uBAAuB,EAAE,8BAA8B;IACvD,iBAAiB,EAAE,2BAA2B;IAC9C,IAAI,EAAE,eAAe;CACtB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function supportsFullstackPreset(version?: string): boolean;
2
+ export declare function assertPresetRequirements(_authMode: string | undefined, _usePrisma?: boolean, version?: string): void;
3
+ //# sourceMappingURL=preflight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../../src/lib/preflight.ts"],"names":[],"mappings":"AASA,wBAAgB,uBAAuB,CAAC,OAAO,SAAwB,GAAG,OAAO,CAKhF;AAED,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,UAAU,UAAQ,EAClB,OAAO,SAAwB,GAC9B,IAAI,CAMN"}
@@ -0,0 +1,21 @@
1
+ function parseNodeVersion(version) {
2
+ const [major = 0, minor = 0, patch = 0] = version
3
+ .replace(/^v/, "")
4
+ .split(".")
5
+ .map((part) => Number.parseInt(part, 10) || 0);
6
+ return [major, minor, patch];
7
+ }
8
+ export function supportsFullstackPreset(version = process.versions.node) {
9
+ const [major, minor] = parseNodeVersion(version);
10
+ if (major === 20)
11
+ return minor >= 19;
12
+ if (major === 22)
13
+ return minor >= 12;
14
+ return major >= 24;
15
+ }
16
+ export function assertPresetRequirements(_authMode, _usePrisma = false, version = process.versions.node) {
17
+ if (supportsFullstackPreset(version))
18
+ return;
19
+ throw new Error(`Authenik8 requires Node.js 20.19+, 22.12+, or 24+. Current version: ${version}.`);
20
+ }
21
+ //# sourceMappingURL=preflight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../../src/lib/preflight.ts"],"names":[],"mappings":"AAAA,SAAS,gBAAgB,CAAC,OAAe;IACvC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,OAAO;SAC9C,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;SACjB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEjD,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,KAAK,IAAI,EAAE,CAAC;IACrC,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,KAAK,IAAI,EAAE,CAAC;IACrC,OAAO,KAAK,IAAI,EAAE,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,SAA6B,EAC7B,UAAU,GAAG,KAAK,EAClB,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI;IAE/B,IAAI,uBAAuB,CAAC,OAAO,CAAC;QAAE,OAAO;IAE7C,MAAM,IAAI,KAAK,CACb,uEAAuE,OAAO,GAAG,CAClF,CAAC;AACJ,CAAC"}
@@ -1,7 +1,11 @@
1
1
  import type { RunOptions } from "./types.js";
2
2
  export declare function run(cmd: string, args: string[], options: RunOptions): Promise<void>;
3
- export declare function killAllProcesses(): void;
4
- export declare function getCommand(cmd: string): string;
3
+ export declare function killAllProcesses(platform?: NodeJS.Platform): void;
4
+ export declare function getCommand(cmd: string, platform?: NodeJS.Platform): string;
5
+ export declare function commandExists(cmd: string, platform?: NodeJS.Platform): boolean;
6
+ export declare function dockerComposeAvailable(platform?: NodeJS.Platform): boolean;
7
+ export declare function dockerDaemonAvailable(platform?: NodeJS.Platform): boolean;
8
+ export declare function isCommandNotFoundError(error: unknown): boolean;
5
9
  export declare function isInterruptedError(err: unknown): boolean;
6
10
  export declare function exitForInterrupt(err: unknown): Promise<void>;
7
11
  //# sourceMappingURL=process.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../src/lib/process.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBlF;AAED,wBAAgB,gBAAgB,SAO/B;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,UAQrC;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,WAQ9C;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,OAAO,iBAIlD"}
1
+ {"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../src/lib/process.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAY7C,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA6ClF;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,kBAAmB,QAc3D;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,kBAAmB,UAQlE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,kBAAmB,GAAG,OAAO,CAQ/E;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,kBAAmB,GAAG,OAAO,CAQ3E;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,kBAAmB,GAAG,OAAO,CAY1E;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE9D;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,WAQ9C;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,OAAO,iBAIlD"}
@@ -1,20 +1,43 @@
1
- import { spawn } from "child_process";
1
+ import { spawn, spawnSync } from "child_process";
2
2
  const activeProcesses = new Set();
3
+ const MAX_CAPTURED_OUTPUT = 16_000;
4
+ function appendOutput(current, chunk) {
5
+ const next = `${current}${String(chunk)}`;
6
+ return next.length > MAX_CAPTURED_OUTPUT
7
+ ? next.slice(next.length - MAX_CAPTURED_OUTPUT)
8
+ : next;
9
+ }
3
10
  export function run(cmd, args, options) {
4
11
  return new Promise((resolve, reject) => {
5
12
  const child = spawn(cmd, args, {
6
13
  cwd: options.cwd,
7
14
  stdio: options.stdio ?? "ignore",
8
- shell: true
15
+ env: options.env,
16
+ shell: process.platform === "win32",
17
+ windowsHide: true,
9
18
  });
10
19
  activeProcesses.add(child);
11
- child.on("exit", (code) => {
20
+ let output = "";
21
+ child.stdout?.on("data", (chunk) => {
22
+ output = appendOutput(output, chunk);
23
+ });
24
+ child.stderr?.on("data", (chunk) => {
25
+ output = appendOutput(output, chunk);
26
+ });
27
+ child.on("close", (code, signal) => {
12
28
  activeProcesses.delete(child);
13
29
  if (code === 0) {
14
30
  resolve();
15
31
  }
16
32
  else {
17
- reject(new Error(`${cmd} exited with code ${code}`));
33
+ const reason = signal
34
+ ? `${cmd} was interrupted by ${signal}`
35
+ : `${cmd} exited with code ${code}`;
36
+ const detail = output.trim();
37
+ const error = new Error(detail ? `${reason}\n\n${detail}` : reason);
38
+ if (signal)
39
+ error.signal = signal;
40
+ reject(error);
18
41
  }
19
42
  });
20
43
  child.on("error", (err) => {
@@ -23,17 +46,25 @@ export function run(cmd, args, options) {
23
46
  });
24
47
  });
25
48
  }
26
- export function killAllProcesses() {
49
+ export function killAllProcesses(platform = process.platform) {
27
50
  for (const proc of activeProcesses) {
28
51
  try {
29
- proc.kill("SIGINT");
52
+ if (platform === "win32" && proc.pid) {
53
+ spawnSync("taskkill.exe", ["/pid", String(proc.pid), "/T", "/F"], {
54
+ stdio: "ignore",
55
+ windowsHide: true,
56
+ });
57
+ }
58
+ else {
59
+ proc.kill("SIGTERM");
60
+ }
30
61
  }
31
62
  catch { }
32
63
  }
33
64
  activeProcesses.clear();
34
65
  }
35
- export function getCommand(cmd) {
36
- const isWin = process.platform === "win32";
66
+ export function getCommand(cmd, platform = process.platform) {
67
+ const isWin = platform === "win32";
37
68
  if (cmd === "npm")
38
69
  return isWin ? "npm.cmd" : "npm";
39
70
  if (cmd === "npx")
@@ -46,6 +77,33 @@ export function getCommand(cmd) {
46
77
  return isWin ? "git.exe" : "git";
47
78
  return cmd;
48
79
  }
80
+ export function commandExists(cmd, platform = process.platform) {
81
+ const result = spawnSync(getCommand(cmd, platform), ["--version"], {
82
+ stdio: "ignore",
83
+ shell: platform === "win32",
84
+ windowsHide: true,
85
+ });
86
+ return !result.error && result.status === 0;
87
+ }
88
+ export function dockerComposeAvailable(platform = process.platform) {
89
+ const result = spawnSync(getCommand("docker", platform), ["compose", "version"], {
90
+ stdio: "ignore",
91
+ shell: platform === "win32",
92
+ windowsHide: true,
93
+ });
94
+ return !result.error && result.status === 0;
95
+ }
96
+ export function dockerDaemonAvailable(platform = process.platform) {
97
+ const result = spawnSync(getCommand("docker", platform), ["info", "--format", "{{.ServerVersion}}"], {
98
+ stdio: "ignore",
99
+ shell: platform === "win32",
100
+ windowsHide: true,
101
+ });
102
+ return !result.error && result.status === 0;
103
+ }
104
+ export function isCommandNotFoundError(error) {
105
+ return error instanceof Error && "code" in error && error.code === "ENOENT";
106
+ }
49
107
  export function isInterruptedError(err) {
50
108
  return (typeof err === "object" &&
51
109
  err !== null &&
@@ -1 +1 @@
1
- {"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/lib/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAgB,MAAM,eAAe,CAAC;AAGpD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAgB,CAAC;AAEhD,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,IAAc,EAAC,OAAmB;IACjE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;YAC7B,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,QAAQ;YAChC,KAAK,EAAC,IAAI;SACX,CAAC,CAAC;QACH,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAE3B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAQ,EAAE,EAAE;YAC5B,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC;YACvD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAO,EAAE,EAAE;YAC5B,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IACD,eAAe,CAAC,KAAK,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;IACpD,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;IACpD,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;IACvD,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;IACpD,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;IACpD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,QAAQ,IAAI,GAAG;QACf,CAAE,GAA2B,CAAC,MAAM,KAAK,QAAQ;YAC9C,GAA2B,CAAC,MAAM,KAAK,SAAS,CAAC,CACrD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAY;IACjD,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/lib/process.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function projectNameError(projectName: string): string | undefined;
2
+ //# sourceMappingURL=projectName.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectName.d.ts","sourceRoot":"","sources":["../../../src/lib/projectName.ts"],"names":[],"mappings":"AAEA,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGxE"}
@@ -0,0 +1,6 @@
1
+ import { firstZodIssue, projectNameSchema } from "./schemas.js";
2
+ export function projectNameError(projectName) {
3
+ const result = projectNameSchema.safeParse(projectName);
4
+ return result.success ? undefined : firstZodIssue(result.error);
5
+ }
6
+ //# sourceMappingURL=projectName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectName.js","sourceRoot":"","sources":["../../../src/lib/projectName.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEhE,MAAM,UAAU,gBAAgB,CAAC,WAAmB;IAClD,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACxD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC"}
@@ -0,0 +1,192 @@
1
+ import { z } from "zod";
2
+ export declare const packageManagerSchema: z.ZodEnum<{
3
+ npm: "npm";
4
+ pnpm: "pnpm";
5
+ bun: "bun";
6
+ }>;
7
+ export declare const projectNameSchema: z.ZodString;
8
+ export declare const stepNameSchema: z.ZodEnum<{
9
+ start: "start";
10
+ prompts: "prompts";
11
+ "project-created": "project-created";
12
+ "auth-installed": "auth-installed";
13
+ "prisma-configured": "prisma-configured";
14
+ "production-configured": "production-configured";
15
+ "deps-installed": "deps-installed";
16
+ "git-initialized": "git-initialized";
17
+ done: "done";
18
+ }>;
19
+ export declare const authModeSchema: z.ZodEnum<{
20
+ base: "base";
21
+ auth: "auth";
22
+ "auth-oauth": "auth-oauth";
23
+ fullstack: "fullstack";
24
+ }>;
25
+ export declare const databaseSchema: z.ZodEnum<{
26
+ sqlite: "sqlite";
27
+ postgresql: "postgresql";
28
+ }>;
29
+ export declare const runtimeSchema: z.ZodEnum<{
30
+ bun: "bun";
31
+ node: "node";
32
+ }>;
33
+ export declare const oauthProviderSchema: z.ZodEnum<{
34
+ google: "google";
35
+ github: "github";
36
+ }>;
37
+ export declare const authMethodSchema: z.ZodEnum<{
38
+ google: "google";
39
+ github: "github";
40
+ password: "password";
41
+ }>;
42
+ export declare const authMethodSelectionSchema: z.ZodPreprocess<z.ZodArray<z.ZodEnum<{
43
+ google: "google";
44
+ github: "github";
45
+ password: "password";
46
+ }>>>;
47
+ export declare const oauthProviderSelectionSchema: z.ZodPreprocess<z.ZodArray<z.ZodEnum<{
48
+ google: "google";
49
+ github: "github";
50
+ }>>>;
51
+ export declare const promptAnswersSchema: z.ZodPipe<z.ZodObject<{
52
+ framework: z.ZodLiteral<"Express">;
53
+ authMode: z.ZodEnum<{
54
+ base: "base";
55
+ auth: "auth";
56
+ "auth-oauth": "auth-oauth";
57
+ fullstack: "fullstack";
58
+ }>;
59
+ authMethods: z.ZodOptional<z.ZodArray<z.ZodEnum<{
60
+ google: "google";
61
+ github: "github";
62
+ password: "password";
63
+ }>>>;
64
+ oauthProviders: z.ZodOptional<z.ZodArray<z.ZodEnum<{
65
+ google: "google";
66
+ github: "github";
67
+ }>>>;
68
+ usePrisma: z.ZodOptional<z.ZodBoolean>;
69
+ database: z.ZodOptional<z.ZodEnum<{
70
+ sqlite: "sqlite";
71
+ postgresql: "postgresql";
72
+ }>>;
73
+ useGit: z.ZodBoolean;
74
+ runtime: z.ZodOptional<z.ZodEnum<{
75
+ bun: "bun";
76
+ node: "node";
77
+ }>>;
78
+ }, z.core.$strict>, z.ZodTransform<{
79
+ framework: "Express";
80
+ authMode: "base" | "auth" | "auth-oauth" | "fullstack";
81
+ useGit: boolean;
82
+ authMethods?: ("google" | "github" | "password")[] | undefined;
83
+ oauthProviders?: ("google" | "github")[] | undefined;
84
+ usePrisma?: boolean | undefined;
85
+ database?: "sqlite" | "postgresql" | undefined;
86
+ runtime?: "bun" | "node" | undefined;
87
+ }, {
88
+ framework: "Express";
89
+ authMode: "base" | "auth" | "auth-oauth" | "fullstack";
90
+ useGit: boolean;
91
+ authMethods?: ("google" | "github" | "password")[] | undefined;
92
+ oauthProviders?: ("google" | "github")[] | undefined;
93
+ usePrisma?: boolean | undefined;
94
+ database?: "sqlite" | "postgresql" | undefined;
95
+ runtime?: "bun" | "node" | undefined;
96
+ }>>;
97
+ export declare const cliStateSchema: z.ZodObject<{
98
+ step: z.ZodEnum<{
99
+ start: "start";
100
+ prompts: "prompts";
101
+ "project-created": "project-created";
102
+ "auth-installed": "auth-installed";
103
+ "prisma-configured": "prisma-configured";
104
+ "production-configured": "production-configured";
105
+ "deps-installed": "deps-installed";
106
+ "git-initialized": "git-initialized";
107
+ done: "done";
108
+ }>;
109
+ runtime: z.ZodOptional<z.ZodEnum<{
110
+ bun: "bun";
111
+ node: "node";
112
+ }>>;
113
+ projectName: z.ZodString;
114
+ framework: z.ZodOptional<z.ZodString>;
115
+ usePrisma: z.ZodOptional<z.ZodBoolean>;
116
+ database: z.ZodOptional<z.ZodEnum<{
117
+ sqlite: "sqlite";
118
+ postgresql: "postgresql";
119
+ }>>;
120
+ useGit: z.ZodOptional<z.ZodBoolean>;
121
+ authMode: z.ZodOptional<z.ZodEnum<{
122
+ base: "base";
123
+ auth: "auth";
124
+ "auth-oauth": "auth-oauth";
125
+ fullstack: "fullstack";
126
+ }>>;
127
+ hashLib: z.ZodOptional<z.ZodLiteral<"bcryptjs">>;
128
+ installDeps: z.ZodOptional<z.ZodBoolean>;
129
+ packageManager: z.ZodOptional<z.ZodEnum<{
130
+ npm: "npm";
131
+ pnpm: "pnpm";
132
+ bun: "bun";
133
+ }>>;
134
+ oauthProviders: z.ZodOptional<z.ZodArray<z.ZodEnum<{
135
+ google: "google";
136
+ github: "github";
137
+ }>>>;
138
+ authMethods: z.ZodOptional<z.ZodArray<z.ZodEnum<{
139
+ google: "google";
140
+ github: "github";
141
+ password: "password";
142
+ }>>>;
143
+ }, z.core.$strict>;
144
+ export declare const configuredCliStateSchema: z.ZodObject<{
145
+ step: z.ZodEnum<{
146
+ start: "start";
147
+ prompts: "prompts";
148
+ "project-created": "project-created";
149
+ "auth-installed": "auth-installed";
150
+ "prisma-configured": "prisma-configured";
151
+ "production-configured": "production-configured";
152
+ "deps-installed": "deps-installed";
153
+ "git-initialized": "git-initialized";
154
+ done: "done";
155
+ }>;
156
+ runtime: z.ZodOptional<z.ZodEnum<{
157
+ bun: "bun";
158
+ node: "node";
159
+ }>>;
160
+ projectName: z.ZodString;
161
+ database: z.ZodOptional<z.ZodEnum<{
162
+ sqlite: "sqlite";
163
+ postgresql: "postgresql";
164
+ }>>;
165
+ hashLib: z.ZodOptional<z.ZodLiteral<"bcryptjs">>;
166
+ installDeps: z.ZodOptional<z.ZodBoolean>;
167
+ oauthProviders: z.ZodOptional<z.ZodArray<z.ZodEnum<{
168
+ google: "google";
169
+ github: "github";
170
+ }>>>;
171
+ authMethods: z.ZodOptional<z.ZodArray<z.ZodEnum<{
172
+ google: "google";
173
+ github: "github";
174
+ password: "password";
175
+ }>>>;
176
+ framework: z.ZodString;
177
+ authMode: z.ZodEnum<{
178
+ base: "base";
179
+ auth: "auth";
180
+ "auth-oauth": "auth-oauth";
181
+ fullstack: "fullstack";
182
+ }>;
183
+ usePrisma: z.ZodBoolean;
184
+ useGit: z.ZodBoolean;
185
+ packageManager: z.ZodEnum<{
186
+ npm: "npm";
187
+ pnpm: "pnpm";
188
+ bun: "bun";
189
+ }>;
190
+ }, z.core.$strict>;
191
+ export declare function firstZodIssue(error: z.ZodError): string;
192
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/lib/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,oBAAoB;;;;EAI/B,CAAC;AAEH,eAAO,MAAM,iBAAiB,aAS3B,CAAC;AAEJ,eAAO,MAAM,cAAc;;;;;;;;;;EAUzB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;EAAsD,CAAC;AAClF,eAAO,MAAM,cAAc;;;EAAmC,CAAC;AAC/D,eAAO,MAAM,aAAa;;;EAA0B,CAAC;AACrD,eAAO,MAAM,mBAAmB;;;EAA+B,CAAC;AAChE,eAAO,MAAM,gBAAgB;;;;EAA2C,CAAC;AAYzE,eAAO,MAAM,yBAAyB;;;;IAKrC,CAAC;AAEF,eAAO,MAAM,4BAA4B;;;IAGxC,CAAC;AAoEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAA2B,CAAC;AAE5D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAczB,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAiDnC,CAAC;AAEH,wBAAgB,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,GAAG,MAAM,CAKvD"}
@@ -0,0 +1,171 @@
1
+ import { z } from "zod";
2
+ const MAX_PACKAGE_NAME_LENGTH = 214;
3
+ const PROJECT_NAME_PATTERN = /^[a-z0-9][a-z0-9._-]*$/;
4
+ export const packageManagerSchema = z.enum(["npm", "pnpm", "bun"], {
5
+ error: (issue) => issue.input === undefined
6
+ ? "--package-manager requires npm, pnpm, or bun."
7
+ : `Unsupported package manager "${String(issue.input)}". Use npm, pnpm, or bun.`,
8
+ });
9
+ export const projectNameSchema = z
10
+ .string()
11
+ .max(MAX_PACKAGE_NAME_LENGTH, `Project names must be ${MAX_PACKAGE_NAME_LENGTH} characters or fewer.`)
12
+ .regex(PROJECT_NAME_PATTERN, "Use a lowercase name containing only letters, numbers, dots, hyphens, or underscores.");
13
+ export const stepNameSchema = z.enum([
14
+ "start",
15
+ "prompts",
16
+ "project-created",
17
+ "auth-installed",
18
+ "prisma-configured",
19
+ "production-configured",
20
+ "deps-installed",
21
+ "git-initialized",
22
+ "done",
23
+ ]);
24
+ export const authModeSchema = z.enum(["base", "auth", "auth-oauth", "fullstack"]);
25
+ export const databaseSchema = z.enum(["sqlite", "postgresql"]);
26
+ export const runtimeSchema = z.enum(["node", "bun"]);
27
+ export const oauthProviderSchema = z.enum(["google", "github"]);
28
+ export const authMethodSchema = z.enum(["password", "google", "github"]);
29
+ function normalizeCheckboxChoices(value) {
30
+ if (!Array.isArray(value))
31
+ return value;
32
+ return value.map((choice) => {
33
+ if (typeof choice === "object" && choice !== null && "value" in choice) {
34
+ return choice.value;
35
+ }
36
+ return choice;
37
+ });
38
+ }
39
+ export const authMethodSelectionSchema = z.preprocess(normalizeCheckboxChoices, z.array(authMethodSchema).refine((methods) => methods.includes("password"), {
40
+ error: "Email and password is required by the first full-stack preset",
41
+ }));
42
+ export const oauthProviderSelectionSchema = z.preprocess(normalizeCheckboxChoices, z.array(oauthProviderSchema).min(1, "Select at least one OAuth provider"));
43
+ const promptAnswersInputSchema = z.strictObject({
44
+ framework: z.literal("Express"),
45
+ authMode: authModeSchema,
46
+ authMethods: z.array(authMethodSchema).optional(),
47
+ oauthProviders: z.array(oauthProviderSchema).optional(),
48
+ usePrisma: z.boolean().optional(),
49
+ database: databaseSchema.optional(),
50
+ useGit: z.boolean(),
51
+ runtime: runtimeSchema.optional(),
52
+ }).superRefine((answers, context) => {
53
+ if (answers.authMode === "fullstack") {
54
+ const result = authMethodSelectionSchema.safeParse(answers.authMethods);
55
+ if (!result.success) {
56
+ context.addIssue({
57
+ code: "custom",
58
+ path: ["authMethods"],
59
+ message: firstZodIssue(result.error),
60
+ });
61
+ }
62
+ }
63
+ if (answers.authMode === "auth-oauth") {
64
+ const result = oauthProviderSelectionSchema.safeParse(answers.oauthProviders);
65
+ if (!result.success) {
66
+ context.addIssue({
67
+ code: "custom",
68
+ path: ["oauthProviders"],
69
+ message: firstZodIssue(result.error),
70
+ });
71
+ }
72
+ }
73
+ if (answers.authMode === "base" && answers.usePrisma === undefined) {
74
+ context.addIssue({
75
+ code: "custom",
76
+ path: ["usePrisma"],
77
+ message: "Choose whether to add Prisma",
78
+ });
79
+ }
80
+ const requiresDatabase = answers.authMode === "auth"
81
+ || answers.authMode === "auth-oauth"
82
+ || (answers.authMode === "base" && answers.usePrisma);
83
+ if (requiresDatabase && !answers.database) {
84
+ context.addIssue({
85
+ code: "custom",
86
+ path: ["database"],
87
+ message: "Select a database",
88
+ });
89
+ }
90
+ }).transform((answers) => {
91
+ if (answers.authMode !== "fullstack")
92
+ return answers;
93
+ const authMethods = authMethodSelectionSchema.parse(answers.authMethods);
94
+ return {
95
+ ...answers,
96
+ authMethods,
97
+ usePrisma: true,
98
+ database: "postgresql",
99
+ runtime: "node",
100
+ oauthProviders: authMethods.filter((method) => method !== "password"),
101
+ };
102
+ });
103
+ export const promptAnswersSchema = promptAnswersInputSchema;
104
+ export const cliStateSchema = z.strictObject({
105
+ step: stepNameSchema,
106
+ runtime: runtimeSchema.optional(),
107
+ projectName: projectNameSchema,
108
+ framework: z.string().min(1).max(100).optional(),
109
+ usePrisma: z.boolean().optional(),
110
+ database: databaseSchema.optional(),
111
+ useGit: z.boolean().optional(),
112
+ authMode: authModeSchema.optional(),
113
+ hashLib: z.literal("bcryptjs").optional(),
114
+ installDeps: z.boolean().optional(),
115
+ packageManager: packageManagerSchema.optional(),
116
+ oauthProviders: z.array(oauthProviderSchema).max(2).optional(),
117
+ authMethods: z.array(authMethodSchema).max(3).optional(),
118
+ });
119
+ export const configuredCliStateSchema = cliStateSchema.extend({
120
+ framework: z.string({ error: "Missing required input: framework" }).min(1, "Missing required input: framework"),
121
+ authMode: authModeSchema,
122
+ usePrisma: z.boolean(),
123
+ useGit: z.boolean(),
124
+ packageManager: packageManagerSchema,
125
+ }).superRefine((state, context) => {
126
+ if (state.usePrisma && !state.database) {
127
+ context.addIssue({
128
+ code: "custom",
129
+ path: ["database"],
130
+ message: "Missing required input: database",
131
+ });
132
+ }
133
+ if (state.authMode === "fullstack") {
134
+ if (state.database !== "postgresql") {
135
+ context.addIssue({
136
+ code: "custom",
137
+ path: ["database"],
138
+ message: "The full-stack preset requires PostgreSQL",
139
+ });
140
+ }
141
+ if (state.runtime !== "node") {
142
+ context.addIssue({
143
+ code: "custom",
144
+ path: ["runtime"],
145
+ message: "The full-stack preset requires the Node.js runtime",
146
+ });
147
+ }
148
+ if (!state.authMethods?.includes("password")) {
149
+ context.addIssue({
150
+ code: "custom",
151
+ path: ["authMethods"],
152
+ message: "Email and password is required by the first full-stack preset",
153
+ });
154
+ }
155
+ }
156
+ if (state.authMode === "auth-oauth" && !state.oauthProviders?.length) {
157
+ context.addIssue({
158
+ code: "custom",
159
+ path: ["oauthProviders"],
160
+ message: "Select at least one OAuth provider",
161
+ });
162
+ }
163
+ });
164
+ export function firstZodIssue(error) {
165
+ const issue = error.issues[0];
166
+ if (!issue)
167
+ return "Input validation failed";
168
+ const location = issue.path.length > 0 ? `${issue.path.join(".")}: ` : "";
169
+ return `${location}${issue.message}`;
170
+ }
171
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/lib/schemas.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/lib/state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAMrD,wBAAgB,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,QAG7D;AAED,wBAAgB,QAAQ,IAAI,QAAQ,CAEnC;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,QAIlD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAGvD;AAED,wBAAgB,UAAU,SAIzB;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,WAEzE"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/lib/state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAOrD,wBAAgB,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,QAO7D;AAED,wBAAgB,QAAQ,IAAI,QAAQ,CAEnC;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,QAQlD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAOvD;AAED,wBAAgB,UAAU,SASzB;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,WAEzE"}