@sylphx/management 0.2.0 → 0.2.1
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/admin.d.ts +28 -1
- package/dist/admin.d.ts.map +1 -1
- package/dist/admin.js +29 -2
- package/dist/http.d.ts +21 -0
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +26 -0
- package/package.json +2 -2
package/dist/admin.d.ts
CHANGED
|
@@ -98,7 +98,7 @@ export declare const retireJwtKey: (client: Client, keyId: string) => Promise<{
|
|
|
98
98
|
/**
|
|
99
99
|
* Trigger a project migration between regions. Phase 4b Matrix-2 gap.
|
|
100
100
|
* Underlying endpoint on the platform API is
|
|
101
|
-
* `POST /
|
|
101
|
+
* `POST /operator/projects/:id/migrate` — the SDK wraps it directly rather
|
|
102
102
|
* than going through `adminProjectsEndpoints` because migration is its
|
|
103
103
|
* own operational concern (drain → cut-over → warm-up).
|
|
104
104
|
*/
|
|
@@ -138,4 +138,31 @@ export declare const updateUserRole: (client: Client, userId: string, body: {
|
|
|
138
138
|
}) => Promise<{
|
|
139
139
|
user: AdminUserView;
|
|
140
140
|
}>;
|
|
141
|
+
/**
|
|
142
|
+
* L-15 (2026-05-02): manually verify a user's email. Super-admin only on the
|
|
143
|
+
* platform tenant. The Management API endpoint exists at
|
|
144
|
+
* `POST /admin/users/users/:userId/verify-email`; the SDK helper was the
|
|
145
|
+
* missing piece blocking operators from validating the new-user E2E flow
|
|
146
|
+
* without (a) a real email inbox or (b) a forbidden direct DB UPDATE.
|
|
147
|
+
*/
|
|
148
|
+
export declare const verifyUserEmail: (client: Client, userId: string) => Promise<{
|
|
149
|
+
readonly id: string;
|
|
150
|
+
readonly email: string;
|
|
151
|
+
}>;
|
|
152
|
+
/**
|
|
153
|
+
* L-15 (2026-05-02): soft-delete a platform user. Super-admin only;
|
|
154
|
+
* cannot delete oneself. Existing sessions are revoked first.
|
|
155
|
+
*/
|
|
156
|
+
export declare const deleteUser: (client: Client, userId: string) => Promise<{
|
|
157
|
+
readonly id: string;
|
|
158
|
+
readonly email: string;
|
|
159
|
+
}>;
|
|
160
|
+
/**
|
|
161
|
+
* L-15 (2026-05-02): revoke ALL sessions for a user (force re-login).
|
|
162
|
+
* Super-admin only.
|
|
163
|
+
*/
|
|
164
|
+
export declare const revokeUserSessions: (client: Client, userId: string) => Promise<{
|
|
165
|
+
readonly userId: string;
|
|
166
|
+
readonly revokedCount: number;
|
|
167
|
+
}>;
|
|
141
168
|
//# sourceMappingURL=admin.d.ts.map
|
package/dist/admin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../src/admin.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../src/admin.ts"],"names":[],"mappings":"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"}
|
package/dist/admin.js
CHANGED
|
@@ -68,11 +68,11 @@ export const retireJwtKey = (client, keyId) => {
|
|
|
68
68
|
/**
|
|
69
69
|
* Trigger a project migration between regions. Phase 4b Matrix-2 gap.
|
|
70
70
|
* Underlying endpoint on the platform API is
|
|
71
|
-
* `POST /
|
|
71
|
+
* `POST /operator/projects/:id/migrate` — the SDK wraps it directly rather
|
|
72
72
|
* than going through `adminProjectsEndpoints` because migration is its
|
|
73
73
|
* own operational concern (drain → cut-over → warm-up).
|
|
74
74
|
*/
|
|
75
|
-
export const migrateProject = (client, projectId, body) => request(client, 'POST', `/
|
|
75
|
+
export const migrateProject = (client, projectId, body) => request(client, 'POST', `/operator/projects/${encodeURIComponent(projectId)}/migrate`, { body });
|
|
76
76
|
/**
|
|
77
77
|
* Regenerate an environment's deploy / API key. Already exposed on
|
|
78
78
|
* `adminProjectsEndpoints.regenerateKey`; surfaced here under the `admin`
|
|
@@ -94,3 +94,30 @@ export const updateUserRole = (client, userId, body) => {
|
|
|
94
94
|
const { method, path } = adminUsersEndpoints.updateRole;
|
|
95
95
|
return request(client, method, interpolatePath(path, { userId }), { body });
|
|
96
96
|
};
|
|
97
|
+
/**
|
|
98
|
+
* L-15 (2026-05-02): manually verify a user's email. Super-admin only on the
|
|
99
|
+
* platform tenant. The Management API endpoint exists at
|
|
100
|
+
* `POST /admin/users/users/:userId/verify-email`; the SDK helper was the
|
|
101
|
+
* missing piece blocking operators from validating the new-user E2E flow
|
|
102
|
+
* without (a) a real email inbox or (b) a forbidden direct DB UPDATE.
|
|
103
|
+
*/
|
|
104
|
+
export const verifyUserEmail = (client, userId) => {
|
|
105
|
+
const { method, path } = adminUsersEndpoints.verifyEmail;
|
|
106
|
+
return request(client, method, interpolatePath(path, { userId }));
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* L-15 (2026-05-02): soft-delete a platform user. Super-admin only;
|
|
110
|
+
* cannot delete oneself. Existing sessions are revoked first.
|
|
111
|
+
*/
|
|
112
|
+
export const deleteUser = (client, userId) => {
|
|
113
|
+
const { method, path } = adminUsersEndpoints.delete;
|
|
114
|
+
return request(client, method, interpolatePath(path, { userId }));
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* L-15 (2026-05-02): revoke ALL sessions for a user (force re-login).
|
|
118
|
+
* Super-admin only.
|
|
119
|
+
*/
|
|
120
|
+
export const revokeUserSessions = (client, userId) => {
|
|
121
|
+
const { method, path } = adminUsersEndpoints.revokeSessions;
|
|
122
|
+
return request(client, method, interpolatePath(path, { userId }));
|
|
123
|
+
};
|
package/dist/http.d.ts
CHANGED
|
@@ -9,11 +9,32 @@
|
|
|
9
9
|
* the raw text.
|
|
10
10
|
* - Returns `undefined` for 204 No Content.
|
|
11
11
|
* - Accepts optional `body` (JSON-stringified) and `query` (URL-encoded).
|
|
12
|
+
* - Auto-injects an `Idempotency-Key` header on every mutation
|
|
13
|
+
* (POST / PUT / PATCH / DELETE) unless one is explicitly provided
|
|
14
|
+
* or `idempotency: false` is set. See `RequestOptions.idempotencyKey`.
|
|
12
15
|
*/
|
|
13
16
|
import type { Client } from './client.js';
|
|
14
17
|
export interface RequestOptions {
|
|
15
18
|
readonly body?: unknown;
|
|
16
19
|
readonly query?: Readonly<Record<string, string | undefined>>;
|
|
20
|
+
/**
|
|
21
|
+
* Explicit Idempotency-Key. When omitted on a mutating method, the
|
|
22
|
+
* SDK auto-generates a fresh UUID v4 per call so accidental
|
|
23
|
+
* network-retries of the SAME SDK invocation are server-side
|
|
24
|
+
* dedup'd (server middleware `idempotencyMiddleware` enforces).
|
|
25
|
+
*
|
|
26
|
+
* Pass an explicit key when:
|
|
27
|
+
* - The caller wants cross-process retry safety (e.g. a CI script
|
|
28
|
+
* re-running on retry must produce the same logical mutation).
|
|
29
|
+
* - The caller is replaying the SAME deterministic operation and
|
|
30
|
+
* expects the cached response.
|
|
31
|
+
*
|
|
32
|
+
* Pass `null` to opt out entirely (the server middleware no-ops on
|
|
33
|
+
* absent header — this is the "I know what I'm doing" escape hatch
|
|
34
|
+
* for endpoints that DO accept duplicate non-idempotent submissions
|
|
35
|
+
* by design, e.g. usage-counter increments).
|
|
36
|
+
*/
|
|
37
|
+
readonly idempotencyKey?: string | null;
|
|
17
38
|
}
|
|
18
39
|
/**
|
|
19
40
|
* Substitute `:param` tokens in a contract-sourced path with URL-encoded
|
package/dist/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAMzC,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAA;IAC7D;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACvC;AAYD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAO9F;AAED,wBAAsB,OAAO,CAAC,CAAC,EAC9B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,cAAc,GACnB,OAAO,CAAC,CAAC,CAAC,CA0DZ"}
|
package/dist/http.js
CHANGED
|
@@ -9,8 +9,22 @@
|
|
|
9
9
|
* the raw text.
|
|
10
10
|
* - Returns `undefined` for 204 No Content.
|
|
11
11
|
* - Accepts optional `body` (JSON-stringified) and `query` (URL-encoded).
|
|
12
|
+
* - Auto-injects an `Idempotency-Key` header on every mutation
|
|
13
|
+
* (POST / PUT / PATCH / DELETE) unless one is explicitly provided
|
|
14
|
+
* or `idempotency: false` is set. See `RequestOptions.idempotencyKey`.
|
|
12
15
|
*/
|
|
13
16
|
import { ApiError } from './errors.js';
|
|
17
|
+
/** HTTP methods we treat as mutations for idempotency-key injection. */
|
|
18
|
+
const MUTATING_METHODS = new Set(['POST', 'PUT', 'PATCH', 'DELETE']);
|
|
19
|
+
/**
|
|
20
|
+
* Generate a fresh idempotency key per call. We use `crypto.randomUUID`
|
|
21
|
+
* (available in Bun, Node 20+, Deno, Workers, modern browsers — all our
|
|
22
|
+
* supported runtimes). The server accepts any opaque string ≤256 chars;
|
|
23
|
+
* UUID v4 is 36 chars and collision-free at our volumes.
|
|
24
|
+
*/
|
|
25
|
+
function newIdempotencyKey() {
|
|
26
|
+
return crypto.randomUUID();
|
|
27
|
+
}
|
|
14
28
|
/**
|
|
15
29
|
* Substitute `:param` tokens in a contract-sourced path with URL-encoded
|
|
16
30
|
* values. Throws if any token is missing from `params` — the SDK should
|
|
@@ -46,6 +60,18 @@ export async function request(client, method, path, opts) {
|
|
|
46
60
|
// WAFs) reject GET / DELETE requests carrying a bodyless Content-Type.
|
|
47
61
|
if (hasBody)
|
|
48
62
|
headers['Content-Type'] = 'application/json';
|
|
63
|
+
// Auto-inject Idempotency-Key on mutations. The server middleware
|
|
64
|
+
// at `apps/api/.../idempotency.ts` is mounted globally and no-ops
|
|
65
|
+
// on safe methods + on requests without the header — sending it
|
|
66
|
+
// gratuitously is harmless on routes that don't expect it. The key
|
|
67
|
+
// is ALWAYS sent for mutations unless caller passes `null` to opt
|
|
68
|
+
// out (e.g. usage-counter endpoints that want duplicate writes).
|
|
69
|
+
if (MUTATING_METHODS.has(method.toUpperCase())) {
|
|
70
|
+
const explicit = opts?.idempotencyKey;
|
|
71
|
+
if (explicit !== null) {
|
|
72
|
+
headers['Idempotency-Key'] = explicit ?? newIdempotencyKey();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
49
75
|
const res = await fetch(url, {
|
|
50
76
|
method,
|
|
51
77
|
headers,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sylphx/management",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Sylphx Management SDK — pure-FP Promise client for the Sylphx Platform Management API. 55+ namespaces covering the full PaaS surface (ADR-089 Phase 4b 100% coverage), types derived from @sylphx/contract (Effect Schema SSOT).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -193,7 +193,7 @@
|
|
|
193
193
|
"prepublishOnly": "bun run build"
|
|
194
194
|
},
|
|
195
195
|
"dependencies": {
|
|
196
|
-
"@sylphx/contract": "
|
|
196
|
+
"@sylphx/contract": "0.2.1"
|
|
197
197
|
},
|
|
198
198
|
"files": [
|
|
199
199
|
"dist",
|