@tern-secure/nextjs 1.5.5 → 1.5.7

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,8 @@
1
+ import { FirebaseApp } from 'firebase/app';
2
+ import { Auth } from 'firebase/auth';
3
+ import { Firestore } from 'firebase/firestore';
4
+ import { FirebaseStorage } from 'firebase/storage';
5
+ export declare function initializeTernSecure(): FirebaseApp;
6
+ export declare const getTernSecureAuth: () => Auth;
7
+ export declare const getTernSecureFirestore: () => Firestore;
8
+ export declare const getTernSecureStorage: () => FirebaseStorage;
@@ -0,0 +1,2 @@
1
+ import { TernSecureConfig } from "../../types/ternsecure";
2
+ export declare const loadFireConfig: TernSecureConfig;
@@ -0,0 +1,2 @@
1
+ export { initializeTernSecure, getTernSecureAuth, getTernSecureFirestore, getTernSecureStorage } from './client-init';
2
+ export { loadFireConfig } from './config';
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { AuthState } from '../../../types/ternsecure';
3
+ interface TernSecureClientProps {
4
+ children: React.ReactNode;
5
+ initialState: AuthState;
6
+ }
7
+ export declare const TernSecureClientProvider: React.FC<TernSecureClientProps>;
8
+ export {};
@@ -0,0 +1,11 @@
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
+ }
10
+ export declare const TernSecureContext: import("react").Context<TernSecureContextType | null>;
11
+ export declare const useTernSecure: () => TernSecureContextType;
@@ -0,0 +1 @@
1
+ export { TernSecureProvider } from './providers/TernSecureServerProvider';
@@ -0,0 +1,2 @@
1
+ import { TernSecureProviderProps } from '../../../types/ternsecure';
2
+ export declare function TernSecureProvider({ children }: TernSecureProviderProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ export declare const ERRORS: {
2
+ readonly SERVER_SIDE_INITIALIZATION: "TernSecure must be initialized on the client side";
3
+ readonly NOT_INITIALIZED: "TernSecure services are not initialized. Call initializeTernSecure() first";
4
+ readonly HOOK_CONTEXT: (hookName: string) => string;
5
+ };
6
+ export declare class TernSecureError extends Error {
7
+ constructor(message: string);
8
+ }
@@ -0,0 +1,2 @@
1
+ import { UseAuthReturn } from '../types/ternsecure';
2
+ export declare function useAuth(): UseAuthReturn;
@@ -0,0 +1,3 @@
1
+ import { initializeTernSecure, getTernSecureAuth, getTernSecureFirestore, getTernSecureStorage, loadFireConfig } from "./app-router/client";
2
+ import { TernSecureProvider } from "./app-router/server/providers/TernSecureServerProvider";
3
+ export { TernSecureProvider, loadFireConfig, initializeTernSecure, getTernSecureAuth, getTernSecureFirestore, getTernSecureStorage };
package/dist/index.js ADDED
@@ -0,0 +1,108 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import dynamic from 'next/dynamic';
3
+ import React, { useState, useEffect } from 'react';
4
+ import { getApps, initializeApp } from 'firebase/app';
5
+ import { getAuth } from 'firebase/auth';
6
+ import { getFirestore } from 'firebase/firestore';
7
+ import { getStorage } from 'firebase/storage';
8
+
9
+ function getEnvVariable(name) {
10
+ const value = process.env[`NEXT_PUBLIC_FIREBASE_${name}`];
11
+ if (!value) {
12
+ throw new Error(`Missing environment variable: NEXT_PUBLIC_FIREBASE_${name}`);
13
+ }
14
+ return value;
15
+ }
16
+ const loadFireConfig = {
17
+ apiKey: getEnvVariable('API_KEY'),
18
+ authDomain: getEnvVariable('AUTH_DOMAIN'),
19
+ projectId: getEnvVariable('PROJECT_ID'),
20
+ storageBucket: getEnvVariable('STORAGE_BUCKET'),
21
+ messagingSenderId: getEnvVariable('MESSAGING_SENDER_ID'),
22
+ appId: getEnvVariable('APP_ID'),
23
+ };
24
+
25
+ const ERRORS = {
26
+ SERVER_SIDE_INITIALIZATION: 'TernSecure must be initialized on the client side',
27
+ NOT_INITIALIZED: 'TernSecure services are not initialized. Call initializeTernSecure() first',
28
+ HOOK_CONTEXT: (hookName) => `${hookName} must be used within TernSecureProvider`,
29
+ };
30
+ class TernSecureError extends Error {
31
+ constructor(message) {
32
+ super(message);
33
+ this.name = 'TernSecureError';
34
+ }
35
+ }
36
+
37
+ let app = null;
38
+ let auth = null;
39
+ let firestore = null;
40
+ let storage = null;
41
+ function initializeTernSecure() {
42
+ if (typeof window === 'undefined') {
43
+ throw new TernSecureError(ERRORS.SERVER_SIDE_INITIALIZATION);
44
+ }
45
+ if (!app) {
46
+ app = getApps().length ? getApps()[0] : initializeApp(loadFireConfig);
47
+ auth = getAuth(app);
48
+ firestore = getFirestore(app);
49
+ storage = getStorage(app);
50
+ }
51
+ return app;
52
+ }
53
+ const getTernSecureAuth = () => {
54
+ if (!auth)
55
+ throw new TernSecureError(ERRORS.NOT_INITIALIZED);
56
+ return auth;
57
+ };
58
+ const getTernSecureFirestore = () => {
59
+ if (!firestore)
60
+ throw new TernSecureError(ERRORS.NOT_INITIALIZED);
61
+ return firestore;
62
+ };
63
+ const getTernSecureStorage = () => {
64
+ if (!storage)
65
+ throw new TernSecureError(ERRORS.NOT_INITIALIZED);
66
+ return storage;
67
+ };
68
+
69
+ //import { TernSecureClientProvider } from '../../client/providers/ternSecureClientProvider';
70
+ // Dynamically import the client component with no SSR
71
+ const TernSecureClientProvider$1 = dynamic(() => Promise.resolve().then(function () { return ternSecureClientProvider; }).then((mod) => mod.TernSecureClientProvider), { ssr: false });
72
+ function TernSecureProvider({ children }) {
73
+ const initialState = {
74
+ user: null,
75
+ loading: true,
76
+ error: null,
77
+ initialized: false
78
+ };
79
+ return jsx(TernSecureClientProvider$1, { initialState: initialState, children: children });
80
+ }
81
+
82
+ const TernSecureClientProvider = ({ children, initialState }) => {
83
+ const [authState, setAuthState] = useState(initialState);
84
+ useEffect(() => {
85
+ const auth = getTernSecureAuth();
86
+ const unsubscribe = auth.onAuthStateChanged((user) => {
87
+ setAuthState({ user, loading: false, error: null, initialized: true });
88
+ }, (error) => {
89
+ setAuthState({ user: null, loading: false, error, initialized: true });
90
+ });
91
+ return () => unsubscribe();
92
+ }, []);
93
+ // Pass authState directly to children using cloneElement if they need it
94
+ return React.Children.map(children, child => {
95
+ if (React.isValidElement(child)) {
96
+ return React.cloneElement(child, { authState });
97
+ }
98
+ return child;
99
+ });
100
+ };
101
+
102
+ var ternSecureClientProvider = /*#__PURE__*/Object.freeze({
103
+ __proto__: null,
104
+ TernSecureClientProvider: TernSecureClientProvider
105
+ });
106
+
107
+ export { TernSecureProvider, getTernSecureAuth, getTernSecureFirestore, getTernSecureStorage, initializeTernSecure, loadFireConfig };
108
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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/server/providers/TernSecureServerProvider.tsx","../src/app-router/client/providers/ternSecureClientProvider.tsx"],"sourcesContent":[null,null,null,null,null],"names":["TernSecureClientProvider","_jsx"],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { ReactNode } from 'react';
2
+ import { User } from 'firebase/auth';
3
+ export interface TernSecureConfig {
4
+ apiKey: string;
5
+ authDomain: string;
6
+ projectId: string;
7
+ storageBucket: string;
8
+ messagingSenderId: string;
9
+ appId: string;
10
+ measurementId?: string;
11
+ }
12
+ export interface TernSecureOptions {
13
+ environment?: 'development' | 'production';
14
+ region?: string;
15
+ }
16
+ export interface AuthState {
17
+ user: User | null;
18
+ loading: boolean;
19
+ error: Error | null;
20
+ initialized: boolean;
21
+ }
22
+ export interface TernSecureContextValue {
23
+ _contextKey: symbol;
24
+ authState: AuthState;
25
+ auth: any;
26
+ }
27
+ export interface TernSecureContextType {
28
+ authState: AuthState;
29
+ }
30
+ export interface TernSecureProviderProps {
31
+ children: ReactNode;
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
+ }
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tern-secure/nextjs",
3
- "version": "1.5.5",
3
+ "version": "1.5.7",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org/"