@turnkey/sdk-react 0.2.0 → 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 +17 -0
- package/dist/contexts/TurnkeyContext.d.ts +2 -1
- package/dist/contexts/TurnkeyContext.d.ts.map +1 -1
- package/dist/contexts/TurnkeyContext.js +31 -3
- package/dist/contexts/TurnkeyContext.js.map +1 -1
- package/dist/contexts/TurnkeyContext.mjs +31 -3
- package/dist/contexts/TurnkeyContext.mjs.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# @turnkey/sdk-react
|
|
2
2
|
|
|
3
|
+
## 0.3.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- d409d81: Add support for Passkey Sessions
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [d409d81]
|
|
12
|
+
- @turnkey/sdk-browser@0.3.0
|
|
13
|
+
|
|
14
|
+
## 0.2.1
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- @turnkey/sdk-browser@0.2.1
|
|
19
|
+
|
|
3
20
|
## 0.2.0
|
|
4
21
|
|
|
5
22
|
### Minor Changes
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { ReactNode } from "react";
|
|
2
|
-
import { Turnkey, TurnkeyIframeClient, TurnkeyPasskeyClient, TurnkeySDKBrowserConfig } from "@turnkey/sdk-browser";
|
|
2
|
+
import { Turnkey, TurnkeyIframeClient, TurnkeyPasskeyClient, TurnkeySDKBrowserConfig, TurnkeyBrowserClient } from "@turnkey/sdk-browser";
|
|
3
3
|
export interface TurnkeyClientType {
|
|
4
4
|
turnkey: Turnkey | undefined;
|
|
5
5
|
authIframeClient: TurnkeyIframeClient | undefined;
|
|
6
6
|
passkeyClient: TurnkeyPasskeyClient | undefined;
|
|
7
|
+
getActiveClient: () => Promise<TurnkeyBrowserClient | undefined>;
|
|
7
8
|
}
|
|
8
9
|
export declare const TurnkeyContext: import("react").Context<TurnkeyClientType>;
|
|
9
10
|
interface TurnkeyProviderProps {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TurnkeyContext.d.ts","sourceRoot":"","sources":["../../src/contexts/TurnkeyContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA8C,MAAM,OAAO,CAAC;AAC9E,OAAO,EACL,OAAO,EACP,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,
|
|
1
|
+
{"version":3,"file":"TurnkeyContext.d.ts","sourceRoot":"","sources":["../../src/contexts/TurnkeyContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA8C,MAAM,OAAO,CAAC;AAC9E,OAAO,EACL,OAAO,EACP,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,gBAAgB,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAClD,aAAa,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAChD,eAAe,EAAE,MAAM,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAAC;CAClE;AAED,eAAO,MAAM,cAAc,4CAOzB,CAAC;AAEH,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,uBAAuB,CAAC;CACjC;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAmF1D,CAAC"}
|
|
@@ -8,13 +8,39 @@ const TurnkeyContext = react.createContext({
|
|
|
8
8
|
turnkey: undefined,
|
|
9
9
|
passkeyClient: undefined,
|
|
10
10
|
authIframeClient: undefined,
|
|
11
|
+
getActiveClient: async () => {
|
|
12
|
+
return undefined;
|
|
13
|
+
},
|
|
11
14
|
});
|
|
12
15
|
const TurnkeyProvider = ({ config, children, }) => {
|
|
13
16
|
const [turnkey, setTurnkey] = react.useState(undefined);
|
|
14
17
|
const [passkeyClient, setPasskeyClient] = react.useState(undefined);
|
|
15
18
|
const [authIframeClient, setAuthIframeClient] = react.useState(undefined);
|
|
16
19
|
const iframeInit = react.useRef(false);
|
|
17
|
-
const
|
|
20
|
+
const TurnkeyAuthIframeContainerId = "turnkey-auth-iframe-container-id";
|
|
21
|
+
const TurnkeyAuthIframeElementId = "turnkey-auth-iframe-element-id";
|
|
22
|
+
const getActiveClient = async () => {
|
|
23
|
+
let currentClient = passkeyClient;
|
|
24
|
+
try {
|
|
25
|
+
const authBundle = await turnkey?.getAuthBundle();
|
|
26
|
+
if (authBundle) {
|
|
27
|
+
const injected = await authIframeClient?.injectCredentialBundle(authBundle);
|
|
28
|
+
if (injected) {
|
|
29
|
+
const currentUser = await turnkey?.getCurrentUser();
|
|
30
|
+
await authIframeClient?.getWhoami({
|
|
31
|
+
organizationId: currentUser?.organization.organizationId ??
|
|
32
|
+
turnkey?.config.defaultOrganizationId,
|
|
33
|
+
});
|
|
34
|
+
currentClient = authIframeClient;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
console.error("Failed to use iframe client", err);
|
|
40
|
+
console.log("Defaulting to passkey client");
|
|
41
|
+
}
|
|
42
|
+
return currentClient;
|
|
43
|
+
};
|
|
18
44
|
react.useEffect(() => {
|
|
19
45
|
(async () => {
|
|
20
46
|
if (!iframeInit.current) {
|
|
@@ -23,8 +49,9 @@ const TurnkeyProvider = ({ config, children, }) => {
|
|
|
23
49
|
setTurnkey(newTurnkey);
|
|
24
50
|
setPasskeyClient(newTurnkey.passkeyClient());
|
|
25
51
|
const newAuthIframeClient = await newTurnkey.iframeClient({
|
|
26
|
-
iframeContainer: document.getElementById(
|
|
52
|
+
iframeContainer: document.getElementById(TurnkeyAuthIframeContainerId),
|
|
27
53
|
iframeUrl: "https://auth.turnkey.com",
|
|
54
|
+
iframeElementId: TurnkeyAuthIframeElementId,
|
|
28
55
|
});
|
|
29
56
|
setAuthIframeClient(newAuthIframeClient);
|
|
30
57
|
}
|
|
@@ -34,7 +61,8 @@ const TurnkeyProvider = ({ config, children, }) => {
|
|
|
34
61
|
turnkey,
|
|
35
62
|
passkeyClient,
|
|
36
63
|
authIframeClient,
|
|
37
|
-
|
|
64
|
+
getActiveClient,
|
|
65
|
+
}, children: [children, jsxRuntime.jsx("div", { className: "", id: TurnkeyAuthIframeContainerId, style: { display: "none" } })] }));
|
|
38
66
|
};
|
|
39
67
|
|
|
40
68
|
exports.TurnkeyContext = TurnkeyContext;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TurnkeyContext.js","sources":["../../src/contexts/TurnkeyContext.tsx"],"sourcesContent":[null],"names":["createContext","useState","useRef","useEffect","Turnkey","_jsxs","_jsx"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"TurnkeyContext.js","sources":["../../src/contexts/TurnkeyContext.tsx"],"sourcesContent":[null],"names":["createContext","useState","useRef","useEffect","Turnkey","_jsxs","_jsx"],"mappings":";;;;;;AAgBO,MAAM,cAAc,GAAGA,mBAAa,CAAoB;AAC7D,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,aAAa,EAAE,SAAS;AACxB,IAAA,gBAAgB,EAAE,SAAS;IAC3B,eAAe,EAAE,YAAW;AAC1B,QAAA,OAAO,SAAS,CAAC;KAClB;AACF,CAAA,EAAE;AAOU,MAAA,eAAe,GAAmC,CAAC,EAC9D,MAAM,EACN,QAAQ,GACT,KAAI;IACH,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAGC,cAAQ,CAAsB,SAAS,CAAC,CAAC;IACvE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAGA,cAAQ,CAEhD,SAAS,CAAC,CAAC;IACb,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAGA,cAAQ,CAEtD,SAAS,CAAC,CAAC;AACb,IAAA,MAAM,UAAU,GAAGC,YAAM,CAAU,KAAK,CAAC,CAAC;IAE1C,MAAM,4BAA4B,GAAG,kCAAkC,CAAC;IACxE,MAAM,0BAA0B,GAAG,gCAAgC,CAAC;AAEpE,IAAA,MAAM,eAAe,GAAG,YAAW;QACjC,IAAI,aAAa,GAAqC,aAAa,CAAC;QAEpE,IAAI;AACF,YAAA,MAAM,UAAU,GAAG,MAAM,OAAO,EAAE,aAAa,EAAE,CAAC;AAElD,YAAA,IAAI,UAAU,EAAE;gBACd,MAAM,QAAQ,GAAG,MAAM,gBAAgB,EAAE,sBAAsB,CAC7D,UAAU,CACX,CAAC;AACF,gBAAA,IAAI,QAAQ,EAAE;AACZ,oBAAA,MAAM,WAAW,GAAG,MAAM,OAAO,EAAE,cAAc,EAAE,CAAC;oBACpD,MAAM,gBAAgB,EAAE,SAAS,CAAC;AAChC,wBAAA,cAAc,EACZ,WAAW,EAAE,YAAY,CAAC,cAAc;4BACxC,OAAO,EAAE,MAAM,CAAC,qBAAsB;AACzC,qBAAA,CAAC,CAAC;oBAEH,aAAa,GAAG,gBAAgB,CAAC;AAClC,iBAAA;AACF,aAAA;AACF,SAAA;AAAC,QAAA,OAAO,GAAQ,EAAE;AACjB,YAAA,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;AAClD,YAAA,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;AAC7C,SAAA;AAED,QAAA,OAAO,aAAa,CAAC;AACvB,KAAC,CAAC;IAEFC,eAAS,CAAC,MAAK;QACb,CAAC,YAAW;AACV,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AACvB,gBAAA,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;AAE1B,gBAAA,MAAM,UAAU,GAAG,IAAIC,kBAAO,CAAC,MAAM,CAAC,CAAC;gBACvC,UAAU,CAAC,UAAU,CAAC,CAAC;AACvB,gBAAA,gBAAgB,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;AAE7C,gBAAA,MAAM,mBAAmB,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC;AACxD,oBAAA,eAAe,EAAE,QAAQ,CAAC,cAAc,CACtC,4BAA4B,CAC7B;AACD,oBAAA,SAAS,EAAE,0BAA0B;AACrC,oBAAA,eAAe,EAAE,0BAA0B;AAC5C,iBAAA,CAAC,CAAC;gBACH,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;AAC1C,aAAA;SACF,GAAG,CAAC;KACN,EAAE,EAAE,CAAC,CAAC;AAEP,IAAA,QACEC,eAAC,CAAA,cAAc,CAAC,QAAQ,EAAA,EACtB,KAAK,EAAE;YACL,OAAO;YACP,aAAa;YACb,gBAAgB;YAChB,eAAe;SAChB,EAEA,QAAA,EAAA,CAAA,QAAQ,EACTC,cACE,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,EAAE,EACZ,EAAE,EAAE,4BAA4B,EAChC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAA,CAC1B,CACsB,EAAA,CAAA,EAC1B;AACJ;;;;;"}
|
|
@@ -6,13 +6,39 @@ const TurnkeyContext = createContext({
|
|
|
6
6
|
turnkey: undefined,
|
|
7
7
|
passkeyClient: undefined,
|
|
8
8
|
authIframeClient: undefined,
|
|
9
|
+
getActiveClient: async () => {
|
|
10
|
+
return undefined;
|
|
11
|
+
},
|
|
9
12
|
});
|
|
10
13
|
const TurnkeyProvider = ({ config, children, }) => {
|
|
11
14
|
const [turnkey, setTurnkey] = useState(undefined);
|
|
12
15
|
const [passkeyClient, setPasskeyClient] = useState(undefined);
|
|
13
16
|
const [authIframeClient, setAuthIframeClient] = useState(undefined);
|
|
14
17
|
const iframeInit = useRef(false);
|
|
15
|
-
const
|
|
18
|
+
const TurnkeyAuthIframeContainerId = "turnkey-auth-iframe-container-id";
|
|
19
|
+
const TurnkeyAuthIframeElementId = "turnkey-auth-iframe-element-id";
|
|
20
|
+
const getActiveClient = async () => {
|
|
21
|
+
let currentClient = passkeyClient;
|
|
22
|
+
try {
|
|
23
|
+
const authBundle = await turnkey?.getAuthBundle();
|
|
24
|
+
if (authBundle) {
|
|
25
|
+
const injected = await authIframeClient?.injectCredentialBundle(authBundle);
|
|
26
|
+
if (injected) {
|
|
27
|
+
const currentUser = await turnkey?.getCurrentUser();
|
|
28
|
+
await authIframeClient?.getWhoami({
|
|
29
|
+
organizationId: currentUser?.organization.organizationId ??
|
|
30
|
+
turnkey?.config.defaultOrganizationId,
|
|
31
|
+
});
|
|
32
|
+
currentClient = authIframeClient;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
console.error("Failed to use iframe client", err);
|
|
38
|
+
console.log("Defaulting to passkey client");
|
|
39
|
+
}
|
|
40
|
+
return currentClient;
|
|
41
|
+
};
|
|
16
42
|
useEffect(() => {
|
|
17
43
|
(async () => {
|
|
18
44
|
if (!iframeInit.current) {
|
|
@@ -21,8 +47,9 @@ const TurnkeyProvider = ({ config, children, }) => {
|
|
|
21
47
|
setTurnkey(newTurnkey);
|
|
22
48
|
setPasskeyClient(newTurnkey.passkeyClient());
|
|
23
49
|
const newAuthIframeClient = await newTurnkey.iframeClient({
|
|
24
|
-
iframeContainer: document.getElementById(
|
|
50
|
+
iframeContainer: document.getElementById(TurnkeyAuthIframeContainerId),
|
|
25
51
|
iframeUrl: "https://auth.turnkey.com",
|
|
52
|
+
iframeElementId: TurnkeyAuthIframeElementId,
|
|
26
53
|
});
|
|
27
54
|
setAuthIframeClient(newAuthIframeClient);
|
|
28
55
|
}
|
|
@@ -32,7 +59,8 @@ const TurnkeyProvider = ({ config, children, }) => {
|
|
|
32
59
|
turnkey,
|
|
33
60
|
passkeyClient,
|
|
34
61
|
authIframeClient,
|
|
35
|
-
|
|
62
|
+
getActiveClient,
|
|
63
|
+
}, children: [children, jsx("div", { className: "", id: TurnkeyAuthIframeContainerId, style: { display: "none" } })] }));
|
|
36
64
|
};
|
|
37
65
|
|
|
38
66
|
export { TurnkeyContext, TurnkeyProvider };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TurnkeyContext.mjs","sources":["../../src/contexts/TurnkeyContext.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"TurnkeyContext.mjs","sources":["../../src/contexts/TurnkeyContext.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@turnkey/sdk-react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"module": "./dist/index.mjs",
|
|
6
6
|
"exports": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"access": "public"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@turnkey/sdk-browser": "0.
|
|
41
|
+
"@turnkey/sdk-browser": "0.3.0"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
44
|
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
|