@turnkey/sdk-browser 1.16.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/dist/__clients__/base-client.d.ts +7 -0
  3. package/dist/__clients__/base-client.d.ts.map +1 -0
  4. package/dist/__clients__/base-client.js +13 -0
  5. package/dist/__clients__/base-client.js.map +1 -0
  6. package/dist/__clients__/base-client.mjs +11 -0
  7. package/dist/__clients__/base-client.mjs.map +1 -0
  8. package/dist/__clients__/browser-clients.d.ts +243 -0
  9. package/dist/__clients__/browser-clients.d.ts.map +1 -0
  10. package/dist/__clients__/browser-clients.js +633 -0
  11. package/dist/__clients__/browser-clients.js.map +1 -0
  12. package/dist/__clients__/browser-clients.mjs +628 -0
  13. package/dist/__clients__/browser-clients.mjs.map +1 -0
  14. package/dist/__generated__/sdk-client-base.d.ts.map +1 -1
  15. package/dist/__generated__/sdk-client-base.js +106 -110
  16. package/dist/__generated__/sdk-client-base.js.map +1 -1
  17. package/dist/__generated__/sdk-client-base.mjs +106 -110
  18. package/dist/__generated__/sdk-client-base.mjs.map +1 -1
  19. package/dist/__generated__/version.d.ts +1 -1
  20. package/dist/__generated__/version.d.ts.map +1 -1
  21. package/dist/__generated__/version.js +1 -1
  22. package/dist/__generated__/version.mjs +1 -1
  23. package/dist/__types__/base.d.ts +12 -0
  24. package/dist/__types__/base.d.ts.map +1 -1
  25. package/dist/__types__/base.js +5 -0
  26. package/dist/__types__/base.js.map +1 -1
  27. package/dist/__types__/base.mjs +6 -1
  28. package/dist/__types__/base.mjs.map +1 -1
  29. package/dist/constants.d.ts +2 -0
  30. package/dist/constants.d.ts.map +1 -0
  31. package/dist/constants.js +6 -0
  32. package/dist/constants.js.map +1 -0
  33. package/dist/constants.mjs +4 -0
  34. package/dist/constants.mjs.map +1 -0
  35. package/dist/index.d.ts +4 -4
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +9 -4
  38. package/dist/index.js.map +1 -1
  39. package/dist/index.mjs +3 -2
  40. package/dist/index.mjs.map +1 -1
  41. package/dist/models.d.ts +1 -1
  42. package/dist/models.d.ts.map +1 -1
  43. package/dist/sdk-client.d.ts +14 -186
  44. package/dist/sdk-client.d.ts.map +1 -1
  45. package/dist/sdk-client.js +75 -437
  46. package/dist/sdk-client.js.map +1 -1
  47. package/dist/sdk-client.mjs +69 -431
  48. package/dist/sdk-client.mjs.map +1 -1
  49. package/dist/storage.d.ts +23 -3
  50. package/dist/storage.d.ts.map +1 -1
  51. package/dist/storage.js +17 -0
  52. package/dist/storage.js.map +1 -1
  53. package/dist/storage.mjs +17 -1
  54. package/dist/storage.mjs.map +1 -1
  55. package/package.json +6 -5
@@ -1,39 +1,37 @@
1
1
  'use strict';
2
2
 
3
- var webauthnStamper = require('@turnkey/webauthn-stamper');
4
- var iframeStamper = require('@turnkey/iframe-stamper');
5
- var http = require('@turnkey/http');
6
3
  var walletStamper = require('@turnkey/wallet-stamper');
7
- var version = require('./__generated__/version.js');
4
+ var iframeStamper = require('@turnkey/iframe-stamper');
5
+ var webauthnStamper = require('@turnkey/webauthn-stamper');
8
6
  var window = require('./__polyfills__/window.js');
9
7
  var base = require('./__types__/base.js');
10
- var sdkClientBase = require('./__generated__/sdk-client-base.js');
11
8
  var storage = require('./storage.js');
12
- var utils = require('./utils.js');
9
+ var browserClients = require('./__clients__/browser-clients.js');
10
+ var version = require('./__generated__/version.js');
13
11
 
14
- const DEFAULT_SESSION_EXPIRATION = "900"; // default to 15 minutes
15
12
  class TurnkeyBrowserSDK {
16
13
  constructor(config) {
17
14
  /**
18
- * Creates a passkey client. The parameters are overrides passed to the underlying Turnkey `WebauthnStamper`
19
- * @param rpId Relying Party ID (defaults to window.location.hostname if not provided)
20
- * @param timeout optional timeout (defaults to 5mins)
21
- * @param userVerification optional UV flag (defaults to "preferred")
22
- * @param allowCredentials optional allowCredentials array (defaults to empty array)
15
+ * Creates a passkey client. The parameters override the default values passed to the underlying Turnkey `WebauthnStamper`
16
+ * @param PasskeyClientParams
23
17
  * @returns new TurnkeyPasskeyClient
24
18
  */
25
- this.passkeyClient = (rpId, timeout, userVerification, allowCredentials) => {
26
- const targetRpId = rpId ?? this.config.rpId ?? window.location.hostname;
19
+ this.passkeyClient = (params) => {
20
+ const targetRpId = params?.rpId ?? this.config.rpId ?? window.location.hostname;
27
21
  if (!targetRpId) {
28
22
  throw new Error("Tried to initialize a passkey client with no rpId defined");
29
23
  }
30
24
  this.stamper = new webauthnStamper.WebauthnStamper({
31
25
  rpId: targetRpId,
32
- ...(timeout !== undefined && { timeout }),
33
- ...(userVerification !== undefined && { userVerification }),
34
- ...(allowCredentials !== undefined && { allowCredentials }),
26
+ ...(params?.timeout !== undefined && { timeout: params?.timeout }),
27
+ ...(params?.userVerification !== undefined && {
28
+ userVerification: params?.userVerification,
29
+ }),
30
+ ...(params?.allowCredentials !== undefined && {
31
+ allowCredentials: params?.allowCredentials,
32
+ }),
35
33
  });
36
- return new TurnkeyPasskeyClient({
34
+ return new browserClients.TurnkeyPasskeyClient({
37
35
  stamper: this.stamper,
38
36
  apiBaseUrl: this.config.apiBaseUrl,
39
37
  organizationId: this.config.defaultOrganizationId,
@@ -49,15 +47,15 @@ class TurnkeyBrowserSDK {
49
47
  iframeUrl: params.iframeUrl,
50
48
  iframeElementId: TurnkeyIframeElementId,
51
49
  });
52
- await this.stamper.init();
53
- return new TurnkeyIframeClient({
50
+ await this.stamper.init(params.dangerouslyOverrideIframeKeyTtl ?? undefined);
51
+ return new browserClients.TurnkeyIframeClient({
54
52
  stamper: this.stamper,
55
53
  apiBaseUrl: this.config.apiBaseUrl,
56
54
  organizationId: this.config.defaultOrganizationId,
57
55
  });
58
56
  };
59
57
  this.walletClient = (wallet) => {
60
- return new TurnkeyWalletClient({
58
+ return new browserClients.TurnkeyWalletClient({
61
59
  stamper: new walletStamper.WalletStamper(wallet),
62
60
  wallet,
63
61
  apiBaseUrl: this.config.apiBaseUrl,
@@ -106,7 +104,7 @@ class TurnkeyBrowserSDK {
106
104
  return;
107
105
  }
108
106
  if (currentUser?.session?.read?.expiry > Date.now()) {
109
- return new TurnkeyBrowserClient({
107
+ return new browserClients.TurnkeyBrowserClient({
110
108
  readOnlySession: currentUser?.session?.read?.token,
111
109
  apiBaseUrl: this.config.apiBaseUrl,
112
110
  organizationId: currentUser?.organization?.organizationId ??
@@ -114,13 +112,13 @@ class TurnkeyBrowserSDK {
114
112
  });
115
113
  }
116
114
  else {
117
- this.logoutUser();
115
+ await this.logout();
118
116
  }
119
117
  return;
120
118
  };
121
119
  /**
122
120
  * If there is a valid, current read-session, this will return an auth bundle and its expiration. This auth bundle can be used in conjunction with an iframeStamper to create a read + write session.
123
- *
121
+ * @deprecated use `getSession` instead
124
122
  * @returns {Promise<ReadWriteSession | undefined>}
125
123
  */
126
124
  this.getReadWriteSession = async () => {
@@ -136,14 +134,21 @@ class TurnkeyBrowserSDK {
136
134
  return;
137
135
  };
138
136
  /**
139
- * @deprecated This method is deprecated and will be removed in future versions.
140
- * It has been replaced by the `getReadWriteSession` method.
141
- * Fetches an auth bundle stored in local storage.
137
+ * If there is a valid, active READ_WRITE session, this will return it
142
138
  *
143
- * @returns {Promise<string | undefined>}
139
+ * @returns {Promise<Session | undefined>}
144
140
  */
145
- this.getAuthBundle = async () => {
146
- return await storage.getStorageValue(storage.StorageKeys.AuthBundle);
141
+ this.getSession = async () => {
142
+ const currentSession = await storage.getStorageValue(storage.StorageKeys.Session);
143
+ if (currentSession?.sessionType === base.SessionType.READ_WRITE) {
144
+ if (currentSession?.expiry > Date.now()) {
145
+ return currentSession;
146
+ }
147
+ else {
148
+ await storage.removeStorageValue(storage.StorageKeys.Session);
149
+ }
150
+ }
151
+ return;
147
152
  };
148
153
  /**
149
154
  * Fetches the current user's organization details.
@@ -160,427 +165,60 @@ class TurnkeyBrowserSDK {
160
165
  * @returns {Promise<User | undefined>}
161
166
  */
162
167
  this.getCurrentUser = async () => {
163
- return await storage.getStorageValue(storage.StorageKeys.UserSession);
164
- };
165
- /**
166
- * Clears out all data pertaining to a user session.
167
- *
168
- * @returns {Promise<boolean>}
169
- */
170
- this.logoutUser = async () => {
171
- await storage.removeStorageValue(storage.StorageKeys.AuthBundle); // DEPRECATED
172
- await storage.removeStorageValue(storage.StorageKeys.CurrentUser);
173
- await storage.removeStorageValue(storage.StorageKeys.UserSession);
174
- await storage.removeStorageValue(storage.StorageKeys.ReadWriteSession);
175
- return true;
176
- };
177
- this.config = config;
178
- }
179
- }
180
- class TurnkeyBrowserClient extends sdkClientBase.TurnkeySDKClientBase {
181
- constructor(config, authClient) {
182
- super(config);
183
- this.login = async (config) => {
184
- const readOnlySessionResult = await this.createReadOnlySession(config || {});
185
- await storage.saveSession(readOnlySessionResult, this.authClient);
186
- return readOnlySessionResult;
187
- };
188
- /**
189
- * Creates a read-write session. This method infers the current user's organization ID and target userId.
190
- * To be used in conjunction with an `iframeStamper`: the resulting session's credential bundle can be
191
- * injected into an iframeStamper to create a session that enables both read and write requests.
192
- *
193
- * @param targetEmbeddedKey
194
- * @param expirationSeconds
195
- * @param userId
196
- * @returns {Promise<SdkApiTypes.TCreateReadWriteSessionResponse>}
197
- */
198
- this.loginWithReadWriteSession = async (targetEmbeddedKey, expirationSeconds = DEFAULT_SESSION_EXPIRATION, userId) => {
199
- const readWriteSessionResult = await this.createReadWriteSession({
200
- targetPublicKey: targetEmbeddedKey,
201
- expirationSeconds,
202
- userId: userId,
203
- });
204
- // Ensure session and sessionExpiry are included in the object
205
- const readWriteSessionResultWithSession = {
206
- ...readWriteSessionResult,
207
- credentialBundle: readWriteSessionResult.credentialBundle,
208
- sessionExpiry: Date.now() + Number(expirationSeconds) * 1000,
209
- };
210
- // store auth bundle in local storage
211
- await storage.saveSession(readWriteSessionResultWithSession, this.authClient);
212
- return readWriteSessionResultWithSession;
213
- };
214
- /**
215
- * Logs in with an existing auth bundle. this bundle enables both read and write requests.
216
- *
217
- * @param credentialBundle
218
- * @param expirationSeconds
219
- * @returns {Promise<boolean>}
220
- */
221
- this.loginWithAuthBundle = async (credentialBundle, expirationSeconds = DEFAULT_SESSION_EXPIRATION) => {
222
- try {
223
- const whoAmIResult = await this.getWhoami();
224
- const readWriteSessionResultWithSession = {
225
- ...whoAmIResult,
226
- credentialBundle: credentialBundle,
227
- sessionExpiry: Date.now() + Number(expirationSeconds) * 1000,
228
- };
229
- await storage.saveSession(readWriteSessionResultWithSession, this.authClient);
230
- return true;
231
- }
232
- catch {
233
- return false;
234
- }
235
- };
236
- /**
237
- * Removes authentication factors from an end user.
238
- *
239
- * This function allows selectively removing:
240
- * - Phone number
241
- * - Email
242
- * - Authenticators (by ID)
243
- * - OAuth providers (by ID)
244
- * - API keys (by ID)
245
- *
246
- * All removal operations are executed in parallel if multiple
247
- * parameters are provided.
248
- *
249
- * @param params - A structured object containing all the removal parameters
250
- * @param params.userId - Unique identifier of the user
251
- * @param params.phoneNumber - true to remove the phone number
252
- * @param params.email - true to remove the email
253
- * @param params.authenticatorIds - Array of authenticator IDs to remove
254
- * @param params.oauthProviderIds - Array of OAuth provider IDs to remove
255
- * @param params.apiKeyIds - Array of API key IDs to remove
256
- * @returns A promise that resolves to an array of results from each removal operation
257
- */
258
- this.deleteUserAuth = async (params) => {
259
168
  try {
260
- const { userId, phoneNumber, email, authenticatorIds, oauthProviderIds, apiKeyIds, } = params;
261
- const promises = [];
262
- if (phoneNumber) {
263
- promises.push(this.updateUser({ userId, userPhoneNumber: "", userTagIds: [] }));
264
- }
265
- if (email) {
266
- promises.push(this.updateUser({ userId, userEmail: "", userTagIds: [] }));
267
- }
268
- if (authenticatorIds && authenticatorIds.length > 0) {
269
- promises.push(this.deleteAuthenticators({ userId, authenticatorIds }));
270
- }
271
- if (oauthProviderIds && oauthProviderIds.length > 0) {
272
- promises.push(this.deleteOauthProviders({ userId, providerIds: oauthProviderIds }));
169
+ const session = await storage.getStorageValue(storage.StorageKeys.Session);
170
+ if (session?.userId && session?.organizationId) {
171
+ return {
172
+ userId: session.userId,
173
+ organization: {
174
+ organizationId: session.organizationId,
175
+ organizationName: "",
176
+ },
177
+ session: {
178
+ ...(session.sessionType === base.SessionType.READ_ONLY && {
179
+ read: {
180
+ token: session.token,
181
+ expiry: session.expiry,
182
+ },
183
+ }),
184
+ ...(session.sessionType === base.SessionType.READ_WRITE && {
185
+ write: {
186
+ credentialBundle: session.token,
187
+ expiry: session.expiry,
188
+ },
189
+ }),
190
+ },
191
+ };
273
192
  }
274
- if (apiKeyIds && apiKeyIds.length > 0) {
275
- promises.push(this.deleteApiKeys({ userId, apiKeyIds }));
193
+ else {
194
+ return undefined;
276
195
  }
277
- // Execute all removal operations in parallel
278
- return await Promise.all(promises);
279
196
  }
280
197
  catch (error) {
281
- // Surface error
282
- throw error;
198
+ return;
283
199
  }
284
200
  };
285
201
  /**
286
- * Adds or updates authentication factors for an end user.
287
- *
288
- * This function allows selectively adding:
289
- * - Phone number
290
- * - Email
291
- * - Authenticators
292
- * - OAuth providers
293
- * - API keys
202
+ * Clears out all data pertaining to an end user session.
294
203
  *
295
- * All additions/updates are executed in parallel if multiple
296
- * parameters are provided.
297
- *
298
- * @param params - A structured object containing all the addition/update parameters
299
- * @param params.userId - Unique identifier of the user
300
- * @param params.phoneNumber - New phone number for the user
301
- * @param params.email - New email address for the user
302
- * @param params.authenticators - Array of authenticator objects to create
303
- * @param params.oauthProviders - Array of OAuth provider objects to create
304
- * @param params.apiKeys - Array of API key objects to create
305
- * @returns A promise that resolves to an array of results from each addition or update
204
+ * @returns {Promise<boolean>}
306
205
  */
307
- this.addUserAuth = async (params) => {
308
- try {
309
- const { userId, phoneNumber, email, authenticators, oauthProviders, apiKeys, } = params;
310
- const promises = [];
311
- if (phoneNumber) {
312
- promises.push(this.updateUser({
313
- userId,
314
- userPhoneNumber: phoneNumber,
315
- userTagIds: [],
316
- }));
317
- }
318
- if (email) {
319
- promises.push(this.updateUser({ userId, userEmail: email, userTagIds: [] }));
320
- }
321
- if (authenticators && authenticators.length > 0) {
322
- promises.push(this.createAuthenticators({ userId, authenticators }));
323
- }
324
- if (oauthProviders && oauthProviders.length > 0) {
325
- promises.push(this.createOauthProviders({ userId, oauthProviders }));
326
- }
327
- if (apiKeys && apiKeys.length > 0) {
328
- promises.push(this.createApiKeys({ userId, apiKeys }));
329
- }
330
- // Execute all additions/updates operations in parallel
331
- return await Promise.all(promises);
332
- }
333
- catch (error) {
334
- // Surface error
335
- throw error;
336
- }
337
- };
338
- this.authClient = authClient;
339
- }
340
- /**
341
- * Comprehensive authentication update for an end user.
342
- * Combines add/update and delete operations into a single call.
343
- *
344
- * The behavior is driven by whether values are set to:
345
- * - A string/array (to create or update)
346
- * - `null` or an array of IDs (to remove)
347
- *
348
- * All operations are executed in parallel where applicable.
349
- *
350
- * @param params - A structured object containing all the update parameters
351
- * @param params.userId - Unique identifier of the user
352
- * @param params.phoneNumber - String to set (new phone) or `null` to remove
353
- * @param params.email - String to set (new email) or `null` to remove
354
- * @param params.authenticators - Object describing authenticators to add or remove
355
- * @param params.oauthProviders - Object describing OAuth providers to add or remove
356
- * @param params.apiKeys - Object describing API keys to add or remove
357
- *
358
- * @returns A promise that resolves to a boolean indicating overall success
359
- */
360
- async updateUserAuth(params) {
361
- try {
362
- const { userId, phoneNumber, email, authenticators, oauthProviders, apiKeys, } = params;
363
- const promises = [];
364
- // Handle phone/email in a single updateUser call if both are changing,
365
- // or separate calls if only one is changing.
366
- const userUpdates = {};
367
- if (phoneNumber !== undefined) {
368
- userUpdates.userPhoneNumber = phoneNumber === null ? "" : phoneNumber;
369
- }
370
- if (email !== undefined) {
371
- userUpdates.userEmail = email === null ? "" : email;
372
- }
373
- if (Object.keys(userUpdates).length > 0) {
374
- promises.push(this.updateUser({ userId, ...userUpdates, userTagIds: [] }));
375
- }
376
- // Handle authenticators
377
- if (authenticators) {
378
- if (authenticators.add?.length) {
379
- promises.push(this.createAuthenticators({
380
- userId,
381
- authenticators: authenticators.add,
382
- }));
383
- }
384
- if (authenticators.deleteIds?.length) {
385
- promises.push(this.deleteAuthenticators({
386
- userId,
387
- authenticatorIds: authenticators.deleteIds,
388
- }));
389
- }
390
- }
391
- // Handle OAuth providers
392
- if (oauthProviders) {
393
- if (oauthProviders.add?.length) {
394
- promises.push(this.createOauthProviders({
395
- userId,
396
- oauthProviders: oauthProviders.add,
397
- }));
398
- }
399
- if (oauthProviders.deleteIds?.length) {
400
- promises.push(this.deleteOauthProviders({
401
- userId,
402
- providerIds: oauthProviders.deleteIds,
403
- }));
404
- }
405
- }
406
- // Handle API keys
407
- if (apiKeys) {
408
- if (apiKeys.add?.length) {
409
- promises.push(this.createApiKeys({
410
- userId,
411
- apiKeys: apiKeys.add,
412
- }));
413
- }
414
- if (apiKeys.deleteIds?.length) {
415
- promises.push(this.deleteApiKeys({
416
- userId,
417
- apiKeyIds: apiKeys.deleteIds,
418
- }));
419
- }
420
- }
421
- // Execute all requested operations in parallel
422
- await Promise.all(promises);
206
+ this.logout = async () => {
207
+ await storage.removeStorageValue(storage.StorageKeys.AuthBundle); // DEPRECATED
208
+ await storage.removeStorageValue(storage.StorageKeys.CurrentUser);
209
+ await storage.removeStorageValue(storage.StorageKeys.UserSession);
210
+ await storage.removeStorageValue(storage.StorageKeys.ReadWriteSession);
211
+ await storage.removeStorageValue(storage.StorageKeys.Client);
212
+ await storage.removeStorageValue(storage.StorageKeys.Session);
423
213
  return true;
424
- }
425
- catch (error) {
426
- // Surface error
427
- throw error;
428
- }
429
- }
430
- }
431
- class TurnkeyPasskeyClient extends TurnkeyBrowserClient {
432
- constructor(config) {
433
- super(config, base.AuthClient.Passkey);
434
- /**
435
- * Create a passkey for an end-user, taking care of various lower-level details.
436
- *
437
- * @returns {Promise<Passkey>}
438
- */
439
- this.createUserPasskey = async (config = {}) => {
440
- const challenge = utils.generateRandomBuffer();
441
- const encodedChallenge = utils.base64UrlEncode(challenge);
442
- const authenticatorUserId = utils.generateRandomBuffer();
443
- // WebAuthn credential options options can be found here:
444
- // https://www.w3.org/TR/webauthn-2/#sctn-sample-registration
445
- //
446
- // All pubkey algorithms can be found here: https://www.iana.org/assignments/cose/cose.xhtml#algorithms
447
- // Turnkey only supports ES256 (-7) and RS256 (-257)
448
- //
449
- // The pubkey type only supports one value, "public-key"
450
- // See https://www.w3.org/TR/webauthn-2/#enumdef-publickeycredentialtype for more details
451
- // TODO: consider un-nesting these config params
452
- const webauthnConfig = {
453
- publicKey: {
454
- rp: {
455
- id: config.publicKey?.rp?.id ?? this.rpId,
456
- name: config.publicKey?.rp?.name ?? "",
457
- },
458
- challenge: config.publicKey?.challenge ?? challenge,
459
- pubKeyCredParams: config.publicKey?.pubKeyCredParams ?? [
460
- {
461
- type: "public-key",
462
- alg: -7,
463
- },
464
- {
465
- type: "public-key",
466
- alg: -257,
467
- },
468
- ],
469
- user: {
470
- id: config.publicKey?.user?.id ?? authenticatorUserId,
471
- name: config.publicKey?.user?.name ?? "Default User",
472
- displayName: config.publicKey?.user?.displayName ?? "Default User",
473
- },
474
- authenticatorSelection: {
475
- authenticatorAttachment: config.publicKey?.authenticatorSelection?.authenticatorAttachment ??
476
- undefined,
477
- requireResidentKey: config.publicKey?.authenticatorSelection?.requireResidentKey ??
478
- true,
479
- residentKey: config.publicKey?.authenticatorSelection?.residentKey ?? "required",
480
- userVerification: config.publicKey?.authenticatorSelection?.userVerification ??
481
- "preferred",
482
- },
483
- },
484
- };
485
- const attestation = await http.getWebAuthnAttestation(webauthnConfig);
486
- return {
487
- encodedChallenge: config.publicKey?.challenge
488
- ? utils.base64UrlEncode(config.publicKey?.challenge)
489
- : encodedChallenge,
490
- attestation,
491
- };
492
- };
493
- /**
494
- * Uses passkey authentication to create a read-write session, via an embedded API key,
495
- * and stores + returns the resulting auth bundle that contains the encrypted API key.
496
- * This auth bundle (also referred to as a credential bundle) can be injected into an `iframeStamper`,
497
- * resulting in a touch-free authenticator. Unlike `loginWithReadWriteSession`, this method
498
- * assumes the end-user's organization ID (i.e. the sub-organization ID) is already known.
499
- *
500
- * @param userId
501
- * @param targetEmbeddedKey
502
- * @param expirationSeconds
503
- * @param curveType
504
- * @returns {Promise<ReadWriteSession>}
505
- */
506
- this.createPasskeySession = async (userId, targetEmbeddedKey, expirationSeconds = DEFAULT_SESSION_EXPIRATION, organizationId) => {
507
- const user = await storage.getStorageValue(storage.StorageKeys.UserSession);
508
- organizationId = organizationId ?? user?.organization.organizationId;
509
- if (!organizationId) {
510
- throw new Error("Error creating passkey session: Organization ID is required");
511
- }
512
- userId = userId ?? user?.userId;
513
- const { authBundle: credentialBundle, publicKey } = await utils.createEmbeddedAPIKey(targetEmbeddedKey);
514
- // add API key to Turnkey User
515
- await this.createApiKeys({
516
- organizationId,
517
- userId,
518
- apiKeys: [
519
- {
520
- apiKeyName: `Session Key ${String(Date.now())}`,
521
- publicKey,
522
- expirationSeconds,
523
- curveType: "API_KEY_CURVE_P256",
524
- },
525
- ],
526
- });
527
- const expiry = Date.now() + Number(expirationSeconds) * 1000;
528
- await storage.saveSession({
529
- organizationId,
530
- organizationName: user?.organization.organizationName ?? "",
531
- userId,
532
- username: user?.username ?? "",
533
- credentialBundle,
534
- sessionExpiry: expiry,
535
- }, this.authClient);
536
- return {
537
- credentialBundle,
538
- expiry,
539
- };
540
- };
541
- this.rpId = this.stamper.rpId;
542
- }
543
- }
544
- class TurnkeyIframeClient extends TurnkeyBrowserClient {
545
- constructor(config) {
546
- super(config, base.AuthClient.Iframe);
547
- this.injectCredentialBundle = async (credentialBundle) => {
548
- return await this.stamper.injectCredentialBundle(credentialBundle);
549
- };
550
- this.injectWalletExportBundle = async (credentialBundle, organizationId) => {
551
- return await this.stamper.injectWalletExportBundle(credentialBundle, organizationId);
552
- };
553
- this.injectKeyExportBundle = async (credentialBundle, organizationId, keyFormat) => {
554
- return await this.stamper.injectKeyExportBundle(credentialBundle, organizationId, keyFormat);
555
- };
556
- this.injectImportBundle = async (bundle, organizationId, userId) => {
557
- return await this.stamper.injectImportBundle(bundle, organizationId, userId);
558
- };
559
- this.extractWalletEncryptedBundle = async () => {
560
- return await this.stamper.extractWalletEncryptedBundle();
561
214
  };
562
- this.extractKeyEncryptedBundle = async () => {
563
- return await this.stamper.extractKeyEncryptedBundle();
564
- };
565
- this.iframePublicKey = this.stamper.iframePublicKey;
566
- }
567
- }
568
- class TurnkeyWalletClient extends TurnkeyBrowserClient {
569
- constructor(config) {
570
- super(config, base.AuthClient.Wallet);
571
- this.wallet = config.wallet;
572
- }
573
- async getPublicKey() {
574
- return this.wallet.getPublicKey();
575
- }
576
- getWalletInterface() {
577
- return this.wallet;
215
+ this.config = config;
578
216
  }
579
217
  }
580
218
 
581
- exports.TurnkeyBrowserClient = TurnkeyBrowserClient;
219
+ exports.TurnkeyBrowserClient = browserClients.TurnkeyBrowserClient;
220
+ exports.TurnkeyIframeClient = browserClients.TurnkeyIframeClient;
221
+ exports.TurnkeyPasskeyClient = browserClients.TurnkeyPasskeyClient;
222
+ exports.TurnkeyWalletClient = browserClients.TurnkeyWalletClient;
582
223
  exports.TurnkeyBrowserSDK = TurnkeyBrowserSDK;
583
- exports.TurnkeyIframeClient = TurnkeyIframeClient;
584
- exports.TurnkeyPasskeyClient = TurnkeyPasskeyClient;
585
- exports.TurnkeyWalletClient = TurnkeyWalletClient;
586
224
  //# sourceMappingURL=sdk-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-client.js","sources":["../src/sdk-client.ts"],"sourcesContent":[null],"names":["WindowWrapper","WebauthnStamper","IframeStamper","WalletStamper","VERSION","TurnkeyRequestError","getStorageValue","StorageKeys","removeStorageValue","TurnkeySDKClientBase","saveSession","AuthClient","generateRandomBuffer","base64UrlEncode","getWebAuthnAttestation","createEmbeddedAPIKey"],"mappings":"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"}
1
+ {"version":3,"file":"sdk-client.js","sources":["../src/sdk-client.ts"],"sourcesContent":[null],"names":["WindowWrapper","WebauthnStamper","TurnkeyPasskeyClient","IframeStamper","TurnkeyIframeClient","TurnkeyWalletClient","WalletStamper","VERSION","TurnkeyRequestError","TurnkeyBrowserClient","getStorageValue","StorageKeys","removeStorageValue","SessionType"],"mappings":"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"}