@descope/node-sdk 1.1.1 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/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,31 @@ 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
- invite: (loginId: string, email?: string, phone?: string, displayName?: string, roles?: string[], userTenants?: AssociatedTenant[]) => Promise<SdkResponse<_descope_core_js_sdk.UserResponse>>;
138
- update: (loginId: string, email?: string, phone?: string, displayName?: string, roles?: string[], userTenants?: AssociatedTenant[]) => Promise<SdkResponse<_descope_core_js_sdk.UserResponse>>;
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>>;
154
205
  };
155
206
  accessKey: {
156
207
  create: (name: string, expireTime: number, roles?: string[], keyTenants?: AssociatedTenant[]) => Promise<SdkResponse<CreatedAccessKeyResponse>>;
@@ -169,6 +220,7 @@ declare const nodeSdk: {
169
220
  loadAll: () => Promise<SdkResponse<Tenant[]>>;
170
221
  };
171
222
  sso: {
223
+ getSettings: (tenantId: string) => Promise<SdkResponse<SSOSettingsResponse>>;
172
224
  configureSettings: (tenantId: string, idpURL: string, idpCert: string, entityId: string, redirectURL?: string, domain?: string) => Promise<SdkResponse<never>>;
173
225
  configureMetadata: (tenantId: string, idpMetadataURL: string) => Promise<SdkResponse<never>>;
174
226
  configureMapping: (tenantId: string, roleMapping?: RoleMapping, attributeMapping?: AttributeMapping) => Promise<SdkResponse<never>>;
@@ -217,76 +269,82 @@ declare const nodeSdk: {
217
269
  };
218
270
  otp: {
219
271
  verify: {
220
- email: (loginId: string, code: string) => Promise<SdkResponse<_descope_core_js_sdk.JWTResponse & {
272
+ sms: (loginId: string, code: string) => Promise<SdkResponse<_descope_core_js_sdk.JWTResponse & {
221
273
  refreshJwt?: string;
222
274
  cookies?: string[];
223
275
  }>>;
224
- sms: (loginId: string, code: string) => Promise<SdkResponse<_descope_core_js_sdk.JWTResponse & {
276
+ whatsapp: (loginId: string, code: string) => Promise<SdkResponse<_descope_core_js_sdk.JWTResponse & {
225
277
  refreshJwt?: string;
226
278
  cookies?: string[];
227
279
  }>>;
228
- whatsapp: (loginId: string, code: string) => Promise<SdkResponse<_descope_core_js_sdk.JWTResponse & {
280
+ email: (loginId: string, code: string) => Promise<SdkResponse<_descope_core_js_sdk.JWTResponse & {
229
281
  refreshJwt?: string;
230
282
  cookies?: string[];
231
283
  }>>;
232
284
  };
233
285
  signIn: {
234
- email: (loginId: string) => Promise<SdkResponse<{
235
- maskedEmail: string;
236
- }>>;
237
286
  sms: (loginId: string) => Promise<SdkResponse<{
238
287
  maskedPhone: string;
239
288
  }>>;
240
289
  whatsapp: (loginId: string) => Promise<SdkResponse<{
241
290
  maskedPhone: string;
242
291
  }>>;
292
+ email: (loginId: string) => Promise<SdkResponse<{
293
+ maskedEmail: string;
294
+ }>>;
243
295
  };
244
296
  signUp: {
245
- email: (loginId: string, user?: {
297
+ sms: (loginId: string, user?: {
246
298
  email?: string;
247
299
  name?: string;
248
300
  phone?: string;
249
301
  }) => Promise<SdkResponse<{
250
- maskedEmail: string;
302
+ maskedPhone: string;
251
303
  }>>;
252
- sms: (loginId: string, user?: {
304
+ whatsapp: (loginId: string, user?: {
253
305
  email?: string;
254
306
  name?: string;
255
307
  phone?: string;
256
308
  }) => Promise<SdkResponse<{
257
309
  maskedPhone: string;
258
310
  }>>;
259
- whatsapp: (loginId: string, user?: {
311
+ email: (loginId: string, user?: {
260
312
  email?: string;
261
313
  name?: string;
262
314
  phone?: string;
263
315
  }) => Promise<SdkResponse<{
264
- maskedPhone: string;
316
+ maskedEmail: string;
265
317
  }>>;
266
318
  };
267
319
  signUpOrIn: {
268
- email: (loginId: string) => Promise<SdkResponse<{
269
- maskedEmail: string;
270
- }>>;
271
320
  sms: (loginId: string) => Promise<SdkResponse<{
272
321
  maskedPhone: string;
273
322
  }>>;
274
323
  whatsapp: (loginId: string) => Promise<SdkResponse<{
275
324
  maskedPhone: string;
276
325
  }>>;
326
+ email: (loginId: string) => Promise<SdkResponse<{
327
+ maskedEmail: string;
328
+ }>>;
277
329
  };
278
330
  update: {
279
- email: (loginId: string, email: string, token?: string) => Promise<SdkResponse<{
331
+ email: <T extends boolean>(loginId: string, email: string, token?: string, updateOptions?: {
332
+ addToLoginIDs?: T;
333
+ onMergeUseExisting?: T extends true ? boolean : never;
334
+ }) => Promise<SdkResponse<{
280
335
  maskedEmail: string;
281
336
  }>>;
282
337
  phone: {
283
- email: (loginId: string, phone: string) => Promise<SdkResponse<{
284
- maskedPhone: string;
285
- }>>;
286
- sms: (loginId: string, phone: string) => Promise<SdkResponse<{
338
+ sms: <T_1 extends boolean>(loginId: string, phone: string, token?: string, updateOptions?: {
339
+ addToLoginIDs?: T_1;
340
+ onMergeUseExisting?: T_1 extends true ? boolean : never;
341
+ }) => Promise<SdkResponse<{
287
342
  maskedPhone: string;
288
343
  }>>;
289
- whatsapp: (loginId: string, phone: string) => Promise<SdkResponse<{
344
+ whatsapp: <T_1 extends boolean>(loginId: string, phone: string, token?: string, updateOptions?: {
345
+ addToLoginIDs?: T_1;
346
+ onMergeUseExisting?: T_1 extends true ? boolean : never;
347
+ }) => Promise<SdkResponse<{
290
348
  maskedPhone: string;
291
349
  }>>;
292
350
  };
@@ -298,60 +356,68 @@ declare const nodeSdk: {
298
356
  cookies?: string[];
299
357
  }>>;
300
358
  signIn: {
301
- email: (loginId: string, uri: string) => Promise<SdkResponse<{
302
- maskedEmail: string;
303
- }>>;
304
359
  sms: (loginId: string, uri: string) => Promise<SdkResponse<{
305
360
  maskedPhone: string;
306
361
  }>>;
307
362
  whatsapp: (loginId: string, uri: string) => Promise<SdkResponse<{
308
363
  maskedPhone: string;
309
364
  }>>;
365
+ email: (loginId: string, uri: string) => Promise<SdkResponse<{
366
+ maskedEmail: string;
367
+ }>>;
310
368
  };
311
369
  signUp: {
312
- email: (loginId: string, uri: string, user?: {
370
+ sms: (loginId: string, uri: string, user?: {
313
371
  email?: string;
314
372
  name?: string;
315
373
  phone?: string;
316
374
  }) => Promise<SdkResponse<{
317
- maskedEmail: string;
375
+ maskedPhone: string;
318
376
  }>>;
319
- sms: (loginId: string, uri: string, user?: {
377
+ whatsapp: (loginId: string, uri: string, user?: {
320
378
  email?: string;
321
379
  name?: string;
322
380
  phone?: string;
323
381
  }) => Promise<SdkResponse<{
324
382
  maskedPhone: string;
325
383
  }>>;
326
- whatsapp: (loginId: string, uri: string, user?: {
384
+ email: (loginId: string, uri: string, user?: {
327
385
  email?: string;
328
386
  name?: string;
329
387
  phone?: string;
330
388
  }) => Promise<SdkResponse<{
331
- maskedPhone: string;
389
+ maskedEmail: string;
332
390
  }>>;
333
391
  };
334
392
  signUpOrIn: {
335
- email: (loginId: string, uri: string) => Promise<SdkResponse<{
336
- maskedEmail: string;
337
- }>>;
338
393
  sms: (loginId: string, uri: string) => Promise<SdkResponse<{
339
394
  maskedPhone: string;
340
395
  }>>;
341
396
  whatsapp: (loginId: string, uri: string) => Promise<SdkResponse<{
342
397
  maskedPhone: string;
343
398
  }>>;
399
+ email: (loginId: string, uri: string) => Promise<SdkResponse<{
400
+ maskedEmail: string;
401
+ }>>;
344
402
  };
345
403
  update: {
346
- email: (loginId: string, email: string, URI?: string, token?: string) => Promise<SdkResponse<never>>;
404
+ email: <T_2 extends boolean>(loginId: string, email: string, URI?: string, token?: string, updateOptions?: {
405
+ addToLoginIDs?: T_2;
406
+ onMergeUseExisting?: T_2 extends true ? boolean : never;
407
+ }) => Promise<SdkResponse<{
408
+ maskedEmail: string;
409
+ }>>;
347
410
  phone: {
348
- email: (loginId: string, phone: string) => Promise<SdkResponse<{
349
- maskedPhone: string;
350
- }>>;
351
- sms: (loginId: string, phone: string) => Promise<SdkResponse<{
411
+ sms: <T_3 extends boolean>(loginId: string, phone: string, URI?: string, token?: string, updateOptions?: {
412
+ addToLoginIDs?: T_3;
413
+ onMergeUseExisting?: T_3 extends true ? boolean : never;
414
+ }) => Promise<SdkResponse<{
352
415
  maskedPhone: string;
353
416
  }>>;
354
- whatsapp: (loginId: string, phone: string) => Promise<SdkResponse<{
417
+ whatsapp: <T_3 extends boolean>(loginId: string, phone: string, URI?: string, token?: string, updateOptions?: {
418
+ addToLoginIDs?: T_3;
419
+ onMergeUseExisting?: T_3 extends true ? boolean : never;
420
+ }) => Promise<SdkResponse<{
355
421
  maskedPhone: string;
356
422
  }>>;
357
423
  };
@@ -377,51 +443,38 @@ declare const nodeSdk: {
377
443
  timeoutMs: number;
378
444
  }) => Promise<SdkResponse<_descope_core_js_sdk.JWTResponse>>;
379
445
  update: {
380
- email: (loginId: string, email: string, URI?: string, token?: string) => Promise<SdkResponse<_descope_core_js_sdk.EnchantedLinkResponse>>;
446
+ email: <T_4 extends boolean>(loginId: string, email: string, URI?: string, token?: string, updateOptions?: {
447
+ addToLoginIDs?: T_4;
448
+ onMergeUseExisting?: T_4 extends true ? boolean : never;
449
+ }) => Promise<SdkResponse<_descope_core_js_sdk.EnchantedLinkResponse>>;
381
450
  };
382
451
  };
383
452
  oauth: {
384
453
  start: {
385
454
  facebook: <B extends {
386
455
  redirect: boolean;
387
- }>(redirectURL?: string, config?: B) => Promise<B extends {
388
- redirect: true;
389
- } ? undefined : SdkResponse<_descope_core_js_sdk.URLResponse>>;
456
+ }>(redirectURL?: string, config?: B) => Promise<SdkResponse<_descope_core_js_sdk.URLResponse>>;
390
457
  github: <B_1 extends {
391
458
  redirect: boolean;
392
- }>(redirectURL?: string, config?: B_1) => Promise<B_1 extends {
393
- redirect: true;
394
- } ? undefined : SdkResponse<_descope_core_js_sdk.URLResponse>>;
459
+ }>(redirectURL?: string, config?: B_1) => Promise<SdkResponse<_descope_core_js_sdk.URLResponse>>;
395
460
  google: <B_2 extends {
396
461
  redirect: boolean;
397
- }>(redirectURL?: string, config?: B_2) => Promise<B_2 extends {
398
- redirect: true;
399
- } ? undefined : SdkResponse<_descope_core_js_sdk.URLResponse>>;
462
+ }>(redirectURL?: string, config?: B_2) => Promise<SdkResponse<_descope_core_js_sdk.URLResponse>>;
400
463
  microsoft: <B_3 extends {
401
464
  redirect: boolean;
402
- }>(redirectURL?: string, config?: B_3) => Promise<B_3 extends {
403
- redirect: true;
404
- } ? undefined : SdkResponse<_descope_core_js_sdk.URLResponse>>;
465
+ }>(redirectURL?: string, config?: B_3) => Promise<SdkResponse<_descope_core_js_sdk.URLResponse>>;
405
466
  gitlab: <B_4 extends {
406
467
  redirect: boolean;
407
- }>(redirectURL?: string, config?: B_4) => Promise<B_4 extends {
408
- redirect: true;
409
- } ? undefined : SdkResponse<_descope_core_js_sdk.URLResponse>>;
468
+ }>(redirectURL?: string, config?: B_4) => Promise<SdkResponse<_descope_core_js_sdk.URLResponse>>;
410
469
  apple: <B_5 extends {
411
470
  redirect: boolean;
412
- }>(redirectURL?: string, config?: B_5) => Promise<B_5 extends {
413
- redirect: true;
414
- } ? undefined : SdkResponse<_descope_core_js_sdk.URLResponse>>;
471
+ }>(redirectURL?: string, config?: B_5) => Promise<SdkResponse<_descope_core_js_sdk.URLResponse>>;
415
472
  discord: <B_6 extends {
416
473
  redirect: boolean;
417
- }>(redirectURL?: string, config?: B_6) => Promise<B_6 extends {
418
- redirect: true;
419
- } ? undefined : SdkResponse<_descope_core_js_sdk.URLResponse>>;
474
+ }>(redirectURL?: string, config?: B_6) => Promise<SdkResponse<_descope_core_js_sdk.URLResponse>>;
420
475
  linkedin: <B_7 extends {
421
476
  redirect: boolean;
422
- }>(redirectURL?: string, config?: B_7) => Promise<B_7 extends {
423
- redirect: true;
424
- } ? undefined : SdkResponse<_descope_core_js_sdk.URLResponse>>;
477
+ }>(redirectURL?: string, config?: B_7) => Promise<SdkResponse<_descope_core_js_sdk.URLResponse>>;
425
478
  };
426
479
  exchange: (code: string) => Promise<SdkResponse<_descope_core_js_sdk.JWTResponse & {
427
480
  refreshJwt?: string;
@@ -429,11 +482,11 @@ declare const nodeSdk: {
429
482
  }>>;
430
483
  };
431
484
  saml: {
432
- start: <B_1 extends {
433
- redirect: boolean;
434
- }>(tenantNameOrEmail: string, config?: B_1) => Promise<B_1 extends {
435
- redirect: true;
436
- } ? undefined : SdkResponse<_descope_core_js_sdk.URLResponse>>;
485
+ start: (tenantNameOrEmail: string, redirectUrl?: string, loginOptions?: {
486
+ stepup?: boolean;
487
+ mfa?: boolean;
488
+ customClaims?: Record<string, any>;
489
+ }, token?: string) => Promise<SdkResponse<_descope_core_js_sdk.URLResponse>>;
437
490
  exchange: (code: string) => Promise<SdkResponse<_descope_core_js_sdk.JWTResponse & {
438
491
  refreshJwt?: string;
439
492
  cookies?: string[];
@@ -460,7 +513,7 @@ declare const nodeSdk: {
460
513
  start: (loginId: string, origin: string, name: string) => Promise<SdkResponse<{
461
514
  transactionId: string;
462
515
  options: string;
463
- create: boolean;
516
+ create: boolean; /** Get the key that can validate the given JWT KID in the header. Can retrieve the public key from local cache or from Descope. */
464
517
  }>>;
465
518
  finish: (transactionId: string, response: string) => Promise<SdkResponse<_descope_core_js_sdk.JWTResponse & {
466
519
  refreshJwt?: string;
@@ -475,7 +528,7 @@ declare const nodeSdk: {
475
528
  }, token?: string) => Promise<SdkResponse<{
476
529
  transactionId: string;
477
530
  options: string;
478
- create: boolean;
531
+ create: boolean; /** Get the key that can validate the given JWT KID in the header. Can retrieve the public key from local cache or from Descope. */
479
532
  }>>;
480
533
  finish: (transactionId: string, response: string) => Promise<SdkResponse<_descope_core_js_sdk.JWTResponse & {
481
534
  refreshJwt?: string;
@@ -486,14 +539,14 @@ declare const nodeSdk: {
486
539
  start: (loginId: string, origin: string) => Promise<SdkResponse<{
487
540
  transactionId: string;
488
541
  options: string;
489
- create: boolean;
542
+ create: boolean; /** Get the key that can validate the given JWT KID in the header. Can retrieve the public key from local cache or from Descope. */
490
543
  }>>;
491
544
  };
492
545
  update: {
493
546
  start: (loginId: string, origin: string, token: string) => Promise<SdkResponse<{
494
547
  transactionId: string;
495
548
  options: string;
496
- create: boolean;
549
+ create: boolean; /** Get the key that can validate the given JWT KID in the header. Can retrieve the public key from local cache or from Descope. */
497
550
  }>>;
498
551
  finish: (transactionId: string, response: string) => Promise<SdkResponse<_descope_core_js_sdk.ResponseData>>;
499
552
  };
@@ -534,12 +587,16 @@ declare const nodeSdk: {
534
587
  name?: string;
535
588
  loginId?: string;
536
589
  };
590
+ redirectAuth?: {
591
+ callbackUrl: string;
592
+ codeChallenge: string;
593
+ };
537
594
  }, conditionInteractionId?: string, interactionId?: string, input?: {
538
595
  [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>>;
596
+ }, version?: number) => Promise<SdkResponse<_descope_core_js_sdk.FlowResponse>>;
540
597
  next: (executionId: string, stepId: string, interactionId: string, input?: {
541
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)[])[])[])[])[])[])[])[])[])[])[];
542
- }) => Promise<SdkResponse<_descope_core_js_sdk.FlowResponse>>;
599
+ }, version?: number) => Promise<SdkResponse<_descope_core_js_sdk.FlowResponse>>;
543
600
  };
544
601
  refresh: (token?: string) => Promise<SdkResponse<_descope_core_js_sdk.JWTResponse & {
545
602
  refreshJwt?: 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",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))}),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}))}),j=(e,t)=>({getSettings:s=>a(e.httpClient.get(g.settings,{queryParams:{tenantId:s},token:t}),(e=>e)),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}))}),N=(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}))}),R=(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}))}),P=(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.0"})})),{projectId:c,logger:g}=m,h={},v=((e,t)=>({user:w(e,t),accessKey:N(e,t),tenant:I(e,t),sso:j(e,t),jwt:b(e,t),permission:T(e,t),role:A(e,t),group:x(e,t),flow:R(e,t),theme:P(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