@tern-secure/nextjs 1.7.4 → 1.7.6

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.
@@ -1,2 +1,3 @@
1
1
  import { TernSecureConfig } from "../../types/ternsecure";
2
- export declare const loadFireConfig: TernSecureConfig;
2
+ export declare const loadFireConfig: () => TernSecureConfig;
3
+ export declare const validateConfig: (config: TernSecureConfig) => TernSecureConfig;
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { getTernSecureAuth, getTernSecureFirestore, getTernSecureStorage, loadFireConfig } from "./app-router/client";
1
+ import { getTernSecureAuth, getTernSecureFirestore, getTernSecureStorage } from "./app-router/client";
2
2
  import { TernSecureProvider } from "./app-router/server/providers/TernSecureServerProvider";
3
3
  import { useAuth } from "./hooks/useAuth";
4
- export { TernSecureProvider, useAuth, loadFireConfig, getTernSecureAuth, getTernSecureFirestore, getTernSecureStorage };
4
+ export { TernSecureProvider, useAuth, getTernSecureAuth, getTernSecureFirestore, getTernSecureStorage };
package/dist/index.js CHANGED
@@ -1,24 +1,26 @@
1
1
  import { getApps, initializeApp } from 'firebase/app';
2
- import { getAuth, signInWithEmailAndPassword } from 'firebase/auth';
2
+ import { getAuth, setPersistence, browserSessionPersistence, signInWithEmailAndPassword } from 'firebase/auth';
3
3
  import { getFirestore } from 'firebase/firestore';
4
4
  import { getStorage } from 'firebase/storage';
5
5
  import { jsx, Fragment } from 'react/jsx-runtime';
6
6
  import { useState, useEffect } from 'react';
7
7
 
8
- function getEnvVariable(name) {
9
- const value = process.env[`NEXT_PUBLIC_FIREBASE_${name}`];
10
- if (!value) {
11
- throw new Error(`Missing environment variable: NEXT_PUBLIC_FIREBASE_${name}`);
12
- }
13
- return value;
14
- }
15
- const loadFireConfig = {
16
- apiKey: getEnvVariable('API_KEY'),
17
- authDomain: getEnvVariable('AUTH_DOMAIN'),
18
- projectId: getEnvVariable('PROJECT_ID'),
19
- storageBucket: getEnvVariable('STORAGE_BUCKET'),
20
- messagingSenderId: getEnvVariable('MESSAGING_SENDER_ID'),
21
- appId: getEnvVariable('APP_ID'),
8
+ const loadFireConfig = () => ({
9
+ apiKey: process.env.NEXT_PUBLIC_FIREBASE_API_KEY,
10
+ authDomain: process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN,
11
+ projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID,
12
+ storageBucket: process.env.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET,
13
+ messagingSenderId: process.env.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID,
14
+ appId: process.env.NEXT_PUBLIC_FIREBASE_APP_ID,
15
+ measurementId: process.env.NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID,
16
+ });
17
+ const validateConfig = (config) => {
18
+ Object.entries(config).forEach(([key, value]) => {
19
+ if (!value) {
20
+ throw new Error(`Missing environment variable: NEXT_PUBLIC_FIREBASE_${key.toUpperCase()}`);
21
+ }
22
+ });
23
+ return config;
22
24
  };
23
25
 
24
26
  const ERRORS = {
@@ -33,20 +35,43 @@ class TernSecureError extends Error {
33
35
  }
34
36
  }
35
37
 
36
- // Initialize Firebase immediately when this module is imported
37
- const app = (() => {
38
+ let app = null;
39
+ let auth = null;
40
+ let firestore = null;
41
+ let storage = null;
42
+ const initialize = () => {
38
43
  if (typeof window === 'undefined') {
39
44
  throw new TernSecureError(ERRORS.SERVER_SIDE_INITIALIZATION);
40
45
  }
41
- return getApps().length ? getApps()[0] : initializeApp(loadFireConfig);
42
- })();
43
- const auth = getAuth(app);
44
- const firestore = getFirestore(app);
45
- const storage = getStorage(app);
46
- // Remove the initialize function since it's now done automatically
47
- const getTernSecureAuth = () => auth;
48
- const getTernSecureFirestore = () => firestore;
49
- const getTernSecureStorage = () => storage;
46
+ if (!app) {
47
+ const config = validateConfig(loadFireConfig());
48
+ app = getApps().length ? getApps()[0] : initializeApp(config);
49
+ auth = getAuth(app);
50
+ // Set persistence after initializing auth
51
+ setPersistence(auth, browserSessionPersistence);
52
+ firestore = getFirestore(app);
53
+ storage = getStorage(app);
54
+ }
55
+ return app;
56
+ };
57
+ const getTernSecureAuth = () => {
58
+ if (!auth) {
59
+ initialize();
60
+ }
61
+ return auth;
62
+ };
63
+ const getTernSecureFirestore = () => {
64
+ if (!firestore) {
65
+ initialize();
66
+ }
67
+ return firestore;
68
+ };
69
+ const getTernSecureStorage = () => {
70
+ if (!storage) {
71
+ initialize();
72
+ }
73
+ return storage;
74
+ };
50
75
 
51
76
  function TernSecureProvider({ children }) {
52
77
  if (typeof window === 'undefined') {
@@ -117,5 +142,5 @@ function useAuth() {
117
142
  };
118
143
  }
119
144
 
120
- export { TernSecureProvider, getTernSecureAuth, getTernSecureFirestore, getTernSecureStorage, loadFireConfig, useAuth };
145
+ export { TernSecureProvider, getTernSecureAuth, getTernSecureFirestore, getTernSecureStorage, useAuth };
121
146
  //# 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/server/providers/TernSecureServerProvider.tsx","../src/app-router/client/ClientProvider.tsx","../src/hooks/useAuth.ts"],"sourcesContent":[null,null,null,null,null,null],"names":["_jsx","_Fragment"],"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/server/providers/TernSecureServerProvider.tsx","../src/app-router/client/ClientProvider.tsx","../src/hooks/useAuth.ts"],"sourcesContent":[null,null,null,null,null,null],"names":["_jsx","_Fragment"],"mappings":"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"}
@@ -7,7 +7,7 @@ export interface TernSecureConfig {
7
7
  storageBucket: string;
8
8
  messagingSenderId: string;
9
9
  appId: string;
10
- measurementId?: string;
10
+ measurementId: string;
11
11
  }
12
12
  export interface TernSecureOptions {
13
13
  environment?: 'development' | 'production';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tern-secure/nextjs",
3
- "version": "1.7.4",
3
+ "version": "1.7.6",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org/"