@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/README.md +81 -0
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/index.d.ts +134 -77
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/package.json +3 -3
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
|
-
|
|
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>>;
|
|
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
|
-
|
|
272
|
+
sms: (loginId: string, code: string) => Promise<SdkResponse<_descope_core_js_sdk.JWTResponse & {
|
|
221
273
|
refreshJwt?: string;
|
|
222
274
|
cookies?: string[];
|
|
223
275
|
}>>;
|
|
224
|
-
|
|
276
|
+
whatsapp: (loginId: string, code: string) => Promise<SdkResponse<_descope_core_js_sdk.JWTResponse & {
|
|
225
277
|
refreshJwt?: string;
|
|
226
278
|
cookies?: string[];
|
|
227
279
|
}>>;
|
|
228
|
-
|
|
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
|
-
|
|
297
|
+
sms: (loginId: string, user?: {
|
|
246
298
|
email?: string;
|
|
247
299
|
name?: string;
|
|
248
300
|
phone?: string;
|
|
249
301
|
}) => Promise<SdkResponse<{
|
|
250
|
-
|
|
302
|
+
maskedPhone: string;
|
|
251
303
|
}>>;
|
|
252
|
-
|
|
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
|
-
|
|
311
|
+
email: (loginId: string, user?: {
|
|
260
312
|
email?: string;
|
|
261
313
|
name?: string;
|
|
262
314
|
phone?: string;
|
|
263
315
|
}) => Promise<SdkResponse<{
|
|
264
|
-
|
|
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
|
|
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
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
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
|
|
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
|
-
|
|
370
|
+
sms: (loginId: string, uri: string, user?: {
|
|
313
371
|
email?: string;
|
|
314
372
|
name?: string;
|
|
315
373
|
phone?: string;
|
|
316
374
|
}) => Promise<SdkResponse<{
|
|
317
|
-
|
|
375
|
+
maskedPhone: string;
|
|
318
376
|
}>>;
|
|
319
|
-
|
|
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
|
-
|
|
384
|
+
email: (loginId: string, uri: string, user?: {
|
|
327
385
|
email?: string;
|
|
328
386
|
name?: string;
|
|
329
387
|
phone?: string;
|
|
330
388
|
}) => Promise<SdkResponse<{
|
|
331
|
-
|
|
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
|
|
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
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
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
|
|
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
|
|
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<
|
|
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<
|
|
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<
|
|
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<
|
|
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<
|
|
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<
|
|
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<
|
|
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<
|
|
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:
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
}
|
|
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
|