@tern-secure/nextjs 4.2.10 → 5.0.0

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 (232) hide show
  1. package/README.md +33 -33
  2. package/dist/cjs/app-router/admin/index.js +5 -8
  3. package/dist/cjs/app-router/admin/index.js.map +1 -1
  4. package/dist/cjs/app-router/admin/sessionTernSecure.js +3 -6
  5. package/dist/cjs/app-router/admin/sessionTernSecure.js.map +1 -1
  6. package/dist/cjs/app-router/client/TernSecureProvider.js +10 -18
  7. package/dist/cjs/app-router/client/TernSecureProvider.js.map +1 -1
  8. package/dist/cjs/app-router/client/actions.js +1 -177
  9. package/dist/cjs/app-router/client/actions.js.map +1 -1
  10. package/dist/cjs/app-router/route-handler/internal-route.js +4 -35
  11. package/dist/cjs/app-router/route-handler/internal-route.js.map +1 -1
  12. package/dist/cjs/boundary/{hooks/useSignUp.js → components.js} +16 -16
  13. package/dist/cjs/boundary/components.js.map +1 -0
  14. package/dist/cjs/{lib/utils.js → boundary/hooks.js} +9 -11
  15. package/dist/cjs/boundary/hooks.js.map +1 -0
  16. package/dist/cjs/{boundary/TernSecureCtx.js → components/uiComponents.js} +17 -24
  17. package/dist/cjs/components/uiComponents.js.map +1 -0
  18. package/dist/cjs/errors.js +1 -0
  19. package/dist/cjs/errors.js.map +1 -1
  20. package/dist/cjs/index.js +13 -27
  21. package/dist/cjs/index.js.map +1 -1
  22. package/dist/cjs/server/auth.js +4 -5
  23. package/dist/cjs/server/auth.js.map +1 -1
  24. package/dist/cjs/server/crypto.js.map +1 -1
  25. package/dist/cjs/server/ctx-store.js +1 -2
  26. package/dist/cjs/server/ctx-store.js.map +1 -1
  27. package/dist/cjs/server/edge-session.js +6 -7
  28. package/dist/cjs/server/edge-session.js.map +1 -1
  29. package/dist/cjs/server/index.js.map +1 -1
  30. package/dist/cjs/server/jwt-edge.js.map +1 -1
  31. package/dist/cjs/server/jwt.js.map +1 -1
  32. package/dist/cjs/server/session-store.js +3 -1
  33. package/dist/cjs/server/session-store.js.map +1 -1
  34. package/dist/cjs/server/ternSecureMiddleware.js.map +1 -1
  35. package/dist/cjs/server/types.js.map +1 -1
  36. package/dist/cjs/server/utils.js.map +1 -1
  37. package/dist/cjs/types.js.map +1 -1
  38. package/dist/cjs/utils/admin-init.js +3 -0
  39. package/dist/cjs/utils/admin-init.js.map +1 -1
  40. package/dist/cjs/utils/allNextProviderProps.js +108 -0
  41. package/dist/cjs/utils/allNextProviderProps.js.map +1 -0
  42. package/dist/cjs/utils/client-init.js +2 -47
  43. package/dist/cjs/utils/client-init.js.map +1 -1
  44. package/dist/cjs/utils/config.js.map +1 -1
  45. package/dist/cjs/utils/construct.js.map +1 -1
  46. package/dist/cjs/utils/create-styles.js.map +1 -1
  47. package/dist/cjs/utils/redirect.js.map +1 -1
  48. package/dist/cjs/{components/ui/separator.js → utils/tern-ui-script.js} +41 -24
  49. package/dist/cjs/utils/tern-ui-script.js.map +1 -0
  50. package/dist/esm/app-router/admin/index.js +6 -4
  51. package/dist/esm/app-router/admin/index.js.map +1 -1
  52. package/dist/esm/app-router/admin/sessionTernSecure.js +3 -6
  53. package/dist/esm/app-router/admin/sessionTernSecure.js.map +1 -1
  54. package/dist/esm/app-router/client/TernSecureProvider.js +13 -19
  55. package/dist/esm/app-router/client/TernSecureProvider.js.map +1 -1
  56. package/dist/esm/app-router/client/actions.js +1 -157
  57. package/dist/esm/app-router/client/actions.js.map +1 -1
  58. package/dist/esm/app-router/route-handler/internal-route.js +5 -30
  59. package/dist/esm/app-router/route-handler/internal-route.js.map +1 -1
  60. package/dist/esm/boundary/components.js +18 -0
  61. package/dist/esm/boundary/components.js.map +1 -0
  62. package/dist/esm/boundary/hooks.js +9 -0
  63. package/dist/esm/boundary/hooks.js.map +1 -0
  64. package/dist/esm/components/uiComponents.js +21 -0
  65. package/dist/esm/components/uiComponents.js.map +1 -0
  66. package/dist/esm/errors.js +1 -0
  67. package/dist/esm/errors.js.map +1 -1
  68. package/dist/esm/index.js +15 -16
  69. package/dist/esm/index.js.map +1 -1
  70. package/dist/esm/server/auth.js +4 -5
  71. package/dist/esm/server/auth.js.map +1 -1
  72. package/dist/esm/server/crypto.js.map +1 -1
  73. package/dist/esm/server/ctx-store.js +1 -2
  74. package/dist/esm/server/ctx-store.js.map +1 -1
  75. package/dist/esm/server/edge-session.js +6 -7
  76. package/dist/esm/server/edge-session.js.map +1 -1
  77. package/dist/esm/server/index.js.map +1 -1
  78. package/dist/esm/server/jwt-edge.js.map +1 -1
  79. package/dist/esm/server/jwt.js.map +1 -1
  80. package/dist/esm/server/session-store.js +3 -1
  81. package/dist/esm/server/session-store.js.map +1 -1
  82. package/dist/esm/server/ternSecureMiddleware.js.map +1 -1
  83. package/dist/esm/server/utils.js.map +1 -1
  84. package/dist/esm/types.js.map +1 -1
  85. package/dist/esm/utils/admin-init.js +2 -0
  86. package/dist/esm/utils/admin-init.js.map +1 -1
  87. package/dist/esm/utils/allNextProviderProps.js +84 -0
  88. package/dist/esm/utils/allNextProviderProps.js.map +1 -0
  89. package/dist/esm/utils/client-init.js +2 -21
  90. package/dist/esm/utils/client-init.js.map +1 -1
  91. package/dist/esm/utils/config.js.map +1 -1
  92. package/dist/esm/utils/construct.js.map +1 -1
  93. package/dist/esm/utils/create-styles.js.map +1 -1
  94. package/dist/esm/utils/redirect.js.map +1 -1
  95. package/dist/esm/utils/tern-ui-script.js +42 -0
  96. package/dist/esm/utils/tern-ui-script.js.map +1 -0
  97. package/dist/types/app-router/admin/index.d.ts +1 -2
  98. package/dist/types/app-router/admin/index.d.ts.map +1 -1
  99. package/dist/types/app-router/client/TernSecureProvider.d.ts +2 -14
  100. package/dist/types/app-router/client/TernSecureProvider.d.ts.map +1 -1
  101. package/dist/types/app-router/client/actions.d.ts +1 -54
  102. package/dist/types/app-router/client/actions.d.ts.map +1 -1
  103. package/dist/types/app-router/route-handler/internal-route.d.ts +1 -15
  104. package/dist/types/app-router/route-handler/internal-route.d.ts.map +1 -1
  105. package/dist/types/boundary/components.d.ts +2 -0
  106. package/dist/types/boundary/components.d.ts.map +1 -0
  107. package/dist/types/boundary/hooks.d.ts +2 -0
  108. package/dist/types/boundary/hooks.d.ts.map +1 -0
  109. package/dist/types/components/uiComponents.d.ts +6 -0
  110. package/dist/types/components/uiComponents.d.ts.map +1 -0
  111. package/dist/types/errors.d.ts +1 -1
  112. package/dist/types/errors.d.ts.map +1 -1
  113. package/dist/types/index.d.ts +3 -9
  114. package/dist/types/index.d.ts.map +1 -1
  115. package/dist/types/server/ternSecureMiddleware.d.ts.map +1 -1
  116. package/dist/types/types.d.ts +6 -13
  117. package/dist/types/types.d.ts.map +1 -1
  118. package/dist/types/utils/admin-init.d.ts +2 -1
  119. package/dist/types/utils/admin-init.d.ts.map +1 -1
  120. package/dist/types/utils/allNextProviderProps.d.ts +6 -0
  121. package/dist/types/utils/allNextProviderProps.d.ts.map +1 -0
  122. package/dist/types/utils/client-init.d.ts +1 -4
  123. package/dist/types/utils/client-init.d.ts.map +1 -1
  124. package/dist/types/utils/config.d.ts +1 -1
  125. package/dist/types/utils/config.d.ts.map +1 -1
  126. package/dist/types/utils/construct.d.ts.map +1 -1
  127. package/dist/types/utils/tern-ui-script.d.ts +8 -0
  128. package/dist/types/utils/tern-ui-script.d.ts.map +1 -0
  129. package/package.json +41 -51
  130. package/dist/cjs/boundary/TernSecureClientProvider.js +0 -240
  131. package/dist/cjs/boundary/TernSecureClientProvider.js.map +0 -1
  132. package/dist/cjs/boundary/TernSecureCtx.js.map +0 -1
  133. package/dist/cjs/boundary/hooks/useAuth.js +0 -63
  134. package/dist/cjs/boundary/hooks/useAuth.js.map +0 -1
  135. package/dist/cjs/boundary/hooks/useSignUp.js.map +0 -1
  136. package/dist/cjs/components/background.js +0 -65
  137. package/dist/cjs/components/background.js.map +0 -1
  138. package/dist/cjs/components/sign-in.js +0 -368
  139. package/dist/cjs/components/sign-in.js.map +0 -1
  140. package/dist/cjs/components/sign-out-button.js +0 -84
  141. package/dist/cjs/components/sign-out-button.js.map +0 -1
  142. package/dist/cjs/components/sign-out.js +0 -99
  143. package/dist/cjs/components/sign-out.js.map +0 -1
  144. package/dist/cjs/components/sign-up.js +0 -332
  145. package/dist/cjs/components/sign-up.js.map +0 -1
  146. package/dist/cjs/components/ui/alert.js +0 -88
  147. package/dist/cjs/components/ui/alert.js.map +0 -1
  148. package/dist/cjs/components/ui/button.js +0 -84
  149. package/dist/cjs/components/ui/button.js.map +0 -1
  150. package/dist/cjs/components/ui/card.js +0 -101
  151. package/dist/cjs/components/ui/card.js.map +0 -1
  152. package/dist/cjs/components/ui/input.js +0 -58
  153. package/dist/cjs/components/ui/input.js.map +0 -1
  154. package/dist/cjs/components/ui/label.js +0 -55
  155. package/dist/cjs/components/ui/label.js.map +0 -1
  156. package/dist/cjs/components/ui/separator.js.map +0 -1
  157. package/dist/cjs/components/verify.js +0 -195
  158. package/dist/cjs/components/verify.js.map +0 -1
  159. package/dist/cjs/lib/utils.d.js +0 -17
  160. package/dist/cjs/lib/utils.d.js.map +0 -1
  161. package/dist/cjs/lib/utils.js.map +0 -1
  162. package/dist/esm/boundary/TernSecureClientProvider.js +0 -216
  163. package/dist/esm/boundary/TernSecureClientProvider.js.map +0 -1
  164. package/dist/esm/boundary/TernSecureCtx.js +0 -23
  165. package/dist/esm/boundary/TernSecureCtx.js.map +0 -1
  166. package/dist/esm/boundary/hooks/useAuth.js +0 -39
  167. package/dist/esm/boundary/hooks/useAuth.js.map +0 -1
  168. package/dist/esm/boundary/hooks/useSignUp.js +0 -16
  169. package/dist/esm/boundary/hooks/useSignUp.js.map +0 -1
  170. package/dist/esm/components/background.js +0 -41
  171. package/dist/esm/components/background.js.map +0 -1
  172. package/dist/esm/components/sign-in.js +0 -344
  173. package/dist/esm/components/sign-in.js.map +0 -1
  174. package/dist/esm/components/sign-out-button.js +0 -60
  175. package/dist/esm/components/sign-out-button.js.map +0 -1
  176. package/dist/esm/components/sign-out.js +0 -65
  177. package/dist/esm/components/sign-out.js.map +0 -1
  178. package/dist/esm/components/sign-up.js +0 -298
  179. package/dist/esm/components/sign-up.js.map +0 -1
  180. package/dist/esm/components/ui/alert.js +0 -52
  181. package/dist/esm/components/ui/alert.js.map +0 -1
  182. package/dist/esm/components/ui/button.js +0 -49
  183. package/dist/esm/components/ui/button.js.map +0 -1
  184. package/dist/esm/components/ui/card.js +0 -62
  185. package/dist/esm/components/ui/card.js.map +0 -1
  186. package/dist/esm/components/ui/input.js +0 -24
  187. package/dist/esm/components/ui/input.js.map +0 -1
  188. package/dist/esm/components/ui/label.js +0 -21
  189. package/dist/esm/components/ui/label.js.map +0 -1
  190. package/dist/esm/components/ui/separator.js +0 -25
  191. package/dist/esm/components/ui/separator.js.map +0 -1
  192. package/dist/esm/components/verify.js +0 -161
  193. package/dist/esm/components/verify.js.map +0 -1
  194. package/dist/esm/lib/utils.d.js +0 -1
  195. package/dist/esm/lib/utils.d.js.map +0 -1
  196. package/dist/esm/lib/utils.js +0 -9
  197. package/dist/esm/lib/utils.js.map +0 -1
  198. package/dist/types/boundary/TernSecureClientProvider.d.ts +0 -27
  199. package/dist/types/boundary/TernSecureClientProvider.d.ts.map +0 -1
  200. package/dist/types/boundary/TernSecureCtx.d.ts +0 -11
  201. package/dist/types/boundary/TernSecureCtx.d.ts.map +0 -1
  202. package/dist/types/boundary/hooks/useAuth.d.ts +0 -15
  203. package/dist/types/boundary/hooks/useAuth.d.ts.map +0 -1
  204. package/dist/types/boundary/hooks/useSignUp.d.ts +0 -5
  205. package/dist/types/boundary/hooks/useSignUp.d.ts.map +0 -1
  206. package/dist/types/components/background.d.ts +0 -2
  207. package/dist/types/components/background.d.ts.map +0 -1
  208. package/dist/types/components/sign-in.d.ts +0 -18
  209. package/dist/types/components/sign-in.d.ts.map +0 -1
  210. package/dist/types/components/sign-out-button.d.ts +0 -14
  211. package/dist/types/components/sign-out-button.d.ts.map +0 -1
  212. package/dist/types/components/sign-out.d.ts +0 -12
  213. package/dist/types/components/sign-out.d.ts.map +0 -1
  214. package/dist/types/components/sign-up.d.ts +0 -11
  215. package/dist/types/components/sign-up.d.ts.map +0 -1
  216. package/dist/types/components/ui/alert.d.ts +0 -9
  217. package/dist/types/components/ui/alert.d.ts.map +0 -1
  218. package/dist/types/components/ui/button.d.ts +0 -12
  219. package/dist/types/components/ui/button.d.ts.map +0 -1
  220. package/dist/types/components/ui/card.d.ts +0 -9
  221. package/dist/types/components/ui/card.d.ts.map +0 -1
  222. package/dist/types/components/ui/input.d.ts +0 -4
  223. package/dist/types/components/ui/input.d.ts.map +0 -1
  224. package/dist/types/components/ui/label.d.ts +0 -6
  225. package/dist/types/components/ui/label.d.ts.map +0 -1
  226. package/dist/types/components/ui/separator.d.ts +0 -5
  227. package/dist/types/components/ui/separator.d.ts.map +0 -1
  228. package/dist/types/components/verify.d.ts +0 -2
  229. package/dist/types/components/verify.d.ts.map +0 -1
  230. package/dist/types/lib/utils.d.ts +0 -3
  231. package/dist/types/lib/utils.d.ts.map +0 -1
  232. package/server/package.json +0 -5
@@ -1,240 +0,0 @@
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 TernSecureClientProvider_exports = {};
21
- __export(TernSecureClientProvider_exports, {
22
- TernSecureClientProvider: () => TernSecureClientProvider
23
- });
24
- module.exports = __toCommonJS(TernSecureClientProvider_exports);
25
- var import_jsx_runtime = require("react/jsx-runtime");
26
- var import_react = require("react");
27
- var import_client_init = require("../utils/client-init");
28
- var import_auth = require("firebase/auth");
29
- var import_TernSecureCtx = require("./TernSecureCtx");
30
- var import_navigation = require("next/navigation");
31
- var import_internal_route = require("../app-router/route-handler/internal-route");
32
- var import_construct = require("../utils/construct");
33
- function TernSecureClientProvider({
34
- children,
35
- loginPath = process.env.NEXT_PUBLIC_SIGN_IN_PATH || "/sign-in",
36
- signUpPath = process.env.NEXT_PUBLIC_SIGN_UP_PATH || "/sign-up",
37
- loadingComponent,
38
- requiresVerification
39
- }) {
40
- const auth = (0, import_react.useMemo)(() => import_client_init.ternSecureAuth, []);
41
- const router = (0, import_navigation.useRouter)();
42
- const pathname = (0, import_navigation.usePathname)();
43
- const [isRedirecting, setIsRedirecting] = (0, import_react.useState)(false);
44
- const [authState, setAuthState] = (0, import_react.useState)(() => ({
45
- userId: null,
46
- isLoaded: false,
47
- error: null,
48
- isValid: false,
49
- isVerified: false,
50
- isAuthenticated: false,
51
- token: null,
52
- email: null,
53
- status: "loading",
54
- requiresVerification
55
- }));
56
- const constructUrlWithRedirect = (0, import_react.useCallback)(
57
- (loginPath2, currentPath, loginPathParam, signUpPathParam) => {
58
- const baseUrl = window.location.origin;
59
- const signInUrl = new URL(loginPath2, baseUrl);
60
- if (!currentPath.includes(loginPathParam) && !currentPath.includes(signUpPathParam)) {
61
- signInUrl.searchParams.set("redirect", currentPath);
62
- }
63
- return signInUrl.toString();
64
- },
65
- []
66
- );
67
- const shouldRedirect = (0, import_react.useCallback)(
68
- (pathname2, isVerified) => {
69
- const searchParams = new URLSearchParams(window.location.search);
70
- if ((0, import_internal_route.isBaseAuthRoute)(pathname2) && !searchParams.has("redirect")) {
71
- return false;
72
- }
73
- if ((0, import_internal_route.isInternalRoute)(pathname2)) {
74
- return false;
75
- }
76
- if ((0, import_internal_route.isAuthRoute)(pathname2) && (!requiresVerification || isVerified)) {
77
- return false;
78
- }
79
- return true;
80
- },
81
- [requiresVerification]
82
- );
83
- const redirectToLogin = (0, import_react.useCallback)(
84
- (currentPath) => {
85
- const path = currentPath || pathname || "/";
86
- if ((0, import_internal_route.isInternalRoute)(path)) {
87
- return;
88
- }
89
- if ((0, import_construct.hasRedirectLoop)(path, loginPath)) {
90
- return;
91
- }
92
- setIsRedirecting(true);
93
- const loginUrl = constructUrlWithRedirect(loginPath, path, loginPath, signUpPath);
94
- if (process.env.NODE_ENV === "production") {
95
- window.location.href = loginUrl;
96
- } else {
97
- router.push(loginUrl);
98
- }
99
- },
100
- [router, loginPath, signUpPath, pathname, constructUrlWithRedirect]
101
- );
102
- const handleSignOut = (0, import_react.useCallback)(async (error) => {
103
- const currentPath = window.location.pathname;
104
- await auth.signOut();
105
- setAuthState({
106
- isLoaded: true,
107
- userId: null,
108
- error: error || null,
109
- isValid: false,
110
- token: null,
111
- email: null,
112
- isVerified: false,
113
- isAuthenticated: false,
114
- status: "unauthenticated",
115
- requiresVerification
116
- });
117
- redirectToLogin(currentPath);
118
- }, [auth, redirectToLogin, requiresVerification]);
119
- const setEmail = (0, import_react.useCallback)((email) => {
120
- setAuthState((prev) => ({
121
- ...prev,
122
- email
123
- }));
124
- }, []);
125
- const getAuthError = (0, import_react.useCallback)(() => {
126
- if (authState.error) {
127
- const error = authState.error;
128
- return {
129
- success: false,
130
- message: error.message,
131
- error: error.code,
132
- user: null
133
- };
134
- }
135
- if (authState.requiresVerification && authState.isValid && !authState.isVerified) {
136
- return {
137
- success: false,
138
- message: "Email verification required",
139
- error: "EMAIL_NOT_VERIFIED",
140
- user: null
141
- };
142
- }
143
- if (!authState.isAuthenticated && authState.status !== "loading") {
144
- return {
145
- success: false,
146
- message: "User is not authenticated",
147
- error: "AUTHENTICATED",
148
- user: null
149
- };
150
- }
151
- return {
152
- success: true,
153
- user: import_client_init.ternSecureAuth.currentUser
154
- };
155
- }, [
156
- authState.error,
157
- authState.isValid,
158
- authState.isVerified,
159
- authState.isAuthenticated,
160
- authState.status,
161
- authState.requiresVerification
162
- ]);
163
- (0, import_react.useEffect)(() => {
164
- let mounted = true;
165
- let initialLoad = true;
166
- const unsubscribe = (0, import_auth.onAuthStateChanged)(
167
- auth,
168
- async (user) => {
169
- if (!mounted) return;
170
- try {
171
- if (user) {
172
- const isValid = !!user.uid;
173
- const isVerified = user.emailVerified;
174
- const isAuthenticated = isValid && (!requiresVerification || isVerified);
175
- setAuthState({
176
- isLoaded: true,
177
- userId: user.uid,
178
- isValid,
179
- isVerified,
180
- isAuthenticated: isValid && isVerified,
181
- token: user.getIdToken(),
182
- error: null,
183
- email: user.email,
184
- status: isAuthenticated ? "authenticated" : "unverified",
185
- requiresVerification
186
- });
187
- if (requiresVerification && !isVerified && shouldRedirect(pathname || "", isVerified)) {
188
- if (initialLoad || !isRedirecting) {
189
- redirectToLogin(pathname);
190
- }
191
- }
192
- } else {
193
- setAuthState({
194
- isLoaded: true,
195
- userId: null,
196
- isValid: false,
197
- isVerified: false,
198
- isAuthenticated: false,
199
- token: null,
200
- error: null,
201
- email: null,
202
- status: "unauthenticated",
203
- requiresVerification
204
- });
205
- if (shouldRedirect(pathname || "", false) && initialLoad) {
206
- redirectToLogin();
207
- }
208
- }
209
- } catch (error) {
210
- console.error("Auth state change error:", error);
211
- if (mounted) {
212
- handleSignOut(error instanceof Error ? error : new Error("Authentication error occurred"));
213
- }
214
- } finally {
215
- initialLoad = false;
216
- }
217
- }
218
- );
219
- return () => {
220
- mounted = false;
221
- unsubscribe();
222
- };
223
- }, [auth, handleSignOut, redirectToLogin, requiresVerification, pathname, isRedirecting, shouldRedirect]);
224
- const contextValue = (0, import_react.useMemo)(() => ({
225
- ...authState,
226
- signOut: handleSignOut,
227
- setEmail,
228
- getAuthError,
229
- redirectToLogin
230
- }), [authState, handleSignOut, setEmail, getAuthError, redirectToLogin]);
231
- if (!authState.isLoaded) {
232
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_TernSecureCtx.TernSecureCtx.Provider, { value: contextValue, children: loadingComponent || /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { "aria-live": "polite", "aria-busy": "true", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "sr-only", children: "Loading authentication state..." }) }) });
233
- }
234
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_TernSecureCtx.TernSecureCtx.Provider, { value: contextValue, children });
235
- }
236
- // Annotate the CommonJS export names for ESM import in node:
237
- 0 && (module.exports = {
238
- TernSecureClientProvider
239
- });
240
- //# sourceMappingURL=TernSecureClientProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/boundary/TernSecureClientProvider.tsx"],"sourcesContent":["\"use client\"\n\nimport React, { useState, useEffect, useMemo, useCallback } from 'react'\nimport { ternSecureAuth } from '../utils/client-init'\nimport { onAuthStateChanged, User } from \"firebase/auth\"\nimport { TernSecureCtx, TernSecureCtxValue } from './TernSecureCtx'\nimport type { TernSecureState, AuthError, SignInResponse } from \"../types\"\nimport type { ERRORS } from '../errors'\nimport { useRouter, usePathname } from 'next/navigation'\nimport { isBaseAuthRoute, isInternalRoute, isAuthRoute} from '../app-router/route-handler/internal-route'\nimport { hasRedirectLoop } from '../utils/construct'\n\n\n\n/**\n * @internal\n * Internal provider props - not meant for direct usage\n */\ninterface TernSecureClientProviderProps {\n children: React.ReactNode\n /** Callback when user state changes */\n onUserChanged?: (user: User | null) => Promise<void>\n /** Login page path */\n loginPath?: string\n /** Signup page path */\n signUpPath?: string\n /** Custom loading component */\n loadingComponent?: React.ReactNode\n /** Whether email verification is required */\n requiresVerification: boolean\n}\n\n/**\n * @internal\n * Internal provider component that handles authentication state\n * This is wrapped by the public TernSecureProvider\n */\n\nexport function TernSecureClientProvider({ \n children, \n loginPath = process.env.NEXT_PUBLIC_SIGN_IN_PATH || '/sign-in',\n signUpPath = process.env.NEXT_PUBLIC_SIGN_UP_PATH || '/sign-up',\n loadingComponent,\n requiresVerification,\n}: TernSecureClientProviderProps) {\n const auth = useMemo(() => ternSecureAuth, []);\n const router = useRouter();\n const pathname = usePathname() // Get current pathname\n const [isRedirecting, setIsRedirecting] = useState(false)\n\n const [authState, setAuthState] = useState<TernSecureState>(() => ({\n userId: null,\n isLoaded: false,\n error: null,\n isValid: false,\n isVerified: false,\n isAuthenticated: false,\n token: null,\n email: null,\n status: \"loading\",\n requiresVerification,\n }));\n\n const constructUrlWithRedirect = useCallback(\n (loginPath: string, currentPath: string, loginPathParam: string, signUpPathParam: string): string => {\n const baseUrl = window.location.origin\n const signInUrl = new URL(loginPath, baseUrl)\n\n // Only add redirect if not already on login or signup page\n if (!currentPath.includes(loginPathParam) && !currentPath.includes(signUpPathParam)) {\n signInUrl.searchParams.set(\"redirect\", currentPath)\n }\n return signInUrl.toString()\n },\n [],\n )\n\n\n const shouldRedirect = useCallback(\n (pathname: string, isVerified: boolean) => {\n // Get current search params\n const searchParams = new URLSearchParams(window.location.search)\n\n // Don't redirect if we're on the base sign-in page with no redirect param\n if (isBaseAuthRoute(pathname) && !searchParams.has(\"redirect\")) {\n return false\n }\n\n // Don't redirect if we're on an internal route\n if (isInternalRoute(pathname)) {\n return false\n }\n\n // Don't redirect if we're in auth routes (except when handling verification)\n if (isAuthRoute(pathname) && (!requiresVerification || isVerified)) {\n return false\n }\n\n return true\n },\n [requiresVerification],\n )\n\n const redirectToLogin = useCallback(\n (currentPath?: string) => {\n const path = currentPath || pathname || \"/\"\n\n\n if (isInternalRoute(path)) { // Don't redirect if we're already on an internal route\n return\n }\n\n // Check for redirect loops\n if (hasRedirectLoop(path, loginPath)) {\n return\n }\n\n setIsRedirecting(true)\n\n const loginUrl = constructUrlWithRedirect(loginPath, path, loginPath, signUpPath)\n\n if (process.env.NODE_ENV === \"production\") {\n window.location.href = loginUrl\n } else {\n // Use router.push for development\n router.push(loginUrl)\n }\n }, \n [router, loginPath, signUpPath, pathname, constructUrlWithRedirect]\n)\n\n const handleSignOut = useCallback(async (error?: Error) => {\n const currentPath = window.location.pathname\n await auth.signOut();\n setAuthState({\n isLoaded: true,\n userId: null,\n error: error || null,\n isValid: false,\n token: null,\n email: null,\n isVerified: false,\n isAuthenticated: false,\n status: \"unauthenticated\",\n requiresVerification,\n })\n redirectToLogin(currentPath)\n }, [auth, redirectToLogin, requiresVerification])\n\n const setEmail = useCallback((email: string) => {\n setAuthState((prev) => ({\n ...prev,\n email,\n }))\n }, [])\n\n const getAuthError = useCallback((): SignInResponse => {\n if (authState.error) {\n const error = authState.error as AuthError;\n return {\n success: false,\n message: error.message,\n error: error.code as keyof typeof ERRORS,\n user: null,\n }\n }\n\n if (authState.requiresVerification && authState.isValid && !authState.isVerified) {\n return {\n success: false,\n message: 'Email verification required',\n error: 'EMAIL_NOT_VERIFIED',\n user: null,\n }\n }\n\n if (!authState.isAuthenticated && authState.status !== \"loading\") {\n return {\n success: false,\n message: 'User is not authenticated',\n error: 'AUTHENTICATED',\n user: null,\n }\n }\n\n return {\n success: true,\n user: ternSecureAuth.currentUser,\n }\n }, [\n authState.error,\n authState.isValid,\n authState.isVerified,\n authState.isAuthenticated,\n authState.status,\n authState.requiresVerification,\n ])\n\nuseEffect(() => {\n let mounted = true\n let initialLoad = true\n\n const unsubscribe = onAuthStateChanged(\n auth,\n async (user: User | null) => {\n if (!mounted) return\n try {\n if (user) {\n const isValid = !!user.uid;\n const isVerified = user.emailVerified;\n const isAuthenticated = isValid && (!requiresVerification || isVerified) // Consider user authenticated if verification is not required or if email is verified\n\n setAuthState({\n isLoaded: true,\n userId: user.uid,\n isValid,\n isVerified,\n isAuthenticated: isValid && isVerified,\n token: user.getIdToken(),\n error: null,\n email: user.email,\n status: isAuthenticated ? \"authenticated\" : \"unverified\",\n requiresVerification,\n })\n \n if (requiresVerification && !isVerified && shouldRedirect(pathname || \"\", isVerified)) {\n if(initialLoad || !isRedirecting) {\n redirectToLogin(pathname)\n }\n }\n } else {\n setAuthState({\n isLoaded: true,\n userId: null,\n isValid: false,\n isVerified: false,\n isAuthenticated: false,\n token: null,\n error: null,\n email: null,\n status: \"unauthenticated\",\n requiresVerification,\n })\n \n if (shouldRedirect(pathname || \"\", false) && initialLoad) {\n redirectToLogin()\n }\n }\n } catch (error){\n console.error(\"Auth state change error:\", error)\n if (mounted) {\n handleSignOut(error instanceof Error ? error : new Error(\"Authentication error occurred\"))\n }\n } finally {\n initialLoad = false\n }\n })\n \n return () => {\n mounted = false\n unsubscribe()\n }\n }, [auth, handleSignOut, redirectToLogin, requiresVerification, pathname, isRedirecting, shouldRedirect])\n\n const contextValue: TernSecureCtxValue = useMemo(() => ({\n ...authState,\n signOut: handleSignOut,\n setEmail,\n getAuthError,\n redirectToLogin,\n }), [authState, handleSignOut, setEmail, getAuthError, redirectToLogin]);\n\n if (!authState.isLoaded) {\n return (\n <TernSecureCtx.Provider value={contextValue}>\n {loadingComponent || (\n <div aria-live=\"polite\" aria-busy=\"true\">\n <span className=\"sr-only\">Loading authentication state...</span>\n </div>\n )}\n </TernSecureCtx.Provider>\n );\n }\n\n return (\n <TernSecureCtx.Provider value={contextValue}>\n {children}\n </TernSecureCtx.Provider>\n )\n}"],"mappings":"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","names":["loginPath","pathname"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/boundary/TernSecureCtx.tsx"],"sourcesContent":["\"use client\"\n\nimport { createContext, useContext } from 'react'\nimport { ternSecureAuth } from '../utils/client-init';\nimport type { TernSecureState, SignInResponse, TernSecureUser } from '../types';\n\n\nexport const getCurrentUser = (): TernSecureUser | null => {\n return ternSecureAuth.currentUser;\n}\n\nexport interface TernSecureCtxValue extends TernSecureState {\n signOut: () => Promise<void>\n setEmail: (email: string) => void\n getAuthError: () => SignInResponse\n redirectToLogin: () => void\n}\n\nexport const TernSecureCtx = createContext<TernSecureCtxValue | null>(null)\n\nTernSecureCtx.displayName = 'TernSecureCtx'\n\nexport const useTernSecure = (hookName: string) => {\n const context = useContext(TernSecureCtx)\n \n if (!context) {\n throw new Error(\n `${hookName} must be used within TernSecureProvider`\n )\n }\n\n return context\n}\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAA0C;AAC1C,yBAA+B;AAIxB,MAAM,iBAAiB,MAA6B;AACzD,SAAO,kCAAe;AACxB;AASO,MAAM,oBAAgB,4BAAyC,IAAI;AAE1E,cAAc,cAAc;AAErB,MAAM,gBAAgB,CAAC,aAAqB;AACjD,QAAM,cAAU,yBAAW,aAAa;AAExC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI;AAAA,MACR,GAAG,QAAQ;AAAA,IACb;AAAA,EACF;AAEA,SAAO;AACT;","names":[]}
@@ -1,63 +0,0 @@
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 useAuth_exports = {};
21
- __export(useAuth_exports, {
22
- useAuth: () => useAuth
23
- });
24
- module.exports = __toCommonJS(useAuth_exports);
25
- var import_TernSecureCtx = require("../TernSecureCtx");
26
- function useAuth() {
27
- const {
28
- userId,
29
- isLoaded,
30
- error,
31
- isValid,
32
- isVerified,
33
- isAuthenticated,
34
- token,
35
- getAuthError,
36
- status,
37
- requiresVerification,
38
- signOut
39
- } = (0, import_TernSecureCtx.useTernSecure)("useAuth");
40
- const user = (0, import_TernSecureCtx.getCurrentUser)();
41
- const authResponse = getAuthError();
42
- return {
43
- user,
44
- userId,
45
- isLoaded,
46
- error: authResponse.success ? null : authResponse,
47
- isValid,
48
- // User is signed in
49
- isVerified,
50
- // Email is verified
51
- isAuthenticated,
52
- // User is both signed in and verified
53
- token,
54
- status,
55
- requiresVerification,
56
- signOut
57
- };
58
- }
59
- // Annotate the CommonJS export names for ESM import in node:
60
- 0 && (module.exports = {
61
- useAuth
62
- });
63
- //# sourceMappingURL=useAuth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/boundary/hooks/useAuth.ts"],"sourcesContent":["\"use client\"\n\nimport { getCurrentUser, useTernSecure } from '../TernSecureCtx'\nimport type { SignInResponse, TernSecureUser } from '../../types'\n\n\nexport function useAuth() {\n const {\n userId,\n isLoaded,\n error,\n isValid,\n isVerified,\n isAuthenticated,\n token,\n getAuthError,\n status,\n requiresVerification,\n signOut\n } = useTernSecure('useAuth')\n\n const user: TernSecureUser | null = getCurrentUser()\n const authResponse: SignInResponse = getAuthError()\n\n\n return {\n user,\n userId,\n isLoaded,\n error: authResponse.success ? null : authResponse,\n isValid, // User is signed in\n isVerified, // Email is verified\n isAuthenticated, // User is both signed in and verified\n token,\n status,\n requiresVerification,\n signOut\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,2BAA8C;AAIvC,SAAS,UAAU;AACxB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,oCAAc,SAAS;AAE3B,QAAM,WAA8B,qCAAe;AACnD,QAAM,eAA+B,aAAa;AAGlD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,aAAa,UAAU,OAAO;AAAA,IACrC;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/boundary/hooks/useSignUp.ts"],"sourcesContent":["\"use client\"\n\nimport { useTernSecure } from '../TernSecureCtx'\n\nexport function useSignUp() {\n const {\n email,\n setEmail\n } = useTernSecure('useSignUp')\n\n return {\n email, \n setEmail\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,2BAA8B;AAEvB,SAAS,YAAY;AAC1B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACF,QAAI,oCAAc,WAAW;AAE7B,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
@@ -1,65 +0,0 @@
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 });
9
- };
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 });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var background_exports = {};
20
- __export(background_exports, {
21
- AuthBackground: () => AuthBackground
22
- });
23
- module.exports = __toCommonJS(background_exports);
24
- var import_jsx_runtime = require("react/jsx-runtime");
25
- function AuthBackground() {
26
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
27
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
28
- "div",
29
- {
30
- className: "absolute inset-x-0 -top-40 -z-10 transform-gpu overflow-hidden blur-3xl sm:-top-80",
31
- "aria-hidden": "true",
32
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
33
- "div",
34
- {
35
- className: "relative left-[calc(50%-11rem)] aspect-[1155/678] w-[36.125rem] -translate-x-1/2 rotate-[30deg] bg-gradient-to-tr from-[#ff80b5] to-[#9089fc] opacity-30 sm:left-[calc(50%-30rem)] sm:w-[72.1875rem]",
36
- style: {
37
- clipPath: "polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)"
38
- }
39
- }
40
- )
41
- }
42
- ),
43
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
44
- "div",
45
- {
46
- className: "absolute inset-x-0 top-[calc(100%-13rem)] -z-10 transform-gpu overflow-hidden blur-3xl sm:top-[calc(100%-30rem)]",
47
- "aria-hidden": "true",
48
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
49
- "div",
50
- {
51
- className: "relative left-[calc(50%+3rem)] aspect-[1155/678] w-[36.125rem] -translate-x-1/2 bg-gradient-to-tr from-[hsl(var(--secondary)_/_0.3)] to-[hsl(var(--primary)_/_0.3)] opacity-30 sm:left-[calc(50%+36rem)] sm:w-[72.1875rem]",
52
- style: {
53
- clipPath: "polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)"
54
- }
55
- }
56
- )
57
- }
58
- )
59
- ] });
60
- }
61
- // Annotate the CommonJS export names for ESM import in node:
62
- 0 && (module.exports = {
63
- AuthBackground
64
- });
65
- //# sourceMappingURL=background.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/background.tsx"],"sourcesContent":["export function AuthBackground() {\n return (\n <>\n {/* Primary gradient blob */}\n <div\n className=\"absolute inset-x-0 -top-40 -z-10 transform-gpu overflow-hidden blur-3xl sm:-top-80\"\n aria-hidden=\"true\"\n >\n <div\n className=\"relative left-[calc(50%-11rem)] aspect-[1155/678] w-[36.125rem] -translate-x-1/2 rotate-[30deg] bg-gradient-to-tr from-[#ff80b5] to-[#9089fc] opacity-30 sm:left-[calc(50%-30rem)] sm:w-[72.1875rem]\"\n style={{\n clipPath:\n 'polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)',\n }}\n />\n </div>\n \n {/* Secondary gradient blob */}\n <div\n className=\"absolute inset-x-0 top-[calc(100%-13rem)] -z-10 transform-gpu overflow-hidden blur-3xl sm:top-[calc(100%-30rem)]\"\n aria-hidden=\"true\"\n >\n <div\n className=\"relative left-[calc(50%+3rem)] aspect-[1155/678] w-[36.125rem] -translate-x-1/2 bg-gradient-to-tr from-[hsl(var(--secondary)_/_0.3)] to-[hsl(var(--primary)_/_0.3)] opacity-30 sm:left-[calc(50%+36rem)] sm:w-[72.1875rem]\"\n style={{\n clipPath:\n 'polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)',\n }}\n />\n </div>\n </>\n )\n }\n \n "],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEM;AAFC,SAAS,iBAAiB;AAC7B,SACE,4EAEE;AAAA;AAAA,MAAC;AAAA;AAAA,QACG,WAAU;AAAA,QACV,eAAY;AAAA,QAEZ;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO;AAAA,cACL,UACE;AAAA,YACJ;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IAGF;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,eAAY;AAAA,QAEZ;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO;AAAA,cACL,UACE;AAAA,YACJ;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;","names":[]}