create-authenik8-app 2.4.14 → 2.4.15

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 (227) hide show
  1. package/README.md +34 -516
  2. package/dist/src/bin/cli.d.ts +3 -0
  3. package/dist/src/bin/cli.d.ts.map +1 -0
  4. package/dist/src/bin/cli.js +112 -0
  5. package/dist/src/bin/cli.js.map +1 -0
  6. package/dist/src/bin/index.js +108 -23
  7. package/dist/src/bin/index.js.map +1 -1
  8. package/dist/src/commands/add/apply.d.ts +6 -0
  9. package/dist/src/commands/add/apply.d.ts.map +1 -0
  10. package/dist/src/commands/add/apply.js +123 -0
  11. package/dist/src/commands/add/apply.js.map +1 -0
  12. package/dist/src/commands/add/ci.d.ts +6 -0
  13. package/dist/src/commands/add/ci.d.ts.map +1 -0
  14. package/dist/src/commands/add/ci.js +108 -0
  15. package/dist/src/commands/add/ci.js.map +1 -0
  16. package/dist/src/commands/add/context.d.ts +5 -0
  17. package/dist/src/commands/add/context.d.ts.map +1 -0
  18. package/dist/src/commands/add/context.js +19 -0
  19. package/dist/src/commands/add/context.js.map +1 -0
  20. package/dist/src/commands/add/diff.d.ts +4 -0
  21. package/dist/src/commands/add/diff.d.ts.map +1 -0
  22. package/dist/src/commands/add/diff.js +114 -0
  23. package/dist/src/commands/add/diff.js.map +1 -0
  24. package/dist/src/commands/add/index.d.ts +6 -0
  25. package/dist/src/commands/add/index.d.ts.map +1 -0
  26. package/dist/src/commands/add/index.js +61 -0
  27. package/dist/src/commands/add/index.js.map +1 -0
  28. package/dist/src/commands/add/output.d.ts +5 -0
  29. package/dist/src/commands/add/output.d.ts.map +1 -0
  30. package/dist/src/commands/add/output.js +58 -0
  31. package/dist/src/commands/add/output.js.map +1 -0
  32. package/dist/src/commands/add/plan.d.ts +6 -0
  33. package/dist/src/commands/add/plan.d.ts.map +1 -0
  34. package/dist/src/commands/add/plan.js +93 -0
  35. package/dist/src/commands/add/plan.js.map +1 -0
  36. package/dist/src/commands/add/registry.d.ts +4 -0
  37. package/dist/src/commands/add/registry.d.ts.map +1 -0
  38. package/dist/src/commands/add/registry.js +37 -0
  39. package/dist/src/commands/add/registry.js.map +1 -0
  40. package/dist/src/commands/add/types.d.ts +37 -0
  41. package/dist/src/commands/add/types.d.ts.map +1 -0
  42. package/dist/src/commands/add/types.js +2 -0
  43. package/dist/src/commands/add/types.js.map +1 -0
  44. package/dist/src/commands/doctor/checks.d.ts +3 -0
  45. package/dist/src/commands/doctor/checks.d.ts.map +1 -0
  46. package/dist/src/commands/doctor/checks.js +353 -0
  47. package/dist/src/commands/doctor/checks.js.map +1 -0
  48. package/dist/src/commands/doctor/context.d.ts +5 -0
  49. package/dist/src/commands/doctor/context.d.ts.map +1 -0
  50. package/dist/src/commands/doctor/context.js +134 -0
  51. package/dist/src/commands/doctor/context.js.map +1 -0
  52. package/dist/src/commands/doctor/index.d.ts +9 -0
  53. package/dist/src/commands/doctor/index.d.ts.map +1 -0
  54. package/dist/src/commands/doctor/index.js +80 -0
  55. package/dist/src/commands/doctor/index.js.map +1 -0
  56. package/dist/src/commands/doctor/output.d.ts +4 -0
  57. package/dist/src/commands/doctor/output.d.ts.map +1 -0
  58. package/dist/src/commands/doctor/output.js +53 -0
  59. package/dist/src/commands/doctor/output.js.map +1 -0
  60. package/dist/src/commands/doctor/postGeneration.d.ts +7 -0
  61. package/dist/src/commands/doctor/postGeneration.d.ts.map +1 -0
  62. package/dist/src/commands/doctor/postGeneration.js +22 -0
  63. package/dist/src/commands/doctor/postGeneration.js.map +1 -0
  64. package/dist/src/commands/doctor/services.d.ts +5 -0
  65. package/dist/src/commands/doctor/services.d.ts.map +1 -0
  66. package/dist/src/commands/doctor/services.js +80 -0
  67. package/dist/src/commands/doctor/services.js.map +1 -0
  68. package/dist/src/commands/doctor/types.d.ts +69 -0
  69. package/dist/src/commands/doctor/types.d.ts.map +1 -0
  70. package/dist/src/commands/doctor/types.js +2 -0
  71. package/dist/src/commands/doctor/types.js.map +1 -0
  72. package/dist/src/commands/upgrade/context.d.ts +5 -0
  73. package/dist/src/commands/upgrade/context.d.ts.map +1 -0
  74. package/dist/src/commands/upgrade/context.js +57 -0
  75. package/dist/src/commands/upgrade/context.js.map +1 -0
  76. package/dist/src/commands/upgrade/index.d.ts +7 -0
  77. package/dist/src/commands/upgrade/index.d.ts.map +1 -0
  78. package/dist/src/commands/upgrade/index.js +35 -0
  79. package/dist/src/commands/upgrade/index.js.map +1 -0
  80. package/dist/src/commands/upgrade/migrations.d.ts +4 -0
  81. package/dist/src/commands/upgrade/migrations.d.ts.map +1 -0
  82. package/dist/src/commands/upgrade/migrations.js +22 -0
  83. package/dist/src/commands/upgrade/migrations.js.map +1 -0
  84. package/dist/src/commands/upgrade/output.d.ts +4 -0
  85. package/dist/src/commands/upgrade/output.d.ts.map +1 -0
  86. package/dist/src/commands/upgrade/output.js +52 -0
  87. package/dist/src/commands/upgrade/output.js.map +1 -0
  88. package/dist/src/commands/upgrade/plan.d.ts +3 -0
  89. package/dist/src/commands/upgrade/plan.d.ts.map +1 -0
  90. package/dist/src/commands/upgrade/plan.js +119 -0
  91. package/dist/src/commands/upgrade/plan.js.map +1 -0
  92. package/dist/src/commands/upgrade/types.d.ts +48 -0
  93. package/dist/src/commands/upgrade/types.d.ts.map +1 -0
  94. package/dist/src/commands/upgrade/types.js +2 -0
  95. package/dist/src/commands/upgrade/types.js.map +1 -0
  96. package/dist/src/lib/args.d.ts +21 -0
  97. package/dist/src/lib/args.d.ts.map +1 -1
  98. package/dist/src/lib/args.js +119 -1
  99. package/dist/src/lib/args.js.map +1 -1
  100. package/dist/src/lib/constants.d.ts +1 -1
  101. package/dist/src/lib/constants.d.ts.map +1 -1
  102. package/dist/src/lib/constants.js +3 -1
  103. package/dist/src/lib/constants.js.map +1 -1
  104. package/dist/src/lib/expressOAuth.d.ts +10 -0
  105. package/dist/src/lib/expressOAuth.d.ts.map +1 -0
  106. package/dist/src/lib/expressOAuth.js +164 -0
  107. package/dist/src/lib/expressOAuth.js.map +1 -0
  108. package/dist/src/lib/interruption.d.ts +14 -0
  109. package/dist/src/lib/interruption.d.ts.map +1 -0
  110. package/dist/src/lib/interruption.js +16 -0
  111. package/dist/src/lib/interruption.js.map +1 -0
  112. package/dist/src/lib/nonInteractive.d.ts +8 -0
  113. package/dist/src/lib/nonInteractive.d.ts.map +1 -0
  114. package/dist/src/lib/nonInteractive.js +111 -0
  115. package/dist/src/lib/nonInteractive.js.map +1 -0
  116. package/dist/src/lib/oauth.d.ts +9 -0
  117. package/dist/src/lib/oauth.d.ts.map +1 -0
  118. package/dist/src/lib/oauth.js +62 -0
  119. package/dist/src/lib/oauth.js.map +1 -0
  120. package/dist/src/lib/onboarding.d.ts +8 -0
  121. package/dist/src/lib/onboarding.d.ts.map +1 -0
  122. package/dist/src/lib/onboarding.js +35 -0
  123. package/dist/src/lib/onboarding.js.map +1 -0
  124. package/dist/src/lib/packageManagerCommands.d.ts +11 -0
  125. package/dist/src/lib/packageManagerCommands.d.ts.map +1 -0
  126. package/dist/src/lib/packageManagerCommands.js +34 -0
  127. package/dist/src/lib/packageManagerCommands.js.map +1 -0
  128. package/dist/src/lib/process.d.ts.map +1 -1
  129. package/dist/src/lib/process.js +9 -0
  130. package/dist/src/lib/process.js.map +1 -1
  131. package/dist/src/lib/projectManifest.d.ts +67 -0
  132. package/dist/src/lib/projectManifest.d.ts.map +1 -0
  133. package/dist/src/lib/projectManifest.js +134 -0
  134. package/dist/src/lib/projectManifest.js.map +1 -0
  135. package/dist/src/lib/release.d.ts +9 -0
  136. package/dist/src/lib/release.d.ts.map +1 -0
  137. package/dist/src/lib/release.js +48 -0
  138. package/dist/src/lib/release.js.map +1 -0
  139. package/dist/src/lib/rootCommand.d.ts +15 -0
  140. package/dist/src/lib/rootCommand.d.ts.map +1 -0
  141. package/dist/src/lib/rootCommand.js +17 -0
  142. package/dist/src/lib/rootCommand.js.map +1 -0
  143. package/dist/src/lib/schemas.d.ts +15 -6
  144. package/dist/src/lib/schemas.d.ts.map +1 -1
  145. package/dist/src/lib/schemas.js +8 -1
  146. package/dist/src/lib/schemas.js.map +1 -1
  147. package/dist/src/lib/semver.d.ts +10 -0
  148. package/dist/src/lib/semver.d.ts.map +1 -0
  149. package/dist/src/lib/semver.js +51 -0
  150. package/dist/src/lib/semver.js.map +1 -0
  151. package/dist/src/lib/types.d.ts +5 -1
  152. package/dist/src/lib/types.d.ts.map +1 -1
  153. package/dist/src/steps/configurePrisma.d.ts.map +1 -1
  154. package/dist/src/steps/configurePrisma.js +18 -23
  155. package/dist/src/steps/configurePrisma.js.map +1 -1
  156. package/dist/src/steps/configureReadme.d.ts +4 -0
  157. package/dist/src/steps/configureReadme.d.ts.map +1 -0
  158. package/dist/src/steps/configureReadme.js +22 -0
  159. package/dist/src/steps/configureReadme.js.map +1 -0
  160. package/dist/src/steps/createProject.d.ts.map +1 -1
  161. package/dist/src/steps/createProject.js +16 -170
  162. package/dist/src/steps/createProject.js.map +1 -1
  163. package/dist/src/steps/finalSetup.d.ts +3 -2
  164. package/dist/src/steps/finalSetup.d.ts.map +1 -1
  165. package/dist/src/steps/finalSetup.js +14 -9
  166. package/dist/src/steps/finalSetup.js.map +1 -1
  167. package/dist/src/steps/installDeps.d.ts +1 -0
  168. package/dist/src/steps/installDeps.d.ts.map +1 -1
  169. package/dist/src/steps/installDeps.js +11 -0
  170. package/dist/src/steps/installDeps.js.map +1 -1
  171. package/dist/src/steps/prompts.d.ts.map +1 -1
  172. package/dist/src/steps/prompts.js +32 -13
  173. package/dist/src/steps/prompts.js.map +1 -1
  174. package/dist/src/utils/output.d.ts.map +1 -1
  175. package/dist/src/utils/output.js +23 -11
  176. package/dist/src/utils/output.js.map +1 -1
  177. package/package.json +5 -4
  178. package/templates/express-auth/README.md +21 -12
  179. package/templates/express-auth/package.json +11 -7
  180. package/templates/express-auth/src/config/redis.ts +109 -0
  181. package/templates/express-auth/src/server.ts +2 -0
  182. package/templates/express-auth+/README.md +25 -18
  183. package/templates/express-auth+/package.json +11 -7
  184. package/templates/express-auth+/src/auth/auth.ts +2 -0
  185. package/templates/express-auth+/src/auth/controllers/password.controller.ts +12 -1
  186. package/templates/express-auth+/src/auth/routes/password.route.ts +1 -0
  187. package/templates/express-auth+/src/config/redis.ts +109 -0
  188. package/templates/express-auth+/src/utils/security.ts +12 -0
  189. package/templates/express-base/README.md +21 -12
  190. package/templates/express-base/package.json +11 -8
  191. package/templates/express-base/src/.env.example +1 -1
  192. package/templates/express-base/src/config/redis.ts +109 -0
  193. package/templates/express-base/src/server.ts +2 -0
  194. package/templates/fullstack/.env.example +3 -2
  195. package/templates/fullstack/PRESET_CONTRACT.md +7 -3
  196. package/templates/fullstack/README.md +45 -7
  197. package/templates/fullstack/apps/api/package.json +6 -4
  198. package/templates/fullstack/apps/api/prisma/migrations/20260721000000_init/migration.sql +163 -0
  199. package/templates/fullstack/apps/api/prisma/migrations/migration_lock.toml +3 -0
  200. package/templates/fullstack/apps/api/src/auth/authenik8.ts +13 -4
  201. package/templates/fullstack/apps/api/src/config/env.ts +9 -1
  202. package/templates/fullstack/apps/api/src/config/logger.ts +21 -11
  203. package/templates/fullstack/apps/api/tests/logger.test.ts +43 -0
  204. package/templates/fullstack/apps/web/package.json +3 -1
  205. package/templates/fullstack/apps/web/src/App.tsx +1 -1
  206. package/templates/fullstack/apps/web/src/auth/RouteGuards.tsx +1 -1
  207. package/templates/fullstack/apps/web/src/components/AppShell.tsx +90 -45
  208. package/templates/fullstack/apps/web/src/components/AuthShell.tsx +10 -7
  209. package/templates/fullstack/apps/web/src/components/Page.tsx +6 -3
  210. package/templates/fullstack/apps/web/src/features/projects/ProjectPages.tsx +1 -1
  211. package/templates/fullstack/apps/web/src/main.tsx +13 -6
  212. package/templates/fullstack/apps/web/src/pages/DashboardPage.tsx +163 -23
  213. package/templates/fullstack/apps/web/src/pages/StatusPages.tsx +1 -1
  214. package/templates/fullstack/apps/web/src/pages/auth/LoginPage.tsx +93 -17
  215. package/templates/fullstack/apps/web/src/pages/auth/OAuthCallbackPage.tsx +1 -1
  216. package/templates/fullstack/apps/web/src/pages/auth/RecoveryPages.tsx +1 -1
  217. package/templates/fullstack/apps/web/src/pages/auth/RegisterPage.tsx +1 -1
  218. package/templates/fullstack/apps/web/src/pages/auth/VerifyEmailPage.tsx +1 -1
  219. package/templates/fullstack/apps/web/src/styles.css +119 -43
  220. package/templates/fullstack/apps/web/vite.config.ts +12 -0
  221. package/templates/fullstack/docker-compose.yml +2 -2
  222. package/templates/fullstack/gitignore.template +1 -0
  223. package/templates/fullstack/package.json +17 -8
  224. package/templates/fullstack/scripts/run-local.mjs +157 -0
  225. package/templates/prisma/postgresql/.env.example +1 -2
  226. package/templates/prisma/sqlite/.env.example +1 -2
  227. package/templates/prisma/sqlite/client.ts +2 -2
@@ -2,7 +2,8 @@ import fs from "fs-extra";
2
2
  import path from "path";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import { PRISMA_VERSION } from "../lib/constants.js";
5
- const supportedOAuthProviders = ["google", "github"];
5
+ import { configureOAuthEnvironmentFiles, oauthProviders, supportedOAuthProviders, } from "../lib/oauth.js";
6
+ import { renderExpressOAuthFiles } from "../lib/expressOAuth.js";
6
7
  export function resolveTemplateName(authMode) {
7
8
  if (authMode === "fullstack")
8
9
  return "fullstack";
@@ -27,16 +28,16 @@ export function configurePackageJson(targetDir, usePrisma, packageManager = "npm
27
28
  pkg.scripts.dev = `prisma generate && ${currentDev}`;
28
29
  }
29
30
  if (packageManager === "bun") {
30
- pkg.trustedDependencies = ["@prisma/engines", "better-sqlite3", "prisma"];
31
+ pkg.trustedDependencies = ["@prisma/engines", "prisma"];
31
32
  }
32
33
  if (packageManager === "pnpm") {
33
34
  fs.writeFileSync(path.join(targetDir, "pnpm-workspace.yaml"), [
34
35
  "allowBuilds:",
35
36
  ' "@prisma/engines": true',
36
- " better-sqlite3: true",
37
37
  " prisma: true",
38
38
  "overrides:",
39
- ' "@hono/node-server": "1.19.13"',
39
+ ' "find-my-way": "9.7.0"',
40
+ ' valibot: "1.4.2"',
40
41
  "",
41
42
  ].join("\n"));
42
43
  }
@@ -44,20 +45,18 @@ export function configurePackageJson(targetDir, usePrisma, packageManager = "npm
44
45
  pkg.allowScripts = {
45
46
  [`prisma@${PRISMA_VERSION}`]: true,
46
47
  [`@prisma/engines@${PRISMA_VERSION}`]: true,
47
- ...(pkg.dependencies?.["@prisma/adapter-better-sqlite3"]
48
- ? { "better-sqlite3": true }
49
- : {}),
50
48
  };
51
49
  }
52
50
  }
53
51
  else {
54
- for (const scriptName of ["postinstall", "prisma:generate", "prisma:migrate"]) {
52
+ for (const scriptName of ["postinstall", "db:migrate", "prisma:generate", "prisma:migrate"]) {
55
53
  if (pkg.scripts[scriptName]?.includes("prisma")) {
56
54
  delete pkg.scripts[scriptName];
57
55
  }
58
56
  }
59
57
  delete pkg.dependencies?.["@prisma/client"];
60
58
  delete pkg.dependencies?.["@prisma/adapter-pg"];
59
+ delete pkg.dependencies?.["@prisma/adapter-libsql"];
61
60
  delete pkg.dependencies?.["@prisma/adapter-better-sqlite3"];
62
61
  delete pkg.devDependencies?.prisma;
63
62
  delete pkg.trustedDependencies;
@@ -66,170 +65,17 @@ export function configurePackageJson(targetDir, usePrisma, packageManager = "npm
66
65
  fs.writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\n`);
67
66
  }
68
67
  function resolveOAuthProviders(state) {
69
- const selected = state.oauthProviders?.filter((provider) => supportedOAuthProviders.includes(provider));
70
- return selected?.length ? selected : ["google", "github"];
68
+ const selected = supportedOAuthProviders(state.oauthProviders);
69
+ return selected.length ? selected : [...oauthProviders];
71
70
  }
72
71
  function providerTitle(provider) {
73
72
  return provider === "github" ? "GitHub" : "Google";
74
73
  }
75
- function providerEnvBlock(provider) {
76
- const upper = provider.toUpperCase();
77
- return `${provider}: {
78
- clientId: requiredEnv("${upper}_CLIENT_ID"),
79
- clientSecret: requiredEnv("${upper}_CLIENT_SECRET"),
80
- redirectUri: requiredEnv("${upper}_REDIRECT_URI"),
81
- },`;
82
- }
83
- function providerControllerBlock(provider) {
84
- return `async ${provider}Redirect(req: Request, res: Response) {
85
- try {
86
- await requireProvider("${provider}", res)?.redirect(req, res);
87
- } catch {
88
- if (!res.headersSent) res.status(500).json({ error: "OAuth redirect failed" });
89
- }
90
- },
91
-
92
- async ${provider}Callback(req: Request, res: Response) {
93
- try {
94
- const provider = requireProvider("${provider}", res);
95
- if (!provider) return;
96
-
97
- const result = await provider.handleCallback(req);
98
- let response = result;
99
-
100
- if (result.mode === "link" && !result.identity) {
101
- if (!result.userId) {
102
- return res.status(400).json({ error: "Authenticated user is required to link a provider" });
103
- }
104
-
105
- await identityAdapter.linkProvider(
106
- result.userId,
107
- result.profile.provider,
108
- result.profile.providerId,
109
- );
110
- response = {
111
- ...result,
112
- identity: { type: "LINK_PROVIDER", success: true },
113
- };
114
- }
115
-
116
- if (
117
- result.identity?.type === "LINK_REQUIRED" ||
118
- result.identity?.type === "EXISTING_EMAIL_CONFLICT"
119
- ) {
120
- return res.status(409).json({ provider: "${provider}", ...result });
121
- }
122
-
123
- if (result.identity?.type === "INVALID_LINK_REQUEST") {
124
- return res.status(400).json({ provider: "${provider}", ...result });
125
- }
126
-
127
- if (result.mode === "login" && (!result.accessToken || !result.refreshToken)) {
128
- throw new Error("OAuth callback did not return an application session");
129
- }
130
-
131
- res.json({ provider: "${provider}", ...response });
132
- } catch (error) {
133
- res.status(400).json({
134
- error: error instanceof Error ? error.message : "OAuth callback failed",
135
- });
136
- }
137
- },
138
-
139
- async ${provider}Link(req: Request, res: Response) {
140
- try {
141
- await requireProvider("${provider}", res)?.redirect(req, res, "link");
142
- } catch {
143
- if (!res.headersSent) res.status(500).json({ error: "OAuth link redirect failed" });
144
- }
145
- },`;
146
- }
147
- function providerRoutesBlock(provider) {
148
- return `router.get("/${provider}", oauthController.${provider}Redirect);
149
- router.get("/${provider}/callback", oauthController.${provider}Callback);
150
- router.get("/${provider}/link", authMiddleware, oauthController.${provider}Link);`;
151
- }
152
74
  async function writeProviderSpecificOAuthFiles(targetDir, providers) {
153
- const authPath = path.join(targetDir, "src/auth/auth.ts");
154
- const routesPath = path.join(targetDir, "src/auth/routes/oauth.routes.ts");
155
- const controllerPath = path.join(targetDir, "src/auth/controllers/oauth.controller.ts");
156
75
  const readmePath = path.join(targetDir, "README.md");
157
- const providerUnion = providers.map((provider) => `"${provider}"`).join(" | ");
158
- await fs.writeFile(authPath, `import { createAuthenik8 } from "authenik8-core";
159
- import dotenv from "dotenv";
160
- import { agentIdentityConfig, authJwkConfig, requiredEnv, requiredSecret } from "../utils/security";
161
- import { identityAdapter } from "./identity.adapter";
162
-
163
- dotenv.config();
164
-
165
- let authInstance: any;
166
-
167
- function oauthConfig() {
168
- return {
169
- ${providers.map(providerEnvBlock).join("\n ")}
170
- };
171
- }
172
-
173
- export async function initAuth() {
174
- authInstance= await createAuthenik8({
175
- jwt: authJwkConfig(),
176
- refreshSecret: requiredSecret("REFRESH_SECRET"),
177
- agent: agentIdentityConfig(),
178
- oauth: oauthConfig(),
179
- identityAdapter,
180
- });
181
-
182
- }
183
- export function getAuth() {
184
- if (!authInstance) {
185
- throw new Error("Auth not initialized. Call initAuth() first.");
186
- }
187
-
188
- return authInstance;
189
- }
190
-
191
- export const auth = new Proxy(
192
- {},
193
- {
194
- get(_target, property) {
195
- return getAuth()[property as keyof ReturnType<typeof getAuth>];
196
- },
197
- },
198
- ) as any;
199
- `);
200
- await fs.writeFile(routesPath, `import express from "express";
201
- import { authMiddleware } from "../middleware/auth.middleware";
202
- import { oauthController } from "../controllers/oauth.controller";
203
-
204
- const router = express.Router();
205
-
206
- ${providers.map(providerRoutesBlock).join("\n")}
207
-
208
- export default router;
209
- `);
210
- await fs.writeFile(controllerPath, `import { Request, Response } from "express";
211
- import { getAuth } from "../auth";
212
- import { identityAdapter } from "../identity.adapter";
213
-
214
- type OAuthProvider = ${providerUnion};
215
-
216
- function requireProvider(provider: OAuthProvider, res: Response) {
217
- const oauthProvider = getAuth().oauth?.[provider];
218
-
219
- if (!oauthProvider) {
220
- res.status(404).json({ error: \`\${provider} OAuth is not configured\` });
221
- return undefined;
222
- }
223
-
224
- return oauthProvider;
225
- }
226
-
227
- export const oauthController = {
228
- ${providers.map(providerControllerBlock).join("\n\n ")}
229
- };
230
- `);
76
+ const rendered = renderExpressOAuthFiles(providers);
77
+ await Promise.all(Object.entries(rendered).map(([relativePath, source]) => fs.writeFile(path.join(targetDir, relativePath), source)));
231
78
  if (await fs.pathExists(readmePath)) {
232
- const selectedList = providers.join(",");
233
79
  const routeList = providers
234
80
  .flatMap((provider) => [
235
81
  `GET /auth/${provider}`,
@@ -242,7 +88,6 @@ export const oauthController = {
242
88
  .map((provider) => `${providerTitle(provider)} callback URL:\n\n\`\`\`text\nhttp://localhost:3000/auth/${provider}/callback\n\`\`\``)
243
89
  .join("\n\n");
244
90
  let readme = (await fs.readFile(readmePath, "utf-8")).replace(/\r\n/g, "\n");
245
- readme = readme.replace("AUTHENIK8_OAUTH_PROVIDERS=google,github", `AUTHENIK8_OAUTH_PROVIDERS=${selectedList}`);
246
91
  readme = readme.replace(/GOOGLE_CLIENT_ID=your-google-client-id\nGOOGLE_CLIENT_SECRET=your-google-client-secret\nGOOGLE_REDIRECT_URI=http:\/\/localhost:3000\/auth\/google\/callback\nGITHUB_CLIENT_ID=your-github-client-id\nGITHUB_CLIENT_SECRET=your-github-client-secret\nGITHUB_REDIRECT_URI=http:\/\/localhost:3000\/auth\/github\/callback/, providers
247
92
  .flatMap((provider) => {
248
93
  const upper = provider.toUpperCase();
@@ -259,11 +104,11 @@ export const oauthController = {
259
104
  if (!providers.includes("google")) {
260
105
  readme = readme.replace(/\n- `GOOGLE_REDIRECT_URI`: must exactly match the callback URL configured in Google Cloud\./, "");
261
106
  readme = readme.replace(/\n\nexport function loginWithGoogle\(\) {\n window\.location\.href = "http:\/\/localhost:3000\/auth\/google";\n}/, '\n\nexport function loginWithGitHub() {\n window.location.href = "http://localhost:3000/auth/github";\n}');
262
- readme = readme.replace(/\n\n`google OAuth is not configured`: add `google` to `AUTHENIK8_OAUTH_PROVIDERS` and set the Google env vars, or use only the enabled provider route\./, "");
107
+ readme = readme.replace(/\n\n`Google OAuth is not configured`: set the Google client ID, secret, and callback URL in `\.env`\./, "");
263
108
  }
264
109
  if (!providers.includes("github")) {
265
110
  readme = readme.replace(/\n- `GITHUB_REDIRECT_URI`: must exactly match the callback URL configured in GitHub OAuth Apps\./, "");
266
- readme = readme.replace(/\n\n`github OAuth is not configured`: add `github` to `AUTHENIK8_OAUTH_PROVIDERS` and set the GitHub env vars, or use only the enabled provider route\./, "");
111
+ readme = readme.replace(/\n\n`GitHub OAuth is not configured`: set the GitHub client ID, secret, and callback URL in `\.env`\./, "");
267
112
  }
268
113
  if (providers.includes("github") && !providers.includes("google")) {
269
114
  readme = readme.replace("For OAuth, redirect the browser to `/auth/google` or `/auth/github`.", "For OAuth, redirect the browser to `/auth/github`.");
@@ -299,8 +144,9 @@ export async function createProject(state, targetDir, templateRoot) {
299
144
  if (state.authMode === "fullstack") {
300
145
  await fs.copy(path.join(templatePath, ".env.example"), path.join(stageDir, ".env"));
301
146
  const providers = state.oauthProviders === undefined
302
- ? [...supportedOAuthProviders]
303
- : resolveOAuthProviders(state).filter((provider) => state.oauthProviders?.includes(provider));
147
+ ? [...oauthProviders]
148
+ : supportedOAuthProviders(state.oauthProviders);
149
+ await configureOAuthEnvironmentFiles(stageDir, providers);
304
150
  await fs.writeFile(path.join(stageDir, "apps/web/src/auth/providers.ts"), `export type OAuthProvider = "google" | "github";\n\nexport const enabledOAuthProviders: readonly OAuthProvider[] = ${JSON.stringify(providers)};\n`);
305
151
  }
306
152
  if (state.authMode !== "fullstack") {
@@ -1 +1 @@
1
- {"version":3,"file":"createProject.js","sourceRoot":"","sources":["../../../src/steps/createProject.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createProject.js","sourceRoot":"","sources":["../../../src/steps/createProject.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
+ import type { PackageManager } from "../lib/types.js";
1
2
  export declare function hasBun(): boolean;
2
3
  export declare function resolveRuntime(runtime: unknown): "node" | "bun";
3
4
  export declare function createPm2Config(targetDir: string, projectName: string, runtime: "node" | "bun", productionEntry?: string): void;
4
- export declare function configureProduction(targetDir: string, projectName: string, runtime: "node" | "bun"): Promise<void>;
5
+ export declare function configureProduction(targetDir: string, projectName: string, runtime: "node" | "bun", packageManager?: PackageManager): Promise<void>;
5
6
  export declare function initGit(targetDir: string): Promise<boolean>;
6
- export declare function appendProductionReadme(targetDir: string, projectName: string): void;
7
+ export declare function appendProductionReadme(targetDir: string, projectName: string, packageManager?: PackageManager): void;
7
8
  //# sourceMappingURL=finalSetup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"finalSetup.d.ts","sourceRoot":"","sources":["../../../src/steps/finalSetup.ts"],"names":[],"mappings":"AAWA,wBAAgB,MAAM,IAAI,OAAO,CAEhC;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAO/D;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GAAG,KAAK,EACvB,eAAe,SAAmB,GACjC,IAAI,CAsCN;AAED,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GAAG,KAAK,GACtB,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED,wBAAsB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAejE;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAuBnF"}
1
+ {"version":3,"file":"finalSetup.d.ts","sourceRoot":"","sources":["../../../src/steps/finalSetup.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAItD,wBAAgB,MAAM,IAAI,OAAO,CAEhC;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAO/D;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GAAG,KAAK,EACvB,eAAe,SAAmB,GACjC,IAAI,CAsCN;AAED,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GAAG,KAAK,EACvB,cAAc,GAAE,cAAsB,GACrC,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED,wBAAsB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAejE;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,cAAc,GAAE,cAAsB,GACrC,IAAI,CA0BN"}
@@ -1,6 +1,7 @@
1
1
  import fs from "fs-extra";
2
2
  import path from "path";
3
3
  import { commandExists, run, getCommand, exitForInterrupt, } from "../lib/process.js";
4
+ import { binaryCommand, productionReadmeCommands, runScriptCommand, } from "../lib/packageManagerCommands.js";
4
5
  const PM2_VERSION = "^5.4.2";
5
6
  export function hasBun() {
6
7
  return commandExists("bun");
@@ -51,7 +52,7 @@ export function createPm2Config(targetDir, projectName, runtime, productionEntry
51
52
  };`;
52
53
  fs.writeFileSync(configPath, content, "utf-8");
53
54
  }
54
- export async function configureProduction(targetDir, projectName, runtime) {
55
+ export async function configureProduction(targetDir, projectName, runtime, packageManager = "npm") {
55
56
  const pkgPath = path.join(targetDir, "package.json");
56
57
  const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8"));
57
58
  pkg.dependencies["pm2"] = PM2_VERSION;
@@ -59,9 +60,9 @@ export async function configureProduction(targetDir, projectName, runtime) {
59
60
  const productionEntry = String(pkg.scripts.start ?? "node dist/server.js")
60
61
  .replace(/^node\s+/, "")
61
62
  .trim();
62
- pkg.scripts["pm2:start"] = "npm run build && npx pm2 start ecosystem.config.js";
63
- pkg.scripts["pm2:stop"] = `npx pm2 stop ${projectName}`;
64
- pkg.scripts["pm2:logs"] = "npx pm2 logs";
63
+ pkg.scripts["pm2:start"] = `${runScriptCommand(packageManager, "build")} && ${binaryCommand(packageManager, "pm2", "start ecosystem.config.js")}`;
64
+ pkg.scripts["pm2:stop"] = binaryCommand(packageManager, "pm2", `stop ${projectName}`);
65
+ pkg.scripts["pm2:logs"] = binaryCommand(packageManager, "pm2", "logs");
65
66
  fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2));
66
67
  createPm2Config(targetDir, projectName, runtime, productionEntry);
67
68
  }
@@ -82,8 +83,12 @@ export async function initGit(targetDir) {
82
83
  return false;
83
84
  }
84
85
  }
85
- export function appendProductionReadme(targetDir, projectName) {
86
- fs.appendFileSync(path.join(targetDir, "README.md"), `
86
+ export function appendProductionReadme(targetDir, projectName, packageManager = "npm") {
87
+ const readmePath = path.join(targetDir, "README.md");
88
+ if (fs.readFileSync(readmePath, "utf8").includes("## Production Mode"))
89
+ return;
90
+ const commands = productionReadmeCommands(packageManager);
91
+ fs.appendFileSync(readmePath, `
87
92
 
88
93
  ## Production Mode
89
94
 
@@ -91,15 +96,15 @@ This project is configured for production using PM2.
91
96
 
92
97
  Build and start the compiled app in cluster mode:
93
98
 
94
- npm run pm2:start
99
+ ${commands.start}
95
100
 
96
101
  View logs:
97
102
 
98
- npm run pm2:logs
103
+ ${commands.logs}
99
104
 
100
105
  Stop app:
101
106
 
102
- npm run pm2:stop
107
+ ${commands.stop}
103
108
 
104
109
  `);
105
110
  }
@@ -1 +1 @@
1
- {"version":3,"file":"finalSetup.js","sourceRoot":"","sources":["../../../src/steps/finalSetup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"finalSetup.js","sourceRoot":"","sources":["../../../src/steps/finalSetup.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ export type InstallResult = {
4
4
  packageManager: PackageManager;
5
5
  durationMs: number;
6
6
  };
7
+ export declare function getProjectInstallEnv(env?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
7
8
  export declare function detectPackageManager(env?: NodeJS.ProcessEnv): PackageManager;
8
9
  export declare function resolvePackageManagerForPreset(authMode: string | undefined, requested?: PackageManager, env?: NodeJS.ProcessEnv): PackageManager;
9
10
  export declare function isPackageManagerAvailable(pm: PackageManager): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"installDeps.d.ts","sourceRoot":"","sources":["../../../src/steps/installDeps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGtD,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,MAAM,aAAa,GAAG;IAC1B,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAUF,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,cAAc,CAQzF;AAED,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,SAAS,CAAC,EAAE,cAAc,EAC1B,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,cAAc,CAShB;AAED,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAErE;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,EAAE,CAiB3D;AAED,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,aAAa,CAAC,CAoBxB"}
1
+ {"version":3,"file":"installDeps.d.ts","sourceRoot":"","sources":["../../../src/steps/installDeps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGtD,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,MAAM,aAAa,GAAG;IAC1B,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAAC,UAAU,CAWnB;AAYD,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,cAAc,CAQzF;AAED,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,SAAS,CAAC,EAAE,cAAc,EAC1B,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,cAAc,CAShB;AAED,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAErE;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,EAAE,CAiB3D;AAED,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,aAAa,CAAC,CAqBxB"}
@@ -1,4 +1,14 @@
1
1
  import { commandExists, run, getCommand, exitForInterrupt } from "../lib/process.js";
2
+ export function getProjectInstallEnv(env = process.env) {
3
+ const cleanEnv = { ...env };
4
+ // npm may export --allow-scripts from an outer npx/npm exec command.
5
+ for (const key of Object.keys(cleanEnv)) {
6
+ if (key.toLowerCase() === "npm_config_allow_scripts") {
7
+ delete cleanEnv[key];
8
+ }
9
+ }
10
+ return cleanEnv;
11
+ }
2
12
  function packageManagerFrom(value) {
3
13
  const normalized = value?.toLowerCase() ?? "";
4
14
  if (normalized.includes("pnpm"))
@@ -56,6 +66,7 @@ export async function installDependencies(targetDir, packageManager) {
56
66
  await run(getCommand(pm), getInstallArgs(pm), {
57
67
  cwd: targetDir,
58
68
  stdio: hideProgress ? "pipe" : "inherit",
69
+ env: getProjectInstallEnv(),
59
70
  });
60
71
  return {
61
72
  packageManager: pm,
@@ -1 +1 @@
1
- {"version":3,"file":"installDeps.js","sourceRoot":"","sources":["../../../src/steps/installDeps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"installDeps.js","sourceRoot":"","sources":["../../../src/steps/installDeps.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/steps/prompts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAiBhD,wBAAsB,UAAU,CAC9B,MAAM,EAAE,QAAQ,EAChB,YAAY,EAAE,OAAO,GACpB,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAgG5B"}
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/steps/prompts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAgBhD,wBAAsB,UAAU,CAC9B,MAAM,EAAE,QAAQ,EAChB,YAAY,EAAE,OAAO,GACpB,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAmH5B"}
@@ -1,5 +1,5 @@
1
1
  import inquirer from "inquirer";
2
- import { authMethodSelectionSchema, firstZodIssue, oauthProviderSelectionSchema, promptAnswersSchema, } from "../lib/schemas.js";
2
+ import { firstZodIssue, oauthProviderSelectionSchema, promptAnswersSchema, } from "../lib/schemas.js";
3
3
  import { hasBun } from "./finalSetup.js";
4
4
  function validateSelection(schema, choices) {
5
5
  const result = schema.safeParse(choices);
@@ -13,24 +13,34 @@ export async function runPrompts(_state, isProduction) {
13
13
  name: "authMode",
14
14
  message: "Select a preset:",
15
15
  choices: [
16
- { name: "Full-stack application (recommended)", value: "fullstack" },
17
- { name: "Express API (JWT only)", value: "base" },
18
- { name: "Express API + email/password", value: "auth" },
19
- { name: "Express API + OAuth", value: "auth-oauth" },
16
+ {
17
+ name: "Fullstack app (recommended) · React + Express, embedded PostgreSQL, npm",
18
+ value: "fullstack",
19
+ },
20
+ {
21
+ name: "JWT-only API · bring your own identity source, optional Prisma, Redis",
22
+ value: "base",
23
+ },
24
+ {
25
+ name: "Password API · email/password, Prisma, SQLite or PostgreSQL, Redis",
26
+ value: "auth",
27
+ },
28
+ {
29
+ name: "OAuth API · password + Google/GitHub, Prisma, database, Redis",
30
+ value: "auth-oauth",
31
+ },
20
32
  ],
21
33
  default: "fullstack",
22
34
  },
23
35
  {
24
36
  type: "checkbox",
25
- name: "authMethods",
26
- message: "Select authentication methods:",
37
+ name: "fullstackOAuthProviders",
38
+ message: "Add OAuth providers now? (optional; password auth is included)",
27
39
  choices: [
28
- { name: "Email and password (required)", value: "password", checked: true },
29
- { name: "Google", value: "google", checked: true },
30
- { name: "GitHub", value: "github", checked: true },
40
+ { name: "Google (requires provider credentials)", value: "google" },
41
+ { name: "GitHub (requires provider credentials)", value: "github" },
31
42
  ],
32
43
  when: (answers) => answers.authMode === "fullstack",
33
- validate: (choices) => validateSelection(authMethodSelectionSchema, choices),
34
44
  },
35
45
  {
36
46
  type: "checkbox",
@@ -90,10 +100,19 @@ export async function runPrompts(_state, isProduction) {
90
100
  },
91
101
  ])
92
102
  .then((result) => {
103
+ const { fullstackOAuthProviders, ...promptResult } = result;
93
104
  const answers = {
94
- ...result,
105
+ ...promptResult,
95
106
  framework: "Express",
96
- ...(result.runtime === "bun" && !bunAvailable ? { runtime: "node" } : {}),
107
+ ...(promptResult.authMode === "fullstack"
108
+ ? {
109
+ authMethods: [
110
+ "password",
111
+ ...(fullstackOAuthProviders ?? []),
112
+ ],
113
+ }
114
+ : {}),
115
+ ...(promptResult.runtime === "bun" && !bunAvailable ? { runtime: "node" } : {}),
97
116
  };
98
117
  const validation = promptAnswersSchema.safeParse(answers);
99
118
  if (!validation.success) {
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/steps/prompts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/steps/prompts.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/utils/output.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAuChD,wBAAgB,YAAY,CAC1B,KAAK,EAAE,QAAQ,EACf,YAAY,EAAE,OAAO,EACrB,gBAAgB,UAAO,EACvB,eAAe,UAAO,GACrB,IAAI,CAqDN"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/utils/output.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAuChD,wBAAgB,YAAY,CAC1B,KAAK,EAAE,QAAQ,EACf,YAAY,EAAE,OAAO,EACrB,gBAAgB,UAAO,EACvB,eAAe,UAAO,GACrB,IAAI,CAoEN"}