create-authenik8-app 2.0.7 → 2.0.8

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 (65) hide show
  1. package/README.md +19 -13
  2. package/dist/bin/index.d.ts +5 -0
  3. package/dist/bin/index.d.ts.map +1 -1
  4. package/dist/bin/index.js +308 -180
  5. package/dist/bin/index.js.map +1 -1
  6. package/dist/index.d.ts +3 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +262 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/lib/constants.d.ts +4 -0
  11. package/dist/lib/constants.d.ts.map +1 -0
  12. package/dist/lib/constants.js +25 -0
  13. package/dist/lib/constants.js.map +1 -0
  14. package/dist/lib/process.d.ts +7 -0
  15. package/dist/lib/process.d.ts.map +1 -0
  16. package/dist/lib/process.js +56 -0
  17. package/dist/lib/process.js.map +1 -0
  18. package/dist/lib/state.d.ts +8 -0
  19. package/dist/lib/state.d.ts.map +1 -0
  20. package/dist/lib/state.js +31 -0
  21. package/dist/lib/state.js.map +1 -0
  22. package/dist/lib/types.d.ts +16 -0
  23. package/dist/lib/types.d.ts.map +1 -0
  24. package/dist/lib/types.js +2 -0
  25. package/dist/lib/types.js.map +1 -0
  26. package/dist/lib/ui.d.ts +7 -0
  27. package/dist/lib/ui.d.ts.map +1 -0
  28. package/dist/lib/ui.js +124 -0
  29. package/dist/lib/ui.js.map +1 -0
  30. package/dist/steps/configurePrisma.d.ts +3 -0
  31. package/dist/steps/configurePrisma.d.ts.map +1 -0
  32. package/dist/steps/configurePrisma.js +41 -0
  33. package/dist/steps/configurePrisma.js.map +1 -0
  34. package/dist/steps/createProject.d.ts +4 -0
  35. package/dist/steps/createProject.d.ts.map +1 -0
  36. package/dist/steps/createProject.js +16 -0
  37. package/dist/steps/createProject.js.map +1 -0
  38. package/dist/steps/finalSetup.d.ts +4 -0
  39. package/dist/steps/finalSetup.d.ts.map +1 -0
  40. package/dist/steps/finalSetup.js +52 -0
  41. package/dist/steps/finalSetup.js.map +1 -0
  42. package/dist/steps/installAuth.d.ts +2 -0
  43. package/dist/steps/installAuth.d.ts.map +1 -0
  44. package/dist/steps/installAuth.js +34 -0
  45. package/dist/steps/installAuth.js.map +1 -0
  46. package/dist/steps/installDeps.d.ts +3 -0
  47. package/dist/steps/installDeps.d.ts.map +1 -0
  48. package/dist/steps/installDeps.js +31 -0
  49. package/dist/steps/installDeps.js.map +1 -0
  50. package/dist/steps/prompts.d.ts +3 -0
  51. package/dist/steps/prompts.d.ts.map +1 -0
  52. package/dist/steps/prompts.js +47 -0
  53. package/dist/steps/prompts.js.map +1 -0
  54. package/dist/utils/hash.d.ts +3 -0
  55. package/dist/utils/hash.d.ts.map +1 -0
  56. package/dist/utils/hash.js +41 -0
  57. package/dist/utils/hash.js.map +1 -0
  58. package/dist/utils/output.d.ts +3 -0
  59. package/dist/utils/output.d.ts.map +1 -0
  60. package/dist/utils/output.js +62 -0
  61. package/dist/utils/output.js.map +1 -0
  62. package/package.json +2 -2
  63. package/templates/express-auth/ecosystem.config.ts +0 -16
  64. package/templates/express-auth+/ecosystem.config.ts +0 -16
  65. package/templates/express-base/ecosystem.config.ts +0 -16
package/dist/lib/ui.js ADDED
@@ -0,0 +1,124 @@
1
+ import chalk from "chalk";
2
+ import ora from "ora";
3
+ import { stepLabels, stepOrder } from "./constants.js";
4
+ import { hasReachedStep } from "./state.js";
5
+ export const spinner = ora().start();
6
+ export const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
7
+ const cleanLogo = `
8
+
9
+ █████╗ █████╗
10
+ ██╔══██╗ ██╔══██╗
11
+ ███████║ ╚█████╔╝
12
+ ██╔══██║ ██╔══██╗
13
+ ██║ ██║ ╚█████╔╝
14
+ ╚═╝ ╚═╝ ╚════╝
15
+
16
+ A8
17
+
18
+ Authenik8 CLI
19
+ Build Faster
20
+ More , Secure
21
+ `;
22
+ const glitchFrames = [
23
+ `
24
+ █████╗ █████╗
25
+ ██╔══██╗ ██▒▒▒▒██
26
+ ███████║ ╚█████╔╝
27
+ ██╔══██║ ██▒▒▒▒██
28
+ ██║ ██║ ╚█████╔╝
29
+ ╚═╝ ╚═╝ ╚════╝
30
+
31
+ A8
32
+ Authenik8 CLI
33
+
34
+ More
35
+ `,
36
+ `
37
+ ██▓▓██╗ ██▓▓██╗
38
+ ██▒▒██╔╝ ██▒▒██╔╝
39
+ ██▒▒▒▒██ ╚█████╔╝
40
+ ██▓▓██╔╝ ██▒▒██╗
41
+ ██▒▒██║ ╚█████╔╝
42
+ ╚═════╝ ╚════╝
43
+
44
+ A8
45
+ Authenik8 CLI
46
+ Faster
47
+ `,
48
+ `
49
+ ██▒▒██╗ ██▒▒██╗
50
+ ██▓▓██╔╝ ██▓▓██╔╝
51
+ ██▒▒▒▒██ ╚█████╔╝
52
+ ██▓▓██╔╝ ██▓▓██╗
53
+ ██▒▒██║ ╚█████╔╝
54
+ ╚═════╝ ╚════╝
55
+
56
+ A8
57
+ Authenik8 CLI
58
+ Build
59
+ `,
60
+ `
61
+ ██▓▓██╗ ██▓▓██╗
62
+ ██▒▒██╔╝ ██▒▒██╔╝
63
+ ██▒▒▒▒██ ╚█████╔╝
64
+ ██▓▓██╔╝ ██▒▒██╗
65
+ ██▒▒██║ ╚█████╔╝
66
+ ╚═════╝ ╚════╝
67
+
68
+ A8
69
+ Authenik8 CLI
70
+
71
+ `,
72
+ ];
73
+ export function renderHeader() {
74
+ console.log(chalk.cyan.bold("Happy building \nAuthenik8 CLI"));
75
+ console.log(chalk.gray("────────────────────"));
76
+ console.log("");
77
+ }
78
+ export function renderStep(current, isProduction) {
79
+ console.clear();
80
+ renderHeader();
81
+ for (const step of stepOrder) {
82
+ const label = stepLabels[step];
83
+ if (step === "production-configured" && !isProduction) {
84
+ continue;
85
+ }
86
+ if (step === current) {
87
+ console.log(chalk.yellow(`⏳ ${label}...`));
88
+ break;
89
+ }
90
+ if (hasReachedStep(current, step)) {
91
+ console.log(chalk.green(`✔ ${label}`));
92
+ }
93
+ else {
94
+ console.log(chalk.gray(`○ ${label}`));
95
+ }
96
+ }
97
+ console.log("");
98
+ }
99
+ export async function showBootLogo() {
100
+ console.clear();
101
+ spinner.text = "Initializing Authenik8 engine...";
102
+ console.clear();
103
+ console.log(chalk.cyan(cleanLogo));
104
+ await sleep(200);
105
+ for (let i = 0; i < 5; i++) {
106
+ console.clear();
107
+ const frame = glitchFrames[Math.floor(Math.random() * glitchFrames.length)];
108
+ console.log(chalk.cyan(frame));
109
+ await sleep(120 + Math.random() * 120);
110
+ }
111
+ for (let i = 0; i < 2; i++) {
112
+ console.clear();
113
+ console.log(chalk.cyan(cleanLogo));
114
+ await sleep(180);
115
+ console.clear();
116
+ console.log(chalk.gray(cleanLogo));
117
+ await sleep(120);
118
+ }
119
+ console.clear();
120
+ console.log(chalk.cyan.bold(cleanLogo));
121
+ await sleep(800);
122
+ spinner.succeed("Engine ready");
123
+ }
124
+ //# sourceMappingURL=ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/lib/ui.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CliState } from "../lib/types.js";
2
+ export declare function configurePrisma(state: CliState, targetDir: string, templateRoot: string): Promise<void>;
3
+ //# sourceMappingURL=configurePrisma.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configurePrisma.d.ts","sourceRoot":"","sources":["../../src/steps/configurePrisma.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAIhD,wBAAsB,eAAe,CACnC,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAkDf"}
@@ -0,0 +1,41 @@
1
+ import fs from "fs-extra";
2
+ import path from "path";
3
+ import { spinner } from "../lib/ui.js";
4
+ import { exitForInterrupt } from "../lib/process.js";
5
+ export async function configurePrisma(state, targetDir, templateRoot) {
6
+ const pkgPath = path.join(targetDir, "package.json");
7
+ const pkg = await fs.readJson(pkgPath);
8
+ pkg.dependencies = {
9
+ ...pkg.dependencies,
10
+ ioredis: "^5.8.1",
11
+ };
12
+ if (state.usePrisma) {
13
+ spinner.start("Adding Prisma setup...");
14
+ try {
15
+ const dbType = state.database === "postgresql" ? "postgresql" : "sqlite";
16
+ const prismaTemplatePath = path.join(templateRoot, `prisma/${dbType}`);
17
+ await fs.copy(path.join(prismaTemplatePath, "schema.prisma"), path.join(targetDir, "prisma/schema.prisma"));
18
+ await fs.copy(path.join(prismaTemplatePath, ".env"), path.join(targetDir, ".env"));
19
+ pkg.dependencies = {
20
+ ...pkg.dependencies,
21
+ "@prisma/client": "5.22.0",
22
+ };
23
+ pkg.devDependencies = {
24
+ ...pkg.devDependencies,
25
+ prisma: "5.22.0",
26
+ };
27
+ pkg.scripts = {
28
+ ...pkg.scripts,
29
+ "prisma:generate": "prisma generate",
30
+ "prisma:migrate": "prisma migrate dev",
31
+ };
32
+ spinner.succeed(`Prisma (${dbType}) configured`);
33
+ }
34
+ catch (err) {
35
+ spinner.fail("Failed to setup Prisma");
36
+ exitForInterrupt(err);
37
+ }
38
+ }
39
+ await fs.writeJson(pkgPath, pkg, { spaces: 2 });
40
+ }
41
+ //# sourceMappingURL=configurePrisma.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configurePrisma.js","sourceRoot":"","sources":["../../src/steps/configurePrisma.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAe,EACf,SAAiB,EACjB,YAAoB;IAEpB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEvC,GAAG,CAAC,YAAY,GAAG;QACjB,GAAG,GAAG,CAAC,YAAY;QACnB,OAAO,EAAE,QAAQ;KAClB,CAAC;IAEF,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAExC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;YACzE,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,MAAM,EAAE,CAAC,CAAC;YAEvE,MAAM,EAAE,CAAC,IAAI,CACX,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,eAAe,CAAC,EAC9C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAC7C,CAAC;YAEF,MAAM,EAAE,CAAC,IAAI,CACX,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,EACrC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAC7B,CAAC;YAEF,GAAG,CAAC,YAAY,GAAG;gBACjB,GAAG,GAAG,CAAC,YAAY;gBACnB,gBAAgB,EAAE,QAAQ;aAC3B,CAAC;YAEF,GAAG,CAAC,eAAe,GAAG;gBACpB,GAAG,GAAG,CAAC,eAAe;gBACtB,MAAM,EAAE,QAAQ;aACjB,CAAC;YAEF,GAAG,CAAC,OAAO,GAAG;gBACZ,GAAG,GAAG,CAAC,OAAO;gBACd,iBAAiB,EAAE,iBAAiB;gBACpC,gBAAgB,EAAE,oBAAoB;aACvC,CAAC;YAEF,OAAO,CAAC,OAAO,CAAC,WAAW,MAAM,cAAc,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACvC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAClD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { CliState } from "../lib/types.js";
2
+ export declare function resolveTemplateName(authMode: string): string;
3
+ export declare function createProject(state: CliState, targetDir: string, templateRoot: string): Promise<void>;
4
+ //# sourceMappingURL=createProject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createProject.d.ts","sourceRoot":"","sources":["../../src/steps/createProject.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAI5D;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAIf"}
@@ -0,0 +1,16 @@
1
+ import fs from "fs-extra";
2
+ import path from "path";
3
+ import chalk from "chalk";
4
+ export function resolveTemplateName(authMode) {
5
+ if (authMode === "auth")
6
+ return "express-auth";
7
+ if (authMode === "auth-oauth")
8
+ return "express-auth+";
9
+ return "express-base";
10
+ }
11
+ export async function createProject(state, targetDir, templateRoot) {
12
+ const templateName = resolveTemplateName(state.authMode ?? "base");
13
+ const templatePath = path.join(templateRoot, templateName);
14
+ await fs.copy(templatePath, targetDir);
15
+ }
16
+ //# sourceMappingURL=createProject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createProject.js","sourceRoot":"","sources":["../../src/steps/createProject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,cAAc,CAAC;IAC/C,IAAI,QAAQ,KAAK,YAAY;QAAE,OAAO,eAAe,CAAC;IACtD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAe,EACf,SAAiB,EACjB,YAAoB;IAEpB,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC;IACnE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAC3D,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function configureProduction(targetDir: string): Promise<void>;
2
+ export declare function initGit(targetDir: string): Promise<void>;
3
+ export declare function appendProductionReadme(targetDir: string, projectName: string): void;
4
+ //# sourceMappingURL=finalSetup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finalSetup.d.ts","sourceRoot":"","sources":["../../src/steps/finalSetup.ts"],"names":[],"mappings":"AAKA,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAY1E;AAED,wBAAsB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAU9D;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAuBnF"}
@@ -0,0 +1,52 @@
1
+ import fs from "fs-extra";
2
+ import path from "path";
3
+ import { run, getCommand, exitForInterrupt } from "../lib/process.js";
4
+ import { spinner } from "../lib/ui.js";
5
+ export async function configureProduction(targetDir) {
6
+ spinner.start("Setting up production mode (PM2)...");
7
+ try {
8
+ await run(getCommand("npm"), ["install", "pm2"], {
9
+ cwd: targetDir,
10
+ stdio: "ignore",
11
+ });
12
+ spinner.stop();
13
+ }
14
+ catch (err) {
15
+ spinner.fail("Failed to install PM2");
16
+ exitForInterrupt(err);
17
+ }
18
+ }
19
+ export async function initGit(targetDir) {
20
+ try {
21
+ await run(getCommand("git"), ["init"], {
22
+ cwd: targetDir,
23
+ stdio: "ignore",
24
+ });
25
+ spinner.stop();
26
+ }
27
+ catch {
28
+ spinner.fail("Git init failed");
29
+ }
30
+ }
31
+ export function appendProductionReadme(targetDir, projectName) {
32
+ fs.appendFileSync(path.join(targetDir, "README.md"), `
33
+
34
+ 🚀 Production Mode
35
+
36
+ This project is configured for production using PM2.
37
+
38
+ Start app in cluster mode:
39
+
40
+ npm run pm2:start
41
+
42
+ View logs:
43
+
44
+ npm run pm2:logs
45
+
46
+ Stop app:
47
+
48
+ npm run pm2:stop
49
+
50
+ `);
51
+ }
52
+ //# sourceMappingURL=finalSetup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finalSetup.js","sourceRoot":"","sources":["../../src/steps/finalSetup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,SAAiB;IACzD,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACrD,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;YAC/C,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACtC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,SAAiB;IAC7C,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;YACrC,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,SAAiB,EAAE,WAAmB;IAC3E,EAAE,CAAC,cAAc,CACf,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EACjC;;;;;;;;;;;;;;;;;;IAkBA,CACD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function installAuth(targetDir: string): Promise<string>;
2
+ //# sourceMappingURL=installAuth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installAuth.d.ts","sourceRoot":"","sources":["../../src/steps/installAuth.ts"],"names":[],"mappings":"AAMA,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAiCjB"}
@@ -0,0 +1,34 @@
1
+ import fs from "fs-extra";
2
+ import path from "path";
3
+ import { run, getCommand, exitForInterrupt } from "../lib/process.js";
4
+ import { getBestHashLib, generateHashModule } from "../utils/hash.js";
5
+ import { spinner } from "../lib/ui.js";
6
+ export async function installAuth(targetDir) {
7
+ let selectedHash = getBestHashLib();
8
+ spinner.start("Installing password auth...");
9
+ try {
10
+ await run(getCommand("npm"), ["install", selectedHash], {
11
+ cwd: targetDir,
12
+ stdio: "ignore",
13
+ });
14
+ }
15
+ catch {
16
+ if (selectedHash !== "bcryptjs") {
17
+ spinner.warn(`${selectedHash} failed, falling back to bcryptjs`);
18
+ await run(getCommand("npm"), ["install", "bcryptjs"], {
19
+ cwd: targetDir,
20
+ stdio: "ignore",
21
+ });
22
+ selectedHash = "bcryptjs";
23
+ }
24
+ else {
25
+ spinner.fail("Failed to install password auth");
26
+ process.exit(1);
27
+ }
28
+ }
29
+ spinner.stop();
30
+ const hashLib = selectedHash;
31
+ await fs.writeFile(path.join(targetDir, "src/utils/hash.ts"), generateHashModule(hashLib));
32
+ return selectedHash;
33
+ }
34
+ //# sourceMappingURL=installAuth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installAuth.js","sourceRoot":"","sources":["../../src/steps/installAuth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,SAAiB;IAEjB,IAAI,YAAY,GAAG,cAAc,EAAE,CAAC;IAEpC,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAE7C,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE;YACtD,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,YAAY,KAAK,UAAU,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,mCAAmC,CAAC,CAAC;YACjE,MAAM,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE;gBACpD,GAAG,EAAE,SAAS;gBACd,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAC;YACH,YAAY,GAAG,UAAU,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAI,EAAE,CAAC;IAEf,MAAM,OAAO,GAAG,YAAqC,CAAC;IACtD,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,EACzC,kBAAkB,CAAC,OAAO,CAAC,CAC5B,CAAC;IAEF,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function installDependencies(targetDir: string): Promise<void>;
2
+ export declare function generatePrismaClient(targetDir: string): Promise<void>;
3
+ //# sourceMappingURL=installDeps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installDeps.d.ts","sourceRoot":"","sources":["../../src/steps/installDeps.ts"],"names":[],"mappings":"AAGA,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAY1E;AAED,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAY3E"}
@@ -0,0 +1,31 @@
1
+ import { run, getCommand, exitForInterrupt } from "../lib/process.js";
2
+ import { spinner } from "../lib/ui.js";
3
+ export async function installDependencies(targetDir) {
4
+ spinner.start("Installing dependencies...(this may take a few minutes)");
5
+ try {
6
+ await run(getCommand("npm"), ["install"], {
7
+ cwd: targetDir,
8
+ stdio: "ignore",
9
+ });
10
+ spinner.stop();
11
+ }
12
+ catch (err) {
13
+ spinner.fail("Failed to install dependencies");
14
+ exitForInterrupt(err);
15
+ }
16
+ }
17
+ export async function generatePrismaClient(targetDir) {
18
+ spinner.start("Generating Prisma client...");
19
+ try {
20
+ await run(getCommand("npx"), ["prisma@5.22.0", "generate"], {
21
+ cwd: targetDir,
22
+ stdio: "ignore",
23
+ });
24
+ spinner.stop();
25
+ }
26
+ catch (err) {
27
+ spinner.fail("Failed to generate Prisma client");
28
+ exitForInterrupt(err);
29
+ }
30
+ }
31
+ //# sourceMappingURL=installDeps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installDeps.js","sourceRoot":"","sources":["../../src/steps/installDeps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,SAAiB;IACzD,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;IACzE,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE;YACxC,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC/C,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,SAAiB;IAC1D,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC7C,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE;YAC1D,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QACjD,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CliState } from "../lib/types.js";
2
+ export declare function runPrompts(state: CliState): Promise<Partial<CliState>>;
3
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +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;AAEhD,wBAAsB,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CA4C5E"}
@@ -0,0 +1,47 @@
1
+ import inquirer from "inquirer";
2
+ export async function runPrompts(state) {
3
+ return inquirer.prompt([
4
+ {
5
+ type: "list",
6
+ name: "framework",
7
+ message: "Choose framework:",
8
+ choices: ["Express", "Fastify (coming soon)"],
9
+ default: "Express",
10
+ },
11
+ {
12
+ type: "confirm",
13
+ name: "usePrisma",
14
+ message: "Use Prisma?",
15
+ default: true,
16
+ },
17
+ {
18
+ type: "list",
19
+ name: "database",
20
+ message: "Choose database:",
21
+ choices: [
22
+ { name: "PostgreSQL", value: "postgresql" },
23
+ { name: "SQLite ", value: "sqlite" },
24
+ ],
25
+ when: (answers) => answers.usePrisma,
26
+ default: "sqlite",
27
+ },
28
+ {
29
+ type: "confirm",
30
+ name: "useGit",
31
+ message: "Initialize git?",
32
+ default: true,
33
+ },
34
+ {
35
+ type: "list",
36
+ name: "authMode",
37
+ message: "Choose authentication setup:",
38
+ choices: [
39
+ { name: "JWT only", value: "base" },
40
+ { name: "Email + Password Auth", value: "auth" },
41
+ { name: "Full Auth (Password + OAuth)", value: "auth-oauth" },
42
+ ],
43
+ default: "base",
44
+ },
45
+ ]);
46
+ }
47
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/steps/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAGhC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAe;IAC9C,OAAO,QAAQ,CAAC,MAAM,CAAC;QACrB;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,mBAAmB;YAC5B,OAAO,EAAE,CAAC,SAAS,EAAE,uBAAuB,CAAC;YAC7C,OAAO,EAAE,SAAS;SACnB;QACD;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,IAAI;SACd;QACD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,kBAAkB;YAC3B,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;gBAC3C,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE;aACrC;YACD,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS;YACpC,OAAO,EAAE,QAAQ;SAClB;QACD;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EAAE,IAAI;SACd;QACD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,8BAA8B;YACvC,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE;gBACnC,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,MAAM,EAAE;gBAChD,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,YAAY,EAAE;aAC9D;YACD,OAAO,EAAE,MAAM;SAChB;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function getBestHashLib(): string;
2
+ export declare function generateHashModule(hashLib: "argon2" | "bcryptjs"): string;
3
+ //# sourceMappingURL=hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/utils/hash.ts"],"names":[],"mappings":"AAOA,wBAAgB,cAAc,IAAI,MAAM,CAMvC;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,CA0BzE"}
@@ -0,0 +1,41 @@
1
+ import os from "os";
2
+ const platform = os.platform();
3
+ const isTermux = process.env.PREFIX?.includes("com.termux") || process.env.TERMUX === "true";
4
+ export function getBestHashLib() {
5
+ if (isTermux)
6
+ return "bcryptjs";
7
+ if (platform === "win32")
8
+ return "bcryptjs";
9
+ if (platform === "darwin")
10
+ return "argon2";
11
+ if (platform === "linux")
12
+ return "argon2";
13
+ return "bcryptjs";
14
+ }
15
+ export function generateHashModule(hashLib) {
16
+ if (hashLib === "argon2") {
17
+ return `
18
+ import argon2 from "argon2";
19
+
20
+ export const hashPassword = (password: string) => {
21
+ return argon2.hash(password);
22
+ };
23
+
24
+ export const comparePassword = (password: string, hash: string) => {
25
+ return argon2.verify(hash, password);
26
+ };
27
+ `;
28
+ }
29
+ return `
30
+ import bcrypt from "bcryptjs";
31
+
32
+ export const hashPassword = (password: string) => {
33
+ return bcrypt.hash(password, 10);
34
+ };
35
+
36
+ export const comparePassword = (password: string, hash: string) => {
37
+ return bcrypt.compare(password, hash);
38
+ };
39
+ `;
40
+ }
41
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/utils/hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;AAE/B,MAAM,QAAQ,GACZ,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC;AAE9E,MAAM,UAAU,cAAc;IAC5B,IAAI,QAAQ;QAAE,OAAO,UAAU,CAAC;IAChC,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,UAAU,CAAC;IAC5C,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC3C,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,QAAQ,CAAC;IAC1C,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAA8B;IAC/D,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO;;;;;;;;;;CAUV,CAAC;IACA,CAAC;IAED,OAAO;;;;;;;;;;CAUR,CAAC;AACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CliState } from "../lib/types.js";
2
+ export declare function printSummary(state: CliState, isProduction: boolean): void;
3
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +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;AAEhD,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,GAAG,IAAI,CAiEzE"}
@@ -0,0 +1,62 @@
1
+ import chalk from "chalk";
2
+ export function printSummary(state, isProduction) {
3
+ console.log(chalk.green.bold("\n🎉 Authenik8 app created successfully!\n"));
4
+ console.log(chalk.white(`
5
+ Next steps:
6
+
7
+ cd ${state.projectName}
8
+ redis-server --daemonize yes
9
+ npm run dev
10
+
11
+ Auth Features:
12
+ ${state.authMode === "base"
13
+ ? "✓ JWT only"
14
+ : state.authMode === "auth"
15
+ ? "✓ Email + Password"
16
+ : "✓ Password + OAuth (Google/GitHub)"}
17
+
18
+ 🛠 Stack:
19
+ ✔ Express
20
+ ✔ ${state.usePrisma ? (state.database === "postgresql" ? "PostgreSQL" : "SQLite") : "No database"}
21
+ ✔ ${state.usePrisma ? "Prisma ORM" : "No ORM"}
22
+
23
+ 📡 API Routes:
24
+ ${state.authMode === "base"
25
+ ? `
26
+ GET /public
27
+ GET /guest
28
+ GET /protected
29
+ POST /refresh
30
+ `
31
+ : state.authMode === "auth"
32
+ ? `
33
+ POST /auth/register
34
+ POST /auth/login
35
+ POST /auth/refresh
36
+ GET /protected
37
+ `
38
+ : `
39
+ POST /auth/register
40
+ POST /auth/login
41
+ POST /auth/refresh
42
+ GET /auth/google
43
+ GET /auth/github
44
+ GET /protected
45
+ `}
46
+
47
+ 🔥 You're ready to build.
48
+ `));
49
+ if (isProduction) {
50
+ console.log(`
51
+ 🚀 Production Ready Enabled:
52
+
53
+ ✔ PM2 installed
54
+ ✔ Cluster mode enabled
55
+ ✔ Memory auto-restart (300MB)
56
+
57
+ Run:
58
+ npm run pm2:start
59
+ `);
60
+ }
61
+ }
62
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,UAAU,YAAY,CAAC,KAAe,EAAE,YAAqB;IACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,CAAC;IAE5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;;;KAGrB,KAAK,CAAC,WAAW;;;;;EAMpB,KAAK,CAAC,QAAQ,KAAK,MAAM;QACvB,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,KAAK,CAAC,QAAQ,KAAK,MAAM;YAC3B,CAAC,CAAC,oBAAoB;YACtB,CAAC,CAAC,oCACN;;;;IAII,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa;IAC7F,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ;;;EAI3C,KAAK,CAAC,QAAQ,KAAK,MAAM;QACvB,CAAC,CAAC;;;;;CAKL;QACG,CAAC,CAAC,KAAK,CAAC,QAAQ,KAAK,MAAM;YAC3B,CAAC,CAAC;;;;;CAKL;YACG,CAAC,CAAC;;;;;;;CAQN;;;CAGC,CAAC,CAAC,CAAC;IAEF,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;CASf,CAAC,CAAC;IACD,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "create-authenik8-app",
3
- "version": "2.0.7",
3
+ "version": "2.0.8",
4
4
  "description": "Create production-ready backend APIs with a built-in identity engine. Authenik8 scaffolds Express + Prisma apps with JWT auth, refresh token rotation, account linking, Redis-backed security, and scalable architecture out of the box.",
5
5
  "bin": {
6
- "create-authenik8-app": "dist/bin/index.js"
6
+ "create-authenik8-app": "dist/index.js"
7
7
  },
8
8
  "keywords": [
9
9
  "cli",
@@ -1,16 +0,0 @@
1
- module.exports = {
2
- apps: [
3
- {
4
- name: "authenik8-app",
5
- script: "src/server.ts",
6
- instances: "max",
7
- interpreter:"node",
8
- exec_mode: "cluster",
9
- watch: false,
10
- max_memory_restart: "300M",
11
- env: {
12
- NODE_ENV: "production",
13
- },
14
- },
15
- ],
16
- };
@@ -1,16 +0,0 @@
1
- module.exports = {
2
- apps: [
3
- {
4
- name: "authenik8-app",
5
- script: "src/server.ts",
6
- instances: "max",
7
- interpreter:"node",
8
- exec_mode: "cluster",
9
- watch: false,
10
- max_memory_restart: "300M",
11
- env: {
12
- NODE_ENV: "production",
13
- },
14
- },
15
- ],
16
- };
@@ -1,16 +0,0 @@
1
- module.exports = {
2
- apps: [
3
- {
4
- name: "authenik8-app",
5
- script: "src/server.ts",
6
- instances: "max",
7
- interpreter:"node",
8
- exec_mode: "cluster",
9
- watch: false,
10
- max_memory_restart: "300M",
11
- env: {
12
- NODE_ENV: "production",
13
- },
14
- },
15
- ],
16
- };