create-authenik8-app 1.0.2 → 1.0.4
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.
- package/dist/bin/index.js +75 -4
- package/dist/bin/index.js.map +1 -1
- package/package.json +21 -1
- package/templates/prisma/postgresql/.env +4 -0
- package/templates/prisma/postgresql/schema.prisma +37 -0
- package/templates/prisma/sqlite/.env +1 -0
- package/templates/prisma/sqlite/schema.prisma +37 -0
- package/templates/express-ts/prisma/schema.prisma +0 -6
- /package/templates/express-ts/{src/package.json → package.json} +0 -0
- /package/templates/express-ts/{src/tsconfig.json → tsconfig.json} +0 -0
package/dist/bin/index.js
CHANGED
|
@@ -16,6 +16,42 @@ if (!projectName) {
|
|
|
16
16
|
const targetDir = path.join(process.cwd(), projectName);
|
|
17
17
|
async function main() {
|
|
18
18
|
console.log(chalk.blue.bold("\n🚀 Authenik8 App Generator\n"));
|
|
19
|
+
if (process.argv.includes("--help")) {
|
|
20
|
+
console.log(`
|
|
21
|
+
Authenik8 CLI
|
|
22
|
+
|
|
23
|
+
Usage:
|
|
24
|
+
create-authenik8-app <project-name>
|
|
25
|
+
|
|
26
|
+
Options:
|
|
27
|
+
--help Show this help message
|
|
28
|
+
|
|
29
|
+
Features:
|
|
30
|
+
- Express backend (default)
|
|
31
|
+
- Optional Prisma ORM
|
|
32
|
+
- PostgreSQL (production)
|
|
33
|
+
- SQLite (quick start)
|
|
34
|
+
- Optional Git initialization
|
|
35
|
+
|
|
36
|
+
Examples:
|
|
37
|
+
create-authenik8-app my-app
|
|
38
|
+
`);
|
|
39
|
+
process.exit(0);
|
|
40
|
+
}
|
|
41
|
+
console.log(chalk.gray(`
|
|
42
|
+
Available options:
|
|
43
|
+
|
|
44
|
+
Frameworks:
|
|
45
|
+
- Express
|
|
46
|
+
|
|
47
|
+
Database (if Prisma enabled):
|
|
48
|
+
- PostgreSQL
|
|
49
|
+
- SQLite (quick start)
|
|
50
|
+
|
|
51
|
+
Features:
|
|
52
|
+
- Prisma ORM (optional)
|
|
53
|
+
- Git initialization (optional)
|
|
54
|
+
`));
|
|
19
55
|
// 🔥 PROMPTS
|
|
20
56
|
const answers = await inquirer.prompt([
|
|
21
57
|
{
|
|
@@ -30,6 +66,16 @@ async function main() {
|
|
|
30
66
|
message: "Use Prisma?",
|
|
31
67
|
default: true,
|
|
32
68
|
},
|
|
69
|
+
{
|
|
70
|
+
type: "list",
|
|
71
|
+
name: "database",
|
|
72
|
+
message: "Choose database:",
|
|
73
|
+
choices: [
|
|
74
|
+
{ name: "PostgreSQL", value: "postgresql" },
|
|
75
|
+
{ name: "SQLite (quick start)", value: "sqlite" }
|
|
76
|
+
],
|
|
77
|
+
when: (answers) => answers.usePrisma,
|
|
78
|
+
},
|
|
33
79
|
{
|
|
34
80
|
type: "confirm",
|
|
35
81
|
name: "useGit",
|
|
@@ -61,19 +107,44 @@ async function main() {
|
|
|
61
107
|
if (answers.usePrisma) {
|
|
62
108
|
const prismaSpinner = ora("Adding Prisma setup...").start();
|
|
63
109
|
try {
|
|
64
|
-
|
|
65
|
-
|
|
110
|
+
const dbType = answers.database.toLowerCase().includes("post")
|
|
111
|
+
? "postgresql"
|
|
112
|
+
: "sqlite";
|
|
113
|
+
const prismaTemplatePath = path.join(templateRoot, `prisma/${dbType}`);
|
|
114
|
+
// Copy prisma schema
|
|
115
|
+
await fs.copy(path.join(prismaTemplatePath, "schema.prisma"), path.join(targetDir, "prisma/schema.prisma"));
|
|
116
|
+
// Copy env
|
|
117
|
+
await fs.copy(path.join(prismaTemplatePath, ".env"), path.join(targetDir, ".env"));
|
|
118
|
+
const pkgPath = path.join(targetDir, "package.json");
|
|
119
|
+
const pkg = await fs.readJson(pkgPath);
|
|
120
|
+
// Inject dependencies
|
|
121
|
+
pkg.dependencies = {
|
|
122
|
+
...pkg.dependencies,
|
|
123
|
+
"@prisma/client": "^5.0.0",
|
|
124
|
+
};
|
|
125
|
+
pkg.devDependencies = {
|
|
126
|
+
...pkg.devDependencies,
|
|
127
|
+
prisma: "^5.0.0",
|
|
128
|
+
};
|
|
129
|
+
// Add scripts
|
|
130
|
+
pkg.scripts = {
|
|
131
|
+
...pkg.scripts,
|
|
132
|
+
"prisma:generate": "prisma generate",
|
|
133
|
+
"prisma:migrate": "prisma migrate dev",
|
|
134
|
+
};
|
|
135
|
+
prismaSpinner.succeed(`Prisma (${answers.database}) configured`);
|
|
66
136
|
}
|
|
67
137
|
catch (err) {
|
|
68
138
|
prismaSpinner.fail("Failed to setup Prisma");
|
|
139
|
+
console.error(err);
|
|
69
140
|
}
|
|
70
141
|
}
|
|
71
142
|
//
|
|
72
|
-
const installSpinner = ora("Installing dependencies...").start();
|
|
143
|
+
const installSpinner = ora("Installing dependencies...(this may take a few minutes)").start();
|
|
73
144
|
try {
|
|
74
145
|
execSync("npm install", {
|
|
75
146
|
cwd: targetDir,
|
|
76
|
-
stdio: "
|
|
147
|
+
stdio: "ignore",
|
|
77
148
|
});
|
|
78
149
|
installSpinner.succeed("Dependencies installed");
|
|
79
150
|
}
|
package/dist/bin/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bin/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bin/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,29 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-authenik8-app",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"bin": {
|
|
5
5
|
"create-authenik8-app": "dist/bin/index.js"
|
|
6
6
|
},
|
|
7
|
+
"keywords": [
|
|
8
|
+
"cli",
|
|
9
|
+
"create-app",
|
|
10
|
+
"express",
|
|
11
|
+
"node",
|
|
12
|
+
"typescript",
|
|
13
|
+
"prisma",
|
|
14
|
+
"auth",
|
|
15
|
+
"authentication",
|
|
16
|
+
"scaffold",
|
|
17
|
+
"boilerplate",
|
|
18
|
+
"starter",
|
|
19
|
+
"backend",
|
|
20
|
+
"jwt",
|
|
21
|
+
"redis",
|
|
22
|
+
"api",
|
|
23
|
+
"nodejs-cli",
|
|
24
|
+
"project-generator",
|
|
25
|
+
"fullstack-backend"
|
|
26
|
+
],
|
|
7
27
|
"type": "module",
|
|
8
28
|
"dependencies": {
|
|
9
29
|
"authenik8-core": "^0.1.4",
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
generator client {
|
|
2
|
+
provider = "prisma-client-js"
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
datasource db {
|
|
6
|
+
provider = "postgresql"
|
|
7
|
+
url = env("DATABASE_URL")
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
model User {
|
|
11
|
+
id String @id @default(uuid())
|
|
12
|
+
email String @unique
|
|
13
|
+
password String
|
|
14
|
+
role Role @default(USER)
|
|
15
|
+
verified Boolean @default(false)
|
|
16
|
+
|
|
17
|
+
createdAt DateTime @default(now())
|
|
18
|
+
updatedAt DateTime @updatedAt
|
|
19
|
+
|
|
20
|
+
sessions Session[]
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
model Session {
|
|
24
|
+
id String @id @default(uuid())
|
|
25
|
+
userId String
|
|
26
|
+
refreshToken String @unique
|
|
27
|
+
expiresAt DateTime
|
|
28
|
+
|
|
29
|
+
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
30
|
+
|
|
31
|
+
createdAt DateTime @default(now())
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
enum Role {
|
|
35
|
+
USER
|
|
36
|
+
ADMIN
|
|
37
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
DATABASE_URL="file:./dev.db"
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
generator client {
|
|
2
|
+
provider = "prisma-client-js"
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
datasource db {
|
|
6
|
+
provider = "sqlite"
|
|
7
|
+
url = env("DATABASE_URL")
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
model User {
|
|
11
|
+
id String @id @default(uuid())
|
|
12
|
+
email String @unique
|
|
13
|
+
password String
|
|
14
|
+
role Role @default(USER)
|
|
15
|
+
verified Boolean @default(false)
|
|
16
|
+
|
|
17
|
+
createdAt DateTime @default(now())
|
|
18
|
+
updatedAt DateTime @updatedAt
|
|
19
|
+
|
|
20
|
+
sessions Session[]
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
model Session {
|
|
24
|
+
id String @id @default(uuid())
|
|
25
|
+
userId String
|
|
26
|
+
refreshToken String @unique
|
|
27
|
+
expiresAt DateTime
|
|
28
|
+
|
|
29
|
+
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
30
|
+
|
|
31
|
+
createdAt DateTime @default(now())
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
enum Role {
|
|
35
|
+
USER
|
|
36
|
+
ADMIN
|
|
37
|
+
}
|
|
File without changes
|
|
File without changes
|