create-authenik8-app 2.4.11 → 2.4.13

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 -7
  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 +149 -28
  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 +13 -6
  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 +13 -6
  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,29 +1,46 @@
1
1
  import fs from "fs-extra";
2
2
  import path from "path";
3
3
  import { stepOrder } from "./constants.js";
4
+ import { cliStateSchema, firstZodIssue } from "./schemas.js";
4
5
  let state;
5
6
  let stateFile;
6
7
  export function initState(initialState, file) {
7
- state = initialState;
8
+ const result = cliStateSchema.safeParse(initialState);
9
+ if (!result.success) {
10
+ throw new Error(`Invalid CLI state: ${firstZodIssue(result.error)}`);
11
+ }
12
+ state = result.data;
8
13
  stateFile = file;
9
14
  }
10
15
  export function getState() {
11
16
  return state;
12
17
  }
13
18
  export function saveState(update) {
14
- state = { ...state, ...update };
19
+ const result = cliStateSchema.safeParse({ ...state, ...update });
20
+ if (!result.success) {
21
+ throw new Error(`Invalid CLI state: ${firstZodIssue(result.error)}`);
22
+ }
23
+ state = result.data;
15
24
  fs.ensureDirSync(path.dirname(stateFile));
16
25
  fs.writeJsonSync(stateFile, state, { spaces: 2 });
17
26
  }
18
27
  export function loadState(file) {
19
28
  if (!fs.existsSync(file))
20
29
  return null;
21
- return fs.readJsonSync(file);
30
+ const result = cliStateSchema.safeParse(fs.readJsonSync(file));
31
+ if (!result.success) {
32
+ throw new Error(`Saved setup state is invalid: ${firstZodIssue(result.error)}`);
33
+ }
34
+ return result.data;
22
35
  }
23
36
  export function clearState() {
24
37
  if (fs.existsSync(stateFile)) {
25
38
  fs.removeSync(stateFile);
26
39
  }
40
+ const stateDir = path.dirname(stateFile);
41
+ if (fs.existsSync(stateDir) && fs.readdirSync(stateDir).length === 0) {
42
+ fs.removeSync(stateDir);
43
+ }
27
44
  }
28
45
  export function hasReachedStep(currentStep, targetStep) {
29
46
  return stepOrder.indexOf(currentStep) >= stepOrder.indexOf(targetStep);
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/lib/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,IAAI,KAAe,CAAC;AACpB,IAAI,SAAiB,CAAC;AAEtB,MAAM,UAAU,SAAS,CAAC,YAAsB,EAAE,IAAY;IAC5D,KAAK,GAAG,YAAY,CAAC;IACrB,SAAS,GAAG,IAAI,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAyB;IACjD,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE,CAAC;IAChC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1C,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,CAAa,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,WAAqB,EAAE,UAAoB;IACxE,OAAO,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACzE,CAAC"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/lib/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7D,IAAI,KAAe,CAAC;AACpB,IAAI,SAAiB,CAAC;AAEtB,MAAM,UAAU,SAAS,CAAC,YAAsB,EAAE,IAAY;IAC5D,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACtD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,sBAAsB,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;IACpB,SAAS,GAAG,IAAI,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAyB;IACjD,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACjE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,sBAAsB,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;IACpB,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1C,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,iCAAiC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,WAAqB,EAAE,UAAoB;IACxE,OAAO,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACzE,CAAC"}
@@ -1,19 +1,12 @@
1
1
  import type { StdioOptions } from "child_process";
2
- export type StepName = "start" | "prompts" | "project-created" | "auth-installed" | "prisma-configured" | "production-configured" | "deps-installed" | "prisma-generated" | "git-initialized" | "done";
3
- export type CliState = {
4
- step: StepName;
5
- runtime?: "node" | "bun";
6
- projectName: string;
7
- framework?: string;
8
- usePrisma?: boolean;
9
- database?: string;
10
- useGit?: boolean;
11
- authMode?: string;
12
- hashLib?: string;
13
- oauthProviders?: string[];
14
- };
2
+ import type { z } from "zod";
3
+ import type { cliStateSchema, packageManagerSchema, stepNameSchema } from "./schemas.js";
4
+ export type PackageManager = z.infer<typeof packageManagerSchema>;
5
+ export type StepName = z.infer<typeof stepNameSchema>;
6
+ export type CliState = z.infer<typeof cliStateSchema>;
15
7
  export type RunOptions = {
16
8
  cwd: string;
17
9
  stdio?: StdioOptions;
10
+ env?: NodeJS.ProcessEnv;
18
11
  };
19
12
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,MAAM,QAAQ,GAChB,OAAO,GACP,SAAS,GACT,iBAAiB,GACjB,gBAAgB,GAChB,mBAAmB,GACnB,uBAAuB,GACvB,gBAAgB,GAChB,kBAAkB,GAClB,iBAAiB,GACjB,MAAM,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAC,MAAM,GAAC,KAAK,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,cAAc,EACf,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB,CAAC"}
@@ -1,7 +1,12 @@
1
- import type { StepName } from "./types.js";
1
+ import type { CliState, StepName } from "./types.js";
2
+ export declare const animatedProgress: boolean;
2
3
  export declare const spinner: import("ora").Ora;
3
- export declare const sleep: (ms: number) => Promise<unknown>;
4
+ export declare function formatDuration(durationMs: number): string;
4
5
  export declare function renderHeader(): void;
5
- export declare function renderStep(current: StepName, isProduction: boolean): void;
6
6
  export declare function showBootLogo(): Promise<void>;
7
+ export declare function renderConfiguration(state: CliState): void;
8
+ export declare function startStep(step: StepName, detail?: string): void;
9
+ export declare function completeStep(step: StepName, detail?: string): void;
10
+ export declare function skipStep(step: StepName, reason: string): void;
11
+ export declare function finishSteps(): void;
7
12
  //# sourceMappingURL=ui.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../src/lib/ui.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,eAAO,MAAM,OAAO,mBAAgB,CAAC;AAErC,eAAO,MAAM,KAAK,GAAI,IAAI,MAAM,qBAA0C,CAAC;AAsE3E,wBAAgB,YAAY,SAI3B;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,QAwBlE;AAED,wBAAsB,YAAY,kBA4BjC"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../src/lib/ui.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGrD,eAAO,MAAM,gBAAgB,SAAmD,CAAC;AACjF,eAAO,MAAM,OAAO,mBAAsD,CAAC;AAM3E,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAIzD;AAED,wBAAgB,YAAY,IAAI,IAAI,CAKnC;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAElD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAqCzD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAO/D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAQlE;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAG7D;AAED,wBAAgB,WAAW,IAAI,IAAI,CAIlC"}
@@ -1,124 +1,88 @@
1
1
  import chalk from "chalk";
2
2
  import ora from "ora";
3
- import { stepLabels, stepOrder } from "./constants.js";
4
- import { hasReachedStep } from "./state.js";
5
- export const spinner = ora().start();
6
- export const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
7
- const cleanLogo = `
8
-
9
- █████╗ █████╗
10
- ██╔══██╗ ██╔══██╗
11
- ███████║ ╚█████╔╝
12
- ██╔══██║ ██╔══██╗
13
- ██║ ██║ ╚█████╔╝
14
- ╚═╝ ╚═╝ ╚════╝
15
-
16
- A8
17
-
18
- Authenik8 CLI
19
- Build Faster
20
- More , Secure
21
- `;
22
- const glitchFrames = [
23
- `
24
- █████╗ █████╗
25
- ██╔══██╗ ██▒▒▒▒██
26
- ███████║ ╚█████╔╝
27
- ██╔══██║ ██▒▒▒▒██
28
- ██║ ██║ ╚█████╔╝
29
- ╚═╝ ╚═╝ ╚════╝
30
-
31
- A8
32
- Authenik8 CLI
33
-
34
- More
35
- `,
36
- `
37
- ██▓▓██╗ ██▓▓██╗
38
- ██▒▒██╔╝ ██▒▒██╔╝
39
- ██▒▒▒▒██ ╚█████╔╝
40
- ██▓▓██╔╝ ██▒▒██╗
41
- ██▒▒██║ ╚█████╔╝
42
- ╚═════╝ ╚════╝
43
-
44
- A8
45
- Authenik8 CLI
46
- Faster
47
- `,
48
- `
49
- ██▒▒██╗ ██▒▒██╗
50
- ██▓▓██╔╝ ██▓▓██╔╝
51
- ██▒▒▒▒██ ╚█████╔╝
52
- ██▓▓██╔╝ ██▓▓██╗
53
- ██▒▒██║ ╚█████╔╝
54
- ╚═════╝ ╚════╝
55
-
56
- A8
57
- Authenik8 CLI
58
- Build
59
- `,
60
- `
61
- ██▓▓██╗ ██▓▓██╗
62
- ██▒▒██╔╝ ██▒▒██╔╝
63
- ██▒▒▒▒██ ╚█████╔╝
64
- ██▓▓██╔╝ ██▒▒██╗
65
- ██▒▒██║ ╚█████╔╝
66
- ╚═════╝ ╚════╝
67
-
68
- A8
69
- Authenik8 CLI
70
-
71
- `,
72
- ];
3
+ import { stepLabels } from "./constants.js";
4
+ export const animatedProgress = Boolean(process.stderr.isTTY && !process.env.CI);
5
+ export const spinner = ora({ color: "cyan", isEnabled: animatedProgress });
6
+ function stepText(step, detail) {
7
+ return detail ? `${stepLabels[step]} ${chalk.dim(`(${detail})`)}` : stepLabels[step];
8
+ }
9
+ export function formatDuration(durationMs) {
10
+ if (durationMs < 1_000)
11
+ return `${durationMs}ms`;
12
+ if (durationMs < 10_000)
13
+ return `${(durationMs / 1_000).toFixed(1)}s`;
14
+ return `${Math.round(durationMs / 1_000)}s`;
15
+ }
73
16
  export function renderHeader() {
74
- console.log(chalk.cyan.bold("Happy building \nAuthenik8 CLI"));
75
- console.log(chalk.gray("────────────────────"));
17
+ console.log("");
18
+ console.log(`${chalk.bgCyan.black.bold(" AUTHENIK8 ")} ${chalk.bold("create-authenik8-app")}`);
19
+ console.log(chalk.dim(" Secure application scaffolding"));
76
20
  console.log("");
77
21
  }
78
- export function renderStep(current, isProduction) {
79
- console.clear();
22
+ export async function showBootLogo() {
80
23
  renderHeader();
81
- for (const step of stepOrder) {
82
- const label = stepLabels[step];
83
- if (step === "production-configured" && !isProduction) {
84
- continue;
85
- }
86
- if (step === current) {
87
- console.log(chalk.yellow(`⏳ ${label}...`));
88
- break;
89
- }
90
- if (hasReachedStep(current, step)) {
91
- console.log(chalk.green(`✔ ${label}`));
92
- }
93
- else {
94
- console.log(chalk.gray(`○ ${label}`));
95
- }
24
+ }
25
+ export function renderConfiguration(state) {
26
+ const preset = state.authMode === "fullstack"
27
+ ? "Full-stack application"
28
+ : state.authMode === "auth-oauth"
29
+ ? "Express API + OAuth"
30
+ : state.authMode === "auth"
31
+ ? "Express API + email/password"
32
+ : "Express API (JWT only)";
33
+ const database = state.usePrisma
34
+ ? state.database === "postgresql" ? "PostgreSQL" : "SQLite"
35
+ : "No database";
36
+ const oauthProviders = (state.oauthProviders ?? ["google", "github"])
37
+ .map((provider) => provider === "github" ? "GitHub" : "Google")
38
+ .join(" + ");
39
+ const authentication = state.authMode === "base"
40
+ ? "JWT"
41
+ : state.authMode === "auth"
42
+ ? "Email and password"
43
+ : oauthProviders ? `Email, password, and ${oauthProviders}` : "Email and password";
44
+ const rows = [
45
+ ["Project", state.projectName],
46
+ ["Preset", preset],
47
+ ["Authentication", authentication],
48
+ ["Database", database],
49
+ ["Package manager", state.packageManager ?? "npm"],
50
+ ["Dependencies", state.installDeps === false ? "Skip installation" : "Install now"],
51
+ ];
52
+ const labelWidth = Math.max(...rows.map(([label]) => label.length));
53
+ console.log(`${chalk.cyan("◆")} ${chalk.bold("Project configuration")}`);
54
+ console.log(chalk.dim("│"));
55
+ for (const [label, value] of rows) {
56
+ // Provider names are public CLI choices; OAuth credentials never enter this state.
57
+ // codeql[js/clear-text-logging]
58
+ console.log(`${chalk.cyan("◇")} ${chalk.dim(label.padEnd(labelWidth))} ${value}`);
96
59
  }
97
- console.log("");
60
+ console.log(chalk.dim(""));
98
61
  }
99
- export async function showBootLogo() {
100
- console.clear();
101
- spinner.text = "Initializing Authenik8 engine...";
102
- console.clear();
103
- console.log(chalk.cyan(cleanLogo));
104
- await sleep(200);
105
- for (let i = 0; i < 5; i++) {
106
- console.clear();
107
- const frame = glitchFrames[Math.floor(Math.random() * glitchFrames.length)];
108
- console.log(chalk.cyan(frame));
109
- await sleep(120 + Math.random() * 120);
62
+ export function startStep(step, detail) {
63
+ const text = stepText(step, detail);
64
+ if (animatedProgress) {
65
+ spinner.start(text);
66
+ }
67
+ else {
68
+ spinner.text = text;
110
69
  }
111
- for (let i = 0; i < 2; i++) {
112
- console.clear();
113
- console.log(chalk.cyan(cleanLogo));
114
- await sleep(180);
115
- console.clear();
116
- console.log(chalk.gray(cleanLogo));
117
- await sleep(120);
70
+ }
71
+ export function completeStep(step, detail) {
72
+ const text = stepText(step, detail);
73
+ if (animatedProgress) {
74
+ spinner.succeed(text);
75
+ return;
118
76
  }
119
- console.clear();
120
- console.log(chalk.cyan.bold(cleanLogo));
121
- await sleep(800);
122
- spinner.succeed("Engine ready");
77
+ console.log(`${chalk.green("◇")} ${text}`);
78
+ }
79
+ export function skipStep(step, reason) {
80
+ spinner.stop();
81
+ console.log(`${chalk.dim("◇")} ${stepLabels[step]} ${chalk.dim(`(${reason})`)}`);
82
+ }
83
+ export function finishSteps() {
84
+ spinner.stop();
85
+ console.log(chalk.dim("│"));
86
+ console.log(`${chalk.green("└")} ${chalk.green.bold("Scaffold complete")}`);
123
87
  }
124
88
  //# sourceMappingURL=ui.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../src/lib/ui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../src/lib/ui.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"configurePrisma.d.ts","sourceRoot":"","sources":["../../../src/steps/configurePrisma.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAIhD,wBAAsB,eAAe,CACnC,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CA6Ef"}
1
+ {"version":3,"file":"configurePrisma.d.ts","sourceRoot":"","sources":["../../../src/steps/configurePrisma.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AA4ChD,wBAAsB,eAAe,CACnC,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAmIf"}
@@ -1,22 +1,69 @@
1
1
  import fs from "fs-extra";
2
2
  import path from "path";
3
- import { spinner } from "../lib/ui.js";
3
+ import { PRISMA_VERSION } from "../lib/constants.js";
4
4
  import { exitForInterrupt } from "../lib/process.js";
5
+ import { configureSigningKeys } from "../utils/jwk.js";
6
+ const oauthIdentityModel = `
7
+
8
+ model IdentityProvider {
9
+ id String @id @default(uuid())
10
+ userId String
11
+ provider String
12
+ providerId String
13
+
14
+ user User @relation(fields: [userId], references: [id], onDelete: Cascade)
15
+
16
+ createdAt DateTime @default(now())
17
+ updatedAt DateTime @updatedAt
18
+
19
+ @@unique([provider, providerId])
20
+ @@unique([userId, provider])
21
+ }
22
+ `;
23
+ function addOAuthIdentityModels(schema) {
24
+ return schema
25
+ .replace(/^ password String$/m, " password String?")
26
+ .replace(/^ sessions Session\[\]$/m, " sessions Session[]\n identityProviders IdentityProvider[]")
27
+ .replace(/\s*$/, oauthIdentityModel);
28
+ }
29
+ async function removeUnusedPostgresService(targetDir) {
30
+ const composePath = path.join(targetDir, "docker-compose.yml");
31
+ if (!(await fs.pathExists(composePath)))
32
+ return;
33
+ const compose = (await fs.readFile(composePath, "utf-8")).replace(/\r\n/g, "\n");
34
+ const redisOnly = compose
35
+ .replace(/\n postgres:\n[\s\S]*?(?=\nvolumes:\n)/, "\n")
36
+ .replace(/\n postgres-data:\s*(?=\n|$)/, "");
37
+ await fs.writeFile(composePath, redisOnly);
38
+ }
5
39
  export async function configurePrisma(state, targetDir, templateRoot) {
40
+ if (state.authMode === "fullstack") {
41
+ await configureSigningKeys(targetDir, state.projectName);
42
+ return;
43
+ }
6
44
  const pkgPath = path.join(targetDir, "package.json");
7
45
  const pkg = await fs.readJson(pkgPath);
46
+ if (state.database !== "postgresql") {
47
+ await removeUnusedPostgresService(targetDir);
48
+ }
8
49
  pkg.dependencies = {
9
50
  ...pkg.dependencies,
10
51
  ioredis: "^5.8.1",
11
- // redis-server:"^1.2.2",
12
52
  };
13
53
  if (state.usePrisma) {
14
- spinner.start("Adding Prisma setup...");
15
54
  try {
16
55
  const dbType = state.database === "postgresql" ? "postgresql" : "sqlite";
17
56
  const prismaTemplatePath = path.join(templateRoot, `prisma/${dbType}`);
18
57
  await fs.copy(path.join(prismaTemplatePath, "schema.prisma"), path.join(targetDir, "prisma/schema.prisma"));
58
+ if (state.authMode === "auth-oauth") {
59
+ const schemaPath = path.join(targetDir, "prisma/schema.prisma");
60
+ const schema = await fs.readFile(schemaPath, "utf-8");
61
+ await fs.writeFile(schemaPath, addOAuthIdentityModels(schema));
62
+ }
63
+ await fs.copy(path.join(prismaTemplatePath, "prisma.config.ts"), path.join(targetDir, "prisma.config.ts"));
64
+ await fs.copy(path.join(prismaTemplatePath, "client.ts"), path.join(targetDir, "src/prisma/client.ts"));
19
65
  await fs.copy(path.join(prismaTemplatePath, ".env.example"), path.join(targetDir, ".env"));
66
+ await fs.copy(path.join(prismaTemplatePath, ".env.example"), path.join(targetDir, ".env.example"));
20
67
  const providers = state.authMode === "auth-oauth"
21
68
  ? (state.oauthProviders?.length ? state.oauthProviders : ["google", "github"])
22
69
  : [];
@@ -39,24 +86,51 @@ export async function configurePrisma(state, targetDir, templateRoot) {
39
86
  }
40
87
  pkg.dependencies = {
41
88
  ...pkg.dependencies,
42
- "@prisma/client": "5.22.0",
89
+ "@prisma/client": PRISMA_VERSION,
90
+ [dbType === "postgresql"
91
+ ? "@prisma/adapter-pg"
92
+ : "@prisma/adapter-better-sqlite3"]: PRISMA_VERSION,
43
93
  };
94
+ delete pkg.dependencies[dbType === "postgresql"
95
+ ? "@prisma/adapter-better-sqlite3"
96
+ : "@prisma/adapter-pg"];
44
97
  pkg.devDependencies = {
45
98
  ...pkg.devDependencies,
46
- prisma: "5.22.0",
99
+ prisma: PRISMA_VERSION,
47
100
  };
101
+ pkg.engines = { ...pkg.engines, node: "^20.19 || ^22.12 || >=24" };
48
102
  pkg.scripts = {
49
103
  ...pkg.scripts,
50
104
  "prisma:generate": "prisma generate",
51
- "prisma:migrate": "prisma migrate dev",
105
+ "prisma:migrate": "prisma migrate dev && prisma generate",
52
106
  };
53
- spinner.succeed(`Prisma (${dbType}) configured`);
54
107
  }
55
108
  catch (err) {
56
- spinner.fail("Failed to setup Prisma");
57
- exitForInterrupt(err);
109
+ await exitForInterrupt(err);
110
+ throw err;
111
+ }
112
+ }
113
+ else {
114
+ pkg.engines = { ...pkg.engines, node: "^20.19 || ^22.12 || >=24" };
115
+ const templateEnvPath = path.join(targetDir, "src/.env.example");
116
+ if (await fs.pathExists(templateEnvPath)) {
117
+ await fs.move(templateEnvPath, path.join(targetDir, ".env.example"), { overwrite: true });
118
+ await fs.copy(path.join(targetDir, ".env.example"), path.join(targetDir, ".env"));
119
+ }
120
+ const readmePath = path.join(targetDir, "README.md");
121
+ if (await fs.pathExists(readmePath)) {
122
+ const readme = (await fs.readFile(readmePath, "utf-8"))
123
+ .replace(/\r\n/g, "\n")
124
+ .replaceAll("npm run prisma:migrate\n", "")
125
+ .replace(/^DATABASE_URL=.*\n/gm, "")
126
+ .replace(/^- `DATABASE_URL`:.*\n/gm, "")
127
+ .replace(/^`Prisma Client did not initialize`:.*\n?/gm, "")
128
+ .replace(/^`DATABASE_URL is wrong`:.*\n?/gm, "")
129
+ .replace(", run `npx prisma migrate deploy` for production databases", "");
130
+ await fs.writeFile(readmePath, readme);
58
131
  }
59
132
  }
60
133
  await fs.writeJson(pkgPath, pkg, { spaces: 2 });
134
+ await configureSigningKeys(targetDir, state.projectName);
61
135
  }
62
136
  //# sourceMappingURL=configurePrisma.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"configurePrisma.js","sourceRoot":"","sources":["../../../src/steps/configurePrisma.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configurePrisma.js","sourceRoot":"","sources":["../../../src/steps/configurePrisma.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { CliState } from "../lib/types.js";
2
+ import type { PackageManager } from "../lib/types.js";
2
3
  export declare function resolveTemplateName(authMode: string): string;
3
- export declare function configurePackageJson(targetDir: string, usePrisma: boolean): void;
4
+ export declare function configurePackageJson(targetDir: string, usePrisma: boolean, packageManager?: PackageManager): void;
4
5
  export declare function createProject(state: CliState, targetDir: string, templateRoot: string): Promise<void>;
5
6
  //# sourceMappingURL=createProject.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createProject.d.ts","sourceRoot":"","sources":["../../../src/steps/createProject.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAKhD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAI5D;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,CAgBhF;AAmMD,wBAAsB,aAAa,CACjC,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAiBf"}
1
+ {"version":3,"file":"createProject.d.ts","sourceRoot":"","sources":["../../../src/steps/createProject.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAMtD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAK5D;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,OAAO,EAClB,cAAc,GAAE,cAAsB,GACrC,IAAI,CA6DN;AAkPD,wBAAsB,aAAa,CACjC,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CA6Df"}