@strivacity/sdk-react 3.0.3 → 4.0.0-beta.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 +1 -1
- package/README.md +1562 -406
- package/dist/assets/rolldown-runtime.cjs +1 -0
- package/dist/assets/rolldown-runtime.mjs +1 -0
- package/dist/components.cjs +2 -0
- package/dist/components.cjs.map +1 -0
- package/dist/components.d.ts +11 -0
- package/dist/components.mjs +2 -0
- package/dist/components.mjs.map +1 -0
- package/dist/errors.cjs +2 -0
- package/dist/errors.cjs.map +1 -0
- package/dist/errors.d.ts +1 -0
- package/dist/errors.mjs +2 -0
- package/dist/errors.mjs.map +1 -0
- package/dist/hooks.cjs +2 -0
- package/dist/hooks.cjs.map +1 -0
- package/dist/hooks.d.ts +33 -0
- package/dist/hooks.mjs +2 -0
- package/dist/hooks.mjs.map +1 -0
- package/dist/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +9 -13
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/dist/storages.cjs +1 -0
- package/dist/storages.d.ts +1 -0
- package/dist/storages.mjs +1 -0
- package/dist/types.cjs +1 -2
- package/dist/types.d.ts +147 -110
- package/dist/types.mjs +1 -2
- package/dist/utils.cjs +1 -0
- package/dist/utils.d.ts +1 -0
- package/dist/utils.mjs +1 -0
- package/package.json +51 -7
- package/testing/tests/components.spec.tsx +146 -0
- package/testing/tests/errors.spec.ts +10 -0
- package/testing/tests/guard.spec.tsx +119 -0
- package/testing/tests/hooks.spec.tsx +418 -0
- package/testing/tests/index.spec.ts +105 -0
- package/testing/tests/storages.spec.ts +10 -0
- package/testing/tests/utils.spec.ts +10 -0
- package/testing/utils/common.tsx +63 -0
- package/dist/AuthProvider.cjs +0 -2
- package/dist/AuthProvider.cjs.map +0 -1
- package/dist/AuthProvider.d.ts +0 -7
- package/dist/AuthProvider.mjs +0 -2
- package/dist/AuthProvider.mjs.map +0 -1
- package/dist/LoginRenderer.cjs +0 -2
- package/dist/LoginRenderer.cjs.map +0 -1
- package/dist/LoginRenderer.d.ts +0 -20
- package/dist/LoginRenderer.mjs +0 -2
- package/dist/LoginRenderer.mjs.map +0 -1
- package/dist/composables.cjs +0 -2
- package/dist/composables.cjs.map +0 -1
- package/dist/composables.d.ts +0 -12
- package/dist/composables.mjs +0 -2
- package/dist/composables.mjs.map +0 -1
- package/dist/types.cjs.map +0 -1
- package/dist/types.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=Object.defineProperty,t=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,i=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r},a=(i,a,o,s)=>{if(a&&typeof a==`object`||typeof a==`function`)for(var c=n(a),l=0,u=c.length,d;l<u;l++)d=c[l],!r.call(i,d)&&d!==o&&e(i,d,{get:(e=>a[e]).bind(null,d),enumerable:!(s=t(a,d))||s.enumerable});return i},o=(e,t,n)=>(a(e,t,`default`),n&&a(n,t,`default`));Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return i}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=Object.defineProperty,t=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,i=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r},a=(i,a,o,s)=>{if(a&&typeof a==`object`||typeof a==`function`)for(var c=n(a),l=0,u=c.length,d;l<u;l++)d=c[l],!r.call(i,d)&&d!==o&&e(i,d,{get:(e=>a[e]).bind(null,d),enumerable:!(s=t(a,d))||s.enumerable});return i},o=(e,t,n)=>(a(e,t,`default`),n&&a(n,t,`default`));export{o as n,i as t};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./hooks.cjs");let t=require("react"),n=require("@strivacity/sdk-core"),r=require("react/jsx-runtime");var i;function a({options:a,session:o,children:s}){let[c,l]=(0,t.useState)(!0),[u,d]=(0,t.useState)(globalThis.navigator?.language??`en-US`),[f,p]=(0,t.useState)(!1),[m,h]=(0,t.useState)(null),[g,_]=(0,t.useState)(null),[v,y]=(0,t.useState)(null),[b,x]=(0,t.useState)(!0),[S,C]=(0,t.useState)(null),w=async()=>{let e=await i.isAuthenticated;c&&l(!1),i.language!==u&&d(i.language),e!==f&&p(e),i.idTokenClaims!==m&&h(i.idTokenClaims||null),i.accessToken!==g&&_(i.accessToken||null),i.refreshToken!==v&&y(i.refreshToken||null),i.accessTokenExpired!==b&&x(i.accessTokenExpired),i.accessTokenExpirationDate!==S&&C(i.accessTokenExpirationDate||null)};(0,t.useEffect)(()=>{i=(0,n.initFlow)(a);let e=i.subscribeToAllEvents(w);return o&&(i.session=o),w(),()=>{e.dispose()}},[]);let T=(0,t.useMemo)(()=>({sdk:i,loading:c,language:u,isAuthenticated:f,idTokenClaims:m,accessToken:g,refreshToken:v,accessTokenExpired:b,accessTokenExpirationDate:S,init:()=>i.init(),subscribeToEvent:((...e)=>i.subscribeToEvent(...e)),subscribeToAllEvents:(...e)=>i.subscribeToAllEvents(...e),checkAuthentication:(...e)=>i.checkAuthentication(...e),tokenExchange:(...e)=>i.tokenExchange(...e),handleCallback:(...e)=>i.handleCallback(...e),refresh:()=>i.refresh(),revoke:()=>i.revoke(),logout:(...e)=>i.logout(...e),login:(...e)=>i.login(...e),register:(...e)=>i.register(...e),entry:(...e)=>i.entry(...e)}),[i,c,f,m,g,v,b,S]);return(0,r.jsx)(e.STRIVACITY_SDK.Provider,{value:T,children:s})}exports.StyAuthProvider=a;
|
|
2
|
+
//# sourceMappingURL=components.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components.cjs","names":[],"sources":["../src/components.tsx"],"sourcesContent":["'use client';\n\nimport type { IdTokenClaims, RedirectFlow, PopupFlow, EmbeddedFlow, NativeFlow, SDKContext, SDKInstance, StyAuthProviderProps } from './types';\nimport { type JSX, useEffect, useMemo, useState } from 'react';\nimport { initFlow } from '@strivacity/sdk-core';\nimport { STRIVACITY_SDK } from './hooks';\n\nlet sdk: SDKInstance;\n\n/**\n * The `StyAuthProvider` component is a React context provider that initializes the Strivacity SDK and provides its state and methods to the rest of the application.\n *\n * @param {StyAuthProviderProps} props - The properties for the `StyAuthProvider` component.\n * @param {SDKInitConfig} props.options - The configuration options for initializing the Strivacity SDK.\n * @param {ReactNode} props.children - The child components that will have access to the SDK context.\n * @param {SessionData | null} [props.session] - Optional session data to initialize the SDK with.\n */\nexport function StyAuthProvider({ options, session, children }: StyAuthProviderProps): JSX.Element {\n\tconst [loading, setLoading] = useState<boolean>(true);\n\tconst [language, setLanguage] = useState<string>(globalThis.navigator?.language ?? 'en-US');\n\tconst [isAuthenticated, setIsAuthenticated] = useState<boolean>(false);\n\tconst [idTokenClaims, setIdTokenClaims] = useState<IdTokenClaims | null>(null);\n\tconst [accessToken, setAccessToken] = useState<string | null>(null);\n\tconst [refreshToken, setRefreshToken] = useState<string | null>(null);\n\tconst [accessTokenExpired, setAccessTokenExpired] = useState<boolean>(true);\n\tconst [accessTokenExpirationDate, setAccessTokenExpirationDate] = useState<number | null>(null);\n\n\tconst updateSession = async () => {\n\t\tconst authenticated = await sdk.isAuthenticated;\n\n\t\tif (loading) {\n\t\t\tsetLoading(false);\n\t\t}\n\t\tif (sdk.language !== language) {\n\t\t\tsetLanguage(sdk.language);\n\t\t}\n\t\tif (authenticated !== isAuthenticated) {\n\t\t\tsetIsAuthenticated(authenticated);\n\t\t}\n\t\tif (sdk.idTokenClaims !== idTokenClaims) {\n\t\t\tsetIdTokenClaims(sdk.idTokenClaims || null);\n\t\t}\n\t\tif (sdk.accessToken !== accessToken) {\n\t\t\tsetAccessToken(sdk.accessToken || null);\n\t\t}\n\t\tif (sdk.refreshToken !== refreshToken) {\n\t\t\tsetRefreshToken(sdk.refreshToken || null);\n\t\t}\n\t\tif (sdk.accessTokenExpired !== accessTokenExpired) {\n\t\t\tsetAccessTokenExpired(sdk.accessTokenExpired);\n\t\t}\n\t\tif (sdk.accessTokenExpirationDate !== accessTokenExpirationDate) {\n\t\t\tsetAccessTokenExpirationDate(sdk.accessTokenExpirationDate || null);\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\tsdk = initFlow(options as never);\n\t\tconst sdkEvents = sdk.subscribeToAllEvents(updateSession);\n\n\t\tif (session) {\n\t\t\tsdk.session = session;\n\t\t}\n\n\t\tvoid updateSession();\n\n\t\treturn () => {\n\t\t\tsdkEvents.dispose();\n\t\t};\n\t}, []);\n\n\tconst value = useMemo<SDKContext<RedirectFlow | PopupFlow | NativeFlow | EmbeddedFlow>>(() => {\n\t\treturn {\n\t\t\tsdk,\n\t\t\tloading,\n\t\t\tlanguage,\n\t\t\tisAuthenticated,\n\t\t\tidTokenClaims,\n\t\t\taccessToken,\n\t\t\trefreshToken,\n\t\t\taccessTokenExpired,\n\t\t\taccessTokenExpirationDate,\n\t\t\tinit: () => sdk.init(),\n\t\t\tsubscribeToEvent: ((...args: Parameters<typeof sdk.subscribeToEvent>) => sdk.subscribeToEvent(...args)) as typeof sdk.subscribeToEvent,\n\t\t\tsubscribeToAllEvents: (...args: Parameters<typeof sdk.subscribeToAllEvents>) => sdk.subscribeToAllEvents(...args),\n\t\t\tcheckAuthentication: (...args: Parameters<typeof sdk.checkAuthentication>) => sdk.checkAuthentication(...args),\n\t\t\ttokenExchange: (...args: Parameters<typeof sdk.tokenExchange>) => sdk.tokenExchange(...args),\n\t\t\thandleCallback: (...args: Parameters<typeof sdk.handleCallback>) => sdk.handleCallback(...args),\n\t\t\trefresh: () => sdk.refresh(),\n\t\t\trevoke: () => sdk.revoke(),\n\t\t\tlogout: (...args: Parameters<typeof sdk.logout>) => sdk.logout(...args),\n\t\t\tlogin: (...args: Parameters<typeof sdk.login>) => sdk.login(...args),\n\t\t\tregister: (...args: Parameters<typeof sdk.register>) => sdk.register(...args),\n\t\t\tentry: (...args: Parameters<typeof sdk.entry>) => sdk.entry(...args),\n\t\t};\n\t}, [sdk, loading, isAuthenticated, idTokenClaims, accessToken, refreshToken, accessTokenExpired, accessTokenExpirationDate]);\n\n\treturn <STRIVACITY_SDK.Provider value={value}>{children}</STRIVACITY_SDK.Provider>;\n}\n"],"mappings":"oNAiBA,IAAA,EACC,SAAO,EAAS,CAAA,UAAc,UAAA,YAAsB,CACpD,GAAM,CAAC,EAAA,IAAU,EAAA,EAAe,SAAA,CAAA,EAAiB,EAC3C,CAAC,EAAA,IAAiB,EAAA,EAAA,SAAsB,CAAA,WAAA,WAAuB,UAAA,OAAA,EAC/D,CAAC,EAAe,IAAoB,EAAA,EAAA,SAA+B,CAAI,EAAA,EACvE,CAAC,EAAa,IAAkB,EAAA,EAAA,SAAwB,CAAI,IAAA,EAC5D,CAAC,EAAA,IAAc,EAAA,EAAmB,SAAA,CAAA,IAAwB,EAC1D,CAAC,EAAA,IAAoB,EAAA,EAAA,SAAyB,CAAA,IAAA,EAC9C,CAAC,EAAA,IAA2B,EAAA,EAAA,SAAgC,CAAA,EAAA,EAE5D,CAAA,EAA4B,IAAA,EAAA,EAAA,SAAA,CAAA,IAAA,EACjC,EAAM,SAA0B,CAEhC,IAAI,EACH,MAAW,EAAK,gBAEb,GAAI,EAAa,EAAA,EAGjB,EAAA,WAAA,GAAkB,EACrB,EAAA,QAAA,EAEG,IAAI,GAAkB,EACR,CAAI,EAElB,EAAI,gBAAgB,GACvB,EAAmB,EAAA,eAAmB,IAAA,EAEnC,EAAI,cAAA,GAAiB,EACxB,EAAgB,aAAI,IAAgB,EAEjC,EAAI,eAAA,GAAuB,EAC9B,EAAA,cAAsB,IAAI,EAEvB,EAAI,qBAAA,GAA8B,EACrC,EAAA,kBAA6B,EAE/B,EAAA,4BAAA,GAAA,EAAA,EAAA,2BAAA,IAAA,CAEA,GACC,EAAA,EAAA,UAAM,KAAA,CACN,GAAM,EAAA,EAAgB,SAAA,CAAA,CAAqB,EAE3C,IAAI,EACC,EAAA,qBAAU,CAAA,EAMd,OAHI,IAAA,EAAc,QAAA,GAEnB,EAAa,MACF,CACX,EAAA,QAAA,CACD,CAEA,EAAA,CAAA,CAAA,EACC,IAAA,GAAO,EAAA,EAAA,QAAA,MACN,CACA,MACA,UACA,WACA,kBACA,gBACA,cACA,eACA,qBACA,4BACA,SAAA,EAAA,KAAoB,EACpB,mBAAA,GAAuB,IAAG,EAAsD,iBAAI,GAAA,CAAqB,GACzG,sBAAsB,GAAG,IAAqD,EAAI,qBAAoB,GAAG,CAAI,EAC7G,qBAAmB,GAAA,IAAmD,EAAA,oBAAqB,GAAA,CAAA,EAC3F,eAAA,GAAiB,IAAG,EAAgD,cAAI,GAAe,CAAG,EAC1F,gBAAe,GAAI,IAAQ,EAAA,eAAA,GAAA,CAAA,EAC3B,YAAc,EAAI,QAAO,EACzB,WAAY,EAAA,OAA4C,EACxD,QAAQ,GAAG,IAAuC,EAAI,OAAM,GAAG,CAAI,EACnE,OAAA,GAAW,IAAG,EAA0C,MAAI,GAAA,CAAS,EACrE,UAAW,GAAA,IAAuC,EAAI,SAAS,GAAI,CAAA,EACpE,OAAA,GAAA,IAAA,EAAA,MAAA,GAAA,CAAA,CACD,GAAI,CAAK,EAAS,EAAiB,EAAe,EAAa,EAAc,EAAoB,EAA0B,CAE3H,CAAA,EAAuC,OAAA,EAAA,EAAA,IAAA,CAAA,EAAA,eAAA,SAAA,CAAQ,QAAkC,UAClF,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { StyAuthProviderProps } from './types';
|
|
2
|
+
import { JSX } from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* The `StyAuthProvider` component is a React context provider that initializes the Strivacity SDK and provides its state and methods to the rest of the application.
|
|
5
|
+
*
|
|
6
|
+
* @param {StyAuthProviderProps} props - The properties for the `StyAuthProvider` component.
|
|
7
|
+
* @param {SDKInitConfig} props.options - The configuration options for initializing the Strivacity SDK.
|
|
8
|
+
* @param {ReactNode} props.children - The child components that will have access to the SDK context.
|
|
9
|
+
* @param {SessionData | null} [props.session] - Optional session data to initialize the SDK with.
|
|
10
|
+
*/
|
|
11
|
+
export declare function StyAuthProvider({ options, session, children }: StyAuthProviderProps): JSX.Element;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";"use client";import{STRIVACITY_SDK as e}from"./hooks.mjs";import{useEffect as t,useMemo as n,useState as r}from"react";import{initFlow as i}from"@strivacity/sdk-core";import{jsx as a}from"react/jsx-runtime";var o;function s({options:s,session:c,children:l}){let[u,d]=r(!0),[f,p]=r(globalThis.navigator?.language??`en-US`),[m,h]=r(!1),[g,_]=r(null),[v,y]=r(null),[b,x]=r(null),[S,C]=r(!0),[w,T]=r(null),E=async()=>{let e=await o.isAuthenticated;u&&d(!1),o.language!==f&&p(o.language),e!==m&&h(e),o.idTokenClaims!==g&&_(o.idTokenClaims||null),o.accessToken!==v&&y(o.accessToken||null),o.refreshToken!==b&&x(o.refreshToken||null),o.accessTokenExpired!==S&&C(o.accessTokenExpired),o.accessTokenExpirationDate!==w&&T(o.accessTokenExpirationDate||null)};t(()=>{o=i(s);let e=o.subscribeToAllEvents(E);return c&&(o.session=c),E(),()=>{e.dispose()}},[]);let D=n(()=>({sdk:o,loading:u,language:f,isAuthenticated:m,idTokenClaims:g,accessToken:v,refreshToken:b,accessTokenExpired:S,accessTokenExpirationDate:w,init:()=>o.init(),subscribeToEvent:((...e)=>o.subscribeToEvent(...e)),subscribeToAllEvents:(...e)=>o.subscribeToAllEvents(...e),checkAuthentication:(...e)=>o.checkAuthentication(...e),tokenExchange:(...e)=>o.tokenExchange(...e),handleCallback:(...e)=>o.handleCallback(...e),refresh:()=>o.refresh(),revoke:()=>o.revoke(),logout:(...e)=>o.logout(...e),login:(...e)=>o.login(...e),register:(...e)=>o.register(...e),entry:(...e)=>o.entry(...e)}),[o,u,m,g,v,b,S,w]);return a(e.Provider,{value:D,children:l})}export{s as StyAuthProvider};
|
|
2
|
+
//# sourceMappingURL=components.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components.mjs","names":[],"sources":["../src/components.tsx"],"sourcesContent":["'use client';\n\nimport type { IdTokenClaims, RedirectFlow, PopupFlow, EmbeddedFlow, NativeFlow, SDKContext, SDKInstance, StyAuthProviderProps } from './types';\nimport { type JSX, useEffect, useMemo, useState } from 'react';\nimport { initFlow } from '@strivacity/sdk-core';\nimport { STRIVACITY_SDK } from './hooks';\n\nlet sdk: SDKInstance;\n\n/**\n * The `StyAuthProvider` component is a React context provider that initializes the Strivacity SDK and provides its state and methods to the rest of the application.\n *\n * @param {StyAuthProviderProps} props - The properties for the `StyAuthProvider` component.\n * @param {SDKInitConfig} props.options - The configuration options for initializing the Strivacity SDK.\n * @param {ReactNode} props.children - The child components that will have access to the SDK context.\n * @param {SessionData | null} [props.session] - Optional session data to initialize the SDK with.\n */\nexport function StyAuthProvider({ options, session, children }: StyAuthProviderProps): JSX.Element {\n\tconst [loading, setLoading] = useState<boolean>(true);\n\tconst [language, setLanguage] = useState<string>(globalThis.navigator?.language ?? 'en-US');\n\tconst [isAuthenticated, setIsAuthenticated] = useState<boolean>(false);\n\tconst [idTokenClaims, setIdTokenClaims] = useState<IdTokenClaims | null>(null);\n\tconst [accessToken, setAccessToken] = useState<string | null>(null);\n\tconst [refreshToken, setRefreshToken] = useState<string | null>(null);\n\tconst [accessTokenExpired, setAccessTokenExpired] = useState<boolean>(true);\n\tconst [accessTokenExpirationDate, setAccessTokenExpirationDate] = useState<number | null>(null);\n\n\tconst updateSession = async () => {\n\t\tconst authenticated = await sdk.isAuthenticated;\n\n\t\tif (loading) {\n\t\t\tsetLoading(false);\n\t\t}\n\t\tif (sdk.language !== language) {\n\t\t\tsetLanguage(sdk.language);\n\t\t}\n\t\tif (authenticated !== isAuthenticated) {\n\t\t\tsetIsAuthenticated(authenticated);\n\t\t}\n\t\tif (sdk.idTokenClaims !== idTokenClaims) {\n\t\t\tsetIdTokenClaims(sdk.idTokenClaims || null);\n\t\t}\n\t\tif (sdk.accessToken !== accessToken) {\n\t\t\tsetAccessToken(sdk.accessToken || null);\n\t\t}\n\t\tif (sdk.refreshToken !== refreshToken) {\n\t\t\tsetRefreshToken(sdk.refreshToken || null);\n\t\t}\n\t\tif (sdk.accessTokenExpired !== accessTokenExpired) {\n\t\t\tsetAccessTokenExpired(sdk.accessTokenExpired);\n\t\t}\n\t\tif (sdk.accessTokenExpirationDate !== accessTokenExpirationDate) {\n\t\t\tsetAccessTokenExpirationDate(sdk.accessTokenExpirationDate || null);\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\tsdk = initFlow(options as never);\n\t\tconst sdkEvents = sdk.subscribeToAllEvents(updateSession);\n\n\t\tif (session) {\n\t\t\tsdk.session = session;\n\t\t}\n\n\t\tvoid updateSession();\n\n\t\treturn () => {\n\t\t\tsdkEvents.dispose();\n\t\t};\n\t}, []);\n\n\tconst value = useMemo<SDKContext<RedirectFlow | PopupFlow | NativeFlow | EmbeddedFlow>>(() => {\n\t\treturn {\n\t\t\tsdk,\n\t\t\tloading,\n\t\t\tlanguage,\n\t\t\tisAuthenticated,\n\t\t\tidTokenClaims,\n\t\t\taccessToken,\n\t\t\trefreshToken,\n\t\t\taccessTokenExpired,\n\t\t\taccessTokenExpirationDate,\n\t\t\tinit: () => sdk.init(),\n\t\t\tsubscribeToEvent: ((...args: Parameters<typeof sdk.subscribeToEvent>) => sdk.subscribeToEvent(...args)) as typeof sdk.subscribeToEvent,\n\t\t\tsubscribeToAllEvents: (...args: Parameters<typeof sdk.subscribeToAllEvents>) => sdk.subscribeToAllEvents(...args),\n\t\t\tcheckAuthentication: (...args: Parameters<typeof sdk.checkAuthentication>) => sdk.checkAuthentication(...args),\n\t\t\ttokenExchange: (...args: Parameters<typeof sdk.tokenExchange>) => sdk.tokenExchange(...args),\n\t\t\thandleCallback: (...args: Parameters<typeof sdk.handleCallback>) => sdk.handleCallback(...args),\n\t\t\trefresh: () => sdk.refresh(),\n\t\t\trevoke: () => sdk.revoke(),\n\t\t\tlogout: (...args: Parameters<typeof sdk.logout>) => sdk.logout(...args),\n\t\t\tlogin: (...args: Parameters<typeof sdk.login>) => sdk.login(...args),\n\t\t\tregister: (...args: Parameters<typeof sdk.register>) => sdk.register(...args),\n\t\t\tentry: (...args: Parameters<typeof sdk.entry>) => sdk.entry(...args),\n\t\t};\n\t}, [sdk, loading, isAuthenticated, idTokenClaims, accessToken, refreshToken, accessTokenExpired, accessTokenExpirationDate]);\n\n\treturn <STRIVACITY_SDK.Provider value={value}>{children}</STRIVACITY_SDK.Provider>;\n}\n"],"mappings":"4NAiBA,IAAA,EACC,SAAO,EAAS,CAAA,UAAc,UAAsB,YAAA,CACpD,GAAM,CAAC,EAAA,GAAU,EAAe,EAAiB,EAC3C,CAAC,EAAA,GAAiB,EAAA,WAAsB,WAAuB,UAAA,OAAA,EAC/D,CAAC,EAAe,GAAoB,EAAmC,EAAA,EACvE,CAAC,EAAa,GAAkB,EAA4B,IAAA,EAC5D,CAAC,EAAA,GAAc,EAAmB,IAAwB,EAC1D,CAAC,EAAA,GAAoB,EAAA,IAAyB,EAC9C,CAAC,EAAA,GAA2B,EAAA,EAAA,EAE5B,CAAA,EAA4B,GAAA,EAAA,IAAA,EACjC,EAAM,SAA0B,CAEhC,IAAI,EACH,MAAW,EAAK,gBAEb,GAAI,EAAa,EAAA,EAGjB,EAAA,WAAA,GAAkB,EACrB,EAAA,QAAA,EAEG,IAAI,GAAkB,EACR,CAAI,EAElB,EAAI,gBAAgB,GACvB,EAAmB,EAAA,eAAmB,IAAA,EAEnC,EAAI,cAAA,GAAiB,EACxB,EAAgB,aAAI,IAAgB,EAEjC,EAAI,eAAA,GAAuB,EAC9B,EAAA,cAAsB,IAAI,EAEvB,EAAI,qBAAA,GAA8B,EACrC,EAAA,kBAA6B,EAE/B,EAAA,4BAAA,GAAA,EAAA,EAAA,2BAAA,IAAA,CAEA,EACC,MAAe,CACf,EAAM,EAAA,CAAgB,EAEtB,IAAI,EACC,EAAA,qBAAU,CAAA,EAMd,OAHI,IAAA,EAAc,QAAA,GAEnB,EAAa,MACF,CACX,EAAA,QAAA,CACD,CAEA,EAAA,CAAA,CAAA,EACC,IAAA,EAAO,OACN,CACA,MACA,UACA,WACA,kBACA,gBACA,cACA,eACA,qBACA,4BACA,SAAA,EAAA,KAAoB,EACpB,mBAAA,GAAuB,IAAG,EAAsD,iBAAI,GAAA,CAAqB,GACzG,sBAAsB,GAAG,IAAqD,EAAI,qBAAoB,GAAG,CAAI,EAC7G,qBAAmB,GAAA,IAAmD,EAAA,oBAAqB,GAAA,CAAA,EAC3F,eAAA,GAAiB,IAAG,EAAgD,cAAI,GAAe,CAAG,EAC1F,gBAAe,GAAI,IAAQ,EAAA,eAAA,GAAA,CAAA,EAC3B,YAAc,EAAI,QAAO,EACzB,WAAY,EAAA,OAA4C,EACxD,QAAQ,GAAG,IAAuC,EAAI,OAAM,GAAG,CAAI,EACnE,OAAA,GAAW,IAAG,EAA0C,MAAI,GAAA,CAAS,EACrE,UAAW,GAAA,IAAuC,EAAI,SAAS,GAAI,CAAA,EACpE,OAAA,GAAA,IAAA,EAAA,MAAA,GAAA,CAAA,CACD,GAAI,CAAK,EAAS,EAAiB,EAAe,EAAa,EAAc,EAAoB,EAA0B,CAE3H,CAAA,EAAuC,OAAA,EAAA,EAAA,SAAA,CAAQ,QAAkC,UAClF,CAAA"}
|
package/dist/errors.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./assets/rolldown-runtime.cjs");var t=e.t({});e.n(t,require("@strivacity/sdk-core/utils/errors")),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return t}});var n=require("@strivacity/sdk-core/utils/errors");Object.keys(n).forEach(function(e){e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:function(){return n[e]}})});
|
|
2
|
+
//# sourceMappingURL=errors.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.cjs","names":[],"sources":["../src/errors.ts"],"sourcesContent":["export * from '@strivacity/sdk-core/utils/errors';\n"],"mappings":""}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@strivacity/sdk-core/utils/errors';
|
package/dist/errors.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.mjs","names":[],"sources":["../src/errors.ts"],"sourcesContent":["export * from '@strivacity/sdk-core/utils/errors';\n"],"mappings":""}
|
package/dist/hooks.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./errors.cjs");let t=require("@strivacity/sdk-core/utils"),n=require("react"),r=require("react/jsx-runtime");var i=(0,n.createContext)(null),a=new Set,o={loading:!0,forms:{},messages:{},state:{},triggerFallback:()=>void 0,triggerClose:()=>void 0,submitForm:async()=>Promise.resolve(void 0),setFormValue:()=>void 0,setMessage:()=>void 0},s=o,c={subscribe:e=>(a.add(e),()=>{a.delete(e)}),notify:()=>{a.forEach(e=>e())},get:()=>s,set:e=>{s=e}},l=()=>(0,n.useSyncExternalStore)(c.subscribe,c.get),u=()=>{let e=(0,n.useContext)(i);if(!e)throw Error(`Missing SDK context`);return e};function d(r={}){let{sdk:i}=u(),a=(0,n.useRef)(r),s=(0,n.useRef)({}),[l,d]=(0,n.useState)(!0),[f,p]=(0,n.useState)({}),[m,h]=(0,n.useState)({}),[g,_]=(0,n.useState)({});(0,n.useEffect)(()=>{a.current=r},[r]),(0,n.useEffect)(()=>{s.current=g},[g]);let v=(0,n.useCallback)(async e=>{if(i.session)return await a.current.onLogin?.(i.session);let t={hostedUrl:e?.hostedUrl??s.current.hostedUrl,finalizeUrl:e?.finalizeUrl??s.current.finalizeUrl,screen:e?.screen??s.current.screen,forms:e?.forms??s.current.forms,layout:e?.layout??s.current.layout,messages:e?.messages??{},branding:e?.branding??s.current.branding};if(t.screen!==s.current.screen){let e={},n={};for(let r of t.forms??[])e[r.id]={},n[r.id]={};p(e),h(n)}else i.logging?.info(`Updating screen: ${t.screen}`);h(e=>{let n={...e};return Object.keys(t.messages??{}).forEach(e=>{e===`global`?a.current.onGlobalMessage?.(t.messages?.global):n[e]=t.messages[e]??{}}),n}),_(t),t.finalizeUrl||d(!1)},[i]),y=(0,n.useCallback)(async(t={})=>{try{d(!0);let e=await i.startSession(t);e&&await v(e)}catch(t){t instanceof e.t.FallbackError?(i.logging?.error(`Fallback error occurred`,t),a.current.onFallback?.(t)):(i.logging?.error(`Error starting session`,t),a.current.onError?.(t))}},[v,i]),b=(0,n.useCallback)(t=>{if(i.logging?.warn(t?`Triggering fallback due to: ${t}`:`Triggering fallback`),!s.current.hostedUrl){let e=Error(`No hosted URL provided`);throw i.logging?.error(`Fallback error`,e),e}a.current.onFallback?.(new e.t.FallbackError(new URL(s.current.hostedUrl)))},[i]),x=(0,n.useCallback)(()=>{i.logging?.debug(`Triggering close`),a.current.onClose?.()},[i]),S=(0,n.useCallback)(async(n,r)=>{try{d(!0);let e=await i.submitForm(n,r??(0,t.unflattenObject)(f[n]??{}));e&&await v(e)}catch(t){t instanceof e.t.FallbackError?(i.logging?.error(`Fallback error occurred`,t),a.current.onFallback?.(t)):(i.logging?.error(`Error submitting form`,t),a.current.onError?.(t))}},[f,v,i]),C=(0,n.useCallback)((e,t,n)=>{p(r=>({...r,[e]:{...r[e]??{},[t]:n===``?null:n}}))},[]),w=(0,n.useCallback)((e,t,n)=>{h(r=>({...r,[e]:{...r[e]??{},[t]:n}}))},[]);(0,n.useEffect)(()=>{if(!i)return;let e=new AbortController;return i.init().then(()=>{y(a.current.params).catch(e=>{e instanceof DOMException&&e.name===`AbortError`||(i.logging?.error(`Error fetching authorization URI`,e),a.current.onError?.(e),d(!1))})}).catch(e=>{i.logging?.error(`Error initializing SDK`,e),a.current.onError?.(e),d(!1)}),()=>{e.abort()}},[i,y]);let T=(0,n.useMemo)(()=>({loading:l,forms:f,messages:m,state:g,triggerFallback:b,triggerClose:x,submitForm:S,setFormValue:C,setMessage:w}),[l,f,m,g,b,x,S,C,w]);return c.set(T),(0,n.useEffect)(()=>(c.set(T),c.notify(),()=>{c.set(o),c.notify()}),[T]),T}function f(e,t){return function(i){let{loading:a,sdk:o}=u(),[s,c]=(0,n.useState)(null);return(0,n.useEffect)(()=>{if(a)return;let e=!1;return o.checkAuthentication().then(n=>{e||(c(n),n||(t??={},t.loginUri??=`/login`,globalThis.location.href=t.loginUri))}),()=>{e=!0}},[a,o]),a||!s?t?.onLoading?.()??null:(0,r.jsx)(e,{...i})}}exports.STRIVACITY_SDK=i,exports.useNativeLogin=d,exports.useNativeLoginContext=l,exports.useStrivacity=u,exports.withAuthGuard=f;
|
|
2
|
+
//# sourceMappingURL=hooks.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.cjs","names":[],"sources":["../src/hooks.tsx"],"sourcesContent":["'use client';\n\nimport type { ComponentType } from 'react';\nimport type {\n\tNativeFlowState,\n\tNativeFlowMessage,\n\tRedirectFlow,\n\tPopupFlow,\n\tEmbeddedFlow,\n\tNativeFlow,\n\tNativeParams,\n\tLoginContext,\n\tSDKContext,\n\tUseNativeLoginOptions,\n\tWithAuthGuardOptions,\n} from './types';\nimport { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState, useSyncExternalStore } from 'react';\nimport { unflattenObject } from '@strivacity/sdk-core/utils';\nimport { FallbackError } from './errors';\n\nexport const STRIVACITY_SDK = createContext<SDKContext<RedirectFlow | PopupFlow | NativeFlow | EmbeddedFlow>>(null!);\n\nconst loginContextListeners = new Set<() => void>();\nconst defaultLoginContext: LoginContext = {\n\tloading: true,\n\tforms: {},\n\tmessages: {},\n\tstate: {},\n\ttriggerFallback: () => undefined,\n\ttriggerClose: () => undefined,\n\tsubmitForm: async () => Promise.resolve(undefined),\n\tsetFormValue: () => undefined,\n\tsetMessage: () => undefined,\n};\nlet currentLoginContext: LoginContext = defaultLoginContext;\n\nconst loginContextStore = {\n\tsubscribe: (listener: () => void) => {\n\t\tloginContextListeners.add(listener);\n\n\t\treturn () => {\n\t\t\tloginContextListeners.delete(listener);\n\t\t};\n\t},\n\tnotify: () => {\n\t\tloginContextListeners.forEach((listener) => listener());\n\t},\n\tget: () => currentLoginContext,\n\tset: (context: LoginContext) => {\n\t\tcurrentLoginContext = context;\n\t},\n};\n\n/**\n * A custom hook to access the native login context.\n *\n * @returns {LoginContext} The native login context.\n */\nexport const useNativeLoginContext = (): LoginContext => {\n\treturn useSyncExternalStore(loginContextStore.subscribe, loginContextStore.get);\n};\n\n/**\n * A custom hook to access the Strivacity SDK context.\n *\n * @template T - The type of the Strivacity SDK flow (RedirectFlow, PopupFlow, NativeFlow, or EmbeddedFlow).\n * @returns {SDKContext<T>} The Strivacity SDK context.\n */\nexport const useStrivacity = <\n\tT extends RedirectFlow | PopupFlow | NativeFlow | EmbeddedFlow = RedirectFlow | PopupFlow | NativeFlow | EmbeddedFlow,\n>(): SDKContext<T> => {\n\tconst context = useContext(STRIVACITY_SDK);\n\n\tif (!context) {\n\t\tthrow new Error('Missing SDK context');\n\t}\n\n\treturn context as SDKContext<T>;\n};\n\n/**\n * A custom hook that manages a native login flow session.\n *\n * @param {UseNativeLoginOptions} [options] - Optional options for the login session.\n * @returns {LoginContext} The native login context.\n */\nexport function useNativeLogin(options: UseNativeLoginOptions = {}): ReturnType<typeof useNativeLoginContext> {\n\tconst { sdk } = useStrivacity<NativeFlow>();\n\tconst optionsRef = useRef(options);\n\tconst stateRef = useRef<Partial<NativeFlowState>>({});\n\n\tconst [loading, setLoading] = useState<boolean>(true);\n\tconst [forms, setForms] = useState<Record<string, Record<string, unknown>>>({});\n\tconst [messages, setMessages] = useState<Record<string, Record<string, NativeFlowMessage>>>({});\n\tconst [state, setState] = useState<Partial<NativeFlowState>>({});\n\n\tuseEffect(() => {\n\t\toptionsRef.current = options;\n\t}, [options]);\n\n\tuseEffect(() => {\n\t\tstateRef.current = state;\n\t}, [state]);\n\n\tconst handleResponse = useCallback(\n\t\tasync (nextState: Partial<NativeFlowState>) => {\n\t\t\tif (sdk.session) {\n\t\t\t\treturn await optionsRef.current.onLogin?.(sdk.session);\n\t\t\t}\n\n\t\t\tconst newState: NativeFlowState = {\n\t\t\t\thostedUrl: nextState?.hostedUrl ?? stateRef.current.hostedUrl,\n\t\t\t\tfinalizeUrl: nextState?.finalizeUrl ?? stateRef.current.finalizeUrl,\n\t\t\t\tscreen: nextState?.screen ?? stateRef.current.screen,\n\t\t\t\tforms: nextState?.forms ?? stateRef.current.forms,\n\t\t\t\tlayout: nextState?.layout ?? stateRef.current.layout,\n\t\t\t\tmessages: nextState?.messages ?? {},\n\t\t\t\tbranding: nextState?.branding ?? stateRef.current.branding,\n\t\t\t};\n\n\t\t\tconst hasScreenChanged = newState.screen !== stateRef.current.screen;\n\n\t\t\tif (hasScreenChanged) {\n\t\t\t\tconst nextForms: Record<string, Record<string, unknown>> = {};\n\t\t\t\tconst nextMessages: Record<string, Record<string, NativeFlowMessage>> = {};\n\n\t\t\t\tfor (const form of newState.forms ?? []) {\n\t\t\t\t\tnextForms[form.id] = {};\n\t\t\t\t\tnextMessages[form.id] = {};\n\t\t\t\t}\n\n\t\t\t\tsetForms(nextForms);\n\t\t\t\tsetMessages(nextMessages);\n\t\t\t} else {\n\t\t\t\tsdk.logging?.info(`Updating screen: ${newState.screen}`);\n\t\t\t}\n\n\t\t\tsetMessages((previousMessages) => {\n\t\t\t\tconst nextMessageMap = { ...previousMessages };\n\n\t\t\t\tObject.keys(newState.messages ?? {}).forEach((formId) => {\n\t\t\t\t\tif (formId === 'global') {\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n\t\t\t\t\t\tvoid optionsRef.current.onGlobalMessage?.(newState.messages?.global!);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnextMessageMap[formId] = newState.messages![formId] ?? {};\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn nextMessageMap;\n\t\t\t});\n\t\t\tsetState(newState);\n\n\t\t\tif (!newState.finalizeUrl) {\n\t\t\t\tsetLoading(false);\n\t\t\t}\n\t\t},\n\t\t[sdk],\n\t);\n\n\tconst startSession = useCallback(\n\t\tasync (loginParams: NativeParams = {}) => {\n\t\t\ttry {\n\t\t\t\tsetLoading(true);\n\n\t\t\t\tconst nextState = await sdk.startSession(loginParams);\n\n\t\t\t\tif (nextState) {\n\t\t\t\t\tawait handleResponse(nextState);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof FallbackError) {\n\t\t\t\t\tsdk.logging?.error('Fallback error occurred', error);\n\t\t\t\t\tvoid optionsRef.current.onFallback?.(error);\n\t\t\t\t} else {\n\t\t\t\t\tsdk.logging?.error('Error starting session', error);\n\t\t\t\t\tvoid optionsRef.current.onError?.(error as Error);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[handleResponse, sdk],\n\t);\n\n\tconst triggerFallback = useCallback(\n\t\t(message?: string) => {\n\t\t\tsdk.logging?.warn(message ? `Triggering fallback due to: ${message}` : 'Triggering fallback');\n\n\t\t\tif (!stateRef.current.hostedUrl) {\n\t\t\t\tconst error = new Error('No hosted URL provided');\n\t\t\t\tsdk.logging?.error('Fallback error', error);\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tvoid optionsRef.current.onFallback?.(new FallbackError(new URL(stateRef.current.hostedUrl)));\n\t\t},\n\t\t[sdk],\n\t);\n\n\tconst triggerClose = useCallback(() => {\n\t\tsdk.logging?.debug('Triggering close');\n\t\tvoid optionsRef.current.onClose?.();\n\t}, [sdk]);\n\n\tconst submitForm = useCallback(\n\t\tasync (formId: string, customBody?: Record<string, unknown>) => {\n\t\t\ttry {\n\t\t\t\tsetLoading(true);\n\n\t\t\t\tconst nextState = await sdk.submitForm(formId, customBody ?? unflattenObject(forms[formId] ?? {}));\n\n\t\t\t\tif (nextState) {\n\t\t\t\t\tawait handleResponse(nextState);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof FallbackError) {\n\t\t\t\t\tsdk.logging?.error('Fallback error occurred', error);\n\t\t\t\t\tvoid optionsRef.current.onFallback?.(error);\n\t\t\t\t} else {\n\t\t\t\t\tsdk.logging?.error('Error submitting form', error);\n\t\t\t\t\tvoid optionsRef.current.onError?.(error as Error);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[forms, handleResponse, sdk],\n\t);\n\n\tconst setFormValue = useCallback((formId: string, widgetId: string, value: unknown) => {\n\t\tsetForms((previousForms) => ({\n\t\t\t...previousForms,\n\t\t\t[formId]: {\n\t\t\t\t...(previousForms[formId] ?? {}),\n\t\t\t\t[widgetId]: value === '' ? null : value,\n\t\t\t},\n\t\t}));\n\t}, []);\n\n\tconst setMessage = useCallback((formId: string, widgetId: string, value: NativeFlowMessage) => {\n\t\tsetMessages((previousMessages) => ({\n\t\t\t...previousMessages,\n\t\t\t[formId]: {\n\t\t\t\t...(previousMessages[formId] ?? {}),\n\t\t\t\t[widgetId]: value,\n\t\t\t},\n\t\t}));\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (!sdk) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortController = new AbortController();\n\n\t\tsdk\n\t\t\t.init()\n\t\t\t.then(() => {\n\t\t\t\tstartSession(optionsRef.current.params).catch((error) => {\n\t\t\t\t\tif (error instanceof DOMException && error.name === 'AbortError') {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tsdk.logging?.error('Error fetching authorization URI', error);\n\t\t\t\t\tvoid optionsRef.current.onError?.(error as Error);\n\t\t\t\t\tsetLoading(false);\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tsdk.logging?.error('Error initializing SDK', error);\n\t\t\t\tvoid optionsRef.current.onError?.(error as Error);\n\t\t\t\tsetLoading(false);\n\t\t\t});\n\n\t\treturn () => {\n\t\t\tabortController.abort();\n\t\t};\n\t}, [sdk, startSession]);\n\n\tconst ctx = useMemo(\n\t\t() => ({\n\t\t\tloading,\n\t\t\tforms,\n\t\t\tmessages,\n\t\t\tstate,\n\t\t\ttriggerFallback,\n\t\t\ttriggerClose,\n\t\t\tsubmitForm,\n\t\t\tsetFormValue,\n\t\t\tsetMessage,\n\t\t}),\n\t\t[loading, forms, messages, state, triggerFallback, triggerClose, submitForm, setFormValue, setMessage],\n\t);\n\n\t// Publish synchronously during render (not only in an effect): WidgetRenderer/widgets are descendants rendered in this same synchronous pass and read this store via useNativeLoginContext();\n\t// If we only wrote in an effect, they'd read the previous render's (stale) value, since effects run after the whole tree has rendered.\n\tloginContextStore.set(ctx);\n\n\tuseEffect(() => {\n\t\t// In React StrictMode (dev) effects run mount -> cleanup -> mount again without a new render in between. The cleanup below resets the store to defaultLoginContext.\n\t\t// Without this line the second \"mount\" would leave the store stuck on that empty default instead of the real ctx.\n\t\tloginContextStore.set(ctx);\n\t\tloginContextStore.notify();\n\n\t\treturn () => {\n\t\t\tloginContextStore.set(defaultLoginContext);\n\t\t\tloginContextStore.notify();\n\t\t};\n\t}, [ctx]);\n\n\treturn ctx;\n}\n\n/**\n * A higher-order component that guards a component with authentication.\n * Waits for the SDK to finish loading, then redirects to the login page if the user is not authenticated.\n *\n * @param {ComponentType<P>} WrappedComponent - The component to guard.\n * @param {WithAuthGuardOptions} [options] - Optional options for the auth guard.\n * @param {string} [opts.loginUri='/login'] - The URI to redirect to if the user is not authenticated.\n * @returns {ComponentType<P>} The guarded component.\n */\nexport function withAuthGuard<P extends object>(WrappedComponent: ComponentType<P>, options?: WithAuthGuardOptions): ComponentType<P> {\n\treturn function AuthGuard(props: P) {\n\t\tconst { loading, sdk } = useStrivacity();\n\t\tconst [authenticated, setAuthenticated] = useState<boolean | null>(null);\n\n\t\tuseEffect(() => {\n\t\t\tif (loading) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet disposed = false;\n\n\t\t\tvoid sdk.checkAuthentication().then((result) => {\n\t\t\t\tif (disposed) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsetAuthenticated(result);\n\n\t\t\t\tif (!result) {\n\t\t\t\t\toptions ??= {};\n\t\t\t\t\toptions.loginUri ??= '/login';\n\t\t\t\t\tglobalThis.location.href = options.loginUri;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn () => {\n\t\t\t\tdisposed = true;\n\t\t\t};\n\t\t}, [loading, sdk]);\n\n\t\tif (loading || !authenticated) {\n\t\t\treturn options?.onLoading?.() ?? null;\n\t\t}\n\n\t\treturn <WrappedComponent {...props} />;\n\t};\n}\n"],"mappings":"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"}
|
package/dist/hooks.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ComponentType } from 'react';
|
|
2
|
+
import { RedirectFlow, PopupFlow, EmbeddedFlow, NativeFlow, LoginContext, SDKContext, UseNativeLoginOptions, WithAuthGuardOptions } from './types';
|
|
3
|
+
export declare const STRIVACITY_SDK: import('react').Context<SDKContext<RedirectFlow | PopupFlow | NativeFlow | EmbeddedFlow>>;
|
|
4
|
+
/**
|
|
5
|
+
* A custom hook to access the native login context.
|
|
6
|
+
*
|
|
7
|
+
* @returns {LoginContext} The native login context.
|
|
8
|
+
*/
|
|
9
|
+
export declare const useNativeLoginContext: () => LoginContext;
|
|
10
|
+
/**
|
|
11
|
+
* A custom hook to access the Strivacity SDK context.
|
|
12
|
+
*
|
|
13
|
+
* @template T - The type of the Strivacity SDK flow (RedirectFlow, PopupFlow, NativeFlow, or EmbeddedFlow).
|
|
14
|
+
* @returns {SDKContext<T>} The Strivacity SDK context.
|
|
15
|
+
*/
|
|
16
|
+
export declare const useStrivacity: <T extends RedirectFlow | PopupFlow | NativeFlow | EmbeddedFlow = RedirectFlow | PopupFlow | NativeFlow | EmbeddedFlow>() => SDKContext<T>;
|
|
17
|
+
/**
|
|
18
|
+
* A custom hook that manages a native login flow session.
|
|
19
|
+
*
|
|
20
|
+
* @param {UseNativeLoginOptions} [options] - Optional options for the login session.
|
|
21
|
+
* @returns {LoginContext} The native login context.
|
|
22
|
+
*/
|
|
23
|
+
export declare function useNativeLogin(options?: UseNativeLoginOptions): ReturnType<typeof useNativeLoginContext>;
|
|
24
|
+
/**
|
|
25
|
+
* A higher-order component that guards a component with authentication.
|
|
26
|
+
* Waits for the SDK to finish loading, then redirects to the login page if the user is not authenticated.
|
|
27
|
+
*
|
|
28
|
+
* @param {ComponentType<P>} WrappedComponent - The component to guard.
|
|
29
|
+
* @param {WithAuthGuardOptions} [options] - Optional options for the auth guard.
|
|
30
|
+
* @param {string} [opts.loginUri='/login'] - The URI to redirect to if the user is not authenticated.
|
|
31
|
+
* @returns {ComponentType<P>} The guarded component.
|
|
32
|
+
*/
|
|
33
|
+
export declare function withAuthGuard<P extends object>(WrappedComponent: ComponentType<P>, options?: WithAuthGuardOptions): ComponentType<P>;
|
package/dist/hooks.mjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";"use client";import{t as e}from"./errors.mjs";import{unflattenObject as t}from"@strivacity/sdk-core/utils";import{createContext as n,useCallback as r,useContext as i,useEffect as a,useMemo as o,useRef as s,useState as c,useSyncExternalStore as l}from"react";import{jsx as u}from"react/jsx-runtime";var d=n(null),f=new Set,p={loading:!0,forms:{},messages:{},state:{},triggerFallback:()=>void 0,triggerClose:()=>void 0,submitForm:async()=>Promise.resolve(void 0),setFormValue:()=>void 0,setMessage:()=>void 0},m=p,h={subscribe:e=>(f.add(e),()=>{f.delete(e)}),notify:()=>{f.forEach(e=>e())},get:()=>m,set:e=>{m=e}},g=()=>l(h.subscribe,h.get),_=()=>{let e=i(d);if(!e)throw Error(`Missing SDK context`);return e};function v(n={}){let{sdk:i}=_(),l=s(n),u=s({}),[d,f]=c(!0),[m,g]=c({}),[v,y]=c({}),[b,x]=c({});a(()=>{l.current=n},[n]),a(()=>{u.current=b},[b]);let S=r(async e=>{if(i.session)return await l.current.onLogin?.(i.session);let t={hostedUrl:e?.hostedUrl??u.current.hostedUrl,finalizeUrl:e?.finalizeUrl??u.current.finalizeUrl,screen:e?.screen??u.current.screen,forms:e?.forms??u.current.forms,layout:e?.layout??u.current.layout,messages:e?.messages??{},branding:e?.branding??u.current.branding};if(t.screen!==u.current.screen){let e={},n={};for(let r of t.forms??[])e[r.id]={},n[r.id]={};g(e),y(n)}else i.logging?.info(`Updating screen: ${t.screen}`);y(e=>{let n={...e};return Object.keys(t.messages??{}).forEach(e=>{e===`global`?l.current.onGlobalMessage?.(t.messages?.global):n[e]=t.messages[e]??{}}),n}),x(t),t.finalizeUrl||f(!1)},[i]),C=r(async(t={})=>{try{f(!0);let e=await i.startSession(t);e&&await S(e)}catch(t){t instanceof e.FallbackError?(i.logging?.error(`Fallback error occurred`,t),l.current.onFallback?.(t)):(i.logging?.error(`Error starting session`,t),l.current.onError?.(t))}},[S,i]),w=r(t=>{if(i.logging?.warn(t?`Triggering fallback due to: ${t}`:`Triggering fallback`),!u.current.hostedUrl){let e=Error(`No hosted URL provided`);throw i.logging?.error(`Fallback error`,e),e}l.current.onFallback?.(new e.FallbackError(new URL(u.current.hostedUrl)))},[i]),T=r(()=>{i.logging?.debug(`Triggering close`),l.current.onClose?.()},[i]),E=r(async(n,r)=>{try{f(!0);let e=await i.submitForm(n,r??t(m[n]??{}));e&&await S(e)}catch(t){t instanceof e.FallbackError?(i.logging?.error(`Fallback error occurred`,t),l.current.onFallback?.(t)):(i.logging?.error(`Error submitting form`,t),l.current.onError?.(t))}},[m,S,i]),D=r((e,t,n)=>{g(r=>({...r,[e]:{...r[e]??{},[t]:n===``?null:n}}))},[]),O=r((e,t,n)=>{y(r=>({...r,[e]:{...r[e]??{},[t]:n}}))},[]);a(()=>{if(!i)return;let e=new AbortController;return i.init().then(()=>{C(l.current.params).catch(e=>{e instanceof DOMException&&e.name===`AbortError`||(i.logging?.error(`Error fetching authorization URI`,e),l.current.onError?.(e),f(!1))})}).catch(e=>{i.logging?.error(`Error initializing SDK`,e),l.current.onError?.(e),f(!1)}),()=>{e.abort()}},[i,C]);let k=o(()=>({loading:d,forms:m,messages:v,state:b,triggerFallback:w,triggerClose:T,submitForm:E,setFormValue:D,setMessage:O}),[d,m,v,b,w,T,E,D,O]);return h.set(k),a(()=>(h.set(k),h.notify(),()=>{h.set(p),h.notify()}),[k]),k}function y(e,t){return function(n){let{loading:r,sdk:i}=_(),[o,s]=c(null);return a(()=>{if(r)return;let e=!1;return i.checkAuthentication().then(n=>{e||(s(n),n||(t??={},t.loginUri??=`/login`,globalThis.location.href=t.loginUri))}),()=>{e=!0}},[r,i]),r||!o?t?.onLoading?.()??null:u(e,{...n})}}export{d as STRIVACITY_SDK,v as useNativeLogin,g as useNativeLoginContext,_ as useStrivacity,y as withAuthGuard};
|
|
2
|
+
//# sourceMappingURL=hooks.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.mjs","names":[],"sources":["../src/hooks.tsx"],"sourcesContent":["'use client';\n\nimport type { ComponentType } from 'react';\nimport type {\n\tNativeFlowState,\n\tNativeFlowMessage,\n\tRedirectFlow,\n\tPopupFlow,\n\tEmbeddedFlow,\n\tNativeFlow,\n\tNativeParams,\n\tLoginContext,\n\tSDKContext,\n\tUseNativeLoginOptions,\n\tWithAuthGuardOptions,\n} from './types';\nimport { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState, useSyncExternalStore } from 'react';\nimport { unflattenObject } from '@strivacity/sdk-core/utils';\nimport { FallbackError } from './errors';\n\nexport const STRIVACITY_SDK = createContext<SDKContext<RedirectFlow | PopupFlow | NativeFlow | EmbeddedFlow>>(null!);\n\nconst loginContextListeners = new Set<() => void>();\nconst defaultLoginContext: LoginContext = {\n\tloading: true,\n\tforms: {},\n\tmessages: {},\n\tstate: {},\n\ttriggerFallback: () => undefined,\n\ttriggerClose: () => undefined,\n\tsubmitForm: async () => Promise.resolve(undefined),\n\tsetFormValue: () => undefined,\n\tsetMessage: () => undefined,\n};\nlet currentLoginContext: LoginContext = defaultLoginContext;\n\nconst loginContextStore = {\n\tsubscribe: (listener: () => void) => {\n\t\tloginContextListeners.add(listener);\n\n\t\treturn () => {\n\t\t\tloginContextListeners.delete(listener);\n\t\t};\n\t},\n\tnotify: () => {\n\t\tloginContextListeners.forEach((listener) => listener());\n\t},\n\tget: () => currentLoginContext,\n\tset: (context: LoginContext) => {\n\t\tcurrentLoginContext = context;\n\t},\n};\n\n/**\n * A custom hook to access the native login context.\n *\n * @returns {LoginContext} The native login context.\n */\nexport const useNativeLoginContext = (): LoginContext => {\n\treturn useSyncExternalStore(loginContextStore.subscribe, loginContextStore.get);\n};\n\n/**\n * A custom hook to access the Strivacity SDK context.\n *\n * @template T - The type of the Strivacity SDK flow (RedirectFlow, PopupFlow, NativeFlow, or EmbeddedFlow).\n * @returns {SDKContext<T>} The Strivacity SDK context.\n */\nexport const useStrivacity = <\n\tT extends RedirectFlow | PopupFlow | NativeFlow | EmbeddedFlow = RedirectFlow | PopupFlow | NativeFlow | EmbeddedFlow,\n>(): SDKContext<T> => {\n\tconst context = useContext(STRIVACITY_SDK);\n\n\tif (!context) {\n\t\tthrow new Error('Missing SDK context');\n\t}\n\n\treturn context as SDKContext<T>;\n};\n\n/**\n * A custom hook that manages a native login flow session.\n *\n * @param {UseNativeLoginOptions} [options] - Optional options for the login session.\n * @returns {LoginContext} The native login context.\n */\nexport function useNativeLogin(options: UseNativeLoginOptions = {}): ReturnType<typeof useNativeLoginContext> {\n\tconst { sdk } = useStrivacity<NativeFlow>();\n\tconst optionsRef = useRef(options);\n\tconst stateRef = useRef<Partial<NativeFlowState>>({});\n\n\tconst [loading, setLoading] = useState<boolean>(true);\n\tconst [forms, setForms] = useState<Record<string, Record<string, unknown>>>({});\n\tconst [messages, setMessages] = useState<Record<string, Record<string, NativeFlowMessage>>>({});\n\tconst [state, setState] = useState<Partial<NativeFlowState>>({});\n\n\tuseEffect(() => {\n\t\toptionsRef.current = options;\n\t}, [options]);\n\n\tuseEffect(() => {\n\t\tstateRef.current = state;\n\t}, [state]);\n\n\tconst handleResponse = useCallback(\n\t\tasync (nextState: Partial<NativeFlowState>) => {\n\t\t\tif (sdk.session) {\n\t\t\t\treturn await optionsRef.current.onLogin?.(sdk.session);\n\t\t\t}\n\n\t\t\tconst newState: NativeFlowState = {\n\t\t\t\thostedUrl: nextState?.hostedUrl ?? stateRef.current.hostedUrl,\n\t\t\t\tfinalizeUrl: nextState?.finalizeUrl ?? stateRef.current.finalizeUrl,\n\t\t\t\tscreen: nextState?.screen ?? stateRef.current.screen,\n\t\t\t\tforms: nextState?.forms ?? stateRef.current.forms,\n\t\t\t\tlayout: nextState?.layout ?? stateRef.current.layout,\n\t\t\t\tmessages: nextState?.messages ?? {},\n\t\t\t\tbranding: nextState?.branding ?? stateRef.current.branding,\n\t\t\t};\n\n\t\t\tconst hasScreenChanged = newState.screen !== stateRef.current.screen;\n\n\t\t\tif (hasScreenChanged) {\n\t\t\t\tconst nextForms: Record<string, Record<string, unknown>> = {};\n\t\t\t\tconst nextMessages: Record<string, Record<string, NativeFlowMessage>> = {};\n\n\t\t\t\tfor (const form of newState.forms ?? []) {\n\t\t\t\t\tnextForms[form.id] = {};\n\t\t\t\t\tnextMessages[form.id] = {};\n\t\t\t\t}\n\n\t\t\t\tsetForms(nextForms);\n\t\t\t\tsetMessages(nextMessages);\n\t\t\t} else {\n\t\t\t\tsdk.logging?.info(`Updating screen: ${newState.screen}`);\n\t\t\t}\n\n\t\t\tsetMessages((previousMessages) => {\n\t\t\t\tconst nextMessageMap = { ...previousMessages };\n\n\t\t\t\tObject.keys(newState.messages ?? {}).forEach((formId) => {\n\t\t\t\t\tif (formId === 'global') {\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n\t\t\t\t\t\tvoid optionsRef.current.onGlobalMessage?.(newState.messages?.global!);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnextMessageMap[formId] = newState.messages![formId] ?? {};\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn nextMessageMap;\n\t\t\t});\n\t\t\tsetState(newState);\n\n\t\t\tif (!newState.finalizeUrl) {\n\t\t\t\tsetLoading(false);\n\t\t\t}\n\t\t},\n\t\t[sdk],\n\t);\n\n\tconst startSession = useCallback(\n\t\tasync (loginParams: NativeParams = {}) => {\n\t\t\ttry {\n\t\t\t\tsetLoading(true);\n\n\t\t\t\tconst nextState = await sdk.startSession(loginParams);\n\n\t\t\t\tif (nextState) {\n\t\t\t\t\tawait handleResponse(nextState);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof FallbackError) {\n\t\t\t\t\tsdk.logging?.error('Fallback error occurred', error);\n\t\t\t\t\tvoid optionsRef.current.onFallback?.(error);\n\t\t\t\t} else {\n\t\t\t\t\tsdk.logging?.error('Error starting session', error);\n\t\t\t\t\tvoid optionsRef.current.onError?.(error as Error);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[handleResponse, sdk],\n\t);\n\n\tconst triggerFallback = useCallback(\n\t\t(message?: string) => {\n\t\t\tsdk.logging?.warn(message ? `Triggering fallback due to: ${message}` : 'Triggering fallback');\n\n\t\t\tif (!stateRef.current.hostedUrl) {\n\t\t\t\tconst error = new Error('No hosted URL provided');\n\t\t\t\tsdk.logging?.error('Fallback error', error);\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tvoid optionsRef.current.onFallback?.(new FallbackError(new URL(stateRef.current.hostedUrl)));\n\t\t},\n\t\t[sdk],\n\t);\n\n\tconst triggerClose = useCallback(() => {\n\t\tsdk.logging?.debug('Triggering close');\n\t\tvoid optionsRef.current.onClose?.();\n\t}, [sdk]);\n\n\tconst submitForm = useCallback(\n\t\tasync (formId: string, customBody?: Record<string, unknown>) => {\n\t\t\ttry {\n\t\t\t\tsetLoading(true);\n\n\t\t\t\tconst nextState = await sdk.submitForm(formId, customBody ?? unflattenObject(forms[formId] ?? {}));\n\n\t\t\t\tif (nextState) {\n\t\t\t\t\tawait handleResponse(nextState);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof FallbackError) {\n\t\t\t\t\tsdk.logging?.error('Fallback error occurred', error);\n\t\t\t\t\tvoid optionsRef.current.onFallback?.(error);\n\t\t\t\t} else {\n\t\t\t\t\tsdk.logging?.error('Error submitting form', error);\n\t\t\t\t\tvoid optionsRef.current.onError?.(error as Error);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[forms, handleResponse, sdk],\n\t);\n\n\tconst setFormValue = useCallback((formId: string, widgetId: string, value: unknown) => {\n\t\tsetForms((previousForms) => ({\n\t\t\t...previousForms,\n\t\t\t[formId]: {\n\t\t\t\t...(previousForms[formId] ?? {}),\n\t\t\t\t[widgetId]: value === '' ? null : value,\n\t\t\t},\n\t\t}));\n\t}, []);\n\n\tconst setMessage = useCallback((formId: string, widgetId: string, value: NativeFlowMessage) => {\n\t\tsetMessages((previousMessages) => ({\n\t\t\t...previousMessages,\n\t\t\t[formId]: {\n\t\t\t\t...(previousMessages[formId] ?? {}),\n\t\t\t\t[widgetId]: value,\n\t\t\t},\n\t\t}));\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (!sdk) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortController = new AbortController();\n\n\t\tsdk\n\t\t\t.init()\n\t\t\t.then(() => {\n\t\t\t\tstartSession(optionsRef.current.params).catch((error) => {\n\t\t\t\t\tif (error instanceof DOMException && error.name === 'AbortError') {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tsdk.logging?.error('Error fetching authorization URI', error);\n\t\t\t\t\tvoid optionsRef.current.onError?.(error as Error);\n\t\t\t\t\tsetLoading(false);\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tsdk.logging?.error('Error initializing SDK', error);\n\t\t\t\tvoid optionsRef.current.onError?.(error as Error);\n\t\t\t\tsetLoading(false);\n\t\t\t});\n\n\t\treturn () => {\n\t\t\tabortController.abort();\n\t\t};\n\t}, [sdk, startSession]);\n\n\tconst ctx = useMemo(\n\t\t() => ({\n\t\t\tloading,\n\t\t\tforms,\n\t\t\tmessages,\n\t\t\tstate,\n\t\t\ttriggerFallback,\n\t\t\ttriggerClose,\n\t\t\tsubmitForm,\n\t\t\tsetFormValue,\n\t\t\tsetMessage,\n\t\t}),\n\t\t[loading, forms, messages, state, triggerFallback, triggerClose, submitForm, setFormValue, setMessage],\n\t);\n\n\t// Publish synchronously during render (not only in an effect): WidgetRenderer/widgets are descendants rendered in this same synchronous pass and read this store via useNativeLoginContext();\n\t// If we only wrote in an effect, they'd read the previous render's (stale) value, since effects run after the whole tree has rendered.\n\tloginContextStore.set(ctx);\n\n\tuseEffect(() => {\n\t\t// In React StrictMode (dev) effects run mount -> cleanup -> mount again without a new render in between. The cleanup below resets the store to defaultLoginContext.\n\t\t// Without this line the second \"mount\" would leave the store stuck on that empty default instead of the real ctx.\n\t\tloginContextStore.set(ctx);\n\t\tloginContextStore.notify();\n\n\t\treturn () => {\n\t\t\tloginContextStore.set(defaultLoginContext);\n\t\t\tloginContextStore.notify();\n\t\t};\n\t}, [ctx]);\n\n\treturn ctx;\n}\n\n/**\n * A higher-order component that guards a component with authentication.\n * Waits for the SDK to finish loading, then redirects to the login page if the user is not authenticated.\n *\n * @param {ComponentType<P>} WrappedComponent - The component to guard.\n * @param {WithAuthGuardOptions} [options] - Optional options for the auth guard.\n * @param {string} [opts.loginUri='/login'] - The URI to redirect to if the user is not authenticated.\n * @returns {ComponentType<P>} The guarded component.\n */\nexport function withAuthGuard<P extends object>(WrappedComponent: ComponentType<P>, options?: WithAuthGuardOptions): ComponentType<P> {\n\treturn function AuthGuard(props: P) {\n\t\tconst { loading, sdk } = useStrivacity();\n\t\tconst [authenticated, setAuthenticated] = useState<boolean | null>(null);\n\n\t\tuseEffect(() => {\n\t\t\tif (loading) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet disposed = false;\n\n\t\t\tvoid sdk.checkAuthentication().then((result) => {\n\t\t\t\tif (disposed) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsetAuthenticated(result);\n\n\t\t\t\tif (!result) {\n\t\t\t\t\toptions ??= {};\n\t\t\t\t\toptions.loginUri ??= '/login';\n\t\t\t\t\tglobalThis.location.href = options.loginUri;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn () => {\n\t\t\t\tdisposed = true;\n\t\t\t};\n\t\t}, [loading, sdk]);\n\n\t\tif (loading || !authenticated) {\n\t\t\treturn options?.onLoading?.() ?? null;\n\t\t}\n\n\t\treturn <WrappedComponent {...props} />;\n\t};\n}\n"],"mappings":"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"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
//# sourceMappingURL=index.cjs.map
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./assets/rolldown-runtime.cjs"),t=require("./errors.cjs"),n=require("./hooks.cjs"),r=require("./components.cjs");require("./storages.cjs"),require("./types.cjs"),require("./utils.cjs");var i=e.t({STRIVACITY_SDK:()=>n.STRIVACITY_SDK,StyAuthProvider:()=>r.StyAuthProvider,useNativeLogin:()=>n.useNativeLogin,useNativeLoginContext:()=>n.useNativeLoginContext,useStrivacity:()=>n.useStrivacity,withAuthGuard:()=>n.withAuthGuard});e.n(i,require("@strivacity/sdk-core/flows")),e.n(i,require("@strivacity/sdk-core/handlers")),e.n(i,require("@strivacity/sdk-core/utils")),e.n(i,t.t),exports.STRIVACITY_SDK=n.STRIVACITY_SDK,exports.StyAuthProvider=r.StyAuthProvider,exports.useNativeLogin=n.useNativeLogin,exports.useNativeLoginContext=n.useNativeLoginContext,exports.useStrivacity=n.useStrivacity,exports.withAuthGuard=n.withAuthGuard;var a=require("@strivacity/sdk-core/flows");Object.keys(a).forEach(function(e){e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:function(){return a[e]}})});var o=require("@strivacity/sdk-core/handlers");Object.keys(o).forEach(function(e){e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:function(){return o[e]}})});var s=require("@strivacity/sdk-core/utils");Object.keys(s).forEach(function(e){e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:function(){return s[e]}})});var c=require("@strivacity/sdk-core/utils/errors");Object.keys(c).forEach(function(e){e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:function(){return c[e]}})});var l=require("@strivacity/sdk-core/storages");Object.keys(l).forEach(function(e){e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:function(){return l[e]}})});var u=require("@strivacity/sdk-core/types");Object.keys(u).forEach(function(e){e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:function(){return u[e]}})});
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["export * from '@strivacity/sdk-core/flows';\nexport * from '@strivacity/sdk-core/handlers';\nexport * from '@strivacity/sdk-core/utils';\nexport * from './components';\nexport * from './errors';\nexport * from './hooks';\nexport * from './storages';\nexport * from './types';\nexport * from './utils';\n"],"mappings":""}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
export * from '@strivacity/sdk-core';
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export
|
|
9
|
-
export
|
|
10
|
-
export { createCredential, getCredential } from '@strivacity/sdk-core/utils/credentials';
|
|
11
|
-
export { useStrivacity } from './composables';
|
|
12
|
-
export { StyAuthProvider } from './AuthProvider';
|
|
13
|
-
export { StyLoginRenderer, NativeFlowContext } from './LoginRenderer';
|
|
1
|
+
export * from '@strivacity/sdk-core/flows';
|
|
2
|
+
export * from '@strivacity/sdk-core/handlers';
|
|
3
|
+
export * from '@strivacity/sdk-core/utils';
|
|
4
|
+
export * from './components';
|
|
5
|
+
export * from './errors';
|
|
6
|
+
export * from './hooks';
|
|
7
|
+
export * from './storages';
|
|
8
|
+
export * from './types';
|
|
9
|
+
export * from './utils';
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
//# sourceMappingURL=index.mjs.map
|
|
1
|
+
import{n as e,t}from"./assets/rolldown-runtime.mjs";import{t as n}from"./errors.mjs";import{STRIVACITY_SDK as r,useNativeLogin as i,useNativeLoginContext as a,useStrivacity as o,withAuthGuard as s}from"./hooks.mjs";import{StyAuthProvider as c}from"./components.mjs";import"./storages.mjs";import"./types.mjs";import"./utils.mjs";export*from"@strivacity/sdk-core/utils/errors";export*from"@strivacity/sdk-core/flows";export*from"@strivacity/sdk-core/handlers";export*from"@strivacity/sdk-core/utils";export*from"@strivacity/sdk-core/storages";export*from"@strivacity/sdk-core/types";e(t({STRIVACITY_SDK:()=>r,StyAuthProvider:()=>c,useNativeLogin:()=>i,useNativeLoginContext:()=>a,useStrivacity:()=>o,withAuthGuard:()=>s}),n);export{r as STRIVACITY_SDK,c as StyAuthProvider,i as useNativeLogin,a as useNativeLoginContext,o as useStrivacity,s as withAuthGuard};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["export * from '@strivacity/sdk-core/flows';\nexport * from '@strivacity/sdk-core/handlers';\nexport * from '@strivacity/sdk-core/utils';\nexport * from './components';\nexport * from './errors';\nexport * from './hooks';\nexport * from './storages';\nexport * from './types';\nexport * from './utils';\n"],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require("./assets/rolldown-runtime.cjs");var e=require("@strivacity/sdk-core/storages");Object.keys(e).forEach(function(t){t!=="default"&&!Object.prototype.hasOwnProperty.call(exports,t)&&Object.defineProperty(exports,t,{enumerable:!0,get:function(){return e[t]}})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@strivacity/sdk-core/storages';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./assets/rolldown-runtime.mjs";export*from"@strivacity/sdk-core/storages";
|
package/dist/types.cjs
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"
|
|
2
|
-
//# sourceMappingURL=types.cjs.map
|
|
1
|
+
require("./assets/rolldown-runtime.cjs");var e=require("@strivacity/sdk-core/types");Object.keys(e).forEach(function(t){t!=="default"&&!Object.prototype.hasOwnProperty.call(exports,t)&&Object.defineProperty(exports,t,{enumerable:!0,get:function(){return e[t]}})});
|