huia-auth-core 1.0.0-alpha.16

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.
@@ -0,0 +1,15 @@
1
+ export declare function splitIntoChunks(value: string, limit: number): string[];
2
+ export declare function sealValue(password: string, value: unknown, ttlSeconds?: number): Promise<string>;
3
+ export declare function unsealValue<T>(password: string, sealed: string | undefined, ttlSeconds?: number): Promise<T | null>;
4
+ /**
5
+ * Normalizes the cookie name:
6
+ * If secure=true, preserves `__Host-` or `__Secure-` prefixes.
7
+ * If secure=false (e.g. dev over plain http), strips `__Host-` and `__Secure-` prefixes
8
+ * because browsers strictly reject prefixed cookies over insecure HTTP.
9
+ */
10
+ export declare function resolveCookieName(name: string, secure: boolean): string;
11
+ /**
12
+ * Reassembles a chunked cookie if present, or reads single cookie.
13
+ */
14
+ export declare function assembleChunks(getCookie: (name: string) => string | undefined, name: string, maxChunks?: number): string | null;
15
+ //# sourceMappingURL=cookie.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookie.d.ts","sourceRoot":"","sources":["../src/cookie.ts"],"names":[],"mappings":"AAMA,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAOtE;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAKhG;AAED,wBAAsB,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,SAAS,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAWzH;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAGvE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,EAC/C,IAAI,EAAE,MAAM,EACZ,SAAS,SAAI,GACZ,MAAM,GAAG,IAAI,CAYf"}
package/dist/cookie.js ADDED
@@ -0,0 +1,60 @@
1
+ import uncrypto from 'uncrypto';
2
+ import { seal, unseal, defaults as ironDefaults } from 'iron-webcrypto';
3
+ // iron-webcrypto's internal _Crypto shape; uncrypto satisfies it at runtime in node/browser/edge.
4
+ const ironCrypto = uncrypto;
5
+ export function splitIntoChunks(value, limit) {
6
+ if (limit <= 0)
7
+ return [value];
8
+ const parts = [];
9
+ for (let i = 0; i < value.length; i += limit) {
10
+ parts.push(value.slice(i, i + limit));
11
+ }
12
+ return parts;
13
+ }
14
+ export function sealValue(password, value, ttlSeconds = 604800) {
15
+ return seal(ironCrypto, value, password, {
16
+ ...ironDefaults,
17
+ ttl: ttlSeconds * 1000,
18
+ });
19
+ }
20
+ export async function unsealValue(password, sealed, ttlSeconds = 604800) {
21
+ if (!sealed)
22
+ return null;
23
+ try {
24
+ return (await unseal(ironCrypto, sealed, password, {
25
+ ...ironDefaults,
26
+ ttl: ttlSeconds * 1000,
27
+ }));
28
+ }
29
+ catch {
30
+ return null;
31
+ }
32
+ }
33
+ /**
34
+ * Normalizes the cookie name:
35
+ * If secure=true, preserves `__Host-` or `__Secure-` prefixes.
36
+ * If secure=false (e.g. dev over plain http), strips `__Host-` and `__Secure-` prefixes
37
+ * because browsers strictly reject prefixed cookies over insecure HTTP.
38
+ */
39
+ export function resolveCookieName(name, secure) {
40
+ if (secure)
41
+ return name;
42
+ return name.replace(/^__Host-/, '').replace(/^__Secure-/, '');
43
+ }
44
+ /**
45
+ * Reassembles a chunked cookie if present, or reads single cookie.
46
+ */
47
+ export function assembleChunks(getCookie, name, maxChunks = 4) {
48
+ const direct = getCookie(name);
49
+ if (direct !== undefined && direct !== '')
50
+ return direct;
51
+ const parts = [];
52
+ for (let i = 0; i < maxChunks; i++) {
53
+ const part = getCookie(`${name}.${i}`);
54
+ if (part === undefined || part === '')
55
+ break;
56
+ parts.push(part);
57
+ }
58
+ return parts.length > 0 ? parts.join('') : null;
59
+ }
60
+ //# sourceMappingURL=cookie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookie.js","sourceRoot":"","sources":["../src/cookie.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAEvE,kGAAkG;AAClG,MAAM,UAAU,GAAG,QAAiD,CAAA;AAEpE,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,KAAa;IAC1D,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IAC9B,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAA;IACvC,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,KAAc,EAAE,UAAU,GAAG,MAAM;IAC7E,OAAO,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE;QACvC,GAAG,YAAY;QACf,GAAG,EAAE,UAAU,GAAG,IAAI;KACvB,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAI,QAAgB,EAAE,MAA0B,EAAE,UAAU,GAAG,MAAM;IACpG,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IACxB,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE;YACjD,GAAG,YAAY;YACf,GAAG,EAAE,UAAU,GAAG,IAAI;SACvB,CAAC,CAAM,CAAA;IACV,CAAC;IACD,MAAM,CAAC;QACL,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,MAAe;IAC7D,IAAI,MAAM;QAAE,OAAO,IAAI,CAAA;IACvB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,SAA+C,EAC/C,IAAY,EACZ,SAAS,GAAG,CAAC;IAEb,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IAC9B,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE;QAAE,OAAO,MAAM,CAAA;IAExD,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAA;QACtC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE;YAAE,MAAK;QAC5C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClB,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACjD,CAAC"}
@@ -0,0 +1,106 @@
1
+ import type { BackendTokenResponse, BackendMeResponse, BackendPhoneStartResponse, BackendPhoneVerifyResponse, BackendExternalExchangeResponse, HeadlessAdminUser, HeadlessAdminRole, HeadlessAdminUsersPage, CreateHeadlessAdminUserRequest, UpdateHeadlessAdminUserRequest, PasskeyDto, PasskeyRegistrationRequest } from './types.js';
2
+ export declare class BackendError extends Error {
3
+ status: number;
4
+ problem: unknown;
5
+ constructor(status: number, problem: unknown);
6
+ }
7
+ export interface HuiaHeadlessClientOptions {
8
+ baseUrl: string;
9
+ allowInsecureTls?: boolean;
10
+ }
11
+ export declare class HuiaHeadlessClient {
12
+ readonly baseUrl: string;
13
+ readonly allowInsecureTls: boolean;
14
+ constructor(options: HuiaHeadlessClientOptions);
15
+ private call;
16
+ register(body: {
17
+ email: string;
18
+ password: string;
19
+ firstName?: string;
20
+ lastName?: string;
21
+ phoneNumber?: string;
22
+ country?: string;
23
+ }): Promise<void>;
24
+ login(body: {
25
+ email: string;
26
+ password: string;
27
+ twoFactorCode?: string;
28
+ twoFactorRecoveryCode?: string;
29
+ }): Promise<BackendTokenResponse>;
30
+ refresh(refreshToken: string): Promise<BackendTokenResponse>;
31
+ me(accessToken: string): Promise<BackendMeResponse>;
32
+ confirmEmail(userId: string, code: string, changedEmail?: string): Promise<void>;
33
+ resendConfirmationEmail(email: string): Promise<void>;
34
+ forgotPassword(email: string): Promise<void>;
35
+ resetPassword(body: {
36
+ email: string;
37
+ resetCode: string;
38
+ newPassword: string;
39
+ }): Promise<void>;
40
+ phoneStart(body: {
41
+ phoneNumber: string;
42
+ country?: string;
43
+ captchaResponse?: string;
44
+ }): Promise<BackendPhoneStartResponse>;
45
+ phoneVerify(body: {
46
+ flowId: string;
47
+ code: string;
48
+ }): Promise<BackendPhoneVerifyResponse>;
49
+ phoneCompleteProfile(body: {
50
+ flowId: string;
51
+ firstName: string;
52
+ lastName: string;
53
+ }): Promise<BackendTokenResponse>;
54
+ externalLoginUrl(provider: string, returnUrl: string): string;
55
+ externalExchange(code: string): Promise<BackendExternalExchangeResponse>;
56
+ externalCompleteProfile(body: {
57
+ code: string;
58
+ firstName: string;
59
+ lastName: string;
60
+ phoneNumber?: string;
61
+ country?: string;
62
+ }): Promise<BackendTokenResponse>;
63
+ adminListUsers(accessToken: string, params?: {
64
+ page?: number;
65
+ pageSize?: number;
66
+ size?: number;
67
+ search?: string;
68
+ username?: string;
69
+ firstName?: string;
70
+ lastName?: string;
71
+ phoneNumber?: string;
72
+ email?: string;
73
+ role?: string;
74
+ roles?: string | string[];
75
+ emailConfirmed?: boolean;
76
+ phoneNumberConfirmed?: boolean;
77
+ isLockedOut?: boolean;
78
+ after?: string;
79
+ before?: string;
80
+ }): Promise<HeadlessAdminUsersPage>;
81
+ adminGetUser(accessToken: string, id: string): Promise<HeadlessAdminUser>;
82
+ adminCreateUser(accessToken: string, body: CreateHeadlessAdminUserRequest): Promise<HeadlessAdminUser>;
83
+ adminUpdateUser(accessToken: string, id: string, body: UpdateHeadlessAdminUserRequest): Promise<HeadlessAdminUser>;
84
+ adminDeleteUser(accessToken: string, id: string): Promise<void>;
85
+ adminGetUserRoles(accessToken: string, id: string): Promise<string[]>;
86
+ adminAddUserRole(accessToken: string, id: string, role: string): Promise<void>;
87
+ adminRemoveUserRole(accessToken: string, id: string, role: string): Promise<void>;
88
+ adminLockUser(accessToken: string, id: string): Promise<void>;
89
+ adminUnlockUser(accessToken: string, id: string): Promise<void>;
90
+ adminVerifyEmail(accessToken: string, id: string): Promise<void>;
91
+ adminListRoles(accessToken: string): Promise<{
92
+ data: HeadlessAdminRole[];
93
+ }>;
94
+ adminGetRole(accessToken: string, id: string): Promise<HeadlessAdminRole>;
95
+ adminCreateRole(accessToken: string, name: string): Promise<HeadlessAdminRole>;
96
+ adminUpdateRole(accessToken: string, id: string, name: string): Promise<HeadlessAdminRole>;
97
+ adminDeleteRole(accessToken: string, id: string): Promise<void>;
98
+ passkeyAssertionOptions(): Promise<unknown>;
99
+ passkeyAssertion(credential: unknown): Promise<BackendTokenResponse>;
100
+ passkeyCreationOptions(accessToken: string): Promise<unknown>;
101
+ passkeyList(accessToken: string): Promise<PasskeyDto[]>;
102
+ passkeyRegister(accessToken: string, body: PasskeyRegistrationRequest): Promise<PasskeyDto>;
103
+ passkeyRename(accessToken: string, id: string, name: string): Promise<void>;
104
+ passkeyRemove(accessToken: string, id: string): Promise<void>;
105
+ }
106
+ //# sourceMappingURL=headless-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headless-client.d.ts","sourceRoot":"","sources":["../src/headless-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,313 @@
1
+ export class BackendError extends Error {
2
+ status;
3
+ problem;
4
+ constructor(status, problem) {
5
+ super(`huia_headless_error: ${status}`);
6
+ this.status = status;
7
+ this.problem = problem;
8
+ this.name = 'BackendError';
9
+ }
10
+ }
11
+ export class HuiaHeadlessClient {
12
+ baseUrl;
13
+ allowInsecureTls;
14
+ constructor(options) {
15
+ this.baseUrl = options.baseUrl.replace(/\/+$/, '');
16
+ this.allowInsecureTls = options.allowInsecureTls ?? false;
17
+ if (this.allowInsecureTls && typeof process !== 'undefined' && process.env.NODE_ENV !== 'production') {
18
+ process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
19
+ }
20
+ }
21
+ async call(path, init) {
22
+ const res = await fetch(`${this.baseUrl}${path}`, {
23
+ ...init,
24
+ headers: {
25
+ 'content-type': 'application/json',
26
+ ...init.headers,
27
+ },
28
+ });
29
+ const text = await res.text();
30
+ if (!res.ok) {
31
+ let problem = null;
32
+ if (text) {
33
+ try {
34
+ problem = JSON.parse(text);
35
+ }
36
+ catch {
37
+ problem = text;
38
+ }
39
+ }
40
+ throw new BackendError(res.status, problem);
41
+ }
42
+ if (!text) {
43
+ return undefined;
44
+ }
45
+ return JSON.parse(text);
46
+ }
47
+ register(body) {
48
+ return this.call('/identity/register', {
49
+ method: 'POST',
50
+ body: JSON.stringify(body),
51
+ });
52
+ }
53
+ login(body) {
54
+ return this.call('/identity/login', {
55
+ method: 'POST',
56
+ body: JSON.stringify(body),
57
+ });
58
+ }
59
+ refresh(refreshToken) {
60
+ return this.call('/identity/refresh', {
61
+ method: 'POST',
62
+ body: JSON.stringify({ refreshToken }),
63
+ });
64
+ }
65
+ me(accessToken) {
66
+ return this.call('/identity/me', {
67
+ method: 'GET',
68
+ headers: { authorization: `Bearer ${accessToken}` },
69
+ });
70
+ }
71
+ confirmEmail(userId, code, changedEmail) {
72
+ const query = new URLSearchParams({ userId, code, ...(changedEmail ? { changedEmail } : {}) });
73
+ return this.call(`/identity/confirmEmail?${query}`, { method: 'GET' });
74
+ }
75
+ resendConfirmationEmail(email) {
76
+ return this.call('/identity/resendConfirmationEmail', {
77
+ method: 'POST',
78
+ body: JSON.stringify({ email }),
79
+ });
80
+ }
81
+ forgotPassword(email) {
82
+ return this.call('/identity/forgotPassword', {
83
+ method: 'POST',
84
+ body: JSON.stringify({ email }),
85
+ });
86
+ }
87
+ resetPassword(body) {
88
+ return this.call('/identity/resetPassword', {
89
+ method: 'POST',
90
+ body: JSON.stringify(body),
91
+ });
92
+ }
93
+ phoneStart(body) {
94
+ return this.call('/identity/phone/start', {
95
+ method: 'POST',
96
+ body: JSON.stringify(body),
97
+ });
98
+ }
99
+ phoneVerify(body) {
100
+ return this.call('/identity/phone/verify', {
101
+ method: 'POST',
102
+ body: JSON.stringify(body),
103
+ });
104
+ }
105
+ phoneCompleteProfile(body) {
106
+ return this.call('/identity/phone/complete-profile', {
107
+ method: 'POST',
108
+ body: JSON.stringify(body),
109
+ });
110
+ }
111
+ externalLoginUrl(provider, returnUrl) {
112
+ const q = new URLSearchParams({ returnUrl });
113
+ return `${this.baseUrl}/identity/account/external/${encodeURIComponent(provider)}?${q}`;
114
+ }
115
+ externalExchange(code) {
116
+ return this.call('/identity/account/external/exchange', {
117
+ method: 'POST',
118
+ body: JSON.stringify({ code }),
119
+ });
120
+ }
121
+ externalCompleteProfile(body) {
122
+ return this.call('/identity/account/external/complete-profile', {
123
+ method: 'POST',
124
+ body: JSON.stringify(body),
125
+ });
126
+ }
127
+ adminListUsers(accessToken, params) {
128
+ const q = new URLSearchParams();
129
+ if (params?.page)
130
+ q.set('page', String(params.page));
131
+ if (params?.pageSize)
132
+ q.set('pageSize', String(params.pageSize));
133
+ if (params?.size)
134
+ q.set('size', String(params.size));
135
+ if (params?.search)
136
+ q.set('search', params.search);
137
+ if (params?.username)
138
+ q.set('username', params.username);
139
+ if (params?.firstName)
140
+ q.set('firstName', params.firstName);
141
+ if (params?.lastName)
142
+ q.set('lastName', params.lastName);
143
+ if (params?.phoneNumber)
144
+ q.set('phoneNumber', params.phoneNumber);
145
+ if (params?.email)
146
+ q.set('email', params.email);
147
+ if (params?.role)
148
+ q.set('role', params.role);
149
+ if (params?.roles) {
150
+ if (Array.isArray(params.roles)) {
151
+ q.set('roles', params.roles.join(','));
152
+ }
153
+ else {
154
+ q.set('roles', params.roles);
155
+ }
156
+ }
157
+ if (params?.emailConfirmed !== undefined)
158
+ q.set('emailConfirmed', String(params.emailConfirmed));
159
+ if (params?.phoneNumberConfirmed !== undefined)
160
+ q.set('phoneNumberConfirmed', String(params.phoneNumberConfirmed));
161
+ if (params?.isLockedOut !== undefined)
162
+ q.set('isLockedOut', String(params.isLockedOut));
163
+ if (params?.after)
164
+ q.set('after', params.after);
165
+ if (params?.before)
166
+ q.set('before', params.before);
167
+ const qs = q.toString() ? `?${q}` : '';
168
+ return this.call(`/admin/users${qs}`, {
169
+ method: 'GET',
170
+ headers: { authorization: `Bearer ${accessToken}` },
171
+ });
172
+ }
173
+ adminGetUser(accessToken, id) {
174
+ return this.call(`/admin/users/${encodeURIComponent(id)}`, {
175
+ method: 'GET',
176
+ headers: { authorization: `Bearer ${accessToken}` },
177
+ });
178
+ }
179
+ adminCreateUser(accessToken, body) {
180
+ return this.call('/admin/users', {
181
+ method: 'POST',
182
+ headers: { authorization: `Bearer ${accessToken}` },
183
+ body: JSON.stringify(body),
184
+ });
185
+ }
186
+ adminUpdateUser(accessToken, id, body) {
187
+ return this.call(`/admin/users/${encodeURIComponent(id)}`, {
188
+ method: 'PUT',
189
+ headers: { authorization: `Bearer ${accessToken}` },
190
+ body: JSON.stringify(body),
191
+ });
192
+ }
193
+ adminDeleteUser(accessToken, id) {
194
+ return this.call(`/admin/users/${encodeURIComponent(id)}`, {
195
+ method: 'DELETE',
196
+ headers: { authorization: `Bearer ${accessToken}` },
197
+ });
198
+ }
199
+ adminGetUserRoles(accessToken, id) {
200
+ return this.call(`/admin/users/${encodeURIComponent(id)}/roles`, {
201
+ method: 'GET',
202
+ headers: { authorization: `Bearer ${accessToken}` },
203
+ });
204
+ }
205
+ adminAddUserRole(accessToken, id, role) {
206
+ return this.call(`/admin/users/${encodeURIComponent(id)}/roles`, {
207
+ method: 'POST',
208
+ headers: { authorization: `Bearer ${accessToken}` },
209
+ body: JSON.stringify({ role }),
210
+ });
211
+ }
212
+ adminRemoveUserRole(accessToken, id, role) {
213
+ return this.call(`/admin/users/${encodeURIComponent(id)}/roles/${encodeURIComponent(role)}`, {
214
+ method: 'DELETE',
215
+ headers: { authorization: `Bearer ${accessToken}` },
216
+ });
217
+ }
218
+ adminLockUser(accessToken, id) {
219
+ return this.call(`/admin/users/${encodeURIComponent(id)}/lock`, {
220
+ method: 'POST',
221
+ headers: { authorization: `Bearer ${accessToken}` },
222
+ });
223
+ }
224
+ adminUnlockUser(accessToken, id) {
225
+ return this.call(`/admin/users/${encodeURIComponent(id)}/unlock`, {
226
+ method: 'POST',
227
+ headers: { authorization: `Bearer ${accessToken}` },
228
+ });
229
+ }
230
+ adminVerifyEmail(accessToken, id) {
231
+ return this.call(`/admin/users/${encodeURIComponent(id)}/verify-email`, {
232
+ method: 'POST',
233
+ headers: { authorization: `Bearer ${accessToken}` },
234
+ });
235
+ }
236
+ adminListRoles(accessToken) {
237
+ return this.call('/admin/roles', {
238
+ method: 'GET',
239
+ headers: { authorization: `Bearer ${accessToken}` },
240
+ });
241
+ }
242
+ adminGetRole(accessToken, id) {
243
+ return this.call(`/admin/roles/${encodeURIComponent(id)}`, {
244
+ method: 'GET',
245
+ headers: { authorization: `Bearer ${accessToken}` },
246
+ });
247
+ }
248
+ adminCreateRole(accessToken, name) {
249
+ return this.call('/admin/roles', {
250
+ method: 'POST',
251
+ headers: { authorization: `Bearer ${accessToken}` },
252
+ body: JSON.stringify({ name }),
253
+ });
254
+ }
255
+ adminUpdateRole(accessToken, id, name) {
256
+ return this.call(`/admin/roles/${encodeURIComponent(id)}`, {
257
+ method: 'PUT',
258
+ headers: { authorization: `Bearer ${accessToken}` },
259
+ body: JSON.stringify({ name }),
260
+ });
261
+ }
262
+ adminDeleteRole(accessToken, id) {
263
+ return this.call(`/admin/roles/${encodeURIComponent(id)}`, {
264
+ method: 'DELETE',
265
+ headers: { authorization: `Bearer ${accessToken}` },
266
+ });
267
+ }
268
+ // Passkey methods
269
+ passkeyAssertionOptions() {
270
+ return this.call('/identity/passkey/assertion-options', {
271
+ method: 'POST',
272
+ });
273
+ }
274
+ passkeyAssertion(credential) {
275
+ return this.call('/identity/passkey/assertion', {
276
+ method: 'POST',
277
+ body: JSON.stringify({ credential }),
278
+ });
279
+ }
280
+ passkeyCreationOptions(accessToken) {
281
+ return this.call('/identity/manage/passkeys/creation-options', {
282
+ method: 'POST',
283
+ headers: { authorization: `Bearer ${accessToken}` },
284
+ });
285
+ }
286
+ passkeyList(accessToken) {
287
+ return this.call('/identity/manage/passkeys', {
288
+ method: 'GET',
289
+ headers: { authorization: `Bearer ${accessToken}` },
290
+ });
291
+ }
292
+ passkeyRegister(accessToken, body) {
293
+ return this.call('/identity/manage/passkeys', {
294
+ method: 'POST',
295
+ headers: { authorization: `Bearer ${accessToken}` },
296
+ body: JSON.stringify(body),
297
+ });
298
+ }
299
+ passkeyRename(accessToken, id, name) {
300
+ return this.call(`/identity/manage/passkeys/${encodeURIComponent(id)}`, {
301
+ method: 'PATCH',
302
+ headers: { authorization: `Bearer ${accessToken}` },
303
+ body: JSON.stringify({ name }),
304
+ });
305
+ }
306
+ passkeyRemove(accessToken, id) {
307
+ return this.call(`/identity/manage/passkeys/${encodeURIComponent(id)}`, {
308
+ method: 'DELETE',
309
+ headers: { authorization: `Bearer ${accessToken}` },
310
+ });
311
+ }
312
+ }
313
+ //# sourceMappingURL=headless-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headless-client.js","sourceRoot":"","sources":["../src/headless-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export type { UserClaims, UserSession, TokenRecord, AuthStateRecord, LockRecord, CookiePayload, SessionOptions, CookieOptions, HuiaStorageAdapter, BackendTokenResponse, BackendMeResponse, BackendPhoneStartResponse, BackendPhoneVerifyResponse, BackendExternalExchangeResponse, HeadlessAdminUser, HeadlessAdminRole, HeadlessAdminUsersPage, CreateHeadlessAdminUserRequest, UpdateHeadlessAdminUserRequest, PasskeyDto, PasskeyAssertionRequest, PasskeyRegistrationRequest, RenamePasskeyRequest, } from './types.js';
2
+ export * from './cookie.js';
3
+ export * from './tokens.js';
4
+ export * from './storage.js';
5
+ export * from './refresh.js';
6
+ export * from './headless-client.js';
7
+ export * from './oidc-client.js';
8
+ export { randomUUID } from 'uncrypto';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,UAAU,EACV,WAAW,EACX,WAAW,EACX,eAAe,EACf,UAAU,EACV,aAAa,EACb,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,EACzB,0BAA0B,EAC1B,+BAA+B,EAC/B,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,8BAA8B,EAC9B,8BAA8B,EAC9B,UAAU,EACV,uBAAuB,EACvB,0BAA0B,EAC1B,oBAAoB,GACpB,MAAM,YAAY,CAAA;AACnB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ export * from './cookie.js';
2
+ export * from './tokens.js';
3
+ export * from './storage.js';
4
+ export * from './refresh.js';
5
+ export * from './headless-client.js';
6
+ export * from './oidc-client.js';
7
+ export { randomUUID } from 'uncrypto';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAyBA,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA"}
@@ -0,0 +1,46 @@
1
+ import * as oidc from 'openid-client';
2
+ import type { AuthStateRecord } from './types.js';
3
+ export interface HuiaOidcClientOptions {
4
+ issuer: string;
5
+ clientId: string;
6
+ clientSecret?: string;
7
+ scopes?: string[];
8
+ par?: {
9
+ enabled?: boolean;
10
+ required?: boolean;
11
+ };
12
+ allowInsecureTls?: boolean;
13
+ }
14
+ export interface AuthorizationResult {
15
+ redirectTo: string;
16
+ stateRecord: AuthStateRecord;
17
+ }
18
+ export interface CompletedAuthResult {
19
+ tokens: oidc.TokenEndpointResponse & oidc.TokenEndpointResponseHelpers;
20
+ claims: Record<string, unknown>;
21
+ returnTo?: string;
22
+ }
23
+ export declare class HuiaOidcHelper {
24
+ private configCache;
25
+ private inflightDiscovery;
26
+ getConfiguration(options: HuiaOidcClientOptions): Promise<oidc.Configuration>;
27
+ private discover;
28
+ beginAuthorization(config: oidc.Configuration, options: {
29
+ clientId: string;
30
+ redirectUri: string;
31
+ scopes?: string[];
32
+ returnTo?: string;
33
+ extraParams?: Record<string, string>;
34
+ parEnabled?: boolean;
35
+ parRequired?: boolean;
36
+ }): Promise<AuthorizationResult>;
37
+ completeAuthorization(config: oidc.Configuration, currentUrl: URL, stateRecord: AuthStateRecord, expectedIssuer: string): Promise<CompletedAuthResult>;
38
+ refreshTokens(config: oidc.Configuration, refreshToken: string, scope?: string): Promise<oidc.TokenEndpointResponse & oidc.TokenEndpointResponseHelpers>;
39
+ buildLogoutUrl(config: oidc.Configuration, issuer: string, params: {
40
+ clientId: string;
41
+ postLogoutRedirectUri: string;
42
+ idTokenHint?: string;
43
+ }): string;
44
+ }
45
+ export declare const defaultOidcHelper: HuiaOidcHelper;
46
+ //# sourceMappingURL=oidc-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oidc-client.d.ts","sourceRoot":"","sources":["../src/oidc-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,eAAe,CAAA;AAErC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,GAAG,CAAC,EAAE;QACJ,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;KACnB,CAAA;IACD,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,eAAe,CAAA;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,4BAA4B,CAAA;IACtE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAwC;IAC3D,OAAO,CAAC,iBAAiB,CAAiD;IAEpE,gBAAgB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;YAoBrE,QAAQ;IAoBhB,kBAAkB,CACtB,MAAM,EAAE,IAAI,CAAC,aAAa,EAC1B,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAA;QAChB,WAAW,EAAE,MAAM,CAAA;QACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACpC,UAAU,CAAC,EAAE,OAAO,CAAA;QACpB,WAAW,CAAC,EAAE,OAAO,CAAA;KACtB,GACA,OAAO,CAAC,mBAAmB,CAAC;IAqDzB,qBAAqB,CACzB,MAAM,EAAE,IAAI,CAAC,aAAa,EAC1B,UAAU,EAAE,GAAG,EACf,WAAW,EAAE,eAAe,EAC5B,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,mBAAmB,CAAC;IAmBzB,aAAa,CACjB,MAAM,EAAE,IAAI,CAAC,aAAa,EAC1B,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,4BAA4B,CAAC;IAI1E,cAAc,CACZ,MAAM,EAAE,IAAI,CAAC,aAAa,EAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,qBAAqB,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAChF,MAAM;CAkBV;AAED,eAAO,MAAM,iBAAiB,gBAAuB,CAAA"}