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,119 @@
1
+ import { compareSemanticVersions } from "../../lib/semver.js";
2
+ import { coreMigrationActions } from "./migrations.js";
3
+ function installCommand(packageManager) {
4
+ if (packageManager === "pnpm")
5
+ return "pnpm install --frozen-lockfile";
6
+ if (packageManager === "bun")
7
+ return "bun install --frozen-lockfile";
8
+ return "npm ci";
9
+ }
10
+ function engineUpgradeCommand(context) {
11
+ const dependency = `authenik8-core@${context.targetEngineVersion}`;
12
+ if (context.packageManager === "pnpm")
13
+ return `pnpm add ${dependency}`;
14
+ if (context.packageManager === "bun")
15
+ return `bun add ${dependency}`;
16
+ if (context.manifest.preset === "fullstack") {
17
+ return `npm install ${dependency} --workspace @authenik8/api`;
18
+ }
19
+ return `npm install ${dependency}`;
20
+ }
21
+ function blockedAction(id, title, detail) {
22
+ return { id, kind: "blocked", title, detail };
23
+ }
24
+ export function createUpgradePlan(context) {
25
+ const actions = [];
26
+ let status = "current";
27
+ if (context.declaredEngineVersion !== context.manifest.engine.version) {
28
+ actions.push(blockedAction("engine.manifest-drift", "Reconcile the engine declaration and project manifest", `package.json declares ${context.declaredEngineVersion}, while authenik8.json records ${context.manifest.engine.version}. Doctor must pass before an upgrade is planned.`));
29
+ status = "blocked";
30
+ }
31
+ if (context.installedEngineVersion
32
+ && context.installedEngineVersion !== context.declaredEngineVersion) {
33
+ actions.push(blockedAction("engine.install-drift", "Restore a reproducible dependency installation", `Installed authenik8-core ${context.installedEngineVersion} does not match the ${context.declaredEngineVersion} declaration. Restore the lockfile installation before upgrading.`));
34
+ status = "blocked";
35
+ }
36
+ else if (!context.installedEngineVersion) {
37
+ actions.push({
38
+ id: "dependencies.install",
39
+ kind: "recommended",
40
+ title: "Install the declared dependency graph before validation",
41
+ detail: "The plan can compare declarations without node_modules, but Doctor must inspect the installed identity engine before an auth change is accepted.",
42
+ command: installCommand(context.packageManager),
43
+ });
44
+ }
45
+ const generatorOrder = compareSemanticVersions(context.manifest.generatedBy.version, context.targetGeneratorVersion);
46
+ if (generatorOrder === "invalid") {
47
+ actions.push(blockedAction("generator.invalid-version", "Use a semantic generator version", `Cannot compare project generator version ${context.manifest.generatedBy.version} with ${context.targetGeneratorVersion}.`));
48
+ status = "blocked";
49
+ }
50
+ else if (generatorOrder === "newer") {
51
+ actions.push(blockedAction("generator.downgrade", "Use a CLI that is at least as new as the project", `This project was generated by ${context.manifest.generatedBy.version}; the running CLI is ${context.targetGeneratorVersion} and cannot safely plan a downgrade.`));
52
+ status = "blocked";
53
+ }
54
+ else if (generatorOrder === "older") {
55
+ actions.push({
56
+ id: "generator.release-review",
57
+ kind: "required",
58
+ title: `Review generator changes through ${context.targetGeneratorVersion}`,
59
+ detail: "Generator upgrades are never inferred as source rewrites. Review the release notes and preview explicit add or migration recipes on a branch.",
60
+ references: ["create-authenik8-app release notes", "authenik8.json"],
61
+ });
62
+ if (status !== "blocked")
63
+ status = "upgrade-available";
64
+ }
65
+ const engineOrder = compareSemanticVersions(context.manifest.engine.version, context.targetEngineVersion);
66
+ if (engineOrder === "invalid") {
67
+ actions.push(blockedAction("engine.invalid-version", "Use an exact semantic engine version", `Cannot compare project engine version ${context.manifest.engine.version} with ${context.targetEngineVersion}.`));
68
+ status = "blocked";
69
+ }
70
+ else if (engineOrder === "newer") {
71
+ actions.push(blockedAction("engine.downgrade", "Use a CLI compatible with the declared identity engine", `The project targets authenik8-core ${context.manifest.engine.version}, newer than this CLI's ${context.targetEngineVersion} template contract.`));
72
+ status = "blocked";
73
+ }
74
+ else if (engineOrder === "older") {
75
+ actions.push(...coreMigrationActions(context.manifest.engine.version, context.targetEngineVersion));
76
+ actions.push({
77
+ id: "engine.upgrade",
78
+ kind: "required",
79
+ title: `Upgrade authenik8-core to ${context.targetEngineVersion}`,
80
+ detail: "Apply this only after reviewing every security-boundary action above. Keep the manifest unchanged until the dependency, generated integration, and Doctor all agree.",
81
+ command: engineUpgradeCommand(context),
82
+ references: ["authenik8-core CHANGELOG.md"],
83
+ });
84
+ if (status !== "blocked")
85
+ status = "upgrade-available";
86
+ }
87
+ if (status === "upgrade-available") {
88
+ actions.push({
89
+ id: "upgrade.verify",
90
+ kind: "required",
91
+ title: "Validate the upgraded auth boundary before updating metadata",
92
+ detail: "Run static and live-service diagnostics, exercise login, refresh rotation, OAuth callbacks, linking, and authorization, then update authenik8.json as the final audited change.",
93
+ command: `npx create-authenik8-app@${context.targetGeneratorVersion} doctor`,
94
+ references: ["THREAT_MODEL.md"],
95
+ });
96
+ }
97
+ return {
98
+ schemaVersion: 1,
99
+ rootDir: context.rootDir,
100
+ preset: context.manifest.preset,
101
+ status,
102
+ versions: {
103
+ generator: {
104
+ project: context.manifest.generatedBy.version,
105
+ target: context.targetGeneratorVersion,
106
+ },
107
+ engine: {
108
+ manifest: context.manifest.engine.version,
109
+ declared: context.declaredEngineVersion,
110
+ ...(context.installedEngineVersion
111
+ ? { installed: context.installedEngineVersion }
112
+ : {}),
113
+ target: context.targetEngineVersion,
114
+ },
115
+ },
116
+ actions,
117
+ };
118
+ }
119
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../../src/commands/upgrade/plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import type { AuthMode, PackageManager } from "../../lib/types.js";
2
+ import type { ProjectManifest } from "../../lib/projectManifest.js";
3
+ export type UpgradeStatus = "current" | "upgrade-available" | "blocked";
4
+ export type UpgradeActionKind = "required" | "recommended" | "blocked";
5
+ export type UpgradeAction = {
6
+ id: string;
7
+ kind: UpgradeActionKind;
8
+ title: string;
9
+ detail: string;
10
+ command?: string;
11
+ references?: string[];
12
+ };
13
+ export type UpgradeContext = {
14
+ rootDir: string;
15
+ appDir: string;
16
+ manifest: ProjectManifest;
17
+ packageManager: PackageManager;
18
+ declaredEngineVersion: string;
19
+ installedEngineVersion?: string;
20
+ targetGeneratorVersion: string;
21
+ targetEngineVersion: string;
22
+ };
23
+ export type UpgradePlan = {
24
+ schemaVersion: 1;
25
+ rootDir: string;
26
+ preset: AuthMode;
27
+ status: UpgradeStatus;
28
+ versions: {
29
+ generator: {
30
+ project: string;
31
+ target: string;
32
+ };
33
+ engine: {
34
+ manifest: string;
35
+ declared: string;
36
+ installed?: string;
37
+ target: string;
38
+ };
39
+ };
40
+ actions: UpgradeAction[];
41
+ };
42
+ export type UpgradeOptions = {
43
+ directory: string;
44
+ json: boolean;
45
+ check: boolean;
46
+ help: boolean;
47
+ };
48
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/commands/upgrade/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEpE,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,mBAAmB,GAAG,SAAS,CAAC;AACxE,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,CAAC;AAEvE,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,cAAc,EAAE,cAAc,CAAC;IAC/B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,aAAa,EAAE,CAAC,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE;QACR,SAAS,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/C,MAAM,EAAE;YACN,QAAQ,EAAE,MAAM,CAAC;YACjB,QAAQ,EAAE,MAAM,CAAC;YACjB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC;KACH,CAAC;IACF,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/commands/upgrade/types.ts"],"names":[],"mappings":""}
@@ -11,6 +11,27 @@ declare const cliArgumentsSchema: z.ZodObject<{
11
11
  pnpm: "pnpm";
12
12
  bun: "bun";
13
13
  }>>;
14
+ nonInteractive: z.ZodBoolean;
15
+ preset: z.ZodOptional<z.ZodEnum<{
16
+ fullstack: "fullstack";
17
+ base: "base";
18
+ auth: "auth";
19
+ "auth-oauth": "auth-oauth";
20
+ }>>;
21
+ usePrisma: z.ZodOptional<z.ZodBoolean>;
22
+ database: z.ZodOptional<z.ZodEnum<{
23
+ sqlite: "sqlite";
24
+ postgresql: "postgresql";
25
+ }>>;
26
+ oauthProviders: z.ZodOptional<z.ZodArray<z.ZodEnum<{
27
+ google: "google";
28
+ github: "github";
29
+ }>>>;
30
+ useGit: z.ZodOptional<z.ZodBoolean>;
31
+ runtime: z.ZodOptional<z.ZodEnum<{
32
+ bun: "bun";
33
+ node: "node";
34
+ }>>;
14
35
  }, z.core.$strict>;
15
36
  export type CliArguments = z.infer<typeof cliArgumentsSchema>;
16
37
  export declare function parseCliArguments(argv: string[]): CliArguments;
@@ -1 +1 @@
1
- {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../../src/lib/args.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,QAAA,MAAM,kBAAkB;;;;;;;;;;;;kBAQtB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAe9D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CA6D9D"}
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../../src/lib/args.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBxB,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAetB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAqD9D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CA2I9D"}
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { firstZodIssue, packageManagerSchema } from "./schemas.js";
2
+ import { authModeSchema, databaseSchema, firstZodIssue, oauthProvidersSchema, packageManagerSchema, runtimeSchema, } from "./schemas.js";
3
3
  const cliArgumentsSchema = z.strictObject({
4
4
  projectName: z.string().optional(),
5
5
  help: z.boolean(),
@@ -8,6 +8,13 @@ const cliArgumentsSchema = z.strictObject({
8
8
  skipInstall: z.boolean(),
9
9
  productionReady: z.boolean(),
10
10
  packageManager: packageManagerSchema.optional(),
11
+ nonInteractive: z.boolean(),
12
+ preset: authModeSchema.optional(),
13
+ usePrisma: z.boolean().optional(),
14
+ database: databaseSchema.optional(),
15
+ oauthProviders: oauthProvidersSchema.optional(),
16
+ useGit: z.boolean().optional(),
17
+ runtime: runtimeSchema.optional(),
11
18
  });
12
19
  const positionalArgumentsSchema = z.array(z.string()).max(1, {
13
20
  error: (issue) => {
@@ -21,6 +28,32 @@ function parsePackageManager(value) {
21
28
  throw new Error(firstZodIssue(result.error));
22
29
  return result.data;
23
30
  }
31
+ function parseChoice(value, schema, option, allowed) {
32
+ if (!value || value.startsWith("-")) {
33
+ throw new Error(`${option} requires ${allowed}.`);
34
+ }
35
+ const result = schema.safeParse(value);
36
+ if (!result.success)
37
+ throw new Error(`${option} must be ${allowed}. Received "${value}".`);
38
+ return result.data;
39
+ }
40
+ function parseOAuthProviders(value) {
41
+ if (!value || value.startsWith("-")) {
42
+ throw new Error("--oauth requires google, github, or google,github.");
43
+ }
44
+ const providers = value.split(",").map((provider) => provider.trim()).filter(Boolean);
45
+ const result = oauthProvidersSchema.min(1).safeParse(providers);
46
+ if (!result.success) {
47
+ throw new Error(`--oauth requires unique supported providers. ${firstZodIssue(result.error)}`);
48
+ }
49
+ return result.data;
50
+ }
51
+ function setBooleanChoice(current, value, positiveOption, negativeOption) {
52
+ if (current !== undefined && current !== value) {
53
+ throw new Error(`${positiveOption} and ${negativeOption} cannot be used together.`);
54
+ }
55
+ return value;
56
+ }
24
57
  export function parseCliArguments(argv) {
25
58
  const parsed = {
26
59
  help: false,
@@ -28,6 +61,7 @@ export function parseCliArguments(argv) {
28
61
  resume: false,
29
62
  skipInstall: false,
30
63
  productionReady: false,
64
+ nonInteractive: false,
31
65
  };
32
66
  const positionals = [];
33
67
  for (let index = 0; index < argv.length; index += 1) {
@@ -56,6 +90,33 @@ export function parseCliArguments(argv) {
56
90
  parsed.productionReady = true;
57
91
  continue;
58
92
  }
93
+ if (argument === "--yes" || argument === "--non-interactive") {
94
+ parsed.nonInteractive = true;
95
+ continue;
96
+ }
97
+ if (argument === "--prisma") {
98
+ parsed.usePrisma = setBooleanChoice(parsed.usePrisma, true, "--prisma", "--no-prisma");
99
+ continue;
100
+ }
101
+ if (argument === "--no-prisma") {
102
+ parsed.usePrisma = setBooleanChoice(parsed.usePrisma, false, "--prisma", "--no-prisma");
103
+ continue;
104
+ }
105
+ if (argument === "--git") {
106
+ parsed.useGit = setBooleanChoice(parsed.useGit, true, "--git", "--no-git");
107
+ continue;
108
+ }
109
+ if (argument === "--no-git") {
110
+ parsed.useGit = setBooleanChoice(parsed.useGit, false, "--git", "--no-git");
111
+ continue;
112
+ }
113
+ if (argument === "--no-oauth") {
114
+ if (parsed.oauthProviders !== undefined) {
115
+ throw new Error("--oauth and --no-oauth cannot be used together.");
116
+ }
117
+ parsed.oauthProviders = [];
118
+ continue;
119
+ }
59
120
  if (argument === "--package-manager") {
60
121
  const value = argv[index + 1];
61
122
  parsed.packageManager = parsePackageManager(value?.startsWith("-") ? undefined : value);
@@ -66,6 +127,49 @@ export function parseCliArguments(argv) {
66
127
  parsed.packageManager = parsePackageManager(argument.slice("--package-manager=".length));
67
128
  continue;
68
129
  }
130
+ if (argument === "--preset" || argument.startsWith("--preset=")) {
131
+ if (parsed.preset !== undefined)
132
+ throw new Error("--preset may only be provided once.");
133
+ const inline = argument.startsWith("--preset=");
134
+ const value = inline ? argument.slice("--preset=".length) : argv[index + 1];
135
+ parsed.preset = parseChoice(value, authModeSchema, "--preset", "base, auth, auth-oauth, or fullstack");
136
+ if (!inline)
137
+ index += 1;
138
+ continue;
139
+ }
140
+ if (argument === "--database" || argument.startsWith("--database=")) {
141
+ if (parsed.database !== undefined)
142
+ throw new Error("--database may only be provided once.");
143
+ const inline = argument.startsWith("--database=");
144
+ const value = inline ? argument.slice("--database=".length) : argv[index + 1];
145
+ parsed.database = parseChoice(value, databaseSchema, "--database", "sqlite or postgresql");
146
+ if (!inline)
147
+ index += 1;
148
+ continue;
149
+ }
150
+ if (argument === "--runtime" || argument.startsWith("--runtime=")) {
151
+ if (parsed.runtime !== undefined)
152
+ throw new Error("--runtime may only be provided once.");
153
+ const inline = argument.startsWith("--runtime=");
154
+ const value = inline ? argument.slice("--runtime=".length) : argv[index + 1];
155
+ parsed.runtime = parseChoice(value, runtimeSchema, "--runtime", "node or bun");
156
+ if (!inline)
157
+ index += 1;
158
+ continue;
159
+ }
160
+ if (argument === "--oauth" || argument.startsWith("--oauth=")) {
161
+ if (parsed.oauthProviders !== undefined) {
162
+ throw new Error(parsed.oauthProviders.length === 0
163
+ ? "--oauth and --no-oauth cannot be used together."
164
+ : "--oauth may only be provided once.");
165
+ }
166
+ const inline = argument.startsWith("--oauth=");
167
+ const value = inline ? argument.slice("--oauth=".length) : argv[index + 1];
168
+ parsed.oauthProviders = parseOAuthProviders(value);
169
+ if (!inline)
170
+ index += 1;
171
+ continue;
172
+ }
69
173
  if (argument.startsWith("-")) {
70
174
  throw new Error(`Unknown option "${argument}". Run with --help for usage.`);
71
175
  }
@@ -77,6 +181,20 @@ export function parseCliArguments(argv) {
77
181
  }
78
182
  if (positionalResult.data[0])
79
183
  parsed.projectName = positionalResult.data[0];
184
+ const nonInteractiveOnly = [
185
+ parsed.preset,
186
+ parsed.usePrisma,
187
+ parsed.database,
188
+ parsed.oauthProviders,
189
+ parsed.useGit,
190
+ parsed.runtime,
191
+ ];
192
+ if (!parsed.nonInteractive && nonInteractiveOnly.some((value) => value !== undefined)) {
193
+ throw new Error("--preset, --prisma, --database, --oauth, --git, and --runtime require --non-interactive (or --yes).");
194
+ }
195
+ if (parsed.nonInteractive && parsed.resume) {
196
+ throw new Error("--resume cannot be combined with --non-interactive or --yes.");
197
+ }
80
198
  return cliArgumentsSchema.parse(parsed);
81
199
  }
82
200
  //# sourceMappingURL=args.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"args.js","sourceRoot":"","sources":["../../../src/lib/args.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../../../src/lib/args.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { StepName } from "./types.js";
2
- export declare const PRISMA_VERSION = "7.8.0";
2
+ export declare const PRISMA_VERSION = "7.9.0";
3
3
  export declare const stepOrder: StepName[];
4
4
  export declare const stepLabels: Record<StepName, string>;
5
5
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC,eAAO,MAAM,SAAS,EAAE,QAAQ,EAU/B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAU/C,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC,eAAO,MAAM,SAAS,EAAE,QAAQ,EAW/B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAW/C,CAAC"}
@@ -1,4 +1,4 @@
1
- export const PRISMA_VERSION = "7.8.0";
1
+ export const PRISMA_VERSION = "7.9.0";
2
2
  export const stepOrder = [
3
3
  "start",
4
4
  "prompts",
@@ -8,6 +8,7 @@ export const stepOrder = [
8
8
  "production-configured",
9
9
  "deps-installed",
10
10
  "git-initialized",
11
+ "project-validated",
11
12
  "done",
12
13
  ];
13
14
  export const stepLabels = {
@@ -19,6 +20,7 @@ export const stepLabels = {
19
20
  "deps-installed": "Install dependencies",
20
21
  "production-configured": "Configure production runtime",
21
22
  "git-initialized": "Initialize Git repository",
23
+ "project-validated": "Validate generated auth boundary",
22
24
  done: "Project ready",
23
25
  };
24
26
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AAEtC,MAAM,CAAC,MAAM,SAAS,GAAe;IACnC,OAAO;IACP,SAAS;IACT,iBAAiB;IACjB,gBAAgB;IAChB,mBAAmB;IACnB,uBAAuB;IACvB,gBAAgB;IAChB,iBAAiB;IACjB,MAAM;CACP,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAA6B;IAClD,KAAK,EAAE,aAAa;IACpB,OAAO,EAAE,uBAAuB;IAChC,iBAAiB,EAAE,sBAAsB;IACzC,gBAAgB,EAAE,0BAA0B;IAC5C,mBAAmB,EAAE,oBAAoB;IACzC,gBAAgB,EAAE,sBAAsB;IACxC,uBAAuB,EAAE,8BAA8B;IACvD,iBAAiB,EAAE,2BAA2B;IAC9C,IAAI,EAAE,eAAe;CACtB,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AAEtC,MAAM,CAAC,MAAM,SAAS,GAAe;IACnC,OAAO;IACP,SAAS;IACT,iBAAiB;IACjB,gBAAgB;IAChB,mBAAmB;IACnB,uBAAuB;IACvB,gBAAgB;IAChB,iBAAiB;IACjB,mBAAmB;IACnB,MAAM;CACP,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAA6B;IAClD,KAAK,EAAE,aAAa;IACpB,OAAO,EAAE,uBAAuB;IAChC,iBAAiB,EAAE,sBAAsB;IACzC,gBAAgB,EAAE,0BAA0B;IAC5C,mBAAmB,EAAE,oBAAoB;IACzC,gBAAgB,EAAE,sBAAsB;IACxC,uBAAuB,EAAE,8BAA8B;IACvD,iBAAiB,EAAE,2BAA2B;IAC9C,mBAAmB,EAAE,kCAAkC;IACvD,IAAI,EAAE,eAAe;CACtB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { OAuthProvider } from "./oauth.js";
2
+ export declare const expressOAuthFiles: {
3
+ readonly auth: "src/auth/auth.ts";
4
+ readonly controller: "src/auth/controllers/oauth.controller.ts";
5
+ readonly routes: "src/auth/routes/oauth.routes.ts";
6
+ };
7
+ export type ExpressOAuthFile = (typeof expressOAuthFiles)[keyof typeof expressOAuthFiles];
8
+ /** Canonical OAuth source shared by generation and guarded add recipes. */
9
+ export declare function renderExpressOAuthFiles(providers: readonly OAuthProvider[]): Record<ExpressOAuthFile, string>;
10
+ //# sourceMappingURL=expressOAuth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expressOAuth.d.ts","sourceRoot":"","sources":["../../../src/lib/expressOAuth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAkF1F,2EAA2E;AAC3E,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,SAAS,aAAa,EAAE,GAClC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAgFlC"}
@@ -0,0 +1,164 @@
1
+ export const expressOAuthFiles = {
2
+ auth: "src/auth/auth.ts",
3
+ controller: "src/auth/controllers/oauth.controller.ts",
4
+ routes: "src/auth/routes/oauth.routes.ts",
5
+ };
6
+ function providerEnvBlock(provider) {
7
+ const upper = provider.toUpperCase();
8
+ return `${provider}: {
9
+ clientId: requiredEnv("${upper}_CLIENT_ID"),
10
+ clientSecret: requiredEnv("${upper}_CLIENT_SECRET"),
11
+ redirectUri: requiredEnv("${upper}_REDIRECT_URI"),
12
+ },`;
13
+ }
14
+ function providerControllerBlock(provider) {
15
+ return `async ${provider}Redirect(req: Request, res: Response) {
16
+ try {
17
+ await requireProvider("${provider}", res)?.redirect(req, res);
18
+ } catch {
19
+ if (!res.headersSent) res.status(500).json({ error: "OAuth redirect failed" });
20
+ }
21
+ },
22
+
23
+ async ${provider}Callback(req: Request, res: Response) {
24
+ try {
25
+ const provider = requireProvider("${provider}", res);
26
+ if (!provider) return;
27
+
28
+ const result = await provider.handleCallback(req);
29
+ let response = result;
30
+
31
+ if (result.mode === "link" && !result.identity) {
32
+ if (!result.userId) {
33
+ return res.status(400).json({ error: "Authenticated user is required to link a provider" });
34
+ }
35
+
36
+ await identityAdapter.linkProvider(
37
+ result.userId,
38
+ result.profile.provider,
39
+ result.profile.providerId,
40
+ );
41
+ response = {
42
+ ...result,
43
+ identity: { type: "LINK_PROVIDER", success: true },
44
+ };
45
+ }
46
+
47
+ if (
48
+ result.identity?.type === "LINK_REQUIRED" ||
49
+ result.identity?.type === "EXISTING_EMAIL_CONFLICT"
50
+ ) {
51
+ return res.status(409).json({ provider: "${provider}", ...result });
52
+ }
53
+
54
+ if (result.identity?.type === "INVALID_LINK_REQUEST") {
55
+ return res.status(400).json({ provider: "${provider}", ...result });
56
+ }
57
+
58
+ if (result.mode === "login" && (!result.accessToken || !result.refreshToken)) {
59
+ throw new Error("OAuth callback did not return an application session");
60
+ }
61
+
62
+ res.json({ provider: "${provider}", ...response });
63
+ } catch (error) {
64
+ res.status(400).json({
65
+ error: error instanceof Error ? error.message : "OAuth callback failed",
66
+ });
67
+ }
68
+ },
69
+
70
+ async ${provider}Link(req: Request, res: Response) {
71
+ try {
72
+ await requireProvider("${provider}", res)?.redirect(req, res, "link");
73
+ } catch {
74
+ if (!res.headersSent) res.status(500).json({ error: "OAuth link redirect failed" });
75
+ }
76
+ },`;
77
+ }
78
+ function providerRoutesBlock(provider) {
79
+ return `router.get("/${provider}", oauthController.${provider}Redirect);
80
+ router.get("/${provider}/callback", oauthController.${provider}Callback);
81
+ router.get("/${provider}/link", authMiddleware, oauthController.${provider}Link);`;
82
+ }
83
+ /** Canonical OAuth source shared by generation and guarded add recipes. */
84
+ export function renderExpressOAuthFiles(providers) {
85
+ const providerUnion = providers.map((provider) => `"${provider}"`).join(" | ");
86
+ return {
87
+ [expressOAuthFiles.auth]: `import { createAuthenik8 } from "authenik8-core";
88
+ import dotenv from "dotenv";
89
+ import { createRedisClient } from "../config/redis";
90
+ import { agentIdentityConfig, authJwkConfig, requiredEnv, requiredSecret } from "../utils/security";
91
+ import { identityAdapter } from "./identity.adapter";
92
+
93
+ dotenv.config();
94
+
95
+ let authInstance: any;
96
+
97
+ function oauthConfig() {
98
+ return {
99
+ ${providers.map(providerEnvBlock).join("\n ")}
100
+ };
101
+ }
102
+
103
+ export async function initAuth() {
104
+ authInstance= await createAuthenik8({
105
+ jwt: authJwkConfig(),
106
+ refreshSecret: requiredSecret("REFRESH_SECRET"),
107
+ agent: agentIdentityConfig(),
108
+ redis: await createRedisClient(),
109
+ oauth: oauthConfig(),
110
+ identityAdapter,
111
+ });
112
+
113
+ }
114
+ export function getAuth() {
115
+ if (!authInstance) {
116
+ throw new Error("Auth not initialized. Call initAuth() first.");
117
+ }
118
+
119
+ return authInstance;
120
+ }
121
+
122
+ export const auth = new Proxy(
123
+ {},
124
+ {
125
+ get(_target, property) {
126
+ return getAuth()[property as keyof ReturnType<typeof getAuth>];
127
+ },
128
+ },
129
+ ) as any;
130
+ `,
131
+ [expressOAuthFiles.routes]: `import express from "express";
132
+ import { authMiddleware } from "../middleware/auth.middleware";
133
+ import { oauthController } from "../controllers/oauth.controller";
134
+
135
+ const router = express.Router();
136
+
137
+ ${providers.map(providerRoutesBlock).join("\n")}
138
+
139
+ export default router;
140
+ `,
141
+ [expressOAuthFiles.controller]: `import { Request, Response } from "express";
142
+ import { getAuth } from "../auth";
143
+ import { identityAdapter } from "../identity.adapter";
144
+
145
+ type OAuthProvider = ${providerUnion};
146
+
147
+ function requireProvider(provider: OAuthProvider, res: Response) {
148
+ const oauthProvider = getAuth().oauth?.[provider];
149
+
150
+ if (!oauthProvider) {
151
+ res.status(404).json({ error: \`\${provider} OAuth is not configured\` });
152
+ return undefined;
153
+ }
154
+
155
+ return oauthProvider;
156
+ }
157
+
158
+ export const oauthController = {
159
+ ${providers.map(providerControllerBlock).join("\n\n ")}
160
+ };
161
+ `,
162
+ };
163
+ }
164
+ //# sourceMappingURL=expressOAuth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expressOAuth.js","sourceRoot":"","sources":["../../../src/lib/expressOAuth.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,kBAAkB;IACxB,UAAU,EAAE,0CAA0C;IACtD,MAAM,EAAE,iCAAiC;CACjC,CAAC;AAIX,SAAS,gBAAgB,CAAC,QAAuB;IAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACrC,OAAO,GAAG,QAAQ;iCACa,KAAK;qCACD,KAAK;oCACN,KAAK;SAChC,CAAC;AACV,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAuB;IACtD,OAAO,SAAS,QAAQ;;+BAEK,QAAQ;;;;;;UAM7B,QAAQ;;0CAEwB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;mDA0BC,QAAQ;;;;mDAIR,QAAQ;;;;;;;8BAO7B,QAAQ;;;;;;;;UAQ5B,QAAQ;;+BAEa,QAAQ;;;;KAIlC,CAAC;AACN,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAuB;IAClD,OAAO,gBAAgB,QAAQ,sBAAsB,QAAQ;eAChD,QAAQ,+BAA+B,QAAQ;eAC/C,QAAQ,2CAA2C,QAAQ,QAAQ,CAAC;AACnF,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,uBAAuB,CACrC,SAAmC;IAEnC,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE/E,OAAO;QACL,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;;;;;;;;;;;;MAYxB,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BnD;QACG,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE;;;;;;EAM9B,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;CAG9C;QACG,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE;;;;uBAIb,aAAa;;;;;;;;;;;;;;IAchC,SAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;;CAExD;KACE,CAAC;AACJ,CAAC"}