@tern-secure/nextjs 3.1.63 → 3.1.64
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/cjs/app-router/client/TernSecureProvider.cjs +4 -2
- package/dist/cjs/app-router/client/TernSecureProvider.cjs.map +1 -1
- package/dist/cjs/app-router/server/TernSecureServerProvider.cjs +69 -105
- package/dist/cjs/app-router/server/TernSecureServerProvider.cjs.map +1 -1
- package/dist/cjs/boundary/TernSecureCtx.cjs +1 -1
- package/dist/cjs/boundary/TernSecureCtx.cjs.map +1 -1
- package/dist/cjs/boundary/hooks/useAuth.cjs +95 -0
- package/dist/cjs/boundary/hooks/useAuth.cjs.map +1 -0
- package/dist/cjs/index.cjs +95 -136
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/app-router/client/TernSecureProvider.d.ts +2 -1
- package/dist/esm/app-router/client/TernSecureProvider.js +3 -38
- package/dist/esm/app-router/client/TernSecureProvider.js.map +1 -1
- package/dist/esm/app-router/server/TernSecureServerProvider.d.ts +19 -3
- package/dist/esm/app-router/server/TernSecureServerProvider.js +5 -1
- package/dist/esm/boundary/TernSecureCtx.js +1 -1
- package/dist/esm/boundary/hooks/useAuth.d.ts +7 -0
- package/dist/esm/boundary/hooks/useAuth.js +7 -0
- package/dist/esm/boundary/hooks/useAuth.js.map +1 -0
- package/dist/esm/{chunk-RAZTKM22.js → chunk-LSHP5OGU.js} +3 -3
- package/dist/esm/chunk-LSHP5OGU.js.map +1 -0
- package/dist/esm/chunk-PY4JT34Z.js +21 -0
- package/dist/esm/chunk-PY4JT34Z.js.map +1 -0
- package/dist/esm/chunk-XXTEVPIU.js +24 -0
- package/dist/esm/chunk-XXTEVPIU.js.map +1 -0
- package/dist/esm/chunk-ZLZQ7LBR.js +41 -0
- package/dist/esm/chunk-ZLZQ7LBR.js.map +1 -0
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +4 -3
- package/dist/esm/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/boundary/hooks/use-auth.cjs +0 -39
- package/dist/cjs/boundary/hooks/use-auth.cjs.map +0 -1
- package/dist/esm/boundary/hooks/use-auth.d.ts +0 -24
- package/dist/esm/boundary/hooks/use-auth.js +0 -4
- package/dist/esm/boundary/hooks/use-auth.js.map +0 -1
- package/dist/esm/chunk-F3ZEM7GT.js +0 -23
- package/dist/esm/chunk-F3ZEM7GT.js.map +0 -1
- package/dist/esm/chunk-JK7KVGFJ.js +0 -20
- package/dist/esm/chunk-JK7KVGFJ.js.map +0 -1
- package/dist/esm/chunk-RAZTKM22.js.map +0 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { TernSecureClientProvider } from './chunk-ZLZQ7LBR.js';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
function TernSecureLoadingFallback() {
|
|
6
|
+
return /* @__PURE__ */ jsx(
|
|
7
|
+
"div",
|
|
8
|
+
{
|
|
9
|
+
"aria-label": "Loading authentication",
|
|
10
|
+
role: "status",
|
|
11
|
+
className: "tern-secure-loading",
|
|
12
|
+
children: /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Loading authentication..." })
|
|
13
|
+
}
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
function TernSecureServerProvider({
|
|
17
|
+
children
|
|
18
|
+
}) {
|
|
19
|
+
return /* @__PURE__ */ jsx(React.Suspense, { fallback: /* @__PURE__ */ jsx(TernSecureLoadingFallback, {}), children: /* @__PURE__ */ jsx(TernSecureClientProvider, { children }) });
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export { TernSecureServerProvider };
|
|
23
|
+
//# sourceMappingURL=chunk-XXTEVPIU.js.map
|
|
24
|
+
//# sourceMappingURL=chunk-XXTEVPIU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/app-router/server/TernSecureServerProvider.tsx"],"names":[],"mappings":";;;;AAMA,SAAS,yBAA4B,GAAA;AACnC,EACE,uBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,YAAW,EAAA,wBAAA;AAAA,MACX,IAAK,EAAA,QAAA;AAAA,MACL,SAAU,EAAA,qBAAA;AAAA,MAEV,QAAC,kBAAA,GAAA,CAAA,MAAA,EAAA,EAAK,SAAU,EAAA,SAAA,EAAU,QAAyB,EAAA,2BAAA,EAAA;AAAA;AAAA,GACrD;AAEJ;AA2BO,SAAS,wBAAyB,CAAA;AAAA,EACvC;AACF,CAAkC,EAAA;AAChC,EACE,uBAAA,GAAA,CAAC,KAAM,CAAA,QAAA,EAAN,EAAe,QAAA,kBAAW,GAAA,CAAA,yBAAA,EAAA,EAA0B,CACnD,EAAA,QAAA,kBAAA,GAAA,CAAC,wBACE,EAAA,EAAA,QAAA,EACH,CACF,EAAA,CAAA;AAEJ","file":"chunk-XXTEVPIU.js","sourcesContent":["import React from \"react\"\r\nimport { TernSecureClientProvider } from \"../client/TernSecureProvider\"\r\n\r\n\r\n\r\n// Loading fallback component\r\nfunction TernSecureLoadingFallback() {\r\n return (\r\n <div \r\n aria-label=\"Loading authentication\" \r\n role=\"status\"\r\n className=\"tern-secure-loading\"\r\n >\r\n <span className=\"sr-only\">Loading authentication...</span>\r\n </div>\r\n )\r\n}\r\n\r\ninterface TernSecureServerProviderProps {\r\n children: React.ReactNode\r\n}\r\n\r\n/**\r\n * Root Provider for TernSecure\r\n * Use this in your Next.js App Router root layout\r\n * Automatically handles client/server boundary and authentication state\r\n * \r\n * @example\r\n * // app/layout.tsx\r\n * import { TernSecureProvider } from '@tern/secure'\r\n * \r\n * export default function RootLayout({ children }) {\r\n * return (\r\n * <html>\r\n * <body>\r\n * <TernSecureProvider>\r\n * {children}\r\n * </TernSecureProvider>\r\n * </body>\r\n * </html>\r\n * )\r\n * }\r\n */\r\nexport function TernSecureServerProvider({ \r\n children \r\n}: TernSecureServerProviderProps) {\r\n return (\r\n <React.Suspense fallback={<TernSecureLoadingFallback />}>\r\n <TernSecureClientProvider>\r\n {children}\r\n </TernSecureClientProvider>\r\n </React.Suspense>\r\n )\r\n}\r\n\r\n// Export types for internal use\r\nexport type { TernSecureServerProviderProps }"]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { TernSecureCtxProvider } from './chunk-LSHP5OGU.js';
|
|
2
|
+
import { TernSecureAuth } from './chunk-FVV74XVR.js';
|
|
3
|
+
import React, { useState, useEffect } from 'react';
|
|
4
|
+
import { onAuthStateChanged } from 'firebase/auth';
|
|
5
|
+
import { jsx } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
var AuthStateContext = React.createContext(null);
|
|
8
|
+
var auth = TernSecureAuth();
|
|
9
|
+
function TernSecureClientProvider({ children }) {
|
|
10
|
+
const [authState, setAuthState] = useState({
|
|
11
|
+
loading: true,
|
|
12
|
+
isSignedIn: false,
|
|
13
|
+
userId: null,
|
|
14
|
+
error: null
|
|
15
|
+
});
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
const unsubscribe = onAuthStateChanged(auth, (user) => {
|
|
18
|
+
if (user) {
|
|
19
|
+
setAuthState({
|
|
20
|
+
loading: false,
|
|
21
|
+
isSignedIn: true,
|
|
22
|
+
userId: user.uid,
|
|
23
|
+
error: null
|
|
24
|
+
});
|
|
25
|
+
} else {
|
|
26
|
+
setAuthState({
|
|
27
|
+
loading: false,
|
|
28
|
+
isSignedIn: false,
|
|
29
|
+
userId: null,
|
|
30
|
+
error: null
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
return () => unsubscribe();
|
|
35
|
+
}, []);
|
|
36
|
+
return /* @__PURE__ */ jsx(TernSecureCtxProvider, { children: /* @__PURE__ */ jsx(AuthStateContext.Provider, { value: authState, children }) });
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export { AuthStateContext, TernSecureClientProvider };
|
|
40
|
+
//# sourceMappingURL=chunk-ZLZQ7LBR.js.map
|
|
41
|
+
//# sourceMappingURL=chunk-ZLZQ7LBR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/app-router/client/TernSecureProvider.tsx"],"names":[],"mappings":";;;;;;AAca,IAAA,gBAAA,GAAmB,KAAM,CAAA,aAAA,CAAsC,IAAI;AAMhF,IAAM,OAAO,cAAe,EAAA;AAErB,SAAS,wBAAA,CAAyB,EAAE,QAAA,EAAmC,EAAA;AAC5E,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,QAA0B,CAAA;AAAA,IAC1D,OAAS,EAAA,IAAA;AAAA,IACT,UAAY,EAAA,KAAA;AAAA,IACZ,MAAQ,EAAA,IAAA;AAAA,IACR,KAAO,EAAA;AAAA,GACR,CAAA;AACH,EAAA,SAAA,CAAU,MAAM;AACZ,IAAA,MAAM,WAAc,GAAA,kBAAA,CAAmB,IAAM,EAAA,CAAC,IAAS,KAAA;AACrD,MAAA,IAAI,IAAM,EAAA;AACR,QAAa,YAAA,CAAA;AAAA,UACX,OAAS,EAAA,KAAA;AAAA,UACT,UAAY,EAAA,IAAA;AAAA,UACZ,QAAQ,IAAK,CAAA,GAAA;AAAA,UACb,KAAO,EAAA;AAAA,SACR,CAAA;AAAA,OACI,MAAA;AACL,QAAa,YAAA,CAAA;AAAA,UACX,OAAS,EAAA,KAAA;AAAA,UACT,UAAY,EAAA,KAAA;AAAA,UACZ,MAAQ,EAAA,IAAA;AAAA,UACR,KAAO,EAAA;AAAA,SACR,CAAA;AAAA;AACH,KACD,CAAA;AAED,IAAA,OAAO,MAAM,WAAY,EAAA;AAAA,GAC3B,EAAG,EAAE,CAAA;AAGL,EACE,uBAAA,GAAA,CAAC,yBACC,QAAC,kBAAA,GAAA,CAAA,gBAAA,CAAiB,UAAjB,EAA0B,KAAA,EAAO,SACjC,EAAA,QAAA,EACD,CACF,EAAA,CAAA;AAEJ","file":"chunk-ZLZQ7LBR.js","sourcesContent":["'use client'\r\n\r\nimport React, { useState, useEffect } from 'react'\r\nimport { TernSecureAuth } from '../../utils/client-init'\r\nimport { onAuthStateChanged } from \"firebase/auth\"\r\nimport { useInternalContext, TernSecureCtxProvider } from '../../boundary/TernSecureCtx'\r\n\r\nexport type TernSecureState = {\r\n userId: string | null\r\n loading: boolean\r\n error: string | null\r\n isSignedIn: boolean\r\n}\r\n\r\nexport const AuthStateContext = React.createContext<TernSecureState | null>(null)\r\n\r\ninterface TernSecureClientProps {\r\n children: React.ReactNode\r\n}\r\n\r\nconst auth = TernSecureAuth();\r\n\r\nexport function TernSecureClientProvider({ children }: TernSecureClientProps) {\r\n const [authState, setAuthState] = useState<TernSecureState>({\r\n loading: true,\r\n isSignedIn: false,\r\n userId: null,\r\n error: null\r\n })\r\nuseEffect(() => {\r\n const unsubscribe = onAuthStateChanged(auth, (user) => {\r\n if (user) {\r\n setAuthState({\r\n loading: false,\r\n isSignedIn: true,\r\n userId: user.uid,\r\n error: null\r\n })\r\n } else {\r\n setAuthState({\r\n loading: false,\r\n isSignedIn: false,\r\n userId: null,\r\n error: null\r\n })\r\n }\r\n })\r\n \r\n return () => unsubscribe()\r\n }, [])\r\n\r\n\r\n return (\r\n <TernSecureCtxProvider>\r\n <AuthStateContext.Provider value={authState}>\r\n {children}\r\n </AuthStateContext.Provider>\r\n </TernSecureCtxProvider>\r\n )\r\n}\r\n\r\nexport type { TernSecureClientProps }"]}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { TernSecureServerProvider } from './app-router/server/TernSecureServerProvider.js';
|
|
2
|
+
export { TernSecureState } from './app-router/client/TernSecureProvider.js';
|
|
2
3
|
export { TernSecureAuth, TernSecureFirestore, TernSecureStorage } from './utils/client-init.js';
|
|
3
4
|
export { loadFireConfig, validateConfig } from './utils/config.js';
|
|
4
5
|
export { signInWithEmail } from './app-router/server/auth.js';
|
|
5
|
-
export {
|
|
6
|
-
export { useAuth } from './boundary/hooks/use-auth.js';
|
|
6
|
+
export { useAuth } from './boundary/hooks/useAuth.js';
|
|
7
7
|
export { SignIn } from './components/sign-in.js';
|
|
8
8
|
import 'react/jsx-runtime';
|
|
9
9
|
import 'react';
|
package/dist/esm/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { TernSecureServerProvider } from './chunk-
|
|
2
|
-
export { useAuth } from './chunk-
|
|
3
|
-
import './chunk-
|
|
1
|
+
import { TernSecureServerProvider } from './chunk-XXTEVPIU.js';
|
|
2
|
+
export { useAuth } from './chunk-PY4JT34Z.js';
|
|
3
|
+
import './chunk-ZLZQ7LBR.js';
|
|
4
|
+
import './chunk-LSHP5OGU.js';
|
|
4
5
|
export { SignIn } from './chunk-EIOZNLP2.js';
|
|
5
6
|
export { signInWithEmail } from './chunk-4XFIX4FL.js';
|
|
6
7
|
export { TernSecureAuth, TernSecureFirestore, TernSecureStorage } from './chunk-FVV74XVR.js';
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;AAWO,IAAM,kBAAqB,GAAA","file":"index.js","sourcesContent":["import { TernSecureServerProvider } from './app-router/server/TernSecureServerProvider'\r\nimport type { TernSecureState } from './app-router/client/TernSecureProvider'\r\nexport { TernSecureAuth, TernSecureFirestore, TernSecureStorage } from './utils/client-init'\r\nexport { loadFireConfig, validateConfig } from './utils/config'\r\nexport { signInWithEmail } from './app-router/server/auth'\r\n//export { useInternalContext } from './boundary/TernSecureCtx'\r\n//export { TernSecureClientProvider } from './app-router/client/TernSecureProvider'\r\n//export { TernSecureProvider } from './app-router/server/TernSecureServerProvider'\r\nexport { useAuth } from './boundary/hooks/useAuth' \r\nexport { SignIn } from './components/sign-in'\r\n\r\nexport const TernSecureProvider = TernSecureServerProvider\r\nexport type { TernSecureState }"]}
|
package/package.json
CHANGED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var React = require('react');
|
|
4
|
-
require('react/jsx-runtime');
|
|
5
|
-
|
|
6
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
|
-
|
|
8
|
-
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
9
|
-
|
|
10
|
-
var TernSecureContext = React__default.default.createContext(null);
|
|
11
|
-
TernSecureContext.displayName = "TernSecureContext";
|
|
12
|
-
var useInternalContext = (hookname = "useInternalContext") => {
|
|
13
|
-
const context = React__default.default.useContext(TernSecureContext);
|
|
14
|
-
if (!context) {
|
|
15
|
-
throw new Error(
|
|
16
|
-
`${hookname} must be used within TernSecureClientProvider`
|
|
17
|
-
);
|
|
18
|
-
}
|
|
19
|
-
return context;
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
// src/boundary/hooks/use-auth.ts
|
|
23
|
-
function useAuth() {
|
|
24
|
-
const context = useInternalContext("useAuth");
|
|
25
|
-
if (!context.dynamic) {
|
|
26
|
-
throw new Error("Authentication context not properly initialized");
|
|
27
|
-
}
|
|
28
|
-
const defaultState = {
|
|
29
|
-
loading: true,
|
|
30
|
-
isSignedIn: false,
|
|
31
|
-
userId: null,
|
|
32
|
-
error: null
|
|
33
|
-
};
|
|
34
|
-
return defaultState;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
exports.useAuth = useAuth;
|
|
38
|
-
//# sourceMappingURL=use-auth.cjs.map
|
|
39
|
-
//# sourceMappingURL=use-auth.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/boundary/TernSecureCtx.tsx","../../../../src/boundary/hooks/use-auth.ts"],"names":["React"],"mappings":";;;;;;;;;AAcA,IAAM,iBAAA,GAAoBA,sBAAM,CAAA,aAAA,CAAyC,IAAI,CAAA;AAG7E,iBAAA,CAAkB,WAAc,GAAA,mBAAA;AAEhC,IAAM,kBAAA,GAAqB,CAAC,QAAA,GAAmB,oBAAyB,KAAA;AAEtE,EAAM,MAAA,OAAA,GAAUA,sBAAM,CAAA,UAAA,CAAW,iBAAiB,CAAA;AAElD,EAAA,IAAI,CAAC,OAAS,EAAA;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,GAAG,QAAQ,CAAA,6CAAA;AAAA,KACb;AAAA;AAGF,EAAO,OAAA,OAAA;AACT,CAAA;;;ACRO,SAAS,OAA2B,GAAA;AAEzC,EAAM,MAAA,OAAA,GAAU,mBAAmB,SAAS,CAAA;AAG5C,EAAI,IAAA,CAAC,QAAQ,OAAS,EAAA;AACpB,IAAM,MAAA,IAAI,MAAM,iDAAiD,CAAA;AAAA;AAInE,EAAA,MAAM,YAAgC,GAAA;AAAA,IACpC,OAAS,EAAA,IAAA;AAAA,IACT,UAAY,EAAA,KAAA;AAAA,IACZ,MAAQ,EAAA,IAAA;AAAA,IACR,KAAO,EAAA;AAAA,GACT;AAEA,EAAO,OAAA,YAAA;AACT","file":"use-auth.cjs","sourcesContent":["'use client'\r\n\r\nimport React from 'react'\r\n\r\n// Core types\r\nexport type TernSecureCtxValue = {\r\n dynamic: boolean\r\n}\r\n\r\nexport type TernSecureProviderProps = React.PropsWithChildren<{\r\n options?: unknown // Made optional since we're not using it\r\n}>\r\n\r\n// Context with proper null handling\r\nconst TernSecureContext = React.createContext<TernSecureCtxValue | null>(null)\r\n\r\n// Set display name for better debugging\r\nTernSecureContext.displayName = 'TernSecureContext'\r\n\r\nconst useInternalContext = (hookname: string = 'useInternalContext') => {\r\n\r\n const context = React.useContext(TernSecureContext)\r\n \r\n if (!context) {\r\n throw new Error(\r\n `${hookname} must be used within TernSecureClientProvider`\r\n )\r\n }\r\n\r\n return context\r\n}\r\n\r\n/**\r\n * Provider component for TernSecure\r\n * Must be used in client components only\r\n */\r\nconst TernSecureCtxProvider: React.FC<TernSecureProviderProps> = ({ \r\n children \r\n}) => {\r\n\r\n return (\r\n <TernSecureContext.Provider value={{ dynamic: true }}>\r\n {children}\r\n </TernSecureContext.Provider>\r\n )\r\n}\r\n\r\nexport {\r\n useInternalContext,\r\n TernSecureCtxProvider\r\n}","'use client'\r\n\r\nimport { useInternalContext } from '../TernSecureCtx'\r\nimport type { TernSecureState } from '../../app-router/client/TernSecureProvider'\r\n\r\n/**\r\n * Hook to access TernSecure authentication state\r\n * Must be used within TernSecureClientProvider and in client components\r\n * \r\n * \r\n * @returns {TernSecureState} Current authentication state\r\n * \r\n * @example\r\n * function AuthenticatedComponent() {\r\n * const { isSignedIn, loading, userId, error } = useAuth()\r\n * \r\n * if (loading) return <div>Loading...</div>\r\n * if (error) return <div>Error: {error}</div>\r\n * \r\n * return isSignedIn ? <div>Welcome user: {userId}</div> : <div>Please sign in</div>\r\n * }\r\n */\r\nexport function useAuth(): TernSecureState {\r\n // useInternalContext already handles client-side and provider checks\r\n const context = useInternalContext('useAuth')\r\n\r\n // Since our context only has dynamic flag, we need to access the parent provider\r\n if (!context.dynamic) {\r\n throw new Error('Authentication context not properly initialized')\r\n }\r\n\r\n // Get auth state from the nearest TernSecureClientProvider\r\n const defaultState: TernSecureState = {\r\n loading: true,\r\n isSignedIn: false,\r\n userId: null,\r\n error: null\r\n }\r\n\r\n return defaultState\r\n}\r\n\r\n// Re-export the state type for consumers\r\nexport type { TernSecureState }"]}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { TernSecureState } from '../../app-router/client/TernSecureProvider.js';
|
|
2
|
-
import 'react/jsx-runtime';
|
|
3
|
-
import 'react';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Hook to access TernSecure authentication state
|
|
7
|
-
* Must be used within TernSecureClientProvider and in client components
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* @returns {TernSecureState} Current authentication state
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* function AuthenticatedComponent() {
|
|
14
|
-
* const { isSignedIn, loading, userId, error } = useAuth()
|
|
15
|
-
*
|
|
16
|
-
* if (loading) return <div>Loading...</div>
|
|
17
|
-
* if (error) return <div>Error: {error}</div>
|
|
18
|
-
*
|
|
19
|
-
* return isSignedIn ? <div>Welcome user: {userId}</div> : <div>Please sign in</div>
|
|
20
|
-
* }
|
|
21
|
-
*/
|
|
22
|
-
declare function useAuth(): TernSecureState;
|
|
23
|
-
|
|
24
|
-
export { TernSecureState, useAuth };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"use-auth.js"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import dynamic from 'next/dynamic';
|
|
3
|
-
import { jsx } from 'react/jsx-runtime';
|
|
4
|
-
|
|
5
|
-
// src/app-router/server/TernSecureServerProvider.tsx
|
|
6
|
-
var TernSecureClientProvider = dynamic(
|
|
7
|
-
() => import('./app-router/client/TernSecureProvider.js').then((mod) => mod.TernSecureClientProvider),
|
|
8
|
-
{
|
|
9
|
-
loading: () => /* @__PURE__ */ jsx(TernSecureLoadingFallback, {})
|
|
10
|
-
}
|
|
11
|
-
);
|
|
12
|
-
function TernSecureLoadingFallback() {
|
|
13
|
-
return /* @__PURE__ */ jsx("div", { "aria-label": "Loading authentication", role: "status", children: /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Loading authentication..." }) });
|
|
14
|
-
}
|
|
15
|
-
function TernSecureServerProvider({
|
|
16
|
-
children
|
|
17
|
-
}) {
|
|
18
|
-
return /* @__PURE__ */ jsx(React.Suspense, { fallback: /* @__PURE__ */ jsx(TernSecureLoadingFallback, {}), children: /* @__PURE__ */ jsx(TernSecureClientProvider, { children }) });
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export { TernSecureServerProvider };
|
|
22
|
-
//# sourceMappingURL=chunk-F3ZEM7GT.js.map
|
|
23
|
-
//# sourceMappingURL=chunk-F3ZEM7GT.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/app-router/server/TernSecureServerProvider.tsx"],"names":[],"mappings":";;;;;AAKA,IAAM,wBAA2B,GAAA,OAAA;AAAA,EAC/B,MAAM,OAAO,2CAA8B,EAAE,IAAK,CAAA,CAAA,GAAA,KAAO,IAAI,wBAAwB,CAAA;AAAA,EACrF;AAAA,IACE,OAAA,EAAS,sBAAM,GAAA,CAAC,yBAA0B,EAAA,EAAA;AAAA;AAE9C,CAAA;AAGA,SAAS,yBAA4B,GAAA;AACnC,EACE,uBAAA,GAAA,CAAC,KAAI,EAAA,EAAA,YAAA,EAAW,wBAAyB,EAAA,IAAA,EAAK,QAC5C,EAAA,QAAA,kBAAA,GAAA,CAAC,MAAK,EAAA,EAAA,SAAA,EAAU,SAAU,EAAA,QAAA,EAAA,2BAAA,EAAyB,CACrD,EAAA,CAAA;AAEJ;AAWO,SAAS,wBAAyB,CAAA;AAAA,EACvC;AACF,CAAkC,EAAA;AAChC,EACE,uBAAA,GAAA,CAAC,KAAM,CAAA,QAAA,EAAN,EAAe,QAAA,kBAAW,GAAA,CAAA,yBAAA,EAAA,EAA0B,CACnD,EAAA,QAAA,kBAAA,GAAA,CAAC,wBACE,EAAA,EAAA,QAAA,EACH,CACF,EAAA,CAAA;AAEJ","file":"chunk-F3ZEM7GT.js","sourcesContent":["import React from \"react\"\r\nimport dynamic from 'next/dynamic'\r\nimport type { TernSecureClientProps } from '../client/TernSecureProvider'\r\n\r\n// Dynamically import the client provider with no SSR\r\nconst TernSecureClientProvider = dynamic<TernSecureClientProps>(\r\n () => import('../client/TernSecureProvider').then(mod => mod.TernSecureClientProvider),\r\n { \r\n loading: () => <TernSecureLoadingFallback />\r\n }\r\n)\r\n\r\n// Loading fallback component\r\nfunction TernSecureLoadingFallback() {\r\n return (\r\n <div aria-label=\"Loading authentication\" role=\"status\">\r\n <span className=\"sr-only\">Loading authentication...</span>\r\n </div>\r\n )\r\n}\r\n\r\ninterface TernSecureServerProviderProps {\r\n children: React.ReactNode\r\n}\r\n\r\n/**\r\n * Server Provider for TernSecure\r\n * Safe to use in server components\r\n * Automatically handles client/server boundary\r\n */\r\nexport function TernSecureServerProvider({ \r\n children \r\n}: TernSecureServerProviderProps) {\r\n return (\r\n <React.Suspense fallback={<TernSecureLoadingFallback />}>\r\n <TernSecureClientProvider>\r\n {children}\r\n </TernSecureClientProvider>\r\n </React.Suspense>\r\n )\r\n}\r\n\r\n// Export types for package users\r\nexport type { TernSecureServerProviderProps }"]}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { useInternalContext } from './chunk-RAZTKM22.js';
|
|
2
|
-
|
|
3
|
-
// src/boundary/hooks/use-auth.ts
|
|
4
|
-
function useAuth() {
|
|
5
|
-
const context = useInternalContext("useAuth");
|
|
6
|
-
if (!context.dynamic) {
|
|
7
|
-
throw new Error("Authentication context not properly initialized");
|
|
8
|
-
}
|
|
9
|
-
const defaultState = {
|
|
10
|
-
loading: true,
|
|
11
|
-
isSignedIn: false,
|
|
12
|
-
userId: null,
|
|
13
|
-
error: null
|
|
14
|
-
};
|
|
15
|
-
return defaultState;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export { useAuth };
|
|
19
|
-
//# sourceMappingURL=chunk-JK7KVGFJ.js.map
|
|
20
|
-
//# sourceMappingURL=chunk-JK7KVGFJ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/boundary/hooks/use-auth.ts"],"names":[],"mappings":";;;AAsBO,SAAS,OAA2B,GAAA;AAEzC,EAAM,MAAA,OAAA,GAAU,mBAAmB,SAAS,CAAA;AAG5C,EAAI,IAAA,CAAC,QAAQ,OAAS,EAAA;AACpB,IAAM,MAAA,IAAI,MAAM,iDAAiD,CAAA;AAAA;AAInE,EAAA,MAAM,YAAgC,GAAA;AAAA,IACpC,OAAS,EAAA,IAAA;AAAA,IACT,UAAY,EAAA,KAAA;AAAA,IACZ,MAAQ,EAAA,IAAA;AAAA,IACR,KAAO,EAAA;AAAA,GACT;AAEA,EAAO,OAAA,YAAA;AACT","file":"chunk-JK7KVGFJ.js","sourcesContent":["'use client'\r\n\r\nimport { useInternalContext } from '../TernSecureCtx'\r\nimport type { TernSecureState } from '../../app-router/client/TernSecureProvider'\r\n\r\n/**\r\n * Hook to access TernSecure authentication state\r\n * Must be used within TernSecureClientProvider and in client components\r\n * \r\n * \r\n * @returns {TernSecureState} Current authentication state\r\n * \r\n * @example\r\n * function AuthenticatedComponent() {\r\n * const { isSignedIn, loading, userId, error } = useAuth()\r\n * \r\n * if (loading) return <div>Loading...</div>\r\n * if (error) return <div>Error: {error}</div>\r\n * \r\n * return isSignedIn ? <div>Welcome user: {userId}</div> : <div>Please sign in</div>\r\n * }\r\n */\r\nexport function useAuth(): TernSecureState {\r\n // useInternalContext already handles client-side and provider checks\r\n const context = useInternalContext('useAuth')\r\n\r\n // Since our context only has dynamic flag, we need to access the parent provider\r\n if (!context.dynamic) {\r\n throw new Error('Authentication context not properly initialized')\r\n }\r\n\r\n // Get auth state from the nearest TernSecureClientProvider\r\n const defaultState: TernSecureState = {\r\n loading: true,\r\n isSignedIn: false,\r\n userId: null,\r\n error: null\r\n }\r\n\r\n return defaultState\r\n}\r\n\r\n// Re-export the state type for consumers\r\nexport type { TernSecureState }"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/boundary/TernSecureCtx.tsx"],"names":[],"mappings":";;;;AAcA,IAAM,iBAAA,GAAoB,KAAM,CAAA,aAAA,CAAyC,IAAI,CAAA;AAG7E,iBAAA,CAAkB,WAAc,GAAA,mBAAA;AAE1B,IAAA,kBAAA,GAAqB,CAAC,QAAA,GAAmB,oBAAyB,KAAA;AAEtE,EAAM,MAAA,OAAA,GAAU,KAAM,CAAA,UAAA,CAAW,iBAAiB,CAAA;AAElD,EAAA,IAAI,CAAC,OAAS,EAAA;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,GAAG,QAAQ,CAAA,6CAAA;AAAA,KACb;AAAA;AAGF,EAAO,OAAA,OAAA;AACT;AAMA,IAAM,wBAA2D,CAAC;AAAA,EAChE;AACF,CAAM,KAAA;AAEJ,EACE,uBAAA,GAAA,CAAC,kBAAkB,QAAlB,EAAA,EAA2B,OAAO,EAAE,OAAA,EAAS,IAAK,EAAA,EAChD,QACH,EAAA,CAAA;AAEJ","file":"chunk-RAZTKM22.js","sourcesContent":["'use client'\r\n\r\nimport React from 'react'\r\n\r\n// Core types\r\nexport type TernSecureCtxValue = {\r\n dynamic: boolean\r\n}\r\n\r\nexport type TernSecureProviderProps = React.PropsWithChildren<{\r\n options?: unknown // Made optional since we're not using it\r\n}>\r\n\r\n// Context with proper null handling\r\nconst TernSecureContext = React.createContext<TernSecureCtxValue | null>(null)\r\n\r\n// Set display name for better debugging\r\nTernSecureContext.displayName = 'TernSecureContext'\r\n\r\nconst useInternalContext = (hookname: string = 'useInternalContext') => {\r\n\r\n const context = React.useContext(TernSecureContext)\r\n \r\n if (!context) {\r\n throw new Error(\r\n `${hookname} must be used within TernSecureClientProvider`\r\n )\r\n }\r\n\r\n return context\r\n}\r\n\r\n/**\r\n * Provider component for TernSecure\r\n * Must be used in client components only\r\n */\r\nconst TernSecureCtxProvider: React.FC<TernSecureProviderProps> = ({ \r\n children \r\n}) => {\r\n\r\n return (\r\n <TernSecureContext.Provider value={{ dynamic: true }}>\r\n {children}\r\n </TernSecureContext.Provider>\r\n )\r\n}\r\n\r\nexport {\r\n useInternalContext,\r\n TernSecureCtxProvider\r\n}"]}
|