@tern-secure/nextjs 3.1.83 → 3.1.84
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/cjs/app-router/client/TernSecureProvider.js +48 -79
- package/dist/cjs/app-router/client/TernSecureProvider.js.map +1 -1
- package/dist/cjs/app-router/server/TernSecureServerProvider.js +40 -106
- package/dist/cjs/app-router/server/TernSecureServerProvider.js.map +1 -1
- package/dist/cjs/app-router/server/auth.js +28 -62
- package/dist/cjs/app-router/server/auth.js.map +1 -1
- package/dist/cjs/boundary/TernSecureCtx.js +37 -14
- package/dist/cjs/boundary/TernSecureCtx.js.map +1 -1
- package/dist/cjs/boundary/hooks/useAuth.js +30 -80
- package/dist/cjs/boundary/hooks/useAuth.js.map +1 -1
- package/dist/cjs/components/sign-in.js +49 -208
- package/dist/cjs/components/sign-in.js.map +1 -1
- package/dist/cjs/errors.js +32 -10
- package/dist/cjs/errors.js.map +1 -1
- package/dist/cjs/index.js +45 -383
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types.js +16 -3
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/utils/client-init.js +42 -64
- package/dist/cjs/utils/client-init.js.map +1 -1
- package/dist/cjs/utils/config.js +34 -11
- package/dist/cjs/utils/config.js.map +1 -1
- package/dist/cjs/utils/create-styles.js +37 -13
- package/dist/cjs/utils/create-styles.js.map +1 -1
- package/dist/esm/app-router/client/TernSecureProvider.js +7 -81
- package/dist/esm/app-router/client/TernSecureProvider.js.map +1 -1
- package/dist/esm/app-router/server/TernSecureServerProvider.js +5 -115
- package/dist/esm/app-router/server/TernSecureServerProvider.js.map +1 -1
- package/dist/esm/app-router/server/auth.js +3 -61
- package/dist/esm/app-router/server/auth.js.map +1 -1
- package/dist/esm/boundary/TernSecureCtx.js +4 -6
- package/dist/esm/boundary/TernSecureCtx.js.map +1 -1
- package/dist/esm/boundary/hooks/useAuth.js +4 -89
- package/dist/esm/boundary/hooks/useAuth.js.map +1 -1
- package/dist/esm/components/sign-in.js +3 -190
- package/dist/esm/components/sign-in.js.map +1 -1
- package/dist/esm/errors.js +3 -4
- package/dist/esm/errors.js.map +1 -1
- package/dist/esm/index.js +7 -398
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utils/client-init.js +9 -54
- package/dist/esm/utils/client-init.js.map +1 -1
- package/dist/esm/utils/config.js +3 -4
- package/dist/esm/utils/config.js.map +1 -1
- package/dist/esm/utils/create-styles.js +5 -7
- package/dist/esm/utils/create-styles.js.map +1 -1
- package/dist/types/app-router/client/TernSecureProvider.d.ts +15 -0
- package/dist/types/app-router/client/TernSecureProvider.d.ts.map +1 -0
- package/dist/{cjs → types}/app-router/server/TernSecureServerProvider.d.ts +5 -7
- package/dist/types/app-router/server/TernSecureServerProvider.d.ts.map +1 -0
- package/dist/types/app-router/server/auth.d.ts +7 -0
- package/dist/types/app-router/server/auth.d.ts.map +1 -0
- package/dist/types/boundary/TernSecureCtx.d.ts +12 -0
- package/dist/types/boundary/TernSecureCtx.d.ts.map +1 -0
- package/dist/types/boundary/hooks/useAuth.d.ts +3 -0
- package/dist/types/boundary/hooks/useAuth.d.ts.map +1 -0
- package/dist/{cjs → types}/components/sign-in.d.ts +3 -6
- package/dist/types/components/sign-in.d.ts.map +1 -0
- package/dist/{cjs → types}/errors.d.ts +3 -4
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/{cjs → types}/types.d.ts +5 -7
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/utils/client-init.d.ts +4 -0
- package/dist/types/utils/client-init.d.ts.map +1 -0
- package/dist/{cjs → types}/utils/config.d.ts +5 -8
- package/dist/types/utils/config.d.ts.map +1 -0
- package/dist/{cjs → types}/utils/create-styles.d.ts +4 -5
- package/dist/types/utils/create-styles.d.ts.map +1 -0
- package/package.json +5 -5
- package/dist/cjs/app-router/client/TernSecureProvider.d.ts +0 -17
- package/dist/cjs/app-router/server/auth.d.ts +0 -9
- package/dist/cjs/boundary/TernSecureCtx.d.ts +0 -15
- package/dist/cjs/boundary/hooks/useAuth.d.ts +0 -7
- package/dist/cjs/index.d.ts +0 -19
- package/dist/cjs/utils/client-init.d.ts +0 -9
- package/dist/esm/app-router/client/TernSecureProvider.d.mts +0 -17
- package/dist/esm/app-router/server/TernSecureServerProvider.d.mts +0 -30
- package/dist/esm/app-router/server/auth.d.mts +0 -9
- package/dist/esm/boundary/TernSecureCtx.d.mts +0 -15
- package/dist/esm/boundary/hooks/useAuth.d.mts +0 -7
- package/dist/esm/components/sign-in.d.mts +0 -25
- package/dist/esm/errors.d.mts +0 -10
- package/dist/esm/index.d.mts +0 -19
- package/dist/esm/types.d.mts +0 -49
- package/dist/esm/utils/client-init.d.mts +0 -9
- package/dist/esm/utils/config.d.mts +0 -22
- package/dist/esm/utils/create-styles.d.mts +0 -100
|
@@ -1,84 +1,52 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
13
|
-
|
|
14
|
-
// src/utils/config.ts
|
|
15
|
-
var loadFireConfig = () => ({
|
|
16
|
-
apiKey: process.env.NEXT_PUBLIC_FIREBASE_API_KEY || "",
|
|
17
|
-
authDomain: process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN || "",
|
|
18
|
-
projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID || "",
|
|
19
|
-
storageBucket: process.env.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET || "",
|
|
20
|
-
messagingSenderId: process.env.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID || "",
|
|
21
|
-
appId: process.env.NEXT_PUBLIC_FIREBASE_APP_ID || "",
|
|
22
|
-
measurementId: process.env.NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID || void 0
|
|
23
|
-
});
|
|
24
|
-
var validateConfig = (config2) => {
|
|
25
|
-
const requiredFields = [
|
|
26
|
-
"apiKey",
|
|
27
|
-
"authDomain",
|
|
28
|
-
"projectId",
|
|
29
|
-
"storageBucket",
|
|
30
|
-
"messagingSenderId",
|
|
31
|
-
"appId"
|
|
32
|
-
];
|
|
33
|
-
const errors = [];
|
|
34
|
-
requiredFields.forEach((field) => {
|
|
35
|
-
if (!config2[field]) {
|
|
36
|
-
errors.push(`Missing required field: NEXT_PUBLIC_FIREBASE_${String(field).toUpperCase()}`);
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
return {
|
|
40
|
-
isValid: errors.length === 0,
|
|
41
|
-
errors,
|
|
42
|
-
config: config2
|
|
43
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
"use client";
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all)
|
|
11
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
44
12
|
};
|
|
45
|
-
var
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
`Firebase configuration validation failed:
|
|
51
|
-
${validationResult.errors.join("\n")}`
|
|
52
|
-
);
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from))
|
|
16
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
17
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
53
18
|
}
|
|
54
|
-
return
|
|
19
|
+
return to;
|
|
55
20
|
};
|
|
56
|
-
|
|
57
|
-
//
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
var
|
|
65
|
-
var
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
var
|
|
74
|
-
var
|
|
21
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
22
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
23
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
24
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
25
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
26
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
27
|
+
mod
|
|
28
|
+
));
|
|
29
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
30
|
+
var TernSecureProvider_exports = {};
|
|
31
|
+
__export(TernSecureProvider_exports, {
|
|
32
|
+
AuthStateContext: () => AuthStateContext,
|
|
33
|
+
TernSecureClientProvider: () => TernSecureClientProvider
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(TernSecureProvider_exports);
|
|
36
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
37
|
+
var import_react = __toESM(require("react"), 1);
|
|
38
|
+
var import_client_init = require("../../utils/client-init");
|
|
39
|
+
var import_auth = require("firebase/auth");
|
|
40
|
+
var import_TernSecureCtx = require("../../boundary/TernSecureCtx");
|
|
41
|
+
const AuthStateContext = import_react.default.createContext(null);
|
|
42
|
+
const auth = (0, import_client_init.TernSecureAuth)();
|
|
75
43
|
function TernSecureClientProvider({
|
|
76
44
|
children,
|
|
77
45
|
initialState
|
|
78
46
|
}) {
|
|
79
|
-
const [authState, setAuthState] =
|
|
80
|
-
|
|
81
|
-
const unsubscribe =
|
|
47
|
+
const [authState, setAuthState] = (0, import_react.useState)(initialState);
|
|
48
|
+
(0, import_react.useEffect)(() => {
|
|
49
|
+
const unsubscribe = (0, import_auth.onAuthStateChanged)(auth, (user) => {
|
|
82
50
|
if (user) {
|
|
83
51
|
setAuthState({
|
|
84
52
|
loading: false,
|
|
@@ -97,10 +65,11 @@ function TernSecureClientProvider({
|
|
|
97
65
|
});
|
|
98
66
|
return () => unsubscribe();
|
|
99
67
|
}, []);
|
|
100
|
-
return /* @__PURE__ */
|
|
68
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_TernSecureCtx.TernSecureCtxProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AuthStateContext.Provider, { value: authState, children }) });
|
|
101
69
|
}
|
|
102
|
-
|
|
103
|
-
exports
|
|
104
|
-
|
|
105
|
-
|
|
70
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
71
|
+
0 && (module.exports = {
|
|
72
|
+
AuthStateContext,
|
|
73
|
+
TernSecureClientProvider
|
|
74
|
+
});
|
|
106
75
|
//# sourceMappingURL=TernSecureProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/
|
|
1
|
+
{"version":3,"sources":["../../../../src/app-router/client/TernSecureProvider.tsx"],"sourcesContent":["'use client'\r\n\r\nimport React, { useState, useEffect } from 'react'\r\nimport { TernSecureAuth } from '../../utils/client-init'\r\nimport { onAuthStateChanged } from \"firebase/auth\"\r\nimport { useInternalContext, TernSecureCtxProvider } from '../../boundary/TernSecureCtx'\r\n\r\nexport type TernSecureState = {\r\n userId: string | null\r\n loading: boolean\r\n error: string | null\r\n isSignedIn: boolean\r\n}\r\n\r\nexport const AuthStateContext = React.createContext<TernSecureState | null>(null)\r\n\r\ninterface TernSecureClientProps {\r\n children: React.ReactNode\r\n initialState: TernSecureState\r\n}\r\n\r\nconst auth = TernSecureAuth();\r\n\r\nexport function TernSecureClientProvider({ \r\n children,\r\n initialState\r\n }: TernSecureClientProps) {\r\n const [authState, setAuthState] = useState<TernSecureState>(initialState)\r\nuseEffect(() => {\r\n const unsubscribe = onAuthStateChanged(auth, (user) => {\r\n if (user) {\r\n setAuthState({\r\n loading: false,\r\n isSignedIn: true,\r\n userId: user.uid,\r\n error: null\r\n })\r\n } else {\r\n setAuthState({\r\n loading: false,\r\n isSignedIn: false,\r\n userId: null,\r\n error: null\r\n })\r\n }\r\n })\r\n \r\n return () => unsubscribe()\r\n }, [])\r\n\r\n\r\n return (\r\n <TernSecureCtxProvider>\r\n <AuthStateContext.Provider value={authState}>\r\n {children}\r\n </AuthStateContext.Provider>\r\n </TernSecureCtxProvider>\r\n )\r\n}"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqDM;AAnDN,mBAA2C;AAC3C,yBAA+B;AAC/B,kBAAmC;AACnC,2BAA0D;AASnD,MAAM,mBAAmB,aAAAA,QAAM,cAAsC,IAAI;AAOhF,MAAM,WAAO,mCAAe;AAErB,SAAS,yBAAyB;AAAA,EACvC;AAAA,EACA;AACD,GAA0B;AACzB,QAAM,CAAC,WAAW,YAAY,QAAI,uBAA0B,YAAY;AAC1E,8BAAU,MAAM;AACZ,UAAM,kBAAc,gCAAmB,MAAM,CAAC,SAAS;AACrD,UAAI,MAAM;AACR,qBAAa;AAAA,UACX,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,QAAQ,KAAK;AAAA,UACb,OAAO;AAAA,QACT,CAAC;AAAA,MACH,OAAO;AACL,qBAAa;AAAA,UACX,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,QAAQ;AAAA,UACR,OAAO;AAAA,QACT,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAED,WAAO,MAAM,YAAY;AAAA,EAC3B,GAAG,CAAC,CAAC;AAGL,SACE,4CAAC,8CACC,sDAAC,iBAAiB,UAAjB,EAA0B,OAAO,WACjC,UACD,GACF;AAEJ;","names":["React"]}
|
|
@@ -1,114 +1,47 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
13
|
-
|
|
14
|
-
// src/app-router/server/TernSecureServerProvider.tsx
|
|
15
|
-
|
|
16
|
-
// src/utils/config.ts
|
|
17
|
-
var loadFireConfig = () => ({
|
|
18
|
-
apiKey: process.env.NEXT_PUBLIC_FIREBASE_API_KEY || "",
|
|
19
|
-
authDomain: process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN || "",
|
|
20
|
-
projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID || "",
|
|
21
|
-
storageBucket: process.env.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET || "",
|
|
22
|
-
messagingSenderId: process.env.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID || "",
|
|
23
|
-
appId: process.env.NEXT_PUBLIC_FIREBASE_APP_ID || "",
|
|
24
|
-
measurementId: process.env.NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID || void 0
|
|
25
|
-
});
|
|
26
|
-
var validateConfig = (config2) => {
|
|
27
|
-
const requiredFields = [
|
|
28
|
-
"apiKey",
|
|
29
|
-
"authDomain",
|
|
30
|
-
"projectId",
|
|
31
|
-
"storageBucket",
|
|
32
|
-
"messagingSenderId",
|
|
33
|
-
"appId"
|
|
34
|
-
];
|
|
35
|
-
const errors = [];
|
|
36
|
-
requiredFields.forEach((field) => {
|
|
37
|
-
if (!config2[field]) {
|
|
38
|
-
errors.push(`Missing required field: NEXT_PUBLIC_FIREBASE_${String(field).toUpperCase()}`);
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
return {
|
|
42
|
-
isValid: errors.length === 0,
|
|
43
|
-
errors,
|
|
44
|
-
config: config2
|
|
45
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
46
11
|
};
|
|
47
|
-
var
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
`Firebase configuration validation failed:
|
|
53
|
-
${validationResult.errors.join("\n")}`
|
|
54
|
-
);
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
55
17
|
}
|
|
56
|
-
return
|
|
18
|
+
return to;
|
|
57
19
|
};
|
|
58
|
-
|
|
59
|
-
//
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
var
|
|
67
|
-
var
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
var AuthStateContext = React__default.default.createContext(null);
|
|
76
|
-
var auth2 = TernSecureAuth();
|
|
77
|
-
function TernSecureClientProvider({
|
|
78
|
-
children,
|
|
79
|
-
initialState
|
|
80
|
-
}) {
|
|
81
|
-
const [authState, setAuthState] = React.useState(initialState);
|
|
82
|
-
React.useEffect(() => {
|
|
83
|
-
const unsubscribe = auth$1.onAuthStateChanged(auth2, (user) => {
|
|
84
|
-
if (user) {
|
|
85
|
-
setAuthState({
|
|
86
|
-
loading: false,
|
|
87
|
-
isSignedIn: true,
|
|
88
|
-
userId: user.uid,
|
|
89
|
-
error: null
|
|
90
|
-
});
|
|
91
|
-
} else {
|
|
92
|
-
setAuthState({
|
|
93
|
-
loading: false,
|
|
94
|
-
isSignedIn: false,
|
|
95
|
-
userId: null,
|
|
96
|
-
error: null
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
return () => unsubscribe();
|
|
101
|
-
}, []);
|
|
102
|
-
return /* @__PURE__ */ jsxRuntime.jsx(TernSecureCtxProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(AuthStateContext.Provider, { value: authState, children }) });
|
|
103
|
-
}
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var TernSecureServerProvider_exports = {};
|
|
30
|
+
__export(TernSecureServerProvider_exports, {
|
|
31
|
+
TernSecureServerProvider: () => TernSecureServerProvider
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(TernSecureServerProvider_exports);
|
|
34
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
35
|
+
var import_react = __toESM(require("react"), 1);
|
|
36
|
+
var import_TernSecureProvider = require("../client/TernSecureProvider");
|
|
104
37
|
function TernSecureLoadingFallback() {
|
|
105
|
-
return /* @__PURE__ */
|
|
38
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
106
39
|
"div",
|
|
107
40
|
{
|
|
108
41
|
"aria-label": "Loading authentication",
|
|
109
42
|
role: "status",
|
|
110
43
|
className: "tern-secure-loading",
|
|
111
|
-
children: /* @__PURE__ */
|
|
44
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "sr-only", children: "Loading authentication..." })
|
|
112
45
|
}
|
|
113
46
|
);
|
|
114
47
|
}
|
|
@@ -121,9 +54,10 @@ async function TernSecureServerProvider({
|
|
|
121
54
|
userId: null,
|
|
122
55
|
error: null
|
|
123
56
|
};
|
|
124
|
-
return /* @__PURE__ */
|
|
57
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.default.Suspense, { fallback: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TernSecureLoadingFallback, {}), children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_TernSecureProvider.TernSecureClientProvider, { initialState, children }) });
|
|
125
58
|
}
|
|
126
|
-
|
|
127
|
-
exports
|
|
128
|
-
|
|
59
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
60
|
+
0 && (module.exports = {
|
|
61
|
+
TernSecureServerProvider
|
|
62
|
+
});
|
|
129
63
|
//# sourceMappingURL=TernSecureServerProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/utils/config.ts","../../../../src/utils/client-init.ts","../../../../src/boundary/TernSecureCtx.tsx","../../../../src/app-router/client/TernSecureProvider.tsx","../../../../src/app-router/server/TernSecureServerProvider.tsx"],"names":["config","initializeApp","getAuth","setPersistence","browserSessionPersistence","getFirestore","getStorage","createContext","jsx","React","auth","useState","useEffect","onAuthStateChanged"],"mappings":"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","file":"TernSecureServerProvider.js","sourcesContent":["import { TernSecureConfig, ConfigValidationResult } from '../types'\r\n\r\n/**\r\n * Loads Firebase configuration from environment variables\r\n * @returns {TernSecureConfig} Firebase configuration object\r\n */\r\nexport const loadFireConfig = (): TernSecureConfig => ({\r\n apiKey: process.env.NEXT_PUBLIC_FIREBASE_API_KEY || '',\r\n authDomain: process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN || '',\r\n projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID || '',\r\n storageBucket: process.env.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET || '',\r\n messagingSenderId: process.env.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID || '',\r\n appId: process.env.NEXT_PUBLIC_FIREBASE_APP_ID || '',\r\n measurementId: process.env.NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID || undefined,\r\n})\r\n\r\n/**\r\n * Validates Firebase configuration\r\n * @param {TernSecureConfig} config - Firebase configuration object\r\n * @throws {Error} If required configuration values are missing\r\n * @returns {TernSecureConfig} Validated configuration object\r\n */\r\nexport const validateConfig = (config: TernSecureConfig): ConfigValidationResult => {\r\n const requiredFields: (keyof TernSecureConfig)[] = [\r\n 'apiKey',\r\n 'authDomain',\r\n 'projectId',\r\n 'storageBucket',\r\n 'messagingSenderId',\r\n 'appId'\r\n ]\r\n\r\n const errors: string[] = []\r\n \r\n requiredFields.forEach(field => {\r\n if (!config[field]) {\r\n errors.push(`Missing required field: NEXT_PUBLIC_FIREBASE_${String(field).toUpperCase()}`)\r\n }\r\n })\r\n\r\n return {\r\n isValid: errors.length === 0,\r\n errors,\r\n config\r\n }\r\n}\r\n\r\n/**\r\n * Initializes configuration with validation\r\n * @throws {Error} If configuration is invalid\r\n */\r\nexport const initializeConfig = (): TernSecureConfig => {\r\n const config = loadFireConfig()\r\n const validationResult = validateConfig(config)\r\n\r\n if (!validationResult.isValid) {\r\n throw new Error(\r\n `Firebase configuration validation failed:\\n${validationResult.errors.join('\\n')}`\r\n )\r\n }\r\n\r\n return config\r\n}","import { initializeApp } from 'firebase/app';\r\nimport { getAuth, setPersistence, browserSessionPersistence } from 'firebase/auth';\r\nimport { getFirestore } from 'firebase/firestore';\r\nimport { getStorage } from 'firebase/storage';\r\nimport { initializeConfig} from './config';\r\n\r\n// Initialize immediately\r\nconst config = initializeConfig();\r\nconst clientApp = initializeApp(config)\r\nconst auth = getAuth(clientApp);\r\nsetPersistence(auth, browserSessionPersistence); //to change later user should be able to choose persistance\r\nconst firestore = getFirestore(clientApp);\r\nconst storage = getStorage(clientApp);\r\n\r\nexport const TernSecureAuth = () => auth;\r\nexport const TernSecureFirestore = () => firestore;\r\nexport const TernSecureStorage = () => storage;","'use client'\r\n\r\nimport { createContext, useContext} from 'react'\r\n\r\n// Core types\r\nexport type TernSecureCtxValue = {\r\n _contextKey: Symbol\r\n}\r\n\r\n// Context with proper null handling\r\nconst INTERNAL_CONTEXT_KEY = Symbol('TERN_SECURE_CONTEXT')\r\nconst TernSecureContext = createContext<TernSecureCtxValue | null>(null)\r\n\r\n// Set display name for better debugging\r\nTernSecureContext.displayName = 'TernSecureContext'\r\n\r\nexport const useInternalContext = (hookname: string) => {\r\n\r\n const context = useContext(TernSecureContext)\r\n \r\n if (!context) {\r\n throw new Error(\r\n `${hookname} must be used within TernSecureProvider`\r\n )\r\n }\r\n\r\n return context\r\n}\r\n\r\n/**\r\n * Provider component for TernSecure\r\n * Must be used in client components only\r\n */\r\nexport function TernSecureCtxProvider({ children }: { children: React.ReactNode }) {\r\n return (\r\n <TernSecureContext.Provider value={{\r\n _contextKey: INTERNAL_CONTEXT_KEY \r\n }}>\r\n {children}\r\n </TernSecureContext.Provider>\r\n )\r\n}","'use client'\r\n\r\nimport React, { useState, useEffect } from 'react'\r\nimport { TernSecureAuth } from '../../utils/client-init'\r\nimport { onAuthStateChanged } from \"firebase/auth\"\r\nimport { useInternalContext, TernSecureCtxProvider } from '../../boundary/TernSecureCtx'\r\n\r\nexport type TernSecureState = {\r\n userId: string | null\r\n loading: boolean\r\n error: string | null\r\n isSignedIn: boolean\r\n}\r\n\r\nexport const AuthStateContext = React.createContext<TernSecureState | null>(null)\r\n\r\ninterface TernSecureClientProps {\r\n children: React.ReactNode\r\n initialState: TernSecureState\r\n}\r\n\r\nconst auth = TernSecureAuth();\r\n\r\nexport function TernSecureClientProvider({ \r\n children,\r\n initialState\r\n }: TernSecureClientProps) {\r\n const [authState, setAuthState] = useState<TernSecureState>(initialState)\r\nuseEffect(() => {\r\n const unsubscribe = onAuthStateChanged(auth, (user) => {\r\n if (user) {\r\n setAuthState({\r\n loading: false,\r\n isSignedIn: true,\r\n userId: user.uid,\r\n error: null\r\n })\r\n } else {\r\n setAuthState({\r\n loading: false,\r\n isSignedIn: false,\r\n userId: null,\r\n error: null\r\n })\r\n }\r\n })\r\n \r\n return () => unsubscribe()\r\n }, [])\r\n\r\n\r\n return (\r\n <TernSecureCtxProvider>\r\n <AuthStateContext.Provider value={authState}>\r\n {children}\r\n </AuthStateContext.Provider>\r\n </TernSecureCtxProvider>\r\n )\r\n}","import React from \"react\"\r\nimport { TernSecureClientProvider, TernSecureState } from \"../client/TernSecureProvider\"\r\n\r\n\r\n\r\n// Loading fallback component\r\nfunction TernSecureLoadingFallback() {\r\n return (\r\n <div \r\n aria-label=\"Loading authentication\" \r\n role=\"status\"\r\n className=\"tern-secure-loading\"\r\n >\r\n <span className=\"sr-only\">Loading authentication...</span>\r\n </div>\r\n )\r\n}\r\n\r\ninterface TernSecureServerProviderProps {\r\n children: React.ReactNode\r\n}\r\n\r\n/**\r\n * Root Provider for TernSecure\r\n * Use this in your Next.js App Router root layout\r\n * Automatically handles client/server boundary and authentication state\r\n * \r\n * @example\r\n * // app/layout.tsx\r\n * import { TernSecureProvider } from '@tern/secure'\r\n * \r\n * export default function RootLayout({ children }) {\r\n * return (\r\n * <html>\r\n * <body>\r\n * <TernSecureProvider>\r\n * {children}\r\n * </TernSecureProvider>\r\n * </body>\r\n * </html>\r\n * )\r\n * }\r\n */\r\nexport async function TernSecureServerProvider({ \r\n children \r\n}: TernSecureServerProviderProps) {\r\n const initialState: TernSecureState = {\r\n loading: true,\r\n isSignedIn: false,\r\n userId: null,\r\n error: null\r\n }\r\n\r\n return (\r\n <React.Suspense fallback={<TernSecureLoadingFallback />}>\r\n {/* Add use client directive */}\r\n <TernSecureClientProvider initialState={initialState}>\r\n {children}\r\n </TernSecureClientProvider>\r\n </React.Suspense>\r\n )\r\n}\r\n\r\n// Export types for internal use\r\nexport type { TernSecureServerProviderProps }"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/app-router/server/TernSecureServerProvider.tsx"],"sourcesContent":["import React from \"react\"\r\nimport { TernSecureClientProvider, TernSecureState } from \"../client/TernSecureProvider\"\r\n\r\n\r\n\r\n// Loading fallback component\r\nfunction TernSecureLoadingFallback() {\r\n return (\r\n <div \r\n aria-label=\"Loading authentication\" \r\n role=\"status\"\r\n className=\"tern-secure-loading\"\r\n >\r\n <span className=\"sr-only\">Loading authentication...</span>\r\n </div>\r\n )\r\n}\r\n\r\ninterface TernSecureServerProviderProps {\r\n children: React.ReactNode\r\n}\r\n\r\n/**\r\n * Root Provider for TernSecure\r\n * Use this in your Next.js App Router root layout\r\n * Automatically handles client/server boundary and authentication state\r\n * \r\n * @example\r\n * // app/layout.tsx\r\n * import { TernSecureProvider } from '@tern/secure'\r\n * \r\n * export default function RootLayout({ children }) {\r\n * return (\r\n * <html>\r\n * <body>\r\n * <TernSecureProvider>\r\n * {children}\r\n * </TernSecureProvider>\r\n * </body>\r\n * </html>\r\n * )\r\n * }\r\n */\r\nexport async function TernSecureServerProvider({ \r\n children \r\n}: TernSecureServerProviderProps) {\r\n const initialState: TernSecureState = {\r\n loading: true,\r\n isSignedIn: false,\r\n userId: null,\r\n error: null\r\n }\r\n\r\n return (\r\n <React.Suspense fallback={<TernSecureLoadingFallback />}>\r\n {/* Add use client directive */}\r\n <TernSecureClientProvider initialState={initialState}>\r\n {children}\r\n </TernSecureClientProvider>\r\n </React.Suspense>\r\n )\r\n}\r\n\r\n// Export types for internal use\r\nexport type { TernSecureServerProviderProps }"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAaM;AAbN,mBAAkB;AAClB,gCAA0D;AAK1D,SAAS,4BAA4B;AACnC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,cAAW;AAAA,MACX,MAAK;AAAA,MACL,WAAU;AAAA,MAEV,sDAAC,UAAK,WAAU,WAAU,uCAAyB;AAAA;AAAA,EACrD;AAEJ;AA2BA,eAAsB,yBAAyB;AAAA,EAC7C;AACF,GAAkC;AAChC,QAAM,eAAgC;AAAA,IACpC,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,OAAO;AAAA,EACT;AAEA,SACE,4CAAC,aAAAA,QAAM,UAAN,EAAe,UAAU,4CAAC,6BAA0B,GAEnD,sDAAC,sDAAyB,cACvB,UACH,GACF;AAEJ;","names":["React"]}
|
|
@@ -1,71 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
// src/utils/config.ts
|
|
11
|
-
var loadFireConfig = () => ({
|
|
12
|
-
apiKey: process.env.NEXT_PUBLIC_FIREBASE_API_KEY || "",
|
|
13
|
-
authDomain: process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN || "",
|
|
14
|
-
projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID || "",
|
|
15
|
-
storageBucket: process.env.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET || "",
|
|
16
|
-
messagingSenderId: process.env.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID || "",
|
|
17
|
-
appId: process.env.NEXT_PUBLIC_FIREBASE_APP_ID || "",
|
|
18
|
-
measurementId: process.env.NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID || void 0
|
|
19
|
-
});
|
|
20
|
-
var validateConfig = (config2) => {
|
|
21
|
-
const requiredFields = [
|
|
22
|
-
"apiKey",
|
|
23
|
-
"authDomain",
|
|
24
|
-
"projectId",
|
|
25
|
-
"storageBucket",
|
|
26
|
-
"messagingSenderId",
|
|
27
|
-
"appId"
|
|
28
|
-
];
|
|
29
|
-
const errors = [];
|
|
30
|
-
requiredFields.forEach((field) => {
|
|
31
|
-
if (!config2[field]) {
|
|
32
|
-
errors.push(`Missing required field: NEXT_PUBLIC_FIREBASE_${String(field).toUpperCase()}`);
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
return {
|
|
36
|
-
isValid: errors.length === 0,
|
|
37
|
-
errors,
|
|
38
|
-
config: config2
|
|
39
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
40
9
|
};
|
|
41
|
-
var
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
`Firebase configuration validation failed:
|
|
47
|
-
${validationResult.errors.join("\n")}`
|
|
48
|
-
);
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
49
15
|
}
|
|
50
|
-
return
|
|
16
|
+
return to;
|
|
51
17
|
};
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
var TernSecureAuth = () => auth;
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var auth_exports = {};
|
|
20
|
+
__export(auth_exports, {
|
|
21
|
+
signInWithEmail: () => signInWithEmail
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(auth_exports);
|
|
24
|
+
var import_client_init = require("../../utils/client-init");
|
|
25
|
+
var import_auth = require("firebase/auth");
|
|
61
26
|
async function signInWithEmail({
|
|
62
27
|
email,
|
|
63
28
|
password
|
|
64
29
|
}) {
|
|
65
|
-
const
|
|
66
|
-
return
|
|
30
|
+
const auth = (0, import_client_init.TernSecureAuth)();
|
|
31
|
+
return (0, import_auth.signInWithEmailAndPassword)(auth, email, password);
|
|
67
32
|
}
|
|
68
|
-
|
|
69
|
-
exports
|
|
70
|
-
|
|
33
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
34
|
+
0 && (module.exports = {
|
|
35
|
+
signInWithEmail
|
|
36
|
+
});
|
|
71
37
|
//# sourceMappingURL=auth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/
|
|
1
|
+
{"version":3,"sources":["../../../../src/app-router/server/auth.ts"],"sourcesContent":["import { TernSecureAuth } from '../../utils/client-init'\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} "],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAA+B;AAC/B,kBAAgE;AAOhE,eAAsB,gBAAgB;AAAA,EACpC;AAAA,EACA;AACF,GAA+C;AAC7C,QAAM,WAAO,mCAAe;AAC5B,aAAO,wCAA2B,MAAM,OAAO,QAAQ;AACzD;","names":[]}
|
|
@@ -1,13 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
|
|
6
|
-
var
|
|
7
|
-
var
|
|
1
|
+
"use strict";
|
|
2
|
+
"use client";
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
var TernSecureCtx_exports = {};
|
|
21
|
+
__export(TernSecureCtx_exports, {
|
|
22
|
+
TernSecureCtxProvider: () => TernSecureCtxProvider,
|
|
23
|
+
useInternalContext: () => useInternalContext
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(TernSecureCtx_exports);
|
|
26
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
27
|
+
var import_react = require("react");
|
|
28
|
+
const INTERNAL_CONTEXT_KEY = Symbol("TERN_SECURE_CONTEXT");
|
|
29
|
+
const TernSecureContext = (0, import_react.createContext)(null);
|
|
8
30
|
TernSecureContext.displayName = "TernSecureContext";
|
|
9
|
-
|
|
10
|
-
const context =
|
|
31
|
+
const useInternalContext = (hookname) => {
|
|
32
|
+
const context = (0, import_react.useContext)(TernSecureContext);
|
|
11
33
|
if (!context) {
|
|
12
34
|
throw new Error(
|
|
13
35
|
`${hookname} must be used within TernSecureProvider`
|
|
@@ -16,12 +38,13 @@ var useInternalContext = (hookname) => {
|
|
|
16
38
|
return context;
|
|
17
39
|
};
|
|
18
40
|
function TernSecureCtxProvider({ children }) {
|
|
19
|
-
return /* @__PURE__ */
|
|
41
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TernSecureContext.Provider, { value: {
|
|
20
42
|
_contextKey: INTERNAL_CONTEXT_KEY
|
|
21
43
|
}, children });
|
|
22
44
|
}
|
|
23
|
-
|
|
24
|
-
exports
|
|
25
|
-
|
|
26
|
-
|
|
45
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
46
|
+
0 && (module.exports = {
|
|
47
|
+
TernSecureCtxProvider,
|
|
48
|
+
useInternalContext
|
|
49
|
+
});
|
|
27
50
|
//# sourceMappingURL=TernSecureCtx.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/boundary/TernSecureCtx.tsx"],"
|
|
1
|
+
{"version":3,"sources":["../../../src/boundary/TernSecureCtx.tsx"],"sourcesContent":["'use client'\r\n\r\nimport { createContext, useContext} from 'react'\r\n\r\n// Core types\r\nexport type TernSecureCtxValue = {\r\n _contextKey: Symbol\r\n}\r\n\r\n// Context with proper null handling\r\nconst INTERNAL_CONTEXT_KEY = Symbol('TERN_SECURE_CONTEXT')\r\nconst TernSecureContext = createContext<TernSecureCtxValue | null>(null)\r\n\r\n// Set display name for better debugging\r\nTernSecureContext.displayName = 'TernSecureContext'\r\n\r\nexport const useInternalContext = (hookname: string) => {\r\n\r\n const context = useContext(TernSecureContext)\r\n \r\n if (!context) {\r\n throw new Error(\r\n `${hookname} must be used within TernSecureProvider`\r\n )\r\n }\r\n\r\n return context\r\n}\r\n\r\n/**\r\n * Provider component for TernSecure\r\n * Must be used in client components only\r\n */\r\nexport function TernSecureCtxProvider({ children }: { children: React.ReactNode }) {\r\n return (\r\n <TernSecureContext.Provider value={{\r\n _contextKey: INTERNAL_CONTEXT_KEY \r\n }}>\r\n {children}\r\n </TernSecureContext.Provider>\r\n )\r\n}"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmCI;AAjCJ,mBAAyC;AAQzC,MAAM,uBAAuB,OAAO,qBAAqB;AACzD,MAAM,wBAAoB,4BAAyC,IAAI;AAGvE,kBAAkB,cAAc;AAEzB,MAAM,qBAAqB,CAAC,aAAqB;AAEtD,QAAM,cAAU,yBAAW,iBAAiB;AAE5C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI;AAAA,MACR,GAAG,QAAQ;AAAA,IACb;AAAA,EACF;AAEA,SAAO;AACT;AAMO,SAAS,sBAAsB,EAAE,SAAS,GAAkC;AACjF,SACE,4CAAC,kBAAkB,UAAlB,EAA2B,OAAO;AAAA,IACjC,aAAa;AAAA,EACf,GACG,UACH;AAEJ;","names":[]}
|