@tern-secure/nextjs 1.5.0 → 1.5.2

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.
@@ -0,0 +1,3 @@
1
+ import { AuthState } from '../../types/ternsecure';
2
+ export declare function subscribeToAuthState(listener: (state: AuthState) => void): () => void;
3
+ export default function ClientProvider(): null;
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import { AuthState, TernSecureProviderProps } from '../../../types/ternsecure';
3
+ export declare const TernSecureClientProvider: React.FC<TernSecureProviderProps & {
4
+ initialState: AuthState;
5
+ }>;
@@ -1,3 +1,11 @@
1
- import { TernSecureContextType } from '../../../types/ternsecure';
1
+ import { User } from 'firebase/auth';
2
+ export interface AuthState {
3
+ user: User | null;
4
+ loading: boolean;
5
+ error: Error | null;
6
+ }
7
+ export interface TernSecureContextType {
8
+ authState: AuthState;
9
+ }
2
10
  export declare const TernSecureContext: import("react").Context<TernSecureContextType | null>;
3
11
  export declare const useTernSecure: () => TernSecureContextType;
@@ -1,6 +1,2 @@
1
- import { ReactNode } from 'react';
2
- interface TernSecureProviderProps {
3
- children: ReactNode;
4
- }
1
+ import { TernSecureProviderProps } from '../../../types/ternsecure';
5
2
  export declare function TernSecureProvider({ children }: TernSecureProviderProps): import("react/jsx-runtime").JSX.Element;
6
- export {};
@@ -0,0 +1,2 @@
1
+ import { UseAuthReturn } from '../types/ternsecure';
2
+ export declare function useAuth(): UseAuthReturn;
package/dist/index.js CHANGED
@@ -1,12 +1,9 @@
1
- 'use strict';
2
-
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var dynamic = require('next/dynamic');
5
- var react = require('react');
6
- var app$1 = require('firebase/app');
7
- var auth$1 = require('firebase/auth');
8
- var firestore$1 = require('firebase/firestore');
9
- var storage$1 = require('firebase/storage');
1
+ import { getApps, initializeApp } from 'firebase/app';
2
+ import { getAuth } from 'firebase/auth';
3
+ import { getFirestore } from 'firebase/firestore';
4
+ import { getStorage } from 'firebase/storage';
5
+ import { createContext, useEffect } from 'react';
6
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
10
7
 
11
8
  function getEnvVariable(name) {
12
9
  const value = process.env[`NEXT_PUBLIC_FIREBASE_${name}`];
@@ -45,10 +42,10 @@ function initializeTernSecure() {
45
42
  throw new TernSecureError(ERRORS.SERVER_SIDE_INITIALIZATION);
46
43
  }
47
44
  if (!app) {
48
- app = app$1.getApps().length ? app$1.getApps()[0] : app$1.initializeApp(loadFireConfig);
49
- auth = auth$1.getAuth(app);
50
- firestore = firestore$1.getFirestore(app);
51
- storage = storage$1.getStorage(app);
45
+ app = getApps().length ? getApps()[0] : initializeApp(loadFireConfig);
46
+ auth = getAuth(app);
47
+ firestore = getFirestore(app);
48
+ storage = getStorage(app);
52
49
  }
53
50
  return app;
54
51
  }
@@ -68,41 +65,35 @@ const getTernSecureStorage = () => {
68
65
  return storage;
69
66
  };
70
67
 
71
- const TernSecureContext = react.createContext(null);
68
+ createContext(null);
72
69
 
73
- const TernSecureClientProvider$2 = dynamic(() => Promise.resolve().then(function () { return TernSecureClientProvider$1; }).then((mod) => mod.TernSecureClientProvider), { ssr: false });
74
- function TernSecureProvider({ children }) {
75
- const initialState = {
76
- user: null,
77
- loading: true,
78
- error: null
79
- };
80
- return jsxRuntime.jsx(TernSecureClientProvider$2, { initialState: initialState, children: children });
70
+ let globalAuthState = {
71
+ user: null,
72
+ loading: true,
73
+ error: null,
74
+ initialized: false
75
+ };
76
+ let listeners = [];
77
+ function setGlobalAuthState(newState) {
78
+ globalAuthState = { ...globalAuthState, ...newState };
79
+ listeners.forEach(listener => listener(globalAuthState));
81
80
  }
82
-
83
- const TernSecureClientProvider = ({ children, initialState }) => {
84
- const [authState, setAuthState] = react.useState(initialState);
85
- react.useEffect(() => {
81
+ function ClientProvider() {
82
+ useEffect(() => {
86
83
  const auth = getTernSecureAuth();
87
84
  const unsubscribe = auth.onAuthStateChanged((user) => {
88
- setAuthState({ user, loading: false, error: null });
85
+ setGlobalAuthState({ user, loading: false, error: null, initialized: true });
89
86
  }, (error) => {
90
- setAuthState({ user: null, loading: false, error });
87
+ setGlobalAuthState({ user: null, loading: false, error, initialized: true });
91
88
  });
92
89
  return () => unsubscribe();
93
90
  }, []);
94
- return (jsxRuntime.jsx(TernSecureContext.Provider, { value: { authState }, children: children }));
95
- };
91
+ return null; // This component doesn't render anything
92
+ }
96
93
 
97
- var TernSecureClientProvider$1 = /*#__PURE__*/Object.freeze({
98
- __proto__: null,
99
- TernSecureClientProvider: TernSecureClientProvider
100
- });
94
+ function TernSecureProvider({ children }) {
95
+ return (jsxs(Fragment, { children: [children, jsx(ClientProvider, {})] }));
96
+ }
101
97
 
102
- exports.TernSecureProvider = TernSecureProvider;
103
- exports.getTernSecureAuth = getTernSecureAuth;
104
- exports.getTernSecureFirestore = getTernSecureFirestore;
105
- exports.getTernSecureStorage = getTernSecureStorage;
106
- exports.initializeTernSecure = initializeTernSecure;
107
- exports.loadFireConfig = loadFireConfig;
98
+ export { TernSecureProvider, getTernSecureAuth, getTernSecureFirestore, getTernSecureStorage, initializeTernSecure, loadFireConfig };
108
99
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/app-router/client/config.ts","../src/errors/index.ts","../src/app-router/client/client-init.ts","../src/app-router/client/providers/ternSecureContext.ts","../src/app-router/server/providers/TernSecureServerProvider.tsx","../src/app-router/client/providers/TernSecureClientProvider.tsx"],"sourcesContent":[null,null,null,null,null,null],"names":["getApps","initializeApp","getAuth","getFirestore","getStorage","createContext","TernSecureClientProvider","_jsx","useState","useEffect"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/app-router/client/config.ts","../src/errors/index.ts","../src/app-router/client/client-init.ts","../src/app-router/client/providers/ternSecureContext.ts","../src/app-router/client/ClientProvider.tsx","../src/app-router/server/providers/TernSecureServerProvider.tsx"],"sourcesContent":[null,null,null,null,null,null],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -30,3 +30,10 @@ export interface TernSecureContextType {
30
30
  export interface TernSecureProviderProps {
31
31
  children: ReactNode;
32
32
  }
33
+ export interface UseAuthReturn {
34
+ user: User | null;
35
+ loading: boolean;
36
+ error: Error | null;
37
+ signIn: (email: string, password: string) => Promise<User>;
38
+ signOut: () => Promise<void>;
39
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tern-secure/nextjs",
3
- "version": "1.5.0",
3
+ "version": "1.5.2",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org/"
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- import { AuthState } from './ternSecureContext';
3
- export declare const TernSecureClientProvider: React.FC<{
4
- children: React.ReactNode;
5
- initialState: AuthState;
6
- }>;