@tern-secure/react 1.2.0-canary.v20251108045933 → 1.2.0-canary.v20251125170702
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/dist/components/TernSecureHostRenderer.d.mts +24 -0
- package/dist/components/TernSecureHostRenderer.d.ts +24 -0
- package/dist/components/TernSecureHostRenderer.js +2 -0
- package/dist/components/TernSecureHostRenderer.js.map +1 -0
- package/dist/components/TernSecureHostRenderer.mjs +2 -0
- package/dist/components/TernSecureHostRenderer.mjs.map +1 -0
- package/dist/components/uiComponent.d.mts +30 -0
- package/dist/components/uiComponent.d.ts +30 -0
- package/dist/components/uiComponent.js +2 -0
- package/dist/components/uiComponent.js.map +1 -0
- package/dist/components/uiComponent.mjs +2 -0
- package/dist/components/uiComponent.mjs.map +1 -0
- package/dist/components/withTernSecure.d.mts +16 -0
- package/dist/components/withTernSecure.d.ts +16 -0
- package/dist/components/withTernSecure.js +2 -0
- package/dist/components/withTernSecure.js.map +1 -0
- package/dist/components/withTernSecure.mjs +2 -0
- package/dist/components/withTernSecure.mjs.map +1 -0
- package/dist/ctx/AuthProvider.d.mts +2 -2
- package/dist/ctx/AuthProvider.d.ts +2 -2
- package/dist/ctx/IsomorphicTernSecureCtx.d.mts +2 -2
- package/dist/ctx/IsomorphicTernSecureCtx.d.ts +2 -2
- package/dist/ctx/TernSecureCtxProvider.d.mts +2 -2
- package/dist/ctx/TernSecureCtxProvider.d.ts +2 -2
- package/dist/ctx/TernSecureCtxProvider.js +1 -1
- package/dist/ctx/TernSecureCtxProvider.js.map +1 -1
- package/dist/ctx/TernSecureCtxProvider.mjs +1 -1
- package/dist/ctx/TernSecureCtxProvider.mjs.map +1 -1
- package/dist/ctx/TernSecureProvider.d.mts +2 -2
- package/dist/ctx/TernSecureProvider.d.ts +2 -2
- package/dist/hooks/useMaxAllowedInstances.d.mts +6 -0
- package/dist/hooks/useMaxAllowedInstances.d.ts +6 -0
- package/dist/hooks/useMaxAllowedInstances.js +2 -0
- package/dist/hooks/useMaxAllowedInstances.js.map +1 -0
- package/dist/hooks/useMaxAllowedInstances.mjs +2 -0
- package/dist/hooks/useMaxAllowedInstances.mjs.map +1 -0
- package/dist/hooks/useSignIn.d.mts +4 -4
- package/dist/hooks/useSignIn.d.ts +4 -4
- package/dist/hooks/useSignIn.js +1 -1
- package/dist/hooks/useSignIn.js.map +1 -1
- package/dist/hooks/useSignIn.mjs +1 -1
- package/dist/hooks/useSignIn.mjs.map +1 -1
- package/dist/hooks/useWaitForComponentMount.d.mts +8 -0
- package/dist/hooks/useWaitForComponentMount.d.ts +8 -0
- package/dist/hooks/useWaitForComponentMount.js +2 -0
- package/dist/hooks/useWaitForComponentMount.js.map +1 -0
- package/dist/hooks/useWaitForComponentMount.mjs +2 -0
- package/dist/hooks/useWaitForComponentMount.mjs.map +1 -0
- package/dist/index.d.mts +3 -5
- package/dist/index.d.ts +3 -5
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/lib/isoTernSecureAuth.d.mts +29 -5
- package/dist/lib/isoTernSecureAuth.d.ts +29 -5
- package/dist/lib/isoTernSecureAuth.js +1 -1
- package/dist/lib/isoTernSecureAuth.js.map +1 -1
- package/dist/lib/isoTernSecureAuth.mjs +1 -1
- package/dist/lib/isoTernSecureAuth.mjs.map +1 -1
- package/dist/types.d.mts +43 -28
- package/dist/types.d.ts +43 -28
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/utils/debug.d.mts +2 -1
- package/dist/utils/debug.d.ts +2 -1
- package/dist/utils/debug.js +1 -1
- package/dist/utils/debug.js.map +1 -1
- package/dist/utils/debug.mjs +1 -1
- package/dist/utils/debug.mjs.map +1 -1
- package/dist/utils/isConstructor.d.mts +3 -0
- package/dist/utils/isConstructor.d.ts +3 -0
- package/dist/utils/isConstructor.js +2 -0
- package/dist/utils/isConstructor.js.map +1 -0
- package/dist/utils/isConstructor.mjs +2 -0
- package/dist/utils/isConstructor.mjs.map +1 -0
- package/package.json +3 -4
- package/dist/ctx/SignInCtx.d.mts +0 -27
- package/dist/ctx/SignInCtx.d.ts +0 -27
- package/dist/ctx/SignInCtx.js +0 -2
- package/dist/ctx/SignInCtx.js.map +0 -1
- package/dist/ctx/SignInCtx.mjs +0 -2
- package/dist/ctx/SignInCtx.mjs.map +0 -1
- package/dist/ctx/SignUpCtx.d.mts +0 -22
- package/dist/ctx/SignUpCtx.d.ts +0 -22
- package/dist/ctx/SignUpCtx.js +0 -2
- package/dist/ctx/SignUpCtx.js.map +0 -1
- package/dist/ctx/SignUpCtx.mjs +0 -2
- package/dist/ctx/SignUpCtx.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ctx/SignInCtx.tsx"],"sourcesContent":["'use client';\n\nimport type {\n AuthErrorTree,\n SignInFallbackRedirectUrl,\n SignInForceRedirectUrl,\n SignInProps,\n TernSecureUser,\n} from '@tern-secure/auth';\nimport { buildURL, RedirectUrls } from '@tern-secure/auth';\nimport { useTernSecure } from '@tern-secure/shared/react';\nimport type { ReactNode } from 'react';\nimport { createContext, useCallback, useContext, useMemo } from 'react';\n\nexport type SignInCtx = SignInProps & SignInForceRedirectUrl & SignInFallbackRedirectUrl;\n\nexport type SignInContextType = Omit<SignInCtx, 'fallbackRedirectUrl' | 'forceRedirectUrl'> & {\n onSignInSuccess: (\n user: TernSecureUser,\n options?: { onPreRedirect?: () => Promise<boolean> },\n ) => void;\n handleSignInError: (error: AuthErrorTree) => void;\n redirectAfterSignIn: () => any;\n signInUrl: string;\n signUpUrl: string;\n afterSignUpUrl: string;\n afterSignInUrl: string;\n checkRedirectResult: () => Promise<void>;\n};\n\nexport const SignInContext = createContext<SignInCtx | null>(null);\n\nexport const useSignInContext = (): SignInContextType => {\n const context = useContext(SignInContext);\n const ternSecure = useTernSecure();\n const ternSecureOptions = ternSecure._internal_getAllOptions();\n const currentParams = useMemo(() => {\n if (typeof window !== 'undefined') {\n return new URLSearchParams(window.location.search);\n }\n return new URLSearchParams();\n }, []);\n\n if (context === null) {\n throw new Error(\n 'useSignInContext must be used within a SignInProvider. Please wrap your component tree with SignInProvider.',\n );\n }\n\n const { ...ctx } = context;\n\n const createAuthError = useCallback(\n (message: string, code: string, name: string = 'AuthError', response?: any): AuthErrorTree => {\n const authError = new Error(message) as AuthErrorTree;\n authError.name = name;\n authError.code = code;\n authError.response = response;\n return authError;\n },\n [],\n );\n\n const handleSignInError = useCallback((authError: AuthErrorTree) => {\n console.error(authError);\n }, []);\n\n const redirectUrls = new RedirectUrls(\n ternSecureOptions,\n {\n ...ctx,\n signInForceRedirectUrl: ctx.signInForceRedirectUrl || ctx.forceRedirectUrl,\n signInFallbackRedirectUrl: ctx.signInFallbackRedirectUrl || ctx.fallbackRedirectUrl,\n },\n currentParams,\n );\n\n const afterSignInUrl = ternSecure.constructUrlWithAuthRedirect(redirectUrls.getAfterSignInUrl());\n const afterSignUpUrl = ternSecure.constructUrlWithAuthRedirect(redirectUrls.getAfterSignUpUrl());\n\n const redirectAfterSignIn = () => ternSecure.navigate(afterSignInUrl);\n\n const preservedParams = redirectUrls.getPreservedSearchParams();\n const baseSignInUrl = ctx.path || ternSecureOptions.signInUrl;\n const baseSignUpUrl = ternSecureOptions.signUpUrl;\n\n const signInUrl = buildURL(\n {\n base: baseSignInUrl,\n hashSearchParams: [currentParams, preservedParams],\n },\n { stringify: true },\n );\n\n const signUpUrl = buildURL(\n {\n base: baseSignUpUrl,\n hashSearchParams: [currentParams, preservedParams],\n },\n { stringify: true },\n );\n\n /**\n *\n * This function separates session creation from redirection, allowing consumers\n * to perform custom logic between authentication and redirect.\n *\n * Use cases:\n * 1. Check if user exists in external database (e.g., FreeSWITCH VoIP user table)\n * 2. Validate user permissions or roles\n * 3. Perform additional setup or initialization\n * 4. Custom redirect logic based on user data\n * Example:\n * await onSignInSuccess(user, {\n * onPreRedirect: async () => {\n * // user is accessible here via closure\n * const exists = await checkUser(user.email);\n * return exists;\n * }\n * });\n *\n * @param user - The authenticated TernSecureUser\n * @param options - Configuration options\n * @param options.onPreRedirect - Optional async callback executed before redirect.\n * Return false to prevent redirection, true to proceed.\n * This is where you can perform DB checks, role validation, etc.\n * The user object is accessible via closure.\n * If not provided, automatically redirects after session creation.\n */\n const onSignInSuccess = useCallback(\n async (\n user: TernSecureUser,\n options?: {\n onPreRedirect?: () => Promise<boolean>;\n },\n ) => {\n try {\n await ternSecure.createActiveSession({ session: user });\n\n if (options?.onPreRedirect) {\n try {\n const shouldRedirect = await options.onPreRedirect();\n\n if (shouldRedirect) {\n redirectAfterSignIn();\n }\n // If shouldRedirect is false, consumer handles redirect manually\n } catch (error) {\n const authError = createAuthError(\n 'Pre-redirect validation failed',\n 'PRE_REDIRECT_FAILED',\n 'PreRedirectError',\n error,\n );\n handleSignInError(authError);\n }\n } else {\n redirectAfterSignIn();\n }\n } catch (error) {\n const authError = createAuthError(\n error instanceof Error ? error.message : 'Failed to create session',\n 'SESSION_CREATION_FAILED',\n 'SessionError',\n error,\n );\n handleSignInError(authError);\n }\n },\n [ternSecure, createAuthError, handleSignInError, redirectAfterSignIn],\n );\n\n const checkRedirectResult = useCallback(async (): Promise<void> => {\n try {\n const result = await ternSecure.getRedirectResult();\n if (result && result.success) {\n await onSignInSuccess(result.user);\n } else if (result && !result.success) {\n const authError = createAuthError(\n result.message || 'Redirect sign-in failed',\n result.error || 'REDIRECT_FAILED',\n 'RedirectError',\n result,\n );\n handleSignInError(authError);\n }\n } catch (error) {\n const authError = createAuthError(\n error instanceof Error ? error.message : 'Failed to check redirect result',\n 'REDIRECT_CHECK_FAILED',\n 'RedirectError',\n error,\n );\n handleSignInError(authError);\n }\n }, [ternSecure, onSignInSuccess, handleSignInError, createAuthError]);\n\n return {\n ...(ctx as SignInCtx),\n afterSignInUrl,\n afterSignUpUrl,\n signInUrl,\n signUpUrl,\n checkRedirectResult,\n onSignInSuccess,\n handleSignInError,\n redirectAfterSignIn,\n };\n};\n\ninterface SignInProviderProps extends Partial<SignInCtx> {\n children: ReactNode;\n}\n\nexport function SignInProvider({ children, ...ctxProps }: SignInProviderProps) {\n const contextValue = ctxProps as SignInCtx;\n return <SignInContext.Provider value={contextValue}>{children}</SignInContext.Provider>;\n}\n\nexport { useTernSecure };\n"],"mappings":"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","names":["jsx","buildURL","RedirectUrls","useTernSecure","createContext","useCallback","useContext","useMemo","SignInContext","useSignInContext","context","ternSecure","ternSecureOptions","currentParams","ctx","createAuthError","message","code","name","response","authError","handleSignInError","redirectUrls","afterSignInUrl","afterSignUpUrl","redirectAfterSignIn","preservedParams","baseSignInUrl","baseSignUpUrl","signInUrl","signUpUrl","onSignInSuccess","user","options","error","checkRedirectResult","result","SignInProvider","children","ctxProps","contextValue"]}
|
package/dist/ctx/SignUpCtx.d.mts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import * as react from 'react';
|
|
3
|
-
import { ReactNode } from 'react';
|
|
4
|
-
import { SignUpProps, SignUpForceRedirectUrl, SignUpFallbackRedirectUrl, AuthErrorTree } from '@tern-secure/auth';
|
|
5
|
-
|
|
6
|
-
type SignUpCtx = SignUpProps & SignUpForceRedirectUrl & SignUpFallbackRedirectUrl;
|
|
7
|
-
type SignUpContextType = Omit<SignUpCtx, 'fallbackRedirectUrl' | 'forceRedirectUrl'> & {
|
|
8
|
-
handleSignUpError: (error: AuthErrorTree) => void;
|
|
9
|
-
redirectAfterSignUp: () => any;
|
|
10
|
-
signInUrl: string;
|
|
11
|
-
signUpUrl: string;
|
|
12
|
-
afterSignUpUrl: string;
|
|
13
|
-
afterSignInUrl: string;
|
|
14
|
-
};
|
|
15
|
-
declare const SignInContext: react.Context<SignUpCtx | null>;
|
|
16
|
-
declare const useSignUpContext: () => SignUpContextType;
|
|
17
|
-
interface SignUpProviderProps extends Partial<SignUpCtx> {
|
|
18
|
-
children: ReactNode;
|
|
19
|
-
}
|
|
20
|
-
declare function SignUpProvider({ children, ...ctxProps }: SignUpProviderProps): react_jsx_runtime.JSX.Element;
|
|
21
|
-
|
|
22
|
-
export { SignInContext, type SignUpContextType, type SignUpCtx, SignUpProvider, useSignUpContext };
|
package/dist/ctx/SignUpCtx.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import * as react from 'react';
|
|
3
|
-
import { ReactNode } from 'react';
|
|
4
|
-
import { SignUpProps, SignUpForceRedirectUrl, SignUpFallbackRedirectUrl, AuthErrorTree } from '@tern-secure/auth';
|
|
5
|
-
|
|
6
|
-
type SignUpCtx = SignUpProps & SignUpForceRedirectUrl & SignUpFallbackRedirectUrl;
|
|
7
|
-
type SignUpContextType = Omit<SignUpCtx, 'fallbackRedirectUrl' | 'forceRedirectUrl'> & {
|
|
8
|
-
handleSignUpError: (error: AuthErrorTree) => void;
|
|
9
|
-
redirectAfterSignUp: () => any;
|
|
10
|
-
signInUrl: string;
|
|
11
|
-
signUpUrl: string;
|
|
12
|
-
afterSignUpUrl: string;
|
|
13
|
-
afterSignInUrl: string;
|
|
14
|
-
};
|
|
15
|
-
declare const SignInContext: react.Context<SignUpCtx | null>;
|
|
16
|
-
declare const useSignUpContext: () => SignUpContextType;
|
|
17
|
-
interface SignUpProviderProps extends Partial<SignUpCtx> {
|
|
18
|
-
children: ReactNode;
|
|
19
|
-
}
|
|
20
|
-
declare function SignUpProvider({ children, ...ctxProps }: SignUpProviderProps): react_jsx_runtime.JSX.Element;
|
|
21
|
-
|
|
22
|
-
export { SignInContext, type SignUpContextType, type SignUpCtx, SignUpProvider, useSignUpContext };
|
package/dist/ctx/SignUpCtx.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";"use client";var l=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var E=Object.prototype.hasOwnProperty;var I=(e,r)=>{for(var n in r)l(e,n,{get:r[n],enumerable:!0})},F=(e,r,n,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of y(r))!E.call(e,t)&&t!==n&&l(e,t,{get:()=>r[t],enumerable:!(o=v(r,t))||o.enumerable});return e};var T=e=>F(l({},"__esModule",{value:!0}),e);var O={};I(O,{SignInContext:()=>p,SignUpProvider:()=>L,useSignUpContext:()=>k});module.exports=T(O);var d=require("react/jsx-runtime"),c=require("@tern-secure/auth"),S=require("@tern-secure/shared/react"),i=require("react");const p=(0,i.createContext)(null),k=()=>{const e=(0,i.useContext)(p),r=(0,S.useTernSecure)(),n=r._internal_getAllOptions(),o=(0,i.useMemo)(()=>typeof window<"u"?new URLSearchParams(window.location.search):new URLSearchParams,[]);if(e===null)throw new Error("useSignUpContext must be used within a SignUpProvider. Please wrap your component tree with SignUpProvider.");const{...t}=e,N=(0,i.useCallback)((U,C,b="AuthError",w)=>{const s=new Error(U);return s.name=b,s.code=C,s.response=w,s},[]),h=(0,i.useCallback)(U=>{console.error(U)},[]),a=new c.RedirectUrls(n,{...t,signUpForceRedirectUrl:t.signUpForceRedirectUrl||t.forceRedirectUrl,signUpFallbackRedirectUrl:t.signUpFallbackRedirectUrl||t.fallbackRedirectUrl},o),g=r.constructUrlWithAuthRedirect(a.getAfterSignUpUrl()),f=r.constructUrlWithAuthRedirect(a.getAfterSignInUrl()),m=()=>r.navigate(g),u=a.getPreservedSearchParams(),x=n.signUpUrl,P=n.signInUrl,R=(0,c.buildURL)({base:P,hashSearchParams:[o,u]},{stringify:!0}),A=(0,c.buildURL)({base:x,hashSearchParams:[o,u]},{stringify:!0});return{...t,afterSignInUrl:f,afterSignUpUrl:g,signInUrl:R,signUpUrl:A,handleSignUpError:h,redirectAfterSignUp:m}};function L({children:e,...r}){const n=r;return(0,d.jsx)(p.Provider,{value:n,children:e})}0&&(module.exports={SignInContext,SignUpProvider,useSignUpContext});
|
|
2
|
-
//# sourceMappingURL=SignUpCtx.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ctx/SignUpCtx.tsx"],"sourcesContent":["'use client';\n\nimport type {\n AuthErrorTree,\n SignUpFallbackRedirectUrl,\n SignUpForceRedirectUrl,\n SignUpProps,\n} from '@tern-secure/auth';\nimport { buildURL, RedirectUrls } from '@tern-secure/auth';\nimport { useTernSecure } from '@tern-secure/shared/react';\nimport type { ReactNode } from 'react';\nimport { createContext, useCallback, useContext, useMemo } from 'react';\n\nexport type SignUpCtx = SignUpProps & SignUpForceRedirectUrl & SignUpFallbackRedirectUrl;\n\nexport type SignUpContextType = Omit<SignUpCtx, 'fallbackRedirectUrl' | 'forceRedirectUrl'> & {\n handleSignUpError: (error: AuthErrorTree) => void;\n redirectAfterSignUp: () => any;\n signInUrl: string;\n signUpUrl: string;\n afterSignUpUrl: string;\n afterSignInUrl: string;\n};\n\nexport const SignInContext = createContext<SignUpCtx | null>(null);\n\nexport const useSignUpContext = (): SignUpContextType => {\n const context = useContext(SignInContext);\n const ternSecure = useTernSecure();\n const ternSecureOptions = ternSecure._internal_getAllOptions();\n const currentParams = useMemo(() => {\n if (typeof window !== 'undefined') {\n return new URLSearchParams(window.location.search);\n }\n return new URLSearchParams();\n }, []);\n\n if (context === null) {\n throw new Error(\n 'useSignUpContext must be used within a SignUpProvider. Please wrap your component tree with SignUpProvider.',\n );\n }\n\n const { ...ctx } = context;\n\n const createAuthError = useCallback(\n (message: string, code: string, name: string = 'AuthError', response?: any): AuthErrorTree => {\n const authError = new Error(message) as AuthErrorTree;\n authError.name = name;\n authError.code = code;\n authError.response = response;\n return authError;\n },\n [],\n );\n\n const handleSignUpError = useCallback((authError: AuthErrorTree) => {\n console.error(authError);\n }, []);\n\n const redirectUrls = new RedirectUrls(\n ternSecureOptions,\n {\n ...ctx,\n signUpForceRedirectUrl: ctx.signUpForceRedirectUrl || ctx.forceRedirectUrl,\n signUpFallbackRedirectUrl: ctx.signUpFallbackRedirectUrl || ctx.fallbackRedirectUrl,\n },\n currentParams,\n );\n\n const afterSignUpUrl = ternSecure.constructUrlWithAuthRedirect(redirectUrls.getAfterSignUpUrl());\n const afterSignInUrl = ternSecure.constructUrlWithAuthRedirect(redirectUrls.getAfterSignInUrl());\n\n const redirectAfterSignUp = () => ternSecure.navigate(afterSignUpUrl);\n\n const preservedParams = redirectUrls.getPreservedSearchParams();\n const baseSignUpUrl = ternSecureOptions.signUpUrl;\n const baseSignInUrl = ternSecureOptions.signInUrl;\n\n const signInUrl = buildURL(\n {\n base: baseSignInUrl,\n hashSearchParams: [currentParams, preservedParams],\n },\n { stringify: true },\n );\n\n const signUpUrl = buildURL(\n {\n base: baseSignUpUrl,\n hashSearchParams: [currentParams, preservedParams],\n },\n { stringify: true },\n );\n\n return {\n ...ctx,\n afterSignInUrl,\n afterSignUpUrl,\n signInUrl,\n signUpUrl,\n handleSignUpError,\n redirectAfterSignUp,\n };\n};\n\ninterface SignUpProviderProps extends Partial<SignUpCtx> {\n children: ReactNode;\n}\n\nexport function SignUpProvider({ children, ...ctxProps }: SignUpProviderProps) {\n const contextValue = ctxProps as SignUpCtx;\n return <SignInContext.Provider value={contextValue}>{children}</SignInContext.Provider>;\n}\n"],"mappings":"sbAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,EAAA,mBAAAC,EAAA,qBAAAC,IAAA,eAAAC,EAAAL,GAgHS,IAAAM,EAAA,6BAxGTC,EAAuC,6BACvCC,EAA8B,qCAE9BA,EAAgE,iBAazD,MAAMN,KAAgB,iBAAgC,IAAI,EAEpDE,EAAmB,IAAyB,CACvD,MAAMK,KAAU,cAAWP,CAAa,EAClCQ,KAAa,iBAAc,EAC3BC,EAAoBD,EAAW,wBAAwB,EACvDE,KAAgB,WAAQ,IACxB,OAAO,OAAW,IACb,IAAI,gBAAgB,OAAO,SAAS,MAAM,EAE5C,IAAI,gBACV,CAAC,CAAC,EAEL,GAAIH,IAAY,KACd,MAAM,IAAI,MACR,6GACF,EAGF,KAAM,CAAE,GAAGI,CAAI,EAAIJ,EAEbK,KAAkB,eACtB,CAACC,EAAiBC,EAAcC,EAAe,YAAaC,IAAkC,CAC5F,MAAMC,EAAY,IAAI,MAAMJ,CAAO,EACnC,OAAAI,EAAU,KAAOF,EACjBE,EAAU,KAAOH,EACjBG,EAAU,SAAWD,EACdC,CACT,EACA,CAAC,CACH,EAEMC,KAAoB,eAAaD,GAA6B,CAClE,QAAQ,MAAMA,CAAS,CACzB,EAAG,CAAC,CAAC,EAECE,EAAe,IAAI,eACvBV,EACA,CACE,GAAGE,EACH,uBAAwBA,EAAI,wBAA0BA,EAAI,iBAC1D,0BAA2BA,EAAI,2BAA6BA,EAAI,mBAClE,EACAD,CACF,EAEMU,EAAiBZ,EAAW,6BAA6BW,EAAa,kBAAkB,CAAC,EACzFE,EAAiBb,EAAW,6BAA6BW,EAAa,kBAAkB,CAAC,EAEzFG,EAAsB,IAAMd,EAAW,SAASY,CAAc,EAE9DG,EAAkBJ,EAAa,yBAAyB,EACxDK,EAAgBf,EAAkB,UAClCgB,EAAgBhB,EAAkB,UAElCiB,KAAY,YAChB,CACE,KAAMD,EACN,iBAAkB,CAACf,EAAea,CAAe,CACnD,EACA,CAAE,UAAW,EAAK,CACpB,EAEMI,KAAY,YAChB,CACE,KAAMH,EACN,iBAAkB,CAACd,EAAea,CAAe,CACnD,EACA,CAAE,UAAW,EAAK,CACpB,EAEA,MAAO,CACL,GAAGZ,EACH,eAAAU,EACA,eAAAD,EACA,UAAAM,EACA,UAAAC,EACA,kBAAAT,EACA,oBAAAI,CACF,CACF,EAMO,SAASrB,EAAe,CAAE,SAAA2B,EAAU,GAAGC,CAAS,EAAwB,CAC7E,MAAMC,EAAeD,EACrB,SAAO,OAAC7B,EAAc,SAAd,CAAuB,MAAO8B,EAAe,SAAAF,EAAS,CAChE","names":["SignUpCtx_exports","__export","SignInContext","SignUpProvider","useSignUpContext","__toCommonJS","import_jsx_runtime","import_auth","import_react","context","ternSecure","ternSecureOptions","currentParams","ctx","createAuthError","message","code","name","response","authError","handleSignUpError","redirectUrls","afterSignUpUrl","afterSignInUrl","redirectAfterSignUp","preservedParams","baseSignUpUrl","baseSignInUrl","signInUrl","signUpUrl","children","ctxProps","contextValue"]}
|
package/dist/ctx/SignUpCtx.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use client";import{jsx as E}from"react/jsx-runtime";import{buildURL as l,RedirectUrls as C}from"@tern-secure/auth";import{useTernSecure as b}from"@tern-secure/shared/react";import{createContext as w,useCallback as p,useContext as v,useMemo as y}from"react";const g=w(null),L=()=>{const n=v(g),r=b(),t=r._internal_getAllOptions(),o=y(()=>typeof window<"u"?new URLSearchParams(window.location.search):new URLSearchParams,[]);if(n===null)throw new Error("useSignUpContext must be used within a SignUpProvider. Please wrap your component tree with SignUpProvider.");const{...e}=n,I=p((s,P,R="AuthError",A)=>{const i=new Error(s);return i.name=R,i.code=P,i.response=A,i},[]),u=p(s=>{console.error(s)},[]),c=new C(t,{...e,signUpForceRedirectUrl:e.signUpForceRedirectUrl||e.forceRedirectUrl,signUpFallbackRedirectUrl:e.signUpFallbackRedirectUrl||e.fallbackRedirectUrl},o),a=r.constructUrlWithAuthRedirect(c.getAfterSignUpUrl()),S=r.constructUrlWithAuthRedirect(c.getAfterSignInUrl()),d=()=>r.navigate(a),U=c.getPreservedSearchParams(),h=t.signUpUrl,f=t.signInUrl,m=l({base:f,hashSearchParams:[o,U]},{stringify:!0}),x=l({base:h,hashSearchParams:[o,U]},{stringify:!0});return{...e,afterSignInUrl:S,afterSignUpUrl:a,signInUrl:m,signUpUrl:x,handleSignUpError:u,redirectAfterSignUp:d}};function O({children:n,...r}){const t=r;return E(g.Provider,{value:t,children:n})}export{g as SignInContext,O as SignUpProvider,L as useSignUpContext};
|
|
2
|
-
//# sourceMappingURL=SignUpCtx.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ctx/SignUpCtx.tsx"],"sourcesContent":["'use client';\n\nimport type {\n AuthErrorTree,\n SignUpFallbackRedirectUrl,\n SignUpForceRedirectUrl,\n SignUpProps,\n} from '@tern-secure/auth';\nimport { buildURL, RedirectUrls } from '@tern-secure/auth';\nimport { useTernSecure } from '@tern-secure/shared/react';\nimport type { ReactNode } from 'react';\nimport { createContext, useCallback, useContext, useMemo } from 'react';\n\nexport type SignUpCtx = SignUpProps & SignUpForceRedirectUrl & SignUpFallbackRedirectUrl;\n\nexport type SignUpContextType = Omit<SignUpCtx, 'fallbackRedirectUrl' | 'forceRedirectUrl'> & {\n handleSignUpError: (error: AuthErrorTree) => void;\n redirectAfterSignUp: () => any;\n signInUrl: string;\n signUpUrl: string;\n afterSignUpUrl: string;\n afterSignInUrl: string;\n};\n\nexport const SignInContext = createContext<SignUpCtx | null>(null);\n\nexport const useSignUpContext = (): SignUpContextType => {\n const context = useContext(SignInContext);\n const ternSecure = useTernSecure();\n const ternSecureOptions = ternSecure._internal_getAllOptions();\n const currentParams = useMemo(() => {\n if (typeof window !== 'undefined') {\n return new URLSearchParams(window.location.search);\n }\n return new URLSearchParams();\n }, []);\n\n if (context === null) {\n throw new Error(\n 'useSignUpContext must be used within a SignUpProvider. Please wrap your component tree with SignUpProvider.',\n );\n }\n\n const { ...ctx } = context;\n\n const createAuthError = useCallback(\n (message: string, code: string, name: string = 'AuthError', response?: any): AuthErrorTree => {\n const authError = new Error(message) as AuthErrorTree;\n authError.name = name;\n authError.code = code;\n authError.response = response;\n return authError;\n },\n [],\n );\n\n const handleSignUpError = useCallback((authError: AuthErrorTree) => {\n console.error(authError);\n }, []);\n\n const redirectUrls = new RedirectUrls(\n ternSecureOptions,\n {\n ...ctx,\n signUpForceRedirectUrl: ctx.signUpForceRedirectUrl || ctx.forceRedirectUrl,\n signUpFallbackRedirectUrl: ctx.signUpFallbackRedirectUrl || ctx.fallbackRedirectUrl,\n },\n currentParams,\n );\n\n const afterSignUpUrl = ternSecure.constructUrlWithAuthRedirect(redirectUrls.getAfterSignUpUrl());\n const afterSignInUrl = ternSecure.constructUrlWithAuthRedirect(redirectUrls.getAfterSignInUrl());\n\n const redirectAfterSignUp = () => ternSecure.navigate(afterSignUpUrl);\n\n const preservedParams = redirectUrls.getPreservedSearchParams();\n const baseSignUpUrl = ternSecureOptions.signUpUrl;\n const baseSignInUrl = ternSecureOptions.signInUrl;\n\n const signInUrl = buildURL(\n {\n base: baseSignInUrl,\n hashSearchParams: [currentParams, preservedParams],\n },\n { stringify: true },\n );\n\n const signUpUrl = buildURL(\n {\n base: baseSignUpUrl,\n hashSearchParams: [currentParams, preservedParams],\n },\n { stringify: true },\n );\n\n return {\n ...ctx,\n afterSignInUrl,\n afterSignUpUrl,\n signInUrl,\n signUpUrl,\n handleSignUpError,\n redirectAfterSignUp,\n };\n};\n\ninterface SignUpProviderProps extends Partial<SignUpCtx> {\n children: ReactNode;\n}\n\nexport function SignUpProvider({ children, ...ctxProps }: SignUpProviderProps) {\n const contextValue = ctxProps as SignUpCtx;\n return <SignInContext.Provider value={contextValue}>{children}</SignInContext.Provider>;\n}\n"],"mappings":"aAgHS,cAAAA,MAAA,oBAxGT,OAAS,YAAAC,EAAU,gBAAAC,MAAoB,oBACvC,OAAS,iBAAAC,MAAqB,4BAE9B,OAAS,iBAAAC,EAAe,eAAAC,EAAa,cAAAC,EAAY,WAAAC,MAAe,QAazD,MAAMC,EAAgBJ,EAAgC,IAAI,EAEpDK,EAAmB,IAAyB,CACvD,MAAMC,EAAUJ,EAAWE,CAAa,EAClCG,EAAaR,EAAc,EAC3BS,EAAoBD,EAAW,wBAAwB,EACvDE,EAAgBN,EAAQ,IACxB,OAAO,OAAW,IACb,IAAI,gBAAgB,OAAO,SAAS,MAAM,EAE5C,IAAI,gBACV,CAAC,CAAC,EAEL,GAAIG,IAAY,KACd,MAAM,IAAI,MACR,6GACF,EAGF,KAAM,CAAE,GAAGI,CAAI,EAAIJ,EAEbK,EAAkBV,EACtB,CAACW,EAAiBC,EAAcC,EAAe,YAAaC,IAAkC,CAC5F,MAAMC,EAAY,IAAI,MAAMJ,CAAO,EACnC,OAAAI,EAAU,KAAOF,EACjBE,EAAU,KAAOH,EACjBG,EAAU,SAAWD,EACdC,CACT,EACA,CAAC,CACH,EAEMC,EAAoBhB,EAAae,GAA6B,CAClE,QAAQ,MAAMA,CAAS,CACzB,EAAG,CAAC,CAAC,EAECE,EAAe,IAAIpB,EACvBU,EACA,CACE,GAAGE,EACH,uBAAwBA,EAAI,wBAA0BA,EAAI,iBAC1D,0BAA2BA,EAAI,2BAA6BA,EAAI,mBAClE,EACAD,CACF,EAEMU,EAAiBZ,EAAW,6BAA6BW,EAAa,kBAAkB,CAAC,EACzFE,EAAiBb,EAAW,6BAA6BW,EAAa,kBAAkB,CAAC,EAEzFG,EAAsB,IAAMd,EAAW,SAASY,CAAc,EAE9DG,EAAkBJ,EAAa,yBAAyB,EACxDK,EAAgBf,EAAkB,UAClCgB,EAAgBhB,EAAkB,UAElCiB,EAAY5B,EAChB,CACE,KAAM2B,EACN,iBAAkB,CAACf,EAAea,CAAe,CACnD,EACA,CAAE,UAAW,EAAK,CACpB,EAEMI,EAAY7B,EAChB,CACE,KAAM0B,EACN,iBAAkB,CAACd,EAAea,CAAe,CACnD,EACA,CAAE,UAAW,EAAK,CACpB,EAEA,MAAO,CACL,GAAGZ,EACH,eAAAU,EACA,eAAAD,EACA,UAAAM,EACA,UAAAC,EACA,kBAAAT,EACA,oBAAAI,CACF,CACF,EAMO,SAASM,EAAe,CAAE,SAAAC,EAAU,GAAGC,CAAS,EAAwB,CAC7E,MAAMC,EAAeD,EACrB,OAAOjC,EAACQ,EAAc,SAAd,CAAuB,MAAO0B,EAAe,SAAAF,EAAS,CAChE","names":["jsx","buildURL","RedirectUrls","useTernSecure","createContext","useCallback","useContext","useMemo","SignInContext","useSignUpContext","context","ternSecure","ternSecureOptions","currentParams","ctx","createAuthError","message","code","name","response","authError","handleSignUpError","redirectUrls","afterSignUpUrl","afterSignInUrl","redirectAfterSignUp","preservedParams","baseSignUpUrl","baseSignInUrl","signInUrl","signUpUrl","SignUpProvider","children","ctxProps","contextValue"]}
|