@hexclave/js 1.0.6 → 1.0.9

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 (59) hide show
  1. package/dist/dev-tool/dev-tool-core.js +2 -2
  2. package/dist/dev-tool/dev-tool-core.js.map +1 -1
  3. package/dist/esm/dev-tool/dev-tool-core.js +2 -2
  4. package/dist/esm/dev-tool/dev-tool-core.js.map +1 -1
  5. package/dist/esm/generated/env.d.ts +26 -0
  6. package/dist/esm/{lib → generated}/env.d.ts.map +1 -1
  7. package/dist/esm/generated/env.js +67 -0
  8. package/dist/esm/generated/env.js.map +1 -0
  9. package/dist/esm/global.d.ts +8 -0
  10. package/dist/esm/global.d.ts.map +1 -0
  11. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
  12. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js +81 -4
  13. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -1
  14. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts +2 -1
  15. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -1
  16. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js +23 -18
  17. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
  18. package/dist/esm/lib/hexclave-app/apps/implementations/common.d.ts +8 -8
  19. package/dist/esm/lib/hexclave-app/apps/implementations/common.d.ts.map +1 -1
  20. package/dist/esm/lib/hexclave-app/apps/implementations/common.js +28 -14
  21. package/dist/esm/lib/hexclave-app/apps/implementations/common.js.map +1 -1
  22. package/dist/esm/lib/hexclave-app/url-targets.js +4 -4
  23. package/dist/esm/lib/hexclave-app/url-targets.js.map +1 -1
  24. package/dist/generated/env.d.ts +26 -0
  25. package/dist/{lib → generated}/env.d.ts.map +1 -1
  26. package/dist/generated/env.js +69 -0
  27. package/dist/generated/env.js.map +1 -0
  28. package/dist/global.d.d.ts +0 -0
  29. package/dist/global.d.ts +8 -0
  30. package/dist/global.d.ts.map +1 -0
  31. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
  32. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js +81 -4
  33. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -1
  34. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts +2 -1
  35. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -1
  36. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js +23 -18
  37. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
  38. package/dist/lib/hexclave-app/apps/implementations/common.d.ts +8 -8
  39. package/dist/lib/hexclave-app/apps/implementations/common.d.ts.map +1 -1
  40. package/dist/lib/hexclave-app/apps/implementations/common.js +28 -14
  41. package/dist/lib/hexclave-app/apps/implementations/common.js.map +1 -1
  42. package/dist/lib/hexclave-app/url-targets.js +4 -4
  43. package/dist/lib/hexclave-app/url-targets.js.map +1 -1
  44. package/package.json +8 -4
  45. package/src/dev-tool/dev-tool-core.ts +2 -2
  46. package/src/generated/.gitignore +3 -0
  47. package/src/global.css +13 -0
  48. package/src/global.d.ts +12 -0
  49. package/src/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.ts +105 -4
  50. package/src/lib/hexclave-app/apps/implementations/client-app-impl.ts +33 -18
  51. package/src/lib/hexclave-app/apps/implementations/common.ts +33 -14
  52. package/src/lib/hexclave-app/url-targets.ts +4 -4
  53. package/dist/esm/lib/env.d.ts +0 -42
  54. package/dist/esm/lib/env.js +0 -93
  55. package/dist/esm/lib/env.js.map +0 -1
  56. package/dist/lib/env.d.ts +0 -42
  57. package/dist/lib/env.js +0 -95
  58. package/dist/lib/env.js.map +0 -1
  59. package/src/lib/env.ts +0 -93
@@ -0,0 +1,26 @@
1
+ //#region src/generated/env.d.ts
2
+ declare const envVars: {
3
+ readonly HEXCLAVE_PORT_PREFIX: any;
4
+ readonly HEXCLAVE_PROJECT_ID: any;
5
+ readonly HEXCLAVE_PUBLISHABLE_CLIENT_KEY: any;
6
+ readonly HEXCLAVE_SECRET_SERVER_KEY: any;
7
+ readonly HEXCLAVE_SUPER_SECRET_ADMIN_KEY: any;
8
+ readonly HEXCLAVE_EXTRA_REQUEST_HEADERS: any;
9
+ readonly HEXCLAVE_API_URL_BROWSER: any;
10
+ readonly HEXCLAVE_API_URL_SERVER: any;
11
+ readonly HEXCLAVE_API_URL: any;
12
+ readonly HEXCLAVE_HOSTED_HANDLER_DOMAIN_SUFFIX: any;
13
+ readonly HEXCLAVE_HOSTED_HANDLER_URL_TEMPLATE: any;
14
+ readonly HEXCLAVE_STRIPE_PUBLISHABLE_KEY: any;
15
+ readonly HEXCLAVE_BOT_CHALLENGE_SITE_KEY: any;
16
+ readonly HEXCLAVE_BOT_CHALLENGE_INVISIBLE_SITE_KEY: any;
17
+ readonly HEXCLAVE_IS_LOCAL_EMULATOR: any;
18
+ readonly HEXCLAVE_POSTHOG_KEY: any;
19
+ readonly HEXCLAVE_SVIX_SERVER_URL: any;
20
+ readonly HEXCLAVE_SENTRY_DSN: any;
21
+ readonly HEXCLAVE_VERSION_ALERTER_SEVERE_ONLY: any;
22
+ readonly NODE_ENV: any;
23
+ };
24
+ //#endregion
25
+ export { envVars };
26
+ //# sourceMappingURL=env.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","names":[],"sources":["../../../src/lib/env.ts"],"mappings":";;AAeA;;;;;;;;;;cAAa,OAAA;EAAA"}
1
+ {"version":3,"file":"env.d.ts","names":[],"sources":["../../../src/generated/env.ts"],"mappings":";cAIa,OAAA;EAAA"}
@@ -0,0 +1,67 @@
1
+ //#region src/generated/env.ts
2
+ const envVars = {
3
+ get HEXCLAVE_PORT_PREFIX() {
4
+ return (typeof process !== "undefined" ? process.env.HEXCLAVE_PORT_PREFIX : void 0) ?? import.meta.env?.HEXCLAVE_PORT_PREFIX ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_HEXCLAVE_PORT_PREFIX : void 0) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_PORT_PREFIX ?? (typeof process !== "undefined" ? process.env.VITE_HEXCLAVE_PORT_PREFIX : void 0) ?? import.meta.env?.VITE_HEXCLAVE_PORT_PREFIX ?? (typeof process !== "undefined" ? process.env.STACK_PORT_PREFIX : void 0) ?? import.meta.env?.STACK_PORT_PREFIX ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_STACK_PORT_PREFIX : void 0) ?? import.meta.env?.NEXT_PUBLIC_STACK_PORT_PREFIX ?? (typeof process !== "undefined" ? process.env.VITE_STACK_PORT_PREFIX : void 0) ?? import.meta.env?.VITE_STACK_PORT_PREFIX ?? void 0;
5
+ },
6
+ get HEXCLAVE_PROJECT_ID() {
7
+ return (typeof process !== "undefined" ? process.env.HEXCLAVE_PROJECT_ID : void 0) ?? import.meta.env?.HEXCLAVE_PROJECT_ID ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_HEXCLAVE_PROJECT_ID : void 0) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_PROJECT_ID ?? (typeof process !== "undefined" ? process.env.VITE_HEXCLAVE_PROJECT_ID : void 0) ?? import.meta.env?.VITE_HEXCLAVE_PROJECT_ID ?? (typeof process !== "undefined" ? process.env.STACK_PROJECT_ID : void 0) ?? import.meta.env?.STACK_PROJECT_ID ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_STACK_PROJECT_ID : void 0) ?? import.meta.env?.NEXT_PUBLIC_STACK_PROJECT_ID ?? (typeof process !== "undefined" ? process.env.VITE_STACK_PROJECT_ID : void 0) ?? import.meta.env?.VITE_STACK_PROJECT_ID ?? void 0;
8
+ },
9
+ get HEXCLAVE_PUBLISHABLE_CLIENT_KEY() {
10
+ return (typeof process !== "undefined" ? process.env.HEXCLAVE_PUBLISHABLE_CLIENT_KEY : void 0) ?? import.meta.env?.HEXCLAVE_PUBLISHABLE_CLIENT_KEY ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_HEXCLAVE_PUBLISHABLE_CLIENT_KEY : void 0) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_PUBLISHABLE_CLIENT_KEY ?? (typeof process !== "undefined" ? process.env.VITE_HEXCLAVE_PUBLISHABLE_CLIENT_KEY : void 0) ?? import.meta.env?.VITE_HEXCLAVE_PUBLISHABLE_CLIENT_KEY ?? (typeof process !== "undefined" ? process.env.STACK_PUBLISHABLE_CLIENT_KEY : void 0) ?? import.meta.env?.STACK_PUBLISHABLE_CLIENT_KEY ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_STACK_PUBLISHABLE_CLIENT_KEY : void 0) ?? import.meta.env?.NEXT_PUBLIC_STACK_PUBLISHABLE_CLIENT_KEY ?? (typeof process !== "undefined" ? process.env.VITE_STACK_PUBLISHABLE_CLIENT_KEY : void 0) ?? import.meta.env?.VITE_STACK_PUBLISHABLE_CLIENT_KEY ?? void 0;
11
+ },
12
+ get HEXCLAVE_SECRET_SERVER_KEY() {
13
+ return (typeof process !== "undefined" ? process.env.HEXCLAVE_SECRET_SERVER_KEY : void 0) ?? import.meta.env?.HEXCLAVE_SECRET_SERVER_KEY ?? (typeof process !== "undefined" ? process.env.STACK_SECRET_SERVER_KEY : void 0) ?? import.meta.env?.STACK_SECRET_SERVER_KEY ?? void 0;
14
+ },
15
+ get HEXCLAVE_SUPER_SECRET_ADMIN_KEY() {
16
+ return (typeof process !== "undefined" ? process.env.HEXCLAVE_SUPER_SECRET_ADMIN_KEY : void 0) ?? import.meta.env?.HEXCLAVE_SUPER_SECRET_ADMIN_KEY ?? (typeof process !== "undefined" ? process.env.STACK_SUPER_SECRET_ADMIN_KEY : void 0) ?? import.meta.env?.STACK_SUPER_SECRET_ADMIN_KEY ?? void 0;
17
+ },
18
+ get HEXCLAVE_EXTRA_REQUEST_HEADERS() {
19
+ return (typeof process !== "undefined" ? process.env.HEXCLAVE_EXTRA_REQUEST_HEADERS : void 0) ?? import.meta.env?.HEXCLAVE_EXTRA_REQUEST_HEADERS ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_HEXCLAVE_EXTRA_REQUEST_HEADERS : void 0) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_EXTRA_REQUEST_HEADERS ?? (typeof process !== "undefined" ? process.env.VITE_HEXCLAVE_EXTRA_REQUEST_HEADERS : void 0) ?? import.meta.env?.VITE_HEXCLAVE_EXTRA_REQUEST_HEADERS ?? (typeof process !== "undefined" ? process.env.STACK_EXTRA_REQUEST_HEADERS : void 0) ?? import.meta.env?.STACK_EXTRA_REQUEST_HEADERS ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_STACK_EXTRA_REQUEST_HEADERS : void 0) ?? import.meta.env?.NEXT_PUBLIC_STACK_EXTRA_REQUEST_HEADERS ?? (typeof process !== "undefined" ? process.env.VITE_STACK_EXTRA_REQUEST_HEADERS : void 0) ?? import.meta.env?.VITE_STACK_EXTRA_REQUEST_HEADERS ?? void 0;
20
+ },
21
+ get HEXCLAVE_API_URL_BROWSER() {
22
+ return (typeof process !== "undefined" ? process.env.HEXCLAVE_API_URL_BROWSER : void 0) ?? import.meta.env?.HEXCLAVE_API_URL_BROWSER ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_HEXCLAVE_API_URL_BROWSER : void 0) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_API_URL_BROWSER ?? (typeof process !== "undefined" ? process.env.VITE_HEXCLAVE_API_URL_BROWSER : void 0) ?? import.meta.env?.VITE_HEXCLAVE_API_URL_BROWSER ?? (typeof process !== "undefined" ? process.env.STACK_API_URL_BROWSER : void 0) ?? import.meta.env?.STACK_API_URL_BROWSER ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_STACK_API_URL_BROWSER : void 0) ?? import.meta.env?.NEXT_PUBLIC_STACK_API_URL_BROWSER ?? (typeof process !== "undefined" ? process.env.VITE_STACK_API_URL_BROWSER : void 0) ?? import.meta.env?.VITE_STACK_API_URL_BROWSER ?? (typeof process !== "undefined" ? process.env.BROWSER_STACK_API_URL : void 0) ?? import.meta.env?.BROWSER_STACK_API_URL ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_BROWSER_STACK_API_URL : void 0) ?? import.meta.env?.NEXT_PUBLIC_BROWSER_STACK_API_URL ?? (typeof process !== "undefined" ? process.env.VITE_BROWSER_STACK_API_URL : void 0) ?? import.meta.env?.VITE_BROWSER_STACK_API_URL ?? (typeof process !== "undefined" ? process.env.BROWSER_HEXCLAVE_API_URL : void 0) ?? import.meta.env?.BROWSER_HEXCLAVE_API_URL ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_BROWSER_HEXCLAVE_API_URL : void 0) ?? import.meta.env?.NEXT_PUBLIC_BROWSER_HEXCLAVE_API_URL ?? (typeof process !== "undefined" ? process.env.VITE_BROWSER_HEXCLAVE_API_URL : void 0) ?? import.meta.env?.VITE_BROWSER_HEXCLAVE_API_URL ?? void 0;
23
+ },
24
+ get HEXCLAVE_API_URL_SERVER() {
25
+ return (typeof process !== "undefined" ? process.env.HEXCLAVE_API_URL_SERVER : void 0) ?? import.meta.env?.HEXCLAVE_API_URL_SERVER ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_HEXCLAVE_API_URL_SERVER : void 0) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_API_URL_SERVER ?? (typeof process !== "undefined" ? process.env.VITE_HEXCLAVE_API_URL_SERVER : void 0) ?? import.meta.env?.VITE_HEXCLAVE_API_URL_SERVER ?? (typeof process !== "undefined" ? process.env.STACK_API_URL_SERVER : void 0) ?? import.meta.env?.STACK_API_URL_SERVER ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_STACK_API_URL_SERVER : void 0) ?? import.meta.env?.NEXT_PUBLIC_STACK_API_URL_SERVER ?? (typeof process !== "undefined" ? process.env.VITE_STACK_API_URL_SERVER : void 0) ?? import.meta.env?.VITE_STACK_API_URL_SERVER ?? (typeof process !== "undefined" ? process.env.SERVER_STACK_API_URL : void 0) ?? import.meta.env?.SERVER_STACK_API_URL ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_SERVER_STACK_API_URL : void 0) ?? import.meta.env?.NEXT_PUBLIC_SERVER_STACK_API_URL ?? (typeof process !== "undefined" ? process.env.VITE_SERVER_STACK_API_URL : void 0) ?? import.meta.env?.VITE_SERVER_STACK_API_URL ?? (typeof process !== "undefined" ? process.env.SERVER_HEXCLAVE_API_URL : void 0) ?? import.meta.env?.SERVER_HEXCLAVE_API_URL ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_SERVER_HEXCLAVE_API_URL : void 0) ?? import.meta.env?.NEXT_PUBLIC_SERVER_HEXCLAVE_API_URL ?? (typeof process !== "undefined" ? process.env.VITE_SERVER_HEXCLAVE_API_URL : void 0) ?? import.meta.env?.VITE_SERVER_HEXCLAVE_API_URL ?? void 0;
26
+ },
27
+ get HEXCLAVE_API_URL() {
28
+ return (typeof process !== "undefined" ? process.env.HEXCLAVE_API_URL : void 0) ?? import.meta.env?.HEXCLAVE_API_URL ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_HEXCLAVE_API_URL : void 0) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_API_URL ?? (typeof process !== "undefined" ? process.env.VITE_HEXCLAVE_API_URL : void 0) ?? import.meta.env?.VITE_HEXCLAVE_API_URL ?? (typeof process !== "undefined" ? process.env.STACK_API_URL : void 0) ?? import.meta.env?.STACK_API_URL ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_STACK_API_URL : void 0) ?? import.meta.env?.NEXT_PUBLIC_STACK_API_URL ?? (typeof process !== "undefined" ? process.env.VITE_STACK_API_URL : void 0) ?? import.meta.env?.VITE_STACK_API_URL ?? (typeof process !== "undefined" ? process.env.HEXCLAVE_URL : void 0) ?? import.meta.env?.HEXCLAVE_URL ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_HEXCLAVE_URL : void 0) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_URL ?? (typeof process !== "undefined" ? process.env.VITE_HEXCLAVE_URL : void 0) ?? import.meta.env?.VITE_HEXCLAVE_URL ?? (typeof process !== "undefined" ? process.env.STACK_URL : void 0) ?? import.meta.env?.STACK_URL ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_STACK_URL : void 0) ?? import.meta.env?.NEXT_PUBLIC_STACK_URL ?? (typeof process !== "undefined" ? process.env.VITE_STACK_URL : void 0) ?? import.meta.env?.VITE_STACK_URL ?? (typeof process !== "undefined" ? process.env.STACK_URL : void 0) ?? import.meta.env?.STACK_URL ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_STACK_URL : void 0) ?? import.meta.env?.NEXT_PUBLIC_STACK_URL ?? (typeof process !== "undefined" ? process.env.VITE_STACK_URL : void 0) ?? import.meta.env?.VITE_STACK_URL ?? void 0;
29
+ },
30
+ get HEXCLAVE_HOSTED_HANDLER_DOMAIN_SUFFIX() {
31
+ return (typeof process !== "undefined" ? process.env.HEXCLAVE_HOSTED_HANDLER_DOMAIN_SUFFIX : void 0) ?? import.meta.env?.HEXCLAVE_HOSTED_HANDLER_DOMAIN_SUFFIX ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_HEXCLAVE_HOSTED_HANDLER_DOMAIN_SUFFIX : void 0) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_HOSTED_HANDLER_DOMAIN_SUFFIX ?? (typeof process !== "undefined" ? process.env.VITE_HEXCLAVE_HOSTED_HANDLER_DOMAIN_SUFFIX : void 0) ?? import.meta.env?.VITE_HEXCLAVE_HOSTED_HANDLER_DOMAIN_SUFFIX ?? (typeof process !== "undefined" ? process.env.STACK_HOSTED_HANDLER_DOMAIN_SUFFIX : void 0) ?? import.meta.env?.STACK_HOSTED_HANDLER_DOMAIN_SUFFIX ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_STACK_HOSTED_HANDLER_DOMAIN_SUFFIX : void 0) ?? import.meta.env?.NEXT_PUBLIC_STACK_HOSTED_HANDLER_DOMAIN_SUFFIX ?? (typeof process !== "undefined" ? process.env.VITE_STACK_HOSTED_HANDLER_DOMAIN_SUFFIX : void 0) ?? import.meta.env?.VITE_STACK_HOSTED_HANDLER_DOMAIN_SUFFIX ?? void 0;
32
+ },
33
+ get HEXCLAVE_HOSTED_HANDLER_URL_TEMPLATE() {
34
+ return (typeof process !== "undefined" ? process.env.HEXCLAVE_HOSTED_HANDLER_URL_TEMPLATE : void 0) ?? import.meta.env?.HEXCLAVE_HOSTED_HANDLER_URL_TEMPLATE ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_HEXCLAVE_HOSTED_HANDLER_URL_TEMPLATE : void 0) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_HOSTED_HANDLER_URL_TEMPLATE ?? (typeof process !== "undefined" ? process.env.VITE_HEXCLAVE_HOSTED_HANDLER_URL_TEMPLATE : void 0) ?? import.meta.env?.VITE_HEXCLAVE_HOSTED_HANDLER_URL_TEMPLATE ?? (typeof process !== "undefined" ? process.env.STACK_HOSTED_HANDLER_URL_TEMPLATE : void 0) ?? import.meta.env?.STACK_HOSTED_HANDLER_URL_TEMPLATE ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_STACK_HOSTED_HANDLER_URL_TEMPLATE : void 0) ?? import.meta.env?.NEXT_PUBLIC_STACK_HOSTED_HANDLER_URL_TEMPLATE ?? (typeof process !== "undefined" ? process.env.VITE_STACK_HOSTED_HANDLER_URL_TEMPLATE : void 0) ?? import.meta.env?.VITE_STACK_HOSTED_HANDLER_URL_TEMPLATE ?? void 0;
35
+ },
36
+ get HEXCLAVE_STRIPE_PUBLISHABLE_KEY() {
37
+ return (typeof process !== "undefined" ? process.env.HEXCLAVE_STRIPE_PUBLISHABLE_KEY : void 0) ?? import.meta.env?.HEXCLAVE_STRIPE_PUBLISHABLE_KEY ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_HEXCLAVE_STRIPE_PUBLISHABLE_KEY : void 0) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_STRIPE_PUBLISHABLE_KEY ?? (typeof process !== "undefined" ? process.env.VITE_HEXCLAVE_STRIPE_PUBLISHABLE_KEY : void 0) ?? import.meta.env?.VITE_HEXCLAVE_STRIPE_PUBLISHABLE_KEY ?? (typeof process !== "undefined" ? process.env.STACK_STRIPE_PUBLISHABLE_KEY : void 0) ?? import.meta.env?.STACK_STRIPE_PUBLISHABLE_KEY ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_STACK_STRIPE_PUBLISHABLE_KEY : void 0) ?? import.meta.env?.NEXT_PUBLIC_STACK_STRIPE_PUBLISHABLE_KEY ?? (typeof process !== "undefined" ? process.env.VITE_STACK_STRIPE_PUBLISHABLE_KEY : void 0) ?? import.meta.env?.VITE_STACK_STRIPE_PUBLISHABLE_KEY ?? void 0;
38
+ },
39
+ get HEXCLAVE_BOT_CHALLENGE_SITE_KEY() {
40
+ return (typeof process !== "undefined" ? process.env.HEXCLAVE_BOT_CHALLENGE_SITE_KEY : void 0) ?? import.meta.env?.HEXCLAVE_BOT_CHALLENGE_SITE_KEY ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_HEXCLAVE_BOT_CHALLENGE_SITE_KEY : void 0) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_BOT_CHALLENGE_SITE_KEY ?? (typeof process !== "undefined" ? process.env.VITE_HEXCLAVE_BOT_CHALLENGE_SITE_KEY : void 0) ?? import.meta.env?.VITE_HEXCLAVE_BOT_CHALLENGE_SITE_KEY ?? (typeof process !== "undefined" ? process.env.STACK_BOT_CHALLENGE_SITE_KEY : void 0) ?? import.meta.env?.STACK_BOT_CHALLENGE_SITE_KEY ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_STACK_BOT_CHALLENGE_SITE_KEY : void 0) ?? import.meta.env?.NEXT_PUBLIC_STACK_BOT_CHALLENGE_SITE_KEY ?? (typeof process !== "undefined" ? process.env.VITE_STACK_BOT_CHALLENGE_SITE_KEY : void 0) ?? import.meta.env?.VITE_STACK_BOT_CHALLENGE_SITE_KEY ?? void 0;
41
+ },
42
+ get HEXCLAVE_BOT_CHALLENGE_INVISIBLE_SITE_KEY() {
43
+ return (typeof process !== "undefined" ? process.env.HEXCLAVE_BOT_CHALLENGE_INVISIBLE_SITE_KEY : void 0) ?? import.meta.env?.HEXCLAVE_BOT_CHALLENGE_INVISIBLE_SITE_KEY ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_HEXCLAVE_BOT_CHALLENGE_INVISIBLE_SITE_KEY : void 0) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_BOT_CHALLENGE_INVISIBLE_SITE_KEY ?? (typeof process !== "undefined" ? process.env.VITE_HEXCLAVE_BOT_CHALLENGE_INVISIBLE_SITE_KEY : void 0) ?? import.meta.env?.VITE_HEXCLAVE_BOT_CHALLENGE_INVISIBLE_SITE_KEY ?? (typeof process !== "undefined" ? process.env.STACK_BOT_CHALLENGE_INVISIBLE_SITE_KEY : void 0) ?? import.meta.env?.STACK_BOT_CHALLENGE_INVISIBLE_SITE_KEY ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_STACK_BOT_CHALLENGE_INVISIBLE_SITE_KEY : void 0) ?? import.meta.env?.NEXT_PUBLIC_STACK_BOT_CHALLENGE_INVISIBLE_SITE_KEY ?? (typeof process !== "undefined" ? process.env.VITE_STACK_BOT_CHALLENGE_INVISIBLE_SITE_KEY : void 0) ?? import.meta.env?.VITE_STACK_BOT_CHALLENGE_INVISIBLE_SITE_KEY ?? void 0;
44
+ },
45
+ get HEXCLAVE_IS_LOCAL_EMULATOR() {
46
+ return (typeof process !== "undefined" ? process.env.HEXCLAVE_IS_LOCAL_EMULATOR : void 0) ?? import.meta.env?.HEXCLAVE_IS_LOCAL_EMULATOR ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_HEXCLAVE_IS_LOCAL_EMULATOR : void 0) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_IS_LOCAL_EMULATOR ?? (typeof process !== "undefined" ? process.env.VITE_HEXCLAVE_IS_LOCAL_EMULATOR : void 0) ?? import.meta.env?.VITE_HEXCLAVE_IS_LOCAL_EMULATOR ?? (typeof process !== "undefined" ? process.env.STACK_IS_LOCAL_EMULATOR : void 0) ?? import.meta.env?.STACK_IS_LOCAL_EMULATOR ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_STACK_IS_LOCAL_EMULATOR : void 0) ?? import.meta.env?.NEXT_PUBLIC_STACK_IS_LOCAL_EMULATOR ?? (typeof process !== "undefined" ? process.env.VITE_STACK_IS_LOCAL_EMULATOR : void 0) ?? import.meta.env?.VITE_STACK_IS_LOCAL_EMULATOR ?? void 0;
47
+ },
48
+ get HEXCLAVE_POSTHOG_KEY() {
49
+ return (typeof process !== "undefined" ? process.env.HEXCLAVE_POSTHOG_KEY : void 0) ?? import.meta.env?.HEXCLAVE_POSTHOG_KEY ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_HEXCLAVE_POSTHOG_KEY : void 0) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_POSTHOG_KEY ?? (typeof process !== "undefined" ? process.env.VITE_HEXCLAVE_POSTHOG_KEY : void 0) ?? import.meta.env?.VITE_HEXCLAVE_POSTHOG_KEY ?? (typeof process !== "undefined" ? process.env.STACK_POSTHOG_KEY : void 0) ?? import.meta.env?.STACK_POSTHOG_KEY ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_STACK_POSTHOG_KEY : void 0) ?? import.meta.env?.NEXT_PUBLIC_STACK_POSTHOG_KEY ?? (typeof process !== "undefined" ? process.env.VITE_STACK_POSTHOG_KEY : void 0) ?? import.meta.env?.VITE_STACK_POSTHOG_KEY ?? void 0;
50
+ },
51
+ get HEXCLAVE_SVIX_SERVER_URL() {
52
+ return (typeof process !== "undefined" ? process.env.HEXCLAVE_SVIX_SERVER_URL : void 0) ?? import.meta.env?.HEXCLAVE_SVIX_SERVER_URL ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_HEXCLAVE_SVIX_SERVER_URL : void 0) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_SVIX_SERVER_URL ?? (typeof process !== "undefined" ? process.env.VITE_HEXCLAVE_SVIX_SERVER_URL : void 0) ?? import.meta.env?.VITE_HEXCLAVE_SVIX_SERVER_URL ?? (typeof process !== "undefined" ? process.env.STACK_SVIX_SERVER_URL : void 0) ?? import.meta.env?.STACK_SVIX_SERVER_URL ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_STACK_SVIX_SERVER_URL : void 0) ?? import.meta.env?.NEXT_PUBLIC_STACK_SVIX_SERVER_URL ?? (typeof process !== "undefined" ? process.env.VITE_STACK_SVIX_SERVER_URL : void 0) ?? import.meta.env?.VITE_STACK_SVIX_SERVER_URL ?? void 0;
53
+ },
54
+ get HEXCLAVE_SENTRY_DSN() {
55
+ return (typeof process !== "undefined" ? process.env.HEXCLAVE_SENTRY_DSN : void 0) ?? import.meta.env?.HEXCLAVE_SENTRY_DSN ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_HEXCLAVE_SENTRY_DSN : void 0) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_SENTRY_DSN ?? (typeof process !== "undefined" ? process.env.VITE_HEXCLAVE_SENTRY_DSN : void 0) ?? import.meta.env?.VITE_HEXCLAVE_SENTRY_DSN ?? (typeof process !== "undefined" ? process.env.STACK_SENTRY_DSN : void 0) ?? import.meta.env?.STACK_SENTRY_DSN ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_STACK_SENTRY_DSN : void 0) ?? import.meta.env?.NEXT_PUBLIC_STACK_SENTRY_DSN ?? (typeof process !== "undefined" ? process.env.VITE_STACK_SENTRY_DSN : void 0) ?? import.meta.env?.VITE_STACK_SENTRY_DSN ?? void 0;
56
+ },
57
+ get HEXCLAVE_VERSION_ALERTER_SEVERE_ONLY() {
58
+ return (typeof process !== "undefined" ? process.env.HEXCLAVE_VERSION_ALERTER_SEVERE_ONLY : void 0) ?? import.meta.env?.HEXCLAVE_VERSION_ALERTER_SEVERE_ONLY ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_HEXCLAVE_VERSION_ALERTER_SEVERE_ONLY : void 0) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_VERSION_ALERTER_SEVERE_ONLY ?? (typeof process !== "undefined" ? process.env.VITE_HEXCLAVE_VERSION_ALERTER_SEVERE_ONLY : void 0) ?? import.meta.env?.VITE_HEXCLAVE_VERSION_ALERTER_SEVERE_ONLY ?? (typeof process !== "undefined" ? process.env.STACK_VERSION_ALERTER_SEVERE_ONLY : void 0) ?? import.meta.env?.STACK_VERSION_ALERTER_SEVERE_ONLY ?? (typeof process !== "undefined" ? process.env.NEXT_PUBLIC_STACK_VERSION_ALERTER_SEVERE_ONLY : void 0) ?? import.meta.env?.NEXT_PUBLIC_STACK_VERSION_ALERTER_SEVERE_ONLY ?? (typeof process !== "undefined" ? process.env.VITE_STACK_VERSION_ALERTER_SEVERE_ONLY : void 0) ?? import.meta.env?.VITE_STACK_VERSION_ALERTER_SEVERE_ONLY ?? void 0;
59
+ },
60
+ get NODE_ENV() {
61
+ return (typeof process !== "undefined" ? process.env.NODE_ENV : void 0) ?? import.meta.env?.NODE_ENV ?? void 0;
62
+ }
63
+ };
64
+
65
+ //#endregion
66
+ export { envVars };
67
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","names":[],"sources":["../../../src/generated/env.ts"],"sourcesContent":["// THIS FILE IS AUTO-GENERATED BY THE `generate-env.ts` SCRIPT.\n// DO NOT EDIT IT BY HAND.\n/* eslint-disable no-restricted-properties */\n\nexport const envVars = {\n get HEXCLAVE_PORT_PREFIX() {\n return ((typeof process !== \"undefined\" ? process.env.HEXCLAVE_PORT_PREFIX : undefined) ?? import.meta.env?.HEXCLAVE_PORT_PREFIX)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_HEXCLAVE_PORT_PREFIX : undefined) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_PORT_PREFIX)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_HEXCLAVE_PORT_PREFIX : undefined) ?? import.meta.env?.VITE_HEXCLAVE_PORT_PREFIX)\n ?? ((typeof process !== \"undefined\" ? process.env.STACK_PORT_PREFIX : undefined) ?? import.meta.env?.STACK_PORT_PREFIX)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_STACK_PORT_PREFIX : undefined) ?? import.meta.env?.NEXT_PUBLIC_STACK_PORT_PREFIX)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_STACK_PORT_PREFIX : undefined) ?? import.meta.env?.VITE_STACK_PORT_PREFIX) ?? undefined;\n },\n get HEXCLAVE_PROJECT_ID() {\n return ((typeof process !== \"undefined\" ? process.env.HEXCLAVE_PROJECT_ID : undefined) ?? import.meta.env?.HEXCLAVE_PROJECT_ID)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_HEXCLAVE_PROJECT_ID : undefined) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_PROJECT_ID)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_HEXCLAVE_PROJECT_ID : undefined) ?? import.meta.env?.VITE_HEXCLAVE_PROJECT_ID)\n ?? ((typeof process !== \"undefined\" ? process.env.STACK_PROJECT_ID : undefined) ?? import.meta.env?.STACK_PROJECT_ID)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_STACK_PROJECT_ID : undefined) ?? import.meta.env?.NEXT_PUBLIC_STACK_PROJECT_ID)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_STACK_PROJECT_ID : undefined) ?? import.meta.env?.VITE_STACK_PROJECT_ID) ?? undefined;\n },\n get HEXCLAVE_PUBLISHABLE_CLIENT_KEY() {\n return ((typeof process !== \"undefined\" ? process.env.HEXCLAVE_PUBLISHABLE_CLIENT_KEY : undefined) ?? import.meta.env?.HEXCLAVE_PUBLISHABLE_CLIENT_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_HEXCLAVE_PUBLISHABLE_CLIENT_KEY : undefined) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_PUBLISHABLE_CLIENT_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_HEXCLAVE_PUBLISHABLE_CLIENT_KEY : undefined) ?? import.meta.env?.VITE_HEXCLAVE_PUBLISHABLE_CLIENT_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.STACK_PUBLISHABLE_CLIENT_KEY : undefined) ?? import.meta.env?.STACK_PUBLISHABLE_CLIENT_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_STACK_PUBLISHABLE_CLIENT_KEY : undefined) ?? import.meta.env?.NEXT_PUBLIC_STACK_PUBLISHABLE_CLIENT_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_STACK_PUBLISHABLE_CLIENT_KEY : undefined) ?? import.meta.env?.VITE_STACK_PUBLISHABLE_CLIENT_KEY) ?? undefined;\n },\n get HEXCLAVE_SECRET_SERVER_KEY() {\n return ((typeof process !== \"undefined\" ? process.env.HEXCLAVE_SECRET_SERVER_KEY : undefined) ?? import.meta.env?.HEXCLAVE_SECRET_SERVER_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.STACK_SECRET_SERVER_KEY : undefined) ?? import.meta.env?.STACK_SECRET_SERVER_KEY) ?? undefined;\n },\n get HEXCLAVE_SUPER_SECRET_ADMIN_KEY() {\n return ((typeof process !== \"undefined\" ? process.env.HEXCLAVE_SUPER_SECRET_ADMIN_KEY : undefined) ?? import.meta.env?.HEXCLAVE_SUPER_SECRET_ADMIN_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.STACK_SUPER_SECRET_ADMIN_KEY : undefined) ?? import.meta.env?.STACK_SUPER_SECRET_ADMIN_KEY) ?? undefined;\n },\n get HEXCLAVE_EXTRA_REQUEST_HEADERS() {\n return ((typeof process !== \"undefined\" ? process.env.HEXCLAVE_EXTRA_REQUEST_HEADERS : undefined) ?? import.meta.env?.HEXCLAVE_EXTRA_REQUEST_HEADERS)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_HEXCLAVE_EXTRA_REQUEST_HEADERS : undefined) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_EXTRA_REQUEST_HEADERS)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_HEXCLAVE_EXTRA_REQUEST_HEADERS : undefined) ?? import.meta.env?.VITE_HEXCLAVE_EXTRA_REQUEST_HEADERS)\n ?? ((typeof process !== \"undefined\" ? process.env.STACK_EXTRA_REQUEST_HEADERS : undefined) ?? import.meta.env?.STACK_EXTRA_REQUEST_HEADERS)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_STACK_EXTRA_REQUEST_HEADERS : undefined) ?? import.meta.env?.NEXT_PUBLIC_STACK_EXTRA_REQUEST_HEADERS)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_STACK_EXTRA_REQUEST_HEADERS : undefined) ?? import.meta.env?.VITE_STACK_EXTRA_REQUEST_HEADERS) ?? undefined;\n },\n get HEXCLAVE_API_URL_BROWSER() {\n return ((typeof process !== \"undefined\" ? process.env.HEXCLAVE_API_URL_BROWSER : undefined) ?? import.meta.env?.HEXCLAVE_API_URL_BROWSER)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_HEXCLAVE_API_URL_BROWSER : undefined) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_API_URL_BROWSER)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_HEXCLAVE_API_URL_BROWSER : undefined) ?? import.meta.env?.VITE_HEXCLAVE_API_URL_BROWSER)\n ?? ((typeof process !== \"undefined\" ? process.env.STACK_API_URL_BROWSER : undefined) ?? import.meta.env?.STACK_API_URL_BROWSER)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_STACK_API_URL_BROWSER : undefined) ?? import.meta.env?.NEXT_PUBLIC_STACK_API_URL_BROWSER)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_STACK_API_URL_BROWSER : undefined) ?? import.meta.env?.VITE_STACK_API_URL_BROWSER)\n ?? ((typeof process !== \"undefined\" ? process.env.BROWSER_STACK_API_URL : undefined) ?? import.meta.env?.BROWSER_STACK_API_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_BROWSER_STACK_API_URL : undefined) ?? import.meta.env?.NEXT_PUBLIC_BROWSER_STACK_API_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_BROWSER_STACK_API_URL : undefined) ?? import.meta.env?.VITE_BROWSER_STACK_API_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.BROWSER_HEXCLAVE_API_URL : undefined) ?? import.meta.env?.BROWSER_HEXCLAVE_API_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_BROWSER_HEXCLAVE_API_URL : undefined) ?? import.meta.env?.NEXT_PUBLIC_BROWSER_HEXCLAVE_API_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_BROWSER_HEXCLAVE_API_URL : undefined) ?? import.meta.env?.VITE_BROWSER_HEXCLAVE_API_URL) ?? undefined;\n },\n get HEXCLAVE_API_URL_SERVER() {\n return ((typeof process !== \"undefined\" ? process.env.HEXCLAVE_API_URL_SERVER : undefined) ?? import.meta.env?.HEXCLAVE_API_URL_SERVER)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_HEXCLAVE_API_URL_SERVER : undefined) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_API_URL_SERVER)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_HEXCLAVE_API_URL_SERVER : undefined) ?? import.meta.env?.VITE_HEXCLAVE_API_URL_SERVER)\n ?? ((typeof process !== \"undefined\" ? process.env.STACK_API_URL_SERVER : undefined) ?? import.meta.env?.STACK_API_URL_SERVER)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_STACK_API_URL_SERVER : undefined) ?? import.meta.env?.NEXT_PUBLIC_STACK_API_URL_SERVER)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_STACK_API_URL_SERVER : undefined) ?? import.meta.env?.VITE_STACK_API_URL_SERVER)\n ?? ((typeof process !== \"undefined\" ? process.env.SERVER_STACK_API_URL : undefined) ?? import.meta.env?.SERVER_STACK_API_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_SERVER_STACK_API_URL : undefined) ?? import.meta.env?.NEXT_PUBLIC_SERVER_STACK_API_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_SERVER_STACK_API_URL : undefined) ?? import.meta.env?.VITE_SERVER_STACK_API_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.SERVER_HEXCLAVE_API_URL : undefined) ?? import.meta.env?.SERVER_HEXCLAVE_API_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_SERVER_HEXCLAVE_API_URL : undefined) ?? import.meta.env?.NEXT_PUBLIC_SERVER_HEXCLAVE_API_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_SERVER_HEXCLAVE_API_URL : undefined) ?? import.meta.env?.VITE_SERVER_HEXCLAVE_API_URL) ?? undefined;\n },\n get HEXCLAVE_API_URL() {\n return ((typeof process !== \"undefined\" ? process.env.HEXCLAVE_API_URL : undefined) ?? import.meta.env?.HEXCLAVE_API_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_HEXCLAVE_API_URL : undefined) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_API_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_HEXCLAVE_API_URL : undefined) ?? import.meta.env?.VITE_HEXCLAVE_API_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.STACK_API_URL : undefined) ?? import.meta.env?.STACK_API_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_STACK_API_URL : undefined) ?? import.meta.env?.NEXT_PUBLIC_STACK_API_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_STACK_API_URL : undefined) ?? import.meta.env?.VITE_STACK_API_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.HEXCLAVE_URL : undefined) ?? import.meta.env?.HEXCLAVE_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_HEXCLAVE_URL : undefined) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_HEXCLAVE_URL : undefined) ?? import.meta.env?.VITE_HEXCLAVE_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.STACK_URL : undefined) ?? import.meta.env?.STACK_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_STACK_URL : undefined) ?? import.meta.env?.NEXT_PUBLIC_STACK_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_STACK_URL : undefined) ?? import.meta.env?.VITE_STACK_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.STACK_URL : undefined) ?? import.meta.env?.STACK_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_STACK_URL : undefined) ?? import.meta.env?.NEXT_PUBLIC_STACK_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_STACK_URL : undefined) ?? import.meta.env?.VITE_STACK_URL) ?? undefined;\n },\n get HEXCLAVE_HOSTED_HANDLER_DOMAIN_SUFFIX() {\n return ((typeof process !== \"undefined\" ? process.env.HEXCLAVE_HOSTED_HANDLER_DOMAIN_SUFFIX : undefined) ?? import.meta.env?.HEXCLAVE_HOSTED_HANDLER_DOMAIN_SUFFIX)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_HEXCLAVE_HOSTED_HANDLER_DOMAIN_SUFFIX : undefined) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_HOSTED_HANDLER_DOMAIN_SUFFIX)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_HEXCLAVE_HOSTED_HANDLER_DOMAIN_SUFFIX : undefined) ?? import.meta.env?.VITE_HEXCLAVE_HOSTED_HANDLER_DOMAIN_SUFFIX)\n ?? ((typeof process !== \"undefined\" ? process.env.STACK_HOSTED_HANDLER_DOMAIN_SUFFIX : undefined) ?? import.meta.env?.STACK_HOSTED_HANDLER_DOMAIN_SUFFIX)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_STACK_HOSTED_HANDLER_DOMAIN_SUFFIX : undefined) ?? import.meta.env?.NEXT_PUBLIC_STACK_HOSTED_HANDLER_DOMAIN_SUFFIX)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_STACK_HOSTED_HANDLER_DOMAIN_SUFFIX : undefined) ?? import.meta.env?.VITE_STACK_HOSTED_HANDLER_DOMAIN_SUFFIX) ?? undefined;\n },\n get HEXCLAVE_HOSTED_HANDLER_URL_TEMPLATE() {\n return ((typeof process !== \"undefined\" ? process.env.HEXCLAVE_HOSTED_HANDLER_URL_TEMPLATE : undefined) ?? import.meta.env?.HEXCLAVE_HOSTED_HANDLER_URL_TEMPLATE)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_HEXCLAVE_HOSTED_HANDLER_URL_TEMPLATE : undefined) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_HOSTED_HANDLER_URL_TEMPLATE)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_HEXCLAVE_HOSTED_HANDLER_URL_TEMPLATE : undefined) ?? import.meta.env?.VITE_HEXCLAVE_HOSTED_HANDLER_URL_TEMPLATE)\n ?? ((typeof process !== \"undefined\" ? process.env.STACK_HOSTED_HANDLER_URL_TEMPLATE : undefined) ?? import.meta.env?.STACK_HOSTED_HANDLER_URL_TEMPLATE)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_STACK_HOSTED_HANDLER_URL_TEMPLATE : undefined) ?? import.meta.env?.NEXT_PUBLIC_STACK_HOSTED_HANDLER_URL_TEMPLATE)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_STACK_HOSTED_HANDLER_URL_TEMPLATE : undefined) ?? import.meta.env?.VITE_STACK_HOSTED_HANDLER_URL_TEMPLATE) ?? undefined;\n },\n get HEXCLAVE_STRIPE_PUBLISHABLE_KEY() {\n return ((typeof process !== \"undefined\" ? process.env.HEXCLAVE_STRIPE_PUBLISHABLE_KEY : undefined) ?? import.meta.env?.HEXCLAVE_STRIPE_PUBLISHABLE_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_HEXCLAVE_STRIPE_PUBLISHABLE_KEY : undefined) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_STRIPE_PUBLISHABLE_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_HEXCLAVE_STRIPE_PUBLISHABLE_KEY : undefined) ?? import.meta.env?.VITE_HEXCLAVE_STRIPE_PUBLISHABLE_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.STACK_STRIPE_PUBLISHABLE_KEY : undefined) ?? import.meta.env?.STACK_STRIPE_PUBLISHABLE_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_STACK_STRIPE_PUBLISHABLE_KEY : undefined) ?? import.meta.env?.NEXT_PUBLIC_STACK_STRIPE_PUBLISHABLE_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_STACK_STRIPE_PUBLISHABLE_KEY : undefined) ?? import.meta.env?.VITE_STACK_STRIPE_PUBLISHABLE_KEY) ?? undefined;\n },\n get HEXCLAVE_BOT_CHALLENGE_SITE_KEY() {\n return ((typeof process !== \"undefined\" ? process.env.HEXCLAVE_BOT_CHALLENGE_SITE_KEY : undefined) ?? import.meta.env?.HEXCLAVE_BOT_CHALLENGE_SITE_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_HEXCLAVE_BOT_CHALLENGE_SITE_KEY : undefined) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_BOT_CHALLENGE_SITE_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_HEXCLAVE_BOT_CHALLENGE_SITE_KEY : undefined) ?? import.meta.env?.VITE_HEXCLAVE_BOT_CHALLENGE_SITE_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.STACK_BOT_CHALLENGE_SITE_KEY : undefined) ?? import.meta.env?.STACK_BOT_CHALLENGE_SITE_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_STACK_BOT_CHALLENGE_SITE_KEY : undefined) ?? import.meta.env?.NEXT_PUBLIC_STACK_BOT_CHALLENGE_SITE_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_STACK_BOT_CHALLENGE_SITE_KEY : undefined) ?? import.meta.env?.VITE_STACK_BOT_CHALLENGE_SITE_KEY) ?? undefined;\n },\n get HEXCLAVE_BOT_CHALLENGE_INVISIBLE_SITE_KEY() {\n return ((typeof process !== \"undefined\" ? process.env.HEXCLAVE_BOT_CHALLENGE_INVISIBLE_SITE_KEY : undefined) ?? import.meta.env?.HEXCLAVE_BOT_CHALLENGE_INVISIBLE_SITE_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_HEXCLAVE_BOT_CHALLENGE_INVISIBLE_SITE_KEY : undefined) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_BOT_CHALLENGE_INVISIBLE_SITE_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_HEXCLAVE_BOT_CHALLENGE_INVISIBLE_SITE_KEY : undefined) ?? import.meta.env?.VITE_HEXCLAVE_BOT_CHALLENGE_INVISIBLE_SITE_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.STACK_BOT_CHALLENGE_INVISIBLE_SITE_KEY : undefined) ?? import.meta.env?.STACK_BOT_CHALLENGE_INVISIBLE_SITE_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_STACK_BOT_CHALLENGE_INVISIBLE_SITE_KEY : undefined) ?? import.meta.env?.NEXT_PUBLIC_STACK_BOT_CHALLENGE_INVISIBLE_SITE_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_STACK_BOT_CHALLENGE_INVISIBLE_SITE_KEY : undefined) ?? import.meta.env?.VITE_STACK_BOT_CHALLENGE_INVISIBLE_SITE_KEY) ?? undefined;\n },\n get HEXCLAVE_IS_LOCAL_EMULATOR() {\n return ((typeof process !== \"undefined\" ? process.env.HEXCLAVE_IS_LOCAL_EMULATOR : undefined) ?? import.meta.env?.HEXCLAVE_IS_LOCAL_EMULATOR)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_HEXCLAVE_IS_LOCAL_EMULATOR : undefined) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_IS_LOCAL_EMULATOR)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_HEXCLAVE_IS_LOCAL_EMULATOR : undefined) ?? import.meta.env?.VITE_HEXCLAVE_IS_LOCAL_EMULATOR)\n ?? ((typeof process !== \"undefined\" ? process.env.STACK_IS_LOCAL_EMULATOR : undefined) ?? import.meta.env?.STACK_IS_LOCAL_EMULATOR)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_STACK_IS_LOCAL_EMULATOR : undefined) ?? import.meta.env?.NEXT_PUBLIC_STACK_IS_LOCAL_EMULATOR)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_STACK_IS_LOCAL_EMULATOR : undefined) ?? import.meta.env?.VITE_STACK_IS_LOCAL_EMULATOR) ?? undefined;\n },\n get HEXCLAVE_POSTHOG_KEY() {\n return ((typeof process !== \"undefined\" ? process.env.HEXCLAVE_POSTHOG_KEY : undefined) ?? import.meta.env?.HEXCLAVE_POSTHOG_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_HEXCLAVE_POSTHOG_KEY : undefined) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_POSTHOG_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_HEXCLAVE_POSTHOG_KEY : undefined) ?? import.meta.env?.VITE_HEXCLAVE_POSTHOG_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.STACK_POSTHOG_KEY : undefined) ?? import.meta.env?.STACK_POSTHOG_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_STACK_POSTHOG_KEY : undefined) ?? import.meta.env?.NEXT_PUBLIC_STACK_POSTHOG_KEY)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_STACK_POSTHOG_KEY : undefined) ?? import.meta.env?.VITE_STACK_POSTHOG_KEY) ?? undefined;\n },\n get HEXCLAVE_SVIX_SERVER_URL() {\n return ((typeof process !== \"undefined\" ? process.env.HEXCLAVE_SVIX_SERVER_URL : undefined) ?? import.meta.env?.HEXCLAVE_SVIX_SERVER_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_HEXCLAVE_SVIX_SERVER_URL : undefined) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_SVIX_SERVER_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_HEXCLAVE_SVIX_SERVER_URL : undefined) ?? import.meta.env?.VITE_HEXCLAVE_SVIX_SERVER_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.STACK_SVIX_SERVER_URL : undefined) ?? import.meta.env?.STACK_SVIX_SERVER_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_STACK_SVIX_SERVER_URL : undefined) ?? import.meta.env?.NEXT_PUBLIC_STACK_SVIX_SERVER_URL)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_STACK_SVIX_SERVER_URL : undefined) ?? import.meta.env?.VITE_STACK_SVIX_SERVER_URL) ?? undefined;\n },\n get HEXCLAVE_SENTRY_DSN() {\n return ((typeof process !== \"undefined\" ? process.env.HEXCLAVE_SENTRY_DSN : undefined) ?? import.meta.env?.HEXCLAVE_SENTRY_DSN)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_HEXCLAVE_SENTRY_DSN : undefined) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_SENTRY_DSN)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_HEXCLAVE_SENTRY_DSN : undefined) ?? import.meta.env?.VITE_HEXCLAVE_SENTRY_DSN)\n ?? ((typeof process !== \"undefined\" ? process.env.STACK_SENTRY_DSN : undefined) ?? import.meta.env?.STACK_SENTRY_DSN)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_STACK_SENTRY_DSN : undefined) ?? import.meta.env?.NEXT_PUBLIC_STACK_SENTRY_DSN)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_STACK_SENTRY_DSN : undefined) ?? import.meta.env?.VITE_STACK_SENTRY_DSN) ?? undefined;\n },\n get HEXCLAVE_VERSION_ALERTER_SEVERE_ONLY() {\n return ((typeof process !== \"undefined\" ? process.env.HEXCLAVE_VERSION_ALERTER_SEVERE_ONLY : undefined) ?? import.meta.env?.HEXCLAVE_VERSION_ALERTER_SEVERE_ONLY)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_HEXCLAVE_VERSION_ALERTER_SEVERE_ONLY : undefined) ?? import.meta.env?.NEXT_PUBLIC_HEXCLAVE_VERSION_ALERTER_SEVERE_ONLY)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_HEXCLAVE_VERSION_ALERTER_SEVERE_ONLY : undefined) ?? import.meta.env?.VITE_HEXCLAVE_VERSION_ALERTER_SEVERE_ONLY)\n ?? ((typeof process !== \"undefined\" ? process.env.STACK_VERSION_ALERTER_SEVERE_ONLY : undefined) ?? import.meta.env?.STACK_VERSION_ALERTER_SEVERE_ONLY)\n ?? ((typeof process !== \"undefined\" ? process.env.NEXT_PUBLIC_STACK_VERSION_ALERTER_SEVERE_ONLY : undefined) ?? import.meta.env?.NEXT_PUBLIC_STACK_VERSION_ALERTER_SEVERE_ONLY)\n ?? ((typeof process !== \"undefined\" ? process.env.VITE_STACK_VERSION_ALERTER_SEVERE_ONLY : undefined) ?? import.meta.env?.VITE_STACK_VERSION_ALERTER_SEVERE_ONLY) ?? undefined;\n },\n get NODE_ENV() {\n return ((typeof process !== \"undefined\" ? process.env.NODE_ENV : undefined) ?? import.meta.env?.NODE_ENV) ?? undefined;\n },\n};\n"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ //#region src/global.d.ts
2
+ declare global {
3
+ // eslint-disable-next-line @typescript-eslint/consistent-type-definitions
4
+ interface ImportMeta {
5
+ readonly env?: Record<string, string | undefined>;
6
+ }
7
+ }
8
+ //# sourceMappingURL=global.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global.d.ts","names":["_0","Record","global","ImportMeta","env","sideEffect"],"sources":["../../src/global.d.ts"],"mappings":";QAMQE,MAAAA;EAAAA;EAAAA,UAEIC,UAAAA;IAAAA,SACCC,GAAAA,GAAMH,MAAAA;EAAAA;AAAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"admin-app-impl.d.ts","names":[],"sources":["../../../../../../src/lib/hexclave-app/apps/implementations/admin-app-impl.ts"],"mappings":"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"}
1
+ {"version":3,"file":"admin-app-impl.d.ts","names":[],"sources":["../../../../../../src/lib/hexclave-app/apps/implementations/admin-app-impl.ts"],"mappings":"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"}
@@ -52,12 +52,13 @@ function createMockDocument() {
52
52
  }
53
53
  describe("StackClientApp cross-domain auth", () => {
54
54
  it("uses the fresh post-auth refresh token when minting a cross-domain handoff", async () => {
55
+ const freshAccessToken = createAccessTokenString("fresh-refresh-token-id");
55
56
  const clientApp = new StackClientApp({
56
57
  baseUrl: "http://localhost:12345",
57
58
  projectId: "00000000-0000-4000-8000-000000000000",
58
59
  publishableClientKey: "stack-pk-test",
59
60
  tokenStore: {
60
- accessToken: "stale-access-token",
61
+ accessToken: createAccessTokenString("stale-refresh-token-id"),
61
62
  refreshToken: "stale-refresh-token"
62
63
  },
63
64
  redirectMethod: "none",
@@ -65,19 +66,34 @@ describe("StackClientApp cross-domain auth", () => {
65
66
  });
66
67
  const clientInterface = Reflect.get(clientApp, "_interface");
67
68
  const originalSendClientRequest = Reflect.get(clientInterface, "sendClientRequest");
69
+ const originalFetchNewAccessToken = Reflect.get(clientInterface, "fetchNewAccessToken");
68
70
  const capturedRefreshTokens = [];
71
+ const capturedAccessTokenRefreshTokenIds = [];
72
+ const refreshedRawRefreshTokens = [];
69
73
  Reflect.set(clientInterface, "sendClientRequest", async (_path, _requestOptions, session) => {
70
74
  const getRefreshToken = Reflect.get(session ?? {}, "getRefreshToken");
75
+ const getOrFetchLikelyValidTokens = Reflect.get(session ?? {}, "getOrFetchLikelyValidTokens");
71
76
  if (typeof getRefreshToken !== "function") throw new Error("Expected cross-domain auth to pass a session to the client interface.");
77
+ if (typeof getOrFetchLikelyValidTokens !== "function") throw new Error("Expected cross-domain auth to pass a session with token accessors.");
72
78
  const refreshToken = getRefreshToken.call(session);
73
79
  const refreshTokenString = Reflect.get(refreshToken ?? {}, "token");
74
80
  if (typeof refreshTokenString !== "string") throw new Error("Expected cross-domain auth to pass a refresh-token-backed session.");
75
81
  capturedRefreshTokens.push(refreshTokenString);
82
+ const tokens = await getOrFetchLikelyValidTokens.call(session, 0, null);
83
+ capturedAccessTokenRefreshTokenIds.push(tokens.accessToken.payload.refresh_token_id);
76
84
  return {
77
85
  ok: true,
78
86
  json: async () => ({ redirect_url: "https://example.com/handler/oauth-callback?code=handoff-code&state=handoff-state" })
79
87
  };
80
88
  });
89
+ Reflect.set(clientInterface, "fetchNewAccessToken", async (refreshToken) => {
90
+ const refreshTokenString = Reflect.get(refreshToken ?? {}, "token");
91
+ if (typeof refreshTokenString !== "string") throw new Error("Expected refresh token while fetching a new access token.");
92
+ refreshedRawRefreshTokens.push(refreshTokenString);
93
+ return AccessToken.createIfValid(freshAccessToken) ?? (() => {
94
+ throw new Error("Expected test access token to be valid");
95
+ })();
96
+ });
81
97
  try {
82
98
  const createCrossDomainAuthRedirectUrl = Reflect.get(clientApp, "_createCrossDomainAuthRedirectUrl");
83
99
  if (typeof createCrossDomainAuthRedirectUrl !== "function") throw new Error("Expected StackClientApp to expose _createCrossDomainAuthRedirectUrl in tests.");
@@ -87,14 +103,17 @@ describe("StackClientApp cross-domain auth", () => {
87
103
  codeChallenge: "abcdefghijklmnopqrstuvwxyzABCDEFG_0123456789-._~",
88
104
  afterCallbackRedirectUrl: "https://example.com/account-settings",
89
105
  overrideTokenStoreInit: {
90
- accessToken: "fresh-access-token",
106
+ accessToken: createAccessTokenString("fresh-stale-refresh-token-id"),
91
107
  refreshToken: "fresh-refresh-token"
92
108
  }
93
109
  })).resolves.toBe("https://example.com/handler/oauth-callback?code=handoff-code&state=handoff-state");
94
110
  } finally {
95
111
  Reflect.set(clientInterface, "sendClientRequest", originalSendClientRequest);
112
+ Reflect.set(clientInterface, "fetchNewAccessToken", originalFetchNewAccessToken);
96
113
  }
114
+ expect(refreshedRawRefreshTokens).toEqual(["fresh-refresh-token"]);
97
115
  expect(capturedRefreshTokens).toEqual(["fresh-refresh-token"]);
116
+ expect(capturedAccessTokenRefreshTokenIds).toEqual(["fresh-refresh-token-id"]);
98
117
  });
99
118
  it("uses a fresh nested OAuth state while preserving the outer cross-domain return state", async () => {
100
119
  const projectId = "00000000-0000-4000-8000-000000000002";
@@ -119,7 +138,7 @@ describe("StackClientApp cross-domain auth", () => {
119
138
  const previousWindow = globalThis.window;
120
139
  const previousDocument = globalThis.document;
121
140
  let redirectedUrl = "";
122
- vi.spyOn(clientApp, "_getCurrentRefreshTokenIdIfSignedIn").mockResolvedValue(null);
141
+ vi.spyOn(clientApp, "_fetchCurrentRefreshTokenIdIfSignedIn").mockResolvedValue(null);
123
142
  vi.spyOn(clientApp, "_getCrossDomainHandoffParamsForRedirect").mockResolvedValue({
124
143
  state: "fresh-nested-state",
125
144
  codeChallenge: "fresh-nested-code-challenge"
@@ -174,6 +193,13 @@ describe("StackClientApp cross-domain auth", () => {
174
193
  const previousWindow = globalThis.window;
175
194
  const previousDocument = globalThis.document;
176
195
  let redirectedUrl = "";
196
+ const clientInterface = Reflect.get(clientApp, "_interface");
197
+ const originalFetchNewAccessToken = Reflect.get(clientInterface, "fetchNewAccessToken");
198
+ Reflect.set(clientInterface, "fetchNewAccessToken", async () => {
199
+ return AccessToken.createIfValid(hostedAccessToken) ?? (() => {
200
+ throw new Error("Expected test access token to be valid");
201
+ })();
202
+ });
177
203
  vi.spyOn(clientApp, "_isTrusted").mockResolvedValue(true);
178
204
  globalThis.document = createMockDocument();
179
205
  globalThis.window = { location: {
@@ -186,6 +212,7 @@ describe("StackClientApp cross-domain auth", () => {
186
212
  try {
187
213
  await expect(clientApp._maybeHandleNestedCrossDomainAuth()).rejects.toThrowError("INTENTIONAL_TEST_ABORT");
188
214
  } finally {
215
+ Reflect.set(clientInterface, "fetchNewAccessToken", originalFetchNewAccessToken);
189
216
  globalThis.window = previousWindow;
190
217
  globalThis.document = previousDocument;
191
218
  }
@@ -195,6 +222,56 @@ describe("StackClientApp cross-domain auth", () => {
195
222
  });
196
223
  expect(new URL(redirectedUrl).origin).toBe("https://demo.stack-auth.com");
197
224
  });
225
+ it("uses the latest browser refresh cookie before computing nested cross-domain session IDs", async () => {
226
+ const projectId = "00000000-0000-4000-8000-000000000007";
227
+ const previousWindow = globalThis.window;
228
+ const previousDocument = globalThis.document;
229
+ globalThis.document = createMockDocument();
230
+ globalThis.window = { location: {
231
+ href: "https://demo.stack-auth.com/",
232
+ protocol: "https:",
233
+ hostname: "demo.stack-auth.com"
234
+ } };
235
+ const clientApp = new StackClientApp({
236
+ baseUrl: "http://localhost:12345",
237
+ projectId,
238
+ publishableClientKey: "stack-pk-test",
239
+ tokenStore: "cookie",
240
+ redirectMethod: "none",
241
+ noAutomaticPrefetch: true
242
+ });
243
+ const clientInterface = Reflect.get(clientApp, "_interface");
244
+ const originalFetchNewAccessToken = Reflect.get(clientInterface, "fetchNewAccessToken");
245
+ const refreshedRawRefreshTokens = [];
246
+ try {
247
+ const getBrowserCookieTokenStore = Reflect.get(clientApp, "_getBrowserCookieTokenStore");
248
+ if (typeof getBrowserCookieTokenStore !== "function") throw new Error("Expected StackClientApp to expose _getBrowserCookieTokenStore in tests.");
249
+ getBrowserCookieTokenStore.call(clientApp).set({
250
+ refreshToken: "old-refresh-token",
251
+ accessToken: createAccessTokenString("old-refresh-token-id")
252
+ });
253
+ document.cookie = `__Host-hexclave-refresh-${projectId}--default=${JSON.stringify({
254
+ refresh_token: "new-refresh-token",
255
+ updated_at_millis: 1
256
+ })}`;
257
+ Reflect.set(clientInterface, "fetchNewAccessToken", async (refreshToken) => {
258
+ const refreshTokenString = Reflect.get(refreshToken ?? {}, "token");
259
+ if (typeof refreshTokenString !== "string") throw new Error("Expected refresh token while fetching a new access token.");
260
+ refreshedRawRefreshTokens.push(refreshTokenString);
261
+ return AccessToken.createIfValid(createAccessTokenString("new-refresh-token-id")) ?? (() => {
262
+ throw new Error("Expected test access token to be valid");
263
+ })();
264
+ });
265
+ const fetchCurrentRefreshTokenIdIfSignedIn = Reflect.get(clientApp, "_fetchCurrentRefreshTokenIdIfSignedIn");
266
+ if (typeof fetchCurrentRefreshTokenIdIfSignedIn !== "function") throw new Error("Expected StackClientApp to expose _fetchCurrentRefreshTokenIdIfSignedIn in tests.");
267
+ await expect(fetchCurrentRefreshTokenIdIfSignedIn.call(clientApp, { awaitPendingAuthResolutions: false })).resolves.toBe("new-refresh-token-id");
268
+ } finally {
269
+ Reflect.set(clientInterface, "fetchNewAccessToken", originalFetchNewAccessToken);
270
+ globalThis.window = previousWindow;
271
+ globalThis.document = previousDocument;
272
+ }
273
+ expect(refreshedRawRefreshTokens).toEqual(["new-refresh-token"]);
274
+ });
198
275
  it("uses direct sign-out instead of hosted sign-out redirects when code execution is available", async () => {
199
276
  const clientApp = new StackClientApp({
200
277
  baseUrl: "http://localhost:12345",
@@ -244,7 +321,7 @@ describe("StackClientApp cross-domain auth", () => {
244
321
  try {
245
322
  const signOut = Reflect.get(clientApp, "_signOut");
246
323
  if (typeof signOut !== "function") throw new Error("Expected StackClientApp to expose _signOut in tests.");
247
- await expect(signOut.call(clientApp, {})).rejects.toThrowError("INTENTIONAL_TEST_ABORT");
324
+ await expect(signOut.call(clientApp, Reflect.get(clientInterface, "createSession").call(clientInterface, { refreshToken: null }))).rejects.toThrowError("INTENTIONAL_TEST_ABORT");
248
325
  } finally {
249
326
  Reflect.set(clientInterface, "signOut", originalSignOut);
250
327
  globalThis.window = previousWindow;
@@ -1 +1 @@
1
- {"version":3,"file":"client-app-impl.cross-domain.test.js","names":[],"sources":["../../../../../../src/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { describe, expect, it, vi } from \"vitest\";\nimport { AccessToken } from \"@hexclave/shared/dist/sessions\";\nimport { Store } from \"@hexclave/shared/dist/utils/stores\";\nimport { StackClientApp } from \"../interfaces/client-app\";\n\nfunction createAccessTokenString(refreshTokenId: string): string {\n const encode = (value: unknown) => Buffer.from(JSON.stringify(value)).toString(\"base64url\");\n const nowSeconds = Math.floor(Date.now() / 1000);\n return [\n encode({ alg: \"none\", typ: \"JWT\" }),\n encode({\n sub: \"user-id\",\n exp: nowSeconds + 60,\n iat: nowSeconds,\n iss: \"https://api.example.test\",\n aud: \"project-id\",\n project_id: \"project-id\",\n branch_id: \"main\",\n refresh_token_id: refreshTokenId,\n role: \"authenticated\",\n name: null,\n email: null,\n email_verified: false,\n selected_team_id: null,\n signed_up_at: nowSeconds,\n is_anonymous: false,\n is_restricted: false,\n restricted_reason: null,\n requires_totp_mfa: false,\n }),\n \"\",\n ].join(\".\");\n}\n\nfunction createMockDocument(): Document {\n const cookieJar = new Map<string, string>();\n return {\n get cookie() {\n return [...cookieJar.entries()].map(([key, value]) => `${key}=${value}`).join(\"; \");\n },\n set cookie(str: string) {\n const [nameValue] = str.split(\";\");\n const eqIndex = nameValue.indexOf(\"=\");\n if (eqIndex < 0) return;\n cookieJar.set(nameValue.slice(0, eqIndex).trim(), nameValue.slice(eqIndex + 1).trim());\n },\n createElement: () => ({}),\n } as any;\n}\n\ndescribe(\"StackClientApp cross-domain auth\", () => {\n it(\"uses the fresh post-auth refresh token when minting a cross-domain handoff\", async () => {\n const clientApp = new StackClientApp({\n baseUrl: \"http://localhost:12345\",\n projectId: \"00000000-0000-4000-8000-000000000000\",\n publishableClientKey: \"stack-pk-test\",\n tokenStore: {\n accessToken: \"stale-access-token\",\n refreshToken: \"stale-refresh-token\",\n },\n redirectMethod: \"none\",\n noAutomaticPrefetch: true,\n });\n\n const clientInterface = Reflect.get(clientApp, \"_interface\");\n const originalSendClientRequest = Reflect.get(clientInterface, \"sendClientRequest\");\n const capturedRefreshTokens: string[] = [];\n\n Reflect.set(clientInterface, \"sendClientRequest\", async (_path: unknown, _requestOptions: unknown, session: unknown) => {\n const getRefreshToken = Reflect.get(session ?? {}, \"getRefreshToken\");\n if (typeof getRefreshToken !== \"function\") {\n throw new Error(\"Expected cross-domain auth to pass a session to the client interface.\");\n }\n const refreshToken = getRefreshToken.call(session);\n const refreshTokenString = Reflect.get(refreshToken ?? {}, \"token\");\n if (typeof refreshTokenString !== \"string\") {\n throw new Error(\"Expected cross-domain auth to pass a refresh-token-backed session.\");\n }\n capturedRefreshTokens.push(refreshTokenString);\n return {\n ok: true,\n json: async () => ({ redirect_url: \"https://example.com/handler/oauth-callback?code=handoff-code&state=handoff-state\" }),\n };\n });\n\n try {\n const createCrossDomainAuthRedirectUrl = Reflect.get(clientApp, \"_createCrossDomainAuthRedirectUrl\");\n if (typeof createCrossDomainAuthRedirectUrl !== \"function\") {\n throw new Error(\"Expected StackClientApp to expose _createCrossDomainAuthRedirectUrl in tests.\");\n }\n\n await expect(createCrossDomainAuthRedirectUrl.call(clientApp, {\n redirectUri: \"https://example.com/handler/oauth-callback\",\n state: \"handoff-state\",\n codeChallenge: \"abcdefghijklmnopqrstuvwxyzABCDEFG_0123456789-._~\",\n afterCallbackRedirectUrl: \"https://example.com/account-settings\",\n overrideTokenStoreInit: {\n accessToken: \"fresh-access-token\",\n refreshToken: \"fresh-refresh-token\",\n },\n })).resolves.toBe(\"https://example.com/handler/oauth-callback?code=handoff-code&state=handoff-state\");\n } finally {\n Reflect.set(clientInterface, \"sendClientRequest\", originalSendClientRequest);\n }\n\n expect(capturedRefreshTokens).toEqual([\"fresh-refresh-token\"]);\n });\n\n it(\"uses a fresh nested OAuth state while preserving the outer cross-domain return state\", async () => {\n const projectId = \"00000000-0000-4000-8000-000000000002\";\n const clientApp = new StackClientApp({\n baseUrl: \"http://localhost:12345\",\n projectId,\n publishableClientKey: \"stack-pk-test\",\n tokenStore: \"memory\",\n redirectMethod: \"window\",\n urls: {\n default: { type: \"hosted\" },\n },\n noAutomaticPrefetch: true,\n });\n const outerState = \"outer-cross-domain-state\";\n const outerCodeChallenge = \"abcdefghijklmnopqrstuvwxyzABCDEFG_0123456789-._~\";\n const currentUrl = new URL(`https://${projectId}.example-stack-hosted.test/handler/sign-in`);\n currentUrl.searchParams.set(\"after_auth_return_to\", `https://demo.stack-auth.com/?hexclave_cross_domain_auth=1&hexclave_cross_domain_state=${outerState}`);\n currentUrl.searchParams.set(\"hexclave_cross_domain_state\", outerState);\n currentUrl.searchParams.set(\"hexclave_cross_domain_code_challenge\", outerCodeChallenge);\n currentUrl.searchParams.set(\"hexclave_cross_domain_after_callback_redirect_url\", \"https://demo.stack-auth.com/\");\n currentUrl.searchParams.set(\"stack_nested_cross_domain_auth_refresh_token_id\", \"source-session\");\n currentUrl.searchParams.set(\"stack_nested_cross_domain_auth_callback_url\", \"https://demo.stack-auth.com/\");\n\n const previousWindow = globalThis.window;\n const previousDocument = globalThis.document;\n let redirectedUrl = \"\";\n vi.spyOn(clientApp as any, \"_getCurrentRefreshTokenIdIfSignedIn\").mockResolvedValue(null);\n vi.spyOn(clientApp as any, \"_getCrossDomainHandoffParamsForRedirect\").mockResolvedValue({\n state: \"fresh-nested-state\",\n codeChallenge: \"fresh-nested-code-challenge\",\n });\n vi.spyOn(clientApp as any, \"_isTrusted\").mockResolvedValue(true);\n\n globalThis.document = createMockDocument();\n globalThis.window = {\n location: {\n href: currentUrl.toString(),\n replace: (url: string) => {\n redirectedUrl = url;\n throw new Error(\"INTENTIONAL_TEST_ABORT\");\n },\n },\n } as any;\n\n try {\n await expect((clientApp as any)._maybeHandleNestedCrossDomainAuth()).rejects.toThrowError(\"INTENTIONAL_TEST_ABORT\");\n } finally {\n globalThis.window = previousWindow;\n globalThis.document = previousDocument;\n }\n\n const redirectUrl = new URL(redirectedUrl);\n expect(redirectUrl.searchParams.get(\"state\")).toBe(\"fresh-nested-state\");\n expect(redirectUrl.searchParams.get(\"code_challenge\")).toBe(\"fresh-nested-code-challenge\");\n const redirectUri = new URL(redirectUrl.searchParams.get(\"redirect_uri\") ?? \"\");\n expect(redirectUri.searchParams.get(\"hexclave_cross_domain_state\")).toBe(outerState);\n expect(redirectUri.searchParams.get(\"hexclave_cross_domain_code_challenge\")).toBe(outerCodeChallenge);\n expect(redirectUri.searchParams.get(\"hexclave_cross_domain_after_callback_redirect_url\")).toBe(\"https://demo.stack-auth.com/\");\n });\n\n it(\"clears a stale target-domain session before deferring to the source-domain session\", async () => {\n const projectId = \"00000000-0000-4000-8000-000000000006\";\n const hostedAccessToken = createAccessTokenString(\"hosted-old-refresh-token-id\");\n const clientApp = new StackClientApp({\n baseUrl: \"http://localhost:12345\",\n projectId,\n publishableClientKey: \"stack-pk-test\",\n tokenStore: \"memory\",\n redirectMethod: \"window\",\n urls: {\n default: { type: \"hosted\" },\n },\n noAutomaticPrefetch: true,\n });\n const tokenStore = Reflect.get(clientApp, \"_memoryTokenStore\");\n if (!(tokenStore instanceof Store)) {\n throw new Error(\"Expected StackClientApp to use a memory token store in this test.\");\n }\n tokenStore.set({\n refreshToken: \"hosted-old-refresh-token\",\n accessToken: hostedAccessToken,\n });\n\n const currentUrl = new URL(`https://${projectId}.example-stack-hosted.test/handler/sign-in`);\n currentUrl.searchParams.set(\"stack_nested_cross_domain_auth_refresh_token_id\", \"source-anonymous-refresh-token-id\");\n currentUrl.searchParams.set(\"stack_nested_cross_domain_auth_callback_url\", \"https://demo.stack-auth.com/handler/oauth-callback\");\n currentUrl.searchParams.set(\"hexclave_cross_domain_state\", \"outer-state\");\n currentUrl.searchParams.set(\"hexclave_cross_domain_code_challenge\", \"outer-code-challenge\");\n currentUrl.searchParams.set(\"hexclave_cross_domain_after_callback_redirect_url\", \"https://demo.stack-auth.com/app\");\n\n const previousWindow = globalThis.window;\n const previousDocument = globalThis.document;\n let redirectedUrl = \"\";\n vi.spyOn(clientApp as any, \"_isTrusted\").mockResolvedValue(true);\n\n globalThis.document = createMockDocument();\n globalThis.window = {\n location: {\n href: currentUrl.toString(),\n replace: (url: string) => {\n redirectedUrl = url;\n throw new Error(\"INTENTIONAL_TEST_ABORT\");\n },\n },\n } as any;\n\n try {\n await expect((clientApp as any)._maybeHandleNestedCrossDomainAuth()).rejects.toThrowError(\"INTENTIONAL_TEST_ABORT\");\n } finally {\n globalThis.window = previousWindow;\n globalThis.document = previousDocument;\n }\n\n expect(tokenStore.get()).toEqual({\n refreshToken: null,\n accessToken: null,\n });\n expect(new URL(redirectedUrl).origin).toBe(\"https://demo.stack-auth.com\");\n });\n\n it(\"uses direct sign-out instead of hosted sign-out redirects when code execution is available\", async () => {\n const clientApp = new StackClientApp({\n baseUrl: \"http://localhost:12345\",\n projectId: \"00000000-0000-4000-8000-000000000003\",\n publishableClientKey: \"stack-pk-test\",\n tokenStore: \"memory\",\n redirectMethod: \"window\",\n urls: {\n handler: \"/handler\",\n signOut: { type: \"hosted\" },\n },\n noAutomaticPrefetch: true,\n });\n const signOutSpy = vi.spyOn(clientApp, \"signOut\").mockRejectedValue(new Error(\"INTENTIONAL_TEST_ABORT\"));\n\n try {\n await expect(clientApp.redirectToSignOut()).rejects.toThrowError(\"INTENTIONAL_TEST_ABORT\");\n expect(signOutSpy).toHaveBeenCalledWith();\n } finally {\n signOutSpy.mockRestore();\n }\n });\n\n it(\"keeps default hosted signOut() on the source domain when afterSignOut is not configured\", async () => {\n const clientApp = new StackClientApp({\n baseUrl: \"http://localhost:12345\",\n projectId: \"00000000-0000-4000-8000-000000000004\",\n publishableClientKey: \"stack-pk-test\",\n tokenStore: \"memory\",\n redirectMethod: \"window\",\n urls: {\n default: { type: \"hosted\" },\n },\n noAutomaticPrefetch: true,\n });\n const currentHref = \"https://demo.stack-auth.com/settings?tab=profile\";\n\n const clientInterface = Reflect.get(clientApp, \"_interface\");\n const originalSignOut = Reflect.get(clientInterface, \"signOut\");\n Reflect.set(clientInterface, \"signOut\", async () => {});\n const previousWindow = globalThis.window;\n const previousDocument = globalThis.document;\n let redirectedUrl = \"\";\n\n globalThis.document = createMockDocument();\n globalThis.window = {\n location: {\n href: currentHref,\n replace: (url: string) => {\n redirectedUrl = url;\n throw new Error(\"INTENTIONAL_TEST_ABORT\");\n },\n },\n } as any;\n\n try {\n const signOut = Reflect.get(clientApp, \"_signOut\");\n if (typeof signOut !== \"function\") {\n throw new Error(\"Expected StackClientApp to expose _signOut in tests.\");\n }\n await expect(signOut.call(clientApp, {})).rejects.toThrowError(\"INTENTIONAL_TEST_ABORT\");\n } finally {\n Reflect.set(clientInterface, \"signOut\", originalSignOut);\n globalThis.window = previousWindow;\n globalThis.document = previousDocument;\n }\n\n expect(redirectedUrl).toBe(\"/settings?tab=profile\");\n });\n\n it(\"ignores stale session callbacks after a newer refresh token owns the token store\", async () => {\n const clientApp = new StackClientApp({\n baseUrl: \"http://localhost:12345\",\n projectId: \"00000000-0000-4000-8000-000000000005\",\n publishableClientKey: \"stack-pk-test\",\n tokenStore: \"memory\",\n redirectMethod: \"none\",\n noAutomaticPrefetch: true,\n });\n const oldAccessToken = createAccessTokenString(\"old-refresh-token-id\");\n const refreshedOldAccessToken = createAccessTokenString(\"refreshed-old-refresh-token-id\");\n const newAccessToken = createAccessTokenString(\"new-refresh-token-id\");\n const tokenStore = new Store({\n refreshToken: \"old-refresh-token\",\n accessToken: oldAccessToken,\n });\n const clientInterface = Reflect.get(clientApp, \"_interface\");\n const originalFetchNewAccessToken = Reflect.get(clientInterface, \"fetchNewAccessToken\");\n Reflect.set(clientInterface, \"fetchNewAccessToken\", async () => {\n return AccessToken.createIfValid(refreshedOldAccessToken) ?? (() => {\n throw new Error(\"Expected test access token to be valid\");\n })();\n });\n\n try {\n const getSessionFromTokenStore = Reflect.get(clientApp, \"_getSessionFromTokenStore\");\n if (typeof getSessionFromTokenStore !== \"function\") {\n throw new Error(\"Expected StackClientApp to expose _getSessionFromTokenStore in tests.\");\n }\n const oldSession = getSessionFromTokenStore.call(clientApp, tokenStore);\n tokenStore.set({\n refreshToken: \"new-refresh-token\",\n accessToken: newAccessToken,\n });\n\n await oldSession.fetchNewTokens();\n expect(tokenStore.get()).toEqual({\n refreshToken: \"new-refresh-token\",\n accessToken: newAccessToken,\n });\n\n oldSession.markInvalid();\n expect(tokenStore.get()).toEqual({\n refreshToken: \"new-refresh-token\",\n accessToken: newAccessToken,\n });\n } finally {\n Reflect.set(clientInterface, \"fetchNewAccessToken\", originalFetchNewAccessToken);\n }\n });\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"client-app-impl.cross-domain.test.js","names":[],"sources":["../../../../../../src/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { describe, expect, it, vi } from \"vitest\";\nimport { AccessToken } from \"@hexclave/shared/dist/sessions\";\nimport { Store } from \"@hexclave/shared/dist/utils/stores\";\nimport { StackClientApp } from \"../interfaces/client-app\";\n\nfunction createAccessTokenString(refreshTokenId: string): string {\n const encode = (value: unknown) => Buffer.from(JSON.stringify(value)).toString(\"base64url\");\n const nowSeconds = Math.floor(Date.now() / 1000);\n return [\n encode({ alg: \"none\", typ: \"JWT\" }),\n encode({\n sub: \"user-id\",\n exp: nowSeconds + 60,\n iat: nowSeconds,\n iss: \"https://api.example.test\",\n aud: \"project-id\",\n project_id: \"project-id\",\n branch_id: \"main\",\n refresh_token_id: refreshTokenId,\n role: \"authenticated\",\n name: null,\n email: null,\n email_verified: false,\n selected_team_id: null,\n signed_up_at: nowSeconds,\n is_anonymous: false,\n is_restricted: false,\n restricted_reason: null,\n requires_totp_mfa: false,\n }),\n \"\",\n ].join(\".\");\n}\n\nfunction createMockDocument(): Document {\n const cookieJar = new Map<string, string>();\n return {\n get cookie() {\n return [...cookieJar.entries()].map(([key, value]) => `${key}=${value}`).join(\"; \");\n },\n set cookie(str: string) {\n const [nameValue] = str.split(\";\");\n const eqIndex = nameValue.indexOf(\"=\");\n if (eqIndex < 0) return;\n cookieJar.set(nameValue.slice(0, eqIndex).trim(), nameValue.slice(eqIndex + 1).trim());\n },\n createElement: () => ({}),\n } as any;\n}\n\ndescribe(\"StackClientApp cross-domain auth\", () => {\n it(\"uses the fresh post-auth refresh token when minting a cross-domain handoff\", async () => {\n const freshAccessToken = createAccessTokenString(\"fresh-refresh-token-id\");\n const clientApp = new StackClientApp({\n baseUrl: \"http://localhost:12345\",\n projectId: \"00000000-0000-4000-8000-000000000000\",\n publishableClientKey: \"stack-pk-test\",\n tokenStore: {\n accessToken: createAccessTokenString(\"stale-refresh-token-id\"),\n refreshToken: \"stale-refresh-token\",\n },\n redirectMethod: \"none\",\n noAutomaticPrefetch: true,\n });\n\n const clientInterface = Reflect.get(clientApp, \"_interface\");\n const originalSendClientRequest = Reflect.get(clientInterface, \"sendClientRequest\");\n const originalFetchNewAccessToken = Reflect.get(clientInterface, \"fetchNewAccessToken\");\n const capturedRefreshTokens: string[] = [];\n const capturedAccessTokenRefreshTokenIds: string[] = [];\n const refreshedRawRefreshTokens: string[] = [];\n\n Reflect.set(clientInterface, \"sendClientRequest\", async (_path: unknown, _requestOptions: unknown, session: unknown) => {\n const getRefreshToken = Reflect.get(session ?? {}, \"getRefreshToken\");\n const getOrFetchLikelyValidTokens = Reflect.get(session ?? {}, \"getOrFetchLikelyValidTokens\");\n if (typeof getRefreshToken !== \"function\") {\n throw new Error(\"Expected cross-domain auth to pass a session to the client interface.\");\n }\n if (typeof getOrFetchLikelyValidTokens !== \"function\") {\n throw new Error(\"Expected cross-domain auth to pass a session with token accessors.\");\n }\n const refreshToken = getRefreshToken.call(session);\n const refreshTokenString = Reflect.get(refreshToken ?? {}, \"token\");\n if (typeof refreshTokenString !== \"string\") {\n throw new Error(\"Expected cross-domain auth to pass a refresh-token-backed session.\");\n }\n capturedRefreshTokens.push(refreshTokenString);\n const tokens = await getOrFetchLikelyValidTokens.call(session, 0, null);\n capturedAccessTokenRefreshTokenIds.push(tokens.accessToken.payload.refresh_token_id);\n return {\n ok: true,\n json: async () => ({ redirect_url: \"https://example.com/handler/oauth-callback?code=handoff-code&state=handoff-state\" }),\n };\n });\n Reflect.set(clientInterface, \"fetchNewAccessToken\", async (refreshToken: unknown) => {\n const refreshTokenString = Reflect.get(refreshToken ?? {}, \"token\");\n if (typeof refreshTokenString !== \"string\") {\n throw new Error(\"Expected refresh token while fetching a new access token.\");\n }\n refreshedRawRefreshTokens.push(refreshTokenString);\n return AccessToken.createIfValid(freshAccessToken) ?? (() => {\n throw new Error(\"Expected test access token to be valid\");\n })();\n });\n\n try {\n const createCrossDomainAuthRedirectUrl = Reflect.get(clientApp, \"_createCrossDomainAuthRedirectUrl\");\n if (typeof createCrossDomainAuthRedirectUrl !== \"function\") {\n throw new Error(\"Expected StackClientApp to expose _createCrossDomainAuthRedirectUrl in tests.\");\n }\n\n await expect(createCrossDomainAuthRedirectUrl.call(clientApp, {\n redirectUri: \"https://example.com/handler/oauth-callback\",\n state: \"handoff-state\",\n codeChallenge: \"abcdefghijklmnopqrstuvwxyzABCDEFG_0123456789-._~\",\n afterCallbackRedirectUrl: \"https://example.com/account-settings\",\n overrideTokenStoreInit: {\n accessToken: createAccessTokenString(\"fresh-stale-refresh-token-id\"),\n refreshToken: \"fresh-refresh-token\",\n },\n })).resolves.toBe(\"https://example.com/handler/oauth-callback?code=handoff-code&state=handoff-state\");\n } finally {\n Reflect.set(clientInterface, \"sendClientRequest\", originalSendClientRequest);\n Reflect.set(clientInterface, \"fetchNewAccessToken\", originalFetchNewAccessToken);\n }\n\n expect(refreshedRawRefreshTokens).toEqual([\"fresh-refresh-token\"]);\n expect(capturedRefreshTokens).toEqual([\"fresh-refresh-token\"]);\n expect(capturedAccessTokenRefreshTokenIds).toEqual([\"fresh-refresh-token-id\"]);\n });\n\n it(\"uses a fresh nested OAuth state while preserving the outer cross-domain return state\", async () => {\n const projectId = \"00000000-0000-4000-8000-000000000002\";\n const clientApp = new StackClientApp({\n baseUrl: \"http://localhost:12345\",\n projectId,\n publishableClientKey: \"stack-pk-test\",\n tokenStore: \"memory\",\n redirectMethod: \"window\",\n urls: {\n default: { type: \"hosted\" },\n },\n noAutomaticPrefetch: true,\n });\n const outerState = \"outer-cross-domain-state\";\n const outerCodeChallenge = \"abcdefghijklmnopqrstuvwxyzABCDEFG_0123456789-._~\";\n const currentUrl = new URL(`https://${projectId}.example-stack-hosted.test/handler/sign-in`);\n currentUrl.searchParams.set(\"after_auth_return_to\", `https://demo.stack-auth.com/?hexclave_cross_domain_auth=1&hexclave_cross_domain_state=${outerState}`);\n currentUrl.searchParams.set(\"hexclave_cross_domain_state\", outerState);\n currentUrl.searchParams.set(\"hexclave_cross_domain_code_challenge\", outerCodeChallenge);\n currentUrl.searchParams.set(\"hexclave_cross_domain_after_callback_redirect_url\", \"https://demo.stack-auth.com/\");\n currentUrl.searchParams.set(\"stack_nested_cross_domain_auth_refresh_token_id\", \"source-session\");\n currentUrl.searchParams.set(\"stack_nested_cross_domain_auth_callback_url\", \"https://demo.stack-auth.com/\");\n\n const previousWindow = globalThis.window;\n const previousDocument = globalThis.document;\n let redirectedUrl = \"\";\n vi.spyOn(clientApp as any, \"_fetchCurrentRefreshTokenIdIfSignedIn\").mockResolvedValue(null);\n vi.spyOn(clientApp as any, \"_getCrossDomainHandoffParamsForRedirect\").mockResolvedValue({\n state: \"fresh-nested-state\",\n codeChallenge: \"fresh-nested-code-challenge\",\n });\n vi.spyOn(clientApp as any, \"_isTrusted\").mockResolvedValue(true);\n\n globalThis.document = createMockDocument();\n globalThis.window = {\n location: {\n href: currentUrl.toString(),\n replace: (url: string) => {\n redirectedUrl = url;\n throw new Error(\"INTENTIONAL_TEST_ABORT\");\n },\n },\n } as any;\n\n try {\n await expect((clientApp as any)._maybeHandleNestedCrossDomainAuth()).rejects.toThrowError(\"INTENTIONAL_TEST_ABORT\");\n } finally {\n globalThis.window = previousWindow;\n globalThis.document = previousDocument;\n }\n\n const redirectUrl = new URL(redirectedUrl);\n expect(redirectUrl.searchParams.get(\"state\")).toBe(\"fresh-nested-state\");\n expect(redirectUrl.searchParams.get(\"code_challenge\")).toBe(\"fresh-nested-code-challenge\");\n const redirectUri = new URL(redirectUrl.searchParams.get(\"redirect_uri\") ?? \"\");\n expect(redirectUri.searchParams.get(\"hexclave_cross_domain_state\")).toBe(outerState);\n expect(redirectUri.searchParams.get(\"hexclave_cross_domain_code_challenge\")).toBe(outerCodeChallenge);\n expect(redirectUri.searchParams.get(\"hexclave_cross_domain_after_callback_redirect_url\")).toBe(\"https://demo.stack-auth.com/\");\n });\n\n it(\"clears a stale target-domain session before deferring to the source-domain session\", async () => {\n const projectId = \"00000000-0000-4000-8000-000000000006\";\n const hostedAccessToken = createAccessTokenString(\"hosted-old-refresh-token-id\");\n const clientApp = new StackClientApp({\n baseUrl: \"http://localhost:12345\",\n projectId,\n publishableClientKey: \"stack-pk-test\",\n tokenStore: \"memory\",\n redirectMethod: \"window\",\n urls: {\n default: { type: \"hosted\" },\n },\n noAutomaticPrefetch: true,\n });\n const tokenStore = Reflect.get(clientApp, \"_memoryTokenStore\");\n if (!(tokenStore instanceof Store)) {\n throw new Error(\"Expected StackClientApp to use a memory token store in this test.\");\n }\n tokenStore.set({\n refreshToken: \"hosted-old-refresh-token\",\n accessToken: hostedAccessToken,\n });\n\n const currentUrl = new URL(`https://${projectId}.example-stack-hosted.test/handler/sign-in`);\n currentUrl.searchParams.set(\"stack_nested_cross_domain_auth_refresh_token_id\", \"source-anonymous-refresh-token-id\");\n currentUrl.searchParams.set(\"stack_nested_cross_domain_auth_callback_url\", \"https://demo.stack-auth.com/handler/oauth-callback\");\n currentUrl.searchParams.set(\"hexclave_cross_domain_state\", \"outer-state\");\n currentUrl.searchParams.set(\"hexclave_cross_domain_code_challenge\", \"outer-code-challenge\");\n currentUrl.searchParams.set(\"hexclave_cross_domain_after_callback_redirect_url\", \"https://demo.stack-auth.com/app\");\n\n const previousWindow = globalThis.window;\n const previousDocument = globalThis.document;\n let redirectedUrl = \"\";\n const clientInterface = Reflect.get(clientApp, \"_interface\");\n const originalFetchNewAccessToken = Reflect.get(clientInterface, \"fetchNewAccessToken\");\n Reflect.set(clientInterface, \"fetchNewAccessToken\", async () => {\n return AccessToken.createIfValid(hostedAccessToken) ?? (() => {\n throw new Error(\"Expected test access token to be valid\");\n })();\n });\n vi.spyOn(clientApp as any, \"_isTrusted\").mockResolvedValue(true);\n\n globalThis.document = createMockDocument();\n globalThis.window = {\n location: {\n href: currentUrl.toString(),\n replace: (url: string) => {\n redirectedUrl = url;\n throw new Error(\"INTENTIONAL_TEST_ABORT\");\n },\n },\n } as any;\n\n try {\n await expect((clientApp as any)._maybeHandleNestedCrossDomainAuth()).rejects.toThrowError(\"INTENTIONAL_TEST_ABORT\");\n } finally {\n Reflect.set(clientInterface, \"fetchNewAccessToken\", originalFetchNewAccessToken);\n globalThis.window = previousWindow;\n globalThis.document = previousDocument;\n }\n\n expect(tokenStore.get()).toEqual({\n refreshToken: null,\n accessToken: null,\n });\n expect(new URL(redirectedUrl).origin).toBe(\"https://demo.stack-auth.com\");\n });\n\n it(\"uses the latest browser refresh cookie before computing nested cross-domain session IDs\", async () => {\n const projectId = \"00000000-0000-4000-8000-000000000007\";\n const previousWindow = globalThis.window;\n const previousDocument = globalThis.document;\n\n globalThis.document = createMockDocument();\n globalThis.window = {\n location: {\n href: \"https://demo.stack-auth.com/\",\n protocol: \"https:\",\n hostname: \"demo.stack-auth.com\",\n },\n } as any;\n\n const clientApp = new StackClientApp({\n baseUrl: \"http://localhost:12345\",\n projectId,\n publishableClientKey: \"stack-pk-test\",\n tokenStore: \"cookie\",\n redirectMethod: \"none\",\n noAutomaticPrefetch: true,\n });\n const clientInterface = Reflect.get(clientApp, \"_interface\");\n const originalFetchNewAccessToken = Reflect.get(clientInterface, \"fetchNewAccessToken\");\n const refreshedRawRefreshTokens: string[] = [];\n\n try {\n const getBrowserCookieTokenStore = Reflect.get(clientApp, \"_getBrowserCookieTokenStore\");\n if (typeof getBrowserCookieTokenStore !== \"function\") {\n throw new Error(\"Expected StackClientApp to expose _getBrowserCookieTokenStore in tests.\");\n }\n const tokenStore = getBrowserCookieTokenStore.call(clientApp);\n tokenStore.set({\n refreshToken: \"old-refresh-token\",\n accessToken: createAccessTokenString(\"old-refresh-token-id\"),\n });\n\n document.cookie = `__Host-hexclave-refresh-${projectId}--default=${JSON.stringify({\n refresh_token: \"new-refresh-token\",\n updated_at_millis: 1,\n })}`;\n Reflect.set(clientInterface, \"fetchNewAccessToken\", async (refreshToken: unknown) => {\n const refreshTokenString = Reflect.get(refreshToken ?? {}, \"token\");\n if (typeof refreshTokenString !== \"string\") {\n throw new Error(\"Expected refresh token while fetching a new access token.\");\n }\n refreshedRawRefreshTokens.push(refreshTokenString);\n return AccessToken.createIfValid(createAccessTokenString(\"new-refresh-token-id\")) ?? (() => {\n throw new Error(\"Expected test access token to be valid\");\n })();\n });\n\n const fetchCurrentRefreshTokenIdIfSignedIn = Reflect.get(clientApp, \"_fetchCurrentRefreshTokenIdIfSignedIn\");\n if (typeof fetchCurrentRefreshTokenIdIfSignedIn !== \"function\") {\n throw new Error(\"Expected StackClientApp to expose _fetchCurrentRefreshTokenIdIfSignedIn in tests.\");\n }\n await expect(fetchCurrentRefreshTokenIdIfSignedIn.call(clientApp, {\n awaitPendingAuthResolutions: false,\n })).resolves.toBe(\"new-refresh-token-id\");\n } finally {\n Reflect.set(clientInterface, \"fetchNewAccessToken\", originalFetchNewAccessToken);\n globalThis.window = previousWindow;\n globalThis.document = previousDocument;\n }\n\n expect(refreshedRawRefreshTokens).toEqual([\"new-refresh-token\"]);\n });\n\n it(\"uses direct sign-out instead of hosted sign-out redirects when code execution is available\", async () => {\n const clientApp = new StackClientApp({\n baseUrl: \"http://localhost:12345\",\n projectId: \"00000000-0000-4000-8000-000000000003\",\n publishableClientKey: \"stack-pk-test\",\n tokenStore: \"memory\",\n redirectMethod: \"window\",\n urls: {\n handler: \"/handler\",\n signOut: { type: \"hosted\" },\n },\n noAutomaticPrefetch: true,\n });\n const signOutSpy = vi.spyOn(clientApp, \"signOut\").mockRejectedValue(new Error(\"INTENTIONAL_TEST_ABORT\"));\n\n try {\n await expect(clientApp.redirectToSignOut()).rejects.toThrowError(\"INTENTIONAL_TEST_ABORT\");\n expect(signOutSpy).toHaveBeenCalledWith();\n } finally {\n signOutSpy.mockRestore();\n }\n });\n\n it(\"keeps default hosted signOut() on the source domain when afterSignOut is not configured\", async () => {\n const clientApp = new StackClientApp({\n baseUrl: \"http://localhost:12345\",\n projectId: \"00000000-0000-4000-8000-000000000004\",\n publishableClientKey: \"stack-pk-test\",\n tokenStore: \"memory\",\n redirectMethod: \"window\",\n urls: {\n default: { type: \"hosted\" },\n },\n noAutomaticPrefetch: true,\n });\n const currentHref = \"https://demo.stack-auth.com/settings?tab=profile\";\n\n const clientInterface = Reflect.get(clientApp, \"_interface\");\n const originalSignOut = Reflect.get(clientInterface, \"signOut\");\n Reflect.set(clientInterface, \"signOut\", async () => {});\n const previousWindow = globalThis.window;\n const previousDocument = globalThis.document;\n let redirectedUrl = \"\";\n\n globalThis.document = createMockDocument();\n globalThis.window = {\n location: {\n href: currentHref,\n replace: (url: string) => {\n redirectedUrl = url;\n throw new Error(\"INTENTIONAL_TEST_ABORT\");\n },\n },\n } as any;\n\n try {\n const signOut = Reflect.get(clientApp, \"_signOut\");\n if (typeof signOut !== \"function\") {\n throw new Error(\"Expected StackClientApp to expose _signOut in tests.\");\n }\n await expect(signOut.call(clientApp, Reflect.get(clientInterface, \"createSession\").call(clientInterface, {\n refreshToken: null,\n }))).rejects.toThrowError(\"INTENTIONAL_TEST_ABORT\");\n } finally {\n Reflect.set(clientInterface, \"signOut\", originalSignOut);\n globalThis.window = previousWindow;\n globalThis.document = previousDocument;\n }\n\n expect(redirectedUrl).toBe(\"/settings?tab=profile\");\n });\n\n it(\"ignores stale session callbacks after a newer refresh token owns the token store\", async () => {\n const clientApp = new StackClientApp({\n baseUrl: \"http://localhost:12345\",\n projectId: \"00000000-0000-4000-8000-000000000005\",\n publishableClientKey: \"stack-pk-test\",\n tokenStore: \"memory\",\n redirectMethod: \"none\",\n noAutomaticPrefetch: true,\n });\n const oldAccessToken = createAccessTokenString(\"old-refresh-token-id\");\n const refreshedOldAccessToken = createAccessTokenString(\"refreshed-old-refresh-token-id\");\n const newAccessToken = createAccessTokenString(\"new-refresh-token-id\");\n const tokenStore = new Store({\n refreshToken: \"old-refresh-token\",\n accessToken: oldAccessToken,\n });\n const clientInterface = Reflect.get(clientApp, \"_interface\");\n const originalFetchNewAccessToken = Reflect.get(clientInterface, \"fetchNewAccessToken\");\n Reflect.set(clientInterface, \"fetchNewAccessToken\", async () => {\n return AccessToken.createIfValid(refreshedOldAccessToken) ?? (() => {\n throw new Error(\"Expected test access token to be valid\");\n })();\n });\n\n try {\n const getSessionFromTokenStore = Reflect.get(clientApp, \"_getSessionFromTokenStore\");\n if (typeof getSessionFromTokenStore !== \"function\") {\n throw new Error(\"Expected StackClientApp to expose _getSessionFromTokenStore in tests.\");\n }\n const oldSession = getSessionFromTokenStore.call(clientApp, tokenStore);\n tokenStore.set({\n refreshToken: \"new-refresh-token\",\n accessToken: newAccessToken,\n });\n\n await oldSession.fetchNewTokens();\n expect(tokenStore.get()).toEqual({\n refreshToken: \"new-refresh-token\",\n accessToken: newAccessToken,\n });\n\n oldSession.markInvalid();\n expect(tokenStore.get()).toEqual({\n refreshToken: \"new-refresh-token\",\n accessToken: newAccessToken,\n });\n } finally {\n Reflect.set(clientInterface, \"fetchNewAccessToken\", originalFetchNewAccessToken);\n }\n });\n});\n"],"mappings":"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"}
@@ -145,7 +145,7 @@ declare class _HexclaveClientAppImplIncomplete<HasTokenStore extends boolean, Pr
145
145
  protected _currentUrlLooksLikeHexclaveOAuthCallback(): boolean;
146
146
  protected _currentUrlLooksLikeNestedCrossDomainOAuthCallback(): boolean;
147
147
  protected _getOAuthCallbackRedirectUri(): string;
148
- protected _getCurrentRefreshTokenIdIfSignedIn(options?: {
148
+ protected _fetchCurrentRefreshTokenIdIfSignedIn(options?: {
149
149
  awaitPendingAuthResolutions?: boolean;
150
150
  overrideTokenStoreInit?: TokenStoreInit;
151
151
  }): Promise<string | null>;
@@ -179,6 +179,7 @@ declare class _HexclaveClientAppImplIncomplete<HasTokenStore extends boolean, Pr
179
179
  private _parseStructuredRefreshCookie;
180
180
  private _extractRefreshTokenFromCookieMap;
181
181
  protected _getTokensFromCookies(cookies: cookie.Cookies): TokenObject;
182
+ private _getCurrentBrowserCookieTokenStoreValue;
182
183
  protected get _accessTokenCookieName(): string;
183
184
  protected get _legacyAccessTokenCookieName(): string;
184
185
  private _getAllBrowserCookies;