@turnkey/sdk-browser 1.9.0 → 1.10.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/CHANGELOG.md +37 -0
- package/README.md +82 -14
- package/dist/__generated__/sdk-client-base.js +52 -52
- package/dist/__generated__/sdk-client-base.mjs +52 -52
- package/dist/__generated__/version.d.ts +1 -1
- package/dist/__generated__/version.d.ts.map +1 -1
- package/dist/__generated__/version.js +1 -1
- package/dist/__generated__/version.mjs +1 -1
- package/dist/__types__/base.d.ts +18 -0
- package/dist/__types__/base.d.ts.map +1 -1
- package/dist/__types__/base.js +9 -0
- package/dist/__types__/base.js.map +1 -1
- package/dist/__types__/base.mjs +10 -1
- package/dist/__types__/base.mjs.map +1 -1
- package/dist/index.d.ts +9 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -1
- package/dist/index.mjs.map +1 -1
- package/dist/models.d.ts +45 -6
- package/dist/models.d.ts.map +1 -1
- package/dist/sdk-client.d.ts +21 -4
- package/dist/sdk-client.d.ts.map +1 -1
- package/dist/sdk-client.js +75 -43
- package/dist/sdk-client.js.map +1 -1
- package/dist/sdk-client.mjs +77 -46
- package/dist/sdk-client.mjs.map +1 -1
- package/dist/storage.d.ts +12 -0
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +43 -0
- package/dist/storage.js.map +1 -1
- package/dist/storage.mjs +43 -1
- package/dist/storage.mjs.map +1 -1
- package/package.json +4 -3
package/dist/sdk-client.mjs
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { WebauthnStamper } from '@turnkey/webauthn-stamper';
|
|
2
2
|
import { IframeStamper } from '@turnkey/iframe-stamper';
|
|
3
3
|
import { getWebAuthnAttestation } from '@turnkey/http';
|
|
4
|
+
import { WalletStamper } from '@turnkey/wallet-stamper';
|
|
4
5
|
import { VERSION } from './__generated__/version.mjs';
|
|
5
6
|
import WindowWrapper from './__polyfills__/window.mjs';
|
|
6
|
-
import { TurnkeyRequestError } from './__types__/base.mjs';
|
|
7
|
+
import { TurnkeyRequestError, AuthClient } from './__types__/base.mjs';
|
|
7
8
|
import { TurnkeySDKClientBase } from './__generated__/sdk-client-base.mjs';
|
|
8
|
-
import { getStorageValue, StorageKeys, removeStorageValue,
|
|
9
|
+
import { getStorageValue, StorageKeys, removeStorageValue, saveSession } from './storage.mjs';
|
|
9
10
|
import { generateRandomBuffer, base64UrlEncode, createEmbeddedAPIKey } from './utils.mjs';
|
|
10
11
|
|
|
11
12
|
const DEFAULT_SESSION_EXPIRATION = "900"; // default to 15 minutes
|
|
@@ -53,6 +54,14 @@ class TurnkeyBrowserSDK {
|
|
|
53
54
|
organizationId: this.config.defaultOrganizationId,
|
|
54
55
|
});
|
|
55
56
|
};
|
|
57
|
+
this.walletClient = (wallet) => {
|
|
58
|
+
return new TurnkeyWalletClient({
|
|
59
|
+
stamper: new WalletStamper(wallet),
|
|
60
|
+
wallet,
|
|
61
|
+
apiBaseUrl: this.config.apiBaseUrl,
|
|
62
|
+
organizationId: this.config.defaultOrganizationId,
|
|
63
|
+
});
|
|
64
|
+
};
|
|
56
65
|
this.serverSign = async (methodName, params, serverSignUrl) => {
|
|
57
66
|
const targetServerSignUrl = serverSignUrl ?? this.config.serverSignUrl;
|
|
58
67
|
if (!targetServerSignUrl) {
|
|
@@ -91,12 +100,12 @@ class TurnkeyBrowserSDK {
|
|
|
91
100
|
*/
|
|
92
101
|
this.currentUserSession = async () => {
|
|
93
102
|
const currentUser = await this.getCurrentUser();
|
|
94
|
-
if (!currentUser?.
|
|
103
|
+
if (!currentUser?.session?.read) {
|
|
95
104
|
return;
|
|
96
105
|
}
|
|
97
|
-
if (currentUser?.
|
|
106
|
+
if (currentUser?.session?.read?.expiry > Date.now()) {
|
|
98
107
|
return new TurnkeyBrowserClient({
|
|
99
|
-
readOnlySession: currentUser?.
|
|
108
|
+
readOnlySession: currentUser?.session?.read?.token,
|
|
100
109
|
apiBaseUrl: this.config.apiBaseUrl,
|
|
101
110
|
organizationId: currentUser?.organization?.organizationId ??
|
|
102
111
|
this.config.defaultOrganizationId,
|
|
@@ -113,10 +122,10 @@ class TurnkeyBrowserSDK {
|
|
|
113
122
|
* @returns {Promise<ReadWriteSession | undefined>}
|
|
114
123
|
*/
|
|
115
124
|
this.getReadWriteSession = async () => {
|
|
116
|
-
const
|
|
117
|
-
if (
|
|
118
|
-
if (
|
|
119
|
-
return
|
|
125
|
+
const currentUser = await getStorageValue(StorageKeys.UserSession);
|
|
126
|
+
if (currentUser?.session?.write) {
|
|
127
|
+
if (currentUser.session.write.expiry > Date.now()) {
|
|
128
|
+
return currentUser.session.write;
|
|
120
129
|
}
|
|
121
130
|
else {
|
|
122
131
|
await removeStorageValue(StorageKeys.ReadWriteSession);
|
|
@@ -125,12 +134,14 @@ class TurnkeyBrowserSDK {
|
|
|
125
134
|
return;
|
|
126
135
|
};
|
|
127
136
|
/**
|
|
137
|
+
* @deprecated This method is deprecated and will be removed in future versions.
|
|
138
|
+
* It has been replaced by the `getReadWriteSession` method.
|
|
128
139
|
* Fetches an auth bundle stored in local storage.
|
|
129
140
|
*
|
|
130
141
|
* @returns {Promise<string | undefined>}
|
|
131
142
|
*/
|
|
132
143
|
this.getAuthBundle = async () => {
|
|
133
|
-
return await getStorageValue(StorageKeys.AuthBundle);
|
|
144
|
+
return await getStorageValue(StorageKeys.AuthBundle);
|
|
134
145
|
};
|
|
135
146
|
/**
|
|
136
147
|
* Fetches the current user's organization details.
|
|
@@ -147,7 +158,7 @@ class TurnkeyBrowserSDK {
|
|
|
147
158
|
* @returns {Promise<User | undefined>}
|
|
148
159
|
*/
|
|
149
160
|
this.getCurrentUser = async () => {
|
|
150
|
-
return await getStorageValue(StorageKeys.
|
|
161
|
+
return await getStorageValue(StorageKeys.UserSession);
|
|
151
162
|
};
|
|
152
163
|
/**
|
|
153
164
|
* Clears out all data pertaining to a user session.
|
|
@@ -157,6 +168,7 @@ class TurnkeyBrowserSDK {
|
|
|
157
168
|
this.logoutUser = async () => {
|
|
158
169
|
await removeStorageValue(StorageKeys.AuthBundle); // DEPRECATED
|
|
159
170
|
await removeStorageValue(StorageKeys.CurrentUser);
|
|
171
|
+
await removeStorageValue(StorageKeys.UserSession);
|
|
160
172
|
await removeStorageValue(StorageKeys.ReadWriteSession);
|
|
161
173
|
return true;
|
|
162
174
|
};
|
|
@@ -164,28 +176,17 @@ class TurnkeyBrowserSDK {
|
|
|
164
176
|
}
|
|
165
177
|
}
|
|
166
178
|
class TurnkeyBrowserClient extends TurnkeySDKClientBase {
|
|
167
|
-
constructor(config) {
|
|
179
|
+
constructor(config, authClient) {
|
|
168
180
|
super(config);
|
|
169
181
|
this.login = async (config) => {
|
|
170
182
|
const readOnlySessionResult = await this.createReadOnlySession(config || {});
|
|
171
|
-
|
|
172
|
-
organizationId: readOnlySessionResult.organizationId,
|
|
173
|
-
organizationName: readOnlySessionResult.organizationName,
|
|
174
|
-
};
|
|
175
|
-
const currentUser = {
|
|
176
|
-
userId: readOnlySessionResult.userId,
|
|
177
|
-
username: readOnlySessionResult.username,
|
|
178
|
-
organization: org,
|
|
179
|
-
readOnlySession: {
|
|
180
|
-
session: readOnlySessionResult.session,
|
|
181
|
-
sessionExpiry: Number(readOnlySessionResult.sessionExpiry),
|
|
182
|
-
},
|
|
183
|
-
};
|
|
184
|
-
await setStorageValue(StorageKeys.CurrentUser, currentUser);
|
|
183
|
+
await saveSession(readOnlySessionResult, this.authClient);
|
|
185
184
|
return readOnlySessionResult;
|
|
186
185
|
};
|
|
187
186
|
/**
|
|
188
|
-
* Creates a read-write session. This method infers the current user's organization ID and target userId.
|
|
187
|
+
* Creates a read-write session. This method infers the current user's organization ID and target userId.
|
|
188
|
+
* To be used in conjunction with an `iframeStamper`: the resulting session's credential bundle can be
|
|
189
|
+
* injected into an iframeStamper to create a session that enables both read and write requests.
|
|
189
190
|
*
|
|
190
191
|
* @param email
|
|
191
192
|
* @param targetEmbeddedKey
|
|
@@ -198,18 +199,22 @@ class TurnkeyBrowserClient extends TurnkeySDKClientBase {
|
|
|
198
199
|
expirationSeconds,
|
|
199
200
|
userId: userId,
|
|
200
201
|
});
|
|
201
|
-
//
|
|
202
|
-
|
|
203
|
-
|
|
202
|
+
// Ensure session and sessionExpiry are included in the object
|
|
203
|
+
const readWriteSessionResultWithSession = {
|
|
204
|
+
...readWriteSessionResult,
|
|
205
|
+
session: readWriteSessionResult.credentialBundle,
|
|
204
206
|
sessionExpiry: Date.now() + Number(expirationSeconds) * 1000,
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
+
};
|
|
208
|
+
// store auth bundle in local storage
|
|
209
|
+
await saveSession(readWriteSessionResultWithSession, this.authClient);
|
|
210
|
+
return readWriteSessionResultWithSession;
|
|
207
211
|
};
|
|
212
|
+
this.authClient = authClient;
|
|
208
213
|
}
|
|
209
214
|
}
|
|
210
215
|
class TurnkeyPasskeyClient extends TurnkeyBrowserClient {
|
|
211
216
|
constructor(config) {
|
|
212
|
-
super(config);
|
|
217
|
+
super(config, AuthClient.Passkey);
|
|
213
218
|
/**
|
|
214
219
|
* Create a passkey for an end-user, taking care of various lower-level details.
|
|
215
220
|
*
|
|
@@ -270,7 +275,11 @@ class TurnkeyPasskeyClient extends TurnkeyBrowserClient {
|
|
|
270
275
|
};
|
|
271
276
|
};
|
|
272
277
|
/**
|
|
273
|
-
* Uses passkey authentication to create a read-write session, via an embedded API key,
|
|
278
|
+
* Uses passkey authentication to create a read-write session, via an embedded API key,
|
|
279
|
+
* and stores + returns the resulting auth bundle that contains the encrypted API key.
|
|
280
|
+
* This auth bundle (also referred to as a credential bundle) can be injected into an `iframeStamper`,
|
|
281
|
+
* resulting in a touch-free authenticator. Unlike `loginWithReadWriteSession`, this method
|
|
282
|
+
* assumes the end-user's organization ID (i.e. the sub-organization ID) is already known.
|
|
274
283
|
*
|
|
275
284
|
* @param userId
|
|
276
285
|
* @param targetEmbeddedKey
|
|
@@ -279,12 +288,16 @@ class TurnkeyPasskeyClient extends TurnkeyBrowserClient {
|
|
|
279
288
|
* @returns {Promise<ReadWriteSession>}
|
|
280
289
|
*/
|
|
281
290
|
this.createPasskeySession = async (userId, targetEmbeddedKey, expirationSeconds = DEFAULT_SESSION_EXPIRATION, organizationId) => {
|
|
282
|
-
const
|
|
283
|
-
|
|
284
|
-
|
|
291
|
+
const user = await getStorageValue(StorageKeys.UserSession);
|
|
292
|
+
organizationId = organizationId ?? user?.organization.organizationId;
|
|
293
|
+
if (!organizationId) {
|
|
294
|
+
throw new Error("Error creating passkey session: Organization ID is required");
|
|
295
|
+
}
|
|
296
|
+
userId = userId ?? user?.userId;
|
|
297
|
+
const { authBundle: credentialBundle, publicKey } = await createEmbeddedAPIKey(targetEmbeddedKey);
|
|
285
298
|
// add API key to Turnkey User
|
|
286
299
|
await this.createApiKeys({
|
|
287
|
-
organizationId
|
|
300
|
+
organizationId,
|
|
288
301
|
userId,
|
|
289
302
|
apiKeys: [
|
|
290
303
|
{
|
|
@@ -295,20 +308,26 @@ class TurnkeyPasskeyClient extends TurnkeyBrowserClient {
|
|
|
295
308
|
},
|
|
296
309
|
],
|
|
297
310
|
});
|
|
298
|
-
const
|
|
299
|
-
|
|
300
|
-
|
|
311
|
+
const expiry = Date.now() + Number(expirationSeconds) * 1000;
|
|
312
|
+
await saveSession({
|
|
313
|
+
organizationId,
|
|
314
|
+
organizationName: user?.organization.organizationName ?? "",
|
|
315
|
+
userId,
|
|
316
|
+
username: user?.username ?? "",
|
|
317
|
+
credentialBundle,
|
|
318
|
+
sessionExpiry: expiry,
|
|
319
|
+
}, this.authClient);
|
|
320
|
+
return {
|
|
321
|
+
credentialBundle,
|
|
322
|
+
expiry,
|
|
301
323
|
};
|
|
302
|
-
// store auth bundle in local storage
|
|
303
|
-
await setStorageValue(StorageKeys.ReadWriteSession, readWriteSession);
|
|
304
|
-
return readWriteSession;
|
|
305
324
|
};
|
|
306
325
|
this.rpId = config.stamper.rpId;
|
|
307
326
|
}
|
|
308
327
|
}
|
|
309
328
|
class TurnkeyIframeClient extends TurnkeyBrowserClient {
|
|
310
329
|
constructor(config) {
|
|
311
|
-
super(config);
|
|
330
|
+
super(config, AuthClient.Iframe);
|
|
312
331
|
this.injectCredentialBundle = async (credentialBundle) => {
|
|
313
332
|
const stamper = this.config.stamper;
|
|
314
333
|
return await stamper.injectCredentialBundle(credentialBundle);
|
|
@@ -336,6 +355,18 @@ class TurnkeyIframeClient extends TurnkeyBrowserClient {
|
|
|
336
355
|
this.iframePublicKey = config.stamper.iframePublicKey;
|
|
337
356
|
}
|
|
338
357
|
}
|
|
358
|
+
class TurnkeyWalletClient extends TurnkeyBrowserClient {
|
|
359
|
+
constructor(config) {
|
|
360
|
+
super(config, AuthClient.Wallet);
|
|
361
|
+
this.wallet = config.wallet;
|
|
362
|
+
}
|
|
363
|
+
async getPublicKey() {
|
|
364
|
+
return this.wallet.getPublicKey();
|
|
365
|
+
}
|
|
366
|
+
getWalletInterface() {
|
|
367
|
+
return this.wallet;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
339
370
|
|
|
340
|
-
export { TurnkeyBrowserClient, TurnkeyBrowserSDK, TurnkeyIframeClient, TurnkeyPasskeyClient };
|
|
371
|
+
export { TurnkeyBrowserClient, TurnkeyBrowserSDK, TurnkeyIframeClient, TurnkeyPasskeyClient, TurnkeyWalletClient };
|
|
341
372
|
//# sourceMappingURL=sdk-client.mjs.map
|
package/dist/sdk-client.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-client.mjs","sources":["../src/sdk-client.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sdk-client.mjs","sources":["../src/sdk-client.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/dist/storage.d.ts
CHANGED
|
@@ -1,16 +1,28 @@
|
|
|
1
1
|
import type { User, ReadWriteSession } from "./models";
|
|
2
|
+
import type { AuthClient, TSessionResponse } from "./__types__/base";
|
|
2
3
|
export declare enum StorageKeys {
|
|
3
4
|
AuthBundle = "@turnkey/auth_bundle",
|
|
4
5
|
CurrentUser = "@turnkey/current_user",
|
|
6
|
+
UserSession = "@turnkey/session/v1",
|
|
5
7
|
ReadWriteSession = "@turnkey/read_write_session"
|
|
6
8
|
}
|
|
7
9
|
interface StorageValue {
|
|
8
10
|
[StorageKeys.AuthBundle]: string;
|
|
9
11
|
[StorageKeys.CurrentUser]: User;
|
|
12
|
+
[StorageKeys.UserSession]: User;
|
|
10
13
|
[StorageKeys.ReadWriteSession]: ReadWriteSession;
|
|
11
14
|
}
|
|
12
15
|
export declare const getStorageValue: <K extends StorageKeys>(storageKey: K) => Promise<StorageValue[K] | undefined>;
|
|
13
16
|
export declare const setStorageValue: <K extends StorageKeys>(storageKey: K, storageValue: StorageValue[K]) => Promise<any>;
|
|
14
17
|
export declare const removeStorageValue: <K extends StorageKeys>(storageKey: K) => Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Saves a user session to storage.
|
|
20
|
+
*
|
|
21
|
+
* @param {TSessionResponse} sessionResponse - The session response containing session details.
|
|
22
|
+
* @param {AuthClient} authClient - The authentication client used for the session.
|
|
23
|
+
* @throws Will throw an error if the authentication client is not set.
|
|
24
|
+
* @returns {Promise<void>} A promise that resolves when the session is saved.
|
|
25
|
+
*/
|
|
26
|
+
export declare const saveSession: ({ organizationId, organizationName, sessionExpiry, credentialBundle, userId, username, ...sessionResponse }: TSessionResponse, authClient?: AuthClient) => Promise<void>;
|
|
15
27
|
export {};
|
|
16
28
|
//# sourceMappingURL=storage.d.ts.map
|
package/dist/storage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEvD,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAErE,oBAAY,WAAW;IACrB,UAAU,yBAAyB;IACnC,WAAW,0BAA0B;IACrC,WAAW,wBAAwB;IACnC,gBAAgB,gCAAgC;CACjD;AAED,UAAU,YAAY;IACpB,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IACjC,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;IAChC,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;IAChC,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CAClD;AAqBD,eAAO,MAAM,eAAe,gFAO3B,CAAC;AAEF,eAAO,MAAM,eAAe,2EAGzB,QAAQ,GAAG,CAIb,CAAC;AAEF,eAAO,MAAM,kBAAkB,4CAE5B,QAAQ,IAAI,CAId,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,gHASnB,gBAAgB,eACN,UAAU,KACtB,QAAQ,IAAI,CAkCd,CAAC"}
|
package/dist/storage.js
CHANGED
|
@@ -6,6 +6,7 @@ exports.StorageKeys = void 0;
|
|
|
6
6
|
(function (StorageKeys) {
|
|
7
7
|
StorageKeys["AuthBundle"] = "@turnkey/auth_bundle";
|
|
8
8
|
StorageKeys["CurrentUser"] = "@turnkey/current_user";
|
|
9
|
+
StorageKeys["UserSession"] = "@turnkey/session/v1";
|
|
9
10
|
StorageKeys["ReadWriteSession"] = "@turnkey/read_write_session";
|
|
10
11
|
})(exports.StorageKeys || (exports.StorageKeys = {}));
|
|
11
12
|
var StorageLocation;
|
|
@@ -18,6 +19,7 @@ const STORAGE_VALUE_LOCATIONS = {
|
|
|
18
19
|
[exports.StorageKeys.AuthBundle]: StorageLocation.Secure,
|
|
19
20
|
[exports.StorageKeys.CurrentUser]: StorageLocation.Local,
|
|
20
21
|
[exports.StorageKeys.ReadWriteSession]: StorageLocation.Secure,
|
|
22
|
+
[exports.StorageKeys.UserSession]: StorageLocation.Session,
|
|
21
23
|
};
|
|
22
24
|
const STORAGE_LOCATIONS = {
|
|
23
25
|
[StorageLocation.Local]: window.localStorage,
|
|
@@ -40,8 +42,49 @@ const removeStorageValue = async (storageKey) => {
|
|
|
40
42
|
const browserStorageLocation = STORAGE_LOCATIONS[storageLocation];
|
|
41
43
|
browserStorageLocation.removeItem(storageKey);
|
|
42
44
|
};
|
|
45
|
+
/**
|
|
46
|
+
* Saves a user session to storage.
|
|
47
|
+
*
|
|
48
|
+
* @param {TSessionResponse} sessionResponse - The session response containing session details.
|
|
49
|
+
* @param {AuthClient} authClient - The authentication client used for the session.
|
|
50
|
+
* @throws Will throw an error if the authentication client is not set.
|
|
51
|
+
* @returns {Promise<void>} A promise that resolves when the session is saved.
|
|
52
|
+
*/
|
|
53
|
+
const saveSession = async ({ organizationId, organizationName, sessionExpiry, credentialBundle, userId, username, ...sessionResponse }, authClient) => {
|
|
54
|
+
if (!authClient) {
|
|
55
|
+
throw new Error("Failed to save session: Authentication client not set");
|
|
56
|
+
}
|
|
57
|
+
const expiry = Number(sessionExpiry);
|
|
58
|
+
const session = credentialBundle
|
|
59
|
+
? {
|
|
60
|
+
write: {
|
|
61
|
+
credentialBundle,
|
|
62
|
+
expiry,
|
|
63
|
+
},
|
|
64
|
+
}
|
|
65
|
+
: {
|
|
66
|
+
read: {
|
|
67
|
+
token: sessionResponse.session,
|
|
68
|
+
expiry,
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
const userSession = {
|
|
72
|
+
userId,
|
|
73
|
+
username,
|
|
74
|
+
organization: {
|
|
75
|
+
organizationId,
|
|
76
|
+
organizationName,
|
|
77
|
+
},
|
|
78
|
+
session: {
|
|
79
|
+
authClient,
|
|
80
|
+
...session,
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
await setStorageValue(exports.StorageKeys.UserSession, userSession);
|
|
84
|
+
};
|
|
43
85
|
|
|
44
86
|
exports.getStorageValue = getStorageValue;
|
|
45
87
|
exports.removeStorageValue = removeStorageValue;
|
|
88
|
+
exports.saveSession = saveSession;
|
|
46
89
|
exports.setStorageValue = setStorageValue;
|
|
47
90
|
//# sourceMappingURL=storage.js.map
|
package/dist/storage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sources":["../src/storage.ts"],"sourcesContent":[null],"names":["StorageKeys","WindowWrapper"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"storage.js","sources":["../src/storage.ts"],"sourcesContent":[null],"names":["StorageKeys","WindowWrapper"],"mappings":"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"}
|
package/dist/storage.mjs
CHANGED
|
@@ -4,6 +4,7 @@ var StorageKeys;
|
|
|
4
4
|
(function (StorageKeys) {
|
|
5
5
|
StorageKeys["AuthBundle"] = "@turnkey/auth_bundle";
|
|
6
6
|
StorageKeys["CurrentUser"] = "@turnkey/current_user";
|
|
7
|
+
StorageKeys["UserSession"] = "@turnkey/session/v1";
|
|
7
8
|
StorageKeys["ReadWriteSession"] = "@turnkey/read_write_session";
|
|
8
9
|
})(StorageKeys || (StorageKeys = {}));
|
|
9
10
|
var StorageLocation;
|
|
@@ -16,6 +17,7 @@ const STORAGE_VALUE_LOCATIONS = {
|
|
|
16
17
|
[StorageKeys.AuthBundle]: StorageLocation.Secure,
|
|
17
18
|
[StorageKeys.CurrentUser]: StorageLocation.Local,
|
|
18
19
|
[StorageKeys.ReadWriteSession]: StorageLocation.Secure,
|
|
20
|
+
[StorageKeys.UserSession]: StorageLocation.Session,
|
|
19
21
|
};
|
|
20
22
|
const STORAGE_LOCATIONS = {
|
|
21
23
|
[StorageLocation.Local]: WindowWrapper.localStorage,
|
|
@@ -38,6 +40,46 @@ const removeStorageValue = async (storageKey) => {
|
|
|
38
40
|
const browserStorageLocation = STORAGE_LOCATIONS[storageLocation];
|
|
39
41
|
browserStorageLocation.removeItem(storageKey);
|
|
40
42
|
};
|
|
43
|
+
/**
|
|
44
|
+
* Saves a user session to storage.
|
|
45
|
+
*
|
|
46
|
+
* @param {TSessionResponse} sessionResponse - The session response containing session details.
|
|
47
|
+
* @param {AuthClient} authClient - The authentication client used for the session.
|
|
48
|
+
* @throws Will throw an error if the authentication client is not set.
|
|
49
|
+
* @returns {Promise<void>} A promise that resolves when the session is saved.
|
|
50
|
+
*/
|
|
51
|
+
const saveSession = async ({ organizationId, organizationName, sessionExpiry, credentialBundle, userId, username, ...sessionResponse }, authClient) => {
|
|
52
|
+
if (!authClient) {
|
|
53
|
+
throw new Error("Failed to save session: Authentication client not set");
|
|
54
|
+
}
|
|
55
|
+
const expiry = Number(sessionExpiry);
|
|
56
|
+
const session = credentialBundle
|
|
57
|
+
? {
|
|
58
|
+
write: {
|
|
59
|
+
credentialBundle,
|
|
60
|
+
expiry,
|
|
61
|
+
},
|
|
62
|
+
}
|
|
63
|
+
: {
|
|
64
|
+
read: {
|
|
65
|
+
token: sessionResponse.session,
|
|
66
|
+
expiry,
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
const userSession = {
|
|
70
|
+
userId,
|
|
71
|
+
username,
|
|
72
|
+
organization: {
|
|
73
|
+
organizationId,
|
|
74
|
+
organizationName,
|
|
75
|
+
},
|
|
76
|
+
session: {
|
|
77
|
+
authClient,
|
|
78
|
+
...session,
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
await setStorageValue(StorageKeys.UserSession, userSession);
|
|
82
|
+
};
|
|
41
83
|
|
|
42
|
-
export { StorageKeys, getStorageValue, removeStorageValue, setStorageValue };
|
|
84
|
+
export { StorageKeys, getStorageValue, removeStorageValue, saveSession, setStorageValue };
|
|
43
85
|
//# sourceMappingURL=storage.mjs.map
|
package/dist/storage.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.mjs","sources":["../src/storage.ts"],"sourcesContent":[null],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"storage.mjs","sources":["../src/storage.ts"],"sourcesContent":[null],"names":[],"mappings":";;IAIY,YAKX;AALD,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,YAAA,CAAA,GAAA,sBAAmC,CAAA;AACnC,IAAA,WAAA,CAAA,aAAA,CAAA,GAAA,uBAAqC,CAAA;AACrC,IAAA,WAAA,CAAA,aAAA,CAAA,GAAA,qBAAmC,CAAA;AACnC,IAAA,WAAA,CAAA,kBAAA,CAAA,GAAA,6BAAgD,CAAA;AAClD,CAAC,EALW,WAAW,KAAX,WAAW,GAKtB,EAAA,CAAA,CAAA,CAAA;AASD,IAAK,eAIJ,CAAA;AAJD,CAAA,UAAK,eAAe,EAAA;AAClB,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACrB,CAAC,EAJI,eAAe,KAAf,eAAe,GAInB,EAAA,CAAA,CAAA,CAAA;AAED,MAAM,uBAAuB,GAAyC;AACpE,IAAA,CAAC,WAAW,CAAC,UAAU,GAAG,eAAe,CAAC,MAAM;AAChD,IAAA,CAAC,WAAW,CAAC,WAAW,GAAG,eAAe,CAAC,KAAK;AAChD,IAAA,CAAC,WAAW,CAAC,gBAAgB,GAAG,eAAe,CAAC,MAAM;AACtD,IAAA,CAAC,WAAW,CAAC,WAAW,GAAG,eAAe,CAAC,OAAO;CACnD,CAAC;AAEF,MAAM,iBAAiB,GAAG;AACxB,IAAA,CAAC,eAAe,CAAC,KAAK,GAAG,aAAa,CAAC,YAAY;AACnD,IAAA,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC,YAAY;AACpD,IAAA,CAAC,eAAe,CAAC,OAAO,GAAG,aAAa,CAAC,YAAY;CACtD,CAAC;MAEW,eAAe,GAAG,OAC7B,UAAa,KAC2B;AACxC,IAAA,MAAM,eAAe,GAAoB,uBAAuB,CAAC,UAAU,CAAC,CAAC;AAC7E,IAAA,MAAM,sBAAsB,GAAY,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAC3E,MAAM,WAAW,GAAG,sBAAsB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC/D,IAAA,OAAO,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;AAC3D,EAAE;AAEW,MAAA,eAAe,GAAG,OAC7B,UAAa,EACb,YAA6B,KACb;AAChB,IAAA,MAAM,eAAe,GAAoB,uBAAuB,CAAC,UAAU,CAAC,CAAC;AAC7E,IAAA,MAAM,sBAAsB,GAAY,iBAAiB,CAAC,eAAe,CAAC,CAAC;AAC3E,IAAA,sBAAsB,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;AAC3E,EAAE;MAEW,kBAAkB,GAAG,OAChC,UAAa,KACI;AACjB,IAAA,MAAM,eAAe,GAAoB,uBAAuB,CAAC,UAAU,CAAC,CAAC;AAC7E,IAAA,MAAM,sBAAsB,GAAY,iBAAiB,CAAC,eAAe,CAAC,CAAC;AAC3E,IAAA,sBAAsB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAChD,EAAE;AAEF;;;;;;;AAOG;AACU,MAAA,WAAW,GAAG,OACzB,EACE,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,MAAM,EACN,QAAQ,EACR,GAAG,eAAe,EACD,EACnB,UAAuB,KACN;IACjB,IAAI,CAAC,UAAU,EAAE;AACf,QAAA,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;AAC1E,KAAA;AAED,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,gBAAgB;AAC9B,UAAE;AACE,YAAA,KAAK,EAAE;gBACL,gBAAgB;gBAChB,MAAM;AACP,aAAA;AACF,SAAA;AACH,UAAE;AACE,YAAA,IAAI,EAAE;gBACJ,KAAK,EAAE,eAAe,CAAC,OAAQ;gBAC/B,MAAM;AACP,aAAA;SACF,CAAC;AAEN,IAAA,MAAM,WAAW,GAAS;QACxB,MAAM;QACN,QAAQ;AACR,QAAA,YAAY,EAAE;YACZ,cAAc;YACd,gBAAgB;AACjB,SAAA;AACD,QAAA,OAAO,EAAE;YACP,UAAU;AACV,YAAA,GAAG,OAAO;AACX,SAAA;KACF,CAAC;IAEF,MAAM,eAAe,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAC9D;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@turnkey/sdk-browser",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.0",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"module": "./dist/index.mjs",
|
|
6
6
|
"exports": {
|
|
@@ -44,10 +44,11 @@
|
|
|
44
44
|
"elliptic": "^6.5.5",
|
|
45
45
|
"hpke-js": "^1.2.7",
|
|
46
46
|
"@turnkey/api-key-stamper": "0.4.3",
|
|
47
|
-
"@turnkey/encoding": "0.4.0",
|
|
48
|
-
"@turnkey/crypto": "2.1.0",
|
|
49
47
|
"@turnkey/http": "2.16.0",
|
|
48
|
+
"@turnkey/encoding": "0.4.0",
|
|
50
49
|
"@turnkey/iframe-stamper": "2.0.0",
|
|
50
|
+
"@turnkey/crypto": "2.2.0",
|
|
51
|
+
"@turnkey/wallet-stamper": "1.0.0",
|
|
51
52
|
"@turnkey/webauthn-stamper": "0.5.0"
|
|
52
53
|
},
|
|
53
54
|
"devDependencies": {
|