create-authenik8-app 2.1.7 → 2.2.0

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 (88) hide show
  1. package/README.md +5 -4
  2. package/package.json +1 -1
  3. package/dist/bin/index.d.ts +0 -8
  4. package/dist/bin/index.d.ts.map +0 -1
  5. package/dist/bin/index.js +0 -796
  6. package/dist/bin/index.js.map +0 -1
  7. package/dist/index.d.ts +0 -3
  8. package/dist/index.d.ts.map +0 -1
  9. package/dist/index.js +0 -292
  10. package/dist/index.js.map +0 -1
  11. package/dist/lib/constants.d.ts +0 -4
  12. package/dist/lib/constants.d.ts.map +0 -1
  13. package/dist/lib/constants.js +0 -25
  14. package/dist/lib/constants.js.map +0 -1
  15. package/dist/lib/process.d.ts +0 -7
  16. package/dist/lib/process.d.ts.map +0 -1
  17. package/dist/lib/process.js +0 -60
  18. package/dist/lib/process.js.map +0 -1
  19. package/dist/lib/state.d.ts +0 -8
  20. package/dist/lib/state.d.ts.map +0 -1
  21. package/dist/lib/state.js +0 -31
  22. package/dist/lib/state.js.map +0 -1
  23. package/dist/lib/types.d.ts +0 -17
  24. package/dist/lib/types.d.ts.map +0 -1
  25. package/dist/lib/types.js +0 -2
  26. package/dist/lib/types.js.map +0 -1
  27. package/dist/lib/ui.d.ts +0 -7
  28. package/dist/lib/ui.d.ts.map +0 -1
  29. package/dist/lib/ui.js +0 -124
  30. package/dist/lib/ui.js.map +0 -1
  31. package/dist/steps/configurePrisma.d.ts +0 -3
  32. package/dist/steps/configurePrisma.d.ts.map +0 -1
  33. package/dist/steps/configurePrisma.js +0 -41
  34. package/dist/steps/configurePrisma.js.map +0 -1
  35. package/dist/steps/createProject.d.ts +0 -5
  36. package/dist/steps/createProject.d.ts.map +0 -1
  37. package/dist/steps/createProject.js +0 -35
  38. package/dist/steps/createProject.js.map +0 -1
  39. package/dist/steps/finalSetup.d.ts +0 -7
  40. package/dist/steps/finalSetup.d.ts.map +0 -1
  41. package/dist/steps/finalSetup.js +0 -110
  42. package/dist/steps/finalSetup.js.map +0 -1
  43. package/dist/steps/installAuth.d.ts +0 -3
  44. package/dist/steps/installAuth.d.ts.map +0 -1
  45. package/dist/steps/installAuth.js +0 -18
  46. package/dist/steps/installAuth.js.map +0 -1
  47. package/dist/steps/installDeps.d.ts +0 -4
  48. package/dist/steps/installDeps.d.ts.map +0 -1
  49. package/dist/steps/installDeps.js +0 -50
  50. package/dist/steps/installDeps.js.map +0 -1
  51. package/dist/steps/prompts.d.ts +0 -3
  52. package/dist/steps/prompts.d.ts.map +0 -1
  53. package/dist/steps/prompts.js +0 -76
  54. package/dist/steps/prompts.js.map +0 -1
  55. package/dist/tests/helpers/generator.d.ts +0 -27
  56. package/dist/tests/helpers/generator.d.ts.map +0 -1
  57. package/dist/tests/helpers/generator.js +0 -282
  58. package/dist/tests/helpers/generator.js.map +0 -1
  59. package/dist/tests/integration/generator.test.d.ts +0 -2
  60. package/dist/tests/integration/generator.test.d.ts.map +0 -1
  61. package/dist/tests/integration/generator.test.js +0 -116
  62. package/dist/tests/integration/generator.test.js.map +0 -1
  63. package/dist/tests/integration/snapshot.test.d.ts +0 -2
  64. package/dist/tests/integration/snapshot.test.d.ts.map +0 -1
  65. package/dist/tests/integration/snapshot.test.js +0 -68
  66. package/dist/tests/integration/snapshot.test.js.map +0 -1
  67. package/dist/tests/setup.d.ts +0 -2
  68. package/dist/tests/setup.d.ts.map +0 -1
  69. package/dist/tests/setup.js +0 -10
  70. package/dist/tests/setup.js.map +0 -1
  71. package/dist/tests/unit/cli.test.d.ts +0 -2
  72. package/dist/tests/unit/cli.test.d.ts.map +0 -1
  73. package/dist/tests/unit/cli.test.js +0 -242
  74. package/dist/tests/unit/cli.test.js.map +0 -1
  75. package/dist/utils/hash.d.ts +0 -4
  76. package/dist/utils/hash.d.ts.map +0 -1
  77. package/dist/utils/hash.js +0 -51
  78. package/dist/utils/hash.js.map +0 -1
  79. package/dist/utils/output.d.ts +0 -3
  80. package/dist/utils/output.d.ts.map +0 -1
  81. package/dist/utils/output.js +0 -65
  82. package/dist/utils/output.js.map +0 -1
  83. package/dist/vitest.config.d.ts +0 -3
  84. package/dist/vitest.config.d.ts.map +0 -1
  85. package/dist/vitest.config.js +0 -21
  86. package/dist/vitest.config.js.map +0 -1
  87. package/templates/prisma/postgresql/.env +0 -3
  88. package/templates/prisma/sqlite/.env +0 -1
package/dist/lib/ui.js DELETED
@@ -1,124 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/lib/ui.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,41 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,5 +0,0 @@
1
- import type { CliState } from "../lib/types.js";
2
- export declare function resolveTemplateName(authMode: string): string;
3
- export declare function configurePackageJson(targetDir: string, usePrisma: boolean): void;
4
- export declare function createProject(state: CliState, targetDir: string, templateRoot: string): Promise<void>;
5
- //# sourceMappingURL=createProject.d.ts.map
@@ -1 +0,0 @@
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,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,CAsBhF;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAIf"}
@@ -1,35 +0,0 @@
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 function configurePackageJson(targetDir, usePrisma) {
12
- const pkgPath = path.join(targetDir, "package.json");
13
- const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8"));
14
- if (!pkg.scripts.postinstall?.includes("prisma")) {
15
- pkg.scripts.postinstall = "npx prisma@5.22.0 generate";
16
- }
17
- if (usePrisma) {
18
- const currentDev = pkg.scripts.dev || "tsx watch src/index.ts";
19
- if (!currentDev.includes("prisma@5.22.0 generate")) {
20
- pkg.scripts.dev = `npx prisma@5.22.0 generate && ${currentDev}`;
21
- }
22
- //pkg.scripts ??= {};
23
- // pkg.scripts.postinstall = "npx prisma@5.22.0 generate";
24
- //pkg.scripts.dev = pkg.scripts.dev
25
- // ? `npx prisma@5.22.0 generate && ${pkg.scripts.dev}`
26
- //: "npx prisma@5.22.0 generate";
27
- }
28
- fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2));
29
- }
30
- export async function createProject(state, targetDir, templateRoot) {
31
- const templateName = resolveTemplateName(state.authMode ?? "base");
32
- const templatePath = path.join(templateRoot, templateName);
33
- await fs.copy(templatePath, targetDir);
34
- }
35
- //# sourceMappingURL=createProject.js.map
@@ -1 +0,0 @@
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,UAAU,oBAAoB,CAAC,SAAiB,EAAE,SAAkB;IACxE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAE1D,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,4BAA4B,CAAC;IACzD,CAAC;IAEH,IAAI,SAAS,EAAE,CAAC;QACf,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,wBAAwB,CAAC;QAC9D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;YACnD,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,iCAAiC,UAAU,EAAE,CAAC;QAClE,CAAC;QAEF,qBAAqB;QACrB,0DAA0D;QACzD,mCAAmC;QAClC,uDAAuD;QACtD,iCAAiC;IACrC,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1D,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"}
@@ -1,7 +0,0 @@
1
- export declare function hasBun(): boolean;
2
- export declare function resolveRuntime(runtime: any): "node" | "bun";
3
- export declare function createPm2Config(targetDir: string, projectName: string, runtime: "node" | "bun"): void;
4
- export declare function configureProduction(targetDir: string, projectName: string, runtime: "node" | "bun"): Promise<void>;
5
- export declare function initGit(targetDir: string): Promise<void>;
6
- export declare function appendProductionReadme(targetDir: string, projectName: string): void;
7
- //# sourceMappingURL=finalSetup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"finalSetup.d.ts","sourceRoot":"","sources":["../../src/steps/finalSetup.ts"],"names":[],"mappings":"AAUA,wBAAgB,MAAM,IAAI,OAAO,CAOhC;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,MAAM,GAAG,KAAK,CAO3D;AAGD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAC,OAAO,EAAE,MAAM,GAAE,KAAK,GAAG,IAAI,CAuCnG;AAGD,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAC,WAAW,EAAC,MAAM,EAAG,OAAO,EAAC,MAAM,GAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBnH;AAKH,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"}
@@ -1,110 +0,0 @@
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
- import { execSync } from "child_process";
6
- const PM2_VERSION = "^5.4.2";
7
- const TS_NODE_VERSION = "^10.9.2";
8
- export function hasBun() {
9
- try {
10
- execSync("bun --version", { stdio: "ignore" });
11
- return true;
12
- }
13
- catch {
14
- return false;
15
- }
16
- }
17
- export function resolveRuntime(runtime) {
18
- if (runtime === "bun" && !hasBun()) {
19
- console.log("⚠️ Bun not found, falling back to Node");
20
- return "node";
21
- }
22
- if (runtime === "bun")
23
- return "bun";
24
- return "node";
25
- }
26
- export function createPm2Config(targetDir, projectName, runtime) {
27
- const configPath = path.join(targetDir, "ecosystem.config.js");
28
- const useBun = runtime === "bun";
29
- const content = useBun
30
- ? `module.exports = {
31
- apps: [
32
- {
33
- name: "${projectName}",
34
- script: "src/server.ts",
35
- interpreter: "bun",
36
- instances: "max",
37
- exec_mode: "cluster",
38
- watch: false,
39
- env: {
40
- NODE_ENV: "production"
41
- }
42
- }
43
- ]
44
- }` :
45
- `module.exports = {
46
- apps: [
47
- {
48
- name: "${projectName}",
49
- script: "src/server.ts",
50
- instances: "max",
51
- interpreter:"node",
52
- interpreter_args: "-r ts-node/register",
53
- exec_mode: "cluster",
54
- watch: false,
55
- max_memory_restart: "300M",
56
- env: {
57
- NODE_ENV: "production"
58
- }
59
- }
60
- ]
61
- };`;
62
- fs.writeFileSync(configPath, content, "utf-8");
63
- }
64
- export async function configureProduction(targetDir, projectName, runtime) {
65
- const pkgPath = path.join(targetDir, "package.json");
66
- const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8"));
67
- pkg.dependencies["pm2"] = PM2_VERSION;
68
- if (runtime === "node") {
69
- pkg.dependencies["ts-node"] = TS_NODE_VERSION;
70
- }
71
- pkg.scripts["pm2:start"] = "npx pm2 start ecosystem.config.js";
72
- pkg.scripts["pm2:stop"] = `npx pm2 stop ${projectName}`;
73
- pkg.scripts["pm2:logs"] = "npx pm2 logs";
74
- fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2));
75
- createPm2Config(targetDir, projectName, runtime);
76
- }
77
- export async function initGit(targetDir) {
78
- try {
79
- await run(getCommand("git"), ["init"], {
80
- cwd: targetDir,
81
- stdio: "ignore",
82
- });
83
- spinner.stop();
84
- }
85
- catch {
86
- spinner.fail("Git init failed");
87
- }
88
- }
89
- export function appendProductionReadme(targetDir, projectName) {
90
- fs.appendFileSync(path.join(targetDir, "README.md"), `
91
-
92
- 🚀 Production Mode
93
-
94
- This project is configured for production using PM2.
95
-
96
- Start app in cluster mode:
97
-
98
- npm run pm2:start
99
-
100
- View logs:
101
-
102
- npm run pm2:logs
103
-
104
- Stop app:
105
-
106
- npm run pm2:stop
107
-
108
- `);
109
- }
110
- //# sourceMappingURL=finalSetup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"finalSetup.js","sourceRoot":"","sources":["../../src/steps/finalSetup.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { PackageManager } from "./installDeps.js";
2
- export declare function installAuth(targetDir: string, pm: PackageManager): Promise<string>;
3
- //# sourceMappingURL=installAuth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"installAuth.d.ts","sourceRoot":"","sources":["../../src/steps/installAuth.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIvD,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EAAC,EAAE,EAAE,cAAc,GACnC,OAAO,CAAC,MAAM,CAAC,CAsBjB"}
@@ -1,18 +0,0 @@
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, pm) {
7
- let selectedHash = getBestHashLib(pm);
8
- spinner.start("Installing password auth...");
9
- const pkgPath = path.join(targetDir, "package.json");
10
- const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8"));
11
- pkg.dependencies[selectedHash] = selectedHash === "argon2" ? "^0.31.2" : "^2.4.3";
12
- fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2));
13
- spinner.stop();
14
- const hashLib = selectedHash;
15
- await fs.writeFile(path.join(targetDir, "src/utils/hash.ts"), generateHashModule(hashLib));
16
- return selectedHash;
17
- }
18
- //# sourceMappingURL=installAuth.js.map
@@ -1 +0,0 @@
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;AAKvC,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,SAAiB,EAAC,EAAkB;IAEpC,IAAI,YAAY,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;IAGtC,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAE7C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAE1D,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;IAElF,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAE1D,OAAO,CAAC,IAAI,EAAE,CAAC;IAEb,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"}
@@ -1,4 +0,0 @@
1
- export type PackageManager = "pnpm" | "bun" | "npm";
2
- export declare function detectPackageManager(): PackageManager;
3
- export declare function installDependencies(targetDir: string): Promise<void>;
4
- //# sourceMappingURL=installDeps.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"installDeps.d.ts","sourceRoot":"","sources":["../../src/steps/installDeps.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;AAEpD,wBAAgB,oBAAoB,IAAI,cAAc,CAYrD;AAgBD,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAc1E"}
@@ -1,50 +0,0 @@
1
- import fs from "fs-extra";
2
- import path from "path";
3
- import { execSync } from "child_process";
4
- import { run, getCommand, exitForInterrupt } from "../lib/process.js";
5
- import { spinner } from "../lib/ui.js";
6
- export function detectPackageManager() {
7
- try {
8
- if (process.env.npm_execpath?.includes("pnpm"))
9
- return "pnpm";
10
- if (process.env.npm_execpath?.includes("bun"))
11
- return "bun";
12
- execSync("pnpm --version", { stdio: "ignore" });
13
- return "pnpm";
14
- }
15
- catch { }
16
- try {
17
- execSync("bun --version", { stdio: "ignore" });
18
- return "bun";
19
- }
20
- catch { }
21
- return "npm";
22
- }
23
- function getInstallArgs(pm, targetDir) {
24
- switch (pm) {
25
- case "pnpm":
26
- return ["install", "--prefer-offline"];
27
- case "bun":
28
- return ["install"];
29
- case "npm":
30
- default:
31
- return ["install", "--prefer-offline", "--no-audit", "--no-fund"];
32
- }
33
- }
34
- export async function installDependencies(targetDir) {
35
- const pm = detectPackageManager();
36
- spinner.start("Installing dependencies...(this may take a few minutes)");
37
- try {
38
- await run(getCommand(pm), getInstallArgs(pm, targetDir), {
39
- cwd: targetDir,
40
- stdio: "inherit",
41
- });
42
- spinner.stop();
43
- }
44
- catch (err) {
45
- spinner.fail("Failed to install dependencies");
46
- exitForInterrupt(err);
47
- throw err;
48
- }
49
- }
50
- //# sourceMappingURL=installDeps.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"installDeps.js","sourceRoot":"","sources":["../../src/steps/installDeps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAIvC,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QAC9D,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC5D,QAAQ,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IACV,IAAI,CAAC;QACH,QAAQ,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC/C,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IACV,OAAO,KAAK,CAAC;AACf,CAAC;AAGD,SAAS,cAAc,CAAC,EAAkB,EAAE,SAAiB;IAC3D,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,MAAM;YACT,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QACzC,KAAK,KAAK;YACR,OAAO,CAAC,SAAS,CAAC,CAAC;QACrB,KAAK,KAAK,CAAC;QACX;YACA,OAAO,CAAC,SAAS,EAAE,kBAAkB,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IAEpE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,SAAiB;IACzD,MAAM,EAAE,GAAG,oBAAoB,EAAE,CAAC;IAClC,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;IACzE,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE;YACvD,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,SAAS;SACjB,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;QACxB,MAAM,GAAG,CAAC;IACV,CAAC;AACH,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { CliState } from "../lib/types.js";
2
- export declare function runPrompts(state: CliState, isProduction: boolean): Promise<Partial<CliState>>;
3
- //# sourceMappingURL=prompts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/steps/prompts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGhD,wBAAsB,UAAU,CAAC,KAAK,EAAC,QAAQ,EAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CA0EjG"}
@@ -1,76 +0,0 @@
1
- import inquirer from "inquirer";
2
- import { hasBun } from "./finalSetup.js";
3
- export async function runPrompts(state, isProduction) {
4
- const bunAvailable = hasBun();
5
- return inquirer.prompt([
6
- {
7
- type: "list",
8
- name: "framework",
9
- message: "Choose framework:",
10
- choices: ["Express", "Fastify (coming soon)"],
11
- default: "Express",
12
- },
13
- {
14
- type: "list",
15
- name: "authMode",
16
- message: "Choose authentication setup:",
17
- choices: [
18
- { name: "JWT only", value: "base" },
19
- { name: "Email + Password Auth", value: "auth" },
20
- { name: "Full Auth (Password + OAuth)", value: "auth-oauth" },
21
- ],
22
- default: "base",
23
- },
24
- {
25
- type: "confirm",
26
- name: "usePrisma",
27
- message: "Use Prisma?",
28
- default: true,
29
- when: (answers) => answers.authMode === "base"
30
- },
31
- {
32
- type: "list",
33
- name: "database",
34
- message: "Choose database:",
35
- choices: [
36
- { name: "PostgreSQL", value: "postgresql" },
37
- { name: "SQLite ", value: "sqlite" },
38
- ],
39
- when: (answers) => answers.usePrisma || answers.authMode === "auth" || answers.authMode === "auth-oauth",
40
- default: "sqlite",
41
- },
42
- {
43
- type: "confirm",
44
- name: "useGit",
45
- message: "Initialize git?",
46
- default: true,
47
- },
48
- {
49
- type: "list",
50
- name: "runtime",
51
- message: "Choose runtime:",
52
- choices: [
53
- {
54
- name: bunAvailable
55
- ? "Bun (fast, no build step)"
56
- : "Bun (not installed)",
57
- value: "bun",
58
- disabled: !bunAvailable && "Bun not found",
59
- },
60
- {
61
- name: "Node (stable, widely supported)",
62
- value: "node",
63
- },
64
- ],
65
- when: () => isProduction,
66
- default: bunAvailable ? "bun" : "node"
67
- },
68
- ])
69
- .then((result) => {
70
- if (result.runtime === "bun" && !bunAvailable) {
71
- result.runtime = "node";
72
- }
73
- return result;
74
- });
75
- }
76
- //# sourceMappingURL=prompts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/steps/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAA;AAEtC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAc,EAAC,YAAqB;IACrE,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC;IAC5B,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,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;QACD;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,IAAI;YACd,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,MAAM;SAC9C;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,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,YAAY;YACxG,OAAO,EAAE,QAAQ;SAClB;QACD;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EAAE,IAAI;SACd;QAEE;YACD,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,YAAY;wBAChB,CAAC,CAAC,2BAA2B;wBAC7B,CAAC,CAAC,qBAAqB;oBACzB,KAAK,EAAE,KAAK;oBACZ,QAAQ,EAAE,CAAC,YAAY,IAAI,eAAe;iBAC3C;gBACD;oBACE,IAAI,EAAE,iCAAiC;oBACvC,KAAK,EAAE,MAAM;iBACd;aACF;YACD,IAAI,EAAE,GAAG,EAAE,CAAC,YAAY;YACxB,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;SACvC;KACF,CAAC;SACD,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QACf,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;YAC9C,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;QAC1B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAA;AAEJ,CAAC"}
@@ -1,27 +0,0 @@
1
- import type { CliState } from "../../lib/types.js";
2
- type TemplateKind = "base" | "auth" | "auth-oauth";
3
- export type GeneratedProject = {
4
- rootDir: string;
5
- targetDir: string;
6
- state: CliState;
7
- cleanup: () => Promise<void>;
8
- hashLib?: string;
9
- };
10
- export type GenerateProjectOptions = {
11
- template: TemplateKind;
12
- database?: "sqlite" | "postgresql";
13
- usePrisma?: boolean;
14
- productionRuntime?: "node" | "bun";
15
- hashLib?: "argon2" | "bcryptjs";
16
- };
17
- export declare function generateProjectFixture(options: GenerateProjectOptions): Promise<GeneratedProject>;
18
- export declare function collectProjectTree(rootDir: string): Promise<string[]>;
19
- export declare function readProjectFiles(rootDir: string, relativePaths: string[]): Promise<Record<string, string>>;
20
- export declare function installGeneratedAppStubs(targetDir: string): Promise<void>;
21
- export declare function runGeneratedServerSmoke(targetDir: string, entryPath: string): Promise<{
22
- code: number | null;
23
- stdout: string;
24
- stderr: string;
25
- }>;
26
- export {};
27
- //# sourceMappingURL=generator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/tests/helpers/generator.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAOnD,KAAK,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC;AAEnD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACnC,OAAO,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;CACjC,CAAC;AAsCF,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CA8C3B;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAgC3E;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,mCAS9E;AAED,wBAAsB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkJ/E;AAED,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;UAc/C,MAAM,GAAG,IAAI;YAAU,MAAM;YAAU,MAAM;GA8C/E"}