@tern-secure/backend 1.2.0-canary.v20250919131424 → 1.2.0-canary.v20250926170202

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 (56) hide show
  1. package/dist/admin/index.js +207 -180
  2. package/dist/admin/index.js.map +1 -1
  3. package/dist/admin/index.mjs +152 -105
  4. package/dist/admin/index.mjs.map +1 -1
  5. package/dist/admin/nextSessionTernSecure.d.ts.map +1 -1
  6. package/dist/admin/sessionTernSecure.d.ts +24 -5
  7. package/dist/admin/sessionTernSecure.d.ts.map +1 -1
  8. package/dist/{chunk-ZIO4EKS5.mjs → chunk-ZMDLKXUP.mjs} +6 -29
  9. package/dist/chunk-ZMDLKXUP.mjs.map +1 -0
  10. package/dist/constants.d.ts +4 -5
  11. package/dist/constants.d.ts.map +1 -1
  12. package/dist/fireRestApi/createFireApi.d.ts +12 -0
  13. package/dist/fireRestApi/createFireApi.d.ts.map +1 -0
  14. package/dist/fireRestApi/endpointUrl.d.ts +6 -0
  15. package/dist/fireRestApi/endpointUrl.d.ts.map +1 -0
  16. package/dist/fireRestApi/endpoints/AbstractApi.d.ts +7 -0
  17. package/dist/fireRestApi/endpoints/AbstractApi.d.ts.map +1 -0
  18. package/dist/fireRestApi/endpoints/EmailApi.d.ts +14 -0
  19. package/dist/fireRestApi/endpoints/EmailApi.d.ts.map +1 -0
  20. package/dist/fireRestApi/endpoints/PasswordApi.d.ts +20 -0
  21. package/dist/fireRestApi/endpoints/PasswordApi.d.ts.map +1 -0
  22. package/dist/fireRestApi/endpoints/SignInTokenApi.d.ts +11 -0
  23. package/dist/fireRestApi/endpoints/SignInTokenApi.d.ts.map +1 -0
  24. package/dist/fireRestApi/endpoints/SignUpApi.d.ts +11 -0
  25. package/dist/fireRestApi/endpoints/SignUpApi.d.ts.map +1 -0
  26. package/dist/fireRestApi/endpoints/TokenApi.d.ts +15 -0
  27. package/dist/fireRestApi/endpoints/TokenApi.d.ts.map +1 -0
  28. package/dist/fireRestApi/endpoints/index.d.ts +6 -0
  29. package/dist/fireRestApi/endpoints/index.d.ts.map +1 -0
  30. package/dist/fireRestApi/index.d.ts +2 -0
  31. package/dist/fireRestApi/index.d.ts.map +1 -0
  32. package/dist/fireRestApi/request.d.ts +37 -0
  33. package/dist/fireRestApi/request.d.ts.map +1 -0
  34. package/dist/fireRestApi/resources/JSON.d.ts +44 -0
  35. package/dist/fireRestApi/resources/JSON.d.ts.map +1 -0
  36. package/dist/fireRestApi/resources/Token.d.ts +7 -0
  37. package/dist/fireRestApi/resources/Token.d.ts.map +1 -0
  38. package/dist/index.js +178 -66
  39. package/dist/index.js.map +1 -1
  40. package/dist/index.mjs +161 -38
  41. package/dist/index.mjs.map +1 -1
  42. package/dist/instance/backendFireInstance.d.ts +4 -4
  43. package/dist/instance/backendFireInstance.d.ts.map +1 -1
  44. package/dist/instance/backendInstanceEdge.d.ts +2 -2
  45. package/dist/instance/backendInstanceEdge.d.ts.map +1 -1
  46. package/dist/tokens/authstate.d.ts +1 -1
  47. package/dist/tokens/authstate.d.ts.map +1 -1
  48. package/dist/tokens/request.d.ts +3 -3
  49. package/dist/tokens/request.d.ts.map +1 -1
  50. package/dist/tokens/requestFire.d.ts.map +1 -1
  51. package/dist/tokens/types.d.ts +4 -2
  52. package/dist/tokens/types.d.ts.map +1 -1
  53. package/package.json +3 -3
  54. package/dist/admin/gemini.sessionTernSecure.d.ts +0 -8
  55. package/dist/admin/gemini.sessionTernSecure.d.ts.map +0 -1
  56. package/dist/chunk-ZIO4EKS5.mjs.map +0 -1
@@ -55,24 +55,65 @@ module.exports = __toCommonJS(admin_exports);
55
55
  // src/admin/sessionTernSecure.ts
56
56
  var import_errors = require("@tern-secure/shared/errors");
57
57
 
58
- // src/tokens/sessionConfig.ts
59
- var getSessionConfig = (options) => {
60
- const cookieConfig = options?.cookies?.session_cookie;
61
- return {
62
- COOKIE_NAME: cookieConfig?.name,
63
- DEFAULT_EXPIRES_IN_MS: cookieConfig?.attributes?.maxAge,
64
- DEFAULT_EXPIRES_IN_SECONDS: Math.floor((cookieConfig?.attributes?.maxAge || 0) / 1e3),
65
- REVOKE_REFRESH_TOKENS_ON_SIGNOUT: cookieConfig?.revokeRefreshTokensOnSignOut
66
- };
58
+ // src/constants.ts
59
+ var MAX_CACHE_LAST_UPDATED_AT_SECONDS = 5 * 60;
60
+ var DEFAULT_CACHE_DURATION = 3600 * 1e3;
61
+ var Attributes = {
62
+ AuthToken: "__ternsecureAuthToken",
63
+ AuthSignature: "__ternsecureAuthSignature",
64
+ AuthStatus: "__ternsecureAuthStatus",
65
+ AuthReason: "__ternsecureAuthReason",
66
+ AuthMessage: "__ternsecureAuthMessage",
67
+ TernSecureUrl: "__ternsecureUrl"
67
68
  };
68
- var getCookieOptions = (options) => {
69
- const cookieConfig = options?.cookies?.session_cookie;
70
- return {
71
- httpOnly: cookieConfig?.attributes?.httpOnly,
72
- secure: cookieConfig?.attributes?.secure,
73
- sameSite: cookieConfig?.attributes?.sameSite,
74
- path: cookieConfig?.attributes?.path
75
- };
69
+ var Cookies = {
70
+ Session: "__session",
71
+ CsrfToken: "__session_terncf",
72
+ IdToken: "FIREBASE_[DEFAULT]",
73
+ Refresh: "FIREBASEID_[DEFAULT]",
74
+ Custom: "__custom",
75
+ Handshake: "__ternsecure_handshake",
76
+ DevBrowser: "__ternsecure_db_jwt",
77
+ RedirectCount: "__ternsecure_redirect_count",
78
+ HandshakeNonce: "__ternsecure_handshake_nonce"
79
+ };
80
+ var Headers2 = {
81
+ Accept: "accept",
82
+ AuthMessage: "x-ternsecure-auth-message",
83
+ Authorization: "authorization",
84
+ AuthReason: "x-ternsecure-auth-reason",
85
+ AuthSignature: "x-ternsecure-auth-signature",
86
+ AuthStatus: "x-ternsecure-auth-status",
87
+ AuthToken: "x-ternsecure-auth-token",
88
+ CacheControl: "cache-control",
89
+ TernSecureRedirectTo: "x-ternsecure-redirect-to",
90
+ TernSecureRequestData: "x-ternsecure-request-data",
91
+ TernSecureUrl: "x-ternsecure-url",
92
+ CloudFrontForwardedProto: "cloudfront-forwarded-proto",
93
+ ContentType: "content-type",
94
+ ContentSecurityPolicy: "content-security-policy",
95
+ ContentSecurityPolicyReportOnly: "content-security-policy-report-only",
96
+ EnableDebug: "x-ternsecure-debug",
97
+ ForwardedHost: "x-forwarded-host",
98
+ ForwardedPort: "x-forwarded-port",
99
+ ForwardedProto: "x-forwarded-proto",
100
+ Host: "host",
101
+ Location: "location",
102
+ Nonce: "x-nonce",
103
+ Origin: "origin",
104
+ Referrer: "referer",
105
+ SecFetchDest: "sec-fetch-dest",
106
+ UserAgent: "user-agent",
107
+ ReportingEndpoints: "reporting-endpoints"
108
+ };
109
+ var ContentTypes = {
110
+ Json: "application/json"
111
+ };
112
+ var constants = {
113
+ Attributes,
114
+ Cookies,
115
+ Headers: Headers2,
116
+ ContentTypes
76
117
  };
77
118
 
78
119
  // src/utils/admin-init.ts
@@ -154,108 +195,137 @@ var COOKIE_OPTIONS = {
154
195
  sameSite: "strict",
155
196
  path: "/"
156
197
  };
198
+ var DEFAULT_COOKIE_CONFIG = {
199
+ DEFAULT_EXPIRES_IN_MS: 5 * 60 * 1e3,
200
+ // 5 minutes
201
+ DEFAULT_EXPIRES_IN_SECONDS: 5 * 60,
202
+ REVOKE_REFRESH_TOKENS_ON_SIGNOUT: true
203
+ };
204
+ var DEFAULT_COOKIE_OPTIONS = {
205
+ httpOnly: true,
206
+ secure: process.env.NODE_ENV === "production",
207
+ sameSite: "strict",
208
+ path: "/"
209
+ };
210
+ var getCookieName = (baseName, prefix) => {
211
+ return prefix ? `${prefix}${baseName}` : baseName;
212
+ };
213
+ var createCookieOptions = (maxAge, overrides) => {
214
+ return {
215
+ maxAge,
216
+ httpOnly: overrides?.httpOnly ?? DEFAULT_COOKIE_OPTIONS.httpOnly,
217
+ secure: overrides?.secure ?? DEFAULT_COOKIE_OPTIONS.secure,
218
+ sameSite: overrides?.sameSite ?? DEFAULT_COOKIE_OPTIONS.sameSite,
219
+ path: overrides?.path ?? DEFAULT_COOKIE_OPTIONS.path
220
+ };
221
+ };
222
+ var getCookiePrefix = () => {
223
+ const isProduction = process.env.NODE_ENV === "production";
224
+ return isProduction ? "__HOST-" : "__dev_";
225
+ };
157
226
  async function createSessionCookie(params, cookieStore, options) {
158
227
  try {
159
- const tenantAuth = getAuthForTenant(options?.tenantId);
160
- const sessionConfig = getSessionConfig(options);
161
- const cookieOptions = getCookieOptions(options);
162
- let decodedToken;
163
- let sessionCookie;
228
+ const tenantAuth = getAuthForTenant(options?.tenantId || "");
164
229
  const idToken = typeof params === "string" ? params : params.idToken;
230
+ const refreshToken = typeof params === "string" ? void 0 : params.refreshToken;
165
231
  if (!idToken) {
166
- const error = new Error("ID token is required for session creation");
167
- console.error("[createSessionCookie] Missing ID token:", error);
168
232
  return {
169
233
  success: false,
170
234
  message: "ID token is required",
171
- error: "INVALID_TOKEN",
172
- cookieSet: false
235
+ error: "INVALID_TOKEN"
173
236
  };
174
237
  }
238
+ let decodedToken;
175
239
  try {
176
- console.log("Verifying ID token for tenant:", options?.tenantId);
177
240
  decodedToken = await tenantAuth.verifyIdToken(idToken);
178
241
  } catch (verifyError) {
179
- console.error(
180
- "[createSessionCookie] ID token verification failed:",
181
- verifyError
182
- );
183
242
  const authError = (0, import_errors.handleFirebaseAuthError)(verifyError);
184
243
  return {
185
244
  success: false,
186
245
  message: authError.message,
187
- error: authError.code,
188
- cookieSet: false
246
+ error: authError.code
189
247
  };
190
248
  }
191
- if (!decodedToken) {
192
- const error = new Error("Invalid ID token - verification returned null");
193
- console.error(
194
- "[createSessionCookie] Token verification returned null:",
195
- error
249
+ const cookiePromises = [];
250
+ const cookiePrefix = getCookiePrefix();
251
+ const idTokenCookieName = getCookieName(
252
+ constants.Cookies.IdToken,
253
+ cookiePrefix
254
+ );
255
+ cookiePromises.push(
256
+ cookieStore.set(
257
+ idTokenCookieName,
258
+ idToken,
259
+ createCookieOptions(DEFAULT_COOKIE_CONFIG.DEFAULT_EXPIRES_IN_SECONDS)
260
+ )
261
+ );
262
+ if (refreshToken) {
263
+ const refreshTokenCookieName = getCookieName(
264
+ constants.Cookies.Refresh,
265
+ cookiePrefix
196
266
  );
197
- return {
198
- success: false,
199
- message: "Invalid ID token",
200
- error: "INVALID_TOKEN",
201
- cookieSet: false
202
- };
203
- }
204
- try {
205
- sessionCookie = await tenantAuth.createSessionCookie(idToken, {
206
- expiresIn: SESSION_CONSTANTS.DEFAULT_EXPIRES_IN_MS
207
- });
208
- } catch (sessionError) {
209
- console.error(
210
- "[createSessionCookie] Firebase session cookie creation failed:",
211
- sessionError
267
+ cookiePromises.push(
268
+ cookieStore.set(
269
+ refreshTokenCookieName,
270
+ refreshToken,
271
+ createCookieOptions(DEFAULT_COOKIE_CONFIG.DEFAULT_EXPIRES_IN_SECONDS)
272
+ )
212
273
  );
213
- const authError = (0, import_errors.handleFirebaseAuthError)(sessionError);
214
- return {
215
- success: false,
216
- message: authError.message,
217
- error: authError.code,
218
- cookieSet: false
219
- };
220
274
  }
221
- let cookieSetSuccessfully = false;
222
- try {
223
- cookieStore.set(SESSION_CONSTANTS.COOKIE_NAME, sessionCookie, {
224
- maxAge: SESSION_CONSTANTS.DEFAULT_EXPIRES_IN_SECONDS,
225
- ...COOKIE_OPTIONS
226
- });
227
- const verifySetCookie = await cookieStore.get(
228
- SESSION_CONSTANTS.COOKIE_NAME
229
- );
230
- cookieSetSuccessfully = !!verifySetCookie?.value;
231
- if (!cookieSetSuccessfully) {
232
- const error = new Error("Session cookie was not set successfully");
275
+ if (options?.cookies?.session) {
276
+ const sessionOptions = options.cookies.session;
277
+ const sessionCookieName = getCookieName(constants.Cookies.Session);
278
+ const expiresIn = sessionOptions.maxAge ? sessionOptions.maxAge * 1e3 : DEFAULT_COOKIE_CONFIG.DEFAULT_EXPIRES_IN_MS;
279
+ try {
280
+ const sessionCookie = await tenantAuth.createSessionCookie(idToken, { expiresIn });
281
+ cookiePromises.push(
282
+ cookieStore.set(
283
+ sessionCookieName,
284
+ sessionCookie,
285
+ createCookieOptions(
286
+ sessionOptions.maxAge || DEFAULT_COOKIE_CONFIG.DEFAULT_EXPIRES_IN_SECONDS,
287
+ {
288
+ httpOnly: sessionOptions.httpOnly,
289
+ sameSite: sessionOptions.sameSite,
290
+ path: sessionOptions.path
291
+ }
292
+ )
293
+ )
294
+ );
295
+ } catch (sessionError) {
233
296
  console.error(
234
- "[createSessionCookie] Cookie verification failed:",
235
- error
297
+ "[createSessionCookie] Firebase session cookie creation failed:",
298
+ sessionError
236
299
  );
237
- throw error;
300
+ const authError = (0, import_errors.handleFirebaseAuthError)(sessionError);
301
+ return {
302
+ success: false,
303
+ message: authError.message,
304
+ error: authError.code
305
+ };
238
306
  }
239
- } catch (cookieError) {
240
- console.error(
241
- "[createSessionCookie] Failed to set session cookie:",
242
- cookieError
307
+ }
308
+ if (options?.enableCustomToken && decodedToken?.uid) {
309
+ const customTokenCookieName = getCookieName(
310
+ constants.Cookies.Custom,
311
+ cookiePrefix
243
312
  );
244
- return {
245
- success: false,
246
- message: "Failed to set session cookie",
247
- error: "COOKIE_SET_FAILED",
248
- cookieSet: false
249
- };
313
+ const customToken = await createCustomToken(decodedToken.uid, options);
314
+ if (customToken) {
315
+ cookiePromises.push(
316
+ cookieStore.set(
317
+ customTokenCookieName,
318
+ customToken,
319
+ createCookieOptions(DEFAULT_COOKIE_CONFIG.DEFAULT_EXPIRES_IN_SECONDS)
320
+ )
321
+ );
322
+ }
250
323
  }
251
- console.log(
252
- `[createSessionCookie] Session cookie created successfully for user: ${decodedToken.uid}`
253
- );
324
+ await Promise.all(cookiePromises);
254
325
  return {
255
326
  success: true,
256
327
  message: "Session created successfully",
257
- expiresIn: SESSION_CONSTANTS.DEFAULT_EXPIRES_IN_SECONDS,
258
- cookieSet: cookieSetSuccessfully
328
+ expiresIn: DEFAULT_COOKIE_CONFIG.DEFAULT_EXPIRES_IN_SECONDS
259
329
  };
260
330
  } catch (error) {
261
331
  console.error("[createSessionCookie] Unexpected error:", error);
@@ -263,51 +333,71 @@ async function createSessionCookie(params, cookieStore, options) {
263
333
  return {
264
334
  success: false,
265
335
  message: authError.message || "Failed to create session",
266
- error: authError.code || "INTERNAL_ERROR",
267
- cookieSet: false
336
+ error: authError.code || "INTERNAL_ERROR"
268
337
  };
269
338
  }
270
339
  }
271
340
  async function clearSessionCookie(cookieStore, options) {
272
341
  try {
273
- const adminAuth = getAuthForTenant(options?.tenantId);
274
- const sessionCookie = await cookieStore.get(SESSION_CONSTANTS.COOKIE_NAME);
275
- await cookieStore.delete(SESSION_CONSTANTS.COOKIE_NAME);
276
- await cookieStore.delete("_session_token");
277
- await cookieStore.delete("_session");
278
- if (SESSION_CONSTANTS.REVOKE_REFRESH_TOKENS_ON_SIGNOUT && sessionCookie?.value) {
342
+ const adminAuth = getAuthForTenant(options?.tenantId || "");
343
+ const cookiePrefix = getCookiePrefix();
344
+ const sessionCookieName = getCookieName(
345
+ constants.Cookies.Session,
346
+ cookiePrefix
347
+ );
348
+ const sessionCookie = await cookieStore.get(sessionCookieName);
349
+ const deletionPromises = [];
350
+ if (options?.cookies?.session) {
351
+ deletionPromises.push(cookieStore.delete(sessionCookieName));
352
+ }
353
+ const idTokenCookieName = getCookieName(
354
+ constants.Cookies.IdToken,
355
+ cookiePrefix
356
+ );
357
+ deletionPromises.push(cookieStore.delete(idTokenCookieName));
358
+ const refreshTokenCookieName = getCookieName(
359
+ constants.Cookies.Refresh,
360
+ cookiePrefix
361
+ );
362
+ deletionPromises.push(cookieStore.delete(refreshTokenCookieName));
363
+ const customTokenCookieName = getCookieName(
364
+ constants.Cookies.Custom,
365
+ cookiePrefix
366
+ );
367
+ deletionPromises.push(cookieStore.delete(customTokenCookieName));
368
+ deletionPromises.push(cookieStore.delete(constants.Cookies.Session));
369
+ await Promise.all(deletionPromises);
370
+ if (DEFAULT_COOKIE_CONFIG.REVOKE_REFRESH_TOKENS_ON_SIGNOUT && sessionCookie?.value) {
279
371
  try {
280
- const decodedClaims = await adminAuth.verifySessionCookie(
281
- sessionCookie.value
282
- );
372
+ const decodedClaims = await adminAuth.verifySessionCookie(sessionCookie.value);
283
373
  await adminAuth.revokeRefreshTokens(decodedClaims.sub);
284
- console.log(
285
- `[clearSessionCookie] Successfully revoked tokens for user: ${decodedClaims.sub}`
286
- );
287
374
  } catch (revokeError) {
288
- console.error(
289
- "[clearSessionCookie] Failed to revoke refresh tokens:",
290
- revokeError
291
- );
375
+ console.error("[clearSessionCookie] Failed to revoke refresh tokens:", revokeError);
292
376
  }
293
377
  }
294
- console.log("[clearSessionCookie] Session cookies cleared successfully");
295
378
  return {
296
379
  success: true,
297
- message: "Session cleared successfully",
298
- cookieSet: false
380
+ message: "Session cleared successfully"
299
381
  };
300
382
  } catch (error) {
301
- console.error("[clearSessionCookie] Unexpected error:", error);
302
383
  const authError = (0, import_errors.handleFirebaseAuthError)(error);
303
384
  return {
304
385
  success: false,
305
386
  message: authError.message || "Failed to clear session",
306
- error: authError.code || "INTERNAL_ERROR",
307
- cookieSet: false
387
+ error: authError.code || "INTERNAL_ERROR"
308
388
  };
309
389
  }
310
390
  }
391
+ async function createCustomToken(uid, options) {
392
+ const adminAuth = getAuthForTenant(options?.tenantId || "");
393
+ try {
394
+ const customToken = await adminAuth.createCustomToken(uid);
395
+ return customToken;
396
+ } catch (error) {
397
+ console.error("[createCustomToken] Error creating custom token:", error);
398
+ return null;
399
+ }
400
+ }
311
401
 
312
402
  // src/admin/tenant.ts
313
403
  async function createTenant(displayName, emailSignInConfig, multiFactorConfig) {
@@ -352,7 +442,7 @@ async function createTenantUser(email, password, tenantId) {
352
442
  var import_errors2 = require("@tern-secure/shared/errors");
353
443
  var import_headers = require("next/headers");
354
444
  var SESSION_CONSTANTS2 = {
355
- COOKIE_NAME: "_session_cookie",
445
+ COOKIE_NAME: constants.Cookies.Session,
356
446
  DEFAULT_EXPIRES_IN_MS: 60 * 60 * 24 * 5 * 1e3,
357
447
  // 5 days
358
448
  DEFAULT_EXPIRES_IN_SECONDS: 60 * 60 * 24 * 5,
@@ -365,7 +455,7 @@ async function CreateNextSessionCookie(idToken) {
365
455
  expiresIn
366
456
  });
367
457
  const cookieStore = await (0, import_headers.cookies)();
368
- cookieStore.set("_session_cookie", sessionCookie, {
458
+ cookieStore.set(constants.Cookies.Session, sessionCookie, {
369
459
  maxAge: expiresIn,
370
460
  httpOnly: true,
371
461
  secure: process.env.NODE_ENV === "production",
@@ -491,8 +581,7 @@ async function ClearNextSessionCookie(tenantId) {
491
581
  const cookieStore = await (0, import_headers.cookies)();
492
582
  const sessionCookie = cookieStore.get(SESSION_CONSTANTS2.COOKIE_NAME);
493
583
  cookieStore.delete(SESSION_CONSTANTS2.COOKIE_NAME);
494
- cookieStore.delete("_session_token");
495
- cookieStore.delete("_session");
584
+ cookieStore.delete(constants.Cookies.IdToken);
496
585
  if (SESSION_CONSTANTS2.REVOKE_REFRESH_TOKENS_ON_SIGNOUT && sessionCookie?.value) {
497
586
  try {
498
587
  const decodedClaims = await tenantAuth.verifySessionCookie(
@@ -519,68 +608,6 @@ async function ClearNextSessionCookie(tenantId) {
519
608
  // src/tokens/ternSecureRequest.ts
520
609
  var import_cookie = require("cookie");
521
610
 
522
- // src/constants.ts
523
- var MAX_CACHE_LAST_UPDATED_AT_SECONDS = 5 * 60;
524
- var DEFAULT_CACHE_DURATION = 3600 * 1e3;
525
- var Attributes = {
526
- AuthToken: "__ternsecureAuthToken",
527
- AuthSignature: "__ternsecureAuthSignature",
528
- AuthStatus: "__ternsecureAuthStatus",
529
- AuthReason: "__ternsecureAuthReason",
530
- AuthMessage: "__ternsecureAuthMessage",
531
- TernSecureUrl: "__ternsecureUrl"
532
- };
533
- var Cookies = {
534
- Session: "__session",
535
- IdToken: "_tern",
536
- CsrfToken: "_session_terncf",
537
- SessionCookie: "_session_cookie",
538
- SessionToken: "_session_token",
539
- Refresh: "__refresh",
540
- Handshake: "__ternsecure_handshake",
541
- DevBrowser: "__ternsecure_db_jwt",
542
- RedirectCount: "__ternsecure_redirect_count",
543
- HandshakeNonce: "__ternsecure_handshake_nonce"
544
- };
545
- var Headers2 = {
546
- Accept: "accept",
547
- AuthMessage: "x-ternsecure-auth-message",
548
- Authorization: "authorization",
549
- AuthReason: "x-ternsecure-auth-reason",
550
- AuthSignature: "x-ternsecure-auth-signature",
551
- AuthStatus: "x-ternsecure-auth-status",
552
- AuthToken: "x-ternsecure-auth-token",
553
- CacheControl: "cache-control",
554
- TernSecureRedirectTo: "x-ternsecure-redirect-to",
555
- TernSecureRequestData: "x-ternsecure-request-data",
556
- TernSecureUrl: "x-ternsecure-url",
557
- CloudFrontForwardedProto: "cloudfront-forwarded-proto",
558
- ContentType: "content-type",
559
- ContentSecurityPolicy: "content-security-policy",
560
- ContentSecurityPolicyReportOnly: "content-security-policy-report-only",
561
- EnableDebug: "x-ternsecure-debug",
562
- ForwardedHost: "x-forwarded-host",
563
- ForwardedPort: "x-forwarded-port",
564
- ForwardedProto: "x-forwarded-proto",
565
- Host: "host",
566
- Location: "location",
567
- Nonce: "x-nonce",
568
- Origin: "origin",
569
- Referrer: "referer",
570
- SecFetchDest: "sec-fetch-dest",
571
- UserAgent: "user-agent",
572
- ReportingEndpoints: "reporting-endpoints"
573
- };
574
- var ContentTypes = {
575
- Json: "application/json"
576
- };
577
- var constants = {
578
- Attributes,
579
- Cookies,
580
- Headers: Headers2,
581
- ContentTypes
582
- };
583
-
584
611
  // src/tokens/ternUrl.ts
585
612
  var TernUrl = class extends URL {
586
613
  isCrossOrigin(other) {