@turnkey/sdk-browser 1.8.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 +54 -0
- package/README.md +82 -14
- package/dist/__generated__/sdk-client-base.d.ts +76 -0
- package/dist/__generated__/sdk-client-base.d.ts.map +1 -1
- package/dist/__generated__/sdk-client-base.js +1027 -52
- package/dist/__generated__/sdk-client-base.js.map +1 -1
- package/dist/__generated__/sdk-client-base.mjs +1027 -52
- package/dist/__generated__/sdk-client-base.mjs.map +1 -1
- 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/__inputs__/public_api.types.d.ts +7 -7
- package/dist/__inputs__/public_api.types.d.ts.map +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 +30 -5
- package/dist/sdk-client.d.ts.map +1 -1
- package/dist/sdk-client.js +91 -44
- package/dist/sdk-client.js.map +1 -1
- package/dist/sdk-client.mjs +93 -47
- 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 +6 -5
package/dist/sdk-client.mjs
CHANGED
|
@@ -1,23 +1,35 @@
|
|
|
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
|
|
12
13
|
class TurnkeyBrowserSDK {
|
|
13
14
|
constructor(config) {
|
|
14
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Creates a passkey client. The parameters are overrides passed to the underlying Turnkey `WebauthnStamper`
|
|
17
|
+
* @param rpId Relying Party ID (defaults to window.location.hostname if not provided)
|
|
18
|
+
* @param timeout optional timeout (defaults to 5mins)
|
|
19
|
+
* @param userVerification optional UV flag (defaults to "preferred")
|
|
20
|
+
* @param allowCredentials optional allowCredentials array (defaults to empty array)
|
|
21
|
+
* @returns new TurnkeyPasskeyClient
|
|
22
|
+
*/
|
|
23
|
+
this.passkeyClient = (rpId, timeout, userVerification, allowCredentials) => {
|
|
15
24
|
const targetRpId = rpId ?? this.config.rpId ?? WindowWrapper.location.hostname;
|
|
16
25
|
if (!targetRpId) {
|
|
17
26
|
throw new Error("Tried to initialize a passkey client with no rpId defined");
|
|
18
27
|
}
|
|
19
28
|
const webauthnStamper = new WebauthnStamper({
|
|
20
29
|
rpId: targetRpId,
|
|
30
|
+
...(timeout !== undefined && { timeout }),
|
|
31
|
+
...(userVerification !== undefined && { userVerification }),
|
|
32
|
+
...(allowCredentials !== undefined && { allowCredentials }),
|
|
21
33
|
});
|
|
22
34
|
return new TurnkeyPasskeyClient({
|
|
23
35
|
stamper: webauthnStamper,
|
|
@@ -42,6 +54,14 @@ class TurnkeyBrowserSDK {
|
|
|
42
54
|
organizationId: this.config.defaultOrganizationId,
|
|
43
55
|
});
|
|
44
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
|
+
};
|
|
45
65
|
this.serverSign = async (methodName, params, serverSignUrl) => {
|
|
46
66
|
const targetServerSignUrl = serverSignUrl ?? this.config.serverSignUrl;
|
|
47
67
|
if (!targetServerSignUrl) {
|
|
@@ -80,12 +100,12 @@ class TurnkeyBrowserSDK {
|
|
|
80
100
|
*/
|
|
81
101
|
this.currentUserSession = async () => {
|
|
82
102
|
const currentUser = await this.getCurrentUser();
|
|
83
|
-
if (!currentUser?.
|
|
103
|
+
if (!currentUser?.session?.read) {
|
|
84
104
|
return;
|
|
85
105
|
}
|
|
86
|
-
if (currentUser?.
|
|
106
|
+
if (currentUser?.session?.read?.expiry > Date.now()) {
|
|
87
107
|
return new TurnkeyBrowserClient({
|
|
88
|
-
readOnlySession: currentUser?.
|
|
108
|
+
readOnlySession: currentUser?.session?.read?.token,
|
|
89
109
|
apiBaseUrl: this.config.apiBaseUrl,
|
|
90
110
|
organizationId: currentUser?.organization?.organizationId ??
|
|
91
111
|
this.config.defaultOrganizationId,
|
|
@@ -102,10 +122,10 @@ class TurnkeyBrowserSDK {
|
|
|
102
122
|
* @returns {Promise<ReadWriteSession | undefined>}
|
|
103
123
|
*/
|
|
104
124
|
this.getReadWriteSession = async () => {
|
|
105
|
-
const
|
|
106
|
-
if (
|
|
107
|
-
if (
|
|
108
|
-
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;
|
|
109
129
|
}
|
|
110
130
|
else {
|
|
111
131
|
await removeStorageValue(StorageKeys.ReadWriteSession);
|
|
@@ -114,12 +134,14 @@ class TurnkeyBrowserSDK {
|
|
|
114
134
|
return;
|
|
115
135
|
};
|
|
116
136
|
/**
|
|
137
|
+
* @deprecated This method is deprecated and will be removed in future versions.
|
|
138
|
+
* It has been replaced by the `getReadWriteSession` method.
|
|
117
139
|
* Fetches an auth bundle stored in local storage.
|
|
118
140
|
*
|
|
119
141
|
* @returns {Promise<string | undefined>}
|
|
120
142
|
*/
|
|
121
143
|
this.getAuthBundle = async () => {
|
|
122
|
-
return await getStorageValue(StorageKeys.AuthBundle);
|
|
144
|
+
return await getStorageValue(StorageKeys.AuthBundle);
|
|
123
145
|
};
|
|
124
146
|
/**
|
|
125
147
|
* Fetches the current user's organization details.
|
|
@@ -136,7 +158,7 @@ class TurnkeyBrowserSDK {
|
|
|
136
158
|
* @returns {Promise<User | undefined>}
|
|
137
159
|
*/
|
|
138
160
|
this.getCurrentUser = async () => {
|
|
139
|
-
return await getStorageValue(StorageKeys.
|
|
161
|
+
return await getStorageValue(StorageKeys.UserSession);
|
|
140
162
|
};
|
|
141
163
|
/**
|
|
142
164
|
* Clears out all data pertaining to a user session.
|
|
@@ -146,6 +168,7 @@ class TurnkeyBrowserSDK {
|
|
|
146
168
|
this.logoutUser = async () => {
|
|
147
169
|
await removeStorageValue(StorageKeys.AuthBundle); // DEPRECATED
|
|
148
170
|
await removeStorageValue(StorageKeys.CurrentUser);
|
|
171
|
+
await removeStorageValue(StorageKeys.UserSession);
|
|
149
172
|
await removeStorageValue(StorageKeys.ReadWriteSession);
|
|
150
173
|
return true;
|
|
151
174
|
};
|
|
@@ -153,28 +176,17 @@ class TurnkeyBrowserSDK {
|
|
|
153
176
|
}
|
|
154
177
|
}
|
|
155
178
|
class TurnkeyBrowserClient extends TurnkeySDKClientBase {
|
|
156
|
-
constructor(config) {
|
|
179
|
+
constructor(config, authClient) {
|
|
157
180
|
super(config);
|
|
158
181
|
this.login = async (config) => {
|
|
159
182
|
const readOnlySessionResult = await this.createReadOnlySession(config || {});
|
|
160
|
-
|
|
161
|
-
organizationId: readOnlySessionResult.organizationId,
|
|
162
|
-
organizationName: readOnlySessionResult.organizationName,
|
|
163
|
-
};
|
|
164
|
-
const currentUser = {
|
|
165
|
-
userId: readOnlySessionResult.userId,
|
|
166
|
-
username: readOnlySessionResult.username,
|
|
167
|
-
organization: org,
|
|
168
|
-
readOnlySession: {
|
|
169
|
-
session: readOnlySessionResult.session,
|
|
170
|
-
sessionExpiry: Number(readOnlySessionResult.sessionExpiry),
|
|
171
|
-
},
|
|
172
|
-
};
|
|
173
|
-
await setStorageValue(StorageKeys.CurrentUser, currentUser);
|
|
183
|
+
await saveSession(readOnlySessionResult, this.authClient);
|
|
174
184
|
return readOnlySessionResult;
|
|
175
185
|
};
|
|
176
186
|
/**
|
|
177
|
-
* 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.
|
|
178
190
|
*
|
|
179
191
|
* @param email
|
|
180
192
|
* @param targetEmbeddedKey
|
|
@@ -187,18 +199,22 @@ class TurnkeyBrowserClient extends TurnkeySDKClientBase {
|
|
|
187
199
|
expirationSeconds,
|
|
188
200
|
userId: userId,
|
|
189
201
|
});
|
|
190
|
-
//
|
|
191
|
-
|
|
192
|
-
|
|
202
|
+
// Ensure session and sessionExpiry are included in the object
|
|
203
|
+
const readWriteSessionResultWithSession = {
|
|
204
|
+
...readWriteSessionResult,
|
|
205
|
+
session: readWriteSessionResult.credentialBundle,
|
|
193
206
|
sessionExpiry: Date.now() + Number(expirationSeconds) * 1000,
|
|
194
|
-
}
|
|
195
|
-
|
|
207
|
+
};
|
|
208
|
+
// store auth bundle in local storage
|
|
209
|
+
await saveSession(readWriteSessionResultWithSession, this.authClient);
|
|
210
|
+
return readWriteSessionResultWithSession;
|
|
196
211
|
};
|
|
212
|
+
this.authClient = authClient;
|
|
197
213
|
}
|
|
198
214
|
}
|
|
199
215
|
class TurnkeyPasskeyClient extends TurnkeyBrowserClient {
|
|
200
216
|
constructor(config) {
|
|
201
|
-
super(config);
|
|
217
|
+
super(config, AuthClient.Passkey);
|
|
202
218
|
/**
|
|
203
219
|
* Create a passkey for an end-user, taking care of various lower-level details.
|
|
204
220
|
*
|
|
@@ -229,6 +245,10 @@ class TurnkeyPasskeyClient extends TurnkeyBrowserClient {
|
|
|
229
245
|
type: "public-key",
|
|
230
246
|
alg: -7,
|
|
231
247
|
},
|
|
248
|
+
{
|
|
249
|
+
type: "public-key",
|
|
250
|
+
alg: -257,
|
|
251
|
+
},
|
|
232
252
|
],
|
|
233
253
|
user: {
|
|
234
254
|
id: config.publicKey?.user?.id ?? authenticatorUserId,
|
|
@@ -255,7 +275,11 @@ class TurnkeyPasskeyClient extends TurnkeyBrowserClient {
|
|
|
255
275
|
};
|
|
256
276
|
};
|
|
257
277
|
/**
|
|
258
|
-
* 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.
|
|
259
283
|
*
|
|
260
284
|
* @param userId
|
|
261
285
|
* @param targetEmbeddedKey
|
|
@@ -264,12 +288,16 @@ class TurnkeyPasskeyClient extends TurnkeyBrowserClient {
|
|
|
264
288
|
* @returns {Promise<ReadWriteSession>}
|
|
265
289
|
*/
|
|
266
290
|
this.createPasskeySession = async (userId, targetEmbeddedKey, expirationSeconds = DEFAULT_SESSION_EXPIRATION, organizationId) => {
|
|
267
|
-
const
|
|
268
|
-
|
|
269
|
-
|
|
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);
|
|
270
298
|
// add API key to Turnkey User
|
|
271
299
|
await this.createApiKeys({
|
|
272
|
-
organizationId
|
|
300
|
+
organizationId,
|
|
273
301
|
userId,
|
|
274
302
|
apiKeys: [
|
|
275
303
|
{
|
|
@@ -280,20 +308,26 @@ class TurnkeyPasskeyClient extends TurnkeyBrowserClient {
|
|
|
280
308
|
},
|
|
281
309
|
],
|
|
282
310
|
});
|
|
283
|
-
const
|
|
284
|
-
|
|
285
|
-
|
|
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,
|
|
286
323
|
};
|
|
287
|
-
// store auth bundle in local storage
|
|
288
|
-
await setStorageValue(StorageKeys.ReadWriteSession, readWriteSession);
|
|
289
|
-
return readWriteSession;
|
|
290
324
|
};
|
|
291
325
|
this.rpId = config.stamper.rpId;
|
|
292
326
|
}
|
|
293
327
|
}
|
|
294
328
|
class TurnkeyIframeClient extends TurnkeyBrowserClient {
|
|
295
329
|
constructor(config) {
|
|
296
|
-
super(config);
|
|
330
|
+
super(config, AuthClient.Iframe);
|
|
297
331
|
this.injectCredentialBundle = async (credentialBundle) => {
|
|
298
332
|
const stamper = this.config.stamper;
|
|
299
333
|
return await stamper.injectCredentialBundle(credentialBundle);
|
|
@@ -321,6 +355,18 @@ class TurnkeyIframeClient extends TurnkeyBrowserClient {
|
|
|
321
355
|
this.iframePublicKey = config.stamper.iframePublicKey;
|
|
322
356
|
}
|
|
323
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
|
+
}
|
|
324
370
|
|
|
325
|
-
export { TurnkeyBrowserClient, TurnkeyBrowserSDK, TurnkeyIframeClient, TurnkeyPasskeyClient };
|
|
371
|
+
export { TurnkeyBrowserClient, TurnkeyBrowserSDK, TurnkeyIframeClient, TurnkeyPasskeyClient, TurnkeyWalletClient };
|
|
326
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":";;;;;;;;;;;AAuCA,MAAM,0BAA0B,GAAG,KAAK,CAAC;MAE5B,iBAAiB,CAAA;AAG5B,IAAA,WAAA,CAAY,MAA+B,EAAA;AAI3C;;;;;;;AAOG;QACH,IAAa,CAAA,aAAA,GAAG,CACd,IAAa,EACb,OAAgB,EAChB,gBAA8C,EAC9C,gBAAkD,KAC1B;AACxB,YAAA,MAAM,UAAU,GACd,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAE9D,IAAI,CAAC,UAAU,EAAE;AACf,gBAAA,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAC;AACH,aAAA;AAED,YAAA,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC;AAC1C,gBAAA,IAAI,EAAE,UAAU;gBAChB,IAAI,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,CAAC;gBACzC,IAAI,gBAAgB,KAAK,SAAS,IAAI,EAAE,gBAAgB,EAAE,CAAC;gBAC3D,IAAI,gBAAgB,KAAK,SAAS,IAAI,EAAE,gBAAgB,EAAE,CAAC;AAC5D,aAAA,CAAC,CAAC;YAEH,OAAO,IAAI,oBAAoB,CAAC;AAC9B,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;AAClC,gBAAA,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;AAClD,aAAA,CAAC,CAAC;AACL,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,YAAY,GAAG,OACb,MAA0B,KACM;AAChC,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AACrB,gBAAA,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;AACH,aAAA;AAED,YAAA,MAAM,sBAAsB,GAC1B,MAAM,CAAC,eAAe,IAAI,mCAAmC,CAAC;AAEhE,YAAA,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC;gBACtC,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,SAAS,EAAE,MAAM,CAAC,SAAS;AAC3B,gBAAA,eAAe,EAAE,sBAAsB;AACxC,aAAA,CAAC,CAAC;AAEH,YAAA,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;YAE3B,OAAO,IAAI,mBAAmB,CAAC;AAC7B,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;AAClC,gBAAA,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;AAClD,aAAA,CAAC,CAAC;AACL,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,MAAuB,KAAyB;YAC9D,OAAO,IAAI,mBAAmB,CAAC;AAC7B,gBAAA,OAAO,EAAE,IAAI,aAAa,CAAC,MAAM,CAAC;gBAClC,MAAM;AACN,gBAAA,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;AAClC,gBAAA,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;AAClD,aAAA,CAAC,CAAC;AACL,SAAC,CAAC;QAEF,IAAU,CAAA,UAAA,GAAG,OACX,UAAkB,EAClB,MAAa,EACb,aAAsB,KACI;YAC1B,MAAM,mBAAmB,GAAG,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YAEvE,IAAI,CAAC,mBAAmB,EAAE;AACxB,gBAAA,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;AAC3E,aAAA;AAED,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC;AACrC,gBAAA,UAAU,EAAE,UAAU;AACtB,gBAAA,MAAM,EAAE,MAAM;AACf,aAAA,CAAC,CAAC;AAEH,YAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,mBAAmB,EAAE;AAChD,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,OAAO,EAAE;AACP,oBAAA,cAAc,EAAE,kBAAkB;AAClC,oBAAA,kBAAkB,EAAE,OAAO;AAC5B,iBAAA;AACD,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,QAAQ,EAAE,QAAQ;AACnB,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAChB,gBAAA,IAAI,GAAe,CAAC;gBACpB,IAAI;AACF,oBAAA,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC7B,iBAAA;AAAC,gBAAA,OAAO,CAAC,EAAE;AACV,oBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,EAAG,QAAQ,CAAC,MAAM,CAAA,CAAA,EAAI,QAAQ,CAAC,UAAU,CAAA,CAAE,CAAC,CAAC;AAC9D,iBAAA;AAED,gBAAA,MAAM,IAAI,mBAAmB,CAAC,GAAG,CAAC,CAAC;AACpC,aAAA;AAED,YAAA,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AACnC,YAAA,OAAO,IAAqB,CAAC;AAC/B,SAAC,CAAC;AAEF;;;;AAIG;QACH,IAAkB,CAAA,kBAAA,GAAG,YAAsD;AACzE,YAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAChD,YAAA,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE;gBAC/B,OAAO;AACR,aAAA;AAED,YAAA,IAAI,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE;gBACnD,OAAO,IAAI,oBAAoB,CAAC;AAC9B,oBAAA,eAAe,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,KAAM;AACnD,oBAAA,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;AAClC,oBAAA,cAAc,EACZ,WAAW,EAAE,YAAY,EAAE,cAAc;wBACzC,IAAI,CAAC,MAAM,CAAC,qBAAqB;AACpC,iBAAA,CAAC,CAAC;AACJ,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,UAAU,EAAE,CAAC;AACnB,aAAA;YAED,OAAO;AACT,SAAC,CAAC;AAEF;;;;AAIG;QACH,IAAmB,CAAA,mBAAA,GAAG,YAAkD;YACtE,MAAM,WAAW,GAAqB,MAAM,eAAe,CACzD,WAAW,CAAC,WAAW,CACxB,CAAC;AAEF,YAAA,IAAI,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE;AAC/B,gBAAA,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE;AACjD,oBAAA,OAAO,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;AAClC,iBAAA;AAAM,qBAAA;AACL,oBAAA,MAAM,kBAAkB,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;AACxD,iBAAA;AACF,aAAA;YAED,OAAO;AACT,SAAC,CAAC;AAEF;;;;;;AAMG;QACH,IAAa,CAAA,aAAA,GAAG,YAAwC;AACtD,YAAA,OAAO,MAAM,eAAe,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACvD,SAAC,CAAC;AAEF;;;;AAIG;QACH,IAAyB,CAAA,yBAAA,GAAG,YAExB;AACF,YAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAChD,OAAO,WAAW,EAAE,YAAY,CAAC;AACnC,SAAC,CAAC;AAEF;;;;AAIG;QACH,IAAc,CAAA,cAAA,GAAG,YAAsC;AACrD,YAAA,OAAO,MAAM,eAAe,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AACxD,SAAC,CAAC;AAEF;;;;AAIG;QACH,IAAU,CAAA,UAAA,GAAG,YAA6B;YACxC,MAAM,kBAAkB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACjD,YAAA,MAAM,kBAAkB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AAClD,YAAA,MAAM,kBAAkB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AAClD,YAAA,MAAM,kBAAkB,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;AAEvD,YAAA,OAAO,IAAI,CAAC;AACd,SAAC,CAAC;AAhNA,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACtB;AAgNF,CAAA;AAEK,MAAO,oBAAqB,SAAQ,oBAAoB,CAAA;IAG5D,WAAY,CAAA,MAA8B,EAAE,UAAuB,EAAA;QACjE,KAAK,CAAC,MAAM,CAAC,CAAC;AAIhB,QAAA,IAAA,CAAA,KAAK,GAAG,OAAO,MAEd,KAAyD;YACxD,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAC5D,MAAM,IAAI,EAAE,CACb,CAAC;YAEF,MAAM,WAAW,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAE1D,YAAA,OAAO,qBAAsB,CAAC;AAChC,SAAC,CAAC;AAEF;;;;;;;;;AASG;QACH,IAAyB,CAAA,yBAAA,GAAG,OAC1B,iBAAyB,EACzB,oBAA4B,0BAA0B,EACtD,MAAe,KACyC;AACxD,YAAA,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC;AAC/D,gBAAA,eAAe,EAAE,iBAAiB;gBAClC,iBAAiB;AACjB,gBAAA,MAAM,EAAE,MAAO;AAChB,aAAA,CAAC,CAAC;;AAGH,YAAA,MAAM,iCAAiC,GAAG;AACxC,gBAAA,GAAG,sBAAsB;gBACzB,OAAO,EAAE,sBAAsB,CAAC,gBAAgB;gBAChD,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,iBAAiB,CAAC,GAAG,IAAI;aAC7D,CAAC;;YAGF,MAAM,WAAW,CAAC,iCAAiC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAEtE,YAAA,OAAO,iCAAiC,CAAC;AAC3C,SAAC,CAAC;AA/CA,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;KAC9B;AA+CF,CAAA;AAEK,MAAO,oBAAqB,SAAQ,oBAAoB,CAAA;AAG5D,IAAA,WAAA,CAAY,MAA8B,EAAA;AACxC,QAAA,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;AAIpC;;;;AAIG;AACH,QAAA,IAAA,CAAA,iBAAiB,GAAG,OAClB,MAA2B,GAAA,EAAE,KACT;AACpB,YAAA,MAAM,SAAS,GAAG,oBAAoB,EAAE,CAAC;AACzC,YAAA,MAAM,gBAAgB,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;AACpD,YAAA,MAAM,mBAAmB,GAAG,oBAAoB,EAAE,CAAC;;;;;;;;;;AAWnD,YAAA,MAAM,cAAc,GAA8B;AAChD,gBAAA,SAAS,EAAE;AACT,oBAAA,EAAE,EAAE;wBACF,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI;wBACzC,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE;AACvC,qBAAA;AACD,oBAAA,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,IAAI,SAAS;AACnD,oBAAA,gBAAgB,EAAE,MAAM,CAAC,SAAS,EAAE,gBAAgB,IAAI;AACtD,wBAAA;AACE,4BAAA,IAAI,EAAE,YAAY;4BAClB,GAAG,EAAE,CAAC,CAAC;AACR,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,YAAY;4BAClB,GAAG,EAAE,CAAC,GAAG;AACV,yBAAA;AACF,qBAAA;AACD,oBAAA,IAAI,EAAE;wBACJ,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,mBAAmB;wBACrD,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,IAAI,cAAc;wBACpD,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,IAAI,cAAc;AACnE,qBAAA;AACD,oBAAA,sBAAsB,EAAE;AACtB,wBAAA,uBAAuB,EACrB,MAAM,CAAC,SAAS,EAAE,sBAAsB,EAAE,uBAAuB;4BACjE,SAAS;AACX,wBAAA,kBAAkB,EAChB,MAAM,CAAC,SAAS,EAAE,sBAAsB,EAAE,kBAAkB;4BAC5D,IAAI;wBACN,WAAW,EACT,MAAM,CAAC,SAAS,EAAE,sBAAsB,EAAE,WAAW,IAAI,UAAU;AACrE,wBAAA,gBAAgB,EACd,MAAM,CAAC,SAAS,EAAE,sBAAsB,EAAE,gBAAgB;4BAC1D,WAAW;AACd,qBAAA;AACF,iBAAA;aACF,CAAC;AAEF,YAAA,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,cAAc,CAAC,CAAC;YAEjE,OAAO;AACL,gBAAA,gBAAgB,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS;sBACzC,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC;AAC9C,sBAAE,gBAAgB;gBACpB,WAAW;aACZ,CAAC;AACJ,SAAC,CAAC;AAEF;;;;;;;;;;;;AAYG;AACH,QAAA,IAAA,CAAA,oBAAoB,GAAG,OACrB,MAAc,EACd,iBAAyB,EACzB,iBAAA,GAA4B,0BAA0B,EACtD,cAAuB,KACM;YAC7B,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YAC5D,cAAc,GAAG,cAAc,IAAI,IAAI,EAAE,YAAY,CAAC,cAAc,CAAC;YAErE,IAAI,CAAC,cAAc,EAAE;AACnB,gBAAA,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;AACH,aAAA;AAED,YAAA,MAAM,GAAG,MAAM,IAAI,IAAI,EAAE,MAAM,CAAC;AAEhC,YAAA,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,GAC/C,MAAM,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;;YAGhD,MAAM,IAAI,CAAC,aAAa,CAAC;gBACvB,cAAc;gBACd,MAAM;AACN,gBAAA,OAAO,EAAE;AACP,oBAAA;wBACE,UAAU,EAAE,eAAe,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAE,CAAA;wBAC/C,SAAS;wBACT,iBAAiB;AACjB,wBAAA,SAAS,EAAE,oBAAoB;AAChC,qBAAA;AACF,iBAAA;AACF,aAAA,CAAC,CAAC;AAEH,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC;AAE7D,YAAA,MAAM,WAAW,CACf;gBACE,cAAc;AACd,gBAAA,gBAAgB,EAAE,IAAI,EAAE,YAAY,CAAC,gBAAgB,IAAI,EAAE;gBAC3D,MAAM;AACN,gBAAA,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,EAAE;gBAC9B,gBAAgB;AAChB,gBAAA,aAAa,EAAE,MAAM;AACtB,aAAA,EACD,IAAI,CAAC,UAAU,CAChB,CAAC;YAEF,OAAO;gBACL,gBAAgB;gBAChB,MAAM;aACP,CAAC;AACJ,SAAC,CAAC;QAzIA,IAAI,CAAC,IAAI,GAAI,MAAM,CAAC,OAA4B,CAAC,IAAI,CAAC;KACvD;AAyIF,CAAA;AAEK,MAAO,mBAAoB,SAAQ,oBAAoB,CAAA;AAG3D,IAAA,WAAA,CAAY,MAA8B,EAAA;AACxC,QAAA,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;AAInC,QAAA,IAAA,CAAA,sBAAsB,GAAG,OACvB,gBAAwB,KACJ;AACpB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAwB,CAAC;AACrD,YAAA,OAAO,MAAM,OAAO,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;AAChE,SAAC,CAAC;AAEF,QAAA,IAAA,CAAA,wBAAwB,GAAG,OACzB,gBAAwB,EACxB,cAAsB,KACF;AACpB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAwB,CAAC;YACrD,OAAO,MAAM,OAAO,CAAC,wBAAwB,CAC3C,gBAAgB,EAChB,cAAc,CACf,CAAC;AACJ,SAAC,CAAC;QAEF,IAAqB,CAAA,qBAAA,GAAG,OACtB,gBAAwB,EACxB,cAAsB,EACtB,SAAiC,KACb;AACpB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAwB,CAAC;YACrD,OAAO,MAAM,OAAO,CAAC,qBAAqB,CACxC,gBAAgB,EAChB,cAAc,EACd,SAAS,CACV,CAAC;AACJ,SAAC,CAAC;QAEF,IAAkB,CAAA,kBAAA,GAAG,OACnB,MAAc,EACd,cAAsB,EACtB,MAAc,KACM;AACpB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAwB,CAAC;YACrD,OAAO,MAAM,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;AAC1E,SAAC,CAAC;QAEF,IAA4B,CAAA,4BAAA,GAAG,YAA4B;AACzD,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAwB,CAAC;AACrD,YAAA,OAAO,MAAM,OAAO,CAAC,4BAA4B,EAAE,CAAC;AACtD,SAAC,CAAC;QAEF,IAAyB,CAAA,yBAAA,GAAG,YAA4B;AACtD,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAwB,CAAC;AACrD,YAAA,OAAO,MAAM,OAAO,CAAC,yBAAyB,EAAE,CAAC;AACnD,SAAC,CAAC;QAnDA,IAAI,CAAC,eAAe,GAAI,MAAM,CAAC,OAAyB,CAAC,eAAe,CAAC;KAC1E;AAmDF,CAAA;AAEK,MAAO,mBAAoB,SAAQ,oBAAoB,CAAA;AAG3D,IAAA,WAAA,CAAY,MAAiC,EAAA;AAC3C,QAAA,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;KAC7B;AAED,IAAA,MAAM,YAAY,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KACnC;IAED,kBAAkB,GAAA;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AACF;;;;"}
|
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":"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"}
|
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": {
|
|
@@ -43,12 +43,13 @@
|
|
|
43
43
|
"cross-fetch": "^3.1.5",
|
|
44
44
|
"elliptic": "^6.5.5",
|
|
45
45
|
"hpke-js": "^1.2.7",
|
|
46
|
-
"@turnkey/http": "2.15.0",
|
|
47
|
-
"@turnkey/crypto": "2.0.0",
|
|
48
46
|
"@turnkey/api-key-stamper": "0.4.3",
|
|
49
|
-
"@turnkey/
|
|
47
|
+
"@turnkey/http": "2.16.0",
|
|
50
48
|
"@turnkey/encoding": "0.4.0",
|
|
51
|
-
"@turnkey/iframe-stamper": "2.0.0"
|
|
49
|
+
"@turnkey/iframe-stamper": "2.0.0",
|
|
50
|
+
"@turnkey/crypto": "2.2.0",
|
|
51
|
+
"@turnkey/wallet-stamper": "1.0.0",
|
|
52
|
+
"@turnkey/webauthn-stamper": "0.5.0"
|
|
52
53
|
},
|
|
53
54
|
"devDependencies": {
|
|
54
55
|
"@types/elliptic": "^6.4.18",
|