@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/dist/result.js ADDED
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Result + error types. Endpoints never throw — `call` collapses
3
+ * thrown exceptions into `{ kind: "network" }` and HTTP errors into
4
+ * whatever shape `endpoint.parseError` produces.
5
+ */
6
+ /**
7
+ * Lift a JSON error body into `ApiError`. Tolerates non-JSON
8
+ * (data === null) and missing fields.
9
+ */
10
+ export const parseApiError = (status, data) => {
11
+ const body = (data ?? {});
12
+ return {
13
+ kind: "http",
14
+ status,
15
+ code: body.code ?? body.error,
16
+ message: body.message ?? body.error ?? `Request failed (${status})`,
17
+ };
18
+ };
19
+ export const ok = (data) => ({ ok: true, data });
20
+ export const err = (error) => ({ ok: false, error });
21
+ //# sourceMappingURL=result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.js","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmBH;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAc,EAAE,IAAa,EAAY,EAAE;IACvE,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,CAAwD,CAAC;IACjF,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,MAAM;QACN,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,mBAAmB,MAAM,GAAG;KACpE,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,EAAE,GAAG,CAAI,IAAO,EAAoB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACzE,MAAM,CAAC,MAAM,GAAG,GAAG,CAAI,KAAQ,EAAoB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC"}
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Wire types matching the `user-management-rs` axum server.
3
+ * Field names are camelCase because the Rust wire.rs renames them
4
+ * with serde — keep this file byte-for-byte aligned with the server.
5
+ */
6
+ export type UserRole = "superadmin" | "useradmin" | "user" | (string & {});
7
+ export type TenantRole = "owner" | "admin" | "member" | (string & {});
8
+ export type UserStatus = "active" | "inactive" | "pending" | (string & {});
9
+ export type UserType = "human" | "service" | (string & {});
10
+ export type AuthSource = "cookie" | "jwt" | (string & {});
11
+ export interface SessionUser {
12
+ id: string;
13
+ email: string;
14
+ name: string;
15
+ image: string | null;
16
+ emailVerified: boolean;
17
+ role: UserRole;
18
+ banned: boolean;
19
+ banReason: string | null;
20
+ banExpires: string | null;
21
+ twoFactorEnabled: boolean;
22
+ status: UserStatus;
23
+ createdAt: string;
24
+ updatedAt: string;
25
+ }
26
+ export interface SessionRow {
27
+ id: string;
28
+ userId: string;
29
+ token: string;
30
+ expiresAt: string;
31
+ ipAddress: string | null;
32
+ userAgent: string | null;
33
+ impersonatedBy: string | null;
34
+ activeOrganizationId: string | null;
35
+ createdAt: string;
36
+ updatedAt: string;
37
+ }
38
+ export interface AuthSuccess {
39
+ user: SessionUser;
40
+ session?: SessionRow;
41
+ }
42
+ export interface MeResponse {
43
+ user: {
44
+ id: string;
45
+ email: string;
46
+ name: string | null;
47
+ role: UserRole;
48
+ };
49
+ session: {
50
+ activeOrganizationId: string | null;
51
+ tenantRoles: TenantRole[];
52
+ };
53
+ authSource: AuthSource;
54
+ }
55
+ export interface TokenMintResponse {
56
+ accessToken: string;
57
+ accessTokenExpiresAt: string;
58
+ refreshToken: string;
59
+ refreshTokenExpiresAt: string;
60
+ kid: string;
61
+ token: string;
62
+ expiresAt: string;
63
+ }
64
+ export interface TokenRefreshResponse {
65
+ accessToken: string;
66
+ accessTokenExpiresAt: string;
67
+ refreshToken: string;
68
+ refreshTokenExpiresAt: string;
69
+ kid: string;
70
+ }
71
+ export interface RefreshToken {
72
+ id: string;
73
+ userId: string;
74
+ expiresAt: string;
75
+ ipAddress: string | null;
76
+ userAgent: string | null;
77
+ createdAt: string;
78
+ revokedAt: string | null;
79
+ current?: boolean;
80
+ }
81
+ export interface AdminUserRow {
82
+ id: string;
83
+ name: string;
84
+ email: string;
85
+ role: UserRole;
86
+ status: UserStatus;
87
+ type: UserType;
88
+ deletedAt: string | null;
89
+ createdAt: string;
90
+ updatedAt: string;
91
+ }
92
+ export interface AdminUserListResponse {
93
+ total: number;
94
+ rows: AdminUserRow[];
95
+ }
96
+ export interface TenantRow {
97
+ id: string;
98
+ name: string;
99
+ slug: string;
100
+ createdAt: string;
101
+ memberCount: number;
102
+ }
103
+ export interface Member {
104
+ id: string;
105
+ organizationId: string;
106
+ userId: string;
107
+ role: TenantRole;
108
+ userName: string;
109
+ userEmail: string;
110
+ createdAt: string;
111
+ }
112
+ export interface FullOrganization {
113
+ id: string;
114
+ name: string;
115
+ slug: string;
116
+ members: Member[];
117
+ }
118
+ export interface Invitation {
119
+ id: string;
120
+ email: string;
121
+ role: TenantRole;
122
+ status: "pending" | "accepted" | "rejected" | "expired";
123
+ organizationId: string;
124
+ }
125
+ export interface MemberDetail {
126
+ id: string;
127
+ name: string;
128
+ email: string;
129
+ emailVerified: boolean;
130
+ role: TenantRole;
131
+ status: UserStatus;
132
+ createdAt: string;
133
+ memberSince: string;
134
+ }
135
+ export interface RoleRow {
136
+ id: string;
137
+ name: string;
138
+ description: string | null;
139
+ createdAt: string;
140
+ updatedAt: string;
141
+ }
142
+ export interface MyTenant {
143
+ id: string;
144
+ name: string;
145
+ slug: string;
146
+ role: TenantRole;
147
+ createdAt: string;
148
+ }
149
+ export interface AuthMethod {
150
+ provider: string;
151
+ createdAt: string;
152
+ }
153
+ export interface AdminUserDetail {
154
+ id: string;
155
+ name: string;
156
+ email: string;
157
+ emailVerified: boolean;
158
+ role: UserRole;
159
+ status: UserStatus;
160
+ type: UserType;
161
+ banned: boolean;
162
+ twoFactorEnabled: boolean;
163
+ authMethods: AuthMethod[];
164
+ deletedAt: string | null;
165
+ createdAt: string;
166
+ updatedAt: string;
167
+ }
168
+ export interface UserRoleRow {
169
+ id: string;
170
+ name: string;
171
+ description: string | null;
172
+ assigned: boolean;
173
+ }
174
+ export interface ApiErrorBody {
175
+ code?: string;
176
+ error?: string;
177
+ message?: string;
178
+ }
179
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Wire types matching the `user-management-rs` axum server.
3
+ * Field names are camelCase because the Rust wire.rs renames them
4
+ * with serde — keep this file byte-for-byte aligned with the server.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
package/package.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "@nexys/user-management-client",
3
+ "version": "0.1.0",
4
+ "description": "Pure TypeScript client for the Nexys user-management API (auth, tenants, users, roles, refresh tokens, profile). No React, no DOM.",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js"
13
+ }
14
+ },
15
+ "files": ["dist", "README.md"],
16
+ "scripts": {
17
+ "build": "tsc -p tsconfig.build.json",
18
+ "test": "bun test",
19
+ "typecheck": "tsc --noEmit",
20
+ "prepublishOnly": "npm run build"
21
+ },
22
+ "devDependencies": {
23
+ "@types/bun": "^1.2.2",
24
+ "typescript": "^5.2.2"
25
+ }
26
+ }