@slyxup/core 0.2.4 → 1.0.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/.turbo/turbo-build.log +4 -0
- package/LICENSE +21 -0
- package/README.md +35 -8
- package/dist/client.d.ts +119 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +187 -10
- package/dist/client.js.map +1 -1
- package/dist/types.d.ts +50 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +7 -7
- package/src/client.ts +397 -19
- package/src/types.ts +58 -2
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 SlyxUp
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -20,15 +20,20 @@ const client = new SlyxupClient({
|
|
|
20
20
|
});
|
|
21
21
|
|
|
22
22
|
// ── Auth ──
|
|
23
|
-
await client.auth.signUp({ email: 'ada@example.com', password: 'password123', firstName: 'Ada' });
|
|
23
|
+
await client.auth.signUp({ email: 'ada@example.com', password: 'password123', firstName: 'Ada', username: 'ada' });
|
|
24
|
+
// Returns { user, sessionToken, expiresAt } on success, or
|
|
25
|
+
// { code: '2FA_REQUIRED', challengeToken } when the account has 2FA enabled.
|
|
24
26
|
await client.auth.signIn({ email: 'ada@example.com', password: 'password123' });
|
|
27
|
+
// Complete a 2FA challenge:
|
|
28
|
+
await client.auth.completeSignIn({ challengeToken, code: '123456' }); // or { challengeToken, recoveryCode }
|
|
25
29
|
await client.auth.signOut();
|
|
26
30
|
await client.auth.resendVerification('ada@example.com'); // resend email verification
|
|
31
|
+
await client.auth.forgotPassword('ada@example.com'); // send reset email
|
|
32
|
+
await client.auth.resetPassword(token, 'newPassword'); // reset with emailed token
|
|
33
|
+
await client.auth.verifyEmail(token); // confirm email with emailed token
|
|
27
34
|
|
|
28
|
-
// ── Sessions ──
|
|
29
|
-
const {
|
|
30
|
-
// session.expiresAt — ISO date; throws UnauthorizedError (401) when signed out
|
|
31
|
-
const { sessions } = await client.sessions.list();
|
|
35
|
+
// ── Sessions ── (list supports pagination)
|
|
36
|
+
const { sessions, total } = await client.sessions.list({ limit: 10, offset: 0 });
|
|
32
37
|
// SlyxupSessionInfo[]: { id, ipAddress, userAgent, expiresAt, createdAt, isCurrent }
|
|
33
38
|
await client.sessions.revoke('session-id'); // revoke one device
|
|
34
39
|
const { revoked } = await client.sessions.revokeOthers(); // sign out everywhere else
|
|
@@ -36,9 +41,20 @@ const { revoked } = await client.sessions.revokeOthers(); // sign out everywher
|
|
|
36
41
|
// ── Password ──
|
|
37
42
|
await client.password.change({ currentPassword, newPassword });
|
|
38
43
|
|
|
44
|
+
// ── Two-factor (TOTP) ──
|
|
45
|
+
const { secret, provisioningUri, accountName } = await client.twoFactor.setup();
|
|
46
|
+
await client.twoFactor.enable(secret, '123456'); // returns { recoveryCodes: string[] } — save them
|
|
47
|
+
await client.twoFactor.verify('123456'); // { valid: true }
|
|
48
|
+
await client.twoFactor.disable('123456');
|
|
49
|
+
const { enabled } = await client.twoFactor.status();
|
|
50
|
+
|
|
51
|
+
// ── Connected accounts (OAuth) ──
|
|
52
|
+
const { accounts } = await client.accounts.list(); // [{ id, provider, ... }]
|
|
53
|
+
await client.accounts.unlink(accountId, 'google');
|
|
54
|
+
|
|
39
55
|
// ── Users ──
|
|
40
|
-
const me = await client.users.me(); // full profile
|
|
41
|
-
await client.users.update({ firstName: 'Ada',
|
|
56
|
+
const me = await client.users.me(); // full profile (includes username, twoFactorEnabled)
|
|
57
|
+
await client.users.update({ firstName: 'Ada', username: 'ada' });
|
|
42
58
|
await client.users.delete(); // GDPR delete
|
|
43
59
|
```
|
|
44
60
|
|
|
@@ -72,13 +88,24 @@ try {
|
|
|
72
88
|
|---|---|---|
|
|
73
89
|
| `auth.signUp(input)` | POST | `/v1/auth/sign-up` |
|
|
74
90
|
| `auth.signIn(input)` | POST | `/v1/auth/sign-in` |
|
|
91
|
+
| `auth.completeSignIn(input)` | POST | `/v1/auth/sign-in/2fa` |
|
|
75
92
|
| `auth.signOut()` | POST | `/v1/auth/sign-out` |
|
|
76
93
|
| `auth.resendVerification(email)` | POST | `/v1/verification/resend` |
|
|
94
|
+
| `auth.forgotPassword(email)` | POST | `/v1/verification/password/forgot` |
|
|
95
|
+
| `auth.resetPassword(token, password)` | POST | `/v1/verification/password/reset` |
|
|
96
|
+
| `auth.verifyEmail(token)` | POST | `/v1/verification/verify` |
|
|
77
97
|
| `sessions.get()` | GET | `/v1/session` |
|
|
78
|
-
| `sessions.list()` | GET | `/v1/sessions` |
|
|
98
|
+
| `sessions.list({ limit, offset })` | GET | `/v1/sessions` |
|
|
79
99
|
| `sessions.revoke(id)` | DELETE | `/v1/sessions/:id` |
|
|
80
100
|
| `sessions.revokeOthers()` | DELETE | `/v1/sessions` |
|
|
81
101
|
| `password.change(input)` | POST | `/v1/user/password` |
|
|
102
|
+
| `twoFactor.setup()` | GET | `/v1/user/2fa/setup` |
|
|
103
|
+
| `twoFactor.status()` | GET | `/v1/user/2fa/status` |
|
|
104
|
+
| `twoFactor.enable(secret, code)` | POST | `/v1/user/2fa/enable` |
|
|
105
|
+
| `twoFactor.verify(code)` | POST | `/v1/user/2fa/verify` |
|
|
106
|
+
| `twoFactor.disable(code)` | POST | `/v1/user/2fa/disable` |
|
|
107
|
+
| `accounts.list()` | GET | `/v1/user/accounts` |
|
|
108
|
+
| `accounts.unlink(id, provider)` | DELETE | `/v1/user/accounts/:id` |
|
|
82
109
|
| `users.me()` | GET | `/v1/user` |
|
|
83
110
|
| `users.update(patch)` | PATCH | `/v1/user` |
|
|
84
111
|
| `users.delete()` | DELETE | `/v1/user` |
|
package/dist/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AuthResponse, ChangePasswordInput, RevokeSessionsResponse, SessionResponse, SessionsResponse, SignInInput, SignUpInput, SlyxupClientOptions, UpdateUserInput, UserResponse } from './types.js';
|
|
1
|
+
import type { AuthResponse, ChangePasswordInput, CompleteSignInInput, ConnectedAccountsResponse, EnableTOTPResponse, RevokeSessionsResponse, SessionResponse, SessionsResponse, SignInInput, SignInResponse, SignUpInput, SlyxupClientOptions, TOTPSetupResponse, TwoFactorStatusResponse, UpdateUserInput, UserResponse } from './types.js';
|
|
2
2
|
/**
|
|
3
3
|
* SlyxUp Core Client.
|
|
4
4
|
*
|
|
@@ -10,22 +10,37 @@ import type { AuthResponse, ChangePasswordInput, RevokeSessionsResponse, Session
|
|
|
10
10
|
*/
|
|
11
11
|
export declare class SlyxupClient {
|
|
12
12
|
readonly publishableKey?: string;
|
|
13
|
+
readonly secretKey?: string;
|
|
13
14
|
readonly apiUrl: string;
|
|
14
15
|
private _getToken?;
|
|
15
16
|
private _request?;
|
|
16
17
|
readonly auth: {
|
|
17
18
|
signUp: (input: SignUpInput) => Promise<AuthResponse>;
|
|
18
|
-
signIn: (input: SignInInput) => Promise<
|
|
19
|
+
signIn: (input: SignInInput) => Promise<SignInResponse>;
|
|
19
20
|
signOut: () => Promise<{
|
|
20
21
|
ok: true;
|
|
21
22
|
}>;
|
|
22
23
|
resendVerification: (email: string) => Promise<{
|
|
23
24
|
ok: true;
|
|
24
25
|
}>;
|
|
26
|
+
forgotPassword: (email: string, projectId?: string) => Promise<{
|
|
27
|
+
ok: true;
|
|
28
|
+
}>;
|
|
29
|
+
resetPassword: (token: string, password: string) => Promise<{
|
|
30
|
+
ok: true;
|
|
31
|
+
}>;
|
|
32
|
+
verifyEmail: (token: string) => Promise<{
|
|
33
|
+
ok: true;
|
|
34
|
+
}>;
|
|
35
|
+
/** Complete a 2FA challenge returned by signIn. */
|
|
36
|
+
completeSignIn: (input: CompleteSignInInput) => Promise<AuthResponse>;
|
|
25
37
|
};
|
|
26
38
|
readonly sessions: {
|
|
27
39
|
get: () => Promise<SessionResponse>;
|
|
28
|
-
list: (
|
|
40
|
+
list: (opts?: {
|
|
41
|
+
limit?: number;
|
|
42
|
+
offset?: number;
|
|
43
|
+
}) => Promise<SessionsResponse>;
|
|
29
44
|
revoke: (sessionId: string) => Promise<{
|
|
30
45
|
ok: true;
|
|
31
46
|
}>;
|
|
@@ -36,6 +51,24 @@ export declare class SlyxupClient {
|
|
|
36
51
|
ok: true;
|
|
37
52
|
}>;
|
|
38
53
|
};
|
|
54
|
+
readonly twoFactor: {
|
|
55
|
+
setup: () => Promise<TOTPSetupResponse>;
|
|
56
|
+
status: () => Promise<TwoFactorStatusResponse>;
|
|
57
|
+
enable: (secret: string, code: string) => Promise<EnableTOTPResponse>;
|
|
58
|
+
verify: (code: string) => Promise<{
|
|
59
|
+
ok: boolean;
|
|
60
|
+
valid: boolean;
|
|
61
|
+
}>;
|
|
62
|
+
disable: (code: string) => Promise<{
|
|
63
|
+
ok: true;
|
|
64
|
+
}>;
|
|
65
|
+
};
|
|
66
|
+
readonly accounts: {
|
|
67
|
+
list: () => Promise<ConnectedAccountsResponse>;
|
|
68
|
+
unlink: (accountId: string, provider: 'google' | 'github') => Promise<{
|
|
69
|
+
ok: true;
|
|
70
|
+
}>;
|
|
71
|
+
};
|
|
39
72
|
readonly users: {
|
|
40
73
|
me: () => Promise<UserResponse>;
|
|
41
74
|
update: (input: UpdateUserInput) => Promise<UserResponse>;
|
|
@@ -43,6 +76,89 @@ export declare class SlyxupClient {
|
|
|
43
76
|
ok: true;
|
|
44
77
|
}>;
|
|
45
78
|
};
|
|
79
|
+
readonly admin: {
|
|
80
|
+
/** Get current project details */
|
|
81
|
+
getProject: () => Promise<{
|
|
82
|
+
ok: true;
|
|
83
|
+
project: {
|
|
84
|
+
id: string;
|
|
85
|
+
name: string;
|
|
86
|
+
createdAt: string;
|
|
87
|
+
};
|
|
88
|
+
}>;
|
|
89
|
+
/** List users in the project */
|
|
90
|
+
listUsers: (opts?: {
|
|
91
|
+
limit?: number;
|
|
92
|
+
offset?: number;
|
|
93
|
+
}) => Promise<{
|
|
94
|
+
ok: true;
|
|
95
|
+
users: Array<{
|
|
96
|
+
id: string;
|
|
97
|
+
email: string;
|
|
98
|
+
firstName: string | null;
|
|
99
|
+
lastName: string | null;
|
|
100
|
+
emailVerified: boolean;
|
|
101
|
+
blocked: boolean;
|
|
102
|
+
createdAt: string;
|
|
103
|
+
}>;
|
|
104
|
+
total: number;
|
|
105
|
+
}>;
|
|
106
|
+
/** Get a single user by ID */
|
|
107
|
+
getUser: (userId: string) => Promise<{
|
|
108
|
+
ok: true;
|
|
109
|
+
user: {
|
|
110
|
+
id: string;
|
|
111
|
+
email: string;
|
|
112
|
+
firstName: string | null;
|
|
113
|
+
lastName: string | null;
|
|
114
|
+
emailVerified: boolean;
|
|
115
|
+
blocked: boolean;
|
|
116
|
+
createdAt: string;
|
|
117
|
+
updatedAt: string;
|
|
118
|
+
};
|
|
119
|
+
}>;
|
|
120
|
+
/** List active sessions */
|
|
121
|
+
listSessions: () => Promise<{
|
|
122
|
+
ok: true;
|
|
123
|
+
sessions: Array<{
|
|
124
|
+
id: string;
|
|
125
|
+
userId: string;
|
|
126
|
+
ipAddress: string | null;
|
|
127
|
+
userAgent: string | null;
|
|
128
|
+
expiresAt: string;
|
|
129
|
+
isExpired: boolean;
|
|
130
|
+
createdAt: string;
|
|
131
|
+
}>;
|
|
132
|
+
}>;
|
|
133
|
+
/** List API keys */
|
|
134
|
+
listKeys: () => Promise<{
|
|
135
|
+
ok: true;
|
|
136
|
+
keys: Array<{
|
|
137
|
+
id: string;
|
|
138
|
+
name: string;
|
|
139
|
+
prefix: string;
|
|
140
|
+
environment: string;
|
|
141
|
+
type: string;
|
|
142
|
+
lastUsedAt: string | null;
|
|
143
|
+
createdAt: string;
|
|
144
|
+
}>;
|
|
145
|
+
}>;
|
|
146
|
+
/** Create an API key (full key returned only once) */
|
|
147
|
+
createKey: (input: {
|
|
148
|
+
name: string;
|
|
149
|
+
type: 'publishable' | 'secret';
|
|
150
|
+
environment: 'test' | 'live';
|
|
151
|
+
}) => Promise<{
|
|
152
|
+
ok: true;
|
|
153
|
+
id: string;
|
|
154
|
+
key: string;
|
|
155
|
+
prefix: string;
|
|
156
|
+
}>;
|
|
157
|
+
/** Revoke an API key */
|
|
158
|
+
revokeKey: (keyId: string) => Promise<{
|
|
159
|
+
ok: true;
|
|
160
|
+
}>;
|
|
161
|
+
};
|
|
46
162
|
/** Get current session token (for custom project APIs that need Bearer) */
|
|
47
163
|
getToken(): string | undefined;
|
|
48
164
|
/** Raw request for custom endpoints (uses same auth headers + cookies as SDK) */
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -28,13 +28,17 @@ function createCookieJar() {
|
|
|
28
28
|
*/
|
|
29
29
|
export class SlyxupClient {
|
|
30
30
|
publishableKey;
|
|
31
|
+
secretKey;
|
|
31
32
|
apiUrl;
|
|
32
33
|
_getToken;
|
|
33
34
|
_request;
|
|
34
35
|
auth;
|
|
35
36
|
sessions;
|
|
36
37
|
password;
|
|
38
|
+
twoFactor;
|
|
39
|
+
accounts;
|
|
37
40
|
users;
|
|
41
|
+
admin;
|
|
38
42
|
/** Get current session token (for custom project APIs that need Bearer) */
|
|
39
43
|
getToken() {
|
|
40
44
|
return this._getToken?.();
|
|
@@ -47,12 +51,33 @@ export class SlyxupClient {
|
|
|
47
51
|
}
|
|
48
52
|
constructor(options = {}) {
|
|
49
53
|
const jar = createCookieJar();
|
|
54
|
+
// Persist token in localStorage so refresh keeps session for cross-origin (auth -> billing) and for dashboard project APIs
|
|
55
|
+
const STORAGE_KEY = 'slyxup_session_token';
|
|
50
56
|
let storedToken;
|
|
57
|
+
try {
|
|
58
|
+
if (typeof window !== 'undefined' && window.localStorage) {
|
|
59
|
+
storedToken = window.localStorage.getItem(STORAGE_KEY) ?? undefined;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch { }
|
|
63
|
+
const persistToken = (t) => {
|
|
64
|
+
storedToken = t;
|
|
65
|
+
try {
|
|
66
|
+
if (typeof window !== 'undefined' && window.localStorage) {
|
|
67
|
+
if (t)
|
|
68
|
+
window.localStorage.setItem(STORAGE_KEY, t);
|
|
69
|
+
else
|
|
70
|
+
window.localStorage.removeItem(STORAGE_KEY);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
catch { }
|
|
74
|
+
};
|
|
51
75
|
this.publishableKey = options.publishableKey;
|
|
76
|
+
this.secretKey = options.secretKey;
|
|
52
77
|
this.apiUrl = (options.apiUrl ?? DEFAULT_API_URL).replace(/\/$/, '');
|
|
53
78
|
this._getToken = () => storedToken;
|
|
54
79
|
// _request will be assigned after `request` is defined below
|
|
55
|
-
const requestInner = async (path, init = {}) => {
|
|
80
|
+
const requestInner = async (path, init = {}, opts) => {
|
|
56
81
|
let res;
|
|
57
82
|
try {
|
|
58
83
|
// Build headers: prefer cookie jar (SSR), fall back to stored Bearer token (browser cross-origin)
|
|
@@ -87,6 +112,8 @@ export class SlyxupClient {
|
|
|
87
112
|
.json()
|
|
88
113
|
.catch(() => ({ ok: false, error: 'Invalid response' })));
|
|
89
114
|
if (!res.ok) {
|
|
115
|
+
if (opts?.captureError)
|
|
116
|
+
return data;
|
|
90
117
|
if (res.status === 401)
|
|
91
118
|
throw new UnauthorizedError('error' in data ? String(data.error) : undefined);
|
|
92
119
|
if (res.status === 429)
|
|
@@ -97,30 +124,45 @@ export class SlyxupClient {
|
|
|
97
124
|
}
|
|
98
125
|
return data;
|
|
99
126
|
};
|
|
100
|
-
const post = (path, body) => requestInner(path, {
|
|
127
|
+
const post = (path, body, opts) => requestInner(path, {
|
|
101
128
|
method: 'POST',
|
|
102
129
|
body: body === undefined ? undefined : JSON.stringify(body),
|
|
103
|
-
});
|
|
130
|
+
}, opts);
|
|
104
131
|
this.auth = {
|
|
105
132
|
signUp: async (input) => {
|
|
106
133
|
const res = await post('/v1/auth/sign-up', input);
|
|
107
134
|
if (!('user' in res))
|
|
108
135
|
throw new SlyxupError(res.error, 400, 'api_error');
|
|
109
136
|
if (res.sessionToken)
|
|
110
|
-
|
|
137
|
+
persistToken(res.sessionToken);
|
|
111
138
|
return res;
|
|
112
139
|
},
|
|
113
140
|
signIn: async (input) => {
|
|
114
|
-
|
|
141
|
+
// The server may answer 403 with code 2FA_REQUIRED — we must surface
|
|
142
|
+
// the challenge back to the caller instead of throwing a generic error.
|
|
143
|
+
const res = await post('/v1/auth/sign-in', input, {
|
|
144
|
+
captureError: true,
|
|
145
|
+
});
|
|
146
|
+
if ('challengeToken' in res) {
|
|
147
|
+
return res;
|
|
148
|
+
}
|
|
149
|
+
if (!('user' in res))
|
|
150
|
+
throw new UnauthorizedError(res.error ?? 'Sign in failed');
|
|
151
|
+
if (res.sessionToken)
|
|
152
|
+
persistToken(res.sessionToken);
|
|
153
|
+
return res;
|
|
154
|
+
},
|
|
155
|
+
completeSignIn: async (input) => {
|
|
156
|
+
const res = await post('/v1/auth/sign-in/2fa', input);
|
|
115
157
|
if (!('user' in res))
|
|
116
|
-
throw new
|
|
158
|
+
throw new UnauthorizedError(res.error);
|
|
117
159
|
if (res.sessionToken)
|
|
118
|
-
|
|
160
|
+
persistToken(res.sessionToken);
|
|
119
161
|
return res;
|
|
120
162
|
},
|
|
121
163
|
signOut: async () => {
|
|
122
164
|
const res = await post('/v1/auth/sign-out');
|
|
123
|
-
|
|
165
|
+
persistToken(undefined);
|
|
124
166
|
jar.clear();
|
|
125
167
|
return res;
|
|
126
168
|
},
|
|
@@ -132,6 +174,32 @@ export class SlyxupClient {
|
|
|
132
174
|
throw new SlyxupError(res.error, 400, 'api_error');
|
|
133
175
|
return res;
|
|
134
176
|
},
|
|
177
|
+
forgotPassword: async (email, projectId) => {
|
|
178
|
+
const res = await post('/v1/verification/password/forgot', {
|
|
179
|
+
email,
|
|
180
|
+
projectId,
|
|
181
|
+
});
|
|
182
|
+
if (!res.ok)
|
|
183
|
+
throw new SlyxupError(res.error, 400, 'api_error');
|
|
184
|
+
return res;
|
|
185
|
+
},
|
|
186
|
+
resetPassword: async (token, password) => {
|
|
187
|
+
const res = await post('/v1/verification/password/reset', {
|
|
188
|
+
token,
|
|
189
|
+
password,
|
|
190
|
+
});
|
|
191
|
+
if (!res.ok)
|
|
192
|
+
throw new SlyxupError(res.error, 400, 'api_error');
|
|
193
|
+
return res;
|
|
194
|
+
},
|
|
195
|
+
verifyEmail: async (token) => {
|
|
196
|
+
const res = await post('/v1/verification/verify', {
|
|
197
|
+
token,
|
|
198
|
+
});
|
|
199
|
+
if (!res.ok)
|
|
200
|
+
throw new SlyxupError(res.error, 400, 'api_error');
|
|
201
|
+
return res;
|
|
202
|
+
},
|
|
135
203
|
};
|
|
136
204
|
this.sessions = {
|
|
137
205
|
get: async () => {
|
|
@@ -140,8 +208,14 @@ export class SlyxupClient {
|
|
|
140
208
|
throw new UnauthorizedError(res.error);
|
|
141
209
|
return res;
|
|
142
210
|
},
|
|
143
|
-
list: async () => {
|
|
144
|
-
const
|
|
211
|
+
list: async (opts) => {
|
|
212
|
+
const params = new URLSearchParams();
|
|
213
|
+
if (opts?.limit !== undefined)
|
|
214
|
+
params.set('limit', String(opts.limit));
|
|
215
|
+
if (opts?.offset !== undefined)
|
|
216
|
+
params.set('offset', String(opts.offset));
|
|
217
|
+
const qs = params.toString();
|
|
218
|
+
const res = await requestInner(`/v1/sessions${qs ? `?${qs}` : ''}`);
|
|
145
219
|
if (!('sessions' in res))
|
|
146
220
|
throw new SlyxupError(res.error, 400, 'api_error');
|
|
147
221
|
return res;
|
|
@@ -169,6 +243,50 @@ export class SlyxupClient {
|
|
|
169
243
|
return res;
|
|
170
244
|
},
|
|
171
245
|
};
|
|
246
|
+
this.twoFactor = {
|
|
247
|
+
setup: async () => {
|
|
248
|
+
const res = await requestInner('/v1/user/2fa/setup');
|
|
249
|
+
if (!('secret' in res))
|
|
250
|
+
throw new SlyxupError(res.error, 400, 'api_error');
|
|
251
|
+
return res;
|
|
252
|
+
},
|
|
253
|
+
status: async () => {
|
|
254
|
+
const res = await requestInner('/v1/user/2fa/status');
|
|
255
|
+
return res;
|
|
256
|
+
},
|
|
257
|
+
enable: async (secret, code) => {
|
|
258
|
+
const res = await post('/v1/user/2fa/enable', { secret, code }, { captureError: true });
|
|
259
|
+
if (!('recoveryCodes' in res))
|
|
260
|
+
throw new SlyxupError(res.error, 400, 'api_error');
|
|
261
|
+
return res;
|
|
262
|
+
},
|
|
263
|
+
verify: async (code) => {
|
|
264
|
+
const res = await post('/v1/user/2fa/verify', { code }, { captureError: true });
|
|
265
|
+
if (!('valid' in res))
|
|
266
|
+
throw new SlyxupError(res.error, 400, 'api_error');
|
|
267
|
+
return res;
|
|
268
|
+
},
|
|
269
|
+
disable: async (code) => {
|
|
270
|
+
const res = await post('/v1/user/2fa/disable', { code });
|
|
271
|
+
if (!res.ok)
|
|
272
|
+
throw new SlyxupError(res.error, 400, 'api_error');
|
|
273
|
+
return res;
|
|
274
|
+
},
|
|
275
|
+
};
|
|
276
|
+
this.accounts = {
|
|
277
|
+
list: async () => {
|
|
278
|
+
const res = await requestInner('/v1/user/accounts');
|
|
279
|
+
if (!('accounts' in res))
|
|
280
|
+
throw new SlyxupError(res.error, 400, 'api_error');
|
|
281
|
+
return res;
|
|
282
|
+
},
|
|
283
|
+
unlink: async (accountId, provider) => {
|
|
284
|
+
const res = await requestInner(`/v1/user/accounts/${accountId}?provider=${encodeURIComponent(provider)}`, {
|
|
285
|
+
method: 'DELETE',
|
|
286
|
+
});
|
|
287
|
+
return res;
|
|
288
|
+
},
|
|
289
|
+
};
|
|
172
290
|
this.users = {
|
|
173
291
|
me: async () => {
|
|
174
292
|
const res = await requestInner('/v1/user');
|
|
@@ -192,6 +310,65 @@ export class SlyxupClient {
|
|
|
192
310
|
return res;
|
|
193
311
|
},
|
|
194
312
|
};
|
|
313
|
+
// ── Admin API (requires secretKey) ──
|
|
314
|
+
const sk = options.secretKey;
|
|
315
|
+
const adminRequest = async (path, init = {}) => {
|
|
316
|
+
if (!sk)
|
|
317
|
+
throw new SlyxupError('Secret key required for admin API', 400, 'api_error');
|
|
318
|
+
const res = await fetch(`${this.apiUrl}${path}`, {
|
|
319
|
+
...init,
|
|
320
|
+
headers: {
|
|
321
|
+
'Content-Type': 'application/json',
|
|
322
|
+
Authorization: `Bearer ${sk}`,
|
|
323
|
+
...init.headers,
|
|
324
|
+
},
|
|
325
|
+
});
|
|
326
|
+
const data = (await res
|
|
327
|
+
.json()
|
|
328
|
+
.catch(() => ({ ok: false, error: 'Invalid response' })));
|
|
329
|
+
if (!res.ok) {
|
|
330
|
+
throw new SlyxupError('error' in data
|
|
331
|
+
? String(data.error)
|
|
332
|
+
: `Request failed (${res.status})`, res.status, 'api_error');
|
|
333
|
+
}
|
|
334
|
+
return data;
|
|
335
|
+
};
|
|
336
|
+
this.admin = {
|
|
337
|
+
getProject: async () => {
|
|
338
|
+
const res = await adminRequest('/v1/admin/project');
|
|
339
|
+
return res;
|
|
340
|
+
},
|
|
341
|
+
listUsers: async (opts) => {
|
|
342
|
+
const params = new URLSearchParams();
|
|
343
|
+
if (opts?.limit !== undefined)
|
|
344
|
+
params.set('limit', String(opts.limit));
|
|
345
|
+
if (opts?.offset !== undefined)
|
|
346
|
+
params.set('offset', String(opts.offset));
|
|
347
|
+
const qs = params.toString();
|
|
348
|
+
const res = await adminRequest(`/v1/admin/users${qs ? `?${qs}` : ''}`);
|
|
349
|
+
return res;
|
|
350
|
+
},
|
|
351
|
+
getUser: async (userId) => {
|
|
352
|
+
const res = await adminRequest(`/v1/admin/users/${encodeURIComponent(userId)}`);
|
|
353
|
+
return res;
|
|
354
|
+
},
|
|
355
|
+
listSessions: async () => {
|
|
356
|
+
const res = await adminRequest('/v1/admin/sessions');
|
|
357
|
+
return res;
|
|
358
|
+
},
|
|
359
|
+
listKeys: async () => {
|
|
360
|
+
const res = await adminRequest('/v1/admin/keys');
|
|
361
|
+
return res;
|
|
362
|
+
},
|
|
363
|
+
createKey: async (input) => {
|
|
364
|
+
const res = await adminRequest('/v1/admin/keys', { method: 'POST', body: JSON.stringify(input) });
|
|
365
|
+
return res;
|
|
366
|
+
},
|
|
367
|
+
revokeKey: async (keyId) => {
|
|
368
|
+
const res = await adminRequest(`/v1/admin/keys/${encodeURIComponent(keyId)}`, { method: 'DELETE' });
|
|
369
|
+
return res;
|
|
370
|
+
},
|
|
371
|
+
};
|
|
195
372
|
this._request = requestInner;
|
|
196
373
|
}
|
|
197
374
|
}
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|