@tern-secure/nextjs 1.9.4 → 1.9.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,6 +1,4 @@
1
1
  import React from 'react';
2
- import { TernSecureState } from '../../../types/ternsecure';
3
- export declare const useTernSecure: () => TernSecureState;
4
2
  interface TernSecureClientProps {
5
3
  children: React.ReactNode;
6
4
  }
@@ -1,96 +1,8 @@
1
1
  'use client';
2
- import React, { createContext, useContext, useEffect, useState } from 'react';
3
- import { getTernSecureAuth } from '../client-init';
4
- // Move context creation inside the client component
5
- const createTernSecureContext = () => {
6
- const initialState = {
7
- firebase: {
8
- initialized: false,
9
- error: null
10
- },
11
- auth: {
12
- user: null,
13
- loading: true,
14
- error: null,
15
- isSignedIn: false
16
- }
17
- };
18
- return createContext(initialState);
19
- };
20
- // Create context lazily only on client side
21
- const TernSecureContext = createTernSecureContext();
22
- export const useTernSecure = () => {
23
- if (typeof window === 'undefined') {
24
- throw new Error('useTernSecure can only be used in client components');
25
- }
26
- const context = useContext(TernSecureContext);
27
- if (!context) {
28
- throw new Error('useTernSecure must be used within TernSecureClientProvider');
29
- }
30
- return context;
31
- };
2
+ import React, { useState } from 'react';
3
+ import { initialState, TernSecureContext } from './ternSecureContext';
32
4
  export function TernSecureClientProvider({ children }) {
33
- const [state, setState] = useState({
34
- firebase: {
35
- initialized: false,
36
- error: null
37
- },
38
- auth: {
39
- user: null,
40
- loading: true,
41
- error: null,
42
- isSignedIn: false
43
- }
44
- });
45
- useEffect(() => {
46
- try {
47
- const auth = getTernSecureAuth();
48
- setState(prev => ({
49
- ...prev,
50
- firebase: {
51
- initialized: true,
52
- error: null
53
- }
54
- }));
55
- const unsubscribe = auth.onAuthStateChanged((user) => {
56
- setState(prev => ({
57
- ...prev,
58
- auth: {
59
- user,
60
- loading: false,
61
- error: null,
62
- isSignedIn: !!user
63
- }
64
- }));
65
- }, (error) => {
66
- setState(prev => ({
67
- ...prev,
68
- auth: {
69
- user: null,
70
- loading: false,
71
- error,
72
- isSignedIn: false
73
- }
74
- }));
75
- });
76
- return () => unsubscribe();
77
- }
78
- catch (error) {
79
- setState(prev => ({
80
- ...prev,
81
- firebase: {
82
- initialized: false,
83
- error: error
84
- },
85
- auth: {
86
- user: null,
87
- loading: false,
88
- error: error,
89
- isSignedIn: false
90
- }
91
- }));
92
- }
93
- }, []);
94
- return (React.createElement(TernSecureContext.Provider, { value: state }, children));
5
+ const stateAndUpdater = useState(initialState);
6
+ return (React.createElement(TernSecureContext.Provider, { value: stateAndUpdater }, children));
95
7
  }
96
8
  //# sourceMappingURL=ternSecureClientProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ternSecureClientProvider.js","sourceRoot":"","sources":["../../../../src/app-router/client/providers/ternSecureClientProvider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAGlD,oDAAoD;AACpD,MAAM,uBAAuB,GAAG,GAAG,EAAE;IACnC,MAAM,YAAY,GAAoB;QACpC,QAAQ,EAAE;YACR,WAAW,EAAE,KAAK;YAClB,KAAK,EAAE,IAAI;SACZ;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,KAAK;SAClB;KACF,CAAA;IAED,OAAO,aAAa,CAAkB,YAAY,CAAC,CAAA;AACrD,CAAC,CAAA;AAED,4CAA4C;AAC5C,MAAM,iBAAiB,GAAG,uBAAuB,EAAE,CAAA;AAEnD,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,EAAE;IAChC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAA;IACxE,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAA;IAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;IAC/E,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAMD,MAAM,UAAU,wBAAwB,CAAC,EAAE,QAAQ,EAAyB;IAC1E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAkB;QAClD,QAAQ,EAAE;YACR,WAAW,EAAE,KAAK;YAClB,KAAK,EAAE,IAAI;SACZ;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,KAAK;SAClB;KACF,CAAC,CAAA;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAA;YAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChB,GAAG,IAAI;gBACP,QAAQ,EAAE;oBACR,WAAW,EAAE,IAAI;oBACjB,KAAK,EAAE,IAAI;iBACZ;aACF,CAAC,CAAC,CAAA;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CACzC,CAAC,IAAI,EAAE,EAAE;gBACP,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAChB,GAAG,IAAI;oBACP,IAAI,EAAE;wBACJ,IAAI;wBACJ,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,IAAI;wBACX,UAAU,EAAE,CAAC,CAAC,IAAI;qBACnB;iBACF,CAAC,CAAC,CAAA;YACL,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;gBACR,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAChB,GAAG,IAAI;oBACP,IAAI,EAAE;wBACJ,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,KAAK;wBACd,KAAK;wBACL,UAAU,EAAE,KAAK;qBAClB;iBACF,CAAC,CAAC,CAAA;YACL,CAAC,CACF,CAAA;YAED,OAAO,GAAG,EAAE,CAAC,WAAW,EAAE,CAAA;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChB,GAAG,IAAI;gBACP,QAAQ,EAAE;oBACR,WAAW,EAAE,KAAK;oBAClB,KAAK,EAAE,KAAc;iBACtB;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,IAAI;oBACV,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAc;oBACrB,UAAU,EAAE,KAAK;iBAClB;aACF,CAAC,CAAC,CAAA;QACL,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,CACL,oBAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,IACrC,QAAQ,CACkB,CAC9B,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"ternSecureClientProvider.js","sourceRoot":"","sources":["../../../../src/app-router/client/providers/ternSecureClientProvider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAQrE,MAAM,UAAU,wBAAwB,CAAC,EAAE,QAAQ,EAAyB;IAC1E,MAAM,eAAe,GAAG,QAAQ,CAAkB,YAAY,CAAC,CAAA;IAE/D,OAAO,CACL,oBAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,eAAe,IAC/C,QAAQ,CACkB,CAC9B,CAAA;AACH,CAAC"}
@@ -1 +1,6 @@
1
- export {};
1
+ import React from 'react';
2
+ import { TernSecureState } from '../../../types/ternsecure';
3
+ declare const TernSecureContext: React.Context<[TernSecureState, React.Dispatch<React.SetStateAction<TernSecureState>>]>;
4
+ declare const useTernSecure: (hookname?: string) => [TernSecureState, React.Dispatch<React.SetStateAction<TernSecureState>>];
5
+ export declare const initialState: TernSecureState;
6
+ export { TernSecureContext, useTernSecure };
@@ -1,10 +1,41 @@
1
- import React from 'react';
2
- const TernSecureContext = React.createContext(null);
3
- const useTernSecure = () => {
4
- const context = React.useContext(TernSecureContext);
5
- if (context === null) {
6
- throw new Error('useAuthState must be used within a TernSecureClientProvider');
1
+ 'use client';
2
+ import { createContext, useContext } from 'react';
3
+ const createTernSecureContext = () => {
4
+ const initialState = {
5
+ firebase: {
6
+ initialized: false,
7
+ error: null
8
+ },
9
+ auth: {
10
+ user: null,
11
+ loading: true,
12
+ error: null,
13
+ isSignedIn: false
14
+ }
15
+ };
16
+ return createContext([initialState, () => { }]);
17
+ };
18
+ // Create context instance only when imported on client
19
+ const TernSecureContext = createTernSecureContext();
20
+ const useTernSecure = (hookname) => {
21
+ const context = useContext(TernSecureContext);
22
+ if (!context) {
23
+ throw new Error(`${hookname} must be used within TernSecureProvider`);
7
24
  }
8
25
  return context;
9
26
  };
27
+ // Export initial state for reuse
28
+ export const initialState = {
29
+ firebase: {
30
+ initialized: false,
31
+ error: null
32
+ },
33
+ auth: {
34
+ user: null,
35
+ loading: true,
36
+ error: null,
37
+ isSignedIn: false
38
+ }
39
+ };
40
+ export { TernSecureContext, useTernSecure };
10
41
  //# sourceMappingURL=ternSecureContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ternSecureContext.js","sourceRoot":"","sources":["../../../../src/app-router/client/providers/ternSecureContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,MAAM,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAAmB,IAAI,CAAC,CAAA;AAErE,MAAO,aAAa,GAAG,GAAG,EAAE;IAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAA;IACnD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;IAChF,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
1
+ {"version":3,"file":"ternSecureContext.js","sourceRoot":"","sources":["../../../../src/app-router/client/providers/ternSecureContext.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAc,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAGxD,MAAM,uBAAuB,GAAG,GAAG,EAAE;IACnC,MAAM,YAAY,GAAoB;QACpC,QAAQ,EAAE;YACR,WAAW,EAAE,KAAK;YAClB,KAAK,EAAE,IAAI;SACZ;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,KAAK;SAClB;KACF,CAAA;IAED,OAAO,aAAa,CAA2E,CAAC,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAA;AAC1H,CAAC,CAAA;AAED,uDAAuD;AACvD,MAAM,iBAAiB,GAAG,uBAAuB,EAAE,CAAA;AAEnD,MAAM,aAAa,GAAG,CAAC,QAAiB,EAAE,EAAE;IAC1C,MAAM,OAAO,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAA;IAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,GAAG,QAAQ,yCAAyC,CAAC,CAAA;IACzD,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,iCAAiC;AACjC,MAAM,CAAC,MAAM,YAAY,GAAoB;IAC3C,QAAQ,EAAE;QACR,WAAW,EAAE,KAAK;QAClB,KAAK,EAAE,IAAI;KACZ;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,KAAK;KAClB;CACF,CAAA;AAED,OAAO,EACL,iBAAiB,EACjB,aAAa,EACd,CAAA"}
@@ -1,6 +1 @@
1
- export declare function useAuth(): {
2
- user: import("@firebase/auth").User | null;
3
- loading: boolean;
4
- error: Error | null;
5
- isSignedIn: boolean;
6
- };
1
+ export declare function useAuth(): import("../types/ternsecure").AuthState;
@@ -1,17 +1,58 @@
1
1
  'use client';
2
- import { useState } from 'react';
2
+ import { useEffect } from 'react';
3
+ import { getTernSecureAuth } from '../app-router/client';
4
+ import { useTernSecure } from '../app-router/client/providers/ternSecureContext';
3
5
  export function useAuth() {
4
- const [authState, setAuthState] = useState({
5
- user: null,
6
- loading: true,
7
- error: null,
8
- isSignedIn: false,
9
- });
10
- return {
11
- user: authState.user,
12
- loading: authState.loading,
13
- error: authState.error,
14
- isSignedIn: authState.isSignedIn,
15
- };
6
+ const [state, setState] = useTernSecure('useAuth');
7
+ useEffect(() => {
8
+ try {
9
+ const auth = getTernSecureAuth(); // This initializes Firebase
10
+ setState(prev => ({
11
+ ...prev,
12
+ firebase: {
13
+ initialized: true,
14
+ error: null
15
+ }
16
+ }));
17
+ const unsubscribe = auth.onAuthStateChanged((user) => {
18
+ setState(prev => ({
19
+ ...prev,
20
+ auth: {
21
+ user,
22
+ loading: false,
23
+ error: null,
24
+ isSignedIn: !!user
25
+ }
26
+ }));
27
+ }, (error) => {
28
+ setState(prev => ({
29
+ ...prev,
30
+ auth: {
31
+ user: null,
32
+ loading: false,
33
+ error,
34
+ isSignedIn: false
35
+ }
36
+ }));
37
+ });
38
+ return () => unsubscribe();
39
+ }
40
+ catch (error) {
41
+ setState(prev => ({
42
+ ...prev,
43
+ firebase: {
44
+ initialized: false,
45
+ error: error
46
+ },
47
+ auth: {
48
+ user: null,
49
+ loading: false,
50
+ error: error,
51
+ isSignedIn: false
52
+ }
53
+ }));
54
+ }
55
+ }, []); // Only run once on mount
56
+ return state.auth;
16
57
  }
17
58
  //# sourceMappingURL=useAuth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAuth.js","sourceRoot":"","sources":["../../src/hooks/useAuth.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAIjC,MAAM,UAAU,OAAO;IACrB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAY;QACpD,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IAGH,OAAO;QACL,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,UAAU,EAAE,SAAS,CAAC,UAAU;KACjC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"useAuth.js","sourceRoot":"","sources":["../../src/hooks/useAuth.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,kDAAkD,CAAA;AAEhF,MAAM,UAAU,OAAO;IACrB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;IAElD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAA,CAAC,4BAA4B;YAC7D,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChB,GAAG,IAAI;gBACP,QAAQ,EAAE;oBACR,WAAW,EAAE,IAAI;oBACjB,KAAK,EAAE,IAAI;iBACZ;aACF,CAAC,CAAC,CAAA;YAEH,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CACzC,CAAC,IAAI,EAAE,EAAE;gBACP,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAChB,GAAG,IAAI;oBACP,IAAI,EAAE;wBACJ,IAAI;wBACJ,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,IAAI;wBACX,UAAU,EAAE,CAAC,CAAC,IAAI;qBACnB;iBACF,CAAC,CAAC,CAAA;YACL,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;gBACR,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAChB,GAAG,IAAI;oBACP,IAAI,EAAE;wBACJ,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,KAAK;wBACd,KAAK;wBACL,UAAU,EAAE,KAAK;qBAClB;iBACF,CAAC,CAAC,CAAA;YACL,CAAC,CACF,CAAA;YAED,OAAO,GAAG,EAAE,CAAC,WAAW,EAAE,CAAA;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChB,GAAG,IAAI;gBACP,QAAQ,EAAE;oBACR,WAAW,EAAE,KAAK;oBAClB,KAAK,EAAE,KAAc;iBACtB;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,IAAI;oBACV,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAc;oBACrB,UAAU,EAAE,KAAK;iBAClB;aACF,CAAC,CAAC,CAAA;QACL,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAA,CAAC,yBAAyB;IAEhC,OAAO,KAAK,CAAC,IAAI,CAAA;AACnB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tern-secure/nextjs",
3
- "version": "1.9.4",
3
+ "version": "1.9.6",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org/"