create-authenik8-app 2.1.0 → 2.1.2
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/README.md +131 -56
- package/dist/index.js +17 -20
- package/dist/index.js.map +1 -1
- package/dist/lib/process.d.ts.map +1 -1
- package/dist/lib/process.js +4 -0
- package/dist/lib/process.js.map +1 -1
- package/dist/steps/createProject.d.ts +1 -0
- package/dist/steps/createProject.d.ts.map +1 -1
- package/dist/steps/createProject.js +15 -0
- package/dist/steps/createProject.js.map +1 -1
- package/dist/steps/finalSetup.d.ts.map +1 -1
- package/dist/steps/finalSetup.js +12 -15
- package/dist/steps/finalSetup.js.map +1 -1
- package/dist/steps/installAuth.d.ts +2 -1
- package/dist/steps/installAuth.d.ts.map +1 -1
- package/dist/steps/installAuth.js +6 -22
- package/dist/steps/installAuth.js.map +1 -1
- package/dist/steps/installDeps.d.ts +2 -1
- package/dist/steps/installDeps.d.ts.map +1 -1
- package/dist/steps/installDeps.js +34 -15
- package/dist/steps/installDeps.js.map +1 -1
- package/dist/steps/prompts.d.ts +1 -1
- package/dist/steps/prompts.d.ts.map +1 -1
- package/dist/steps/prompts.js +15 -15
- package/dist/steps/prompts.js.map +1 -1
- package/dist/utils/hash.d.ts +2 -1
- package/dist/utils/hash.d.ts.map +1 -1
- package/dist/utils/hash.js +11 -1
- package/dist/utils/hash.js.map +1 -1
- package/package.json +6 -2
- package/templates/express-auth/package.json +4 -7
- package/templates/express-auth+/package.json +4 -7
- package/templates/express-base/package.json +7 -7
package/README.md
CHANGED
|
@@ -13,6 +13,7 @@ if this saved you time, a ⭐ helps a lot
|
|
|
13
13
|

|
|
14
14
|

|
|
15
15
|

|
|
16
|
+

|
|
16
17
|
|
|
17
18
|
|
|
18
19
|

|
|
@@ -28,19 +29,17 @@ if this saved you time, a ⭐ helps a lot
|
|
|
28
29
|
|
|
29
30
|
Create a new project:
|
|
30
31
|
|
|
31
|
-
|
|
32
|
+
```
|
|
32
33
|
bash
|
|
33
34
|
npx create-authenik8-app my-app
|
|
34
|
-
``
|
|
35
|
-
|
|
36
|
-
Then:
|
|
37
35
|
|
|
38
36
|
cd my-app
|
|
39
37
|
|
|
40
38
|
redis-server --daemonize yes
|
|
41
39
|
|
|
42
40
|
npm run dev
|
|
43
|
-
|
|
41
|
+
```
|
|
42
|
+
Your production-ready auth backend will be ready in 2min.
|
|
44
43
|
|
|
45
44
|
---
|
|
46
45
|
|
|
@@ -48,9 +47,9 @@ npm run dev
|
|
|
48
47
|
|
|
49
48
|
• A fully working Express authentication starter with:
|
|
50
49
|
|
|
51
|
-
• JWT authentication (access + refresh tokens)
|
|
50
|
+
• JWT authentication (access + refresh tokens) with secure rotation
|
|
52
51
|
|
|
53
|
-
•
|
|
52
|
+
• Secure refresh token rotation
|
|
54
53
|
|
|
55
54
|
• Redis-based token storage
|
|
56
55
|
|
|
@@ -64,21 +63,22 @@ npm run dev
|
|
|
64
63
|
|
|
65
64
|
• .env file generated automatically
|
|
66
65
|
|
|
66
|
+
• Production extras (PM2 cluster, Helmet, rate limiting, memory guards)
|
|
67
67
|
|
|
68
68
|
|
|
69
69
|
---
|
|
70
70
|
|
|
71
71
|
## Why Authenik8?
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
Most developers waste days (or weeks) on:
|
|
74
74
|
|
|
75
|
-
|
|
75
|
+
• Manual JWT setup
|
|
76
76
|
|
|
77
|
-
refresh token handling
|
|
77
|
+
• Secure refresh token handling
|
|
78
78
|
|
|
79
|
-
Redis
|
|
79
|
+
• Redis session configuration
|
|
80
80
|
|
|
81
|
-
access control
|
|
81
|
+
• Proper access control
|
|
82
82
|
|
|
83
83
|
|
|
84
84
|
Authenik8 provides all of this out of the box so you can start building your API immediately.
|
|
@@ -88,19 +88,16 @@ Authenik8 provides all of this out of the box so you can start building your API
|
|
|
88
88
|
|
|
89
89
|
## Requirements
|
|
90
90
|
|
|
91
|
-
Node.js 18+
|
|
91
|
+
• Node.js 18+
|
|
92
92
|
|
|
93
|
-
Redis (required for refresh tokens)
|
|
93
|
+
• Redis (required for refresh tokens & security features)
|
|
94
94
|
|
|
95
|
+
Redis (Local)
|
|
96
|
+
```
|
|
97
|
+
Bash
|
|
95
98
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
## Redis Setup
|
|
100
|
-
|
|
101
|
-
Local
|
|
102
|
-
|
|
103
|
-
redis-server --daemomize yes
|
|
99
|
+
redis-server --daemonize yes
|
|
100
|
+
```
|
|
104
101
|
|
|
105
102
|
|
|
106
103
|
---
|
|
@@ -109,86 +106,164 @@ redis-server --daemomize yes
|
|
|
109
106
|
|
|
110
107
|
Generated automatically:
|
|
111
108
|
|
|
109
|
+
The CLI generates these automatically:
|
|
112
110
|
|
|
111
|
+
```
|
|
113
112
|
JWT_SECRET=your-secret
|
|
114
113
|
REFRESH_SECRET=your-refresh-secret
|
|
115
|
-
|
|
116
114
|
REDIS_HOST=127.0.0.1
|
|
117
115
|
REDIS_PORT=6379
|
|
118
|
-
|
|
116
|
+
```
|
|
119
117
|
|
|
120
118
|
|
|
121
119
|
---
|
|
122
120
|
|
|
123
121
|
|
|
124
|
-
|
|
125
122
|
## RBAC Example
|
|
126
123
|
|
|
127
124
|
Example of a protected route:
|
|
128
|
-
|
|
125
|
+
```
|
|
129
126
|
app.get("/admin", auth.requireAdmin, (req, res) => {
|
|
130
127
|
res.json({ message: "Admin only route" });
|
|
131
128
|
});
|
|
132
|
-
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## How It Works (Key Concept)
|
|
134
|
+
|
|
135
|
+
Authenik8 is not just another auth library.
|
|
136
|
+
It is an auth system generator.
|
|
137
|
+
At its core is the Identity Engine ``(authenik8-core)`` that treats authentication as an
|
|
138
|
+
|
|
139
|
+
# identity resolution problem:
|
|
140
|
+
|
|
141
|
+
• Unifies credentials (email/password) + OAuth providers
|
|
142
|
+
|
|
143
|
+
• Prevents duplicate identities
|
|
144
|
+
|
|
145
|
+
• Handles account linking intelligently
|
|
146
|
+
|
|
147
|
+
• Normalizes data across providers
|
|
148
|
+
|
|
149
|
+
This design makes future additions (MFA, WebAuthn, etc.) much cleaner.
|
|
133
150
|
|
|
134
151
|
---
|
|
135
152
|
## Powered by
|
|
136
153
|
|
|
137
|
-
authenik8-core
|
|
154
|
+
authenik8-core (v1.0.3) — battle-tested identity & token engine
|
|
138
155
|
|
|
139
156
|
---
|
|
140
157
|
|
|
141
|
-
##
|
|
158
|
+
## Production Enhancements
|
|
142
159
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
160
|
+
• PM2 cluster mode + auto-restart
|
|
161
|
+
|
|
162
|
+
• Memory usage guardrails
|
|
163
|
+
|
|
164
|
+
• Security middleware (Helmet, rate limiting, etc.)
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## The Identity Engine
|
|
146
169
|
|
|
147
|
-
|
|
170
|
+
At the heart of Authenik8 is the **Identity Engine** , a unified authentication core built into `authenik8-core`.
|
|
148
171
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
### Why a dedicated Identity Engine?
|
|
175
|
+
|
|
176
|
+
Traditional auth systems treat login as separate, isolated flows:
|
|
177
|
+
|
|
178
|
+
• Email/password goes one way
|
|
179
|
+
|
|
180
|
+
• Google OAuth another way
|
|
181
|
+
|
|
182
|
+
• GitHub yet another
|
|
183
|
+
|
|
184
|
+
This leads to duplicate accounts, inconsistent data, fragile linking logic, and security gaps.
|
|
185
|
+
|
|
186
|
+
The **Identity Engine** solves this by treating authentication as an **identity resolution problem** instead of just credential validation.
|
|
153
187
|
|
|
154
188
|
---
|
|
155
189
|
|
|
156
|
-
|
|
190
|
+
### What the Identity Engine does
|
|
191
|
+
|
|
192
|
+
• **Unified Identity Resolution**
|
|
193
|
+
It intelligently resolves any login method (credentials, OAuth, or future strategies) into a single, consistent user identity in your system.
|
|
157
194
|
|
|
158
|
-
•
|
|
159
|
-
|
|
160
|
-
OAuth in Authenik8 is not a direct provider integration layer.
|
|
195
|
+
• **Smart Account Linking**
|
|
196
|
+
Automatically detects when a user already exists (via email or other signals) and offers secure linking instead of creating duplicates.
|
|
161
197
|
|
|
162
|
-
|
|
198
|
+
• **Profile Normalization**
|
|
199
|
+
Converts provider-specific data (Google profile, GitHub profile, etc.) into your app’s clean, unified user schema.
|
|
163
200
|
|
|
164
|
-
|
|
165
|
-
-
|
|
166
|
-
- Handling login vs account linking flows
|
|
167
|
-
- Preventing duplicate identity creation across providers
|
|
168
|
-
- Normalizing provider-specific user data into a unified schema
|
|
201
|
+
• **Secure Token Lifecycle Management**
|
|
202
|
+
Handles JWT access + refresh tokens with rotation, JTI-based replay protection, and Redis-backed stateful control.
|
|
169
203
|
|
|
170
|
-
|
|
204
|
+
- **Consistent Security Layer**
|
|
205
|
+
Applies the same high-security rules (rate limiting, IP awareness, session controls) across all authentication methods.
|
|
171
206
|
|
|
172
207
|
---
|
|
173
208
|
|
|
174
|
-
###
|
|
209
|
+
### OAuth Through the Identity Engine
|
|
210
|
+
|
|
211
|
+
OAuth (Google, GitHub, and more coming) is **not** implemented as direct Passport.js-style routes. Instead:
|
|
212
|
+
|
|
213
|
+
1. The provider callback is received
|
|
214
|
+
|
|
215
|
+
2. The Identity Engine resolves/normalizes the profile
|
|
216
|
+
|
|
217
|
+
3. It decides: login existing user, link to existing account, or create new identity
|
|
218
|
+
|
|
219
|
+
4. Returns consistent tokens and user data
|
|
220
|
+
|
|
221
|
+
This design makes adding new providers or authentication methods much cleaner and more secure.
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## Authenik8 vs Passport.js
|
|
226
|
+
|
|
227
|
+
| Aspect | **Authenik8** | **Passport.js** |
|
|
228
|
+
|---------------------------|----------------------------------------------------|------------------------------------------|
|
|
229
|
+
| **Purpose** | Full auth system generator | Authentication middleware |
|
|
230
|
+
| **Setup Time** | \~30 seconds (complete project) | Hours to days |
|
|
231
|
+
| **JWT + Refresh Tokens** | Secure rotation + replay protection built-in | Manual implementation required |
|
|
232
|
+
| **OAuth** | Unified via Identity Engine (smart linking) | Separate strategies per provider |
|
|
233
|
+
| **RBAC** | Built-in middleware | Not included |
|
|
234
|
+
| **Production Features** | PM2, Helmet, rate limiting, memory guards | None (you add them) |
|
|
235
|
+
| **Identity Management** | Centralized Identity Engine | None |
|
|
236
|
+
| **Flexibility** | Medium (opinionated & extensible) | Very high |
|
|
237
|
+
| **Best For** | Fast, secure, consistent backends | Maximum customization |
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
Passport.js is a great flexible tool, but it leaves you to build secure JWT, refresh logic, OAuth linking, and RBAC yourself.
|
|
241
|
+
Authenik8 gives you a complete, production-ready authentication system from day one.
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
### Benefits for you
|
|
247
|
+
|
|
248
|
+
• No more duplicate user headaches
|
|
249
|
+
|
|
250
|
+
• Consistent security behavior across all login methods
|
|
175
251
|
|
|
176
|
-
-
|
|
177
|
-
- Auto restart on crashes
|
|
178
|
-
- Memory usage guardrails
|
|
179
|
-
- Basic security middleware (helmet, rate limiting)
|
|
252
|
+
• Easier future-proofing (MFA, WebAuthn, enterprise SSO, etc.)
|
|
180
253
|
|
|
254
|
+
• Cleaner, more maintainable codebase in your generated project
|
|
181
255
|
|
|
256
|
+
The Identity Engine is what makes Authenik8 feel like a coherent **authentication system** rather than a collection of routes and middleware.
|
|
182
257
|
|
|
183
258
|
---
|
|
184
259
|
|
|
185
260
|
## Notes
|
|
186
261
|
|
|
187
|
-
|
|
262
|
+
• This generates a starter project, not a full framework
|
|
188
263
|
|
|
189
|
-
|
|
264
|
+
• Redis is mandatory for security features
|
|
190
265
|
|
|
191
|
-
|
|
266
|
+
• authenik8-core is closed-source for security reasons (implementation details)
|
|
192
267
|
|
|
193
268
|
|
|
194
269
|
|
package/dist/index.js
CHANGED
|
@@ -8,10 +8,10 @@ import { initState, saveState, loadState, clearState, hasReachedStep, getState }
|
|
|
8
8
|
import { killAllProcesses, run, getCommand } from "./lib/process.js";
|
|
9
9
|
import { showBootLogo, renderStep, spinner } from "./lib/ui.js";
|
|
10
10
|
import { runPrompts } from "./steps/prompts.js";
|
|
11
|
-
import { createProject } from "./steps/createProject.js";
|
|
11
|
+
import { createProject, configurePackageJson } from "./steps/createProject.js";
|
|
12
12
|
import { installAuth } from "./steps/installAuth.js";
|
|
13
13
|
import { configurePrisma } from "./steps/configurePrisma.js";
|
|
14
|
-
import { installDependencies,
|
|
14
|
+
import { installDependencies, detectPackageManager } from "./steps/installDeps.js";
|
|
15
15
|
import { configureProduction, initGit, appendProductionReadme, resolveRuntime } from "./steps/finalSetup.js";
|
|
16
16
|
import { printSummary } from "./utils/output.js";
|
|
17
17
|
const __filename = fileURLToPath(import.meta.url);
|
|
@@ -135,11 +135,17 @@ Resumable steps:
|
|
|
135
135
|
console.log(chalk.yellow(`\n↻ Resuming setup for ${projectName} from "${currentStep}"...\n`));
|
|
136
136
|
}
|
|
137
137
|
else {
|
|
138
|
-
const promptAnswers = await runPrompts(getState());
|
|
138
|
+
const promptAnswers = await runPrompts(getState(), isProduction);
|
|
139
139
|
saveState({ ...promptAnswers, step: "prompts" });
|
|
140
140
|
currentStep = "prompts";
|
|
141
141
|
}
|
|
142
|
+
const raw = getState();
|
|
143
|
+
if ((raw.authMode === "auth" || raw.authMode === "auth-oauth") && !raw.usePrisma) {
|
|
144
|
+
console.log(chalk.yellow("\n⚠ Auth and Auth+OAuth require Prisma — enabling automatically.\n"));
|
|
145
|
+
saveState({ usePrisma: true, database: raw.database ?? "sqlite" });
|
|
146
|
+
}
|
|
142
147
|
const state = getState();
|
|
148
|
+
const runtime = resolveRuntime(state.runtime);
|
|
143
149
|
assertRequired(state.framework, "framework");
|
|
144
150
|
assertRequired(state.authMode, "authMode");
|
|
145
151
|
if (state.usePrisma) {
|
|
@@ -170,7 +176,8 @@ Resumable steps:
|
|
|
170
176
|
let selectedHash = "bcryptjs";
|
|
171
177
|
if (!hasReachedStep(currentStep, "auth-installed")) {
|
|
172
178
|
if (getState().authMode !== "base") {
|
|
173
|
-
|
|
179
|
+
const pm = detectPackageManager();
|
|
180
|
+
selectedHash = await installAuth(targetDir, pm);
|
|
174
181
|
}
|
|
175
182
|
renderStep("auth-installed", isProduction);
|
|
176
183
|
saveState({ step: "auth-installed", ...(getState().authMode !== "base" && { hashLib: selectedHash }) });
|
|
@@ -191,34 +198,24 @@ Resumable steps:
|
|
|
191
198
|
else {
|
|
192
199
|
console.log(chalk.gray("↷ Skipping Prisma/package setup (already completed)"));
|
|
193
200
|
}
|
|
201
|
+
if (isProduction && !hasReachedStep(currentStep, "production-configured")) {
|
|
202
|
+
await configureProduction(targetDir, projectName, runtime);
|
|
203
|
+
}
|
|
194
204
|
// Install deps
|
|
195
205
|
if (!hasReachedStep(currentStep, "deps-installed")) {
|
|
196
206
|
renderStep("deps-installed", isProduction);
|
|
207
|
+
configurePackageJson(targetDir, getState().usePrisma ?? false);
|
|
197
208
|
await installDependencies(targetDir);
|
|
198
209
|
saveState({ step: "deps-installed", ...(getState().authMode !== "base" && { hashLib: selectedHash }) });
|
|
199
210
|
currentStep = "deps-installed";
|
|
200
211
|
renderStep(currentStep, isProduction);
|
|
201
212
|
}
|
|
202
213
|
else {
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
// Prisma generate
|
|
206
|
-
if (!hasReachedStep(currentStep, "prisma-generated")) {
|
|
207
|
-
if (getState().usePrisma) {
|
|
208
|
-
await generatePrismaClient(targetDir);
|
|
209
|
-
}
|
|
210
|
-
saveState({ step: "prisma-generated", ...(getState().authMode !== "base" && { hashLib: selectedHash }) });
|
|
211
|
-
currentStep = "prisma-generated";
|
|
212
|
-
renderStep(currentStep, isProduction);
|
|
213
|
-
}
|
|
214
|
-
else {
|
|
215
|
-
console.log(chalk.gray("↷ Skipping Prisma client generation (already completed)"));
|
|
214
|
+
//configurePackageJson(targetDir, getState().usePrisma ?? false);
|
|
215
|
+
await installDependencies(targetDir);
|
|
216
216
|
}
|
|
217
217
|
// Production setup
|
|
218
218
|
if (isProduction && !hasReachedStep(currentStep, "production-configured")) {
|
|
219
|
-
const state = getState();
|
|
220
|
-
const runtime = resolveRuntime(state.runtime);
|
|
221
|
-
await configureProduction(targetDir, projectName, runtime);
|
|
222
219
|
saveState({ step: "production-configured", ...(getState().authMode !== "base" && { hashLib: selectedHash }) });
|
|
223
220
|
currentStep = "production-configured";
|
|
224
221
|
renderStep(currentStep, isProduction);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAGpC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACvG,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEhE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/lib/process.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBnF;AAED,wBAAgB,gBAAgB,SAO/B;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/lib/process.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBnF;AAED,wBAAgB,gBAAgB,SAO/B;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,UAQrC;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,WAQ9C;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,OAAO,iBAIlD"}
|
package/dist/lib/process.js
CHANGED
|
@@ -37,6 +37,10 @@ export function getCommand(cmd) {
|
|
|
37
37
|
return isWin ? "npm.cmd" : "npm";
|
|
38
38
|
if (cmd === "npx")
|
|
39
39
|
return isWin ? "npx.cmd" : "npx";
|
|
40
|
+
if (cmd === "pnpm")
|
|
41
|
+
return isWin ? "pnpm.cmd" : "pnpm";
|
|
42
|
+
if (cmd === "bun")
|
|
43
|
+
return isWin ? "bun.exe" : "bun";
|
|
40
44
|
if (cmd === "git")
|
|
41
45
|
return isWin ? "git.exe" : "git";
|
|
42
46
|
return cmd;
|
package/dist/lib/process.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/lib/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGpD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAgB,CAAC;AAEhD,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,IAAc,EAAE,OAAmB;IAClE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;YAC7B,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QACH,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAE3B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC;YACvD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IACD,eAAe,CAAC,KAAK,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;IACpD,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;IACpD,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;IACpD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,QAAQ,IAAI,GAAG;QACf,CAAE,GAA2B,CAAC,MAAM,KAAK,QAAQ;YAC9C,GAA2B,CAAC,MAAM,KAAK,SAAS,CAAC,CACrD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAY;IACjD,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/lib/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGpD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAgB,CAAC;AAEhD,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,IAAc,EAAE,OAAmB;IAClE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;YAC7B,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QACH,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAE3B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC;YACvD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IACD,eAAe,CAAC,KAAK,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC3C,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;IACpD,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;IACpD,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;IACvD,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;IACpD,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;IACpD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,QAAQ,IAAI,GAAG;QACf,CAAE,GAA2B,CAAC,MAAM,KAAK,QAAQ;YAC9C,GAA2B,CAAC,MAAM,KAAK,SAAS,CAAC,CACrD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAY;IACjD,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { CliState } from "../lib/types.js";
|
|
2
2
|
export declare function resolveTemplateName(authMode: string): string;
|
|
3
|
+
export declare function configurePackageJson(targetDir: string, usePrisma: boolean): void;
|
|
3
4
|
export declare function createProject(state: CliState, targetDir: string, templateRoot: string): Promise<void>;
|
|
4
5
|
//# sourceMappingURL=createProject.d.ts.map
|
|
@@ -1 +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"}
|
|
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,CAiBhF;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAIf"}
|
|
@@ -8,6 +8,21 @@ export function resolveTemplateName(authMode) {
|
|
|
8
8
|
return "express-auth+";
|
|
9
9
|
return "express-base";
|
|
10
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
|
+
pkg.scripts ??= {};
|
|
19
|
+
pkg.scripts.postinstall = "npx prisma@5.22.0 generate";
|
|
20
|
+
pkg.scripts.dev = pkg.scripts.dev
|
|
21
|
+
? `npx prisma@5.22.0 generate && ${pkg.scripts.dev}`
|
|
22
|
+
: "npx prisma@5.22.0 generate";
|
|
23
|
+
}
|
|
24
|
+
fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2));
|
|
25
|
+
}
|
|
11
26
|
export async function createProject(state, targetDir, templateRoot) {
|
|
12
27
|
const templateName = resolveTemplateName(state.authMode ?? "base");
|
|
13
28
|
const templatePath = path.join(templateRoot, templateName);
|
|
@@ -1 +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"}
|
|
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;QACd,GAAG,CAAC,OAAO,KAAK,EAAE,CAAC;QACnB,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,4BAA4B,CAAC;QACvD,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG;YAC/B,CAAC,CAAC,iCAAiC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE;YACpD,CAAC,CAAC,4BAA4B,CAAC;IACnC,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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finalSetup.d.ts","sourceRoot":"","sources":["../../src/steps/finalSetup.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/steps/finalSetup.js
CHANGED
|
@@ -3,6 +3,8 @@ import path from "path";
|
|
|
3
3
|
import { run, getCommand, exitForInterrupt } from "../lib/process.js";
|
|
4
4
|
import { spinner } from "../lib/ui.js";
|
|
5
5
|
import { execSync } from "child_process";
|
|
6
|
+
const PM2_VERSION = "^5.4.2";
|
|
7
|
+
const TS_NODE_VERSION = "^10.9.2";
|
|
6
8
|
export function hasBun() {
|
|
7
9
|
try {
|
|
8
10
|
execSync("bun --version", { stdio: "ignore" });
|
|
@@ -60,22 +62,17 @@ export function createPm2Config(targetDir, projectName, runtime) {
|
|
|
60
62
|
fs.writeFileSync(configPath, content, "utf-8");
|
|
61
63
|
}
|
|
62
64
|
export async function configureProduction(targetDir, projectName, runtime) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
});
|
|
69
|
-
if (runtime === "node") {
|
|
70
|
-
await run(getCommand("npm"), ["install", "ts-node"], { cwd: targetDir, stdio: "inherit" });
|
|
71
|
-
}
|
|
72
|
-
createPm2Config(targetDir, projectName, runtime);
|
|
73
|
-
spinner.stop();
|
|
74
|
-
}
|
|
75
|
-
catch (err) {
|
|
76
|
-
spinner.fail("Failed to install PM2");
|
|
77
|
-
exitForInterrupt(err);
|
|
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;
|
|
78
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);
|
|
79
76
|
}
|
|
80
77
|
export async function initGit(targetDir) {
|
|
81
78
|
try {
|
|
@@ -1 +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,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,UAAU,MAAM;IACpB,IAAI,CAAC;QACH,QAAQ,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAY;IACzC,IAAI,OAAO,KAAK,KAAK,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IACpC,OAAO,MAAM,CAAC;AAChB,CAAC;AAGD,MAAM,UAAU,eAAe,CAAC,SAAiB,EAAE,WAAmB,EAAC,OAAsB;IAC3F,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,CAAC;IAEjC,MAAM,OAAO,GAAI,MAAM;QACvB,CAAC,CAAA;;;eAGY,WAAW;;;;;;;;;;;EAWxB,CAAA,CAAC;QACF;;;eAGc,WAAW;;;;;;;;;;;;;GAavB,CAAA;IAED,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAGD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,SAAiB,EAAC,WAAkB,EAAG,OAAqB;IACpG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"finalSetup.js","sourceRoot":"","sources":["../../src/steps/finalSetup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installAuth.d.ts","sourceRoot":"","sources":["../../src/steps/installAuth.ts"],"names":[],"mappings":"
|
|
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"}
|
|
@@ -3,29 +3,13 @@ import path from "path";
|
|
|
3
3
|
import { run, getCommand, exitForInterrupt } from "../lib/process.js";
|
|
4
4
|
import { getBestHashLib, generateHashModule } from "../utils/hash.js";
|
|
5
5
|
import { spinner } from "../lib/ui.js";
|
|
6
|
-
export async function installAuth(targetDir) {
|
|
7
|
-
let selectedHash = getBestHashLib();
|
|
6
|
+
export async function installAuth(targetDir, pm) {
|
|
7
|
+
let selectedHash = getBestHashLib(pm);
|
|
8
8
|
spinner.start("Installing password auth...");
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
}
|
|
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));
|
|
29
13
|
spinner.stop();
|
|
30
14
|
const hashLib = selectedHash;
|
|
31
15
|
await fs.writeFile(path.join(targetDir, "src/utils/hash.ts"), generateHashModule(hashLib));
|
|
@@ -1 +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;
|
|
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,3 +1,4 @@
|
|
|
1
|
+
export type PackageManager = "pnpm" | "bun" | "npm";
|
|
2
|
+
export declare function detectPackageManager(): PackageManager;
|
|
1
3
|
export declare function installDependencies(targetDir: string): Promise<void>;
|
|
2
|
-
export declare function generatePrismaClient(targetDir: string): Promise<void>;
|
|
3
4
|
//# sourceMappingURL=installDeps.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installDeps.d.ts","sourceRoot":"","sources":["../../src/steps/installDeps.ts"],"names":[],"mappings":"
|
|
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,31 +1,50 @@
|
|
|
1
|
+
import fs from "fs-extra";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { execSync } from "child_process";
|
|
1
4
|
import { run, getCommand, exitForInterrupt } from "../lib/process.js";
|
|
2
5
|
import { spinner } from "../lib/ui.js";
|
|
3
|
-
export
|
|
4
|
-
spinner.start("Installing dependencies...(this may take a few minutes)");
|
|
6
|
+
export function detectPackageManager() {
|
|
5
7
|
try {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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";
|
|
11
14
|
}
|
|
12
|
-
catch
|
|
13
|
-
|
|
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"];
|
|
15
32
|
}
|
|
16
33
|
}
|
|
17
|
-
export async function
|
|
18
|
-
|
|
34
|
+
export async function installDependencies(targetDir) {
|
|
35
|
+
const pm = detectPackageManager();
|
|
36
|
+
spinner.start("Installing dependencies...(this may take a few minutes)");
|
|
19
37
|
try {
|
|
20
|
-
await run(getCommand(
|
|
38
|
+
await run(getCommand(pm), getInstallArgs(pm, targetDir), {
|
|
21
39
|
cwd: targetDir,
|
|
22
|
-
stdio: "
|
|
40
|
+
stdio: "inherit",
|
|
23
41
|
});
|
|
24
42
|
spinner.stop();
|
|
25
43
|
}
|
|
26
44
|
catch (err) {
|
|
27
|
-
spinner.fail("Failed to
|
|
45
|
+
spinner.fail("Failed to install dependencies");
|
|
28
46
|
exitForInterrupt(err);
|
|
47
|
+
throw err;
|
|
29
48
|
}
|
|
30
49
|
}
|
|
31
50
|
//# sourceMappingURL=installDeps.js.map
|
|
@@ -1 +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;
|
|
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"}
|
package/dist/steps/prompts.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { CliState } from "../lib/types.js";
|
|
2
|
-
export declare function runPrompts(state: CliState): Promise<Partial<CliState>>;
|
|
2
|
+
export declare function runPrompts(state: CliState, isProduction: boolean): Promise<Partial<CliState>>;
|
|
3
3
|
//# sourceMappingURL=prompts.d.ts.map
|
|
@@ -1 +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;AAGhD,wBAAsB,UAAU,CAAC,KAAK,EAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,
|
|
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"}
|
package/dist/steps/prompts.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import inquirer from "inquirer";
|
|
2
2
|
import { hasBun } from "./finalSetup.js";
|
|
3
|
-
export async function runPrompts(state) {
|
|
3
|
+
export async function runPrompts(state, isProduction) {
|
|
4
4
|
const bunAvailable = hasBun();
|
|
5
5
|
return inquirer.prompt([
|
|
6
6
|
{
|
|
@@ -10,11 +10,23 @@ export async function runPrompts(state) {
|
|
|
10
10
|
choices: ["Express", "Fastify (coming soon)"],
|
|
11
11
|
default: "Express",
|
|
12
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
|
+
},
|
|
13
24
|
{
|
|
14
25
|
type: "confirm",
|
|
15
26
|
name: "usePrisma",
|
|
16
27
|
message: "Use Prisma?",
|
|
17
28
|
default: true,
|
|
29
|
+
when: (answers) => answers.authMode === "base"
|
|
18
30
|
},
|
|
19
31
|
{
|
|
20
32
|
type: "list",
|
|
@@ -24,7 +36,7 @@ export async function runPrompts(state) {
|
|
|
24
36
|
{ name: "PostgreSQL", value: "postgresql" },
|
|
25
37
|
{ name: "SQLite ", value: "sqlite" },
|
|
26
38
|
],
|
|
27
|
-
when: (answers) => answers.usePrisma,
|
|
39
|
+
when: (answers) => answers.usePrisma || answers.authMode === "auth" || answers.authMode === "auth-oauth",
|
|
28
40
|
default: "sqlite",
|
|
29
41
|
},
|
|
30
42
|
{
|
|
@@ -33,17 +45,6 @@ export async function runPrompts(state) {
|
|
|
33
45
|
message: "Initialize git?",
|
|
34
46
|
default: true,
|
|
35
47
|
},
|
|
36
|
-
{
|
|
37
|
-
type: "list",
|
|
38
|
-
name: "authMode",
|
|
39
|
-
message: "Choose authentication setup:",
|
|
40
|
-
choices: [
|
|
41
|
-
{ name: "JWT only", value: "base" },
|
|
42
|
-
{ name: "Email + Password Auth", value: "auth" },
|
|
43
|
-
{ name: "Full Auth (Password + OAuth)", value: "auth-oauth" },
|
|
44
|
-
],
|
|
45
|
-
default: "base",
|
|
46
|
-
},
|
|
47
48
|
{
|
|
48
49
|
type: "list",
|
|
49
50
|
name: "runtime",
|
|
@@ -61,7 +62,7 @@ export async function runPrompts(state) {
|
|
|
61
62
|
value: "node",
|
|
62
63
|
},
|
|
63
64
|
],
|
|
64
|
-
when: () =>
|
|
65
|
+
when: () => isProduction,
|
|
65
66
|
default: bunAvailable ? "bun" : "node"
|
|
66
67
|
},
|
|
67
68
|
])
|
|
@@ -70,7 +71,6 @@ export async function runPrompts(state) {
|
|
|
70
71
|
result.runtime = "node";
|
|
71
72
|
}
|
|
72
73
|
return result;
|
|
73
|
-
console.log("Runtime:", result.runtime);
|
|
74
74
|
});
|
|
75
75
|
}
|
|
76
76
|
//# sourceMappingURL=prompts.js.map
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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"}
|
package/dist/utils/hash.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import type { PackageManager } from "../steps/installDeps.js";
|
|
2
|
+
export declare function getBestHashLib(pm: PackageManager): string;
|
|
2
3
|
export declare function generateHashModule(hashLib: "argon2" | "bcryptjs"): string;
|
|
3
4
|
//# sourceMappingURL=hash.d.ts.map
|
package/dist/utils/hash.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/utils/hash.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/utils/hash.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAQ9D,wBAAgB,cAAc,CAAC,EAAE,EAAC,cAAc,GAAG,MAAM,CAaxD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,CA0BzE"}
|
package/dist/utils/hash.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import os from "os";
|
|
2
|
+
import { execSync } from "child_process";
|
|
2
3
|
const platform = os.platform();
|
|
3
4
|
const isTermux = process.env.PREFIX?.includes("com.termux") || process.env.TERMUX === "true";
|
|
4
|
-
export function getBestHashLib() {
|
|
5
|
+
export function getBestHashLib(pm) {
|
|
6
|
+
if (pm !== "npm")
|
|
7
|
+
return "bcryptjs";
|
|
5
8
|
if (isTermux)
|
|
6
9
|
return "bcryptjs";
|
|
7
10
|
if (platform === "win32")
|
|
@@ -10,6 +13,13 @@ export function getBestHashLib() {
|
|
|
10
13
|
return "argon2";
|
|
11
14
|
if (platform === "linux")
|
|
12
15
|
return "argon2";
|
|
16
|
+
try {
|
|
17
|
+
execSync("node-gyp --version", { stdio: "ignore" });
|
|
18
|
+
return "argon2";
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return "bcryptjs";
|
|
22
|
+
}
|
|
13
23
|
return "bcryptjs";
|
|
14
24
|
}
|
|
15
25
|
export function generateHashModule(hashLib) {
|
package/dist/utils/hash.js.map
CHANGED
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/utils/hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,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,CAAC,EAAiB;IAChD,IAAI,EAAE,KAAK,KAAK;QAAE,OAAO,UAAU,CAAC;IAClC,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,IAAI,CAAC;QACD,QAAQ,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,UAAU,CAAC;IACpB,CAAC;IACH,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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-authenik8-app",
|
|
3
|
-
"version": "2.1.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.1.2",
|
|
4
|
+
"description": "⚡ Fast Express + TypeScript auth starter with secure JWT, refresh rotation, Redis, RBAC, OAuth & Prisma.\nPowered by the Authenik8 Identity Engine.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"create-authenik8-app": "dist/index.js"
|
|
7
7
|
},
|
|
@@ -48,5 +48,9 @@
|
|
|
48
48
|
"@types/express": "^5.0.6",
|
|
49
49
|
"@types/fs-extra": "^11.0.4",
|
|
50
50
|
"@types/node": "^25.5.2"
|
|
51
|
+
},
|
|
52
|
+
"repository": {
|
|
53
|
+
"type": "git",
|
|
54
|
+
"url": "https://github.com/username/repo-name.git"
|
|
51
55
|
}
|
|
52
56
|
}
|
|
@@ -1,27 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "authenik8-app",
|
|
3
|
-
"version": "1.0.6",
|
|
4
3
|
"description": "Authenik8 generated Express auth app",
|
|
5
4
|
"main": "dist/server.js",
|
|
6
5
|
"type": "commonjs",
|
|
7
6
|
"scripts": {
|
|
8
7
|
"dev": "ts-node-dev --respawn --transpile-only src/server.ts",
|
|
9
8
|
"build": "tsc",
|
|
10
|
-
"pm2:start": "pm2 start ecosystem.config.js",
|
|
11
|
-
"pm2:stop": "pm2 stop authenik8-app",
|
|
12
|
-
"pm2:logs": "pm2 logs",
|
|
13
9
|
"start": "node dist/server.js",
|
|
14
|
-
"prisma:generate": "prisma generate",
|
|
15
10
|
"prisma:migrate": "prisma migrate dev"
|
|
16
11
|
},
|
|
17
12
|
"dependencies": {
|
|
18
13
|
"authenik8-core": "^1.0.3",
|
|
19
|
-
"express": "^4.19.2"
|
|
14
|
+
"express": "^4.19.2",
|
|
15
|
+
"@prisma/client": "5.22.0"
|
|
20
16
|
},
|
|
21
17
|
"devDependencies": {
|
|
22
18
|
"@types/express": "^4.17.21",
|
|
23
19
|
"@types/node": "^20.0.0",
|
|
24
20
|
"ts-node-dev": "^2.0.0",
|
|
25
|
-
"typescript": "^5.0.0"
|
|
21
|
+
"typescript": "^5.0.0",
|
|
22
|
+
"prisma": "5.22.0"
|
|
26
23
|
}
|
|
27
24
|
}
|
|
@@ -1,27 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "authenik8-app",
|
|
3
|
-
"version": "1.0.6",
|
|
4
3
|
"description": "Authenik8 generated Express auth app",
|
|
5
4
|
"main": "dist/server.js",
|
|
6
5
|
"type": "commonjs",
|
|
7
6
|
"scripts": {
|
|
8
7
|
"dev": "ts-node-dev --respawn --transpile-only src/server.ts",
|
|
9
8
|
"build": "tsc",
|
|
10
|
-
"pm2:start": "pm2 start ecosystem.config.js",
|
|
11
|
-
"pm2:stop": "pm2 stop authenik8-app",
|
|
12
|
-
"pm2:logs": "pm2 logs",
|
|
13
9
|
"start": "node dist/server.js",
|
|
14
|
-
"prisma:generate": "prisma generate",
|
|
15
10
|
"prisma:migrate": "prisma migrate dev"
|
|
16
11
|
},
|
|
17
12
|
"dependencies": {
|
|
18
13
|
"authenik8-core": "^1.0.3",
|
|
19
|
-
"express": "^4.19.2"
|
|
14
|
+
"express": "^4.19.2",
|
|
15
|
+
"@prisma/client": "5.22.0"
|
|
20
16
|
},
|
|
21
17
|
"devDependencies": {
|
|
22
18
|
"@types/express": "^4.17.21",
|
|
23
19
|
"@types/node": "^20.0.0",
|
|
24
20
|
"ts-node-dev": "^2.0.0",
|
|
25
|
-
"typescript": "^5.0.0"
|
|
21
|
+
"typescript": "^5.0.0",
|
|
22
|
+
"prisma": "5.22.0"
|
|
26
23
|
}
|
|
27
24
|
}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "authenik8-app",
|
|
3
|
-
"version": "1.0.5",
|
|
4
3
|
"scripts": {
|
|
5
4
|
"dev": "ts-node-dev --respawn --transpile-only ./src/server.ts",
|
|
6
|
-
"pm2:start": "pm2 start ecosystem.config.js",
|
|
7
|
-
"pm2:stop": "pm2 stop authenik8-app",
|
|
8
|
-
"pm2:logs": "pm2 logs",
|
|
9
5
|
"build": "tsc",
|
|
10
|
-
"start": "node dist/server.js"
|
|
6
|
+
"start": "node dist/server.js",
|
|
7
|
+
"prisma:migrate": "prisma migrate"
|
|
11
8
|
},
|
|
12
9
|
"dependencies": {
|
|
13
10
|
"authenik8-core": "^1.0.3",
|
|
14
11
|
"dotenv": "^16.0.0",
|
|
15
|
-
"express": "^4.18.2"
|
|
12
|
+
"express": "^4.18.2",
|
|
13
|
+
"@prisma/client": "5.22.0"
|
|
16
14
|
},
|
|
17
15
|
"devDependencies": {
|
|
18
16
|
"ts-node-dev": "^2.0.0",
|
|
19
|
-
"typescript": "^5.0.0"
|
|
17
|
+
"typescript": "^5.0.0",
|
|
18
|
+
"prisma": "5.22.0"
|
|
19
|
+
|
|
20
20
|
},
|
|
21
21
|
"type": "commonjs"
|
|
22
22
|
}
|