@descope/node-sdk 1.1.1 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +152 -7
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/index.d.ts +134 -74
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/package.json +11 -5
package/dist/index.d.ts
CHANGED
|
@@ -71,6 +71,7 @@ declare type Role = {
|
|
|
71
71
|
name: string;
|
|
72
72
|
description?: string;
|
|
73
73
|
permissionNames: string[];
|
|
74
|
+
createdTime: number;
|
|
74
75
|
};
|
|
75
76
|
/** Represents a group in a project. It has an id and display name and a list of group members. */
|
|
76
77
|
declare type Group = {
|
|
@@ -110,6 +111,49 @@ declare type Theme = {
|
|
|
110
111
|
declare type ThemeResponse = {
|
|
111
112
|
theme: Theme;
|
|
112
113
|
};
|
|
114
|
+
declare type GenerateOTPForTestResponse = {
|
|
115
|
+
loginId: string;
|
|
116
|
+
code: string;
|
|
117
|
+
};
|
|
118
|
+
declare type GenerateMagicLinkForTestResponse = {
|
|
119
|
+
loginId: string;
|
|
120
|
+
link: string;
|
|
121
|
+
};
|
|
122
|
+
declare type GenerateEnchantedLinkForTestResponse = {
|
|
123
|
+
loginId: string;
|
|
124
|
+
link: string;
|
|
125
|
+
pendingRef: string;
|
|
126
|
+
};
|
|
127
|
+
declare type AttributesTypes = string | boolean | number;
|
|
128
|
+
declare type UserMapping = {
|
|
129
|
+
name: string;
|
|
130
|
+
email: string;
|
|
131
|
+
username: string;
|
|
132
|
+
phoneNumber: string;
|
|
133
|
+
group: string;
|
|
134
|
+
};
|
|
135
|
+
declare type RoleItem = {
|
|
136
|
+
id: string;
|
|
137
|
+
name: string;
|
|
138
|
+
};
|
|
139
|
+
declare type GroupsMapping = {
|
|
140
|
+
role: RoleItem;
|
|
141
|
+
groups: string[];
|
|
142
|
+
};
|
|
143
|
+
declare type SSOSettingsResponse = {
|
|
144
|
+
tenantId: string;
|
|
145
|
+
idpEntityId: string;
|
|
146
|
+
idpSSOUrl: string;
|
|
147
|
+
idpCertificate: string;
|
|
148
|
+
idpMetadataUrl: string;
|
|
149
|
+
spEntityId: string;
|
|
150
|
+
spACSUrl: string;
|
|
151
|
+
spCertificate: string;
|
|
152
|
+
userMapping: UserMapping;
|
|
153
|
+
groupsMapping: GroupsMapping[];
|
|
154
|
+
redirectUrl: string;
|
|
155
|
+
domain: string;
|
|
156
|
+
};
|
|
113
157
|
|
|
114
158
|
/** Parsed JWT token */
|
|
115
159
|
interface Token {
|
|
@@ -133,24 +177,33 @@ declare const nodeSdk: {
|
|
|
133
177
|
({ managementKey, ...config }: NodeSdkArgs): {
|
|
134
178
|
management: {
|
|
135
179
|
user: {
|
|
136
|
-
create: (loginId: string, email?: string, phone?: string, displayName?: string, roles?: string[], userTenants?: AssociatedTenant[]) => Promise<SdkResponse<_descope_core_js_sdk.UserResponse>>;
|
|
137
|
-
|
|
138
|
-
|
|
180
|
+
create: (loginId: string, email?: string, phone?: string, displayName?: string, roles?: string[], userTenants?: AssociatedTenant[], customAttributes?: Record<string, AttributesTypes>, picture?: string) => Promise<SdkResponse<_descope_core_js_sdk.UserResponse>>;
|
|
181
|
+
createTestUser: (loginId: string, email?: string, phone?: string, displayName?: string, roles?: string[], userTenants?: AssociatedTenant[], customAttributes?: Record<string, AttributesTypes>, picture?: string) => Promise<SdkResponse<_descope_core_js_sdk.UserResponse>>;
|
|
182
|
+
invite: (loginId: string, email?: string, phone?: string, displayName?: string, roles?: string[], userTenants?: AssociatedTenant[], customAttributes?: Record<string, AttributesTypes>, picture?: string) => Promise<SdkResponse<_descope_core_js_sdk.UserResponse>>;
|
|
183
|
+
update: (loginId: string, email?: string, phone?: string, displayName?: string, roles?: string[], userTenants?: AssociatedTenant[], customAttributes?: Record<string, AttributesTypes>, picture?: string) => Promise<SdkResponse<_descope_core_js_sdk.UserResponse>>;
|
|
139
184
|
delete: (loginId: string) => Promise<SdkResponse<never>>;
|
|
185
|
+
deleteAllTestUsers: () => Promise<SdkResponse<never>>;
|
|
140
186
|
load: (loginId: string) => Promise<SdkResponse<_descope_core_js_sdk.UserResponse>>;
|
|
141
187
|
loadByUserId: (userId: string) => Promise<SdkResponse<_descope_core_js_sdk.UserResponse>>;
|
|
142
|
-
searchAll: (tenantIds?: string[], roles?: string[], limit?: number, page?: number) => Promise<SdkResponse<_descope_core_js_sdk.UserResponse[]>>;
|
|
188
|
+
searchAll: (tenantIds?: string[], roles?: string[], limit?: number, page?: number, testUsersOnly?: boolean, withTestUser?: boolean, customAttributes?: Record<string, AttributesTypes>) => Promise<SdkResponse<_descope_core_js_sdk.UserResponse[]>>;
|
|
143
189
|
activate: (loginId: string) => Promise<SdkResponse<_descope_core_js_sdk.UserResponse>>;
|
|
144
190
|
deactivate: (loginId: string) => Promise<SdkResponse<_descope_core_js_sdk.UserResponse>>;
|
|
145
191
|
updateEmail: (loginId: string, email: string, isVerified: boolean) => Promise<SdkResponse<_descope_core_js_sdk.UserResponse>>;
|
|
146
192
|
updatePhone: (loginId: string, phone: string, isVerified: boolean) => Promise<SdkResponse<_descope_core_js_sdk.UserResponse>>;
|
|
147
193
|
updateDisplayName: (loginId: string, displayName: string) => Promise<SdkResponse<_descope_core_js_sdk.UserResponse>>;
|
|
194
|
+
updatePicture: (loginId: string, picture: string) => Promise<SdkResponse<_descope_core_js_sdk.UserResponse>>;
|
|
195
|
+
updateCustomAttribute: (loginId: string, attributeKey: string, attributeValue: AttributesTypes) => Promise<SdkResponse<_descope_core_js_sdk.UserResponse>>;
|
|
148
196
|
addRoles: (loginId: string, roles: string[]) => Promise<SdkResponse<_descope_core_js_sdk.UserResponse>>;
|
|
149
197
|
removeRoles: (loginId: string, roles: string[]) => Promise<SdkResponse<_descope_core_js_sdk.UserResponse>>;
|
|
150
198
|
addTenant: (loginId: string, tenantId: string) => Promise<SdkResponse<_descope_core_js_sdk.UserResponse>>;
|
|
151
199
|
removeTenant: (loginId: string, tenantId: string) => Promise<SdkResponse<_descope_core_js_sdk.UserResponse>>;
|
|
152
200
|
addTenantRoles: (loginId: string, tenantId: string, roles: string[]) => Promise<SdkResponse<_descope_core_js_sdk.UserResponse>>;
|
|
153
201
|
removeTenantRoles: (loginId: string, tenantId: string, roles: string[]) => Promise<SdkResponse<_descope_core_js_sdk.UserResponse>>;
|
|
202
|
+
generateOTPForTestUser: (deliveryMethod: "email" | "sms" | "whatsapp", loginId: string) => Promise<SdkResponse<GenerateOTPForTestResponse>>;
|
|
203
|
+
generateMagicLinkForTestUser: (deliveryMethod: "email" | "sms" | "whatsapp", loginId: string, uri: string) => Promise<SdkResponse<GenerateMagicLinkForTestResponse>>;
|
|
204
|
+
generateEnchantedLinkForTestUser: (loginId: string, uri: string) => Promise<SdkResponse<GenerateEnchantedLinkForTestResponse>>;
|
|
205
|
+
setPassword: (loginId: string, password: string) => Promise<SdkResponse<never>>;
|
|
206
|
+
expirePassword: (loginId: string) => Promise<SdkResponse<never>>;
|
|
154
207
|
};
|
|
155
208
|
accessKey: {
|
|
156
209
|
create: (name: string, expireTime: number, roles?: string[], keyTenants?: AssociatedTenant[]) => Promise<SdkResponse<CreatedAccessKeyResponse>>;
|
|
@@ -169,6 +222,8 @@ declare const nodeSdk: {
|
|
|
169
222
|
loadAll: () => Promise<SdkResponse<Tenant[]>>;
|
|
170
223
|
};
|
|
171
224
|
sso: {
|
|
225
|
+
getSettings: (tenantId: string) => Promise<SdkResponse<SSOSettingsResponse>>;
|
|
226
|
+
deleteSettings: (tenantId: string) => Promise<SdkResponse<never>>;
|
|
172
227
|
configureSettings: (tenantId: string, idpURL: string, idpCert: string, entityId: string, redirectURL?: string, domain?: string) => Promise<SdkResponse<never>>;
|
|
173
228
|
configureMetadata: (tenantId: string, idpMetadataURL: string) => Promise<SdkResponse<never>>;
|
|
174
229
|
configureMapping: (tenantId: string, roleMapping?: RoleMapping, attributeMapping?: AttributeMapping) => Promise<SdkResponse<never>>;
|
|
@@ -217,76 +272,82 @@ declare const nodeSdk: {
|
|
|
217
272
|
};
|
|
218
273
|
otp: {
|
|
219
274
|
verify: {
|
|
220
|
-
|
|
275
|
+
sms: (loginId: string, code: string) => Promise<SdkResponse<_descope_core_js_sdk.JWTResponse & {
|
|
221
276
|
refreshJwt?: string;
|
|
222
277
|
cookies?: string[];
|
|
223
278
|
}>>;
|
|
224
|
-
|
|
279
|
+
whatsapp: (loginId: string, code: string) => Promise<SdkResponse<_descope_core_js_sdk.JWTResponse & {
|
|
225
280
|
refreshJwt?: string;
|
|
226
281
|
cookies?: string[];
|
|
227
282
|
}>>;
|
|
228
|
-
|
|
283
|
+
email: (loginId: string, code: string) => Promise<SdkResponse<_descope_core_js_sdk.JWTResponse & {
|
|
229
284
|
refreshJwt?: string;
|
|
230
285
|
cookies?: string[];
|
|
231
286
|
}>>;
|
|
232
287
|
};
|
|
233
288
|
signIn: {
|
|
234
|
-
email: (loginId: string) => Promise<SdkResponse<{
|
|
235
|
-
maskedEmail: string;
|
|
236
|
-
}>>;
|
|
237
289
|
sms: (loginId: string) => Promise<SdkResponse<{
|
|
238
290
|
maskedPhone: string;
|
|
239
291
|
}>>;
|
|
240
292
|
whatsapp: (loginId: string) => Promise<SdkResponse<{
|
|
241
293
|
maskedPhone: string;
|
|
242
294
|
}>>;
|
|
295
|
+
email: (loginId: string) => Promise<SdkResponse<{
|
|
296
|
+
maskedEmail: string;
|
|
297
|
+
}>>;
|
|
243
298
|
};
|
|
244
299
|
signUp: {
|
|
245
|
-
|
|
300
|
+
sms: (loginId: string, user?: {
|
|
246
301
|
email?: string;
|
|
247
302
|
name?: string;
|
|
248
303
|
phone?: string;
|
|
249
304
|
}) => Promise<SdkResponse<{
|
|
250
|
-
|
|
305
|
+
maskedPhone: string;
|
|
251
306
|
}>>;
|
|
252
|
-
|
|
307
|
+
whatsapp: (loginId: string, user?: {
|
|
253
308
|
email?: string;
|
|
254
309
|
name?: string;
|
|
255
310
|
phone?: string;
|
|
256
311
|
}) => Promise<SdkResponse<{
|
|
257
312
|
maskedPhone: string;
|
|
258
313
|
}>>;
|
|
259
|
-
|
|
314
|
+
email: (loginId: string, user?: {
|
|
260
315
|
email?: string;
|
|
261
316
|
name?: string;
|
|
262
317
|
phone?: string;
|
|
263
318
|
}) => Promise<SdkResponse<{
|
|
264
|
-
|
|
319
|
+
maskedEmail: string;
|
|
265
320
|
}>>;
|
|
266
321
|
};
|
|
267
322
|
signUpOrIn: {
|
|
268
|
-
email: (loginId: string) => Promise<SdkResponse<{
|
|
269
|
-
maskedEmail: string;
|
|
270
|
-
}>>;
|
|
271
323
|
sms: (loginId: string) => Promise<SdkResponse<{
|
|
272
324
|
maskedPhone: string;
|
|
273
325
|
}>>;
|
|
274
326
|
whatsapp: (loginId: string) => Promise<SdkResponse<{
|
|
275
327
|
maskedPhone: string;
|
|
276
328
|
}>>;
|
|
329
|
+
email: (loginId: string) => Promise<SdkResponse<{
|
|
330
|
+
maskedEmail: string;
|
|
331
|
+
}>>;
|
|
277
332
|
};
|
|
278
333
|
update: {
|
|
279
|
-
email: (loginId: string, email: string, token?: string
|
|
334
|
+
email: <T extends boolean>(loginId: string, email: string, token?: string, updateOptions?: {
|
|
335
|
+
addToLoginIDs?: T;
|
|
336
|
+
onMergeUseExisting?: T extends true ? boolean : never;
|
|
337
|
+
}) => Promise<SdkResponse<{
|
|
280
338
|
maskedEmail: string;
|
|
281
339
|
}>>;
|
|
282
340
|
phone: {
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
341
|
+
sms: <T_1 extends boolean>(loginId: string, phone: string, token?: string, updateOptions?: {
|
|
342
|
+
addToLoginIDs?: T_1;
|
|
343
|
+
onMergeUseExisting?: T_1 extends true ? boolean : never;
|
|
344
|
+
}) => Promise<SdkResponse<{
|
|
287
345
|
maskedPhone: string;
|
|
288
346
|
}>>;
|
|
289
|
-
whatsapp: (loginId: string, phone: string
|
|
347
|
+
whatsapp: <T_1 extends boolean>(loginId: string, phone: string, token?: string, updateOptions?: {
|
|
348
|
+
addToLoginIDs?: T_1;
|
|
349
|
+
onMergeUseExisting?: T_1 extends true ? boolean : never;
|
|
350
|
+
}) => Promise<SdkResponse<{
|
|
290
351
|
maskedPhone: string;
|
|
291
352
|
}>>;
|
|
292
353
|
};
|
|
@@ -298,60 +359,68 @@ declare const nodeSdk: {
|
|
|
298
359
|
cookies?: string[];
|
|
299
360
|
}>>;
|
|
300
361
|
signIn: {
|
|
301
|
-
email: (loginId: string, uri: string) => Promise<SdkResponse<{
|
|
302
|
-
maskedEmail: string;
|
|
303
|
-
}>>;
|
|
304
362
|
sms: (loginId: string, uri: string) => Promise<SdkResponse<{
|
|
305
363
|
maskedPhone: string;
|
|
306
364
|
}>>;
|
|
307
365
|
whatsapp: (loginId: string, uri: string) => Promise<SdkResponse<{
|
|
308
366
|
maskedPhone: string;
|
|
309
367
|
}>>;
|
|
368
|
+
email: (loginId: string, uri: string) => Promise<SdkResponse<{
|
|
369
|
+
maskedEmail: string;
|
|
370
|
+
}>>;
|
|
310
371
|
};
|
|
311
372
|
signUp: {
|
|
312
|
-
|
|
373
|
+
sms: (loginId: string, uri: string, user?: {
|
|
313
374
|
email?: string;
|
|
314
375
|
name?: string;
|
|
315
376
|
phone?: string;
|
|
316
377
|
}) => Promise<SdkResponse<{
|
|
317
|
-
|
|
378
|
+
maskedPhone: string;
|
|
318
379
|
}>>;
|
|
319
|
-
|
|
380
|
+
whatsapp: (loginId: string, uri: string, user?: {
|
|
320
381
|
email?: string;
|
|
321
382
|
name?: string;
|
|
322
383
|
phone?: string;
|
|
323
384
|
}) => Promise<SdkResponse<{
|
|
324
385
|
maskedPhone: string;
|
|
325
386
|
}>>;
|
|
326
|
-
|
|
387
|
+
email: (loginId: string, uri: string, user?: {
|
|
327
388
|
email?: string;
|
|
328
389
|
name?: string;
|
|
329
390
|
phone?: string;
|
|
330
391
|
}) => Promise<SdkResponse<{
|
|
331
|
-
|
|
392
|
+
maskedEmail: string;
|
|
332
393
|
}>>;
|
|
333
394
|
};
|
|
334
395
|
signUpOrIn: {
|
|
335
|
-
email: (loginId: string, uri: string) => Promise<SdkResponse<{
|
|
336
|
-
maskedEmail: string;
|
|
337
|
-
}>>;
|
|
338
396
|
sms: (loginId: string, uri: string) => Promise<SdkResponse<{
|
|
339
397
|
maskedPhone: string;
|
|
340
398
|
}>>;
|
|
341
399
|
whatsapp: (loginId: string, uri: string) => Promise<SdkResponse<{
|
|
342
400
|
maskedPhone: string;
|
|
343
401
|
}>>;
|
|
402
|
+
email: (loginId: string, uri: string) => Promise<SdkResponse<{
|
|
403
|
+
maskedEmail: string;
|
|
404
|
+
}>>;
|
|
344
405
|
};
|
|
345
406
|
update: {
|
|
346
|
-
email: (loginId: string, email: string, URI?: string, token?: string
|
|
407
|
+
email: <T_2 extends boolean>(loginId: string, email: string, URI?: string, token?: string, updateOptions?: {
|
|
408
|
+
addToLoginIDs?: T_2;
|
|
409
|
+
onMergeUseExisting?: T_2 extends true ? boolean : never;
|
|
410
|
+
}) => Promise<SdkResponse<{
|
|
411
|
+
maskedEmail: string;
|
|
412
|
+
}>>;
|
|
347
413
|
phone: {
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
414
|
+
sms: <T_3 extends boolean>(loginId: string, phone: string, URI?: string, token?: string, updateOptions?: {
|
|
415
|
+
addToLoginIDs?: T_3;
|
|
416
|
+
onMergeUseExisting?: T_3 extends true ? boolean : never;
|
|
417
|
+
}) => Promise<SdkResponse<{
|
|
352
418
|
maskedPhone: string;
|
|
353
419
|
}>>;
|
|
354
|
-
whatsapp: (loginId: string, phone: string
|
|
420
|
+
whatsapp: <T_3 extends boolean>(loginId: string, phone: string, URI?: string, token?: string, updateOptions?: {
|
|
421
|
+
addToLoginIDs?: T_3;
|
|
422
|
+
onMergeUseExisting?: T_3 extends true ? boolean : never;
|
|
423
|
+
}) => Promise<SdkResponse<{
|
|
355
424
|
maskedPhone: string;
|
|
356
425
|
}>>;
|
|
357
426
|
};
|
|
@@ -377,51 +446,38 @@ declare const nodeSdk: {
|
|
|
377
446
|
timeoutMs: number;
|
|
378
447
|
}) => Promise<SdkResponse<_descope_core_js_sdk.JWTResponse>>;
|
|
379
448
|
update: {
|
|
380
|
-
email: (loginId: string, email: string, URI?: string, token?: string
|
|
449
|
+
email: <T_4 extends boolean>(loginId: string, email: string, URI?: string, token?: string, updateOptions?: {
|
|
450
|
+
addToLoginIDs?: T_4;
|
|
451
|
+
onMergeUseExisting?: T_4 extends true ? boolean : never;
|
|
452
|
+
}) => Promise<SdkResponse<_descope_core_js_sdk.EnchantedLinkResponse>>;
|
|
381
453
|
};
|
|
382
454
|
};
|
|
383
455
|
oauth: {
|
|
384
456
|
start: {
|
|
385
457
|
facebook: <B extends {
|
|
386
458
|
redirect: boolean;
|
|
387
|
-
}>(redirectURL?: string, config?: B) => Promise<
|
|
388
|
-
redirect: true;
|
|
389
|
-
} ? undefined : SdkResponse<_descope_core_js_sdk.URLResponse>>;
|
|
459
|
+
}>(redirectURL?: string, config?: B) => Promise<SdkResponse<_descope_core_js_sdk.URLResponse>>;
|
|
390
460
|
github: <B_1 extends {
|
|
391
461
|
redirect: boolean;
|
|
392
|
-
}>(redirectURL?: string, config?: B_1) => Promise<
|
|
393
|
-
redirect: true;
|
|
394
|
-
} ? undefined : SdkResponse<_descope_core_js_sdk.URLResponse>>;
|
|
462
|
+
}>(redirectURL?: string, config?: B_1) => Promise<SdkResponse<_descope_core_js_sdk.URLResponse>>;
|
|
395
463
|
google: <B_2 extends {
|
|
396
464
|
redirect: boolean;
|
|
397
|
-
}>(redirectURL?: string, config?: B_2) => Promise<
|
|
398
|
-
redirect: true;
|
|
399
|
-
} ? undefined : SdkResponse<_descope_core_js_sdk.URLResponse>>;
|
|
465
|
+
}>(redirectURL?: string, config?: B_2) => Promise<SdkResponse<_descope_core_js_sdk.URLResponse>>;
|
|
400
466
|
microsoft: <B_3 extends {
|
|
401
467
|
redirect: boolean;
|
|
402
|
-
}>(redirectURL?: string, config?: B_3) => Promise<
|
|
403
|
-
redirect: true;
|
|
404
|
-
} ? undefined : SdkResponse<_descope_core_js_sdk.URLResponse>>;
|
|
468
|
+
}>(redirectURL?: string, config?: B_3) => Promise<SdkResponse<_descope_core_js_sdk.URLResponse>>;
|
|
405
469
|
gitlab: <B_4 extends {
|
|
406
470
|
redirect: boolean;
|
|
407
|
-
}>(redirectURL?: string, config?: B_4) => Promise<
|
|
408
|
-
redirect: true;
|
|
409
|
-
} ? undefined : SdkResponse<_descope_core_js_sdk.URLResponse>>;
|
|
471
|
+
}>(redirectURL?: string, config?: B_4) => Promise<SdkResponse<_descope_core_js_sdk.URLResponse>>;
|
|
410
472
|
apple: <B_5 extends {
|
|
411
473
|
redirect: boolean;
|
|
412
|
-
}>(redirectURL?: string, config?: B_5) => Promise<
|
|
413
|
-
redirect: true;
|
|
414
|
-
} ? undefined : SdkResponse<_descope_core_js_sdk.URLResponse>>;
|
|
474
|
+
}>(redirectURL?: string, config?: B_5) => Promise<SdkResponse<_descope_core_js_sdk.URLResponse>>;
|
|
415
475
|
discord: <B_6 extends {
|
|
416
476
|
redirect: boolean;
|
|
417
|
-
}>(redirectURL?: string, config?: B_6) => Promise<
|
|
418
|
-
redirect: true;
|
|
419
|
-
} ? undefined : SdkResponse<_descope_core_js_sdk.URLResponse>>;
|
|
477
|
+
}>(redirectURL?: string, config?: B_6) => Promise<SdkResponse<_descope_core_js_sdk.URLResponse>>;
|
|
420
478
|
linkedin: <B_7 extends {
|
|
421
479
|
redirect: boolean;
|
|
422
|
-
}>(redirectURL?: string, config?: B_7) => Promise<
|
|
423
|
-
redirect: true;
|
|
424
|
-
} ? undefined : SdkResponse<_descope_core_js_sdk.URLResponse>>;
|
|
480
|
+
}>(redirectURL?: string, config?: B_7) => Promise<SdkResponse<_descope_core_js_sdk.URLResponse>>;
|
|
425
481
|
};
|
|
426
482
|
exchange: (code: string) => Promise<SdkResponse<_descope_core_js_sdk.JWTResponse & {
|
|
427
483
|
refreshJwt?: string;
|
|
@@ -429,11 +485,11 @@ declare const nodeSdk: {
|
|
|
429
485
|
}>>;
|
|
430
486
|
};
|
|
431
487
|
saml: {
|
|
432
|
-
start:
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
}
|
|
488
|
+
start: (tenantIdOrEmail: string, redirectUrl?: string, loginOptions?: {
|
|
489
|
+
stepup?: boolean;
|
|
490
|
+
mfa?: boolean;
|
|
491
|
+
customClaims?: Record<string, any>;
|
|
492
|
+
}, token?: string) => Promise<SdkResponse<_descope_core_js_sdk.URLResponse>>;
|
|
437
493
|
exchange: (code: string) => Promise<SdkResponse<_descope_core_js_sdk.JWTResponse & {
|
|
438
494
|
refreshJwt?: string;
|
|
439
495
|
cookies?: string[];
|
|
@@ -534,12 +590,16 @@ declare const nodeSdk: {
|
|
|
534
590
|
name?: string;
|
|
535
591
|
loginId?: string;
|
|
536
592
|
};
|
|
593
|
+
redirectAuth?: {
|
|
594
|
+
callbackUrl: string;
|
|
595
|
+
codeChallenge: string;
|
|
596
|
+
};
|
|
537
597
|
}, conditionInteractionId?: string, interactionId?: string, input?: {
|
|
538
598
|
[x: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | any)[])[])[])[])[])[])[])[])[])[])[];
|
|
539
|
-
}) => Promise<SdkResponse<_descope_core_js_sdk.FlowResponse>>;
|
|
599
|
+
}, version?: number) => Promise<SdkResponse<_descope_core_js_sdk.FlowResponse>>;
|
|
540
600
|
next: (executionId: string, stepId: string, interactionId: string, input?: {
|
|
541
601
|
[x: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | any)[])[])[])[])[])[])[])[])[])[])[];
|
|
542
|
-
}) => Promise<SdkResponse<_descope_core_js_sdk.FlowResponse>>;
|
|
602
|
+
}, version?: number) => Promise<SdkResponse<_descope_core_js_sdk.FlowResponse>>;
|
|
543
603
|
};
|
|
544
604
|
refresh: (token?: string) => Promise<SdkResponse<_descope_core_js_sdk.JWTResponse & {
|
|
545
605
|
refreshJwt?: string;
|
|
@@ -573,7 +633,7 @@ declare const nodeSdk: {
|
|
|
573
633
|
};
|
|
574
634
|
token?: string;
|
|
575
635
|
}) => Promise<Response>;
|
|
576
|
-
delete: (path: string,
|
|
636
|
+
delete: (path: string, config?: {
|
|
577
637
|
headers?: HeadersInit;
|
|
578
638
|
queryParams?: {
|
|
579
639
|
[key: string]: string;
|
package/dist/index.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__rest as e}from"tslib";import t,{transformResponse as a,wrapWith as o}from"@descope/core-js-sdk";import{jwtVerify as n,errors as s,importJWK as r}from"jose";import i,{Headers as l}from"node-fetch-commonjs";const d=t=>async(...a)=>{var o,n,s;const r=await t(...a);if(!r.data)return r;let i=r.data,{refreshJwt:l}=i,d=e(i,["refreshJwt"]);const p=[];var m;return l?p.push(`${"DSR"}=${l}; Domain=${(null==(m=d)?void 0:m.cookieDomain)||""}; Max-Age=${(null==m?void 0:m.cookieMaxAge)||""}; Path=${(null==m?void 0:m.cookiePath)||"/"}; HttpOnly; SameSite=Strict`):(null===(o=r.response)||void 0===o?void 0:o.headers.get("set-cookie"))&&(l=((e,t)=>{const a=null==e?void 0:e.match(RegExp(`(?:^|;\\s*)${t}=([^;]*)`));return a?a[1]:null})(null===(n=r.response)||void 0===n?void 0:n.headers.get("set-cookie"),"DSR"),p.push(null===(s=r.response)||void 0===s?void 0:s.headers.get("set-cookie"))),Object.assign(Object.assign({},r),{data:Object.assign(Object.assign({},r.data),{refreshJwt:l,cookies:p})})};function p(e,t,a){var o,n;const s=a?null===(n=null===(o=e.token.tenants)||void 0===o?void 0:o[a])||void 0===n?void 0:n[t]:e.token[t];return Array.isArray(s)?s:[]}var m={create:"/v1/mgmt/user/create",update:"/v1/mgmt/user/update",delete:"/v1/mgmt/user/delete",load:"/v1/mgmt/user",search:"/v1/mgmt/user/search",updateStatus:"/v1/mgmt/user/update/status",updateEmail:"/v1/mgmt/user/update/email",updatePhone:"/v1/mgmt/user/update/phone",updateDisplayName:"/v1/mgmt/user/update/name",addRole:"/v1/mgmt/user/update/role/add",removeRole:"/v1/mgmt/user/update/role/remove",addTenant:"/v1/mgmt/user/update/tenant/add",removeTenant:"/v1/mgmt/user/update/tenant/remove"},c={create:"/v1/mgmt/accesskey/create",load:"/v1/mgmt/accesskey",search:"/v1/mgmt/accesskey/search",update:"/v1/mgmt/accesskey/update",deactivate:"/v1/mgmt/accesskey/deactivate",activate:"/v1/mgmt/accesskey/activate",delete:"/v1/mgmt/accesskey/delete"},u={create:"/v1/mgmt/tenant/create",update:"/v1/mgmt/tenant/update",delete:"/v1/mgmt/tenant/delete",loadAll:"/v1/mgmt/tenant/all"},h={configure:"/v1/mgmt/sso/settings",metadata:"/v1/mgmt/sso/metadata",mapping:"/v1/mgmt/sso/mapping"},g={update:"/v1/mgmt/jwt/update"},v={create:"/v1/mgmt/permission/create",update:"/v1/mgmt/permission/update",delete:"/v1/mgmt/permission/delete",loadAll:"/v1/mgmt/permission/all"},k={create:"/v1/mgmt/role/create",update:"/v1/mgmt/role/update",delete:"/v1/mgmt/role/delete",loadAll:"/v1/mgmt/role/all"},f={export:"/v1/mgmt/flow/export",import:"/v1/mgmt/flow/import"},y={export:"/v1/mgmt/theme/export",import:"/v1/mgmt/theme/import"},C={loadAllGroups:"/v1/mgmt/group/all",loadAllGroupsForMember:"/v1/mgmt/group/member/all",loadAllGroupMembers:"/v1/mgmt/group/members"};const w=(e,t)=>({create:(o,n,s,r,i,l)=>a(e.httpClient.post(m.create,{loginId:o,email:n,phone:s,displayName:r,roleNames:i,userTenants:l},{token:t}),(e=>e.user)),invite:(o,n,s,r,i,l)=>a(e.httpClient.post(m.create,{loginId:o,email:n,phone:s,displayName:r,roleNames:i,userTenants:l,invite:!0},{token:t}),(e=>e.user)),update:(o,n,s,r,i,l)=>a(e.httpClient.post(m.update,{loginId:o,email:n,phone:s,displayName:r,roleNames:i,userTenants:l},{token:t}),(e=>e.user)),delete:o=>a(e.httpClient.post(m.delete,{loginId:o},{token:t})),load:o=>a(e.httpClient.get(m.load,{queryParams:{loginId:o},token:t}),(e=>e.user)),loadByUserId:o=>a(e.httpClient.get(m.load,{queryParams:{userId:o},token:t}),(e=>e.user)),searchAll:(o,n,s,r)=>a(e.httpClient.post(m.search,{tenantIds:o,roleNames:n,limit:s,page:r},{token:t}),(e=>e.users)),activate:o=>a(e.httpClient.post(m.updateStatus,{loginId:o,status:"enabled"},{token:t}),(e=>e.user)),deactivate:o=>a(e.httpClient.post(m.updateStatus,{loginId:o,status:"disabled"},{token:t}),(e=>e.user)),updateEmail:(o,n,s)=>a(e.httpClient.post(m.updateEmail,{loginId:o,email:n,verified:s},{token:t}),(e=>e.user)),updatePhone:(o,n,s)=>a(e.httpClient.post(m.updatePhone,{loginId:o,phone:n,verified:s},{token:t}),(e=>e.user)),updateDisplayName:(o,n)=>a(e.httpClient.post(m.updateDisplayName,{loginId:o,displayName:n},{token:t}),(e=>e.user)),addRoles:(o,n)=>a(e.httpClient.post(m.addRole,{loginId:o,roleNames:n},{token:t}),(e=>e.user)),removeRoles:(o,n)=>a(e.httpClient.post(m.removeRole,{loginId:o,roleNames:n},{token:t}),(e=>e.user)),addTenant:(o,n)=>a(e.httpClient.post(m.addTenant,{loginId:o,tenantId:n},{token:t}),(e=>e.user)),removeTenant:(o,n)=>a(e.httpClient.post(m.removeTenant,{loginId:o,tenantId:n},{token:t}),(e=>e.user)),addTenantRoles:(o,n,s)=>a(e.httpClient.post(m.addRole,{loginId:o,tenantId:n,roleNames:s},{token:t}),(e=>e.user)),removeTenantRoles:(o,n,s)=>a(e.httpClient.post(m.removeRole,{loginId:o,tenantId:n,roleNames:s},{token:t}),(e=>e.user))}),I=(e,t)=>({create:(o,n)=>a(e.httpClient.post(u.create,{name:o,selfProvisioningDomains:n},{token:t})),createWithId:(o,n,s)=>a(e.httpClient.post(u.create,{id:o,name:n,selfProvisioningDomains:s},{token:t})),update:(o,n,s)=>a(e.httpClient.post(u.update,{id:o,name:n,selfProvisioningDomains:s},{token:t})),delete:o=>a(e.httpClient.post(u.delete,{id:o},{token:t})),loadAll:()=>a(e.httpClient.get(u.loadAll,{token:t}),(e=>e.tenants))}),b=(e,t)=>({update:(o,n)=>a(e.httpClient.post(g.update,{jwt:o,customClaims:n},{token:t}))}),A=(e,t)=>({create:(o,n)=>a(e.httpClient.post(v.create,{name:o,description:n},{token:t})),update:(o,n,s)=>a(e.httpClient.post(v.update,{name:o,newName:n,description:s},{token:t})),delete:o=>a(e.httpClient.post(v.delete,{name:o},{token:t})),loadAll:()=>a(e.httpClient.get(v.loadAll,{token:t}),(e=>e.permissions))}),x=(e,t)=>({create:(o,n,s)=>a(e.httpClient.post(k.create,{name:o,description:n,permissionNames:s},{token:t})),update:(o,n,s,r)=>a(e.httpClient.post(k.update,{name:o,newName:n,description:s,permissionNames:r},{token:t})),delete:o=>a(e.httpClient.post(k.delete,{name:o},{token:t})),loadAll:()=>a(e.httpClient.get(k.loadAll,{token:t}),(e=>e.roles))}),j=(e,t)=>({loadAllGroups:o=>a(e.httpClient.post(C.loadAllGroups,{tenantId:o},{token:t})),loadAllGroupsForMember:(o,n,s)=>a(e.httpClient.post(C.loadAllGroupsForMember,{tenantId:o,loginIds:s,userIds:n},{token:t})),loadAllGroupMembers:(o,n)=>a(e.httpClient.post(C.loadAllGroupMembers,{tenantId:o,groupId:n},{token:t}))}),T=(e,t)=>({configureSettings:(o,n,s,r,i,l)=>a(e.httpClient.post(h.configure,{tenantId:o,idpURL:n,entityId:r,idpCert:s,redirectURL:i,domain:l},{token:t})),configureMetadata:(o,n)=>a(e.httpClient.post(h.metadata,{tenantId:o,idpMetadataURL:n},{token:t})),configureMapping:(o,n,s)=>a(e.httpClient.post(h.mapping,{tenantId:o,roleMapping:n,attributeMapping:s},{token:t}))}),N=(e,t)=>({create:(o,n,s,r)=>a(e.httpClient.post(c.create,{name:o,expireTime:n,roleNames:s,keyTenants:r},{token:t})),load:o=>a(e.httpClient.get(c.load,{queryParams:{id:o},token:t}),(e=>e.key)),searchAll:o=>a(e.httpClient.post(c.search,{tenantIds:o},{token:t}),(e=>e.keys)),update:(o,n)=>a(e.httpClient.post(c.update,{id:o,name:n},{token:t}),(e=>e.key)),deactivate:o=>a(e.httpClient.post(c.deactivate,{id:o},{token:t})),activate:o=>a(e.httpClient.post(c.activate,{id:o},{token:t})),delete:o=>a(e.httpClient.post(c.delete,{id:o},{token:t}))}),R=(e,t)=>({export:o=>a(e.httpClient.post(f.export,{flowId:o},{token:t})),import:(o,n,s)=>a(e.httpClient.post(f.import,{flowId:o,flow:n,screens:s},{token:t}))}),S=(e,t)=>({export:()=>a(e.httpClient.post(y.export,{},{token:t})),import:o=>a(e.httpClient.post(y.import,{theme:o},{token:t}))});var E;null!==(E=globalThis.Headers)&&void 0!==E||(globalThis.Headers=l);const M=(...e)=>(e.forEach((e=>{var t,a;e&&(null!==(t=(a=e).highWaterMark)&&void 0!==t||(a.highWaterMark=32212254720))})),i(...e)),P=a=>{var i,{managementKey:l}=a,m=e(a,["managementKey"]);const c=t(Object.assign(Object.assign({},m),{fetch:M,baseHeaders:Object.assign(Object.assign({},m.baseHeaders),{"x-descope-sdk-name":"nodejs","x-descope-sdk-node-version":(null===(i=null===process||void 0===process?void 0:process.versions)||void 0===i?void 0:i.node)||"","x-descope-sdk-version":"1.1.1"})})),{projectId:u,logger:h}=m,g={},v=((e,t)=>({user:w(e,t),accessKey:N(e,t),tenant:I(e,t),sso:T(e,t),jwt:b(e,t),permission:A(e,t),role:x(e,t),group:j(e,t),flow:R(e,t),theme:S(e,t)}))(c,l),k=Object.assign(Object.assign({},c),{management:v,async getKey(e){if(!(null==e?void 0:e.kid))throw Error("header.kid must not be empty");if(g[e.kid])return g[e.kid];if(Object.assign(g,await(async()=>{const e=(await c.httpClient.get(`v2/keys/${u}`).then((e=>e.json()))).keys;return Array.isArray(e)?(await Promise.all(e.map((async e=>[e.kid,await r(e)])))).reduce(((e,[t,a])=>t?Object.assign(Object.assign({},e),{[t.toString()]:a}):e),{}):{}})()),!g[e.kid])throw Error("failed to fetch matching key");return g[e.kid]},async validateJwt(e){var t;const a=(await n(e,k.getKey,{clockTolerance:5})).payload;if(a&&(a.iss=null===(t=a.iss)||void 0===t?void 0:t.split("/").pop(),a.iss!==u))throw new s.JWTClaimValidationFailed('unexpected "iss" claim value',"iss","check_failed");return{jwt:e,token:a}},async validateSession(e){if(!e)throw Error("session token is required for validation");try{return await k.validateJwt(e)}catch(e){throw null==h||h.error("session validation failed",e),Error("session validation failed")}},async refreshSession(e){var t,a;if(!e)throw Error("refresh token is required to refresh a session");try{await k.validateJwt(e);const o=await k.refresh(e);if(o.ok){return await k.validateJwt(null===(t=o.data)||void 0===t?void 0:t.sessionJwt)}throw Error(null===(a=o.error)||void 0===a?void 0:a.errorMessage)}catch(e){throw null==h||h.error("refresh token validation failed",e),Error("refresh token validation failed")}},async validateAndRefreshSession(e,t){if(!e&&!t)throw Error("both session and refresh tokens are empty");try{return await k.validateSession(e)}catch(e){null==h||h.log("session validation failed - trying to refresh it")}return k.refreshSession(t)},async exchangeAccessKey(e){if(!e)throw Error("access key must not be empty");let t;try{t=await k.accessKey.exchange(e)}catch(e){throw null==h||h.error("failed to exchange access key",e),Error("could not exchange access key")}const{sessionJwt:a}=t.data;if(!a)throw null==h||h.error("failed to parse exchange access key response"),Error("could not exchange access key");try{return await k.validateJwt(a)}catch(e){throw null==h||h.error("failed to parse jwt from access key",e),Error("could not exchange access key")}},validatePermissions:(e,t)=>k.validateTenantPermissions(e,null,t),validateTenantPermissions(e,t,a){const o=p(e,"permissions",t);return a.every((e=>o.includes(e)))},validateRoles:(e,t)=>k.validateTenantRoles(e,null,t),validateTenantRoles(e,t,a){const o=p(e,"roles",t);return a.every((e=>o.includes(e)))}});return o(k,["otp.verify.email","otp.verify.sms","otp.verify.whatsapp","magicLink.verify","enchantedLink.signUp","enchantedLink.signIn","oauth.exchange","saml.exchange","totp.verify","webauthn.signIn.finish","webauthn.signUp.finish","refresh"],d)};P.RefreshTokenCookieName="DSR",P.SessionTokenCookieName="DS";export{P as default};
|
|
1
|
+
import{__rest as e}from"tslib";import t,{transformResponse as a,wrapWith as s}from"@descope/core-js-sdk";import{jwtVerify as o,errors as n,importJWK as r}from"jose";import i,{Headers as l}from"node-fetch-commonjs";const d=t=>async(...a)=>{var s,o,n;const r=await t(...a);if(!r.data)return r;let i=r.data,{refreshJwt:l}=i,d=e(i,["refreshJwt"]);const p=[];var m;return l?p.push(`${"DSR"}=${l}; Domain=${(null==(m=d)?void 0:m.cookieDomain)||""}; Max-Age=${(null==m?void 0:m.cookieMaxAge)||""}; Path=${(null==m?void 0:m.cookiePath)||"/"}; HttpOnly; SameSite=Strict`):(null===(s=r.response)||void 0===s?void 0:s.headers.get("set-cookie"))&&(l=((e,t)=>{const a=null==e?void 0:e.match(RegExp(`(?:^|;\\s*)${t}=([^;]*)`));return a?a[1]:null})(null===(o=r.response)||void 0===o?void 0:o.headers.get("set-cookie"),"DSR"),p.push(null===(n=r.response)||void 0===n?void 0:n.headers.get("set-cookie"))),Object.assign(Object.assign({},r),{data:Object.assign(Object.assign({},r.data),{refreshJwt:l,cookies:p})})};function p(e,t,a){var s,o;const n=a?null===(o=null===(s=e.token.tenants)||void 0===s?void 0:s[a])||void 0===o?void 0:o[t]:e.token[t];return Array.isArray(n)?n:[]}var m={create:"/v1/mgmt/user/create",update:"/v1/mgmt/user/update",delete:"/v1/mgmt/user/delete",deleteAllTestUsers:"/v1/mgmt/user/test/delete/all",load:"/v1/mgmt/user",search:"/v1/mgmt/user/search",updateStatus:"/v1/mgmt/user/update/status",updateEmail:"/v1/mgmt/user/update/email",updatePhone:"/v1/mgmt/user/update/phone",updateDisplayName:"/v1/mgmt/user/update/name",updatePicture:"/v1/mgmt/user/update/picture",updateCustomAttribute:"/v1/mgmt/user/update/customAttribute",addRole:"/v1/mgmt/user/update/role/add",removeRole:"/v1/mgmt/user/update/role/remove",addTenant:"/v1/mgmt/user/update/tenant/add",removeTenant:"/v1/mgmt/user/update/tenant/remove",setPassword:"/v1/mgmt/user/password/set",expirePassword:"/v1/mgmt/user/password/expire",generateOTPForTest:"/v1/mgmt/tests/generate/otp",generateMagicLinkForTest:"/v1/mgmt/tests/generate/magiclink",generateEnchantedLinkForTest:"/v1/mgmt/tests/generate/enchantedlink"},u={create:"/v1/mgmt/accesskey/create",load:"/v1/mgmt/accesskey",search:"/v1/mgmt/accesskey/search",update:"/v1/mgmt/accesskey/update",deactivate:"/v1/mgmt/accesskey/deactivate",activate:"/v1/mgmt/accesskey/activate",delete:"/v1/mgmt/accesskey/delete"},c={create:"/v1/mgmt/tenant/create",update:"/v1/mgmt/tenant/update",delete:"/v1/mgmt/tenant/delete",loadAll:"/v1/mgmt/tenant/all"},g={settings:"/v1/mgmt/sso/settings",metadata:"/v1/mgmt/sso/metadata",mapping:"/v1/mgmt/sso/mapping"},h={update:"/v1/mgmt/jwt/update"},v={create:"/v1/mgmt/permission/create",update:"/v1/mgmt/permission/update",delete:"/v1/mgmt/permission/delete",loadAll:"/v1/mgmt/permission/all"},k={create:"/v1/mgmt/role/create",update:"/v1/mgmt/role/update",delete:"/v1/mgmt/role/delete",loadAll:"/v1/mgmt/role/all"},y={export:"/v1/mgmt/flow/export",import:"/v1/mgmt/flow/import"},f={export:"/v1/mgmt/theme/export",import:"/v1/mgmt/theme/import"},C={loadAllGroups:"/v1/mgmt/group/all",loadAllGroupsForMember:"/v1/mgmt/group/member/all",loadAllGroupMembers:"/v1/mgmt/group/members"};const w=(e,t)=>({create:(s,o,n,r,i,l,d,p)=>a(e.httpClient.post(m.create,{loginId:s,email:o,phone:n,displayName:r,roleNames:i,userTenants:l,customAttributes:d,picture:p},{token:t}),(e=>e.user)),createTestUser:(s,o,n,r,i,l,d,p)=>a(e.httpClient.post(m.create,{loginId:s,email:o,phone:n,displayName:r,roleNames:i,userTenants:l,test:!0,customAttributes:d,picture:p},{token:t}),(e=>e.user)),invite:(s,o,n,r,i,l,d,p)=>a(e.httpClient.post(m.create,{loginId:s,email:o,phone:n,displayName:r,roleNames:i,userTenants:l,invite:!0,customAttributes:d,picture:p},{token:t}),(e=>e.user)),update:(s,o,n,r,i,l,d,p)=>a(e.httpClient.post(m.update,{loginId:s,email:o,phone:n,displayName:r,roleNames:i,userTenants:l,customAttributes:d,picture:p},{token:t}),(e=>e.user)),delete:s=>a(e.httpClient.post(m.delete,{loginId:s},{token:t})),deleteAllTestUsers:()=>a(e.httpClient.delete(m.deleteAllTestUsers,{token:t})),load:s=>a(e.httpClient.get(m.load,{queryParams:{loginId:s},token:t}),(e=>e.user)),loadByUserId:s=>a(e.httpClient.get(m.load,{queryParams:{userId:s},token:t}),(e=>e.user)),searchAll:(s,o,n,r,i,l,d)=>a(e.httpClient.post(m.search,{tenantIds:s,roleNames:o,limit:n,page:r,testUsersOnly:i,withTestUser:l,customAttributes:d},{token:t}),(e=>e.users)),activate:s=>a(e.httpClient.post(m.updateStatus,{loginId:s,status:"enabled"},{token:t}),(e=>e.user)),deactivate:s=>a(e.httpClient.post(m.updateStatus,{loginId:s,status:"disabled"},{token:t}),(e=>e.user)),updateEmail:(s,o,n)=>a(e.httpClient.post(m.updateEmail,{loginId:s,email:o,verified:n},{token:t}),(e=>e.user)),updatePhone:(s,o,n)=>a(e.httpClient.post(m.updatePhone,{loginId:s,phone:o,verified:n},{token:t}),(e=>e.user)),updateDisplayName:(s,o)=>a(e.httpClient.post(m.updateDisplayName,{loginId:s,displayName:o},{token:t}),(e=>e.user)),updatePicture:(s,o)=>a(e.httpClient.post(m.updatePicture,{loginId:s,picture:o},{token:t}),(e=>e.user)),updateCustomAttribute:(s,o,n)=>a(e.httpClient.post(m.updateCustomAttribute,{loginId:s,attributeKey:o,attributeValue:n},{token:t}),(e=>e.user)),addRoles:(s,o)=>a(e.httpClient.post(m.addRole,{loginId:s,roleNames:o},{token:t}),(e=>e.user)),removeRoles:(s,o)=>a(e.httpClient.post(m.removeRole,{loginId:s,roleNames:o},{token:t}),(e=>e.user)),addTenant:(s,o)=>a(e.httpClient.post(m.addTenant,{loginId:s,tenantId:o},{token:t}),(e=>e.user)),removeTenant:(s,o)=>a(e.httpClient.post(m.removeTenant,{loginId:s,tenantId:o},{token:t}),(e=>e.user)),addTenantRoles:(s,o,n)=>a(e.httpClient.post(m.addRole,{loginId:s,tenantId:o,roleNames:n},{token:t}),(e=>e.user)),removeTenantRoles:(s,o,n)=>a(e.httpClient.post(m.removeRole,{loginId:s,tenantId:o,roleNames:n},{token:t}),(e=>e.user)),generateOTPForTestUser:(s,o)=>a(e.httpClient.post(m.generateOTPForTest,{deliveryMethod:s,loginId:o},{token:t}),(e=>e)),generateMagicLinkForTestUser:(s,o,n)=>a(e.httpClient.post(m.generateMagicLinkForTest,{deliveryMethod:s,loginId:o,URI:n},{token:t}),(e=>e)),generateEnchantedLinkForTestUser:(s,o)=>a(e.httpClient.post(m.generateEnchantedLinkForTest,{loginId:s,URI:o},{token:t}),(e=>e)),setPassword:(s,o)=>a(e.httpClient.post(m.setPassword,{loginId:s,password:o},{token:t}),(e=>e)),expirePassword:s=>a(e.httpClient.post(m.expirePassword,{loginId:s},{token:t}),(e=>e))}),I=(e,t)=>({create:(s,o)=>a(e.httpClient.post(c.create,{name:s,selfProvisioningDomains:o},{token:t})),createWithId:(s,o,n)=>a(e.httpClient.post(c.create,{id:s,name:o,selfProvisioningDomains:n},{token:t})),update:(s,o,n)=>a(e.httpClient.post(c.update,{id:s,name:o,selfProvisioningDomains:n},{token:t})),delete:s=>a(e.httpClient.post(c.delete,{id:s},{token:t})),loadAll:()=>a(e.httpClient.get(c.loadAll,{token:t}),(e=>e.tenants))}),b=(e,t)=>({update:(s,o)=>a(e.httpClient.post(h.update,{jwt:s,customClaims:o},{token:t}))}),T=(e,t)=>({create:(s,o)=>a(e.httpClient.post(v.create,{name:s,description:o},{token:t})),update:(s,o,n)=>a(e.httpClient.post(v.update,{name:s,newName:o,description:n},{token:t})),delete:s=>a(e.httpClient.post(v.delete,{name:s},{token:t})),loadAll:()=>a(e.httpClient.get(v.loadAll,{token:t}),(e=>e.permissions))}),A=(e,t)=>({create:(s,o,n)=>a(e.httpClient.post(k.create,{name:s,description:o,permissionNames:n},{token:t})),update:(s,o,n,r)=>a(e.httpClient.post(k.update,{name:s,newName:o,description:n,permissionNames:r},{token:t})),delete:s=>a(e.httpClient.post(k.delete,{name:s},{token:t})),loadAll:()=>a(e.httpClient.get(k.loadAll,{token:t}),(e=>e.roles))}),x=(e,t)=>({loadAllGroups:s=>a(e.httpClient.post(C.loadAllGroups,{tenantId:s},{token:t})),loadAllGroupsForMember:(s,o,n)=>a(e.httpClient.post(C.loadAllGroupsForMember,{tenantId:s,loginIds:n,userIds:o},{token:t})),loadAllGroupMembers:(s,o)=>a(e.httpClient.post(C.loadAllGroupMembers,{tenantId:s,groupId:o},{token:t}))}),P=(e,t)=>({getSettings:s=>a(e.httpClient.get(g.settings,{queryParams:{tenantId:s},token:t}),(e=>e)),deleteSettings:s=>a(e.httpClient.delete(g.settings,{queryParams:{tenantId:s},token:t})),configureSettings:(s,o,n,r,i,l)=>a(e.httpClient.post(g.settings,{tenantId:s,idpURL:o,entityId:r,idpCert:n,redirectURL:i,domain:l},{token:t})),configureMetadata:(s,o)=>a(e.httpClient.post(g.metadata,{tenantId:s,idpMetadataURL:o},{token:t})),configureMapping:(s,o,n)=>a(e.httpClient.post(g.mapping,{tenantId:s,roleMapping:o,attributeMapping:n},{token:t}))}),j=(e,t)=>({create:(s,o,n,r)=>a(e.httpClient.post(u.create,{name:s,expireTime:o,roleNames:n,keyTenants:r},{token:t})),load:s=>a(e.httpClient.get(u.load,{queryParams:{id:s},token:t}),(e=>e.key)),searchAll:s=>a(e.httpClient.post(u.search,{tenantIds:s},{token:t}),(e=>e.keys)),update:(s,o)=>a(e.httpClient.post(u.update,{id:s,name:o},{token:t}),(e=>e.key)),deactivate:s=>a(e.httpClient.post(u.deactivate,{id:s},{token:t})),activate:s=>a(e.httpClient.post(u.activate,{id:s},{token:t})),delete:s=>a(e.httpClient.post(u.delete,{id:s},{token:t}))}),N=(e,t)=>({export:s=>a(e.httpClient.post(y.export,{flowId:s},{token:t})),import:(s,o,n)=>a(e.httpClient.post(y.import,{flowId:s,flow:o,screens:n},{token:t}))}),R=(e,t)=>({export:()=>a(e.httpClient.post(f.export,{},{token:t})),import:s=>a(e.httpClient.post(f.import,{theme:s},{token:t}))});var M;null!==(M=globalThis.Headers)&&void 0!==M||(globalThis.Headers=l);const E=(...e)=>(e.forEach((e=>{var t,a;e&&(null!==(t=(a=e).highWaterMark)&&void 0!==t||(a.highWaterMark=31457280))})),i(...e)),S=a=>{var i,{managementKey:l}=a,m=e(a,["managementKey"]);const u=t(Object.assign(Object.assign({},m),{fetch:E,baseHeaders:Object.assign(Object.assign({},m.baseHeaders),{"x-descope-sdk-name":"nodejs","x-descope-sdk-node-version":(null===(i=null===process||void 0===process?void 0:process.versions)||void 0===i?void 0:i.node)||"","x-descope-sdk-version":"1.5.1"})})),{projectId:c,logger:g}=m,h={},v=((e,t)=>({user:w(e,t),accessKey:j(e,t),tenant:I(e,t),sso:P(e,t),jwt:b(e,t),permission:T(e,t),role:A(e,t),group:x(e,t),flow:N(e,t),theme:R(e,t)}))(u,l),k=Object.assign(Object.assign({},u),{management:v,async getKey(e){if(!(null==e?void 0:e.kid))throw Error("header.kid must not be empty");if(h[e.kid])return h[e.kid];if(Object.assign(h,await(async()=>{const e=(await u.httpClient.get(`v2/keys/${c}`).then((e=>e.json()))).keys;return Array.isArray(e)?(await Promise.all(e.map((async e=>[e.kid,await r(e)])))).reduce(((e,[t,a])=>t?Object.assign(Object.assign({},e),{[t.toString()]:a}):e),{}):{}})()),!h[e.kid])throw Error("failed to fetch matching key");return h[e.kid]},async validateJwt(e){var t;const a=(await o(e,k.getKey,{clockTolerance:5})).payload;if(a&&(a.iss=null===(t=a.iss)||void 0===t?void 0:t.split("/").pop(),a.iss!==c))throw new n.JWTClaimValidationFailed('unexpected "iss" claim value',"iss","check_failed");return{jwt:e,token:a}},async validateSession(e){if(!e)throw Error("session token is required for validation");try{return await k.validateJwt(e)}catch(e){throw null==g||g.error("session validation failed",e),Error("session validation failed")}},async refreshSession(e){var t,a;if(!e)throw Error("refresh token is required to refresh a session");try{await k.validateJwt(e);const s=await k.refresh(e);if(s.ok){return await k.validateJwt(null===(t=s.data)||void 0===t?void 0:t.sessionJwt)}throw Error(null===(a=s.error)||void 0===a?void 0:a.errorMessage)}catch(e){throw null==g||g.error("refresh token validation failed",e),Error("refresh token validation failed")}},async validateAndRefreshSession(e,t){if(!e&&!t)throw Error("both session and refresh tokens are empty");try{return await k.validateSession(e)}catch(e){null==g||g.log("session validation failed - trying to refresh it")}return k.refreshSession(t)},async exchangeAccessKey(e){if(!e)throw Error("access key must not be empty");let t;try{t=await k.accessKey.exchange(e)}catch(e){throw null==g||g.error("failed to exchange access key",e),Error("could not exchange access key")}const{sessionJwt:a}=t.data;if(!a)throw null==g||g.error("failed to parse exchange access key response"),Error("could not exchange access key");try{return await k.validateJwt(a)}catch(e){throw null==g||g.error("failed to parse jwt from access key",e),Error("could not exchange access key")}},validatePermissions:(e,t)=>k.validateTenantPermissions(e,null,t),validateTenantPermissions(e,t,a){const s=p(e,"permissions",t);return a.every((e=>s.includes(e)))},validateRoles:(e,t)=>k.validateTenantRoles(e,null,t),validateTenantRoles(e,t,a){const s=p(e,"roles",t);return a.every((e=>s.includes(e)))}});return s(k,["otp.verify.email","otp.verify.sms","otp.verify.whatsapp","magicLink.verify","enchantedLink.signUp","enchantedLink.signIn","oauth.exchange","saml.exchange","totp.verify","webauthn.signIn.finish","webauthn.signUp.finish","refresh"],d)};S.RefreshTokenCookieName="DSR",S.SessionTokenCookieName="DS";export{S as default};
|
|
2
2
|
//# sourceMappingURL=index.esm.js.map
|