@nexys/user-management-client 0.1.0 → 0.2.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 +19 -0
- package/dist/endpoints/admin-users.d.ts +53 -23
- package/dist/endpoints/admin-users.d.ts.map +1 -1
- package/dist/endpoints/admin-users.js +56 -23
- package/dist/endpoints/admin-users.js.map +1 -1
- package/dist/endpoints/api-tokens.d.ts +23 -0
- package/dist/endpoints/api-tokens.d.ts.map +1 -0
- package/dist/endpoints/api-tokens.js +28 -0
- package/dist/endpoints/api-tokens.js.map +1 -0
- package/dist/endpoints/auth.d.ts +50 -7
- package/dist/endpoints/auth.d.ts.map +1 -1
- package/dist/endpoints/auth.js +33 -4
- package/dist/endpoints/auth.js.map +1 -1
- package/dist/endpoints/index.d.ts +4 -0
- package/dist/endpoints/index.d.ts.map +1 -1
- package/dist/endpoints/index.js +4 -0
- package/dist/endpoints/index.js.map +1 -1
- package/dist/endpoints/me.d.ts +14 -1
- package/dist/endpoints/me.d.ts.map +1 -1
- package/dist/endpoints/me.js +11 -0
- package/dist/endpoints/me.js.map +1 -1
- package/dist/endpoints/passkeys.d.ts +39 -0
- package/dist/endpoints/passkeys.d.ts.map +1 -0
- package/dist/endpoints/passkeys.js +53 -0
- package/dist/endpoints/passkeys.js.map +1 -0
- package/dist/endpoints/projects.d.ts +69 -0
- package/dist/endpoints/projects.d.ts.map +1 -0
- package/dist/endpoints/projects.js +73 -0
- package/dist/endpoints/projects.js.map +1 -0
- package/dist/endpoints/tenants.d.ts +72 -103
- package/dist/endpoints/tenants.d.ts.map +1 -1
- package/dist/endpoints/tenants.js +64 -82
- package/dist/endpoints/tenants.js.map +1 -1
- package/dist/endpoints/two-factor.d.ts +50 -0
- package/dist/endpoints/two-factor.d.ts.map +1 -0
- package/dist/endpoints/two-factor.js +64 -0
- package/dist/endpoints/two-factor.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +128 -44
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +7 -2
- package/src/endpoint.test.ts +158 -0
- package/src/endpoint.ts +123 -0
- package/src/endpoints/admin-audit.ts +60 -0
- package/src/endpoints/admin-keys.ts +37 -0
- package/src/endpoints/admin-users.ts +172 -0
- package/src/endpoints/api-tokens.ts +37 -0
- package/src/endpoints/auth.ts +203 -0
- package/src/endpoints/health.ts +50 -0
- package/src/endpoints/index.ts +12 -0
- package/src/endpoints/me.ts +79 -0
- package/src/endpoints/passkeys.ts +77 -0
- package/src/endpoints/projects.ts +117 -0
- package/src/endpoints/refresh-tokens.ts +25 -0
- package/src/endpoints/tenants.ts +313 -0
- package/src/endpoints/two-factor.ts +84 -0
- package/src/index.ts +26 -0
- package/src/result.ts +39 -0
- package/src/types.ts +285 -0
package/README.md
CHANGED
|
@@ -79,3 +79,22 @@ const myEndpoint: Endpoint<{ id: string }, Thing, ApiError> = {
|
|
|
79
79
|
bun test # 9 hermetic tests using a mock fetch
|
|
80
80
|
bun run typecheck
|
|
81
81
|
```
|
|
82
|
+
|
|
83
|
+
## Releasing
|
|
84
|
+
|
|
85
|
+
Publishing runs in CI (`.github/workflows/publish-client.yml`, needs the
|
|
86
|
+
`NPM_TOKEN` repo secret): bump `version` in `package.json`, then push a
|
|
87
|
+
matching tag —
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
git tag client-v0.2.0 && git push origin client-v0.2.0
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
The workflow typechecks, tests, builds `dist/`, rewrites the package
|
|
94
|
+
entries (`main`/`types`/`exports`) to point at `dist/` and runs
|
|
95
|
+
`npm publish --provenance --access public`.
|
|
96
|
+
|
|
97
|
+
Inside this repo the package entries stay on the TS source, so the
|
|
98
|
+
workspaces (`apps/web`'s vite build, `packages/web`, `apps/e2e`) keep
|
|
99
|
+
importing `src/` directly — only the published artifact is dist-based
|
|
100
|
+
(with a `bun` export condition so bun consumers still get the source).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Endpoint } from "../endpoint.js";
|
|
2
2
|
import type { ApiError } from "../result.js";
|
|
3
|
-
import type {
|
|
3
|
+
import type { AdminUserListResponse, AdminUserRow, AuthMethodsResponse, UserMembership, UserRole, UserStatus } from "../types.js";
|
|
4
4
|
export interface AdminListUsersInput {
|
|
5
5
|
status?: UserStatus;
|
|
6
6
|
includeDeleted?: boolean;
|
|
@@ -8,6 +8,54 @@ export interface AdminListUsersInput {
|
|
|
8
8
|
offset?: number;
|
|
9
9
|
}
|
|
10
10
|
export declare const adminListUsers: Endpoint<AdminListUsersInput, AdminUserListResponse, ApiError>;
|
|
11
|
+
/** Single user with linked auth providers — powers the detail page. */
|
|
12
|
+
export declare const adminGetUser: Endpoint<{
|
|
13
|
+
userId: string;
|
|
14
|
+
}, AdminUserRow, ApiError>;
|
|
15
|
+
/** Auth-method inventory: accounts, passkeys, 2FA flag. */
|
|
16
|
+
export declare const adminAuthMethods: Endpoint<{
|
|
17
|
+
userId: string;
|
|
18
|
+
}, AuthMethodsResponse, ApiError>;
|
|
19
|
+
/**
|
|
20
|
+
* Add a sign-in method as `{authType, value}`. authType "credential"
|
|
21
|
+
* sets a password (value = the password); a social authType (google,
|
|
22
|
+
* microsoft, …) pre-links the provider account (value = provider-side
|
|
23
|
+
* account id or email) so the user's first social sign-in lands here.
|
|
24
|
+
*/
|
|
25
|
+
export declare const adminAddAccount: Endpoint<{
|
|
26
|
+
userId: string;
|
|
27
|
+
authType: string;
|
|
28
|
+
value: string;
|
|
29
|
+
}, {
|
|
30
|
+
id: string;
|
|
31
|
+
providerId: string;
|
|
32
|
+
}, ApiError>;
|
|
33
|
+
/** Unlink an account row (social link or password credential). 409 if it's the last sign-in method. */
|
|
34
|
+
export declare const adminUnlinkAccount: Endpoint<{
|
|
35
|
+
userId: string;
|
|
36
|
+
accountId: string;
|
|
37
|
+
}, {
|
|
38
|
+
ok: true;
|
|
39
|
+
}, ApiError>;
|
|
40
|
+
/** Remove a passkey. 409 if it's the last sign-in method. */
|
|
41
|
+
export declare const adminDeletePasskey: Endpoint<{
|
|
42
|
+
userId: string;
|
|
43
|
+
passkeyId: string;
|
|
44
|
+
}, {
|
|
45
|
+
ok: true;
|
|
46
|
+
}, ApiError>;
|
|
47
|
+
/** Admin kill-switch for a user's TOTP (lost authenticator). */
|
|
48
|
+
export declare const adminDisableTwoFactor: Endpoint<{
|
|
49
|
+
userId: string;
|
|
50
|
+
}, {
|
|
51
|
+
ok: true;
|
|
52
|
+
}, ApiError>;
|
|
53
|
+
/** Tenants the user belongs to — powers the "manage tenants" panel. */
|
|
54
|
+
export declare const adminListUserTenants: Endpoint<{
|
|
55
|
+
userId: string;
|
|
56
|
+
}, {
|
|
57
|
+
memberships: UserMembership[];
|
|
58
|
+
}, ApiError>;
|
|
11
59
|
export interface SetUserStatusResponse {
|
|
12
60
|
ok: true;
|
|
13
61
|
status: UserStatus;
|
|
@@ -18,6 +66,10 @@ export declare const adminSetUserStatus: Endpoint<{
|
|
|
18
66
|
userId: string;
|
|
19
67
|
status: UserStatus;
|
|
20
68
|
}, SetUserStatusResponse, ApiError>;
|
|
69
|
+
/**
|
|
70
|
+
* Role change rides the Better Auth admin-plugin route — the server
|
|
71
|
+
* guards demoting the last active superadmin (409).
|
|
72
|
+
*/
|
|
21
73
|
export declare const adminSetUserRole: Endpoint<{
|
|
22
74
|
userId: string;
|
|
23
75
|
role: UserRole;
|
|
@@ -31,26 +83,4 @@ export declare const adminRevokeUserTokens: Endpoint<{
|
|
|
31
83
|
sessionsRevoked: number;
|
|
32
84
|
refreshTokensRevoked: number;
|
|
33
85
|
}, ApiError>;
|
|
34
|
-
export declare const adminGetUser: Endpoint<{
|
|
35
|
-
userId: string;
|
|
36
|
-
}, AdminUserDetail, ApiError>;
|
|
37
|
-
export declare const adminDeleteUser: Endpoint<{
|
|
38
|
-
userId: string;
|
|
39
|
-
}, {
|
|
40
|
-
ok: true;
|
|
41
|
-
}, ApiError>;
|
|
42
|
-
export declare const adminGetUserRoles: Endpoint<{
|
|
43
|
-
userId: string;
|
|
44
|
-
organizationId: string;
|
|
45
|
-
}, {
|
|
46
|
-
roles: UserRoleRow[];
|
|
47
|
-
}, ApiError>;
|
|
48
|
-
export declare const adminToggleUserRole: Endpoint<{
|
|
49
|
-
userId: string;
|
|
50
|
-
organizationId: string;
|
|
51
|
-
roleId: string;
|
|
52
|
-
assign: boolean;
|
|
53
|
-
}, {
|
|
54
|
-
ok: true;
|
|
55
|
-
}, ApiError>;
|
|
56
86
|
//# sourceMappingURL=admin-users.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-users.d.ts","sourceRoot":"","sources":["../../src/endpoints/admin-users.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"admin-users.d.ts","sourceRoot":"","sources":["../../src/endpoints/admin-users.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,50 +11,83 @@ export const adminListUsers = {
|
|
|
11
11
|
parseOutput: (data) => data,
|
|
12
12
|
parseError: parseApiError,
|
|
13
13
|
};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
/** Single user with linked auth providers — powers the detail page. */
|
|
15
|
+
export const adminGetUser = {
|
|
16
|
+
method: "GET",
|
|
17
|
+
path: ({ userId }) => `/api/admin/users/${encodeURIComponent(userId)}`,
|
|
18
18
|
parseOutput: (data) => data,
|
|
19
19
|
parseError: parseApiError,
|
|
20
20
|
};
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
parseOutput: () =>
|
|
21
|
+
/** Auth-method inventory: accounts, passkeys, 2FA flag. */
|
|
22
|
+
export const adminAuthMethods = {
|
|
23
|
+
method: "GET",
|
|
24
|
+
path: ({ userId }) => `/api/admin/users/${encodeURIComponent(userId)}/auth-methods`,
|
|
25
|
+
parseOutput: (data) => data,
|
|
26
26
|
parseError: parseApiError,
|
|
27
27
|
};
|
|
28
|
-
|
|
28
|
+
/**
|
|
29
|
+
* Add a sign-in method as `{authType, value}`. authType "credential"
|
|
30
|
+
* sets a password (value = the password); a social authType (google,
|
|
31
|
+
* microsoft, …) pre-links the provider account (value = provider-side
|
|
32
|
+
* account id or email) so the user's first social sign-in lands here.
|
|
33
|
+
*/
|
|
34
|
+
export const adminAddAccount = {
|
|
29
35
|
method: "POST",
|
|
30
|
-
path: ({ userId }) => `/api/admin/users/${encodeURIComponent(userId)}/
|
|
36
|
+
path: ({ userId }) => `/api/admin/users/${encodeURIComponent(userId)}/accounts`,
|
|
37
|
+
body: ({ authType, value }) => ({ authType, value }),
|
|
31
38
|
parseOutput: (data) => data,
|
|
32
39
|
parseError: parseApiError,
|
|
33
40
|
};
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
41
|
+
/** Unlink an account row (social link or password credential). 409 if it's the last sign-in method. */
|
|
42
|
+
export const adminUnlinkAccount = {
|
|
43
|
+
method: "DELETE",
|
|
44
|
+
path: ({ userId, accountId }) => `/api/admin/users/${encodeURIComponent(userId)}/accounts/${encodeURIComponent(accountId)}`,
|
|
45
|
+
parseOutput: () => ({ ok: true }),
|
|
38
46
|
parseError: parseApiError,
|
|
39
47
|
};
|
|
40
|
-
|
|
48
|
+
/** Remove a passkey. 409 if it's the last sign-in method. */
|
|
49
|
+
export const adminDeletePasskey = {
|
|
41
50
|
method: "DELETE",
|
|
42
|
-
path: ({ userId }) => `/api/admin/users/${encodeURIComponent(userId)}`,
|
|
51
|
+
path: ({ userId, passkeyId }) => `/api/admin/users/${encodeURIComponent(userId)}/passkeys/${encodeURIComponent(passkeyId)}`,
|
|
52
|
+
parseOutput: () => ({ ok: true }),
|
|
53
|
+
parseError: parseApiError,
|
|
54
|
+
};
|
|
55
|
+
/** Admin kill-switch for a user's TOTP (lost authenticator). */
|
|
56
|
+
export const adminDisableTwoFactor = {
|
|
57
|
+
method: "POST",
|
|
58
|
+
path: ({ userId }) => `/api/admin/users/${encodeURIComponent(userId)}/two-factor/disable`,
|
|
43
59
|
parseOutput: () => ({ ok: true }),
|
|
44
60
|
parseError: parseApiError,
|
|
45
61
|
};
|
|
46
|
-
|
|
62
|
+
/** Tenants the user belongs to — powers the "manage tenants" panel. */
|
|
63
|
+
export const adminListUserTenants = {
|
|
47
64
|
method: "GET",
|
|
48
|
-
path: ({ userId }) => `/api/admin/users/${encodeURIComponent(userId)}/
|
|
49
|
-
query: ({ organizationId }) => ({ organizationId }),
|
|
65
|
+
path: ({ userId }) => `/api/admin/users/${encodeURIComponent(userId)}/tenants`,
|
|
50
66
|
parseOutput: (data) => data,
|
|
51
67
|
parseError: parseApiError,
|
|
52
68
|
};
|
|
53
|
-
export const
|
|
69
|
+
export const adminSetUserStatus = {
|
|
54
70
|
method: "POST",
|
|
55
|
-
path: ({ userId }) => `/api/admin/users/${encodeURIComponent(userId)}/
|
|
56
|
-
body: ({
|
|
71
|
+
path: ({ userId }) => `/api/admin/users/${encodeURIComponent(userId)}/status`,
|
|
72
|
+
body: ({ status }) => ({ status }),
|
|
73
|
+
parseOutput: (data) => data,
|
|
74
|
+
parseError: parseApiError,
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Role change rides the Better Auth admin-plugin route — the server
|
|
78
|
+
* guards demoting the last active superadmin (409).
|
|
79
|
+
*/
|
|
80
|
+
export const adminSetUserRole = {
|
|
81
|
+
method: "POST",
|
|
82
|
+
path: () => "/api/auth/admin/set-role",
|
|
83
|
+
body: (input) => input,
|
|
57
84
|
parseOutput: () => ({ ok: true }),
|
|
58
85
|
parseError: parseApiError,
|
|
59
86
|
};
|
|
87
|
+
export const adminRevokeUserTokens = {
|
|
88
|
+
method: "POST",
|
|
89
|
+
path: ({ userId }) => `/api/admin/users/${encodeURIComponent(userId)}/revoke-tokens`,
|
|
90
|
+
parseOutput: (data) => data,
|
|
91
|
+
parseError: parseApiError,
|
|
92
|
+
};
|
|
60
93
|
//# sourceMappingURL=admin-users.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-users.js","sourceRoot":"","sources":["../../src/endpoints/admin-users.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"admin-users.js","sourceRoot":"","sources":["../../src/endpoints/admin-users.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Endpoint } from "../endpoint.js";
|
|
2
|
+
import type { ApiError } from "../result.js";
|
|
3
|
+
import type { ApiTokenCreated, ApiTokenRow } from "../types.js";
|
|
4
|
+
/**
|
|
5
|
+
* Personal API tokens ("CLI" credentials). They authenticate as
|
|
6
|
+
* `Authorization: Bearer um_…` or `x-api-key`. Creating/revoking
|
|
7
|
+
* requires a session credential — a token cannot mint more tokens.
|
|
8
|
+
* Revoked tokens keep their row (status flips); the server's retention
|
|
9
|
+
* policy deletes dead rows after TOKEN_RETENTION_DAYS.
|
|
10
|
+
*/
|
|
11
|
+
export declare const createApiToken: Endpoint<{
|
|
12
|
+
name: string;
|
|
13
|
+
expiresInDays?: number;
|
|
14
|
+
}, ApiTokenCreated, ApiError>;
|
|
15
|
+
export declare const listApiTokens: Endpoint<void, {
|
|
16
|
+
tokens: ApiTokenRow[];
|
|
17
|
+
}, ApiError>;
|
|
18
|
+
export declare const revokeApiToken: Endpoint<{
|
|
19
|
+
id: string;
|
|
20
|
+
}, {
|
|
21
|
+
ok: true;
|
|
22
|
+
}, ApiError>;
|
|
23
|
+
//# sourceMappingURL=api-tokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-tokens.d.ts","sourceRoot":"","sources":["../../src/endpoints/api-tokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEhE;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,EAAE,QAAQ,CACnC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,EACxC,eAAe,EACf,QAAQ,CAOT,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,IAAI,EAAE;IAAE,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,EAAE,QAAQ,CAK7E,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,EAAE,QAAQ,CAK3E,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { parseApiError } from "../result.js";
|
|
2
|
+
/**
|
|
3
|
+
* Personal API tokens ("CLI" credentials). They authenticate as
|
|
4
|
+
* `Authorization: Bearer um_…` or `x-api-key`. Creating/revoking
|
|
5
|
+
* requires a session credential — a token cannot mint more tokens.
|
|
6
|
+
* Revoked tokens keep their row (status flips); the server's retention
|
|
7
|
+
* policy deletes dead rows after TOKEN_RETENTION_DAYS.
|
|
8
|
+
*/
|
|
9
|
+
export const createApiToken = {
|
|
10
|
+
method: "POST",
|
|
11
|
+
path: () => "/api/me/tokens",
|
|
12
|
+
body: (input) => input,
|
|
13
|
+
parseOutput: (data) => data,
|
|
14
|
+
parseError: parseApiError,
|
|
15
|
+
};
|
|
16
|
+
export const listApiTokens = {
|
|
17
|
+
method: "GET",
|
|
18
|
+
path: () => "/api/me/tokens",
|
|
19
|
+
parseOutput: (data) => data,
|
|
20
|
+
parseError: parseApiError,
|
|
21
|
+
};
|
|
22
|
+
export const revokeApiToken = {
|
|
23
|
+
method: "DELETE",
|
|
24
|
+
path: (input) => `/api/me/tokens/${input.id}`,
|
|
25
|
+
parseOutput: () => ({ ok: true }),
|
|
26
|
+
parseError: parseApiError,
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=api-tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-tokens.js","sourceRoot":"","sources":["../../src/endpoints/api-tokens.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAIvB;IACF,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,GAAG,EAAE,CAAC,gBAAgB;IAC5B,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACtB,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAuB;IAC9C,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAwD;IAChF,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,GAAG,EAAE,CAAC,gBAAgB;IAC5B,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAiC;IACxD,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAqD;IAC9E,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,KAAK,CAAC,EAAE,EAAE;IAC7C,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACjC,UAAU,EAAE,aAAa;CAC1B,CAAC"}
|
package/dist/endpoints/auth.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Endpoint } from "../endpoint.js";
|
|
2
2
|
import type { ApiError } from "../result.js";
|
|
3
|
-
import type { AuthSuccess } from "../types.js";
|
|
3
|
+
import type { AuthSuccess, SignInResult } from "../types.js";
|
|
4
4
|
/** Sign-up surfaces a couple of specific codes the UI may want to switch on. */
|
|
5
5
|
export type SignUpError = ApiError | {
|
|
6
6
|
kind: "http";
|
|
@@ -17,6 +17,11 @@ export declare const signUp: Endpoint<{
|
|
|
17
17
|
name: string;
|
|
18
18
|
email: string;
|
|
19
19
|
password: string;
|
|
20
|
+
/**
|
|
21
|
+
* Project-scoped sign-up: the target project must exist and have
|
|
22
|
+
* `allowSignup` enabled (403 `signup_disabled` otherwise).
|
|
23
|
+
*/
|
|
24
|
+
projectId?: string;
|
|
20
25
|
}, AuthSuccess, SignUpError>;
|
|
21
26
|
/** Sign-in collapses bad-email / bad-password into one enumeration-safe code. */
|
|
22
27
|
export type SignInError = ApiError | {
|
|
@@ -33,7 +38,9 @@ export type SignInError = ApiError | {
|
|
|
33
38
|
export declare const signIn: Endpoint<{
|
|
34
39
|
email: string;
|
|
35
40
|
password: string;
|
|
36
|
-
},
|
|
41
|
+
}, SignInResult, SignInError>;
|
|
42
|
+
/** Full user + session snapshot; `null` body when unauthenticated. */
|
|
43
|
+
export declare const getSession: Endpoint<void, AuthSuccess | null, ApiError>;
|
|
37
44
|
export declare const signOut: Endpoint<void, {
|
|
38
45
|
success: boolean;
|
|
39
46
|
}, ApiError>;
|
|
@@ -44,7 +51,7 @@ export declare const requestPasswordReset: Endpoint<{
|
|
|
44
51
|
}, ApiError>;
|
|
45
52
|
export declare const resetPassword: Endpoint<{
|
|
46
53
|
token: string;
|
|
47
|
-
|
|
54
|
+
newPassword: string;
|
|
48
55
|
}, {
|
|
49
56
|
ok: true;
|
|
50
57
|
}, ApiError>;
|
|
@@ -59,14 +66,16 @@ export declare const verifyMagicLink: Endpoint<{
|
|
|
59
66
|
ok: true;
|
|
60
67
|
}, ApiError>;
|
|
61
68
|
/**
|
|
62
|
-
* Better Auth admin-plugin user create.
|
|
63
|
-
*
|
|
64
|
-
*
|
|
69
|
+
* Better Auth admin-plugin user create. Superadmin/useradmin only;
|
|
70
|
+
* the account lands active + email-verified with a password
|
|
71
|
+
* credential. Returns the full user under `user`.
|
|
65
72
|
*/
|
|
66
73
|
export declare const adminCreateUser: Endpoint<{
|
|
67
74
|
email: string;
|
|
68
75
|
password: string;
|
|
69
|
-
name
|
|
76
|
+
name?: string;
|
|
77
|
+
firstName?: string;
|
|
78
|
+
lastName?: string;
|
|
70
79
|
role?: string;
|
|
71
80
|
}, {
|
|
72
81
|
user: {
|
|
@@ -74,12 +83,46 @@ export declare const adminCreateUser: Endpoint<{
|
|
|
74
83
|
email: string;
|
|
75
84
|
};
|
|
76
85
|
}, ApiError>;
|
|
86
|
+
/**
|
|
87
|
+
* Better Auth admin-plugin user update — edit name and/or email.
|
|
88
|
+
* Email keeps its verified flag; uniqueness enforced (422).
|
|
89
|
+
*/
|
|
90
|
+
export declare const adminUpdateUser: Endpoint<{
|
|
91
|
+
userId: string;
|
|
92
|
+
name?: string;
|
|
93
|
+
firstName?: string;
|
|
94
|
+
lastName?: string;
|
|
95
|
+
email?: string;
|
|
96
|
+
}, {
|
|
97
|
+
user: {
|
|
98
|
+
id: string;
|
|
99
|
+
email: string;
|
|
100
|
+
name: string;
|
|
101
|
+
};
|
|
102
|
+
}, ApiError>;
|
|
103
|
+
/**
|
|
104
|
+
* Better Auth admin-plugin user delete (soft delete — sets
|
|
105
|
+
* `deletedAt` and revokes the user's sessions). Idempotent.
|
|
106
|
+
*/
|
|
107
|
+
export declare const adminRemoveUser: Endpoint<{
|
|
108
|
+
userId: string;
|
|
109
|
+
}, {
|
|
110
|
+
success: true;
|
|
111
|
+
sessionsRevoked: number;
|
|
112
|
+
refreshTokensRevoked: number;
|
|
113
|
+
}, ApiError>;
|
|
77
114
|
export declare const getProviders: Endpoint<void, {
|
|
78
115
|
providers: string[];
|
|
79
116
|
}, ApiError>;
|
|
80
117
|
export declare const socialSignIn: Endpoint<{
|
|
81
118
|
provider: string;
|
|
82
119
|
callbackURL?: string;
|
|
120
|
+
/**
|
|
121
|
+
* Project-scoped flow. If the callback would create a *new* user,
|
|
122
|
+
* the project's `allowSignup` setting gates it; existing users
|
|
123
|
+
* sign in regardless.
|
|
124
|
+
*/
|
|
125
|
+
projectId?: string;
|
|
83
126
|
}, {
|
|
84
127
|
url: string;
|
|
85
128
|
redirect: true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/endpoints/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/endpoints/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/endpoints/auth.js
CHANGED
|
@@ -13,6 +13,13 @@ export const signIn = {
|
|
|
13
13
|
parseOutput: (data) => data,
|
|
14
14
|
parseError: parseApiError,
|
|
15
15
|
};
|
|
16
|
+
/** Full user + session snapshot; `null` body when unauthenticated. */
|
|
17
|
+
export const getSession = {
|
|
18
|
+
method: "GET",
|
|
19
|
+
path: () => "/api/auth/get-session",
|
|
20
|
+
parseOutput: (data) => data,
|
|
21
|
+
parseError: parseApiError,
|
|
22
|
+
};
|
|
16
23
|
export const signOut = {
|
|
17
24
|
method: "POST",
|
|
18
25
|
path: () => "/api/auth/sign-out",
|
|
@@ -29,7 +36,7 @@ export const requestPasswordReset = {
|
|
|
29
36
|
export const resetPassword = {
|
|
30
37
|
method: "POST",
|
|
31
38
|
path: () => "/api/auth/reset-password",
|
|
32
|
-
body: (input) => input,
|
|
39
|
+
body: (input) => ({ token: input.token, newPassword: input.newPassword }),
|
|
33
40
|
parseOutput: () => ({ ok: true }),
|
|
34
41
|
parseError: parseApiError,
|
|
35
42
|
};
|
|
@@ -48,9 +55,9 @@ export const verifyMagicLink = {
|
|
|
48
55
|
parseError: parseApiError,
|
|
49
56
|
};
|
|
50
57
|
/**
|
|
51
|
-
* Better Auth admin-plugin user create.
|
|
52
|
-
*
|
|
53
|
-
*
|
|
58
|
+
* Better Auth admin-plugin user create. Superadmin/useradmin only;
|
|
59
|
+
* the account lands active + email-verified with a password
|
|
60
|
+
* credential. Returns the full user under `user`.
|
|
54
61
|
*/
|
|
55
62
|
export const adminCreateUser = {
|
|
56
63
|
method: "POST",
|
|
@@ -59,6 +66,28 @@ export const adminCreateUser = {
|
|
|
59
66
|
parseOutput: (data) => data,
|
|
60
67
|
parseError: parseApiError,
|
|
61
68
|
};
|
|
69
|
+
/**
|
|
70
|
+
* Better Auth admin-plugin user update — edit name and/or email.
|
|
71
|
+
* Email keeps its verified flag; uniqueness enforced (422).
|
|
72
|
+
*/
|
|
73
|
+
export const adminUpdateUser = {
|
|
74
|
+
method: "POST",
|
|
75
|
+
path: () => "/api/auth/admin/update-user",
|
|
76
|
+
body: (input) => input,
|
|
77
|
+
parseOutput: (data) => data,
|
|
78
|
+
parseError: parseApiError,
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Better Auth admin-plugin user delete (soft delete — sets
|
|
82
|
+
* `deletedAt` and revokes the user's sessions). Idempotent.
|
|
83
|
+
*/
|
|
84
|
+
export const adminRemoveUser = {
|
|
85
|
+
method: "POST",
|
|
86
|
+
path: () => "/api/auth/admin/remove-user",
|
|
87
|
+
body: (input) => input,
|
|
88
|
+
parseOutput: (data) => data,
|
|
89
|
+
parseError: parseApiError,
|
|
90
|
+
};
|
|
62
91
|
export const getProviders = {
|
|
63
92
|
method: "GET",
|
|
64
93
|
path: () => "/api/providers",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/endpoints/auth.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAS7C,MAAM,CAAC,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/endpoints/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
export * from "./api-tokens.js";
|
|
1
2
|
export * from "./auth.js";
|
|
2
3
|
export * from "./me.js";
|
|
4
|
+
export * from "./passkeys.js";
|
|
5
|
+
export * from "./two-factor.js";
|
|
3
6
|
export * from "./refresh-tokens.js";
|
|
4
7
|
export * from "./admin-users.js";
|
|
5
8
|
export * from "./admin-audit.js";
|
|
6
9
|
export * from "./admin-keys.js";
|
|
7
10
|
export * from "./health.js";
|
|
8
11
|
export * from "./tenants.js";
|
|
12
|
+
export * from "./projects.js";
|
|
9
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/endpoints/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/endpoints/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
|
package/dist/endpoints/index.js
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
export * from "./api-tokens.js";
|
|
1
2
|
export * from "./auth.js";
|
|
2
3
|
export * from "./me.js";
|
|
4
|
+
export * from "./passkeys.js";
|
|
5
|
+
export * from "./two-factor.js";
|
|
3
6
|
export * from "./refresh-tokens.js";
|
|
4
7
|
export * from "./admin-users.js";
|
|
5
8
|
export * from "./admin-audit.js";
|
|
6
9
|
export * from "./admin-keys.js";
|
|
7
10
|
export * from "./health.js";
|
|
8
11
|
export * from "./tenants.js";
|
|
12
|
+
export * from "./projects.js";
|
|
9
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/endpoints/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/endpoints/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
|
package/dist/endpoints/me.d.ts
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import type { Endpoint } from "../endpoint.js";
|
|
2
2
|
import type { ApiError } from "../result.js";
|
|
3
|
-
import type { MeResponse, TokenMintResponse, TokenRefreshResponse } from "../types.js";
|
|
3
|
+
import type { MeResponse, TokenMintResponse, TokenRefreshResponse, UserMembership } from "../types.js";
|
|
4
4
|
export declare const me: Endpoint<void, MeResponse, ApiError>;
|
|
5
|
+
/**
|
|
6
|
+
* The caller's own tenant memberships — self-service counterpart of
|
|
7
|
+
* the admin-only `adminListUserTenants`, for org discovery before
|
|
8
|
+
* `setActiveTenant`.
|
|
9
|
+
*/
|
|
10
|
+
export declare const myTenants: Endpoint<void, {
|
|
11
|
+
memberships: UserMembership[];
|
|
12
|
+
}, ApiError>;
|
|
5
13
|
export declare const updateProfile: Endpoint<{
|
|
6
14
|
name?: string;
|
|
7
15
|
image?: string | null;
|
|
@@ -11,6 +19,11 @@ export declare const updateProfile: Endpoint<{
|
|
|
11
19
|
export declare const mintToken: Endpoint<void, TokenMintResponse, ApiError>;
|
|
12
20
|
export declare const refreshToken: Endpoint<{
|
|
13
21
|
refreshToken: string;
|
|
22
|
+
/**
|
|
23
|
+
* The expiring access token — lets the rotation carry its active
|
|
24
|
+
* organization forward (membership re-validated server-side).
|
|
25
|
+
*/
|
|
26
|
+
accessToken?: string;
|
|
14
27
|
}, TokenRefreshResponse, ApiError>;
|
|
15
28
|
/** Cookie-based refresh — no body needed, the httpOnly cookie carries the token. */
|
|
16
29
|
export declare const refreshViaCookie: Endpoint<void, TokenRefreshResponse, ApiError>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"me.d.ts","sourceRoot":"","sources":["../../src/endpoints/me.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EACjB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"me.d.ts","sourceRoot":"","sources":["../../src/endpoints/me.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACf,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAKnD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,SAAS,EAAE,QAAQ,CAC9B,IAAI,EACJ;IAAE,WAAW,EAAE,cAAc,EAAE,CAAA;CAAE,EACjC,QAAQ,CAMT,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,QAAQ,CAClC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EACxC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,EACZ,QAAQ,CAOT,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,EAAE,QAAQ,CAKjE,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,QAAQ,CACjC;IACE,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,EACD,oBAAoB,EACpB,QAAQ,CAOT,CAAC;AAEF,oFAAoF;AACpF,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,IAAI,EAAE,oBAAoB,EAAE,QAAQ,CAMzE,CAAC"}
|
package/dist/endpoints/me.js
CHANGED
|
@@ -5,6 +5,17 @@ export const me = {
|
|
|
5
5
|
parseOutput: (data) => data,
|
|
6
6
|
parseError: parseApiError,
|
|
7
7
|
};
|
|
8
|
+
/**
|
|
9
|
+
* The caller's own tenant memberships — self-service counterpart of
|
|
10
|
+
* the admin-only `adminListUserTenants`, for org discovery before
|
|
11
|
+
* `setActiveTenant`.
|
|
12
|
+
*/
|
|
13
|
+
export const myTenants = {
|
|
14
|
+
method: "GET",
|
|
15
|
+
path: () => "/api/me/tenants",
|
|
16
|
+
parseOutput: (data) => data,
|
|
17
|
+
parseError: parseApiError,
|
|
18
|
+
};
|
|
8
19
|
export const updateProfile = {
|
|
9
20
|
method: "PATCH",
|
|
10
21
|
path: () => "/api/me",
|
package/dist/endpoints/me.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"me.js","sourceRoot":"","sources":["../../src/endpoints/me.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"me.js","sourceRoot":"","sources":["../../src/endpoints/me.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAQ7C,MAAM,CAAC,MAAM,EAAE,GAAyC;IACtD,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;IACrB,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAkB;IACzC,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAIlB;IACF,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,GAAG,EAAE,CAAC,iBAAiB;IAC7B,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAyC;IAChE,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAItB;IACF,MAAM,EAAE,OAAO;IACf,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;IACrB,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACtB,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACjC,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAgD;IACpE,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,GAAG,EAAE,CAAC,iBAAiB;IAC7B,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAyB;IAChD,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAWrB;IACF,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,GAAG,EAAE,CAAC,mBAAmB;IAC/B,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACtB,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAA4B;IACnD,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,oFAAoF;AACpF,MAAM,CAAC,MAAM,gBAAgB,GAC3B;IACE,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,GAAG,EAAE,CAAC,mBAAmB;IAC/B,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAA4B;IACnD,UAAU,EAAE,aAAa;CAC1B,CAAC"}
|