@tern-secure/nextjs 3.1.30 → 3.1.32

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.
Files changed (80) hide show
  1. package/dist/cjs/app-router/client/client-init.js +70 -0
  2. package/dist/cjs/app-router/client/client-init.js.map +7 -0
  3. package/dist/cjs/app-router/client/config.js +49 -0
  4. package/dist/cjs/app-router/client/config.js.map +7 -0
  5. package/dist/cjs/app-router/client/index.js +144 -0
  6. package/dist/cjs/app-router/client/index.js.map +7 -0
  7. package/dist/cjs/app-router/server/index.js +142 -0
  8. package/dist/cjs/app-router/server/index.js.map +7 -0
  9. package/dist/{server → cjs/components}/index.js +89 -123
  10. package/dist/cjs/components/index.js.map +7 -0
  11. package/dist/{client/index.cjs → cjs/index.js} +150 -74
  12. package/dist/cjs/index.js.map +7 -0
  13. package/dist/esm/app-router/client/auth.d.ts +7 -0
  14. package/dist/esm/app-router/client/auth.d.ts.map +1 -0
  15. package/dist/esm/app-router/client/client-init.d.ts +4 -0
  16. package/dist/esm/app-router/client/client-init.d.ts.map +1 -0
  17. package/dist/esm/app-router/client/client-init.js +12 -0
  18. package/dist/esm/app-router/client/client-init.js.map +7 -0
  19. package/dist/esm/app-router/client/config.d.ts +4 -0
  20. package/dist/esm/app-router/client/config.d.ts.map +1 -0
  21. package/dist/esm/app-router/client/config.js +9 -0
  22. package/dist/esm/app-router/client/config.js.map +7 -0
  23. package/dist/esm/app-router/client/index.d.ts +7 -0
  24. package/dist/esm/app-router/client/index.d.ts.map +1 -0
  25. package/dist/esm/app-router/client/index.js +30 -0
  26. package/dist/esm/app-router/client/index.js.map +7 -0
  27. package/dist/esm/app-router/client/providers/ternSecureClientProvider.d.ts +5 -0
  28. package/dist/esm/app-router/client/providers/ternSecureClientProvider.d.ts.map +1 -0
  29. package/dist/esm/app-router/client/providers/ternSecureContext.d.ts +7 -0
  30. package/dist/esm/app-router/client/providers/ternSecureContext.d.ts.map +1 -0
  31. package/dist/esm/app-router/server/index.d.ts +2 -0
  32. package/dist/esm/app-router/server/index.d.ts.map +1 -0
  33. package/dist/esm/app-router/server/index.js +7 -0
  34. package/dist/esm/app-router/server/index.js.map +7 -0
  35. package/dist/esm/app-router/server/providers/TernSecureServerProvider.d.ts +7 -0
  36. package/dist/esm/app-router/server/providers/TernSecureServerProvider.d.ts.map +1 -0
  37. package/dist/esm/chunk-5DISHXED.js +24 -0
  38. package/dist/esm/chunk-5DISHXED.js.map +7 -0
  39. package/dist/esm/chunk-CGWE73OH.js +18 -0
  40. package/dist/esm/chunk-CGWE73OH.js.map +7 -0
  41. package/dist/esm/chunk-HXT5FXLI.js +44 -0
  42. package/dist/esm/chunk-HXT5FXLI.js.map +7 -0
  43. package/dist/esm/chunk-RHUIR5LX.js +28 -0
  44. package/dist/esm/chunk-RHUIR5LX.js.map +7 -0
  45. package/dist/{client/index.js → esm/chunk-XPP2LEPF.js} +12 -138
  46. package/dist/esm/chunk-XPP2LEPF.js.map +7 -0
  47. package/dist/esm/chunk-ZOPSCDBD.js +57 -0
  48. package/dist/esm/chunk-ZOPSCDBD.js.map +7 -0
  49. package/dist/esm/components/index.d.ts +2 -0
  50. package/dist/esm/components/index.d.ts.map +1 -0
  51. package/dist/esm/components/index.js +11 -0
  52. package/dist/esm/components/index.js.map +7 -0
  53. package/dist/esm/components/sign-in.d.ts +22 -0
  54. package/dist/esm/components/sign-in.d.ts.map +1 -0
  55. package/dist/esm/errors/index.d.ts +9 -0
  56. package/dist/esm/errors/index.d.ts.map +1 -0
  57. package/dist/esm/hooks/index.d.ts +2 -0
  58. package/dist/esm/hooks/index.d.ts.map +1 -0
  59. package/dist/esm/hooks/useAuth.d.ts +2 -0
  60. package/dist/esm/hooks/useAuth.d.ts.map +1 -0
  61. package/dist/esm/index.d.ts +5 -0
  62. package/dist/esm/index.d.ts.map +1 -0
  63. package/dist/esm/index.js +96 -0
  64. package/dist/esm/index.js.map +7 -0
  65. package/dist/esm/ternSecureClientProvider-JVILZFAW.js +8 -0
  66. package/dist/esm/ternSecureClientProvider-JVILZFAW.js.map +7 -0
  67. package/dist/esm/types/index.d.ts +41 -0
  68. package/dist/esm/types/index.d.ts.map +1 -0
  69. package/dist/esm/utils/create-styles.d.ts +99 -0
  70. package/dist/esm/utils/create-styles.d.ts.map +1 -0
  71. package/package.json +27 -15
  72. package/dist/client/chunk-BGA4LR4W.js +0 -32
  73. package/dist/client/index.d.cts +0 -81
  74. package/dist/client/index.d.ts +0 -81
  75. package/dist/client/ternSecureClientProvider-5BLRLQMH.js +0 -1
  76. package/dist/server/chunk-AHVNPKXU.js +0 -33
  77. package/dist/server/index.cjs +0 -431
  78. package/dist/server/index.d.cts +0 -81
  79. package/dist/server/index.d.ts +0 -81
  80. package/dist/server/ternSecureClientProvider-P663N3F7.js +0 -1
@@ -1,20 +1,10 @@
1
- 'use strict';
2
-
3
- var React3 = require('react');
4
- var jsxRuntime = require('react/jsx-runtime');
5
- var app$1 = require('firebase/app');
6
- var auth$1 = require('firebase/auth');
7
- var firestore$1 = require('firebase/firestore');
8
- var storage$1 = require('firebase/storage');
9
- var dynamic = require('next/dynamic');
10
-
11
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
-
13
- var React3__default = /*#__PURE__*/_interopDefault(React3);
14
- var dynamic__default = /*#__PURE__*/_interopDefault(dynamic);
15
-
1
+ "use strict";
2
+ var __create = Object.create;
16
3
  var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
17
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
18
8
  var __esm = (fn, res) => function __init() {
19
9
  return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
20
10
  };
@@ -22,10 +12,57 @@ var __export = (target, all) => {
22
12
  for (var name in all)
23
13
  __defProp(target, name, { get: all[name], enumerable: true });
24
14
  };
25
- var initialState; exports.TernSecureContext = void 0; exports.useTernSecure = void 0;
15
+ var __copyProps = (to, from, except, desc) => {
16
+ if (from && typeof from === "object" || typeof from === "function") {
17
+ for (let key of __getOwnPropNames(from))
18
+ if (!__hasOwnProp.call(to, key) && key !== except)
19
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
20
+ }
21
+ return to;
22
+ };
23
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
24
+ // If the importer is in node compatibility mode or this is not an ESM
25
+ // file that has been converted to a CommonJS file using a Babel-
26
+ // compatible transform (i.e. "__esModule" has not been set), then set
27
+ // "default" to the CommonJS "module.exports" for node compatibility.
28
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
29
+ mod
30
+ ));
31
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
32
+
33
+ // src/app-router/client/providers/ternSecureContext.tsx
34
+ var import_react, createTernSecureContext, TernSecureContext, useTernSecure, initialState;
26
35
  var init_ternSecureContext = __esm({
27
36
  "src/app-router/client/providers/ternSecureContext.tsx"() {
37
+ "use strict";
28
38
  "use client";
39
+ import_react = require("react");
40
+ createTernSecureContext = () => {
41
+ const initialState2 = {
42
+ firebase: {
43
+ initialized: false,
44
+ error: null
45
+ },
46
+ auth: {
47
+ user: null,
48
+ loading: true,
49
+ error: null,
50
+ isSignedIn: false
51
+ }
52
+ };
53
+ return (0, import_react.createContext)([initialState2, () => {
54
+ }]);
55
+ };
56
+ TernSecureContext = createTernSecureContext();
57
+ useTernSecure = (hookname) => {
58
+ const context = (0, import_react.useContext)(TernSecureContext);
59
+ if (!context) {
60
+ throw new Error(
61
+ `${hookname} must be used within TernSecureProvider`
62
+ );
63
+ }
64
+ return context;
65
+ };
29
66
  initialState = {
30
67
  firebase: {
31
68
  initialized: false,
@@ -38,17 +75,6 @@ var init_ternSecureContext = __esm({
38
75
  isSignedIn: false
39
76
  }
40
77
  };
41
- exports.TernSecureContext = React3__default.default.createContext([initialState, () => {
42
- }]);
43
- exports.useTernSecure = (hookname) => {
44
- const context = React3__default.default.useContext(exports.TernSecureContext);
45
- if (!context) {
46
- throw new Error(
47
- `${hookname} must be used within TernSecureProvider`
48
- );
49
- }
50
- return context;
51
- };
52
78
  }
53
79
  });
54
80
 
@@ -58,16 +84,44 @@ __export(ternSecureClientProvider_exports, {
58
84
  TernSecureClientProvider: () => TernSecureClientProvider
59
85
  });
60
86
  function TernSecureClientProvider({ children }) {
61
- const stateAndUpdater = React3.useState(initialState);
62
- return /* @__PURE__ */ jsxRuntime.jsx(exports.TernSecureContext.Provider, { value: stateAndUpdater, children });
87
+ const stateAndUpdater = (0, import_react2.useState)(initialState);
88
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TernSecureContext.Provider, { value: stateAndUpdater, children });
63
89
  }
90
+ var import_react2, import_jsx_runtime;
64
91
  var init_ternSecureClientProvider = __esm({
65
92
  "src/app-router/client/providers/ternSecureClientProvider.tsx"() {
93
+ "use strict";
66
94
  "use client";
95
+ import_react2 = require("react");
67
96
  init_ternSecureContext();
97
+ import_jsx_runtime = require("react/jsx-runtime");
68
98
  }
69
99
  });
70
100
 
101
+ // src/index.ts
102
+ var src_exports = {};
103
+ __export(src_exports, {
104
+ SignIn: () => SignIn,
105
+ TernSecureAuth: () => TernSecureAuth,
106
+ TernSecureClientProvider: () => TernSecureClientProvider,
107
+ TernSecureContext: () => TernSecureContext,
108
+ TernSecureFirestore: () => TernSecureFirestore,
109
+ TernSecureProvider: () => TernSecureProvider,
110
+ TernSecureStorage: () => TernSecureStorage,
111
+ loadFireConfig: () => loadFireConfig,
112
+ signInWithEmail: () => signInWithEmail,
113
+ useAuth: () => useAuth,
114
+ useTernSecure: () => useTernSecure,
115
+ validateConfig: () => validateConfig
116
+ });
117
+ module.exports = __toCommonJS(src_exports);
118
+
119
+ // src/app-router/client/client-init.ts
120
+ var import_app = require("firebase/app");
121
+ var import_auth = require("firebase/auth");
122
+ var import_firestore = require("firebase/firestore");
123
+ var import_storage = require("firebase/storage");
124
+
71
125
  // src/app-router/client/config.ts
72
126
  var loadFireConfig = () => ({
73
127
  apiKey: process.env.NEXT_PUBLIC_FIREBASE_API_KEY,
@@ -90,27 +144,35 @@ var validateConfig = (config) => {
90
144
  // src/app-router/client/client-init.ts
91
145
  var app = (() => {
92
146
  const config = validateConfig(loadFireConfig());
93
- return app$1.getApps().length ? app$1.getApps()[0] : app$1.initializeApp(config);
147
+ return (0, import_app.getApps)().length ? (0, import_app.getApps)()[0] : (0, import_app.initializeApp)(config);
94
148
  })();
95
- var auth = auth$1.getAuth(app);
96
- auth$1.setPersistence(auth, auth$1.browserSessionPersistence);
97
- var firestore = firestore$1.getFirestore(app);
98
- var storage = storage$1.getStorage(app);
149
+ var auth = (0, import_auth.getAuth)(app);
150
+ (0, import_auth.setPersistence)(auth, import_auth.browserSessionPersistence);
151
+ var firestore = (0, import_firestore.getFirestore)(app);
152
+ var storage = (0, import_storage.getStorage)(app);
99
153
  var TernSecureAuth = () => auth;
100
154
  var TernSecureFirestore = () => firestore;
101
155
  var TernSecureStorage = () => storage;
156
+
157
+ // src/app-router/client/auth.ts
158
+ var import_auth2 = require("firebase/auth");
102
159
  async function signInWithEmail({
103
160
  email,
104
161
  password
105
162
  }) {
106
163
  const auth2 = TernSecureAuth();
107
- return auth$1.signInWithEmailAndPassword(auth2, email, password);
164
+ return (0, import_auth2.signInWithEmailAndPassword)(auth2, email, password);
108
165
  }
109
166
 
110
167
  // src/app-router/client/index.ts
111
168
  init_ternSecureContext();
112
169
  init_ternSecureClientProvider();
113
- var TernSecureClientProvider2 = dynamic__default.default(
170
+
171
+ // src/app-router/server/providers/TernSecureServerProvider.tsx
172
+ var import_react3 = __toESM(require("react"), 1);
173
+ var import_dynamic = __toESM(require("next/dynamic"), 1);
174
+ var import_jsx_runtime2 = require("react/jsx-runtime");
175
+ var TernSecureClientProvider2 = (0, import_dynamic.default)(
114
176
  () => Promise.resolve().then(() => (init_ternSecureClientProvider(), ternSecureClientProvider_exports)).then((mod) => mod.TernSecureClientProvider),
115
177
  {
116
178
  ssr: false
@@ -118,22 +180,22 @@ var TernSecureClientProvider2 = dynamic__default.default(
118
180
  }
119
181
  );
120
182
  function TernSecureProvider({ children }) {
121
- const isRootLayout = React3__default.default.Children.toArray(children).some(
122
- (child) => React3__default.default.isValidElement(child) && child.type === "html"
183
+ const isRootLayout = import_react3.default.Children.toArray(children).some(
184
+ (child) => import_react3.default.isValidElement(child) && child.type === "html"
123
185
  );
124
186
  if (isRootLayout) {
125
- return React3__default.default.Children.map(children, (child) => {
126
- if (React3__default.default.isValidElement(child) && child.type === "html") {
127
- return React3__default.default.cloneElement(
187
+ return import_react3.default.Children.map(children, (child) => {
188
+ if (import_react3.default.isValidElement(child) && child.type === "html") {
189
+ return import_react3.default.cloneElement(
128
190
  child,
129
191
  {},
130
- React3__default.default.Children.map(child.props.children, (bodyChild) => {
131
- if (React3__default.default.isValidElement(bodyChild) && bodyChild.type === "body") {
192
+ import_react3.default.Children.map(child.props.children, (bodyChild) => {
193
+ if (import_react3.default.isValidElement(bodyChild) && bodyChild.type === "body") {
132
194
  const bodyProps = bodyChild.props;
133
- return React3__default.default.cloneElement(
195
+ return import_react3.default.cloneElement(
134
196
  bodyChild,
135
197
  {},
136
- /* @__PURE__ */ jsxRuntime.jsx(TernSecureClientProvider2, { children: bodyProps.children })
198
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(TernSecureClientProvider2, { children: bodyProps.children })
137
199
  );
138
200
  }
139
201
  return bodyChild;
@@ -143,11 +205,14 @@ function TernSecureProvider({ children }) {
143
205
  return child;
144
206
  });
145
207
  }
146
- return /* @__PURE__ */ jsxRuntime.jsx(TernSecureClientProvider2, { children });
208
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(TernSecureClientProvider2, { children });
147
209
  }
210
+
211
+ // src/hooks/useAuth.ts
212
+ var import_react4 = require("react");
148
213
  function useAuth() {
149
- const [state, setState] = exports.useTernSecure("useAuth");
150
- React3.useEffect(() => {
214
+ const [state, setState] = useTernSecure("useAuth");
215
+ (0, import_react4.useEffect)(() => {
151
216
  try {
152
217
  const auth2 = TernSecureAuth();
153
218
  setState((prev) => ({
@@ -201,6 +266,9 @@ function useAuth() {
201
266
  return state.auth;
202
267
  }
203
268
 
269
+ // src/components/sign-in.tsx
270
+ var import_react5 = require("react");
271
+
204
272
  // src/utils/create-styles.ts
205
273
  var PREFIX = "tern";
206
274
  var styleInjection = {
@@ -318,6 +386,9 @@ var styleConfig = {
318
386
  }
319
387
  };
320
388
  var styles = createStyleSheet(styleConfig);
389
+
390
+ // src/components/sign-in.tsx
391
+ var import_jsx_runtime3 = require("react/jsx-runtime");
321
392
  function SignIn({
322
393
  onSuccess,
323
394
  onError,
@@ -326,10 +397,10 @@ function SignIn({
326
397
  style,
327
398
  customStyles = {}
328
399
  }) {
329
- const [email, setEmail] = React3.useState("");
330
- const [password, setPassword] = React3.useState("");
331
- const [loading, setLoading] = React3.useState(false);
332
- const [error, setError] = React3.useState("");
400
+ const [email, setEmail] = (0, import_react5.useState)("");
401
+ const [password, setPassword] = (0, import_react5.useState)("");
402
+ const [loading, setLoading] = (0, import_react5.useState)(false);
403
+ const [error, setError] = (0, import_react5.useState)("");
333
404
  const handleSubmit = async (e) => {
334
405
  e.preventDefault();
335
406
  setLoading(true);
@@ -348,9 +419,9 @@ function SignIn({
348
419
  setLoading(false);
349
420
  }
350
421
  };
351
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${styles.container} ${customStyles.container || ""}`, style, children: [
352
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${styles.header} ${customStyles.header || ""}`, children: /* @__PURE__ */ jsxRuntime.jsx("h2", { className: `${styles.title} ${customStyles.title || ""}`, children: "Sign in to your account" }) }),
353
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${styles.formWrapper} ${customStyles.formWrapper || ""}`, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${styles.formContainer} ${customStyles.formContainer || ""}`, children: /* @__PURE__ */ jsxRuntime.jsxs(
422
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: `${styles.container} ${customStyles.container || ""}`, style, children: [
423
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: `${styles.header} ${customStyles.header || ""}`, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("h2", { className: `${styles.title} ${customStyles.title || ""}`, children: "Sign in to your account" }) }),
424
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: `${styles.formWrapper} ${customStyles.formWrapper || ""}`, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: `${styles.formContainer} ${customStyles.formContainer || ""}`, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
354
425
  "form",
355
426
  {
356
427
  onSubmit: handleSubmit,
@@ -358,7 +429,7 @@ function SignIn({
358
429
  role: "form",
359
430
  "aria-label": "Sign in form",
360
431
  children: [
361
- error && /* @__PURE__ */ jsxRuntime.jsx(
432
+ error && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
362
433
  "div",
363
434
  {
364
435
  className: `${styles.error} ${customStyles.errorText || ""}`,
@@ -367,9 +438,9 @@ function SignIn({
367
438
  children: error
368
439
  }
369
440
  ),
370
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
371
- /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: "email", className: `${styles.label} ${customStyles.label || ""}`, children: "Email" }),
372
- /* @__PURE__ */ jsxRuntime.jsx(
441
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { children: [
442
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("label", { htmlFor: "email", className: `${styles.label} ${customStyles.label || ""}`, children: "Email" }),
443
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
373
444
  "input",
374
445
  {
375
446
  id: "email",
@@ -385,9 +456,9 @@ function SignIn({
385
456
  }
386
457
  )
387
458
  ] }),
388
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
389
- /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: "password", className: `${styles.label} ${customStyles.label || ""}`, children: "Password" }),
390
- /* @__PURE__ */ jsxRuntime.jsx(
459
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { children: [
460
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("label", { htmlFor: "password", className: `${styles.label} ${customStyles.label || ""}`, children: "Password" }),
461
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
391
462
  "input",
392
463
  {
393
464
  id: "password",
@@ -403,7 +474,7 @@ function SignIn({
403
474
  }
404
475
  )
405
476
  ] }),
406
- /* @__PURE__ */ jsxRuntime.jsx(
477
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
407
478
  "button",
408
479
  {
409
480
  type: "submit",
@@ -418,14 +489,19 @@ function SignIn({
418
489
  ) }) })
419
490
  ] });
420
491
  }
421
-
422
- exports.SignIn = SignIn;
423
- exports.TernSecureAuth = TernSecureAuth;
424
- exports.TernSecureClientProvider = TernSecureClientProvider;
425
- exports.TernSecureFirestore = TernSecureFirestore;
426
- exports.TernSecureProvider = TernSecureProvider;
427
- exports.TernSecureStorage = TernSecureStorage;
428
- exports.loadFireConfig = loadFireConfig;
429
- exports.signInWithEmail = signInWithEmail;
430
- exports.useAuth = useAuth;
431
- exports.validateConfig = validateConfig;
492
+ // Annotate the CommonJS export names for ESM import in node:
493
+ 0 && (module.exports = {
494
+ SignIn,
495
+ TernSecureAuth,
496
+ TernSecureClientProvider,
497
+ TernSecureContext,
498
+ TernSecureFirestore,
499
+ TernSecureProvider,
500
+ TernSecureStorage,
501
+ loadFireConfig,
502
+ signInWithEmail,
503
+ useAuth,
504
+ useTernSecure,
505
+ validateConfig
506
+ });
507
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/app-router/client/providers/ternSecureContext.tsx", "../../src/app-router/client/providers/ternSecureClientProvider.tsx", "../../src/index.ts", "../../src/app-router/client/client-init.ts", "../../src/app-router/client/config.ts", "../../src/app-router/client/auth.ts", "../../src/app-router/client/index.ts", "../../src/app-router/server/providers/TernSecureServerProvider.tsx", "../../src/hooks/useAuth.ts", "../../src/components/sign-in.tsx", "../../src/utils/create-styles.ts"],
4
+ "sourcesContent": ["'use client'\r\n\r\nimport React, { createContext, useContext } from 'react'\r\nimport { TernSecureState } from '../../../types'\r\n\r\nconst createTernSecureContext = () => {\r\n const 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\n return createContext<[TernSecureState, React.Dispatch<React.SetStateAction<TernSecureState>>]>([initialState, () => {}])\r\n}\r\n\r\n// Create context instance only when imported on client\r\nconst TernSecureContext = createTernSecureContext()\r\n\r\nconst useTernSecure = (hookname?: string) => {\r\n const context = 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\n// Export initial state for reuse\r\nexport const 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\nexport {\r\n TernSecureContext,\r\n useTernSecure\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}", "export { TernSecureAuth, TernSecureFirestore, TernSecureStorage, signInWithEmail, loadFireConfig, validateConfig, TernSecureContext, useTernSecure, TernSecureClientProvider } from './app-router/client'\r\nexport { TernSecureProvider } from './app-router/server'\r\nexport { useAuth } from './hooks/useAuth' \r\nexport { SignIn } from './components/sign-in'", "import { getApps, 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 { loadFireConfig, validateConfig } from './config';\r\n\r\n// Initialize immediately\r\nconst app = (() => {\r\n const config = validateConfig(loadFireConfig());\r\n return getApps().length ? getApps()[0] : initializeApp(config);\r\n})();\r\n\r\nconst auth = getAuth(app);\r\nsetPersistence(auth, browserSessionPersistence); //to change later user should be able to choose persistance\r\nconst firestore = getFirestore(app);\r\nconst storage = getStorage(app);\r\n\r\nexport const TernSecureAuth = () => auth;\r\nexport const TernSecureFirestore = () => firestore;\r\nexport const TernSecureStorage = () => storage;", "import { TernSecureConfig } from \"../../types\";\r\n\r\nexport const loadFireConfig = (): TernSecureConfig => ({\r\n apiKey: process.env.NEXT_PUBLIC_FIREBASE_API_KEY as string,\r\n authDomain: process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN as string,\r\n projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID as string,\r\n storageBucket: process.env.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET as string,\r\n messagingSenderId: process.env.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID as string,\r\n appId: process.env.NEXT_PUBLIC_FIREBASE_APP_ID as string,\r\n measurementId: process.env.NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID as string,\r\n});\r\n\r\nexport const validateConfig = (config: TernSecureConfig): TernSecureConfig => {\r\n Object.entries(config).forEach(([key, value]) => {\r\n if (!value) {\r\n throw new Error(`Missing environment variable: NEXT_PUBLIC_FIREBASE_${key.toUpperCase()}`);\r\n }\r\n });\r\n return config;\r\n};", "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} ", "'use client'\r\nexport { \r\n TernSecureAuth,\r\n TernSecureFirestore,\r\n TernSecureStorage \r\n } from './client-init';\r\n\r\n export type { SignInCredentials } from './auth'\r\n\r\n export { signInWithEmail} from './auth'\r\n export { loadFireConfig, validateConfig } from './config';\r\n export { TernSecureContext, useTernSecure } from './providers/ternSecureContext';\r\n export { TernSecureClientProvider } from './providers/ternSecureClientProvider'", "import React, { ReactNode } from 'react';\r\nimport dynamic from 'next/dynamic'\r\n\r\ninterface TernSecureProviderProps {\r\n children: ReactNode;\r\n}\r\n\r\n// Dynamically import the client provider with no SSR\r\nconst TernSecureClientProvider = dynamic(\r\n () => import('../../client/providers/ternSecureClientProvider').then(mod => mod.TernSecureClientProvider),\r\n { \r\n ssr: false\r\n //loading: () => null // Return null or a loading indicator\r\n }\r\n)\r\n\r\nexport function TernSecureProvider({ children }: TernSecureProviderProps) {\r\n // Check if the children contain html/body tags\r\n const isRootLayout = React.Children.toArray(children).some(\r\n child => React.isValidElement(child) && child.type === 'html'\r\n );\r\n\r\n if (isRootLayout) {\r\n // If this is the root layout, inject our provider after the body tag\r\n return React.Children.map(children, child => {\r\n if (React.isValidElement(child) && child.type === 'html') {\r\n return React.cloneElement(child, {}, \r\n React.Children.map(child.props.children, bodyChild => {\r\n if (React.isValidElement(bodyChild) && bodyChild.type === 'body') {\r\n // Type assertion to access props safely\r\n const bodyProps = bodyChild.props as { children: ReactNode };\r\n return React.cloneElement(bodyChild, {}, \r\n <TernSecureClientProvider>\r\n {bodyProps.children}\r\n </TernSecureClientProvider>\r\n );\r\n }\r\n return bodyChild;\r\n })\r\n );\r\n }\r\n return child;\r\n });\r\n }\r\n\r\n // For non-root layouts, wrap normally\r\n return <TernSecureClientProvider>{children}</TernSecureClientProvider>;\r\n}", "'use client'\r\n\r\nimport { useEffect } from 'react'\r\nimport { TernSecureAuth } from '../app-router/client'\r\nimport { useTernSecure } from '../app-router/client/'\r\n\r\nexport function useAuth() {\r\n const [state, setState] = useTernSecure('useAuth')\r\n\r\n useEffect(() => {\r\n try {\r\n const auth = TernSecureAuth() // This initializes Firebase\r\n setState(prev => ({\r\n ...prev,\r\n firebase: {\r\n initialized: true,\r\n error: null\r\n }\r\n }))\r\n\r\n const unsubscribe = auth.onAuthStateChanged(\r\n (user) => {\r\n setState(prev => ({\r\n ...prev,\r\n auth: {\r\n user,\r\n loading: false,\r\n error: null,\r\n isSignedIn: !!user\r\n }\r\n }))\r\n },\r\n (error) => {\r\n setState(prev => ({\r\n ...prev,\r\n auth: {\r\n user: null,\r\n loading: false,\r\n error,\r\n isSignedIn: false\r\n }\r\n }))\r\n }\r\n )\r\n\r\n return () => unsubscribe()\r\n } catch (error) {\r\n setState(prev => ({\r\n ...prev,\r\n firebase: {\r\n initialized: false,\r\n error: error as Error\r\n },\r\n auth: {\r\n user: null,\r\n loading: false,\r\n error: error as Error,\r\n isSignedIn: false\r\n }\r\n }))\r\n }\r\n }, []) // Only run once on mount\r\n\r\n return state.auth\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", "'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"],
5
+ "mappings": "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",
6
+ "names": ["initialState", "import_react", "import_auth", "auth", "import_react", "import_jsx_runtime", "TernSecureClientProvider", "dynamic", "React", "import_react", "auth", "import_react", "styles", "import_jsx_runtime"]
7
+ }
@@ -0,0 +1,7 @@
1
+ import { type UserCredential } from 'firebase/auth';
2
+ export interface SignInCredentials {
3
+ email: string;
4
+ password: string;
5
+ }
6
+ export declare function signInWithEmail({ email, password }: SignInCredentials): Promise<UserCredential>;
7
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/app-router/client/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAA8B,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AAE/E,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,wBAAsB,eAAe,CAAC,EACpC,KAAK,EACL,QAAQ,EACT,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,CAG7C"}
@@ -0,0 +1,4 @@
1
+ export declare const TernSecureAuth: () => import("@firebase/auth").Auth;
2
+ export declare const TernSecureFirestore: () => import("@firebase/firestore").Firestore;
3
+ export declare const TernSecureStorage: () => import("@firebase/storage").FirebaseStorage;
4
+ //# sourceMappingURL=client-init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-init.d.ts","sourceRoot":"","sources":["../../../../src/app-router/client/client-init.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,cAAc,qCAAa,CAAC;AACzC,eAAO,MAAM,mBAAmB,+CAAkB,CAAC;AACnD,eAAO,MAAM,iBAAiB,mDAAgB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import {
2
+ TernSecureAuth,
3
+ TernSecureFirestore,
4
+ TernSecureStorage
5
+ } from "../../chunk-RHUIR5LX.js";
6
+ import "../../chunk-5DISHXED.js";
7
+ export {
8
+ TernSecureAuth,
9
+ TernSecureFirestore,
10
+ TernSecureStorage
11
+ };
12
+ //# sourceMappingURL=client-init.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,4 @@
1
+ import { TernSecureConfig } from "../../types";
2
+ export declare const loadFireConfig: () => TernSecureConfig;
3
+ export declare const validateConfig: (config: TernSecureConfig) => TernSecureConfig;
4
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/app-router/client/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,eAAO,MAAM,cAAc,QAAO,gBAQhC,CAAC;AAEH,eAAO,MAAM,cAAc,WAAY,gBAAgB,KAAG,gBAOzD,CAAC"}
@@ -0,0 +1,9 @@
1
+ import {
2
+ loadFireConfig,
3
+ validateConfig
4
+ } from "../../chunk-5DISHXED.js";
5
+ export {
6
+ loadFireConfig,
7
+ validateConfig
8
+ };
9
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,7 @@
1
+ export { TernSecureAuth, TernSecureFirestore, TernSecureStorage } from './client-init';
2
+ export type { SignInCredentials } from './auth';
3
+ export { signInWithEmail } from './auth';
4
+ export { loadFireConfig, validateConfig } from './config';
5
+ export { TernSecureContext, useTernSecure } from './providers/ternSecureContext';
6
+ export { TernSecureClientProvider } from './providers/ternSecureClientProvider';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/app-router/client/index.ts"],"names":[],"mappings":"AACA,OAAO,EACH,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,eAAe,CAAC;AAEvB,YAAY,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAA;AAE/C,OAAO,EAAE,eAAe,EAAC,MAAM,QAAQ,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA"}
@@ -0,0 +1,30 @@
1
+ "use client";
2
+ import {
3
+ signInWithEmail
4
+ } from "../../chunk-CGWE73OH.js";
5
+ import {
6
+ TernSecureAuth,
7
+ TernSecureFirestore,
8
+ TernSecureStorage
9
+ } from "../../chunk-RHUIR5LX.js";
10
+ import {
11
+ loadFireConfig,
12
+ validateConfig
13
+ } from "../../chunk-5DISHXED.js";
14
+ import {
15
+ TernSecureClientProvider,
16
+ TernSecureContext,
17
+ useTernSecure
18
+ } from "../../chunk-ZOPSCDBD.js";
19
+ export {
20
+ TernSecureAuth,
21
+ TernSecureClientProvider,
22
+ TernSecureContext,
23
+ TernSecureFirestore,
24
+ TernSecureStorage,
25
+ loadFireConfig,
26
+ signInWithEmail,
27
+ useTernSecure,
28
+ validateConfig
29
+ };
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export declare function TernSecureClientProvider({ children }: {
3
+ children: React.ReactNode;
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ //# sourceMappingURL=ternSecureClientProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ternSecureClientProvider.d.ts","sourceRoot":"","sources":["../../../../../src/app-router/client/providers/ternSecureClientProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAGvC,wBAAgB,wBAAwB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAQnF"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { TernSecureState } from '../../../types';
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 };
7
+ //# sourceMappingURL=ternSecureContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ternSecureContext.d.ts","sourceRoot":"","sources":["../../../../../src/app-router/client/providers/ternSecureContext.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAoC,MAAM,OAAO,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAoBhD,QAAA,MAAM,iBAAiB,yFAA4B,CAAA;AAEnD,QAAA,MAAM,aAAa,cAAe,MAAM,6EAOvC,CAAA;AAGD,eAAO,MAAM,YAAY,EAAE,eAW1B,CAAA;AAED,OAAO,EACL,iBAAiB,EACjB,aAAa,EACd,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { TernSecureProvider } from './providers/TernSecureServerProvider';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/app-router/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import {
2
+ TernSecureProvider
3
+ } from "../../chunk-HXT5FXLI.js";
4
+ export {
5
+ TernSecureProvider
6
+ };
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,7 @@
1
+ import React, { ReactNode } from 'react';
2
+ interface TernSecureProviderProps {
3
+ children: ReactNode;
4
+ }
5
+ export declare function TernSecureProvider({ children }: TernSecureProviderProps): import("react/jsx-runtime").JSX.Element | (string | number | React.ReactElement<any, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode>)[] | null | undefined;
6
+ export {};
7
+ //# sourceMappingURL=TernSecureServerProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TernSecureServerProvider.d.ts","sourceRoot":"","sources":["../../../../../src/app-router/server/providers/TernSecureServerProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGzC,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAWD,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,EAAE,uBAAuB,qLA+BvE"}