@turnkey/sdk-browser 0.2.1 → 0.3.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 +6 -0
- package/dist/__generated__/version.d.ts +1 -1
- package/dist/__generated__/version.js +1 -1
- package/dist/__generated__/version.mjs +1 -1
- package/dist/models.d.ts +4 -0
- package/dist/models.d.ts.map +1 -1
- package/dist/sdk-client.d.ts +4 -1
- package/dist/sdk-client.d.ts.map +1 -1
- package/dist/sdk-client.js +29 -1
- package/dist/sdk-client.js.map +1 -1
- package/dist/sdk-client.mjs +30 -2
- package/dist/sdk-client.mjs.map +1 -1
- package/dist/storage.d.ts +3 -1
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +2 -0
- package/dist/storage.js.map +1 -1
- package/dist/storage.mjs +2 -0
- package/dist/storage.mjs.map +1 -1
- package/dist/utils.d.ts +2 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +42 -0
- package/dist/utils.js.map +1 -1
- package/dist/utils.mjs +42 -1
- package/dist/utils.mjs.map +1 -1
- package/package.json +7 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "@turnkey/sdk-browser@0.
|
|
1
|
+
export declare const VERSION = "@turnkey/sdk-browser@0.3.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/models.d.ts
CHANGED
package/dist/models.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,eAAe,CAAC;IAC9B,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B"}
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,eAAe,CAAC;IAC9B,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC"}
|
package/dist/sdk-client.d.ts
CHANGED
|
@@ -12,10 +12,11 @@ export declare class TurnkeyBrowserSDK {
|
|
|
12
12
|
getCurrentSubOrganization: () => Promise<SubOrganization | undefined>;
|
|
13
13
|
getCurrentUser: () => Promise<User | undefined>;
|
|
14
14
|
logoutUser: () => Promise<boolean>;
|
|
15
|
+
getAuthBundle: () => Promise<string | undefined>;
|
|
15
16
|
}
|
|
16
17
|
export declare class TurnkeyBrowserClient extends TurnkeySDKClientBase {
|
|
17
18
|
constructor(config: TurnkeySDKClientConfig);
|
|
18
|
-
login: () => Promise<SdkApiTypes.
|
|
19
|
+
login: () => Promise<SdkApiTypes.TCreateReadOnlySessionResponse>;
|
|
19
20
|
}
|
|
20
21
|
export declare class TurnkeyPasskeyClient extends TurnkeyBrowserClient {
|
|
21
22
|
rpId: string;
|
|
@@ -29,6 +30,7 @@ export declare class TurnkeyPasskeyClient extends TurnkeyBrowserClient {
|
|
|
29
30
|
transports: ("AUTHENTICATOR_TRANSPORT_BLE" | "AUTHENTICATOR_TRANSPORT_INTERNAL" | "AUTHENTICATOR_TRANSPORT_NFC" | "AUTHENTICATOR_TRANSPORT_USB" | "AUTHENTICATOR_TRANSPORT_HYBRID")[];
|
|
30
31
|
};
|
|
31
32
|
}>;
|
|
33
|
+
createPasskeySession: (userId: string, targetEmbeddedKey: string, expirationSeconds?: string) => Promise<string>;
|
|
32
34
|
}
|
|
33
35
|
export declare class TurnkeyIframeClient extends TurnkeyBrowserClient {
|
|
34
36
|
iframePublicKey: string | null;
|
|
@@ -38,5 +40,6 @@ export declare class TurnkeyIframeClient extends TurnkeyBrowserClient {
|
|
|
38
40
|
injectKeyExportBundle: (credentialBundle: string, organizationId: string) => Promise<boolean>;
|
|
39
41
|
injectImportBundle: (bundle: string, organizationId: string, userId: string) => Promise<boolean>;
|
|
40
42
|
extractWalletEncryptedBundle: () => Promise<string>;
|
|
43
|
+
extractKeyEncryptedBundle: () => Promise<string>;
|
|
41
44
|
}
|
|
42
45
|
//# sourceMappingURL=sdk-client.d.ts.map
|
package/dist/sdk-client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-client.d.ts","sourceRoot":"","sources":["../src/sdk-client.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAEV,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,KAAK,WAAW,MAAM,+BAA+B,CAAC;AAElE,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"sdk-client.d.ts","sourceRoot":"","sources":["../src/sdk-client.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAEV,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,KAAK,WAAW,MAAM,+BAA+B,CAAC;AAElE,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAatD,qBAAa,iBAAiB;IAC5B,MAAM,EAAE,uBAAuB,CAAC;gBAEpB,MAAM,EAAE,uBAAuB;IAI3C,kBAAkB,QAAa,QAAQ,oBAAoB,GAAG,SAAS,CAAC,CAiBtE;IAEF,aAAa,UAAW,MAAM,KAAG,oBAAoB,CAmBnD;IAEF,YAAY,WACF,kBAAkB,KACzB,QAAQ,mBAAmB,CAAC,CAuB7B;IAEF,UAAU,8BACI,MAAM,UACV,GAAG,EAAE,kBACG,MAAM,4BAoCtB;IAGF,yBAAyB,QAAa,QACpC,eAAe,GAAG,SAAS,CAC5B,CAGC;IAEF,cAAc,QAAa,QAAQ,IAAI,GAAG,SAAS,CAAC,CAElD;IAEF,UAAU,QAAa,QAAQ,OAAO,CAAC,CAIrC;IAEF,aAAa,QAAa,QAAQ,MAAM,GAAG,SAAS,CAAC,CAEnD;CACH;AAED,qBAAa,oBAAqB,SAAQ,oBAAoB;gBAChD,MAAM,EAAE,sBAAsB;IAI1C,KAAK,QAAa,QAAQ,YAAY,8BAA8B,CAAC,CAiBnE;CACH;AAED,qBAAa,oBAAqB,SAAQ,oBAAoB;IAC5D,IAAI,EAAE,MAAM,CAAC;gBAED,MAAM,EAAE,sBAAsB;IAK1C,iBAAiB,YAAkB,OAAO,GAAG,EAAE,GAAG,CAAC;;;;;;;;OAoDjD;IAIF,oBAAoB,WACV,MAAM,qBACK,MAAM,sBACL,MAAM,KACzB,QAAQ,MAAM,CAAC,CAwBhB;CACH;AAED,qBAAa,mBAAoB,SAAQ,oBAAoB;IAC3D,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEnB,MAAM,EAAE,sBAAsB;IAK1C,sBAAsB,qBACF,MAAM,KACvB,QAAQ,OAAO,CAAC,CAGjB;IAEF,wBAAwB,qBACJ,MAAM,kBACR,MAAM,KACrB,QAAQ,OAAO,CAAC,CAMjB;IAEF,qBAAqB,qBACD,MAAM,kBACR,MAAM,KACrB,QAAQ,OAAO,CAAC,CAMjB;IAEF,kBAAkB,WACR,MAAM,kBACE,MAAM,UACd,MAAM,KACb,QAAQ,OAAO,CAAC,CAGjB;IAEF,4BAA4B,QAAa,QAAQ,MAAM,CAAC,CAGtD;IAEF,yBAAyB,QAAa,QAAQ,MAAM,CAAC,CAGnD;CACH"}
|
package/dist/sdk-client.js
CHANGED
|
@@ -92,7 +92,7 @@ class TurnkeyBrowserSDK {
|
|
|
92
92
|
const data = await response.json();
|
|
93
93
|
return data;
|
|
94
94
|
};
|
|
95
|
-
// Local
|
|
95
|
+
// Local Storage
|
|
96
96
|
this.getCurrentSubOrganization = async () => {
|
|
97
97
|
const currentUser = await this.getCurrentUser();
|
|
98
98
|
return currentUser?.organization;
|
|
@@ -104,6 +104,9 @@ class TurnkeyBrowserSDK {
|
|
|
104
104
|
await storage.removeStorageValue(storage.StorageKeys.CurrentUser);
|
|
105
105
|
return true;
|
|
106
106
|
};
|
|
107
|
+
this.getAuthBundle = async () => {
|
|
108
|
+
return await storage.getStorageValue(storage.StorageKeys.AuthBundle);
|
|
109
|
+
};
|
|
107
110
|
this.config = config;
|
|
108
111
|
}
|
|
109
112
|
}
|
|
@@ -180,6 +183,27 @@ class TurnkeyPasskeyClient extends TurnkeyBrowserClient {
|
|
|
180
183
|
attestation: attestation,
|
|
181
184
|
};
|
|
182
185
|
};
|
|
186
|
+
// createPasskeySession creates a session authenticated by passkey, via an embedded API key,
|
|
187
|
+
// and stores + returns the resulting auth bundle that contains the encrypted API key.
|
|
188
|
+
this.createPasskeySession = async (userId, targetEmbeddedKey, expirationSeconds) => {
|
|
189
|
+
const localStorageUser = await storage.getStorageValue(storage.StorageKeys.CurrentUser);
|
|
190
|
+
userId = userId ?? localStorageUser?.userId;
|
|
191
|
+
const { authBundle, publicKey } = await utils.createEmbeddedAPIKey(targetEmbeddedKey);
|
|
192
|
+
// add API key to Turnkey User
|
|
193
|
+
await this.createApiKeys({
|
|
194
|
+
userId,
|
|
195
|
+
apiKeys: [
|
|
196
|
+
{
|
|
197
|
+
apiKeyName: `Session Key ${String(Date.now())}`,
|
|
198
|
+
publicKey,
|
|
199
|
+
expirationSeconds: expirationSeconds ?? "900", // default to 15 minutes
|
|
200
|
+
},
|
|
201
|
+
],
|
|
202
|
+
});
|
|
203
|
+
// store auth bundle in local storage
|
|
204
|
+
await storage.setStorageValue(storage.StorageKeys.AuthBundle, authBundle);
|
|
205
|
+
return authBundle;
|
|
206
|
+
};
|
|
183
207
|
this.rpId = config.stamper.rpId;
|
|
184
208
|
}
|
|
185
209
|
}
|
|
@@ -206,6 +230,10 @@ class TurnkeyIframeClient extends TurnkeyBrowserClient {
|
|
|
206
230
|
const stamper = this.config.stamper;
|
|
207
231
|
return await stamper.extractWalletEncryptedBundle();
|
|
208
232
|
};
|
|
233
|
+
this.extractKeyEncryptedBundle = async () => {
|
|
234
|
+
const stamper = this.config.stamper;
|
|
235
|
+
return await stamper.extractKeyEncryptedBundle();
|
|
236
|
+
};
|
|
209
237
|
this.iframePublicKey = config.stamper.iframePublicKey;
|
|
210
238
|
}
|
|
211
239
|
}
|
package/dist/sdk-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-client.js","sources":["../src/sdk-client.ts"],"sourcesContent":[null],"names":["WindowWrapper","webauthnStamper","WebauthnStamper","iframeStamper","IframeStamper","VERSION","TurnkeyRequestError","getStorageValue","StorageKeys","removeStorageValue","TurnkeySDKClientBase","setStorageValue","generateRandomBuffer","base64UrlEncode","getWebAuthnAttestation"],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"sdk-client.js","sources":["../src/sdk-client.ts"],"sourcesContent":[null],"names":["WindowWrapper","webauthnStamper","WebauthnStamper","iframeStamper","IframeStamper","VERSION","TurnkeyRequestError","getStorageValue","StorageKeys","removeStorageValue","TurnkeySDKClientBase","setStorageValue","generateRandomBuffer","base64UrlEncode","getWebAuthnAttestation","createEmbeddedAPIKey"],"mappings":"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"}
|
package/dist/sdk-client.mjs
CHANGED
|
@@ -6,7 +6,7 @@ import WindowWrapper from './__polyfills__/window.mjs';
|
|
|
6
6
|
import { TurnkeyRequestError } from './__types__/base.mjs';
|
|
7
7
|
import { TurnkeySDKClientBase } from './__generated__/sdk-client-base.mjs';
|
|
8
8
|
import { getStorageValue, StorageKeys, removeStorageValue, setStorageValue } from './storage.mjs';
|
|
9
|
-
import { generateRandomBuffer, base64UrlEncode } from './utils.mjs';
|
|
9
|
+
import { generateRandomBuffer, base64UrlEncode, createEmbeddedAPIKey } from './utils.mjs';
|
|
10
10
|
|
|
11
11
|
class TurnkeyBrowserSDK {
|
|
12
12
|
constructor(config) {
|
|
@@ -90,7 +90,7 @@ class TurnkeyBrowserSDK {
|
|
|
90
90
|
const data = await response.json();
|
|
91
91
|
return data;
|
|
92
92
|
};
|
|
93
|
-
// Local
|
|
93
|
+
// Local Storage
|
|
94
94
|
this.getCurrentSubOrganization = async () => {
|
|
95
95
|
const currentUser = await this.getCurrentUser();
|
|
96
96
|
return currentUser?.organization;
|
|
@@ -102,6 +102,9 @@ class TurnkeyBrowserSDK {
|
|
|
102
102
|
await removeStorageValue(StorageKeys.CurrentUser);
|
|
103
103
|
return true;
|
|
104
104
|
};
|
|
105
|
+
this.getAuthBundle = async () => {
|
|
106
|
+
return await getStorageValue(StorageKeys.AuthBundle);
|
|
107
|
+
};
|
|
105
108
|
this.config = config;
|
|
106
109
|
}
|
|
107
110
|
}
|
|
@@ -178,6 +181,27 @@ class TurnkeyPasskeyClient extends TurnkeyBrowserClient {
|
|
|
178
181
|
attestation: attestation,
|
|
179
182
|
};
|
|
180
183
|
};
|
|
184
|
+
// createPasskeySession creates a session authenticated by passkey, via an embedded API key,
|
|
185
|
+
// and stores + returns the resulting auth bundle that contains the encrypted API key.
|
|
186
|
+
this.createPasskeySession = async (userId, targetEmbeddedKey, expirationSeconds) => {
|
|
187
|
+
const localStorageUser = await getStorageValue(StorageKeys.CurrentUser);
|
|
188
|
+
userId = userId ?? localStorageUser?.userId;
|
|
189
|
+
const { authBundle, publicKey } = await createEmbeddedAPIKey(targetEmbeddedKey);
|
|
190
|
+
// add API key to Turnkey User
|
|
191
|
+
await this.createApiKeys({
|
|
192
|
+
userId,
|
|
193
|
+
apiKeys: [
|
|
194
|
+
{
|
|
195
|
+
apiKeyName: `Session Key ${String(Date.now())}`,
|
|
196
|
+
publicKey,
|
|
197
|
+
expirationSeconds: expirationSeconds ?? "900", // default to 15 minutes
|
|
198
|
+
},
|
|
199
|
+
],
|
|
200
|
+
});
|
|
201
|
+
// store auth bundle in local storage
|
|
202
|
+
await setStorageValue(StorageKeys.AuthBundle, authBundle);
|
|
203
|
+
return authBundle;
|
|
204
|
+
};
|
|
181
205
|
this.rpId = config.stamper.rpId;
|
|
182
206
|
}
|
|
183
207
|
}
|
|
@@ -204,6 +228,10 @@ class TurnkeyIframeClient extends TurnkeyBrowserClient {
|
|
|
204
228
|
const stamper = this.config.stamper;
|
|
205
229
|
return await stamper.extractWalletEncryptedBundle();
|
|
206
230
|
};
|
|
231
|
+
this.extractKeyEncryptedBundle = async () => {
|
|
232
|
+
const stamper = this.config.stamper;
|
|
233
|
+
return await stamper.extractKeyEncryptedBundle();
|
|
234
|
+
};
|
|
207
235
|
this.iframePublicKey = config.stamper.iframePublicKey;
|
|
208
236
|
}
|
|
209
237
|
}
|
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,9 +1,11 @@
|
|
|
1
1
|
import type { User } from "./models";
|
|
2
2
|
export declare enum StorageKeys {
|
|
3
|
-
CurrentUser = "@turnkey/current_user"
|
|
3
|
+
CurrentUser = "@turnkey/current_user",
|
|
4
|
+
AuthBundle = "@turnkey/auth_bundle"
|
|
4
5
|
}
|
|
5
6
|
interface StorageValue {
|
|
6
7
|
[StorageKeys.CurrentUser]: User;
|
|
8
|
+
[StorageKeys.AuthBundle]: string;
|
|
7
9
|
}
|
|
8
10
|
export declare const getStorageValue: <K extends StorageKeys>(storageKey: K) => Promise<StorageValue[K] | undefined>;
|
|
9
11
|
export declare const setStorageValue: <K extends StorageKeys>(storageKey: K, storageValue: StorageValue[K]) => Promise<any>;
|
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,MAAM,UAAU,CAAC;AAGrC,oBAAY,WAAW;IACrB,WAAW,0BAA0B;
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAGrC,oBAAY,WAAW;IACrB,WAAW,0BAA0B;IACrC,UAAU,yBAAyB;CACpC;AAED,UAAU,YAAY;IACpB,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;IAChC,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAClC;AAmBD,eAAO,MAAM,eAAe,gFAO3B,CAAC;AAEF,eAAO,MAAM,eAAe,2EAGzB,QAAQ,GAAG,CAIb,CAAC;AAEF,eAAO,MAAM,kBAAkB,4CAE5B,QAAQ,IAAI,CAId,CAAC"}
|
package/dist/storage.js
CHANGED
|
@@ -5,6 +5,7 @@ var window = require('./__polyfills__/window.js');
|
|
|
5
5
|
exports.StorageKeys = void 0;
|
|
6
6
|
(function (StorageKeys) {
|
|
7
7
|
StorageKeys["CurrentUser"] = "@turnkey/current_user";
|
|
8
|
+
StorageKeys["AuthBundle"] = "@turnkey/auth_bundle";
|
|
8
9
|
})(exports.StorageKeys || (exports.StorageKeys = {}));
|
|
9
10
|
var StorageLocation;
|
|
10
11
|
(function (StorageLocation) {
|
|
@@ -14,6 +15,7 @@ var StorageLocation;
|
|
|
14
15
|
})(StorageLocation || (StorageLocation = {}));
|
|
15
16
|
const STORAGE_VALUE_LOCATIONS = {
|
|
16
17
|
[exports.StorageKeys.CurrentUser]: StorageLocation.Local,
|
|
18
|
+
[exports.StorageKeys.AuthBundle]: StorageLocation.Local,
|
|
17
19
|
};
|
|
18
20
|
const STORAGE_LOCATIONS = {
|
|
19
21
|
[StorageLocation.Local]: window.localStorage,
|
package/dist/storage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sources":["../src/storage.ts"],"sourcesContent":[null],"names":["StorageKeys","WindowWrapper"],"mappings":";;;;AAGYA,
|
|
1
|
+
{"version":3,"file":"storage.js","sources":["../src/storage.ts"],"sourcesContent":[null],"names":["StorageKeys","WindowWrapper"],"mappings":";;;;AAGYA,6BAGX;AAHD,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,aAAA,CAAA,GAAA,uBAAqC,CAAA;AACrC,IAAA,WAAA,CAAA,YAAA,CAAA,GAAA,sBAAmC,CAAA;AACrC,CAAC,EAHWA,mBAAW,KAAXA,mBAAW,GAGtB,EAAA,CAAA,CAAA,CAAA;AAOD,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,CAACA,mBAAW,CAAC,WAAW,GAAG,eAAe,CAAC,KAAK;AAChD,IAAA,CAACA,mBAAW,CAAC,UAAU,GAAG,eAAe,CAAC,KAAK;CAChD,CAAC;AAEF,MAAM,iBAAiB,GAAG;AACxB,IAAA,CAAC,eAAe,CAAC,KAAK,GAAGC,MAAa,CAAC,YAAY;AACnD,IAAA,CAAC,eAAe,CAAC,MAAM,GAAGA,MAAa,CAAC,YAAY;AACpD,IAAA,CAAC,eAAe,CAAC,OAAO,GAAGA,MAAa,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;;;;;;"}
|
package/dist/storage.mjs
CHANGED
|
@@ -3,6 +3,7 @@ import WindowWrapper from './__polyfills__/window.mjs';
|
|
|
3
3
|
var StorageKeys;
|
|
4
4
|
(function (StorageKeys) {
|
|
5
5
|
StorageKeys["CurrentUser"] = "@turnkey/current_user";
|
|
6
|
+
StorageKeys["AuthBundle"] = "@turnkey/auth_bundle";
|
|
6
7
|
})(StorageKeys || (StorageKeys = {}));
|
|
7
8
|
var StorageLocation;
|
|
8
9
|
(function (StorageLocation) {
|
|
@@ -12,6 +13,7 @@ var StorageLocation;
|
|
|
12
13
|
})(StorageLocation || (StorageLocation = {}));
|
|
13
14
|
const STORAGE_VALUE_LOCATIONS = {
|
|
14
15
|
[StorageKeys.CurrentUser]: StorageLocation.Local,
|
|
16
|
+
[StorageKeys.AuthBundle]: StorageLocation.Local,
|
|
15
17
|
};
|
|
16
18
|
const STORAGE_LOCATIONS = {
|
|
17
19
|
[StorageLocation.Local]: WindowWrapper.localStorage,
|
package/dist/storage.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.mjs","sources":["../src/storage.ts"],"sourcesContent":[null],"names":[],"mappings":";;IAGY,
|
|
1
|
+
{"version":3,"file":"storage.mjs","sources":["../src/storage.ts"],"sourcesContent":[null],"names":[],"mappings":";;IAGY,YAGX;AAHD,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,aAAA,CAAA,GAAA,uBAAqC,CAAA;AACrC,IAAA,WAAA,CAAA,YAAA,CAAA,GAAA,sBAAmC,CAAA;AACrC,CAAC,EAHW,WAAW,KAAX,WAAW,GAGtB,EAAA,CAAA,CAAA,CAAA;AAOD,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,WAAW,GAAG,eAAe,CAAC,KAAK;AAChD,IAAA,CAAC,WAAW,CAAC,UAAU,GAAG,eAAe,CAAC,KAAK;CAChD,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;;;;"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { EmbeddedAPIKey } from "./models";
|
|
2
|
+
export declare const createEmbeddedAPIKey: (targetPublicKey: string) => Promise<EmbeddedAPIKey>;
|
|
1
3
|
export declare const generateRandomBuffer: () => ArrayBuffer;
|
|
2
4
|
export declare const base64UrlEncode: (challenge: ArrayBuffer) => string;
|
|
3
5
|
export declare const bytesToHex: (bytes: Uint8Array) => string;
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI/C,eAAO,MAAM,oBAAoB,oBACd,MAAM,KACtB,QAAQ,cAAc,CAoDxB,CAAC;AAEF,eAAO,MAAM,oBAAoB,QAAO,WAIvC,CAAC;AAEF,eAAO,MAAM,eAAe,cAAe,WAAW,KAAG,MAMxD,CAAC;AAMF,eAAO,MAAM,UAAU,UAAW,UAAU,KAAG,MAO9C,CAAC"}
|
package/dist/utils.js
CHANGED
|
@@ -1,7 +1,48 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var encoding = require('@turnkey/encoding');
|
|
4
|
+
var crypto$1 = require('@turnkey/crypto');
|
|
3
5
|
var buffer = require('buffer');
|
|
6
|
+
var bs58check = require('bs58check');
|
|
7
|
+
var hpkeJs = require('hpke-js');
|
|
4
8
|
|
|
9
|
+
// createEmbeddedAPIKey creates an embedded API key encrypted to a target key (typically embedded within an iframe).
|
|
10
|
+
// This returns a bundle that can be decrypted by that target key, as well as the public key of the newly created API key.
|
|
11
|
+
const createEmbeddedAPIKey = async (targetPublicKey) => {
|
|
12
|
+
const TURNKEY_HPKE_INFO = new TextEncoder().encode("turnkey_hpke");
|
|
13
|
+
// 1: create new API key (to be encrypted to the targetPublicKey)
|
|
14
|
+
const p256key = crypto$1.generateP256KeyPair();
|
|
15
|
+
// 2: set up encryption
|
|
16
|
+
const suite = new hpkeJs.CipherSuite({
|
|
17
|
+
kem: hpkeJs.KemId.DhkemP256HkdfSha256,
|
|
18
|
+
kdf: hpkeJs.KdfId.HkdfSha256,
|
|
19
|
+
aead: hpkeJs.AeadId.Aes256Gcm,
|
|
20
|
+
});
|
|
21
|
+
// 3: import the targetPublicKey (i.e. passed in from the iframe)
|
|
22
|
+
const targetKeyBytes = encoding.uint8ArrayFromHexString(targetPublicKey);
|
|
23
|
+
const targetKey = await crypto.subtle.importKey("raw", targetKeyBytes, {
|
|
24
|
+
name: "ECDH",
|
|
25
|
+
namedCurve: "P-256",
|
|
26
|
+
}, true, []);
|
|
27
|
+
// 4: sender encrypts a message to the target key
|
|
28
|
+
const sender = await suite.createSenderContext({
|
|
29
|
+
recipientPublicKey: targetKey,
|
|
30
|
+
info: TURNKEY_HPKE_INFO,
|
|
31
|
+
});
|
|
32
|
+
const ciphertext = await sender.seal(encoding.uint8ArrayFromHexString(p256key.privateKey), crypto$1.buildAdditionalAssociatedData(new Uint8Array(sender.enc), targetKeyBytes));
|
|
33
|
+
const ciphertextUint8Array = new Uint8Array(ciphertext);
|
|
34
|
+
// 5: assemble bundle
|
|
35
|
+
const encappedKey = new Uint8Array(sender.enc);
|
|
36
|
+
const compressedEncappedKey = crypto$1.compressRawPublicKey(encappedKey);
|
|
37
|
+
const result = new Uint8Array(compressedEncappedKey.length + ciphertextUint8Array.length);
|
|
38
|
+
result.set(compressedEncappedKey);
|
|
39
|
+
result.set(ciphertextUint8Array, compressedEncappedKey.length);
|
|
40
|
+
const base58encodedBundle = bs58check.encode(result);
|
|
41
|
+
return {
|
|
42
|
+
authBundle: base58encodedBundle,
|
|
43
|
+
publicKey: p256key.publicKey,
|
|
44
|
+
};
|
|
45
|
+
};
|
|
5
46
|
const generateRandomBuffer = () => {
|
|
6
47
|
const arr = new Uint8Array(32);
|
|
7
48
|
crypto.getRandomValues(arr);
|
|
@@ -17,5 +58,6 @@ const base64UrlEncode = (challenge) => {
|
|
|
17
58
|
Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, "0"));
|
|
18
59
|
|
|
19
60
|
exports.base64UrlEncode = base64UrlEncode;
|
|
61
|
+
exports.createEmbeddedAPIKey = createEmbeddedAPIKey;
|
|
20
62
|
exports.generateRandomBuffer = generateRandomBuffer;
|
|
21
63
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../src/utils.ts"],"sourcesContent":[null],"names":["Buffer"],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../src/utils.ts"],"sourcesContent":[null],"names":["generateP256KeyPair","CipherSuite","KemId","KdfId","AeadId","uint8ArrayFromHexString","buildAdditionalAssociatedData","compressRawPublicKey","Buffer"],"mappings":";;;;;;;;AAaA;AACA;MACa,oBAAoB,GAAG,OAClC,eAAuB,KACI;IAC3B,MAAM,iBAAiB,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;;AAGnE,IAAA,MAAM,OAAO,GAAGA,4BAAmB,EAAE,CAAC;;AAGtC,IAAA,MAAM,KAAK,GAAG,IAAIC,kBAAW,CAAC;QAC5B,GAAG,EAAEC,YAAK,CAAC,mBAAmB;QAC9B,GAAG,EAAEC,YAAK,CAAC,UAAU;QACrB,IAAI,EAAEC,aAAM,CAAC,SAAS;AACvB,KAAA,CAAC,CAAC;;AAGH,IAAA,MAAM,cAAc,GAAGC,gCAAuB,CAAC,eAAe,CAAC,CAAC;AAChE,IAAA,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAC7C,KAAK,EACL,cAAc,EACd;AACE,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,UAAU,EAAE,OAAO;AACpB,KAAA,EACD,IAAI,EACJ,EAAE,CACH,CAAC;;AAGF,IAAA,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC;AAC7C,QAAA,kBAAkB,EAAE,SAAS;AAC7B,QAAA,IAAI,EAAE,iBAAiB;AACxB,KAAA,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,IAAI,CAClCA,gCAAuB,CAAC,OAAO,CAAC,UAAU,CAAC,EAC3CC,sCAA6B,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC,CAC1E,CAAC;AACF,IAAA,MAAM,oBAAoB,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;;IAGxD,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/C,IAAA,MAAM,qBAAqB,GAAGC,6BAAoB,CAAC,WAAW,CAAC,CAAC;AAChE,IAAA,MAAM,MAAM,GAAG,IAAI,UAAU,CAC3B,qBAAqB,CAAC,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAC3D,CAAC;AACF,IAAA,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAClC,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE/D,MAAM,mBAAmB,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAErD,OAAO;AACL,QAAA,UAAU,EAAE,mBAAmB;QAC/B,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC;AACJ,EAAE;AAEK,MAAM,oBAAoB,GAAG,MAAkB;AACpD,IAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AAC/B,IAAA,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,EAAE;AAEW,MAAA,eAAe,GAAG,CAAC,SAAsB,KAAY;AAChE,IAAA,OAAOC,aAAM,CAAC,IAAI,CAAC,SAAS,CAAC;SAC1B,QAAQ,CAAC,QAAQ,CAAC;AAClB,SAAA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AACnB,SAAA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AACnB,SAAA,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACvB,EAAE;AAEgB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KACjD,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;;;;;;"}
|
package/dist/utils.mjs
CHANGED
|
@@ -1,5 +1,46 @@
|
|
|
1
|
+
import { uint8ArrayFromHexString } from '@turnkey/encoding';
|
|
2
|
+
import { generateP256KeyPair, buildAdditionalAssociatedData, compressRawPublicKey } from '@turnkey/crypto';
|
|
1
3
|
import { Buffer } from 'buffer';
|
|
4
|
+
import bs58check from 'bs58check';
|
|
5
|
+
import { CipherSuite, KemId, KdfId, AeadId } from 'hpke-js';
|
|
2
6
|
|
|
7
|
+
// createEmbeddedAPIKey creates an embedded API key encrypted to a target key (typically embedded within an iframe).
|
|
8
|
+
// This returns a bundle that can be decrypted by that target key, as well as the public key of the newly created API key.
|
|
9
|
+
const createEmbeddedAPIKey = async (targetPublicKey) => {
|
|
10
|
+
const TURNKEY_HPKE_INFO = new TextEncoder().encode("turnkey_hpke");
|
|
11
|
+
// 1: create new API key (to be encrypted to the targetPublicKey)
|
|
12
|
+
const p256key = generateP256KeyPair();
|
|
13
|
+
// 2: set up encryption
|
|
14
|
+
const suite = new CipherSuite({
|
|
15
|
+
kem: KemId.DhkemP256HkdfSha256,
|
|
16
|
+
kdf: KdfId.HkdfSha256,
|
|
17
|
+
aead: AeadId.Aes256Gcm,
|
|
18
|
+
});
|
|
19
|
+
// 3: import the targetPublicKey (i.e. passed in from the iframe)
|
|
20
|
+
const targetKeyBytes = uint8ArrayFromHexString(targetPublicKey);
|
|
21
|
+
const targetKey = await crypto.subtle.importKey("raw", targetKeyBytes, {
|
|
22
|
+
name: "ECDH",
|
|
23
|
+
namedCurve: "P-256",
|
|
24
|
+
}, true, []);
|
|
25
|
+
// 4: sender encrypts a message to the target key
|
|
26
|
+
const sender = await suite.createSenderContext({
|
|
27
|
+
recipientPublicKey: targetKey,
|
|
28
|
+
info: TURNKEY_HPKE_INFO,
|
|
29
|
+
});
|
|
30
|
+
const ciphertext = await sender.seal(uint8ArrayFromHexString(p256key.privateKey), buildAdditionalAssociatedData(new Uint8Array(sender.enc), targetKeyBytes));
|
|
31
|
+
const ciphertextUint8Array = new Uint8Array(ciphertext);
|
|
32
|
+
// 5: assemble bundle
|
|
33
|
+
const encappedKey = new Uint8Array(sender.enc);
|
|
34
|
+
const compressedEncappedKey = compressRawPublicKey(encappedKey);
|
|
35
|
+
const result = new Uint8Array(compressedEncappedKey.length + ciphertextUint8Array.length);
|
|
36
|
+
result.set(compressedEncappedKey);
|
|
37
|
+
result.set(ciphertextUint8Array, compressedEncappedKey.length);
|
|
38
|
+
const base58encodedBundle = bs58check.encode(result);
|
|
39
|
+
return {
|
|
40
|
+
authBundle: base58encodedBundle,
|
|
41
|
+
publicKey: p256key.publicKey,
|
|
42
|
+
};
|
|
43
|
+
};
|
|
3
44
|
const generateRandomBuffer = () => {
|
|
4
45
|
const arr = new Uint8Array(32);
|
|
5
46
|
crypto.getRandomValues(arr);
|
|
@@ -14,5 +55,5 @@ const base64UrlEncode = (challenge) => {
|
|
|
14
55
|
};
|
|
15
56
|
Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, "0"));
|
|
16
57
|
|
|
17
|
-
export { base64UrlEncode, generateRandomBuffer };
|
|
58
|
+
export { base64UrlEncode, createEmbeddedAPIKey, generateRandomBuffer };
|
|
18
59
|
//# sourceMappingURL=utils.mjs.map
|
package/dist/utils.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.mjs","sources":["../src/utils.ts"],"sourcesContent":[null],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"utils.mjs","sources":["../src/utils.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAaA;AACA;MACa,oBAAoB,GAAG,OAClC,eAAuB,KACI;IAC3B,MAAM,iBAAiB,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;;AAGnE,IAAA,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;;AAGtC,IAAA,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC;QAC5B,GAAG,EAAE,KAAK,CAAC,mBAAmB;QAC9B,GAAG,EAAE,KAAK,CAAC,UAAU;QACrB,IAAI,EAAE,MAAM,CAAC,SAAS;AACvB,KAAA,CAAC,CAAC;;AAGH,IAAA,MAAM,cAAc,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAC;AAChE,IAAA,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAC7C,KAAK,EACL,cAAc,EACd;AACE,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,UAAU,EAAE,OAAO;AACpB,KAAA,EACD,IAAI,EACJ,EAAE,CACH,CAAC;;AAGF,IAAA,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC;AAC7C,QAAA,kBAAkB,EAAE,SAAS;AAC7B,QAAA,IAAI,EAAE,iBAAiB;AACxB,KAAA,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,IAAI,CAClC,uBAAuB,CAAC,OAAO,CAAC,UAAU,CAAC,EAC3C,6BAA6B,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC,CAC1E,CAAC;AACF,IAAA,MAAM,oBAAoB,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;;IAGxD,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/C,IAAA,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;AAChE,IAAA,MAAM,MAAM,GAAG,IAAI,UAAU,CAC3B,qBAAqB,CAAC,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAC3D,CAAC;AACF,IAAA,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAClC,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE/D,MAAM,mBAAmB,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAErD,OAAO;AACL,QAAA,UAAU,EAAE,mBAAmB;QAC/B,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC;AACJ,EAAE;AAEK,MAAM,oBAAoB,GAAG,MAAkB;AACpD,IAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AAC/B,IAAA,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,EAAE;AAEW,MAAA,eAAe,GAAG,CAAC,SAAsB,KAAY;AAChE,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;SAC1B,QAAQ,CAAC,QAAQ,CAAC;AAClB,SAAA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AACnB,SAAA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AACnB,SAAA,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACvB,EAAE;AAEgB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KACjD,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@turnkey/sdk-browser",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"module": "./dist/index.mjs",
|
|
6
6
|
"exports": {
|
|
@@ -38,12 +38,16 @@
|
|
|
38
38
|
"access": "public"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
+
"bs58check": "^3.0.1",
|
|
41
42
|
"buffer": "^6.0.3",
|
|
42
|
-
"elliptic": "^6.5.5",
|
|
43
43
|
"cross-fetch": "^3.1.5",
|
|
44
|
+
"elliptic": "^6.5.5",
|
|
45
|
+
"hpke-js": "^1.2.7",
|
|
44
46
|
"@turnkey/api-key-stamper": "0.4.0",
|
|
45
|
-
"@turnkey/
|
|
47
|
+
"@turnkey/crypto": "0.1.1",
|
|
46
48
|
"@turnkey/http": "2.10.0",
|
|
49
|
+
"@turnkey/encoding": "0.2.0",
|
|
50
|
+
"@turnkey/iframe-stamper": "2.0.0",
|
|
47
51
|
"@turnkey/webauthn-stamper": "0.5.0"
|
|
48
52
|
},
|
|
49
53
|
"devDependencies": {
|