@tern-secure/nextjs 3.2.21 → 3.2.23

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 (35) hide show
  1. package/dist/cjs/app-router/client/TernSecureProvider.js +1 -1
  2. package/dist/cjs/app-router/client/TernSecureProvider.js.map +1 -1
  3. package/dist/cjs/app-router/server/index.js +3 -0
  4. package/dist/cjs/app-router/server/index.js.map +1 -1
  5. package/dist/cjs/boundary/TernSecureClientProvider.js +1 -1
  6. package/dist/cjs/boundary/TernSecureClientProvider.js.map +1 -1
  7. package/dist/cjs/boundary/hooks/useUser.js +42 -0
  8. package/dist/cjs/boundary/hooks/useUser.js.map +1 -0
  9. package/dist/cjs/index.js +5 -1
  10. package/dist/cjs/index.js.map +1 -1
  11. package/dist/cjs/utils/client-init.js +8 -6
  12. package/dist/cjs/utils/client-init.js.map +1 -1
  13. package/dist/esm/app-router/client/TernSecureProvider.js +1 -1
  14. package/dist/esm/app-router/client/TernSecureProvider.js.map +1 -1
  15. package/dist/esm/app-router/server/index.js +2 -0
  16. package/dist/esm/app-router/server/index.js.map +1 -1
  17. package/dist/esm/boundary/TernSecureClientProvider.js +2 -2
  18. package/dist/esm/boundary/TernSecureClientProvider.js.map +1 -1
  19. package/dist/esm/boundary/hooks/useUser.js +18 -0
  20. package/dist/esm/boundary/hooks/useUser.js.map +1 -0
  21. package/dist/esm/index.js +4 -2
  22. package/dist/esm/index.js.map +1 -1
  23. package/dist/esm/utils/client-init.js +7 -6
  24. package/dist/esm/utils/client-init.js.map +1 -1
  25. package/dist/types/app-router/client/TernSecureProvider.d.ts +1 -1
  26. package/dist/types/app-router/client/TernSecureProvider.d.ts.map +1 -1
  27. package/dist/types/app-router/server/index.d.ts +1 -0
  28. package/dist/types/app-router/server/index.d.ts.map +1 -1
  29. package/dist/types/boundary/hooks/useUser.d.ts +2 -0
  30. package/dist/types/boundary/hooks/useUser.d.ts.map +1 -0
  31. package/dist/types/index.d.ts +2 -1
  32. package/dist/types/index.d.ts.map +1 -1
  33. package/dist/types/utils/client-init.d.ts +1 -0
  34. package/dist/types/utils/client-init.d.ts.map +1 -1
  35. package/package.json +1 -1
@@ -23,7 +23,7 @@ __export(TernSecureProvider_exports, {
23
23
  module.exports = __toCommonJS(TernSecureProvider_exports);
24
24
  var import_jsx_runtime = require("react/jsx-runtime");
25
25
  var import_TernSecureClientProvider = require("../../boundary/TernSecureClientProvider");
26
- async function TernSecureProvider({ children }) {
26
+ function TernSecureProvider({ children }) {
27
27
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_TernSecureClientProvider.TernSecureClientProvider, { children });
28
28
  }
29
29
  // Annotate the CommonJS export names for ESM import in node:
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/app-router/client/TernSecureProvider.tsx"],"sourcesContent":["import React from \"react\"\r\nimport { TernSecureClientProvider } from \"../../boundary/TernSecureClientProvider\"\r\n\r\n\r\n// Loading fallback component\r\n/*function TernSecureLoadingFallback() {\r\n return (\r\n <div>\r\n <span className=\"sr-only\">Loading...</span>\r\n </div>\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 async function TernSecureProvider({ children }: { children: React.ReactNode }) {\r\n return (\r\n <TernSecureClientProvider>\r\n {children}\r\n </TernSecureClientProvider>\r\n )\r\n}"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAmCI;AAlCJ,sCAAyC;AAgCzC,eAAsB,mBAAmB,EAAE,SAAS,GAAkC;AACpF,SACE,4CAAC,4DACI,UACL;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/app-router/client/TernSecureProvider.tsx"],"sourcesContent":["import React from \"react\"\r\nimport { TernSecureClientProvider } from \"../../boundary/TernSecureClientProvider\"\r\n\r\n\r\n// Loading fallback component\r\n/*function TernSecureLoadingFallback() {\r\n return (\r\n <div>\r\n <span className=\"sr-only\">Loading...</span>\r\n </div>\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 TernSecureProvider({ children }: { children: React.ReactNode }) {\r\n return (\r\n <TernSecureClientProvider>\r\n {children}\r\n </TernSecureClientProvider>\r\n )\r\n}"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAmCI;AAlCJ,sCAAyC;AAgClC,SAAS,mBAAmB,EAAE,SAAS,GAAkC;AAC9E,SACE,4CAAC,4DACI,UACL;AAEJ;","names":[]}
@@ -20,6 +20,7 @@ var server_exports = {};
20
20
  __export(server_exports, {
21
21
  adminTernSecureAuth: () => import_admin_init.adminTernSecureAuth,
22
22
  adminTernSecureDb: () => import_admin_init.adminTernSecureDb,
23
+ auth: () => import_auth.auth,
23
24
  createSessionCookie: () => import_sessionTernSecure.createSessionCookie,
24
25
  ternSecureMiddleware: () => import_ternSecureMiddleware.ternSecureMiddleware,
25
26
  verifyTernSessionCookie: () => import_sessionTernSecure.verifyTernSessionCookie
@@ -28,10 +29,12 @@ module.exports = __toCommonJS(server_exports);
28
29
  var import_admin_init = require("../../utils/admin-init");
29
30
  var import_ternSecureMiddleware = require("./ternSecureMiddleware");
30
31
  var import_sessionTernSecure = require("./sessionTernSecure");
32
+ var import_auth = require("./auth");
31
33
  // Annotate the CommonJS export names for ESM import in node:
32
34
  0 && (module.exports = {
33
35
  adminTernSecureAuth,
34
36
  adminTernSecureDb,
37
+ auth,
35
38
  createSessionCookie,
36
39
  ternSecureMiddleware,
37
40
  verifyTernSessionCookie
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/app-router/server/index.ts"],"sourcesContent":["export { adminTernSecureAuth, adminTernSecureDb } from '../../utils/admin-init'\r\nexport { ternSecureMiddleware } from './ternSecureMiddleware'\r\nexport { verifyTernSessionCookie, createSessionCookie } from './sessionTernSecure'"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAuD;AACvD,kCAAqC;AACrC,+BAA6D;","names":[]}
1
+ {"version":3,"sources":["../../../../src/app-router/server/index.ts"],"sourcesContent":["export { adminTernSecureAuth, adminTernSecureDb } from '../../utils/admin-init'\r\nexport { ternSecureMiddleware } from './ternSecureMiddleware'\r\nexport { verifyTernSessionCookie, createSessionCookie } from './sessionTernSecure'\r\nexport { auth } from './auth'"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAuD;AACvD,kCAAqC;AACrC,+BAA6D;AAC7D,kBAAqB;","names":[]}
@@ -28,7 +28,7 @@ var import_client_init = require("../utils/client-init");
28
28
  var import_auth = require("firebase/auth");
29
29
  var import_TernSecureCtx = require("./TernSecureCtx");
30
30
  function TernSecureClientProvider({ children, onUserChanged }) {
31
- const auth = (0, import_react.useMemo)(() => (0, import_client_init.TernSecureAuth)(), []);
31
+ const auth = (0, import_react.useMemo)(() => import_client_init.ternSecureAuth, []);
32
32
  const [authState, setAuthState] = (0, import_react.useState)(() => ({
33
33
  userId: null,
34
34
  isLoaded: false,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/boundary/TernSecureClientProvider.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport React, { useState, useEffect, useMemo, useCallback } from 'react'\r\nimport { TernSecureAuth } from '../utils/client-init'\r\nimport { onAuthStateChanged, User } from \"firebase/auth\"\r\nimport { TernSecureCtx, TernSecureCtxValue, TernSecureState } from './TernSecureCtx'\r\n\r\ninterface TernSecureClientProviderProps {\r\n children: React.ReactNode;\r\n onUserChanged?: (user: User | null) => Promise<void>;\r\n}\r\n\r\nexport function TernSecureClientProvider({ children, onUserChanged }: TernSecureClientProviderProps) {\r\n const auth = useMemo(() => TernSecureAuth(), []);\r\n\r\n const [authState, setAuthState] = useState<TernSecureState>(() => ({\r\n userId: null,\r\n isLoaded: false,\r\n error: null,\r\n }));\r\n\r\n const handleAuthStateChange = useCallback(async (user: User | null) => {\r\n try {\r\n if(!user) {\r\n await auth.signOut();\r\n }\r\n\r\n if (onUserChanged) {\r\n await onUserChanged(user);\r\n }\r\n setAuthState({\r\n isLoaded: true,\r\n userId: user?.uid || null,\r\n error: null\r\n });\r\n } catch (error) {\r\n auth.signOut();\r\n setAuthState({\r\n isLoaded: true,\r\n userId: null,\r\n error: error instanceof Error ? error : new Error('An unknown error occurred')\r\n });\r\n }\r\n }, [auth, onUserChanged]);\r\n\r\n useEffect(() => {\r\n const unsubscribe = onAuthStateChanged(auth, handleAuthStateChange);\r\n \r\n return () => unsubscribe();\r\n }, [auth, handleAuthStateChange]);\r\n\r\n /*const contextValue: TernSecureCtxValue = useMemo(() => ({\r\n ...authState\r\n }), [authState]);*/\r\n\r\n if (!authState.isLoaded) {\r\n return (\r\n <TernSecureCtx.Provider value={authState}>\r\n <div aria-live=\"polite\" aria-busy=\"true\">\r\n <span className=\"sr-only\">Loading authentication state...</span>\r\n </div>\r\n </TernSecureCtx.Provider>\r\n );\r\n }\r\n\r\n return (\r\n <TernSecureCtx.Provider value={authState}>\r\n {children}\r\n </TernSecureCtx.Provider>\r\n );\r\n}\r\n\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA2DU;AAzDV,mBAAiE;AACjE,yBAA+B;AAC/B,kBAAyC;AACzC,2BAAmE;AAO5D,SAAS,yBAAyB,EAAE,UAAU,cAAc,GAAkC;AACnG,QAAM,WAAO,sBAAQ,UAAM,mCAAe,GAAG,CAAC,CAAC;AAE/C,QAAM,CAAC,WAAW,YAAY,QAAI,uBAA0B,OAAO;AAAA,IAC/D,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACX,EAAE;AAEF,QAAM,4BAAwB,0BAAY,OAAO,SAAsB;AACrE,QAAI;AACF,UAAG,CAAC,MAAM;AACR,cAAM,KAAK,QAAQ;AAAA,MACrB;AAEA,UAAI,eAAe;AACjB,cAAM,cAAc,IAAI;AAAA,MAC1B;AACA,mBAAa;AAAA,QACX,UAAU;AAAA,QACV,SAAQ,6BAAM,QAAO;AAAA,QACrB,OAAO;AAAA,MACT,CAAC;AAAA,IACH,SAAS,OAAO;AACd,WAAK,QAAQ;AACb,mBAAa;AAAA,QACX,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,2BAA2B;AAAA,MAC/E,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,MAAM,aAAa,CAAC;AAExB,8BAAU,MAAM;AACd,UAAM,kBAAc,gCAAmB,MAAM,qBAAqB;AAElE,WAAO,MAAM,YAAY;AAAA,EAC3B,GAAG,CAAC,MAAM,qBAAqB,CAAC;AAMhC,MAAI,CAAC,UAAU,UAAU;AACvB,WACE,4CAAC,mCAAc,UAAd,EAAuB,OAAO,WAC7B,sDAAC,SAAI,aAAU,UAAS,aAAU,QAChC,sDAAC,UAAK,WAAU,WAAU,6CAA+B,GAC3D,GACF;AAAA,EAEJ;AAEA,SACE,4CAAC,mCAAc,UAAd,EAAuB,OAAO,WAC5B,UACH;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../src/boundary/TernSecureClientProvider.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport React, { useState, useEffect, useMemo, useCallback } from 'react'\r\nimport { ternSecureAuth } from '../utils/client-init'\r\nimport { onAuthStateChanged, User } from \"firebase/auth\"\r\nimport { TernSecureCtx, TernSecureState } from './TernSecureCtx'\r\n\r\ninterface TernSecureClientProviderProps {\r\n children: React.ReactNode;\r\n onUserChanged?: (user: User | null) => Promise<void>;\r\n}\r\n\r\nexport function TernSecureClientProvider({ children, onUserChanged }: TernSecureClientProviderProps) {\r\n const auth = useMemo(() => ternSecureAuth, []);\r\n\r\n const [authState, setAuthState] = useState<TernSecureState>(() => ({\r\n userId: null,\r\n isLoaded: false,\r\n error: null,\r\n }));\r\n\r\n const handleAuthStateChange = useCallback(async (user: User | null) => {\r\n try {\r\n if(!user) {\r\n await auth.signOut();\r\n }\r\n\r\n if (onUserChanged) {\r\n await onUserChanged(user);\r\n }\r\n setAuthState({\r\n isLoaded: true,\r\n userId: user?.uid || null,\r\n error: null\r\n });\r\n } catch (error) {\r\n auth.signOut();\r\n setAuthState({\r\n isLoaded: true,\r\n userId: null,\r\n error: error instanceof Error ? error : new Error('An unknown error occurred')\r\n });\r\n }\r\n }, [auth, onUserChanged]);\r\n\r\n useEffect(() => {\r\n const unsubscribe = onAuthStateChanged(auth, handleAuthStateChange);\r\n \r\n return () => unsubscribe();\r\n }, [auth, handleAuthStateChange]);\r\n\r\n /*const contextValue: TernSecureCtxValue = useMemo(() => ({\r\n ...authState\r\n }), [authState]);*/\r\n\r\n if (!authState.isLoaded) {\r\n return (\r\n <TernSecureCtx.Provider value={authState}>\r\n <div aria-live=\"polite\" aria-busy=\"true\">\r\n <span className=\"sr-only\">Loading authentication state...</span>\r\n </div>\r\n </TernSecureCtx.Provider>\r\n );\r\n }\r\n\r\n return (\r\n <TernSecureCtx.Provider value={authState}>\r\n {children}\r\n </TernSecureCtx.Provider>\r\n );\r\n}\r\n\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA2DU;AAzDV,mBAAiE;AACjE,yBAA+B;AAC/B,kBAAyC;AACzC,2BAA+C;AAOxC,SAAS,yBAAyB,EAAE,UAAU,cAAc,GAAkC;AACnG,QAAM,WAAO,sBAAQ,MAAM,mCAAgB,CAAC,CAAC;AAE7C,QAAM,CAAC,WAAW,YAAY,QAAI,uBAA0B,OAAO;AAAA,IAC/D,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACX,EAAE;AAEF,QAAM,4BAAwB,0BAAY,OAAO,SAAsB;AACrE,QAAI;AACF,UAAG,CAAC,MAAM;AACR,cAAM,KAAK,QAAQ;AAAA,MACrB;AAEA,UAAI,eAAe;AACjB,cAAM,cAAc,IAAI;AAAA,MAC1B;AACA,mBAAa;AAAA,QACX,UAAU;AAAA,QACV,SAAQ,6BAAM,QAAO;AAAA,QACrB,OAAO;AAAA,MACT,CAAC;AAAA,IACH,SAAS,OAAO;AACd,WAAK,QAAQ;AACb,mBAAa;AAAA,QACX,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,2BAA2B;AAAA,MAC/E,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,MAAM,aAAa,CAAC;AAExB,8BAAU,MAAM;AACd,UAAM,kBAAc,gCAAmB,MAAM,qBAAqB;AAElE,WAAO,MAAM,YAAY;AAAA,EAC3B,GAAG,CAAC,MAAM,qBAAqB,CAAC;AAMhC,MAAI,CAAC,UAAU,UAAU;AACvB,WACE,4CAAC,mCAAc,UAAd,EAAuB,OAAO,WAC7B,sDAAC,SAAI,aAAU,UAAS,aAAU,QAChC,sDAAC,UAAK,WAAU,WAAU,6CAA+B,GAC3D,GACF;AAAA,EAEJ;AAEA,SACE,4CAAC,mCAAc,UAAd,EAAuB,OAAO,WAC5B,UACH;AAEJ;","names":[]}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ "use client";
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var useUser_exports = {};
21
+ __export(useUser_exports, {
22
+ useUser: () => useUser
23
+ });
24
+ module.exports = __toCommonJS(useUser_exports);
25
+ var import_auth = require("firebase/auth");
26
+ var import_react = require("react");
27
+ var import_client_init = require("../../utils/client-init");
28
+ function useUser() {
29
+ const [user, setUser] = (0, import_react.useState)(null);
30
+ (0, import_react.useEffect)(() => {
31
+ const unsubscribe = (0, import_auth.onAuthStateChanged)(import_client_init.ternSecureAuth, (authUser) => {
32
+ setUser(authUser);
33
+ });
34
+ return () => unsubscribe();
35
+ }, []);
36
+ return user;
37
+ }
38
+ // Annotate the CommonJS export names for ESM import in node:
39
+ 0 && (module.exports = {
40
+ useUser
41
+ });
42
+ //# sourceMappingURL=useUser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/boundary/hooks/useUser.ts"],"sourcesContent":["\"use client\";\r\n\r\nimport { onAuthStateChanged } from \"firebase/auth\";\r\nimport { useEffect, useState } from \"react\";\r\n\r\nimport { ternSecureAuth} from \"../../utils/client-init\";\r\n\r\nexport function useUser() {\r\n const [user, setUser] = useState<any | null>(null);\r\n\r\n useEffect(() => {\r\n const unsubscribe = onAuthStateChanged(ternSecureAuth, (authUser) => {\r\n setUser(authUser);\r\n });\r\n\r\n return () => unsubscribe();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return user;\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,kBAAmC;AACnC,mBAAoC;AAEpC,yBAA8B;AAEvB,SAAS,UAAU;AACxB,QAAM,CAAC,MAAM,OAAO,QAAI,uBAAqB,IAAI;AAEjD,8BAAU,MAAM;AACd,UAAM,kBAAc,gCAAmB,mCAAgB,CAAC,aAAa;AACnE,cAAQ,QAAQ;AAAA,IAClB,CAAC;AAED,WAAO,MAAM,YAAY;AAAA,EAE3B,GAAG,CAAC,CAAC;AAEL,SAAO;AACT;","names":[]}
package/dist/cjs/index.js CHANGED
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- "use client";
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -25,7 +24,9 @@ __export(src_exports, {
25
24
  TernSecureProvider: () => import_TernSecureProvider.TernSecureProvider,
26
25
  loadFireConfig: () => import_config.loadFireConfig,
27
26
  signInWithEmail: () => import_actions.signInWithEmail,
27
+ ternSecureAuth: () => import_client_init.ternSecureAuth,
28
28
  useAuth: () => import_useAuth.useAuth,
29
+ useUser: () => import_useUser.useUser,
29
30
  validateConfig: () => import_config.validateConfig
30
31
  });
31
32
  module.exports = __toCommonJS(src_exports);
@@ -34,6 +35,7 @@ var import_config = require("./utils/config");
34
35
  var import_actions = require("./app-router/client/actions");
35
36
  var import_TernSecureProvider = require("./app-router/client/TernSecureProvider");
36
37
  var import_useAuth = require("./boundary/hooks/useAuth");
38
+ var import_useUser = require("./boundary/hooks/useUser");
37
39
  var import_sign_in = require("./components/sign-in");
38
40
  // Annotate the CommonJS export names for ESM import in node:
39
41
  0 && (module.exports = {
@@ -43,7 +45,9 @@ var import_sign_in = require("./components/sign-in");
43
45
  TernSecureProvider,
44
46
  loadFireConfig,
45
47
  signInWithEmail,
48
+ ternSecureAuth,
46
49
  useAuth,
50
+ useUser,
47
51
  validateConfig
48
52
  });
49
53
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["\"use client\"\r\n//import { TernSecureServerProvider } from './app-router/server/TernSecureServerProvider'\r\n//import type { TernSecureState } from './app-router/client/TernSecureProvider'\r\nexport { TernSecureAuth, TernSecureFirestore } from './utils/client-init'\r\nexport { loadFireConfig, validateConfig } from './utils/config'\r\nexport { signInWithEmail } from './app-router/client/actions'\r\n//export { useInternalContext } from './boundary/TernSecureCtx'\r\n//export { TernSecureClientProvider } from './app-router/client/TernSecureProvider'\r\nexport { TernSecureProvider } from './app-router/client/TernSecureProvider'\r\nexport { useAuth } from './boundary/hooks/useAuth' \r\nexport { SignIn } from './components/sign-in'\r\n\r\n//export const TernSecureProvider = TernSecureServerProvider\r\n//export type { TernSecureState }"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,yBAAoD;AACpD,oBAA+C;AAC/C,qBAAgC;AAGhC,gCAAmC;AACnC,qBAAwB;AACxB,qBAAuB;","names":[]}
1
+ {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["\r\n//import { TernSecureServerProvider } from './app-router/server/TernSecureServerProvider'\r\n//import type { TernSecureState } from './app-router/client/TernSecureProvider'\r\nexport { TernSecureAuth, TernSecureFirestore, ternSecureAuth } from './utils/client-init'\r\nexport { loadFireConfig, validateConfig } from './utils/config'\r\nexport { signInWithEmail } from './app-router/client/actions'\r\n//export { useInternalContext } from './boundary/TernSecureCtx'\r\n//export { TernSecureClientProvider } from './app-router/client/TernSecureProvider'\r\nexport { TernSecureProvider } from './app-router/client/TernSecureProvider'\r\nexport { useAuth } from './boundary/hooks/useAuth' \r\nexport { useUser } from './boundary/hooks/useUser'\r\nexport { SignIn } from './components/sign-in'\r\n\r\n//export const TernSecureProvider = TernSecureServerProvider\r\n//export type { TernSecureState }"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,yBAAoE;AACpE,oBAA+C;AAC/C,qBAAgC;AAGhC,gCAAmC;AACnC,qBAAwB;AACxB,qBAAwB;AACxB,qBAAuB;","names":[]}
@@ -20,7 +20,8 @@ var client_init_exports = {};
20
20
  __export(client_init_exports, {
21
21
  TernSecureAuth: () => TernSecureAuth,
22
22
  TernSecureFirestore: () => TernSecureFirestore,
23
- TernSecureStorage: () => TernSecureStorage
23
+ TernSecureStorage: () => TernSecureStorage,
24
+ ternSecureAuth: () => ternSecureAuth
24
25
  });
25
26
  module.exports = __toCommonJS(client_init_exports);
26
27
  var import_app = require("firebase/app");
@@ -29,18 +30,19 @@ var import_firestore = require("firebase/firestore");
29
30
  var import_storage = require("firebase/storage");
30
31
  var import_config = require("./config");
31
32
  const config = (0, import_config.initializeConfig)();
32
- const clientApp = (0, import_app.initializeApp)(config);
33
- const auth = (0, import_auth.getAuth)(clientApp);
34
- (0, import_auth.setPersistence)(auth, import_auth.browserSessionPersistence);
33
+ const clientApp = (0, import_app.getApps)().length === 0 ? (0, import_app.initializeApp)(config) : (0, import_app.getApps)()[0];
34
+ const ternSecureAuth = (0, import_auth.getAuth)(clientApp);
35
+ (0, import_auth.setPersistence)(ternSecureAuth, import_auth.browserSessionPersistence);
35
36
  const firestore = (0, import_firestore.getFirestore)(clientApp);
36
37
  const storage = (0, import_storage.getStorage)(clientApp);
37
- const TernSecureAuth = () => auth;
38
+ const TernSecureAuth = () => ternSecureAuth;
38
39
  const TernSecureFirestore = () => firestore;
39
40
  const TernSecureStorage = () => storage;
40
41
  // Annotate the CommonJS export names for ESM import in node:
41
42
  0 && (module.exports = {
42
43
  TernSecureAuth,
43
44
  TernSecureFirestore,
44
- TernSecureStorage
45
+ TernSecureStorage,
46
+ ternSecureAuth
45
47
  });
46
48
  //# sourceMappingURL=client-init.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/client-init.ts"],"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;"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAA8B;AAC9B,kBAAmE;AACnE,uBAA6B;AAC7B,qBAA2B;AAC3B,oBAAgC;AAGhC,MAAM,aAAS,gCAAiB;AAChC,MAAM,gBAAY,0BAAc,MAAM;AACtC,MAAM,WAAO,qBAAQ,SAAS;AAAA,IAC9B,4BAAe,MAAM,qCAAyB;AAC9C,MAAM,gBAAY,+BAAa,SAAS;AACxC,MAAM,cAAU,2BAAW,SAAS;AAE7B,MAAM,iBAAiB,MAAM;AAC7B,MAAM,sBAAsB,MAAM;AAClC,MAAM,oBAAoB,MAAM;","names":[]}
1
+ {"version":3,"sources":["../../../src/utils/client-init.ts"],"sourcesContent":["import { initializeApp, getApps } 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 = getApps().length === 0 ? initializeApp(config) : getApps()[0];\r\nexport const ternSecureAuth = getAuth(clientApp);\r\nsetPersistence(ternSecureAuth, 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 = () => ternSecureAuth;\r\nexport const TernSecureFirestore = () => firestore;\r\nexport const TernSecureStorage = () => storage;\r\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAuC;AACvC,kBAAmE;AACnE,uBAA6B;AAC7B,qBAA2B;AAC3B,oBAAgC;AAGhC,MAAM,aAAS,gCAAiB;AAChC,MAAM,gBAAY,oBAAQ,EAAE,WAAW,QAAI,0BAAc,MAAM,QAAI,oBAAQ,EAAE,CAAC;AACvE,MAAM,qBAAiB,qBAAQ,SAAS;AAAA,IAC/C,4BAAe,gBAAgB,qCAAyB;AACxD,MAAM,gBAAY,+BAAa,SAAS;AACxC,MAAM,cAAU,2BAAW,SAAS;AAE7B,MAAM,iBAAiB,MAAM;AAC7B,MAAM,sBAAsB,MAAM;AAClC,MAAM,oBAAoB,MAAM;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { TernSecureClientProvider } from "../../boundary/TernSecureClientProvider";
3
- async function TernSecureProvider({ children }) {
3
+ function TernSecureProvider({ children }) {
4
4
  return /* @__PURE__ */ jsx(TernSecureClientProvider, { children });
5
5
  }
6
6
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/app-router/client/TernSecureProvider.tsx"],"sourcesContent":["import React from \"react\"\r\nimport { TernSecureClientProvider } from \"../../boundary/TernSecureClientProvider\"\r\n\r\n\r\n// Loading fallback component\r\n/*function TernSecureLoadingFallback() {\r\n return (\r\n <div>\r\n <span className=\"sr-only\">Loading...</span>\r\n </div>\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 async function TernSecureProvider({ children }: { children: React.ReactNode }) {\r\n return (\r\n <TernSecureClientProvider>\r\n {children}\r\n </TernSecureClientProvider>\r\n )\r\n}"],"mappings":"AAmCI;AAlCJ,SAAS,gCAAgC;AAgCzC,eAAsB,mBAAmB,EAAE,SAAS,GAAkC;AACpF,SACE,oBAAC,4BACI,UACL;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/app-router/client/TernSecureProvider.tsx"],"sourcesContent":["import React from \"react\"\r\nimport { TernSecureClientProvider } from \"../../boundary/TernSecureClientProvider\"\r\n\r\n\r\n// Loading fallback component\r\n/*function TernSecureLoadingFallback() {\r\n return (\r\n <div>\r\n <span className=\"sr-only\">Loading...</span>\r\n </div>\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 TernSecureProvider({ children }: { children: React.ReactNode }) {\r\n return (\r\n <TernSecureClientProvider>\r\n {children}\r\n </TernSecureClientProvider>\r\n )\r\n}"],"mappings":"AAmCI;AAlCJ,SAAS,gCAAgC;AAgClC,SAAS,mBAAmB,EAAE,SAAS,GAAkC;AAC9E,SACE,oBAAC,4BACI,UACL;AAEJ;","names":[]}
@@ -1,9 +1,11 @@
1
1
  import { adminTernSecureAuth, adminTernSecureDb } from "../../utils/admin-init";
2
2
  import { ternSecureMiddleware } from "./ternSecureMiddleware";
3
3
  import { verifyTernSessionCookie, createSessionCookie } from "./sessionTernSecure";
4
+ import { auth } from "./auth";
4
5
  export {
5
6
  adminTernSecureAuth,
6
7
  adminTernSecureDb,
8
+ auth,
7
9
  createSessionCookie,
8
10
  ternSecureMiddleware,
9
11
  verifyTernSessionCookie
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/app-router/server/index.ts"],"sourcesContent":["export { adminTernSecureAuth, adminTernSecureDb } from '../../utils/admin-init'\r\nexport { ternSecureMiddleware } from './ternSecureMiddleware'\r\nexport { verifyTernSessionCookie, createSessionCookie } from './sessionTernSecure'"],"mappings":"AAAA,SAAS,qBAAqB,yBAAyB;AACvD,SAAS,4BAA4B;AACrC,SAAS,yBAAyB,2BAA2B;","names":[]}
1
+ {"version":3,"sources":["../../../../src/app-router/server/index.ts"],"sourcesContent":["export { adminTernSecureAuth, adminTernSecureDb } from '../../utils/admin-init'\r\nexport { ternSecureMiddleware } from './ternSecureMiddleware'\r\nexport { verifyTernSessionCookie, createSessionCookie } from './sessionTernSecure'\r\nexport { auth } from './auth'"],"mappings":"AAAA,SAAS,qBAAqB,yBAAyB;AACvD,SAAS,4BAA4B;AACrC,SAAS,yBAAyB,2BAA2B;AAC7D,SAAS,YAAY;","names":[]}
@@ -1,11 +1,11 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
3
  import { useState, useEffect, useMemo, useCallback } from "react";
4
- import { TernSecureAuth } from "../utils/client-init";
4
+ import { ternSecureAuth } from "../utils/client-init";
5
5
  import { onAuthStateChanged } from "firebase/auth";
6
6
  import { TernSecureCtx } from "./TernSecureCtx";
7
7
  function TernSecureClientProvider({ children, onUserChanged }) {
8
- const auth = useMemo(() => TernSecureAuth(), []);
8
+ const auth = useMemo(() => ternSecureAuth, []);
9
9
  const [authState, setAuthState] = useState(() => ({
10
10
  userId: null,
11
11
  isLoaded: false,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/boundary/TernSecureClientProvider.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport React, { useState, useEffect, useMemo, useCallback } from 'react'\r\nimport { TernSecureAuth } from '../utils/client-init'\r\nimport { onAuthStateChanged, User } from \"firebase/auth\"\r\nimport { TernSecureCtx, TernSecureCtxValue, TernSecureState } from './TernSecureCtx'\r\n\r\ninterface TernSecureClientProviderProps {\r\n children: React.ReactNode;\r\n onUserChanged?: (user: User | null) => Promise<void>;\r\n}\r\n\r\nexport function TernSecureClientProvider({ children, onUserChanged }: TernSecureClientProviderProps) {\r\n const auth = useMemo(() => TernSecureAuth(), []);\r\n\r\n const [authState, setAuthState] = useState<TernSecureState>(() => ({\r\n userId: null,\r\n isLoaded: false,\r\n error: null,\r\n }));\r\n\r\n const handleAuthStateChange = useCallback(async (user: User | null) => {\r\n try {\r\n if(!user) {\r\n await auth.signOut();\r\n }\r\n\r\n if (onUserChanged) {\r\n await onUserChanged(user);\r\n }\r\n setAuthState({\r\n isLoaded: true,\r\n userId: user?.uid || null,\r\n error: null\r\n });\r\n } catch (error) {\r\n auth.signOut();\r\n setAuthState({\r\n isLoaded: true,\r\n userId: null,\r\n error: error instanceof Error ? error : new Error('An unknown error occurred')\r\n });\r\n }\r\n }, [auth, onUserChanged]);\r\n\r\n useEffect(() => {\r\n const unsubscribe = onAuthStateChanged(auth, handleAuthStateChange);\r\n \r\n return () => unsubscribe();\r\n }, [auth, handleAuthStateChange]);\r\n\r\n /*const contextValue: TernSecureCtxValue = useMemo(() => ({\r\n ...authState\r\n }), [authState]);*/\r\n\r\n if (!authState.isLoaded) {\r\n return (\r\n <TernSecureCtx.Provider value={authState}>\r\n <div aria-live=\"polite\" aria-busy=\"true\">\r\n <span className=\"sr-only\">Loading authentication state...</span>\r\n </div>\r\n </TernSecureCtx.Provider>\r\n );\r\n }\r\n\r\n return (\r\n <TernSecureCtx.Provider value={authState}>\r\n {children}\r\n </TernSecureCtx.Provider>\r\n );\r\n}\r\n\r\n"],"mappings":";AA2DU;AAzDV,SAAgB,UAAU,WAAW,SAAS,mBAAmB;AACjE,SAAS,sBAAsB;AAC/B,SAAS,0BAAgC;AACzC,SAAS,qBAA0D;AAO5D,SAAS,yBAAyB,EAAE,UAAU,cAAc,GAAkC;AACnG,QAAM,OAAO,QAAQ,MAAM,eAAe,GAAG,CAAC,CAAC;AAE/C,QAAM,CAAC,WAAW,YAAY,IAAI,SAA0B,OAAO;AAAA,IAC/D,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACX,EAAE;AAEF,QAAM,wBAAwB,YAAY,OAAO,SAAsB;AACrE,QAAI;AACF,UAAG,CAAC,MAAM;AACR,cAAM,KAAK,QAAQ;AAAA,MACrB;AAEA,UAAI,eAAe;AACjB,cAAM,cAAc,IAAI;AAAA,MAC1B;AACA,mBAAa;AAAA,QACX,UAAU;AAAA,QACV,SAAQ,6BAAM,QAAO;AAAA,QACrB,OAAO;AAAA,MACT,CAAC;AAAA,IACH,SAAS,OAAO;AACd,WAAK,QAAQ;AACb,mBAAa;AAAA,QACX,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,2BAA2B;AAAA,MAC/E,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,MAAM,aAAa,CAAC;AAExB,YAAU,MAAM;AACd,UAAM,cAAc,mBAAmB,MAAM,qBAAqB;AAElE,WAAO,MAAM,YAAY;AAAA,EAC3B,GAAG,CAAC,MAAM,qBAAqB,CAAC;AAMhC,MAAI,CAAC,UAAU,UAAU;AACvB,WACE,oBAAC,cAAc,UAAd,EAAuB,OAAO,WAC7B,8BAAC,SAAI,aAAU,UAAS,aAAU,QAChC,8BAAC,UAAK,WAAU,WAAU,6CAA+B,GAC3D,GACF;AAAA,EAEJ;AAEA,SACE,oBAAC,cAAc,UAAd,EAAuB,OAAO,WAC5B,UACH;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../src/boundary/TernSecureClientProvider.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport React, { useState, useEffect, useMemo, useCallback } from 'react'\r\nimport { ternSecureAuth } from '../utils/client-init'\r\nimport { onAuthStateChanged, User } from \"firebase/auth\"\r\nimport { TernSecureCtx, TernSecureState } from './TernSecureCtx'\r\n\r\ninterface TernSecureClientProviderProps {\r\n children: React.ReactNode;\r\n onUserChanged?: (user: User | null) => Promise<void>;\r\n}\r\n\r\nexport function TernSecureClientProvider({ children, onUserChanged }: TernSecureClientProviderProps) {\r\n const auth = useMemo(() => ternSecureAuth, []);\r\n\r\n const [authState, setAuthState] = useState<TernSecureState>(() => ({\r\n userId: null,\r\n isLoaded: false,\r\n error: null,\r\n }));\r\n\r\n const handleAuthStateChange = useCallback(async (user: User | null) => {\r\n try {\r\n if(!user) {\r\n await auth.signOut();\r\n }\r\n\r\n if (onUserChanged) {\r\n await onUserChanged(user);\r\n }\r\n setAuthState({\r\n isLoaded: true,\r\n userId: user?.uid || null,\r\n error: null\r\n });\r\n } catch (error) {\r\n auth.signOut();\r\n setAuthState({\r\n isLoaded: true,\r\n userId: null,\r\n error: error instanceof Error ? error : new Error('An unknown error occurred')\r\n });\r\n }\r\n }, [auth, onUserChanged]);\r\n\r\n useEffect(() => {\r\n const unsubscribe = onAuthStateChanged(auth, handleAuthStateChange);\r\n \r\n return () => unsubscribe();\r\n }, [auth, handleAuthStateChange]);\r\n\r\n /*const contextValue: TernSecureCtxValue = useMemo(() => ({\r\n ...authState\r\n }), [authState]);*/\r\n\r\n if (!authState.isLoaded) {\r\n return (\r\n <TernSecureCtx.Provider value={authState}>\r\n <div aria-live=\"polite\" aria-busy=\"true\">\r\n <span className=\"sr-only\">Loading authentication state...</span>\r\n </div>\r\n </TernSecureCtx.Provider>\r\n );\r\n }\r\n\r\n return (\r\n <TernSecureCtx.Provider value={authState}>\r\n {children}\r\n </TernSecureCtx.Provider>\r\n );\r\n}\r\n\r\n"],"mappings":";AA2DU;AAzDV,SAAgB,UAAU,WAAW,SAAS,mBAAmB;AACjE,SAAS,sBAAsB;AAC/B,SAAS,0BAAgC;AACzC,SAAS,qBAAsC;AAOxC,SAAS,yBAAyB,EAAE,UAAU,cAAc,GAAkC;AACnG,QAAM,OAAO,QAAQ,MAAM,gBAAgB,CAAC,CAAC;AAE7C,QAAM,CAAC,WAAW,YAAY,IAAI,SAA0B,OAAO;AAAA,IAC/D,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACX,EAAE;AAEF,QAAM,wBAAwB,YAAY,OAAO,SAAsB;AACrE,QAAI;AACF,UAAG,CAAC,MAAM;AACR,cAAM,KAAK,QAAQ;AAAA,MACrB;AAEA,UAAI,eAAe;AACjB,cAAM,cAAc,IAAI;AAAA,MAC1B;AACA,mBAAa;AAAA,QACX,UAAU;AAAA,QACV,SAAQ,6BAAM,QAAO;AAAA,QACrB,OAAO;AAAA,MACT,CAAC;AAAA,IACH,SAAS,OAAO;AACd,WAAK,QAAQ;AACb,mBAAa;AAAA,QACX,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,2BAA2B;AAAA,MAC/E,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,MAAM,aAAa,CAAC;AAExB,YAAU,MAAM;AACd,UAAM,cAAc,mBAAmB,MAAM,qBAAqB;AAElE,WAAO,MAAM,YAAY;AAAA,EAC3B,GAAG,CAAC,MAAM,qBAAqB,CAAC;AAMhC,MAAI,CAAC,UAAU,UAAU;AACvB,WACE,oBAAC,cAAc,UAAd,EAAuB,OAAO,WAC7B,8BAAC,SAAI,aAAU,UAAS,aAAU,QAChC,8BAAC,UAAK,WAAU,WAAU,6CAA+B,GAC3D,GACF;AAAA,EAEJ;AAEA,SACE,oBAAC,cAAc,UAAd,EAAuB,OAAO,WAC5B,UACH;AAEJ;","names":[]}
@@ -0,0 +1,18 @@
1
+ "use client";
2
+ import { onAuthStateChanged } from "firebase/auth";
3
+ import { useEffect, useState } from "react";
4
+ import { ternSecureAuth } from "../../utils/client-init";
5
+ function useUser() {
6
+ const [user, setUser] = useState(null);
7
+ useEffect(() => {
8
+ const unsubscribe = onAuthStateChanged(ternSecureAuth, (authUser) => {
9
+ setUser(authUser);
10
+ });
11
+ return () => unsubscribe();
12
+ }, []);
13
+ return user;
14
+ }
15
+ export {
16
+ useUser
17
+ };
18
+ //# sourceMappingURL=useUser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/boundary/hooks/useUser.ts"],"sourcesContent":["\"use client\";\r\n\r\nimport { onAuthStateChanged } from \"firebase/auth\";\r\nimport { useEffect, useState } from \"react\";\r\n\r\nimport { ternSecureAuth} from \"../../utils/client-init\";\r\n\r\nexport function useUser() {\r\n const [user, setUser] = useState<any | null>(null);\r\n\r\n useEffect(() => {\r\n const unsubscribe = onAuthStateChanged(ternSecureAuth, (authUser) => {\r\n setUser(authUser);\r\n });\r\n\r\n return () => unsubscribe();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return user;\r\n}\r\n"],"mappings":";AAEA,SAAS,0BAA0B;AACnC,SAAS,WAAW,gBAAgB;AAEpC,SAAS,sBAAqB;AAEvB,SAAS,UAAU;AACxB,QAAM,CAAC,MAAM,OAAO,IAAI,SAAqB,IAAI;AAEjD,YAAU,MAAM;AACd,UAAM,cAAc,mBAAmB,gBAAgB,CAAC,aAAa;AACnE,cAAQ,QAAQ;AAAA,IAClB,CAAC;AAED,WAAO,MAAM,YAAY;AAAA,EAE3B,GAAG,CAAC,CAAC;AAEL,SAAO;AACT;","names":[]}
package/dist/esm/index.js CHANGED
@@ -1,9 +1,9 @@
1
- "use client";
2
- import { TernSecureAuth, TernSecureFirestore } from "./utils/client-init";
1
+ import { TernSecureAuth, TernSecureFirestore, ternSecureAuth } from "./utils/client-init";
3
2
  import { loadFireConfig, validateConfig } from "./utils/config";
4
3
  import { signInWithEmail } from "./app-router/client/actions";
5
4
  import { TernSecureProvider } from "./app-router/client/TernSecureProvider";
6
5
  import { useAuth } from "./boundary/hooks/useAuth";
6
+ import { useUser } from "./boundary/hooks/useUser";
7
7
  import { SignIn } from "./components/sign-in";
8
8
  export {
9
9
  SignIn,
@@ -12,7 +12,9 @@ export {
12
12
  TernSecureProvider,
13
13
  loadFireConfig,
14
14
  signInWithEmail,
15
+ ternSecureAuth,
15
16
  useAuth,
17
+ useUser,
16
18
  validateConfig
17
19
  };
18
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["\"use client\"\r\n//import { TernSecureServerProvider } from './app-router/server/TernSecureServerProvider'\r\n//import type { TernSecureState } from './app-router/client/TernSecureProvider'\r\nexport { TernSecureAuth, TernSecureFirestore } from './utils/client-init'\r\nexport { loadFireConfig, validateConfig } from './utils/config'\r\nexport { signInWithEmail } from './app-router/client/actions'\r\n//export { useInternalContext } from './boundary/TernSecureCtx'\r\n//export { TernSecureClientProvider } from './app-router/client/TernSecureProvider'\r\nexport { TernSecureProvider } from './app-router/client/TernSecureProvider'\r\nexport { useAuth } from './boundary/hooks/useAuth' \r\nexport { SignIn } from './components/sign-in'\r\n\r\n//export const TernSecureProvider = TernSecureServerProvider\r\n//export type { TernSecureState }"],"mappings":";AAGA,SAAS,gBAAgB,2BAA2B;AACpD,SAAS,gBAAgB,sBAAsB;AAC/C,SAAS,uBAAuB;AAGhC,SAAS,0BAA0B;AACnC,SAAS,eAAe;AACxB,SAAS,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["\r\n//import { TernSecureServerProvider } from './app-router/server/TernSecureServerProvider'\r\n//import type { TernSecureState } from './app-router/client/TernSecureProvider'\r\nexport { TernSecureAuth, TernSecureFirestore, ternSecureAuth } from './utils/client-init'\r\nexport { loadFireConfig, validateConfig } from './utils/config'\r\nexport { signInWithEmail } from './app-router/client/actions'\r\n//export { useInternalContext } from './boundary/TernSecureCtx'\r\n//export { TernSecureClientProvider } from './app-router/client/TernSecureProvider'\r\nexport { TernSecureProvider } from './app-router/client/TernSecureProvider'\r\nexport { useAuth } from './boundary/hooks/useAuth' \r\nexport { useUser } from './boundary/hooks/useUser'\r\nexport { SignIn } from './components/sign-in'\r\n\r\n//export const TernSecureProvider = TernSecureServerProvider\r\n//export type { TernSecureState }"],"mappings":"AAGA,SAAS,gBAAgB,qBAAqB,sBAAsB;AACpE,SAAS,gBAAgB,sBAAsB;AAC/C,SAAS,uBAAuB;AAGhC,SAAS,0BAA0B;AACnC,SAAS,eAAe;AACxB,SAAS,eAAe;AACxB,SAAS,cAAc;","names":[]}
@@ -1,20 +1,21 @@
1
- import { initializeApp } from "firebase/app";
1
+ import { initializeApp, getApps } from "firebase/app";
2
2
  import { getAuth, setPersistence, browserSessionPersistence } from "firebase/auth";
3
3
  import { getFirestore } from "firebase/firestore";
4
4
  import { getStorage } from "firebase/storage";
5
5
  import { initializeConfig } from "./config";
6
6
  const config = initializeConfig();
7
- const clientApp = initializeApp(config);
8
- const auth = getAuth(clientApp);
9
- setPersistence(auth, browserSessionPersistence);
7
+ const clientApp = getApps().length === 0 ? initializeApp(config) : getApps()[0];
8
+ const ternSecureAuth = getAuth(clientApp);
9
+ setPersistence(ternSecureAuth, browserSessionPersistence);
10
10
  const firestore = getFirestore(clientApp);
11
11
  const storage = getStorage(clientApp);
12
- const TernSecureAuth = () => auth;
12
+ const TernSecureAuth = () => ternSecureAuth;
13
13
  const TernSecureFirestore = () => firestore;
14
14
  const TernSecureStorage = () => storage;
15
15
  export {
16
16
  TernSecureAuth,
17
17
  TernSecureFirestore,
18
- TernSecureStorage
18
+ TernSecureStorage,
19
+ ternSecureAuth
19
20
  };
20
21
  //# sourceMappingURL=client-init.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/client-init.ts"],"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;"],"mappings":"AAAA,SAAS,qBAAqB;AAC9B,SAAS,SAAS,gBAAgB,iCAAiC;AACnE,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAC3B,SAAS,wBAAuB;AAGhC,MAAM,SAAS,iBAAiB;AAChC,MAAM,YAAY,cAAc,MAAM;AACtC,MAAM,OAAO,QAAQ,SAAS;AAC9B,eAAe,MAAM,yBAAyB;AAC9C,MAAM,YAAY,aAAa,SAAS;AACxC,MAAM,UAAU,WAAW,SAAS;AAE7B,MAAM,iBAAiB,MAAM;AAC7B,MAAM,sBAAsB,MAAM;AAClC,MAAM,oBAAoB,MAAM;","names":[]}
1
+ {"version":3,"sources":["../../../src/utils/client-init.ts"],"sourcesContent":["import { initializeApp, getApps } 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 = getApps().length === 0 ? initializeApp(config) : getApps()[0];\r\nexport const ternSecureAuth = getAuth(clientApp);\r\nsetPersistence(ternSecureAuth, 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 = () => ternSecureAuth;\r\nexport const TernSecureFirestore = () => firestore;\r\nexport const TernSecureStorage = () => storage;\r\n"],"mappings":"AAAA,SAAS,eAAe,eAAe;AACvC,SAAS,SAAS,gBAAgB,iCAAiC;AACnE,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAC3B,SAAS,wBAAuB;AAGhC,MAAM,SAAS,iBAAiB;AAChC,MAAM,YAAY,QAAQ,EAAE,WAAW,IAAI,cAAc,MAAM,IAAI,QAAQ,EAAE,CAAC;AACvE,MAAM,iBAAiB,QAAQ,SAAS;AAC/C,eAAe,gBAAgB,yBAAyB;AACxD,MAAM,YAAY,aAAa,SAAS;AACxC,MAAM,UAAU,WAAW,SAAS;AAE7B,MAAM,iBAAiB,MAAM;AAC7B,MAAM,sBAAsB,MAAM;AAClC,MAAM,oBAAoB,MAAM;","names":[]}
@@ -22,5 +22,5 @@ import React from "react";
22
22
  */
23
23
  export declare function TernSecureProvider({ children }: {
24
24
  children: React.ReactNode;
25
- }): Promise<import("react/jsx-runtime").JSX.Element>;
25
+ }): import("react/jsx-runtime").JSX.Element;
26
26
  //# sourceMappingURL=TernSecureProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TernSecureProvider.d.ts","sourceRoot":"","sources":["../../../../src/app-router/client/TernSecureProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAYzB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,oDAMnF"}
1
+ {"version":3,"file":"TernSecureProvider.d.ts","sourceRoot":"","sources":["../../../../src/app-router/client/TernSecureProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAYzB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAM7E"}
@@ -1,4 +1,5 @@
1
1
  export { adminTernSecureAuth, adminTernSecureDb } from '../../utils/admin-init';
2
2
  export { ternSecureMiddleware } from './ternSecureMiddleware';
3
3
  export { verifyTernSessionCookie, createSessionCookie } from './sessionTernSecure';
4
+ export { auth } from './auth';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/app-router/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/app-router/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAClF,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function useUser(): any;
2
+ //# sourceMappingURL=useUser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useUser.d.ts","sourceRoot":"","sources":["../../../../src/boundary/hooks/useUser.ts"],"names":[],"mappings":"AAOA,wBAAgB,OAAO,QAatB"}
@@ -1,7 +1,8 @@
1
- export { TernSecureAuth, TernSecureFirestore } from './utils/client-init';
1
+ export { TernSecureAuth, TernSecureFirestore, ternSecureAuth } from './utils/client-init';
2
2
  export { loadFireConfig, validateConfig } from './utils/config';
3
3
  export { signInWithEmail } from './app-router/client/actions';
4
4
  export { TernSecureProvider } from './app-router/client/TernSecureProvider';
5
5
  export { useAuth } from './boundary/hooks/useAuth';
6
+ export { useUser } from './boundary/hooks/useUser';
6
7
  export { SignIn } from './components/sign-in';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAG7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAA;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAG7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAA;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA"}
@@ -1,3 +1,4 @@
1
+ export declare const ternSecureAuth: import("@firebase/auth").Auth;
1
2
  export declare const TernSecureAuth: () => import("@firebase/auth").Auth;
2
3
  export declare const TernSecureFirestore: () => import("@firebase/firestore").Firestore;
3
4
  export declare const TernSecureStorage: () => import("@firebase/storage").FirebaseStorage;
@@ -1 +1 @@
1
- {"version":3,"file":"client-init.d.ts","sourceRoot":"","sources":["../../../src/utils/client-init.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,cAAc,qCAAa,CAAC;AACzC,eAAO,MAAM,mBAAmB,+CAAkB,CAAC;AACnD,eAAO,MAAM,iBAAiB,mDAAgB,CAAC"}
1
+ {"version":3,"file":"client-init.d.ts","sourceRoot":"","sources":["../../../src/utils/client-init.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,cAAc,+BAAqB,CAAC;AAKjD,eAAO,MAAM,cAAc,qCAAuB,CAAC;AACnD,eAAO,MAAM,mBAAmB,+CAAkB,CAAC;AACnD,eAAO,MAAM,iBAAiB,mDAAgB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tern-secure/nextjs",
3
- "version": "3.2.21",
3
+ "version": "3.2.23",
4
4
  "packageManager": "npm@10.9.0",
5
5
  "publishConfig": {
6
6
  "access": "public"