seamless-cli 0.8.0 → 0.10.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.
- package/README.md +8 -8
- package/dist/commands/bootstrapAdmin.js +11 -15
- package/dist/commands/bootstrapAdmin.js.map +1 -1
- package/dist/commands/check.js +69 -12
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/config.js +117 -2
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/help.js +20 -7
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/init.js +96 -49
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.js +30 -8
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/verify.js +11 -2
- package/dist/commands/verify.js.map +1 -1
- package/dist/core/config.js +12 -2
- package/dist/core/config.js.map +1 -1
- package/dist/core/env.js +48 -19
- package/dist/core/env.js.map +1 -1
- package/dist/core/images.js +2 -2
- package/dist/core/loginFlow.js +37 -5
- package/dist/core/loginFlow.js.map +1 -1
- package/dist/core/output.js +21 -4
- package/dist/core/output.js.map +1 -1
- package/dist/core/systemConfig.js +57 -0
- package/dist/core/systemConfig.js.map +1 -1
- package/dist/core/templates.js +1 -0
- package/dist/core/templates.js.map +1 -1
- package/dist/generators/auth/auth.js +4 -4
- package/dist/generators/auth/auth.js.map +1 -1
- package/dist/generators/config/config.js +4 -1
- package/dist/generators/config/config.js.map +1 -1
- package/dist/generators/docker/docker.js +47 -14
- package/dist/generators/docker/docker.js.map +1 -1
- package/dist/prompts/projectSetup.js +22 -21
- package/dist/prompts/projectSetup.js.map +1 -1
- package/package.json +1 -2
- package/verify/adapter-app/Dockerfile +1 -1
- package/verify/adapter-app/package.json +2 -2
- package/verify/docker-compose.verify.yml +9 -1
- package/verify/harness/lib/adapterFlows.ts +3 -3
|
@@ -80,26 +80,28 @@ export async function runProjectSetupPrompts(templates, preselect = {}) {
|
|
|
80
80
|
},
|
|
81
81
|
],
|
|
82
82
|
}));
|
|
83
|
-
const
|
|
84
|
-
message: "
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
83
|
+
const adminMode = (await select({
|
|
84
|
+
message: "How would you like to host the admin console?",
|
|
85
|
+
options: [
|
|
86
|
+
{
|
|
87
|
+
value: "api",
|
|
88
|
+
label: "Served by your API at /console (recommended)",
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
value: "image",
|
|
92
|
+
label: "Separate container — official Docker image",
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
value: "source",
|
|
96
|
+
label: "Separate container — clone repo for modification",
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
value: "none",
|
|
100
|
+
label: "Don't include the admin console",
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
initialValue: "api",
|
|
104
|
+
}));
|
|
103
105
|
if (authMode === "local") {
|
|
104
106
|
const confirmDocker = await confirm({
|
|
105
107
|
message: "Auth server still requires Docker for full stack. Enable Docker?",
|
|
@@ -116,7 +118,6 @@ export async function runProjectSetupPrompts(templates, preselect = {}) {
|
|
|
116
118
|
apiTemplateId,
|
|
117
119
|
authMode,
|
|
118
120
|
useDocker: true,
|
|
119
|
-
includeAdmin,
|
|
120
121
|
adminMode,
|
|
121
122
|
};
|
|
122
123
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectSetup.js","sourceRoot":"","sources":["../../src/prompts/projectSetup.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"projectSetup.js","sourceRoot":"","sources":["../../src/prompts/projectSetup.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "seamless-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "The Seamless Auth command-line interface",
|
|
5
5
|
"homepage": "https://github.com/fells-code/seamless-cli#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -35,7 +35,6 @@
|
|
|
35
35
|
"main": "dist/index.js",
|
|
36
36
|
"files": [
|
|
37
37
|
"dist",
|
|
38
|
-
"templates",
|
|
39
38
|
"verify",
|
|
40
39
|
"README.md",
|
|
41
40
|
"LICENSE"
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Minimal adopter backend for the conformance harness — real @seamless-auth/express with a capture transport.",
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@seamless-auth/express": "^0.
|
|
8
|
+
"@seamless-auth/express": "^0.8.0",
|
|
9
9
|
"cookie-parser": "^1.4.6",
|
|
10
10
|
"cors": "^2.8.5",
|
|
11
|
-
"express": "^
|
|
11
|
+
"express": "^5.1.0"
|
|
12
12
|
}
|
|
13
13
|
}
|
|
@@ -51,11 +51,19 @@ services:
|
|
|
51
51
|
DEFAULT_ROLES: user
|
|
52
52
|
AVAILABLE_ROLES: user,admin
|
|
53
53
|
LOGIN_METHODS: passkey,magic_link,email_otp,phone_otp,oauth
|
|
54
|
+
# Required system config as of auth-api 0.3.0: the base URL for emailed
|
|
55
|
+
# magic links. Without it (and with a fresh DB, so system_config isn't seeded)
|
|
56
|
+
# the server exits at startup. The browser-visible web app runs on 5173.
|
|
57
|
+
FRONTEND_URL: http://localhost:5173
|
|
54
58
|
DB_LOGGING: 'false'
|
|
55
59
|
ACCESS_TOKEN_TTL: 15m
|
|
56
60
|
REFRESH_TOKEN_TTL: 1h
|
|
57
61
|
RATE_LIMIT: '100000'
|
|
58
62
|
DELAY_AFTER: '100000'
|
|
63
|
+
# The dedicated per-IP OTP/magic-link/registration/OAuth limiters are not
|
|
64
|
+
# tuned by RATE_LIMIT; the suite drives many flows from one IP and would trip
|
|
65
|
+
# them. This dev-only flag skips them (ignored under NODE_ENV=production).
|
|
66
|
+
DISABLE_AUTH_RATE_LIMITS: 'true'
|
|
59
67
|
RPID: localhost
|
|
60
68
|
ORIGINS: http://localhost:5173,http://localhost:3000
|
|
61
69
|
DB_HOST: postgres
|
|
@@ -123,7 +131,7 @@ services:
|
|
|
123
131
|
additional_contexts:
|
|
124
132
|
sdk: ./react-vendor
|
|
125
133
|
dockerfile_inline: |
|
|
126
|
-
FROM node:
|
|
134
|
+
FROM node:24-slim AS builder
|
|
127
135
|
WORKDIR /app
|
|
128
136
|
COPY package.json package-lock.json ./
|
|
129
137
|
RUN npm ci
|
|
@@ -16,7 +16,7 @@ export async function registerAndVerifyEmail(ctx: APIRequestContext, email: stri
|
|
|
16
16
|
let res = await ctx.post('/auth/registration/register', { data: { email } });
|
|
17
17
|
expect(res.ok(), `register -> ${res.status()}`).toBeTruthy();
|
|
18
18
|
|
|
19
|
-
res = await ctx.
|
|
19
|
+
res = await ctx.post('/auth/otp/generate-email-otp');
|
|
20
20
|
expect(res.ok(), `generate-email-otp -> ${res.status()}`).toBeTruthy();
|
|
21
21
|
|
|
22
22
|
const code = await readCapturedCode(ctx, email);
|
|
@@ -28,7 +28,7 @@ export async function loginViaEmailOtp(ctx: APIRequestContext, email: string): P
|
|
|
28
28
|
let res = await ctx.post('/auth/login', { data: { identifier: email } });
|
|
29
29
|
expect(res.ok(), `login -> ${res.status()}`).toBeTruthy();
|
|
30
30
|
|
|
31
|
-
res = await ctx.
|
|
31
|
+
res = await ctx.post('/auth/otp/generate-login-email-otp');
|
|
32
32
|
expect(res.ok(), `generate-login-email-otp -> ${res.status()}`).toBeTruthy();
|
|
33
33
|
|
|
34
34
|
const code = await readCapturedCode(ctx, email);
|
|
@@ -40,7 +40,7 @@ export async function loginViaMagicLink(ctx: APIRequestContext, email: string):
|
|
|
40
40
|
let res = await ctx.post('/auth/login', { data: { identifier: email } });
|
|
41
41
|
expect(res.ok(), `login -> ${res.status()}`).toBeTruthy();
|
|
42
42
|
|
|
43
|
-
res = await ctx.
|
|
43
|
+
res = await ctx.post('/auth/magic-link');
|
|
44
44
|
expect(res.ok(), `magic-link request -> ${res.status()}`).toBeTruthy();
|
|
45
45
|
const token = await readCapturedCode(ctx, email);
|
|
46
46
|
|