@tern-secure/nextjs 3.1.65 → 3.1.67

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.
Files changed (53) hide show
  1. package/dist/cjs/app-router/client/TernSecureProvider.cjs +32 -69
  2. package/dist/cjs/app-router/client/TernSecureProvider.cjs.map +1 -1
  3. package/dist/cjs/app-router/server/TernSecureServerProvider.cjs +32 -65
  4. package/dist/cjs/app-router/server/TernSecureServerProvider.cjs.map +1 -1
  5. package/dist/cjs/app-router/server/auth.cjs +13 -54
  6. package/dist/cjs/app-router/server/auth.cjs.map +1 -1
  7. package/dist/cjs/boundary/TernSecureCtx.cjs +11 -14
  8. package/dist/cjs/boundary/TernSecureCtx.cjs.map +1 -1
  9. package/dist/cjs/boundary/hooks/useAuth.cjs +8 -66
  10. package/dist/cjs/boundary/hooks/useAuth.cjs.map +1 -1
  11. package/dist/cjs/components/sign-in.cjs +13 -54
  12. package/dist/cjs/components/sign-in.cjs.map +1 -1
  13. package/dist/cjs/index.cjs +72 -77
  14. package/dist/cjs/index.cjs.map +1 -1
  15. package/dist/cjs/utils/client-init.cjs +16 -59
  16. package/dist/cjs/utils/client-init.cjs.map +1 -1
  17. package/dist/esm/app-router/client/TernSecureProvider.d.ts +4 -4
  18. package/dist/esm/app-router/client/TernSecureProvider.js +3 -4
  19. package/dist/esm/app-router/server/TernSecureServerProvider.js +4 -5
  20. package/dist/esm/app-router/server/auth.js +2 -3
  21. package/dist/esm/boundary/TernSecureCtx.d.ts +7 -8
  22. package/dist/esm/boundary/TernSecureCtx.js +1 -1
  23. package/dist/esm/boundary/hooks/useAuth.js +4 -5
  24. package/dist/esm/{chunk-Q74X6X6Y.js → chunk-74V7CN2Z.js} +4 -4
  25. package/dist/esm/{chunk-Q74X6X6Y.js.map → chunk-74V7CN2Z.js.map} +1 -1
  26. package/dist/esm/chunk-BH4POM5U.js +44 -0
  27. package/dist/esm/chunk-BH4POM5U.js.map +1 -0
  28. package/dist/esm/chunk-DNODBZEQ.js +22 -0
  29. package/dist/esm/chunk-DNODBZEQ.js.map +1 -0
  30. package/dist/esm/chunk-DWSWDYJZ.js +13 -0
  31. package/dist/esm/chunk-DWSWDYJZ.js.map +1 -0
  32. package/dist/esm/{chunk-EIOZNLP2.js → chunk-EVC2XQG4.js} +3 -3
  33. package/dist/esm/{chunk-EIOZNLP2.js.map → chunk-EVC2XQG4.js.map} +1 -1
  34. package/dist/esm/{chunk-JS7GJYXQ.js → chunk-QBGIG346.js} +6 -5
  35. package/dist/esm/chunk-QBGIG346.js.map +1 -0
  36. package/dist/esm/chunk-YOHK2WGW.js +25 -0
  37. package/dist/esm/chunk-YOHK2WGW.js.map +1 -0
  38. package/dist/esm/components/sign-in.js +3 -4
  39. package/dist/esm/index.d.ts +1 -2
  40. package/dist/esm/index.js +7 -7
  41. package/dist/esm/index.js.map +1 -1
  42. package/dist/esm/utils/client-init.d.ts +3 -5
  43. package/dist/esm/utils/client-init.js +1 -2
  44. package/package.json +4 -30
  45. package/dist/esm/chunk-4XFIX4FL.js +0 -14
  46. package/dist/esm/chunk-4XFIX4FL.js.map +0 -1
  47. package/dist/esm/chunk-FVV74XVR.js +0 -19
  48. package/dist/esm/chunk-FVV74XVR.js.map +0 -1
  49. package/dist/esm/chunk-JS7GJYXQ.js.map +0 -1
  50. package/dist/esm/chunk-LSHP5OGU.js +0 -24
  51. package/dist/esm/chunk-LSHP5OGU.js.map +0 -1
  52. package/dist/esm/chunk-V34MPPYI.js +0 -39
  53. package/dist/esm/chunk-V34MPPYI.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/app-router/server/auth.ts"],"names":[],"mappings":";;;AAQA,eAAsB,eAAgB,CAAA;AAAA,EACpC,KAAA;AAAA,EACA;AACF,CAA+C,EAAA;AAC7C,EAAA,MAAM,OAAO,cAAe,EAAA;AAC5B,EAAO,OAAA,0BAAA,CAA2B,IAAM,EAAA,KAAA,EAAO,QAAQ,CAAA;AACzD","file":"chunk-4XFIX4FL.js","sourcesContent":["import { TernSecureAuth } from '../../utils/client-init'\r\nimport { signInWithEmailAndPassword, type UserCredential } from 'firebase/auth'\r\n\r\nexport interface SignInCredentials {\r\n email: string\r\n password: string\r\n}\r\n\r\nexport async function signInWithEmail({ \r\n email, \r\n password \r\n}: SignInCredentials): Promise<UserCredential> {\r\n const auth = TernSecureAuth()\r\n return signInWithEmailAndPassword(auth, email, password)\r\n} "]}
@@ -1,19 +0,0 @@
1
- import { initializeConfig } from './chunk-UHGBSUM6.js';
2
- import { initializeApp } from 'firebase/app';
3
- import { getAuth, setPersistence, browserSessionPersistence } from 'firebase/auth';
4
- import { getFirestore } from 'firebase/firestore';
5
- import { getStorage } from 'firebase/storage';
6
-
7
- var config = initializeConfig();
8
- var clientApp = initializeApp(config);
9
- var auth = getAuth(clientApp);
10
- setPersistence(auth, browserSessionPersistence);
11
- var firestore = getFirestore(clientApp);
12
- var storage = getStorage(clientApp);
13
- var TernSecureAuth = () => auth;
14
- var TernSecureFirestore = () => firestore;
15
- var TernSecureStorage = () => storage;
16
-
17
- export { TernSecureAuth, TernSecureFirestore, TernSecureStorage };
18
- //# sourceMappingURL=chunk-FVV74XVR.js.map
19
- //# sourceMappingURL=chunk-FVV74XVR.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/client-init.ts"],"names":[],"mappings":";;;;;;AAOA,IAAM,SAAS,gBAAiB,EAAA;AAChC,IAAM,SAAA,GAAY,cAAc,MAAM,CAAA;AACtC,IAAM,IAAA,GAAO,QAAQ,SAAS,CAAA;AAC9B,cAAA,CAAe,MAAM,yBAAyB,CAAA;AAC9C,IAAM,SAAA,GAAY,aAAa,SAAS,CAAA;AACxC,IAAM,OAAA,GAAU,WAAW,SAAS,CAAA;AAE7B,IAAM,iBAAiB,MAAM;AAC7B,IAAM,sBAAsB,MAAM;AAClC,IAAM,oBAAoB,MAAM","file":"chunk-FVV74XVR.js","sourcesContent":["import { initializeApp } from 'firebase/app';\r\nimport { getAuth, setPersistence, browserSessionPersistence } from 'firebase/auth';\r\nimport { getFirestore } from 'firebase/firestore';\r\nimport { getStorage } from 'firebase/storage';\r\nimport { initializeConfig} from './config';\r\n\r\n// Initialize immediately\r\nconst config = initializeConfig();\r\nconst clientApp = initializeApp(config)\r\nconst auth = getAuth(clientApp);\r\nsetPersistence(auth, browserSessionPersistence); //to change later user should be able to choose persistance\r\nconst firestore = getFirestore(clientApp);\r\nconst storage = getStorage(clientApp);\r\n\r\nexport const TernSecureAuth = () => auth;\r\nexport const TernSecureFirestore = () => firestore;\r\nexport const TernSecureStorage = () => storage;"]}
@@ -1 +0,0 @@
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,sBAAW,yBAA0B,EAAA,EAAA,CAAA,EACnD,QAAC,kBAAA,GAAA,CAAA,wBAAA,EAAA,EAAyB,YAAc,EAAA;AAAA,IACtC,OAAS,EAAA,IAAA;AAAA,IACT,UAAY,EAAA,KAAA;AAAA,IACZ,MAAQ,EAAA,IAAA;AAAA,IACR,KAAO,EAAA;AAAA,GACT,EACG,UACH,CACF,EAAA,CAAA;AAEJ","file":"chunk-JS7GJYXQ.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 initialState={{\r\n loading: true,\r\n isSignedIn: false,\r\n userId: null,\r\n error: null\r\n }}>\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 }"]}
@@ -1,24 +0,0 @@
1
- import React from 'react';
2
- import { jsx } from 'react/jsx-runtime';
3
-
4
- // src/boundary/TernSecureCtx.tsx
5
- var TernSecureContext = React.createContext(void 0);
6
- TernSecureContext.displayName = "TernSecureContext";
7
- var useInternalContext = (hookname = "useInternalContext") => {
8
- const context = React.useContext(TernSecureContext);
9
- if (!context) {
10
- throw new Error(
11
- `${hookname} must be used within TernSecureClientProvider`
12
- );
13
- }
14
- return context;
15
- };
16
- var TernSecureCtxProvider = ({
17
- children
18
- }) => {
19
- return /* @__PURE__ */ jsx(TernSecureContext.Provider, { value: { dynamic: true }, children });
20
- };
21
-
22
- export { TernSecureCtxProvider, useInternalContext };
23
- //# sourceMappingURL=chunk-LSHP5OGU.js.map
24
- //# sourceMappingURL=chunk-LSHP5OGU.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/boundary/TernSecureCtx.tsx"],"names":[],"mappings":";;;;AAcA,IAAM,iBAAA,GAAoB,KAAM,CAAA,aAAA,CAA8C,KAAS,CAAA,CAAA;AAGvF,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-LSHP5OGU.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 | undefined>(undefined)\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}"]}
@@ -1,39 +0,0 @@
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({
10
- children,
11
- initialState
12
- }) {
13
- const [authState, setAuthState] = useState(initialState);
14
- useEffect(() => {
15
- const unsubscribe = onAuthStateChanged(auth, (user) => {
16
- if (user) {
17
- setAuthState({
18
- loading: false,
19
- isSignedIn: true,
20
- userId: user.uid,
21
- error: null
22
- });
23
- } else {
24
- setAuthState({
25
- loading: false,
26
- isSignedIn: false,
27
- userId: null,
28
- error: null
29
- });
30
- }
31
- });
32
- return () => unsubscribe();
33
- }, []);
34
- return /* @__PURE__ */ jsx(TernSecureCtxProvider, { children: /* @__PURE__ */ jsx(AuthStateContext.Provider, { value: authState, children }) });
35
- }
36
-
37
- export { AuthStateContext, TernSecureClientProvider };
38
- //# sourceMappingURL=chunk-V34MPPYI.js.map
39
- //# sourceMappingURL=chunk-V34MPPYI.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/app-router/client/TernSecureProvider.tsx"],"names":[],"mappings":";;;;;;AAca,IAAA,gBAAA,GAAmB,KAAM,CAAA,aAAA,CAAsC,IAAI;AAOhF,IAAM,OAAO,cAAe,EAAA;AAErB,SAAS,wBAAyB,CAAA;AAAA,EACvC,QAAA;AAAA,EACA;AACD,CAA0B,EAAA;AACzB,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAA0B,YAAY,CAAA;AAC1E,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-V34MPPYI.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 initialState: TernSecureState\r\n}\r\n\r\nconst auth = TernSecureAuth();\r\n\r\nexport function TernSecureClientProvider({ \r\n children,\r\n initialState\r\n }: TernSecureClientProps) {\r\n const [authState, setAuthState] = useState<TernSecureState>(initialState)\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 }"]}