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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/bin/cli.ts"],"names":[],"mappings":"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"}
@@ -5,16 +5,21 @@ import chalk from "chalk";
5
5
  import { ExitPromptError } from "@inquirer/core";
6
6
  import { fileURLToPath } from "url";
7
7
  import { parseCliArguments } from "../lib/args.js";
8
+ import { resolveNonInteractiveAnswers } from "../lib/nonInteractive.js";
9
+ import { writeProjectManifest } from "../lib/projectManifest.js";
10
+ import { runPostGenerationDoctor } from "../commands/doctor/postGeneration.js";
8
11
  import { initState, saveState, loadState, clearState, hasReachedStep, getState } from "../lib/state.js";
9
12
  import { dockerComposeAvailable, dockerDaemonAvailable, killAllProcesses, } from "../lib/process.js";
10
13
  import { assertPresetRequirements } from "../lib/preflight.js";
11
14
  import { projectNameError } from "../lib/projectName.js";
12
15
  import { configuredCliStateSchema, firstZodIssue } from "../lib/schemas.js";
16
+ import { canResumeSetup, interruptionExitCode, restartCommand, } from "../lib/interruption.js";
13
17
  import { completeStep, finishSteps, formatDuration, renderConfiguration, showBootLogo, skipStep, spinner, startStep, } from "../lib/ui.js";
14
18
  import { runPrompts } from "../steps/prompts.js";
15
19
  import { createProject, configurePackageJson } from "../steps/createProject.js";
16
20
  import { installAuth } from "../steps/installAuth.js";
17
21
  import { configurePrisma } from "../steps/configurePrisma.js";
22
+ import { configureGeneratedReadme } from "../steps/configureReadme.js";
18
23
  import { installDependencies, isPackageManagerAvailable, resolvePackageManagerForPreset, } from "../steps/installDeps.js";
19
24
  import { configureProduction, initGit, appendProductionReadme, resolveRuntime } from "../steps/finalSetup.js";
20
25
  import { printSummary } from "../utils/output.js";
@@ -51,9 +56,25 @@ Secure application scaffolding
51
56
 
52
57
  Usage:
53
58
  create-authenik8-app <project-name> [options]
59
+ create-authenik8-app create <project-name> [options]
60
+ create-authenik8-app doctor [directory] [--json] [--skip-services]
61
+ create-authenik8-app add <recipe> [directory] [--dry-run]
62
+ create-authenik8-app upgrade [directory] [--check] [--json]
54
63
 
55
64
  Options:
56
65
  --package-manager <npm|pnpm|bun> Select the installer for Express presets
66
+ --non-interactive, --yes Generate without prompts (requires --preset)
67
+ --preset <base|auth|auth-oauth|fullstack>
68
+ Select a preset non-interactively
69
+ --prisma, --no-prisma Choose Prisma for the base preset
70
+ --database <sqlite|postgresql> Select a database where applicable
71
+ --oauth <google|github|google,github>
72
+ --no-oauth Explicitly disable OAuth for fullstack
73
+ --git, --no-git Choose Git initialization (defaults off)
74
+ --runtime <node|bun> Runtime for --production-ready Express apps
75
+
76
+ --package-manager <npm|pnpm|bun> Select the installer for Express presets
77
+
57
78
  --resume Resume an interrupted setup
58
79
  --no-install Generate without installing dependencies
59
80
  --production-ready Configure PM2 for Express API presets
@@ -61,13 +82,22 @@ Options:
61
82
  -h, --help Show this help message
62
83
 
63
84
  Presets:
64
- Express API (JWT only)
65
- Express API + email/password
66
- Express API + OAuth
67
- Full-stack application (React, Express, Prisma, PostgreSQL, Redis)
85
+
86
+ fullstack Recommended connected React + Express app
87
+ Requires npm; local PostgreSQL and Redis run in process
88
+ base JWT boundary for applications with their own identity source
89
+ Requires Redis; Prisma and a database are optional
90
+ auth Email/password Express API
91
+ Requires Redis, Prisma, and SQLite or PostgreSQL
92
+ auth-oauth Password + Google/GitHub Express API
93
+ Requires provider credentials, Redis, Prisma, and a database
94
+
95
+ Requirements:
96
+ Node.js 20.19+, 22.12+, or 24+. Fullstack uses npm workspaces.
68
97
 
69
98
  Example:
70
99
  npx create-authenik8-app my-app
100
+ npx create-authenik8-app my-api --yes --preset auth --database postgresql --no-git
71
101
 
72
102
  Full-stack applications use npm workspaces. Set AUTHENIK8_VERBOSE=1 to show installer output.
73
103
  `);
@@ -93,7 +123,7 @@ if (invalidProjectName) {
93
123
  process.exit(1);
94
124
  }
95
125
  const skipInstall = cliArguments.skipInstall;
96
- const isProduction = cliArguments.productionReady;
126
+ let isProduction = cliArguments.productionReady;
97
127
  const isResume = cliArguments.resume;
98
128
  const targetDir = path.resolve(process.cwd(), projectName);
99
129
  const templateRoot = [
@@ -103,7 +133,7 @@ const templateRoot = [
103
133
  const globalStateDir = path.join(process.cwd(), ".authenik8");
104
134
  const stateFile = path.join(globalStateDir, `${projectName}.json`);
105
135
  let shuttingDown = false;
106
- const handleShutdown = async () => {
136
+ const handleShutdown = (signal) => {
107
137
  if (shuttingDown)
108
138
  return;
109
139
  shuttingDown = true;
@@ -111,19 +141,36 @@ const handleShutdown = async () => {
111
141
  spinner.stop();
112
142
  killAllProcesses();
113
143
  console.log(chalk.yellow("Setup interrupted."));
144
+ let canResume = false;
145
+ let restartPackageManager = cliArguments.packageManager;
146
+ let restartWithoutInstall = skipInstall;
147
+ let restartProductionReady = isProduction;
114
148
  try {
115
149
  const current = getState();
116
- if (current && current.step && current.step !== "done") {
117
- saveState({ ...current });
150
+ const saved = current.step === "start" ? loadState(stateFile) : null;
151
+ const restartState = saved ?? current;
152
+ canResume = canResumeSetup(restartState.step);
153
+ restartPackageManager ??= restartState.packageManager;
154
+ restartWithoutInstall ||= restartState.installDeps === false;
155
+ restartProductionReady ||= restartState.productionReady === true;
156
+ if (canResume) {
157
+ saveState({ ...restartState });
118
158
  }
119
159
  }
120
160
  catch (_) { }
121
- console.log(chalk.gray("Resume with:"));
122
- console.log(chalk.cyan(` npx create-authenik8-app ${projectName} --resume`));
123
- process.exit(0);
161
+ const command = restartCommand({
162
+ projectName,
163
+ productionReady: restartProductionReady,
164
+ resume: canResume,
165
+ skipInstall: restartWithoutInstall,
166
+ ...(restartPackageManager ? { packageManager: restartPackageManager } : {}),
167
+ });
168
+ console.log(chalk.gray(canResume ? "Resume with:" : "Start again with:"));
169
+ console.log(chalk.cyan(` ${command}`));
170
+ process.exit(interruptionExitCode(signal));
124
171
  };
125
- process.prependListener("SIGINT", handleShutdown);
126
- process.prependListener("SIGTERM", handleShutdown);
172
+ process.prependListener("SIGINT", () => handleShutdown("SIGINT"));
173
+ process.prependListener("SIGTERM", () => handleShutdown("SIGTERM"));
127
174
  process.on("exit", () => {
128
175
  killAllProcesses();
129
176
  });
@@ -132,6 +179,7 @@ initState({
132
179
  step: "start",
133
180
  projectName,
134
181
  installDeps: !skipInstall,
182
+ productionReady: isProduction,
135
183
  ...(cliArguments.packageManager ? { packageManager: cliArguments.packageManager } : {}),
136
184
  }, stateFile);
137
185
  async function cleanupIncompleteProject() {
@@ -165,7 +213,8 @@ async function main() {
165
213
  writeLine(process.stderr, chalk.red(`Error: No saved setup state found for "${projectName}".`));
166
214
  process.exit(1);
167
215
  }
168
- initState(savedState, stateFile);
216
+ isProduction = isProduction || savedState.productionReady === true;
217
+ initState({ ...savedState, productionReady: isProduction }, stateFile);
169
218
  if (skipInstall) {
170
219
  saveState({ installDeps: false });
171
220
  }
@@ -179,7 +228,11 @@ async function main() {
179
228
  console.log(chalk.yellow(`\nResuming ${projectName} from "${currentStep}".\n`));
180
229
  }
181
230
  else {
182
- const promptAnswers = await runPrompts(getState(), isProduction);
231
+ const promptAnswers = cliArguments.nonInteractive
232
+ ? resolveNonInteractiveAnswers(cliArguments, {
233
+ bunAvailable: isPackageManagerAvailable("bun"),
234
+ })
235
+ : await runPrompts(getState(), isProduction);
183
236
  saveState({ ...promptAnswers, step: "prompts" });
184
237
  currentStep = "prompts";
185
238
  }
@@ -199,7 +252,7 @@ async function main() {
199
252
  if (state.installDeps !== false && !isPackageManagerAvailable(packageManager)) {
200
253
  throw new Error(`${packageManager} is not available on PATH. Install it or choose another package manager.`);
201
254
  }
202
- saveState({ packageManager });
255
+ saveState({ packageManager, runtime });
203
256
  if (state.usePrisma) {
204
257
  if (!state.database)
205
258
  saveState({ database: "sqlite" });
@@ -260,11 +313,23 @@ async function main() {
260
313
  else {
261
314
  skipStep("prisma-configured", "already completed");
262
315
  }
316
+ const manifestState = configuredCliStateSchema.parse(getState());
317
+ await writeProjectManifest(targetDir, {
318
+ projectName,
319
+ generatorVersion: readCliVersion(),
320
+ preset: manifestState.authMode,
321
+ packageManager: manifestState.packageManager,
322
+ runtime: manifestState.runtime ?? "node",
323
+ ...(manifestState.database ? { database: manifestState.database } : {}),
324
+ usePrisma: manifestState.usePrisma,
325
+ oauthProviders: manifestState.oauthProviders ?? [],
326
+ productionReady: isProduction && manifestState.authMode !== "fullstack",
327
+ });
263
328
  if (isProduction
264
329
  && getState().authMode !== "fullstack"
265
330
  && !hasReachedStep(currentStep, "production-configured")) {
266
331
  startStep("production-configured");
267
- await configureProduction(targetDir, projectName, runtime);
332
+ await configureProduction(targetDir, projectName, runtime, packageManager);
268
333
  saveState({
269
334
  step: "production-configured",
270
335
  ...(getState().authMode !== "base" && { hashLib: selectedHash }),
@@ -272,6 +337,10 @@ async function main() {
272
337
  currentStep = "production-configured";
273
338
  completeStep(currentStep);
274
339
  }
340
+ if (isProduction && getState().authMode !== "fullstack") {
341
+ appendProductionReadme(targetDir, projectName, packageManager);
342
+ }
343
+ await configureGeneratedReadme(targetDir, packageManager);
275
344
  // Install dependencies
276
345
  if (!hasReachedStep(currentStep, "deps-installed")) {
277
346
  configurePackageJson(targetDir, getState().usePrisma ?? false, packageManager);
@@ -316,11 +385,24 @@ async function main() {
316
385
  else {
317
386
  skipStep("git-initialized", "already completed");
318
387
  }
388
+ if (!hasReachedStep(currentStep, "project-validated")) {
389
+ startStep("project-validated");
390
+ const validation = await runPostGenerationDoctor(targetDir, getState().installDeps !== false);
391
+ completeStep("project-validated", `${validation.passed} checks passed`);
392
+ if (validation.warnings > 0) {
393
+ console.log(chalk.yellow(`! Static Doctor warnings: ${validation.warningLabels.join(", ")}`));
394
+ }
395
+ saveState({
396
+ step: "project-validated",
397
+ ...(getState().authMode !== "base" && { hashLib: selectedHash }),
398
+ });
399
+ currentStep = "project-validated";
400
+ }
401
+ else {
402
+ skipStep("project-validated", "already completed");
403
+ }
319
404
  finishSteps();
320
405
  // Done
321
- if (isProduction && getState().authMode !== "fullstack") {
322
- appendProductionReadme(targetDir, projectName);
323
- }
324
406
  const hasDockerCompose = dockerComposeAvailable();
325
407
  printSummary(getState(), isProduction, hasDockerCompose, hasDockerCompose && dockerDaemonAvailable());
326
408
  saveState({ step: "done", ...(getState().authMode !== "base" && { hashLib: selectedHash }) });
@@ -335,15 +417,18 @@ async function main() {
335
417
  process.exit(1);
336
418
  }
337
419
  }
338
- main().catch(async (err) => {
420
+ try {
421
+ await main();
422
+ }
423
+ catch (err) {
339
424
  if (err instanceof ExitPromptError) {
340
425
  console.log(chalk.yellow("\nSetup cancelled. No project files were changed."));
341
426
  killAllProcesses();
342
427
  await cleanupIncompleteProject();
343
- process.exit(0);
428
+ process.exit(130);
344
429
  }
345
430
  writeLine(process.stderr, chalk.red(`\nUnexpected error: ${errorMessage(err)}`));
346
431
  await cleanupIncompleteProject();
347
432
  process.exit(1);
348
- });
433
+ }
349
434
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bin/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bin/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { PlannedFileChange } from "./types.js";
2
+ export declare class ConcurrentRecipeChangeError extends Error {
3
+ }
4
+ /** Apply a plan as one guarded transaction, rolling back if commit or verification fails. */
5
+ export declare function applyPlannedChanges(rootDir: string, changes: readonly PlannedFileChange[], verify: () => Promise<void>): Promise<void>;
6
+ //# sourceMappingURL=apply.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../../src/commands/add/apply.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,qBAAa,2BAA4B,SAAQ,KAAK;CAAG;AA2FzD,6FAA6F;AAC7F,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,SAAS,iBAAiB,EAAE,EACrC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAC1B,OAAO,CAAC,IAAI,CAAC,CAqCf"}
@@ -0,0 +1,123 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import path from "node:path";
3
+ import fs from "fs-extra";
4
+ export class ConcurrentRecipeChangeError extends Error {
5
+ }
6
+ async function absolutePath(rootDir, relativePath) {
7
+ const resolved = path.resolve(rootDir, relativePath);
8
+ const relative = path.relative(rootDir, resolved);
9
+ if (relative.startsWith("..") || path.isAbsolute(relative)) {
10
+ throw new Error(`Recipe path escapes the project: ${relativePath}`);
11
+ }
12
+ const realRoot = await fs.realpath(rootDir);
13
+ let existing = resolved;
14
+ while (!(await fs.pathExists(existing))) {
15
+ const parent = path.dirname(existing);
16
+ if (parent === existing)
17
+ break;
18
+ existing = parent;
19
+ }
20
+ const realExisting = await fs.realpath(existing);
21
+ const realRelative = path.relative(realRoot, realExisting);
22
+ if (realRelative.startsWith("..") || path.isAbsolute(realRelative)) {
23
+ throw new Error(`Recipe path resolves outside the project: ${relativePath}`);
24
+ }
25
+ return resolved;
26
+ }
27
+ async function atomicWrite(filename, source) {
28
+ await fs.ensureDir(path.dirname(filename));
29
+ const temporary = path.join(path.dirname(filename), `.${path.basename(filename)}.authenik8-${process.pid}-${randomUUID()}.tmp`);
30
+ const mode = await fs.pathExists(filename) ? (await fs.stat(filename)).mode : 0o644;
31
+ try {
32
+ await fs.writeFile(temporary, source, { mode });
33
+ await fs.move(temporary, filename, { overwrite: true });
34
+ }
35
+ finally {
36
+ await fs.remove(temporary);
37
+ }
38
+ }
39
+ async function sourceAt(filename) {
40
+ return await fs.pathExists(filename) ? fs.readFile(filename, "utf8") : null;
41
+ }
42
+ async function commitChange(rootDir, change) {
43
+ const filename = await absolutePath(rootDir, change.relativePath);
44
+ const current = await sourceAt(filename);
45
+ if (current !== change.before) {
46
+ throw new ConcurrentRecipeChangeError(`${change.relativePath} changed after the recipe was planned; nothing further was written.`);
47
+ }
48
+ if (change.sensitive) {
49
+ if (change.before === null) {
50
+ throw new Error(`Sensitive recipe changes cannot create files: ${change.relativePath}`);
51
+ }
52
+ if (!change.after.startsWith(change.before)) {
53
+ throw new Error(`Sensitive recipe changes must be append-only: ${change.relativePath}`);
54
+ }
55
+ await fs.appendFile(filename, change.after.slice(change.before.length));
56
+ return;
57
+ }
58
+ try {
59
+ await atomicWrite(filename, change.after);
60
+ }
61
+ catch (error) {
62
+ if (change.before === null)
63
+ await pruneEmptyParents(rootDir, filename);
64
+ throw error;
65
+ }
66
+ }
67
+ async function pruneEmptyParents(rootDir, filename) {
68
+ let directory = path.dirname(filename);
69
+ while (directory !== rootDir) {
70
+ try {
71
+ await fs.rmdir(directory);
72
+ }
73
+ catch {
74
+ break;
75
+ }
76
+ directory = path.dirname(directory);
77
+ }
78
+ }
79
+ async function restoreChange(rootDir, change) {
80
+ const filename = await absolutePath(rootDir, change.relativePath);
81
+ if (change.before === null) {
82
+ await fs.remove(filename);
83
+ await pruneEmptyParents(rootDir, filename);
84
+ }
85
+ else if (change.sensitive)
86
+ await fs.writeFile(filename, change.before);
87
+ else
88
+ await atomicWrite(filename, change.before);
89
+ }
90
+ /** Apply a plan as one guarded transaction, rolling back if commit or verification fails. */
91
+ export async function applyPlannedChanges(rootDir, changes, verify) {
92
+ for (const change of changes) {
93
+ const current = await sourceAt(await absolutePath(rootDir, change.relativePath));
94
+ if (current !== change.before) {
95
+ throw new ConcurrentRecipeChangeError(`${change.relativePath} changed after the recipe was planned; no files were written.`);
96
+ }
97
+ }
98
+ const ordered = [...changes].sort((left, right) => Number(left.sensitive) - Number(right.sensitive));
99
+ const committed = [];
100
+ try {
101
+ for (const change of ordered) {
102
+ await commitChange(rootDir, change);
103
+ committed.push(change);
104
+ }
105
+ await verify();
106
+ }
107
+ catch (error) {
108
+ const rollbackErrors = [];
109
+ for (const change of committed.reverse()) {
110
+ try {
111
+ await restoreChange(rootDir, change);
112
+ }
113
+ catch (rollbackError) {
114
+ rollbackErrors.push(rollbackError instanceof Error ? rollbackError.message : String(rollbackError));
115
+ }
116
+ }
117
+ if (rollbackErrors.length > 0) {
118
+ throw new Error(`Recipe failed and rollback was incomplete: ${rollbackErrors.join("; ")}`, { cause: error });
119
+ }
120
+ throw error;
121
+ }
122
+ }
123
+ //# sourceMappingURL=apply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../../src/commands/add/apply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAI1B,MAAM,OAAO,2BAA4B,SAAQ,KAAK;CAAG;AAEzD,KAAK,UAAU,YAAY,CAAC,OAAe,EAAE,YAAoB;IAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAClD,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,oCAAoC,YAAY,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,QAAQ,GAAG,QAAQ,CAAC;IACxB,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,MAAM,KAAK,QAAQ;YAAE,MAAM;QAC/B,QAAQ,GAAG,MAAM,CAAC;IACpB,CAAC;IACD,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC3D,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,6CAA6C,YAAY,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,QAAgB,EAAE,MAAc;IACzD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CACzB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,OAAO,CAAC,GAAG,IAAI,UAAU,EAAE,MAAM,CAC3E,CAAC;IACF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IACpF,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,QAAgB;IACtC,OAAO,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9E,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,OAAe,EAAE,MAAyB;IACpE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,IAAI,2BAA2B,CACnC,GAAG,MAAM,CAAC,YAAY,qEAAqE,CAC5F,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,iDAAiD,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,iDAAiD,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACxE,OAAO;IACT,CAAC;IACD,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI;YAAE,MAAM,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACvE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,OAAe,EAAE,QAAgB;IAChE,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,OAAO,SAAS,KAAK,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM;QACR,CAAC;QACD,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,OAAe,EAAE,MAAyB;IACrE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IAClE,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAC3B,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1B,MAAM,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;SAAM,IAAI,MAAM,CAAC,SAAS;QAAE,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;;QACpE,MAAM,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,6FAA6F;AAC7F,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAe,EACf,OAAqC,EACrC,MAA2B;IAE3B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QACjF,IAAI,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;YAC9B,MAAM,IAAI,2BAA2B,CACnC,GAAG,MAAM,CAAC,YAAY,+DAA+D,CACtF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACrG,MAAM,SAAS,GAAwB,EAAE,CAAC;IAC1C,IAAI,CAAC;QACH,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACpC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QACD,MAAM,MAAM,EAAE,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,cAAc,GAAa,EAAE,CAAC;QACpC,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC;gBACH,MAAM,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACvC,CAAC;YAAC,OAAO,aAAa,EAAE,CAAC;gBACvB,cAAc,CAAC,IAAI,CACjB,aAAa,YAAY,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAC/E,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,8CAA8C,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACzE,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { PackageManager } from "../../lib/types.js";
2
+ import type { AddContext, PlannedFileChange } from "./types.js";
3
+ export declare const githubCiWorkflowPath = ".github/workflows/authenik8.yml";
4
+ export declare function renderGithubCiWorkflow(packageManager: PackageManager, cliVersion: string): string;
5
+ export declare function planGithubCi(context: AddContext): Promise<PlannedFileChange[]>;
6
+ //# sourceMappingURL=ci.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../../../src/commands/add/ci.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEhE,eAAO,MAAM,oBAAoB,oCAAoC,CAAC;AA6BtE,wBAAgB,sBAAsB,CACpC,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,MAAM,GACjB,MAAM,CA0CR;AAkBD,wBAAsB,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAwBpF"}
@@ -0,0 +1,108 @@
1
+ import path from "node:path";
2
+ import fs from "fs-extra";
3
+ import { currentToolRelease } from "../../lib/release.js";
4
+ import { AddRecipeError } from "./plan.js";
5
+ export const githubCiWorkflowPath = ".github/workflows/authenik8.yml";
6
+ const workflowSchemaVersion = 1;
7
+ const pnpmVersion = "10.12.1";
8
+ const bunVersion = "1.3.14";
9
+ function packageManagerSetup(packageManager) {
10
+ if (packageManager === "pnpm") {
11
+ return [
12
+ " - name: Install pinned pnpm",
13
+ ` run: npm install --global pnpm@${pnpmVersion}`,
14
+ "",
15
+ ];
16
+ }
17
+ if (packageManager === "bun") {
18
+ return [
19
+ " - name: Install pinned Bun",
20
+ ` run: npm install --global bun@${bunVersion}`,
21
+ "",
22
+ ];
23
+ }
24
+ return [];
25
+ }
26
+ function installCommand(packageManager) {
27
+ if (packageManager === "pnpm")
28
+ return "pnpm install --frozen-lockfile";
29
+ if (packageManager === "bun")
30
+ return "bun install --frozen-lockfile";
31
+ return "npm ci --no-audit --no-fund";
32
+ }
33
+ export function renderGithubCiWorkflow(packageManager, cliVersion) {
34
+ return [
35
+ "# Managed by create-authenik8-app. Re-run `create-authenik8-app add ci-github` to update safely.",
36
+ `# authenik8-ci-schema: ${workflowSchemaVersion}`,
37
+ `# authenik8-cli: ${cliVersion}`,
38
+ "name: Authenik8 security boundary",
39
+ "",
40
+ "on:",
41
+ " pull_request:",
42
+ " push:",
43
+ " branches: [main, master]",
44
+ " workflow_dispatch:",
45
+ "",
46
+ "permissions:",
47
+ " contents: read",
48
+ "",
49
+ "jobs:",
50
+ " auth-boundary:",
51
+ " runs-on: ubuntu-latest",
52
+ " timeout-minutes: 10",
53
+ " steps:",
54
+ " - name: Check out repository",
55
+ " uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5",
56
+ " with:",
57
+ " persist-credentials: false",
58
+ "",
59
+ " - name: Set up Node.js",
60
+ " uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020",
61
+ " with:",
62
+ " node-version: 22.12.x",
63
+ "",
64
+ ...packageManagerSetup(packageManager),
65
+ " - name: Install locked dependencies",
66
+ ` run: ${installCommand(packageManager)}`,
67
+ "",
68
+ " - name: Validate the Authenik8 boundary",
69
+ ` run: npx --yes create-authenik8-app@${cliVersion} doctor --json --skip-services`,
70
+ "",
71
+ " - name: Enforce the Authenik8 upgrade policy",
72
+ ` run: npx --yes create-authenik8-app@${cliVersion} upgrade --check --json`,
73
+ "",
74
+ ].join("\n");
75
+ }
76
+ async function requireLockfile(context) {
77
+ const candidates = {
78
+ npm: ["package-lock.json"],
79
+ pnpm: ["pnpm-lock.yaml"],
80
+ bun: ["bun.lock", "bun.lockb"],
81
+ };
82
+ const found = await Promise.all(candidates[context.manifest.packageManager].map((filename) => fs.pathExists(path.join(context.rootDir, filename))));
83
+ if (!found.some(Boolean)) {
84
+ throw new AddRecipeError(`ci-github requires a committed ${context.manifest.packageManager} lockfile so CI cannot resolve an unaudited dependency graph. Run the project's package manager install first.`);
85
+ }
86
+ }
87
+ export async function planGithubCi(context) {
88
+ await requireLockfile(context);
89
+ const cliVersion = currentToolRelease().generatorVersion;
90
+ const filename = path.join(context.rootDir, githubCiWorkflowPath);
91
+ const before = await fs.pathExists(filename) ? await fs.readFile(filename, "utf8") : null;
92
+ const after = renderGithubCiWorkflow(context.manifest.packageManager, cliVersion);
93
+ if (before === after)
94
+ return [];
95
+ if (before !== null) {
96
+ const schema = before.match(/^# authenik8-ci-schema: (\d+)$/m)?.[1];
97
+ const previousVersion = before.match(/^# authenik8-cli: (\S+)$/m)?.[1];
98
+ if (schema !== String(workflowSchemaVersion) || !previousVersion) {
99
+ throw new AddRecipeError(`${githubCiWorkflowPath} already exists and is not a recognized managed workflow; refusing to overwrite it.`);
100
+ }
101
+ const expected = renderGithubCiWorkflow(context.manifest.packageManager, previousVersion);
102
+ if (before !== expected) {
103
+ throw new AddRecipeError(`${githubCiWorkflowPath} has local changes; refusing to overwrite the customized security workflow.`);
104
+ }
105
+ }
106
+ return [{ relativePath: githubCiWorkflowPath, before, after }];
107
+ }
108
+ //# sourceMappingURL=ci.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci.js","sourceRoot":"","sources":["../../../../src/commands/add/ci.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { AddContext } from "./types.js";
2
+ export declare class AddProjectError extends Error {
3
+ }
4
+ export declare function createAddContext(directory: string): Promise<AddContext>;
5
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/commands/add/context.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,qBAAa,eAAgB,SAAQ,KAAK;CAAG;AAE7C,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAe7E"}
@@ -0,0 +1,19 @@
1
+ import path from "node:path";
2
+ import fs from "fs-extra";
3
+ import { readProjectManifest } from "../../lib/projectManifest.js";
4
+ export class AddProjectError extends Error {
5
+ }
6
+ export async function createAddContext(directory) {
7
+ const rootDir = path.resolve(directory);
8
+ if (!(await fs.pathExists(path.join(rootDir, "package.json")))) {
9
+ throw new AddProjectError(`No package.json found in ${rootDir}.`);
10
+ }
11
+ const result = await readProjectManifest(rootDir);
12
+ if (result.status === "missing") {
13
+ throw new AddProjectError("authenik8.json is required for safe recipe changes. Regenerate or migrate this legacy project first.");
14
+ }
15
+ if (result.status === "invalid")
16
+ throw new AddProjectError(result.message);
17
+ return { rootDir, manifest: result.manifest };
18
+ }
19
+ //# sourceMappingURL=context.js.map