@tern-secure/nextjs 3.1.18 → 3.1.20
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.
- package/dist/app-router/client/client-init.cjs +21 -0
- package/dist/app-router/client/client-init.cjs.map +1 -0
- package/dist/app-router/client/client-init.d.cts +9 -0
- package/dist/app-router/client/client-init.d.ts +9 -0
- package/dist/app-router/client/client-init.js +4 -0
- package/dist/app-router/client/client-init.js.map +1 -0
- package/dist/app-router/client/config.cjs +16 -0
- package/dist/app-router/client/config.cjs.map +1 -0
- package/dist/app-router/client/config.d.cts +2 -0
- package/dist/app-router/client/config.d.ts +2 -0
- package/dist/app-router/client/config.js +3 -0
- package/dist/app-router/client/config.js.map +1 -0
- package/dist/app-router/client/index.cjs +47 -0
- package/dist/app-router/client/index.cjs.map +1 -0
- package/dist/app-router/client/index.d.cts +24 -0
- package/dist/app-router/client/index.d.ts +24 -0
- package/dist/app-router/client/index.js +6 -0
- package/dist/app-router/client/index.js.map +1 -0
- package/dist/app-router/server/index.cjs +12 -0
- package/dist/app-router/server/index.cjs.map +1 -0
- package/dist/app-router/server/index.d.cts +9 -0
- package/dist/app-router/server/index.d.ts +9 -0
- package/dist/app-router/server/index.js +3 -0
- package/dist/app-router/server/index.js.map +1 -0
- package/dist/{esm/chunk-TBRV2VGR.js → chunk-2RTGO3FB.js} +5 -7
- package/dist/chunk-2RTGO3FB.js.map +1 -0
- package/dist/{esm/index.js → chunk-567EYYS7.js} +6 -141
- package/dist/chunk-567EYYS7.js.map +1 -0
- package/dist/chunk-6XOKZ6YG.cjs +17 -0
- package/dist/chunk-6XOKZ6YG.cjs.map +1 -0
- package/dist/chunk-7TODKHXS.cjs +229 -0
- package/dist/chunk-7TODKHXS.cjs.map +1 -0
- package/dist/chunk-ANTUVB2P.cjs +26 -0
- package/dist/chunk-ANTUVB2P.cjs.map +1 -0
- package/dist/chunk-PLJ3DA5F.js +45 -0
- package/dist/chunk-PLJ3DA5F.js.map +1 -0
- package/dist/chunk-R3PDNT2L.js +22 -0
- package/dist/chunk-R3PDNT2L.js.map +1 -0
- package/dist/chunk-V2REFIUV.js +24 -0
- package/dist/chunk-V2REFIUV.js.map +1 -0
- package/dist/chunk-VNNJ5ANT.cjs +27 -0
- package/dist/chunk-VNNJ5ANT.cjs.map +1 -0
- package/dist/chunk-WR6O4YMW.cjs +44 -0
- package/dist/chunk-WR6O4YMW.cjs.map +1 -0
- package/dist/chunk-YMR72FHE.cjs +52 -0
- package/dist/chunk-YMR72FHE.cjs.map +1 -0
- package/dist/chunk-YSFNR6DO.js +15 -0
- package/dist/chunk-YSFNR6DO.js.map +1 -0
- package/dist/components/index.cjs +16 -0
- package/dist/components/index.cjs.map +1 -0
- package/dist/components/index.d.cts +25 -0
- package/dist/components/index.d.ts +25 -0
- package/dist/components/index.js +7 -0
- package/dist/components/index.js.map +1 -0
- package/dist/config-CYswigMN.d.cts +30 -0
- package/dist/config-CYswigMN.d.ts +30 -0
- package/dist/index.cjs +114 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +16 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.js +70 -0
- package/dist/index.js.map +1 -0
- package/dist/ternSecureClientProvider-DXLMGG2U.cjs +12 -0
- package/dist/ternSecureClientProvider-DXLMGG2U.cjs.map +1 -0
- package/dist/ternSecureClientProvider-OJMAWZZ2.js +3 -0
- package/dist/{esm/ternSecureClientProvider-TNPPV4DR.js.map → ternSecureClientProvider-OJMAWZZ2.js.map} +1 -1
- package/package.json +1 -1
- package/dist/cjs/index.cjs +0 -491
- package/dist/cjs/index.cjs.map +0 -1
- package/dist/esm/chunk-TBRV2VGR.js.map +0 -1
- package/dist/esm/index.d.ts +0 -81
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/ternSecureClientProvider-TNPPV4DR.js +0 -3
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkANTUVB2P_cjs = require('../../chunk-ANTUVB2P.cjs');
|
|
4
|
+
require('../../chunk-VNNJ5ANT.cjs');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Object.defineProperty(exports, "TernSecureAuth", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function () { return chunkANTUVB2P_cjs.TernSecureAuth; }
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "TernSecureFirestore", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () { return chunkANTUVB2P_cjs.TernSecureFirestore; }
|
|
15
|
+
});
|
|
16
|
+
Object.defineProperty(exports, "TernSecureStorage", {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: function () { return chunkANTUVB2P_cjs.TernSecureStorage; }
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=client-init.cjs.map
|
|
21
|
+
//# sourceMappingURL=client-init.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"client-init.cjs"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as _firebase_storage from '@firebase/storage';
|
|
2
|
+
import * as _firebase_firestore from '@firebase/firestore';
|
|
3
|
+
import * as _firebase_auth from '@firebase/auth';
|
|
4
|
+
|
|
5
|
+
declare const TernSecureAuth: () => _firebase_auth.Auth;
|
|
6
|
+
declare const TernSecureFirestore: () => _firebase_firestore.Firestore;
|
|
7
|
+
declare const TernSecureStorage: () => _firebase_storage.FirebaseStorage;
|
|
8
|
+
|
|
9
|
+
export { TernSecureAuth, TernSecureFirestore, TernSecureStorage };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as _firebase_storage from '@firebase/storage';
|
|
2
|
+
import * as _firebase_firestore from '@firebase/firestore';
|
|
3
|
+
import * as _firebase_auth from '@firebase/auth';
|
|
4
|
+
|
|
5
|
+
declare const TernSecureAuth: () => _firebase_auth.Auth;
|
|
6
|
+
declare const TernSecureFirestore: () => _firebase_firestore.Firestore;
|
|
7
|
+
declare const TernSecureStorage: () => _firebase_storage.FirebaseStorage;
|
|
8
|
+
|
|
9
|
+
export { TernSecureAuth, TernSecureFirestore, TernSecureStorage };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"client-init.js"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkVNNJ5ANT_cjs = require('../../chunk-VNNJ5ANT.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "loadFireConfig", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () { return chunkVNNJ5ANT_cjs.loadFireConfig; }
|
|
10
|
+
});
|
|
11
|
+
Object.defineProperty(exports, "validateConfig", {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: function () { return chunkVNNJ5ANT_cjs.validateConfig; }
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=config.cjs.map
|
|
16
|
+
//# sourceMappingURL=config.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"config.cjs"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"config.js"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunk6XOKZ6YG_cjs = require('../../chunk-6XOKZ6YG.cjs');
|
|
4
|
+
var chunkANTUVB2P_cjs = require('../../chunk-ANTUVB2P.cjs');
|
|
5
|
+
var chunkVNNJ5ANT_cjs = require('../../chunk-VNNJ5ANT.cjs');
|
|
6
|
+
var chunkWR6O4YMW_cjs = require('../../chunk-WR6O4YMW.cjs');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
Object.defineProperty(exports, "signInWithEmail", {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () { return chunk6XOKZ6YG_cjs.signInWithEmail; }
|
|
13
|
+
});
|
|
14
|
+
Object.defineProperty(exports, "TernSecureAuth", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function () { return chunkANTUVB2P_cjs.TernSecureAuth; }
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "TernSecureFirestore", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () { return chunkANTUVB2P_cjs.TernSecureFirestore; }
|
|
21
|
+
});
|
|
22
|
+
Object.defineProperty(exports, "TernSecureStorage", {
|
|
23
|
+
enumerable: true,
|
|
24
|
+
get: function () { return chunkANTUVB2P_cjs.TernSecureStorage; }
|
|
25
|
+
});
|
|
26
|
+
Object.defineProperty(exports, "loadFireConfig", {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
get: function () { return chunkVNNJ5ANT_cjs.loadFireConfig; }
|
|
29
|
+
});
|
|
30
|
+
Object.defineProperty(exports, "validateConfig", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function () { return chunkVNNJ5ANT_cjs.validateConfig; }
|
|
33
|
+
});
|
|
34
|
+
Object.defineProperty(exports, "TernSecureClientProvider", {
|
|
35
|
+
enumerable: true,
|
|
36
|
+
get: function () { return chunkWR6O4YMW_cjs.TernSecureClientProvider; }
|
|
37
|
+
});
|
|
38
|
+
Object.defineProperty(exports, "TernSecureContext", {
|
|
39
|
+
enumerable: true,
|
|
40
|
+
get: function () { return chunkWR6O4YMW_cjs.TernSecureContext; }
|
|
41
|
+
});
|
|
42
|
+
Object.defineProperty(exports, "useTernSecure", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function () { return chunkWR6O4YMW_cjs.useTernSecure; }
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=index.cjs.map
|
|
47
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.cjs"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export { TernSecureAuth, TernSecureFirestore, TernSecureStorage } from './client-init.cjs';
|
|
2
|
+
import { UserCredential } from 'firebase/auth';
|
|
3
|
+
import { T as TernSecureState } from '../../config-CYswigMN.cjs';
|
|
4
|
+
export { l as loadFireConfig, v as validateConfig } from '../../config-CYswigMN.cjs';
|
|
5
|
+
import React__default from 'react';
|
|
6
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
7
|
+
import '@firebase/storage';
|
|
8
|
+
import '@firebase/firestore';
|
|
9
|
+
import '@firebase/auth';
|
|
10
|
+
|
|
11
|
+
interface SignInCredentials {
|
|
12
|
+
email: string;
|
|
13
|
+
password: string;
|
|
14
|
+
}
|
|
15
|
+
declare function signInWithEmail({ email, password }: SignInCredentials): Promise<UserCredential>;
|
|
16
|
+
|
|
17
|
+
declare const TernSecureContext: React__default.Context<[TernSecureState, React__default.Dispatch<React__default.SetStateAction<TernSecureState>>]>;
|
|
18
|
+
declare const useTernSecure: (hookname?: string) => [TernSecureState, React__default.Dispatch<React__default.SetStateAction<TernSecureState>>];
|
|
19
|
+
|
|
20
|
+
declare function TernSecureClientProvider({ children }: {
|
|
21
|
+
children: React__default.ReactNode;
|
|
22
|
+
}): react_jsx_runtime.JSX.Element;
|
|
23
|
+
|
|
24
|
+
export { type SignInCredentials, TernSecureClientProvider, TernSecureContext, signInWithEmail, useTernSecure };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export { TernSecureAuth, TernSecureFirestore, TernSecureStorage } from './client-init.js';
|
|
2
|
+
import { UserCredential } from 'firebase/auth';
|
|
3
|
+
import { T as TernSecureState } from '../../config-CYswigMN.js';
|
|
4
|
+
export { l as loadFireConfig, v as validateConfig } from '../../config-CYswigMN.js';
|
|
5
|
+
import React__default from 'react';
|
|
6
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
7
|
+
import '@firebase/storage';
|
|
8
|
+
import '@firebase/firestore';
|
|
9
|
+
import '@firebase/auth';
|
|
10
|
+
|
|
11
|
+
interface SignInCredentials {
|
|
12
|
+
email: string;
|
|
13
|
+
password: string;
|
|
14
|
+
}
|
|
15
|
+
declare function signInWithEmail({ email, password }: SignInCredentials): Promise<UserCredential>;
|
|
16
|
+
|
|
17
|
+
declare const TernSecureContext: React__default.Context<[TernSecureState, React__default.Dispatch<React__default.SetStateAction<TernSecureState>>]>;
|
|
18
|
+
declare const useTernSecure: (hookname?: string) => [TernSecureState, React__default.Dispatch<React__default.SetStateAction<TernSecureState>>];
|
|
19
|
+
|
|
20
|
+
declare function TernSecureClientProvider({ children }: {
|
|
21
|
+
children: React__default.ReactNode;
|
|
22
|
+
}): react_jsx_runtime.JSX.Element;
|
|
23
|
+
|
|
24
|
+
export { type SignInCredentials, TernSecureClientProvider, TernSecureContext, signInWithEmail, useTernSecure };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { signInWithEmail } from '../../chunk-YSFNR6DO.js';
|
|
2
|
+
export { TernSecureAuth, TernSecureFirestore, TernSecureStorage } from '../../chunk-R3PDNT2L.js';
|
|
3
|
+
export { loadFireConfig, validateConfig } from '../../chunk-V2REFIUV.js';
|
|
4
|
+
export { TernSecureClientProvider, TernSecureContext, useTernSecure } from '../../chunk-2RTGO3FB.js';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkYMR72FHE_cjs = require('../../chunk-YMR72FHE.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "TernSecureProvider", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () { return chunkYMR72FHE_cjs.TernSecureProvider; }
|
|
10
|
+
});
|
|
11
|
+
//# sourceMappingURL=index.cjs.map
|
|
12
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.cjs"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import React__default, { ReactNode } from 'react';
|
|
3
|
+
|
|
4
|
+
interface TernSecureProviderProps {
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
}
|
|
7
|
+
declare function TernSecureProvider({ children }: TernSecureProviderProps): react_jsx_runtime.JSX.Element | (string | number | React__default.ReactElement<any, string | React__default.JSXElementConstructor<any>> | Iterable<React__default.ReactNode>)[] | null | undefined;
|
|
8
|
+
|
|
9
|
+
export { TernSecureProvider };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import React__default, { ReactNode } from 'react';
|
|
3
|
+
|
|
4
|
+
interface TernSecureProviderProps {
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
}
|
|
7
|
+
declare function TernSecureProvider({ children }: TernSecureProviderProps): react_jsx_runtime.JSX.Element | (string | number | React__default.ReactElement<any, string | React__default.JSXElementConstructor<any>> | Iterable<React__default.ReactNode>)[] | null | undefined;
|
|
8
|
+
|
|
9
|
+
export { TernSecureProvider };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
import React2__default, { useState } from 'react';
|
|
1
|
+
import React, { useState } from 'react';
|
|
3
2
|
import { jsx } from 'react/jsx-runtime';
|
|
4
3
|
|
|
5
4
|
/* eslint-disable */
|
|
6
5
|
|
|
7
|
-
globalThis.React = React2;
|
|
8
6
|
var initialState = {
|
|
9
7
|
firebase: {
|
|
10
8
|
initialized: false,
|
|
@@ -17,10 +15,10 @@ var initialState = {
|
|
|
17
15
|
isSignedIn: false
|
|
18
16
|
}
|
|
19
17
|
};
|
|
20
|
-
var TernSecureContext =
|
|
18
|
+
var TernSecureContext = React.createContext([initialState, () => {
|
|
21
19
|
}]);
|
|
22
20
|
var useTernSecure = (hookname) => {
|
|
23
|
-
const context =
|
|
21
|
+
const context = React.useContext(TernSecureContext);
|
|
24
22
|
if (!context) {
|
|
25
23
|
throw new Error(
|
|
26
24
|
`${hookname} must be used within TernSecureProvider`
|
|
@@ -34,5 +32,5 @@ function TernSecureClientProvider({ children }) {
|
|
|
34
32
|
}
|
|
35
33
|
|
|
36
34
|
export { TernSecureClientProvider, TernSecureContext, useTernSecure };
|
|
37
|
-
//# sourceMappingURL=chunk-
|
|
38
|
-
//# sourceMappingURL=chunk-
|
|
35
|
+
//# sourceMappingURL=chunk-2RTGO3FB.js.map
|
|
36
|
+
//# sourceMappingURL=chunk-2RTGO3FB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/app-router/client/providers/ternSecureContext.tsx","../src/app-router/client/providers/ternSecureClientProvider.tsx"],"names":[],"mappings":";;;;;AAKA,IAAM,YAAgC,GAAA;AAAA,EACpC,QAAU,EAAA;AAAA,IACR,WAAa,EAAA,KAAA;AAAA,IACb,KAAO,EAAA;AAAA,GACT;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,IAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,IACT,KAAO,EAAA,IAAA;AAAA,IACP,UAAY,EAAA;AAAA;AAEhB,CAAA;AAEA,IAAM,iBAAoB,GAAA,KAAA,CAAM,aAAwF,CAAA,CAAC,cAAc,MAAM;AAAC,CAAC,CAAC;AAE1I,IAAA,aAAA,GAAgB,CAAC,QAAsB,KAAA;AAC3C,EAAM,MAAA,OAAA,GAAU,KAAM,CAAA,UAAA,CAAW,iBAAiB,CAAA;AAClD,EAAA,IAAI,CAAC,OAAS,EAAA;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,GAAG,QAAQ,CAAA,uCAAA;AAAA,KAAyC;AAAA;AAExD,EAAO,OAAA,OAAA;AACT;ACtBO,SAAS,wBAAA,CAAyB,EAAE,QAAA,EAA2C,EAAA;AACpF,EAAM,MAAA,eAAA,GAAkB,SAAS,YAAY,CAAA;AAE7C,EAAA,2BACG,iBAAkB,CAAA,QAAA,EAAlB,EAA2B,KAAA,EAAO,iBAChC,QACH,EAAA,CAAA;AAEJ","file":"chunk-2RTGO3FB.js","sourcesContent":["'use client'\r\n\r\nimport React from 'react'\r\nimport { TernSecureState } from '../../../types'\r\n\r\nconst initialState: TernSecureState = {\r\n firebase: {\r\n initialized: false,\r\n error: null\r\n },\r\n auth: {\r\n user: null,\r\n loading: true,\r\n error: null,\r\n isSignedIn: false\r\n }\r\n}\r\n\r\nconst TernSecureContext = React.createContext<[TernSecureState, React.Dispatch<React.SetStateAction<TernSecureState>>]>([initialState, () => {}])\r\n\r\nconst useTernSecure = (hookname?: string) => {\r\n const context = React.useContext(TernSecureContext)\r\n if (!context) {\r\n throw new Error(\r\n `${hookname} must be used within TernSecureProvider`)\r\n }\r\n return context\r\n}\r\n\r\nexport {\r\n TernSecureContext,\r\n useTernSecure,\r\n initialState\r\n}","'use client'\r\n\r\nimport React, { useState } from 'react'\r\nimport { TernSecureContext, initialState } from './ternSecureContext'\r\n\r\nexport function TernSecureClientProvider({ children }: { children: React.ReactNode }) {\r\n const stateAndUpdater = useState(initialState)\r\n\r\n return (\r\n <TernSecureContext.Provider value={stateAndUpdater}>\r\n {children}\r\n </TernSecureContext.Provider>\r\n )\r\n}"]}
|
|
@@ -1,144 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
import { getAuth, setPersistence, browserSessionPersistence, signInWithEmailAndPassword } from 'firebase/auth';
|
|
5
|
-
import { getFirestore } from 'firebase/firestore';
|
|
6
|
-
import { getStorage } from 'firebase/storage';
|
|
7
|
-
import React, { useEffect, useState } from 'react';
|
|
8
|
-
import dynamic from 'next/dynamic';
|
|
9
|
-
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
1
|
+
import { signInWithEmail } from './chunk-YSFNR6DO.js';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
10
4
|
|
|
11
5
|
/* eslint-disable */
|
|
12
6
|
|
|
13
|
-
// src/app-router/client/config.ts
|
|
14
|
-
var loadFireConfig = () => ({
|
|
15
|
-
apiKey: process.env.NEXT_PUBLIC_FIREBASE_API_KEY,
|
|
16
|
-
authDomain: process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN,
|
|
17
|
-
projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID,
|
|
18
|
-
storageBucket: process.env.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET,
|
|
19
|
-
messagingSenderId: process.env.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID,
|
|
20
|
-
appId: process.env.NEXT_PUBLIC_FIREBASE_APP_ID,
|
|
21
|
-
measurementId: process.env.NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID
|
|
22
|
-
});
|
|
23
|
-
var validateConfig = (config) => {
|
|
24
|
-
Object.entries(config).forEach(([key, value]) => {
|
|
25
|
-
if (!value) {
|
|
26
|
-
throw new Error(`Missing environment variable: NEXT_PUBLIC_FIREBASE_${key.toUpperCase()}`);
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
return config;
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
// src/app-router/client/client-init.ts
|
|
33
|
-
var app = (() => {
|
|
34
|
-
const config = validateConfig(loadFireConfig());
|
|
35
|
-
return getApps().length ? getApps()[0] : initializeApp(config);
|
|
36
|
-
})();
|
|
37
|
-
var auth = getAuth(app);
|
|
38
|
-
setPersistence(auth, browserSessionPersistence);
|
|
39
|
-
var firestore = getFirestore(app);
|
|
40
|
-
var storage = getStorage(app);
|
|
41
|
-
var TernSecureAuth = () => auth;
|
|
42
|
-
var TernSecureFirestore = () => firestore;
|
|
43
|
-
var TernSecureStorage = () => storage;
|
|
44
|
-
async function signInWithEmail({
|
|
45
|
-
email,
|
|
46
|
-
password
|
|
47
|
-
}) {
|
|
48
|
-
const auth2 = TernSecureAuth();
|
|
49
|
-
return signInWithEmailAndPassword(auth2, email, password);
|
|
50
|
-
}
|
|
51
|
-
var TernSecureClientProvider2 = dynamic(
|
|
52
|
-
() => import('./ternSecureClientProvider-TNPPV4DR.js').then((mod) => mod.TernSecureClientProvider),
|
|
53
|
-
{
|
|
54
|
-
ssr: false
|
|
55
|
-
//loading: () => null // Return null or a loading indicator
|
|
56
|
-
}
|
|
57
|
-
);
|
|
58
|
-
function TernSecureProvider({ children }) {
|
|
59
|
-
const isRootLayout = React.Children.toArray(children).some(
|
|
60
|
-
(child) => React.isValidElement(child) && child.type === "html"
|
|
61
|
-
);
|
|
62
|
-
if (isRootLayout) {
|
|
63
|
-
return React.Children.map(children, (child) => {
|
|
64
|
-
if (React.isValidElement(child) && child.type === "html") {
|
|
65
|
-
return React.cloneElement(
|
|
66
|
-
child,
|
|
67
|
-
{},
|
|
68
|
-
React.Children.map(child.props.children, (bodyChild) => {
|
|
69
|
-
if (React.isValidElement(bodyChild) && bodyChild.type === "body") {
|
|
70
|
-
const bodyProps = bodyChild.props;
|
|
71
|
-
return React.cloneElement(
|
|
72
|
-
bodyChild,
|
|
73
|
-
{},
|
|
74
|
-
/* @__PURE__ */ jsx(TernSecureClientProvider2, { children: bodyProps.children })
|
|
75
|
-
);
|
|
76
|
-
}
|
|
77
|
-
return bodyChild;
|
|
78
|
-
})
|
|
79
|
-
);
|
|
80
|
-
}
|
|
81
|
-
return child;
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
return /* @__PURE__ */ jsx(TernSecureClientProvider2, { children });
|
|
85
|
-
}
|
|
86
|
-
function useAuth() {
|
|
87
|
-
const [state, setState] = useTernSecure("useAuth");
|
|
88
|
-
useEffect(() => {
|
|
89
|
-
try {
|
|
90
|
-
const auth2 = TernSecureAuth();
|
|
91
|
-
setState((prev) => ({
|
|
92
|
-
...prev,
|
|
93
|
-
firebase: {
|
|
94
|
-
initialized: true,
|
|
95
|
-
error: null
|
|
96
|
-
}
|
|
97
|
-
}));
|
|
98
|
-
const unsubscribe = auth2.onAuthStateChanged(
|
|
99
|
-
(user) => {
|
|
100
|
-
setState((prev) => ({
|
|
101
|
-
...prev,
|
|
102
|
-
auth: {
|
|
103
|
-
user,
|
|
104
|
-
loading: false,
|
|
105
|
-
error: null,
|
|
106
|
-
isSignedIn: !!user
|
|
107
|
-
}
|
|
108
|
-
}));
|
|
109
|
-
},
|
|
110
|
-
(error) => {
|
|
111
|
-
setState((prev) => ({
|
|
112
|
-
...prev,
|
|
113
|
-
auth: {
|
|
114
|
-
user: null,
|
|
115
|
-
loading: false,
|
|
116
|
-
error,
|
|
117
|
-
isSignedIn: false
|
|
118
|
-
}
|
|
119
|
-
}));
|
|
120
|
-
}
|
|
121
|
-
);
|
|
122
|
-
return () => unsubscribe();
|
|
123
|
-
} catch (error) {
|
|
124
|
-
setState((prev) => ({
|
|
125
|
-
...prev,
|
|
126
|
-
firebase: {
|
|
127
|
-
initialized: false,
|
|
128
|
-
error
|
|
129
|
-
},
|
|
130
|
-
auth: {
|
|
131
|
-
user: null,
|
|
132
|
-
loading: false,
|
|
133
|
-
error,
|
|
134
|
-
isSignedIn: false
|
|
135
|
-
}
|
|
136
|
-
}));
|
|
137
|
-
}
|
|
138
|
-
}, []);
|
|
139
|
-
return state.auth;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
7
|
// src/utils/create-styles.ts
|
|
143
8
|
var PREFIX = "tern";
|
|
144
9
|
var styleInjection = {
|
|
@@ -357,6 +222,6 @@ function SignIn({
|
|
|
357
222
|
] });
|
|
358
223
|
}
|
|
359
224
|
|
|
360
|
-
export { SignIn
|
|
361
|
-
//# sourceMappingURL=
|
|
362
|
-
//# sourceMappingURL=
|
|
225
|
+
export { SignIn };
|
|
226
|
+
//# sourceMappingURL=chunk-567EYYS7.js.map
|
|
227
|
+
//# sourceMappingURL=chunk-567EYYS7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/create-styles.ts","../src/components/sign-in.tsx"],"names":["styles"],"mappings":"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","file":"chunk-567EYYS7.js","sourcesContent":["'use client'\r\n\r\nconst PREFIX = 'tern'\r\n\r\n// Singleton to track style injection\r\nconst styleInjection = {\r\n isInjected: false,\r\n styleElement: null as HTMLStyleElement | null\r\n}\r\n\r\nexport const defaultClassNames = {\r\n container: `${PREFIX}-container`,\r\n header: `${PREFIX}-header`,\r\n title: `${PREFIX}-title`,\r\n formWrapper: `${PREFIX}-formWrapper`,\r\n formContainer: `${PREFIX}-formContainer`,\r\n form: `${PREFIX}-form`,\r\n label: `${PREFIX}-label`,\r\n input: `${PREFIX}-input`,\r\n button: `${PREFIX}-button`,\r\n error: `${PREFIX}-error`\r\n} as const\r\n\r\n// Create styles once and cache them\r\nfunction createStyleSheet(styles: Record<string, React.CSSProperties>) {\r\n if (typeof window === 'undefined') return defaultClassNames\r\n\r\n // Return early if styles are already injected\r\n if (styleInjection.isInjected) {\r\n return defaultClassNames\r\n }\r\n\r\n // Find existing style element or create new one\r\n let styleElement = document.querySelector<HTMLStyleElement>('[data-tern-secure]')\r\n \r\n if (!styleElement) {\r\n styleElement = document.createElement('style')\r\n styleElement.setAttribute('data-tern-secure', '')\r\n document.head.appendChild(styleElement)\r\n styleInjection.styleElement = styleElement\r\n }\r\n\r\n // Create CSS rules\r\n const cssRules = Object.entries(styles).map(([key, rules]) => {\r\n const className = defaultClassNames[key as keyof typeof defaultClassNames]\r\n const cssProperties = Object.entries(rules).map(([prop, value]) => {\r\n const cssProperty = prop.replace(/([A-Z])/g, '-$1').toLowerCase()\r\n return `${cssProperty}: ${value};`\r\n }).join(' ')\r\n\r\n return `.${className} { ${cssProperties} }`\r\n }).join('\\n')\r\n\r\n // Insert styles only once\r\n styleElement.textContent = cssRules\r\n styleInjection.isInjected = true\r\n\r\n return defaultClassNames\r\n}\r\n\r\n// Style configuration\r\nexport const styleConfig = {\r\n container: {\r\n display: 'flex',\r\n minHeight: '100%',\r\n flex: '1',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n padding: '3rem 1.5rem'\r\n },\r\n header: {\r\n margin: '0 auto',\r\n width: '100%',\r\n maxWidth: '28rem'\r\n },\r\n title: {\r\n marginTop: '1.5rem',\r\n textAlign: 'center',\r\n fontSize: '1.875rem',\r\n fontWeight: '700',\r\n lineHeight: '2.25rem',\r\n letterSpacing: '-0.025em',\r\n color: 'var(--tern-text-primary, #111827)'\r\n },\r\n formWrapper: {\r\n marginTop: '2.5rem',\r\n margin: '0 auto',\r\n width: '100%',\r\n maxWidth: '30rem'\r\n },\r\n formContainer: {\r\n padding: '3rem 1.5rem',\r\n boxShadow: '0 1px 3px 0 rgb(0 0 0 / 0.1)',\r\n borderRadius: '0.5rem',\r\n backgroundColor: 'var(--tern-background, white)'\r\n },\r\n form: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '1rem'\r\n },\r\n label: {\r\n display: 'block',\r\n fontSize: '0.875rem',\r\n fontWeight: '500',\r\n color: 'var(--tern-text-secondary, #374151)'\r\n },\r\n input: {\r\n marginTop: '0.25rem',\r\n display: 'block',\r\n width: '100%',\r\n padding: '0.5rem 0.75rem',\r\n borderRadius: '0.375rem',\r\n border: '1px solid var(--tern-border, #D1D5DB)',\r\n backgroundColor: 'var(--tern-input-background, white)',\r\n color: 'var(--tern-text-primary, #111827)'\r\n },\r\n button: {\r\n display: 'flex',\r\n width: '100%',\r\n justifyContent: 'center',\r\n padding: '0.5rem 1rem',\r\n fontSize: '0.875rem',\r\n fontWeight: '500',\r\n color: 'white',\r\n backgroundColor: 'var(--tern-primary, #2563EB)',\r\n border: 'none',\r\n borderRadius: '0.375rem',\r\n cursor: 'pointer'\r\n },\r\n error: {\r\n color: 'var(--tern-error, #DC2626)',\r\n fontSize: '0.875rem'\r\n }\r\n} as const\r\n\r\n// Export pre-created styles\r\nexport const styles = createStyleSheet(styleConfig)\r\n\r\n","import * as React from 'react'\r\nimport { useState } from 'react'\r\nimport { signInWithEmail } from '../app-router/client'\r\nimport { styles } from '../utils/create-styles'\r\n\r\nexport interface SignInProps {\r\n onSuccess?: () => void\r\n onError?: (error: Error) => void\r\n redirectUrl?: string\r\n className?: string\r\n style?: React.CSSProperties\r\n customStyles?: {\r\n container?: string\r\n header?: string\r\n title?: string\r\n formWrapper?: string\r\n formContainer?: string\r\n form?: string\r\n input?: string\r\n button?: string\r\n errorText?: string\r\n label?: string\r\n }\r\n}\r\n\r\nexport function SignIn({ \r\n onSuccess, \r\n onError, \r\n redirectUrl,\r\n className = '',\r\n style,\r\n customStyles = {}\r\n}: SignInProps) {\r\n const [email, setEmail] = useState('')\r\n const [password, setPassword] = useState('')\r\n const [loading, setLoading] = useState(false)\r\n const [error, setError] = useState('')\r\n\r\n const handleSubmit = async (e: React.FormEvent) => {\r\n e.preventDefault()\r\n setLoading(true)\r\n setError('')\r\n\r\n try {\r\n await signInWithEmail({ email, password })\r\n onSuccess?.()\r\n \r\n if (redirectUrl) {\r\n window.location.href = redirectUrl\r\n }\r\n } catch (err) {\r\n const errorMessage = err instanceof Error ? err.message : 'Failed to sign in'\r\n setError(errorMessage)\r\n onError?.(err instanceof Error ? err : new Error('Failed to sign in'))\r\n } finally {\r\n setLoading(false)\r\n }\r\n }\r\n\r\n return (\r\n <div className={`${styles.container} ${customStyles.container || ''}`} style={style}>\r\n <div className={`${styles.header} ${customStyles.header || ''}`}>\r\n <h2 className={`${styles.title} ${customStyles.title || ''}`}>\r\n Sign in to your account\r\n </h2>\r\n </div>\r\n \r\n <div className={`${styles.formWrapper} ${customStyles.formWrapper || ''}`}>\r\n <div className={`${styles.formContainer} ${customStyles.formContainer || ''}`}>\r\n <form \r\n onSubmit={handleSubmit} \r\n className={`${styles.form} ${customStyles.form || ''} ${className}`}\r\n role=\"form\"\r\n aria-label=\"Sign in form\"\r\n >\r\n {error && (\r\n <div \r\n className={`${styles.error} ${customStyles.errorText || ''}`}\r\n role=\"alert\"\r\n aria-live=\"polite\"\r\n >\r\n {error}\r\n </div>\r\n )}\r\n <div>\r\n <label htmlFor=\"email\" className={`${styles.label} ${customStyles.label || ''}`}>\r\n Email\r\n </label>\r\n <input\r\n id=\"email\"\r\n type=\"email\"\r\n value={email}\r\n onChange={(e) => setEmail(e.target.value)}\r\n placeholder=\"Enter your email\"\r\n required\r\n className={`${styles.input} ${customStyles.input || ''}`}\r\n disabled={loading}\r\n aria-required=\"true\"\r\n aria-invalid={!!error}\r\n />\r\n </div>\r\n <div>\r\n <label htmlFor=\"password\" className={`${styles.label} ${customStyles.label || ''}`}>\r\n Password\r\n </label>\r\n <input\r\n id=\"password\"\r\n type=\"password\"\r\n value={password}\r\n onChange={(e) => setPassword(e.target.value)}\r\n placeholder=\"Enter your password\"\r\n required\r\n className={`${styles.input} ${customStyles.input || ''}`}\r\n disabled={loading}\r\n aria-required=\"true\"\r\n aria-invalid={!!error}\r\n />\r\n </div>\r\n <button \r\n type=\"submit\" \r\n disabled={loading}\r\n className={`${styles.button} ${customStyles.button || ''}`}\r\n data-testid=\"sign-in-submit\"\r\n >\r\n {loading ? 'Signing in...' : 'Sign in'}\r\n </button>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkANTUVB2P_cjs = require('./chunk-ANTUVB2P.cjs');
|
|
4
|
+
var auth = require('firebase/auth');
|
|
5
|
+
|
|
6
|
+
/* eslint-disable */
|
|
7
|
+
async function signInWithEmail({
|
|
8
|
+
email,
|
|
9
|
+
password
|
|
10
|
+
}) {
|
|
11
|
+
const auth$1 = chunkANTUVB2P_cjs.TernSecureAuth();
|
|
12
|
+
return auth.signInWithEmailAndPassword(auth$1, email, password);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
exports.signInWithEmail = signInWithEmail;
|
|
16
|
+
//# sourceMappingURL=chunk-6XOKZ6YG.cjs.map
|
|
17
|
+
//# sourceMappingURL=chunk-6XOKZ6YG.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/app-router/client/auth.ts"],"names":["auth","TernSecureAuth","signInWithEmailAndPassword"],"mappings":";;;;;;AAQA,eAAsB,eAAgB,CAAA;AAAA,EACpC,KAAA;AAAA,EACA;AACF,CAA+C,EAAA;AAC7C,EAAA,MAAMA,SAAOC,gCAAe,EAAA;AAC5B,EAAO,OAAAC,+BAAA,CAA2BF,MAAM,EAAA,KAAA,EAAO,QAAQ,CAAA;AACzD","file":"chunk-6XOKZ6YG.cjs","sourcesContent":["import { TernSecureAuth } from './index'\r\nimport { signInWithEmailAndPassword, type UserCredential } from 'firebase/auth'\r\n\r\nexport interface SignInCredentials {\r\n email: string\r\n password: string\r\n}\r\n\r\nexport async function signInWithEmail({ \r\n email, \r\n password \r\n}: SignInCredentials): Promise<UserCredential> {\r\n const auth = TernSecureAuth()\r\n return signInWithEmailAndPassword(auth, email, password)\r\n} "]}
|