@nexys/user-management-client 0.1.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.
Files changed (54) hide show
  1. package/README.md +81 -0
  2. package/dist/endpoint.d.ts +51 -0
  3. package/dist/endpoint.d.ts.map +1 -0
  4. package/dist/endpoint.js +65 -0
  5. package/dist/endpoint.js.map +1 -0
  6. package/dist/endpoints/admin-audit.d.ts +38 -0
  7. package/dist/endpoints/admin-audit.d.ts.map +1 -0
  8. package/dist/endpoints/admin-audit.js +17 -0
  9. package/dist/endpoints/admin-audit.js.map +1 -0
  10. package/dist/endpoints/admin-keys.d.ts +23 -0
  11. package/dist/endpoints/admin-keys.d.ts.map +1 -0
  12. package/dist/endpoints/admin-keys.js +20 -0
  13. package/dist/endpoints/admin-keys.js.map +1 -0
  14. package/dist/endpoints/admin-users.d.ts +56 -0
  15. package/dist/endpoints/admin-users.d.ts.map +1 -0
  16. package/dist/endpoints/admin-users.js +60 -0
  17. package/dist/endpoints/admin-users.js.map +1 -0
  18. package/dist/endpoints/auth.d.ts +93 -0
  19. package/dist/endpoints/auth.d.ts.map +1 -0
  20. package/dist/endpoints/auth.js +82 -0
  21. package/dist/endpoints/auth.js.map +1 -0
  22. package/dist/endpoints/health.d.ts +33 -0
  23. package/dist/endpoints/health.d.ts.map +1 -0
  24. package/dist/endpoints/health.js +20 -0
  25. package/dist/endpoints/health.js.map +1 -0
  26. package/dist/endpoints/index.d.ts +9 -0
  27. package/dist/endpoints/index.d.ts.map +1 -0
  28. package/dist/endpoints/index.js +9 -0
  29. package/dist/endpoints/index.js.map +1 -0
  30. package/dist/endpoints/me.d.ts +17 -0
  31. package/dist/endpoints/me.d.ts.map +1 -0
  32. package/dist/endpoints/me.js +35 -0
  33. package/dist/endpoints/me.js.map +1 -0
  34. package/dist/endpoints/refresh-tokens.d.ts +13 -0
  35. package/dist/endpoints/refresh-tokens.d.ts.map +1 -0
  36. package/dist/endpoints/refresh-tokens.js +20 -0
  37. package/dist/endpoints/refresh-tokens.js.map +1 -0
  38. package/dist/endpoints/tenants.d.ts +184 -0
  39. package/dist/endpoints/tenants.d.ts.map +1 -0
  40. package/dist/endpoints/tenants.js +182 -0
  41. package/dist/endpoints/tenants.js.map +1 -0
  42. package/dist/index.d.ts +5 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +6 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/result.d.ts +36 -0
  47. package/dist/result.d.ts.map +1 -0
  48. package/dist/result.js +21 -0
  49. package/dist/result.js.map +1 -0
  50. package/dist/types.d.ts +179 -0
  51. package/dist/types.d.ts.map +1 -0
  52. package/dist/types.js +7 -0
  53. package/dist/types.js.map +1 -0
  54. package/package.json +26 -0
package/README.md ADDED
@@ -0,0 +1,81 @@
1
+ # `@nexys/user-management-client`
2
+
3
+ Tiny TypeScript client for the `user-management-rs` axum API.
4
+ No React, no DOM. Endpoints are plain data, calls return `Result`,
5
+ nothing throws.
6
+
7
+ The wire types are kept byte-for-byte aligned with
8
+ `rust/crates/um-server/src/wire.rs`.
9
+
10
+ ## Pattern
11
+
12
+ ```ts
13
+ type Endpoint<Input, Output, Err> = {
14
+ method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
15
+ path: (input: Input) => string;
16
+ body?: (input: Input) => unknown;
17
+ query?: (input: Input) => Record<string, string | number | boolean | undefined | null>;
18
+ parseOutput: (data: unknown) => Output;
19
+ parseError: (status: number, data: unknown) => Err;
20
+ };
21
+
22
+ type Result<T, E> = { ok: true; data: T } | { ok: false; error: E };
23
+ ```
24
+
25
+ An `Endpoint` is pure data. `createClient({ baseUrl }).call(endpoint, input)`
26
+ is the only execution path; it returns
27
+ `Result<Output, Err | { kind: "network" }>` and never throws.
28
+
29
+ ## Usage
30
+
31
+ ```ts
32
+ import { createClient, signIn } from "@nexys/user-management-client";
33
+
34
+ const um = createClient({
35
+ baseUrl: "https://auth.example.com",
36
+ onUnauthorized: () => location.assign("/sign-in"),
37
+ });
38
+
39
+ const res = await um.call(signIn, { email, password });
40
+ if (res.ok) {
41
+ console.log("welcome", res.data.user.email);
42
+ } else if (res.error.kind === "network") {
43
+ toast("Can't reach the server.");
44
+ } else {
45
+ // res.error.kind === "http"
46
+ toast(res.error.message);
47
+ if (res.error.code === "INVALID_EMAIL_OR_PASSWORD") highlightFields();
48
+ }
49
+ ```
50
+
51
+ For endpoints whose Input is `void`, the second arg is omitted:
52
+
53
+ ```ts
54
+ const me = await um.call(meEndpoint);
55
+ ```
56
+
57
+ ## Endpoints (all named exports)
58
+
59
+ - **Auth**: `signUp`, `signIn`, `signOut`, `requestPasswordReset`, `resetPassword`, `requestMagicLink`, `changePassword`
60
+ - **Identity**: `me`, `mintToken`, `refreshToken`, `updateProfile`
61
+ - **Refresh tokens**: `listRefreshTokens`, `revokeRefreshToken`, `revokeAllRefreshTokens`
62
+ - **Admin users**: `adminListUsers`, `adminSetUserStatus`, `adminSetUserRole`, `adminRevokeUserTokens`
63
+ - **Tenants**: `adminListTenants`, `createTenant`, `setActiveTenant`, `getFullTenant`, `inviteMember`, `acceptInvitation`, `updateMemberRole`, `removeMember`
64
+
65
+ Custom endpoints look the same; drop one in and it composes with `call`:
66
+
67
+ ```ts
68
+ const myEndpoint: Endpoint<{ id: string }, Thing, ApiError> = {
69
+ method: "GET",
70
+ path: ({ id }) => `/api/things/${id}`,
71
+ parseOutput: (d) => d as Thing,
72
+ parseError: parseApiError,
73
+ };
74
+ ```
75
+
76
+ ## Tests
77
+
78
+ ```bash
79
+ bun test # 9 hermetic tests using a mock fetch
80
+ bun run typecheck
81
+ ```
@@ -0,0 +1,51 @@
1
+ import type { NetworkError, Result } from "./result.js";
2
+ export type Method = "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
3
+ /**
4
+ * An Endpoint is plain data — no execution, no transport. It says
5
+ * "this is how the URL is shaped, how to encode the body, and how to
6
+ * parse the response (ok or error)". Run it with `call(endpoint, input)`.
7
+ */
8
+ export interface Endpoint<Input, Output, Err> {
9
+ method: Method;
10
+ path: (input: Input) => string;
11
+ /** Returns the JSON body. Omit for GET / DELETE. */
12
+ body?: (input: Input) => unknown;
13
+ /** Returns query params; undefined / null entries are dropped. */
14
+ query?: (input: Input) => Record<string, string | number | boolean | undefined | null>;
15
+ parseOutput: (data: unknown) => Output;
16
+ parseError: (status: number, data: unknown) => Err;
17
+ }
18
+ export interface ClientConfig {
19
+ /** API base URL — e.g. https://auth.example.com (no trailing slash). */
20
+ baseUrl: string;
21
+ /** Override the global fetch (SSR / tests). */
22
+ fetch?: typeof fetch;
23
+ /** Headers merged into every request. */
24
+ headers?: Record<string, string>;
25
+ /** Fired whenever the server returns 401 — typically triggers a re-login flow. */
26
+ onUnauthorized?: () => void;
27
+ }
28
+ /**
29
+ * Pull I, O, E out of a concrete endpoint so call() can be typed
30
+ * without callers spelling the parameters.
31
+ */
32
+ export type EndpointInput<E> = E extends Endpoint<infer I, unknown, unknown> ? I : never;
33
+ export type EndpointOutput<E> = E extends Endpoint<unknown, infer O, unknown> ? O : never;
34
+ export type EndpointError<E> = E extends Endpoint<unknown, unknown, infer Err> ? Err : never;
35
+ /** "If Input is void, omit the input arg" trick. */
36
+ type CallArgs<I> = [I] extends [void] ? [] : [input: I];
37
+ export interface UmClient {
38
+ /** Execute an endpoint. Never throws — returns Result. */
39
+ call<I, O, E>(endpoint: Endpoint<I, O, E>, ...args: CallArgs<I>): Promise<Result<O, E | NetworkError>>;
40
+ }
41
+ /**
42
+ * Build a client. The returned object exposes a single `call` method;
43
+ * everything else is endpoint data.
44
+ *
45
+ * const um = createClient({ baseUrl: "https://auth.example.com" });
46
+ * const res = await um.call(signIn, { email, password });
47
+ * if (res.ok) { … } else { … }
48
+ */
49
+ export declare const createClient: (config: ClientConfig) => UmClient;
50
+ export {};
51
+ //# sourceMappingURL=endpoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../src/endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEjE;;;;GAIG;AACH,MAAM,WAAW,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC;IAC/B,oDAAoD;IACpD,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;IACjC,kEAAkE;IAClE,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;IACvF,WAAW,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,CAAC;IACvC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,GAAG,CAAC;CACpD;AAED,MAAM,WAAW,YAAY;IAC3B,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,kFAAkF;IAClF,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACzF,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC1F,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;AAE7F,oDAAoD;AACpD,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAExD,MAAM,WAAW,QAAQ;IACvB,0DAA0D;IAC1D,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACV,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC3B,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;CACzC;AAgBD;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GAAI,QAAQ,YAAY,KAAG,QAkDnD,CAAC"}
@@ -0,0 +1,65 @@
1
+ const stripTrailing = (b) => b.replace(/\/+$/, "");
2
+ const encodeQuery = (q) => {
3
+ if (!q)
4
+ return "";
5
+ const parts = [];
6
+ for (const [k, v] of Object.entries(q)) {
7
+ if (v === undefined || v === null || v === "")
8
+ continue;
9
+ parts.push(`${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`);
10
+ }
11
+ return parts.length ? `?${parts.join("&")}` : "";
12
+ };
13
+ /**
14
+ * Build a client. The returned object exposes a single `call` method;
15
+ * everything else is endpoint data.
16
+ *
17
+ * const um = createClient({ baseUrl: "https://auth.example.com" });
18
+ * const res = await um.call(signIn, { email, password });
19
+ * if (res.ok) { … } else { … }
20
+ */
21
+ export const createClient = (config) => {
22
+ const baseUrl = stripTrailing(config.baseUrl);
23
+ const fetcher = config.fetch ?? globalThis.fetch?.bind(globalThis);
24
+ return {
25
+ call: async (endpoint, ...args) => {
26
+ const input = args[0] ?? undefined;
27
+ const url = `${baseUrl}${endpoint.path(input)}${encodeQuery(endpoint.query?.(input))}`;
28
+ const init = {
29
+ method: endpoint.method,
30
+ credentials: "include",
31
+ headers: {
32
+ accept: "application/json",
33
+ ...(endpoint.body ? { "content-type": "application/json" } : {}),
34
+ ...(config.headers ?? {}),
35
+ },
36
+ ...(endpoint.body ? { body: JSON.stringify(endpoint.body(input)) } : {}),
37
+ };
38
+ let res;
39
+ try {
40
+ res = await fetcher(url, init);
41
+ }
42
+ catch (e) {
43
+ return {
44
+ ok: false,
45
+ error: {
46
+ kind: "network",
47
+ message: e instanceof Error ? e.message : String(e),
48
+ },
49
+ };
50
+ }
51
+ // 204 No Content — no body to parse. Endpoints that legitimately
52
+ // return 204 should set parseOutput to accept null.
53
+ const data = res.status === 204
54
+ ? null
55
+ : await res.json().catch(() => null);
56
+ if (res.status === 401)
57
+ config.onUnauthorized?.();
58
+ if (!res.ok) {
59
+ return { ok: false, error: endpoint.parseError(res.status, data) };
60
+ }
61
+ return { ok: true, data: endpoint.parseOutput(data) };
62
+ },
63
+ };
64
+ };
65
+ //# sourceMappingURL=endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../src/endpoint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { Endpoint } from "../endpoint.js";
2
+ import type { ApiError } from "../result.js";
3
+ export interface AuditLogRow {
4
+ id: string;
5
+ action: string;
6
+ actorId: string | null;
7
+ actorEmail: string | null;
8
+ actorType: string | null;
9
+ resourceType: string | null;
10
+ resourceId: string | null;
11
+ organizationId: string | null;
12
+ ipAddress: string | null;
13
+ userAgent: string | null;
14
+ metadata: unknown;
15
+ success: boolean;
16
+ createdAt: string;
17
+ }
18
+ export interface AuditLogListResponse {
19
+ total: number;
20
+ rows: AuditLogRow[];
21
+ }
22
+ /**
23
+ * Query filters supported by `/api/admin/audit-logs`.
24
+ * Mirrors `apps/server/crates/um-server/src/routes/admin_audit.rs` — keep
25
+ * field names + semantics aligned with the server's `ListQuery`. Note:
26
+ * `actionPrefix` is a prefix match; there's no exact-action filter.
27
+ */
28
+ export interface AdminListAuditLogsInput {
29
+ actorId?: string;
30
+ actionPrefix?: string;
31
+ organizationId?: string;
32
+ since?: string;
33
+ until?: string;
34
+ limit?: number;
35
+ offset?: number;
36
+ }
37
+ export declare const adminListAuditLogs: Endpoint<AdminListAuditLogsInput, AuditLogListResponse, ApiError>;
38
+ //# sourceMappingURL=admin-audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-audit.d.ts","sourceRoot":"","sources":["../../src/endpoints/admin-audit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG7C,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,WAAW,EAAE,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CACvC,uBAAuB,EACvB,oBAAoB,EACpB,QAAQ,CAeT,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { parseApiError } from "../result.js";
2
+ export const adminListAuditLogs = {
3
+ method: "GET",
4
+ path: () => "/api/admin/audit-logs",
5
+ query: (input) => ({
6
+ actorId: input.actorId,
7
+ actionPrefix: input.actionPrefix,
8
+ organizationId: input.organizationId,
9
+ since: input.since,
10
+ until: input.until,
11
+ limit: input.limit,
12
+ offset: input.offset,
13
+ }),
14
+ parseOutput: (data) => data,
15
+ parseError: parseApiError,
16
+ };
17
+ //# sourceMappingURL=admin-audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-audit.js","sourceRoot":"","sources":["../../src/endpoints/admin-audit.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAuC7C,MAAM,CAAC,MAAM,kBAAkB,GAI3B;IACF,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,GAAG,EAAE,CAAC,uBAAuB;IACnC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACjB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAC;IACF,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAA4B;IACnD,UAAU,EAAE,aAAa;CAC1B,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { Endpoint } from "../endpoint.js";
2
+ import type { ApiError } from "../result.js";
3
+ export interface AdminKeyRow {
4
+ kid: string;
5
+ alg: string;
6
+ status: "active" | "retired" | "revoked" | (string & {});
7
+ createdAt: string;
8
+ retiredAt: string | null;
9
+ revokedAt: string | null;
10
+ }
11
+ export declare const adminListKeys: Endpoint<void, {
12
+ keys: AdminKeyRow[];
13
+ }, ApiError>;
14
+ export declare const adminRotateKey: Endpoint<void, {
15
+ kid: string;
16
+ createdAt: string;
17
+ }, ApiError>;
18
+ export declare const adminRevokeKey: Endpoint<{
19
+ kid: string;
20
+ }, {
21
+ ok: true;
22
+ }, ApiError>;
23
+ //# sourceMappingURL=admin-keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-keys.d.ts","sourceRoot":"","sources":["../../src/endpoints/admin-keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG7C,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,WAAW,EAAE,CAAA;CAAE,EAAE,QAAQ,CAK3E,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,QAAQ,CACnC,IAAI,EACJ;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAClC,QAAQ,CAMT,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,EAAE,QAAQ,CAK5E,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { parseApiError } from "../result.js";
2
+ export const adminListKeys = {
3
+ method: "GET",
4
+ path: () => "/api/admin/keys",
5
+ parseOutput: (data) => data,
6
+ parseError: parseApiError,
7
+ };
8
+ export const adminRotateKey = {
9
+ method: "POST",
10
+ path: () => "/api/admin/keys/rotate",
11
+ parseOutput: (data) => data,
12
+ parseError: parseApiError,
13
+ };
14
+ export const adminRevokeKey = {
15
+ method: "POST",
16
+ path: ({ kid }) => `/api/admin/keys/${encodeURIComponent(kid)}/revoke`,
17
+ parseOutput: () => ({ ok: true }),
18
+ parseError: parseApiError,
19
+ };
20
+ //# sourceMappingURL=admin-keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-keys.js","sourceRoot":"","sources":["../../src/endpoints/admin-keys.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAW7C,MAAM,CAAC,MAAM,aAAa,GAAsD;IAC9E,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,GAAG,EAAE,CAAC,iBAAiB;IAC7B,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAA+B;IACtD,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAIvB;IACF,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,GAAG,EAAE,CAAC,wBAAwB;IACpC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAA0C;IACjE,UAAU,EAAE,aAAa;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAsD;IAC/E,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,mBAAmB,kBAAkB,CAAC,GAAG,CAAC,SAAS;IACtE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACjC,UAAU,EAAE,aAAa;CAC1B,CAAC"}
@@ -0,0 +1,56 @@
1
+ import type { Endpoint } from "../endpoint.js";
2
+ import type { ApiError } from "../result.js";
3
+ import type { AdminUserDetail, AdminUserListResponse, UserRole, UserRoleRow, UserStatus } from "../types.js";
4
+ export interface AdminListUsersInput {
5
+ status?: UserStatus;
6
+ includeDeleted?: boolean;
7
+ limit?: number;
8
+ offset?: number;
9
+ }
10
+ export declare const adminListUsers: Endpoint<AdminListUsersInput, AdminUserListResponse, ApiError>;
11
+ export interface SetUserStatusResponse {
12
+ ok: true;
13
+ status: UserStatus;
14
+ sessionsRevoked: number;
15
+ refreshTokensRevoked: number;
16
+ }
17
+ export declare const adminSetUserStatus: Endpoint<{
18
+ userId: string;
19
+ status: UserStatus;
20
+ }, SetUserStatusResponse, ApiError>;
21
+ export declare const adminSetUserRole: Endpoint<{
22
+ userId: string;
23
+ role: UserRole;
24
+ }, {
25
+ ok: true;
26
+ }, ApiError>;
27
+ export declare const adminRevokeUserTokens: Endpoint<{
28
+ userId: string;
29
+ }, {
30
+ ok: true;
31
+ sessionsRevoked: number;
32
+ refreshTokensRevoked: number;
33
+ }, 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
+ //# sourceMappingURL=admin-users.d.ts.map
@@ -0,0 +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,eAAe,EACf,qBAAqB,EACrB,QAAQ,EACR,WAAW,EACX,UAAU,EACX,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,cAAc,EAAE,QAAQ,CACnC,mBAAmB,EACnB,qBAAqB,EACrB,QAAQ,CAYT,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,IAAI,CAAC;IACT,MAAM,EAAE,UAAU,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CACvC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,EACtC,qBAAqB,EACrB,QAAQ,CAOT,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CACrC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,EAClC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,EACZ,QAAQ,CAOT,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAC1C;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EAClB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAA;CAAE,EACnE,QAAQ,CAOT,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,QAAQ,CACjC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EAClB,eAAe,EACf,QAAQ,CAMT,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,QAAQ,CACpC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EAClB;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,EACZ,QAAQ,CAMT,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CACtC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,EAC1C;IAAE,KAAK,EAAE,WAAW,EAAE,CAAA;CAAE,EACxB,QAAQ,CAOT,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CACxC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,EAC3E;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,EACZ,QAAQ,CAOT,CAAC"}
@@ -0,0 +1,60 @@
1
+ import { parseApiError } from "../result.js";
2
+ export const adminListUsers = {
3
+ method: "GET",
4
+ path: () => "/api/admin/users",
5
+ query: (input) => ({
6
+ status: input.status,
7
+ includeDeleted: input.includeDeleted ? "true" : undefined,
8
+ limit: input.limit,
9
+ offset: input.offset,
10
+ }),
11
+ parseOutput: (data) => data,
12
+ parseError: parseApiError,
13
+ };
14
+ export const adminSetUserStatus = {
15
+ method: "POST",
16
+ path: ({ userId }) => `/api/admin/users/${encodeURIComponent(userId)}/status`,
17
+ body: ({ status }) => ({ status }),
18
+ parseOutput: (data) => data,
19
+ parseError: parseApiError,
20
+ };
21
+ export const adminSetUserRole = {
22
+ method: "POST",
23
+ path: ({ userId }) => `/api/admin/users/${encodeURIComponent(userId)}/role`,
24
+ body: ({ role }) => ({ role }),
25
+ parseOutput: () => ({ ok: true }),
26
+ parseError: parseApiError,
27
+ };
28
+ export const adminRevokeUserTokens = {
29
+ method: "POST",
30
+ path: ({ userId }) => `/api/admin/users/${encodeURIComponent(userId)}/revoke-tokens`,
31
+ parseOutput: (data) => data,
32
+ parseError: parseApiError,
33
+ };
34
+ export const adminGetUser = {
35
+ method: "GET",
36
+ path: ({ userId }) => `/api/admin/users/${encodeURIComponent(userId)}`,
37
+ parseOutput: (data) => data,
38
+ parseError: parseApiError,
39
+ };
40
+ export const adminDeleteUser = {
41
+ method: "DELETE",
42
+ path: ({ userId }) => `/api/admin/users/${encodeURIComponent(userId)}`,
43
+ parseOutput: () => ({ ok: true }),
44
+ parseError: parseApiError,
45
+ };
46
+ export const adminGetUserRoles = {
47
+ method: "GET",
48
+ path: ({ userId }) => `/api/admin/users/${encodeURIComponent(userId)}/roles`,
49
+ query: ({ organizationId }) => ({ organizationId }),
50
+ parseOutput: (data) => data,
51
+ parseError: parseApiError,
52
+ };
53
+ export const adminToggleUserRole = {
54
+ method: "POST",
55
+ path: ({ userId }) => `/api/admin/users/${encodeURIComponent(userId)}/roles`,
56
+ body: ({ organizationId, roleId, assign }) => ({ organizationId, roleId, assign }),
57
+ parseOutput: () => ({ ok: true }),
58
+ parseError: parseApiError,
59
+ };
60
+ //# sourceMappingURL=admin-users.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-users.js","sourceRoot":"","sources":["../../src/endpoints/admin-users.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ import type { Endpoint } from "../endpoint.js";
2
+ import type { ApiError } from "../result.js";
3
+ import type { AuthSuccess } from "../types.js";
4
+ /** Sign-up surfaces a couple of specific codes the UI may want to switch on. */
5
+ export type SignUpError = ApiError | {
6
+ kind: "http";
7
+ status: 422;
8
+ code: "USER_ALREADY_EXISTS";
9
+ message: string;
10
+ } | {
11
+ kind: "http";
12
+ status: 422;
13
+ code: "PASSWORD_TOO_SHORT";
14
+ message: string;
15
+ };
16
+ export declare const signUp: Endpoint<{
17
+ name: string;
18
+ email: string;
19
+ password: string;
20
+ }, AuthSuccess, SignUpError>;
21
+ /** Sign-in collapses bad-email / bad-password into one enumeration-safe code. */
22
+ export type SignInError = ApiError | {
23
+ kind: "http";
24
+ status: 401;
25
+ code: "INVALID_EMAIL_OR_PASSWORD";
26
+ message: string;
27
+ } | {
28
+ kind: "http";
29
+ status: 403;
30
+ code: "INACTIVE_USER";
31
+ message: string;
32
+ };
33
+ export declare const signIn: Endpoint<{
34
+ email: string;
35
+ password: string;
36
+ }, AuthSuccess, SignInError>;
37
+ export declare const signOut: Endpoint<void, {
38
+ success: boolean;
39
+ }, ApiError>;
40
+ export declare const requestPasswordReset: Endpoint<{
41
+ email: string;
42
+ }, {
43
+ ok: true;
44
+ }, ApiError>;
45
+ export declare const resetPassword: Endpoint<{
46
+ token: string;
47
+ password: string;
48
+ }, {
49
+ ok: true;
50
+ }, ApiError>;
51
+ export declare const requestMagicLink: Endpoint<{
52
+ email: string;
53
+ }, {
54
+ ok: true;
55
+ }, ApiError>;
56
+ export declare const verifyMagicLink: Endpoint<{
57
+ token: string;
58
+ }, {
59
+ ok: true;
60
+ }, ApiError>;
61
+ /**
62
+ * Better Auth admin-plugin user create. The rust server doesn't expose
63
+ * this route yet; the journey suite uses the endpoint to verify the
64
+ * absence + the permission check.
65
+ */
66
+ export declare const adminCreateUser: Endpoint<{
67
+ email: string;
68
+ password: string;
69
+ name: string;
70
+ role?: string;
71
+ }, {
72
+ user: {
73
+ id: string;
74
+ email: string;
75
+ };
76
+ }, ApiError>;
77
+ export declare const getProviders: Endpoint<void, {
78
+ providers: string[];
79
+ }, ApiError>;
80
+ export declare const socialSignIn: Endpoint<{
81
+ provider: string;
82
+ callbackURL?: string;
83
+ }, {
84
+ url: string;
85
+ redirect: true;
86
+ }, ApiError>;
87
+ export declare const changePassword: Endpoint<{
88
+ currentPassword: string;
89
+ newPassword: string;
90
+ }, {
91
+ ok: true;
92
+ }, ApiError>;
93
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +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;AAE/C,gFAAgF;AAChF,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,qBAAqB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,oBAAoB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/E,eAAO,MAAM,MAAM,EAAE,QAAQ,CAC3B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EACjD,WAAW,EACX,WAAW,CAOZ,CAAC;AAEF,iFAAiF;AACjF,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,2BAA2B,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACjF;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1E,eAAO,MAAM,MAAM,EAAE,QAAQ,CAC3B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EACnC,WAAW,EACX,WAAW,CAOZ,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,EAAE,QAAQ,CAKlE,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,EAAE,QAAQ,CAMpF,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,QAAQ,CAClC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EACnC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,EACZ,QAAQ,CAOT,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,EAAE,QAAQ,CAMhF,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,EAAE,QAAQ,CAM/E,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,CACpC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAChE;IAAE,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EACvC,QAAQ,CAOT,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,EAAE,QAAQ,CAK1E,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,QAAQ,CACjC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1C;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,IAAI,CAAA;CAAE,EAC/B,QAAQ,CAOT,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,QAAQ,CACnC;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EAChD;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,EACZ,QAAQ,CAOT,CAAC"}
@@ -0,0 +1,82 @@
1
+ import { parseApiError } from "../result.js";
2
+ export const signUp = {
3
+ method: "POST",
4
+ path: () => "/api/auth/sign-up/email",
5
+ body: (input) => input,
6
+ parseOutput: (data) => data,
7
+ parseError: parseApiError,
8
+ };
9
+ export const signIn = {
10
+ method: "POST",
11
+ path: () => "/api/auth/sign-in/email",
12
+ body: (input) => input,
13
+ parseOutput: (data) => data,
14
+ parseError: parseApiError,
15
+ };
16
+ export const signOut = {
17
+ method: "POST",
18
+ path: () => "/api/auth/sign-out",
19
+ parseOutput: (data) => data,
20
+ parseError: parseApiError,
21
+ };
22
+ export const requestPasswordReset = {
23
+ method: "POST",
24
+ path: () => "/api/auth/forget-password",
25
+ body: (input) => input,
26
+ parseOutput: () => ({ ok: true }),
27
+ parseError: parseApiError,
28
+ };
29
+ export const resetPassword = {
30
+ method: "POST",
31
+ path: () => "/api/auth/reset-password",
32
+ body: (input) => input,
33
+ parseOutput: () => ({ ok: true }),
34
+ parseError: parseApiError,
35
+ };
36
+ export const requestMagicLink = {
37
+ method: "POST",
38
+ path: () => "/api/auth/sign-in/magic-link",
39
+ body: (input) => input,
40
+ parseOutput: () => ({ ok: true }),
41
+ parseError: parseApiError,
42
+ };
43
+ export const verifyMagicLink = {
44
+ method: "GET",
45
+ path: () => "/api/auth/magic-link/verify",
46
+ query: ({ token }) => ({ token }),
47
+ parseOutput: () => ({ ok: true }),
48
+ parseError: parseApiError,
49
+ };
50
+ /**
51
+ * Better Auth admin-plugin user create. The rust server doesn't expose
52
+ * this route yet; the journey suite uses the endpoint to verify the
53
+ * absence + the permission check.
54
+ */
55
+ export const adminCreateUser = {
56
+ method: "POST",
57
+ path: () => "/api/auth/admin/create-user",
58
+ body: (input) => input,
59
+ parseOutput: (data) => data,
60
+ parseError: parseApiError,
61
+ };
62
+ export const getProviders = {
63
+ method: "GET",
64
+ path: () => "/api/providers",
65
+ parseOutput: (data) => data,
66
+ parseError: parseApiError,
67
+ };
68
+ export const socialSignIn = {
69
+ method: "POST",
70
+ path: () => "/api/auth/sign-in/social",
71
+ body: (input) => input,
72
+ parseOutput: (data) => data,
73
+ parseError: parseApiError,
74
+ };
75
+ export const changePassword = {
76
+ method: "POST",
77
+ path: () => "/api/auth/change-password",
78
+ body: (input) => input,
79
+ parseOutput: () => ({ ok: true }),
80
+ parseError: parseApiError,
81
+ };
82
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/endpoints/auth.ts"],"names":[],"mappings":"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"}