@hexclave/js 1.0.0 → 1.0.2

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 (134) hide show
  1. package/README.md +7 -23
  2. package/dist/dev-tool/dev-tool-core.d.ts.map +1 -1
  3. package/dist/dev-tool/dev-tool-core.js +23 -23
  4. package/dist/dev-tool/dev-tool-core.js.map +1 -1
  5. package/dist/dev-tool/index.js +6 -6
  6. package/dist/dev-tool/index.js.map +1 -1
  7. package/dist/esm/dev-tool/dev-tool-core.d.ts.map +1 -1
  8. package/dist/esm/dev-tool/dev-tool-core.js +2 -2
  9. package/dist/esm/dev-tool/dev-tool-core.js.map +1 -1
  10. package/dist/esm/dev-tool/index.js.map +1 -1
  11. package/dist/esm/index.d.ts +1 -1
  12. package/dist/esm/index.js +1 -2
  13. package/dist/esm/integrations/convex.js.map +1 -1
  14. package/dist/esm/lib/auth.js.map +1 -1
  15. package/dist/esm/lib/auth.test.js.map +1 -1
  16. package/dist/esm/lib/cookie.js.map +1 -1
  17. package/dist/esm/lib/stack-app/api-keys/index.js.map +1 -1
  18. package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.d.ts +11 -11
  19. package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
  20. package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.js +3 -1
  21. package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.js.map +1 -1
  22. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.cross-domain.test.js +67 -1
  23. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -1
  24. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.d.ts +4 -3
  25. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.d.ts.map +1 -1
  26. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.js +18 -2
  27. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.js.map +1 -1
  28. package/dist/esm/lib/stack-app/apps/implementations/common.d.ts.map +1 -1
  29. package/dist/esm/lib/stack-app/apps/implementations/common.js +1 -1
  30. package/dist/esm/lib/stack-app/apps/implementations/common.js.map +1 -1
  31. package/dist/esm/lib/stack-app/apps/implementations/event-tracker.js.map +1 -1
  32. package/dist/esm/lib/stack-app/apps/implementations/event-tracker.test.js.map +1 -1
  33. package/dist/esm/lib/stack-app/apps/implementations/index.js.map +1 -1
  34. package/dist/esm/lib/stack-app/apps/implementations/redirect-page-urls.js.map +1 -1
  35. package/dist/esm/lib/stack-app/apps/implementations/server-app-impl.js.map +1 -1
  36. package/dist/esm/lib/stack-app/apps/implementations/session-replay.d.ts.map +1 -1
  37. package/dist/esm/lib/stack-app/apps/implementations/session-replay.js +3 -2
  38. package/dist/esm/lib/stack-app/apps/implementations/session-replay.js.map +1 -1
  39. package/dist/esm/lib/stack-app/apps/interfaces/admin-app.d.ts +4 -0
  40. package/dist/esm/lib/stack-app/apps/interfaces/admin-app.d.ts.map +1 -1
  41. package/dist/esm/lib/stack-app/apps/interfaces/admin-app.js +1 -0
  42. package/dist/esm/lib/stack-app/apps/interfaces/admin-app.js.map +1 -1
  43. package/dist/esm/lib/stack-app/apps/interfaces/client-app.d.ts +5 -0
  44. package/dist/esm/lib/stack-app/apps/interfaces/client-app.d.ts.map +1 -1
  45. package/dist/esm/lib/stack-app/apps/interfaces/client-app.js +1 -0
  46. package/dist/esm/lib/stack-app/apps/interfaces/client-app.js.map +1 -1
  47. package/dist/esm/lib/stack-app/apps/interfaces/server-app.d.ts +4 -0
  48. package/dist/esm/lib/stack-app/apps/interfaces/server-app.d.ts.map +1 -1
  49. package/dist/esm/lib/stack-app/apps/interfaces/server-app.js +1 -0
  50. package/dist/esm/lib/stack-app/apps/interfaces/server-app.js.map +1 -1
  51. package/dist/esm/lib/stack-app/common.js.map +1 -1
  52. package/dist/esm/lib/stack-app/contact-channels/index.js.map +1 -1
  53. package/dist/esm/lib/stack-app/email-templates/index.js.map +1 -1
  54. package/dist/esm/lib/stack-app/internal-api-keys/index.js.map +1 -1
  55. package/dist/esm/lib/stack-app/permissions/index.js.map +1 -1
  56. package/dist/esm/lib/stack-app/projects/index.js.map +1 -1
  57. package/dist/esm/lib/stack-app/teams/index.js.map +1 -1
  58. package/dist/esm/lib/stack-app/url-targets.js.map +1 -1
  59. package/dist/esm/lib/stack-app/url-targets.test.js +1 -1
  60. package/dist/esm/lib/stack-app/url-targets.test.js.map +1 -1
  61. package/dist/esm/lib/stack-app/users/index.js.map +1 -1
  62. package/dist/esm/utils/url.js.map +1 -1
  63. package/dist/index.d.ts +1 -1
  64. package/dist/index.js +3 -4
  65. package/dist/integrations/convex.js +5 -5
  66. package/dist/integrations/convex.js.map +1 -1
  67. package/dist/lib/auth.js +12 -12
  68. package/dist/lib/auth.js.map +1 -1
  69. package/dist/lib/auth.test.js +2 -2
  70. package/dist/lib/auth.test.js.map +1 -1
  71. package/dist/lib/cookie.js +9 -9
  72. package/dist/lib/cookie.js.map +1 -1
  73. package/dist/lib/stack-app/api-keys/index.js +2 -2
  74. package/dist/lib/stack-app/api-keys/index.js.map +1 -1
  75. package/dist/lib/stack-app/apps/implementations/admin-app-impl.d.ts +11 -11
  76. package/dist/lib/stack-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
  77. package/dist/lib/stack-app/apps/implementations/admin-app-impl.js +38 -36
  78. package/dist/lib/stack-app/apps/implementations/admin-app-impl.js.map +1 -1
  79. package/dist/lib/stack-app/apps/implementations/client-app-impl.cross-domain.test.js +66 -0
  80. package/dist/lib/stack-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -1
  81. package/dist/lib/stack-app/apps/implementations/client-app-impl.d.ts +4 -3
  82. package/dist/lib/stack-app/apps/implementations/client-app-impl.d.ts.map +1 -1
  83. package/dist/lib/stack-app/apps/implementations/client-app-impl.js +210 -194
  84. package/dist/lib/stack-app/apps/implementations/client-app-impl.js.map +1 -1
  85. package/dist/lib/stack-app/apps/implementations/common.d.ts.map +1 -1
  86. package/dist/lib/stack-app/apps/implementations/common.js +25 -25
  87. package/dist/lib/stack-app/apps/implementations/common.js.map +1 -1
  88. package/dist/lib/stack-app/apps/implementations/event-tracker.js +7 -7
  89. package/dist/lib/stack-app/apps/implementations/event-tracker.js.map +1 -1
  90. package/dist/lib/stack-app/apps/implementations/event-tracker.test.js +3 -3
  91. package/dist/lib/stack-app/apps/implementations/event-tracker.test.js.map +1 -1
  92. package/dist/lib/stack-app/apps/implementations/index.js +4 -4
  93. package/dist/lib/stack-app/apps/implementations/index.js.map +1 -1
  94. package/dist/lib/stack-app/apps/implementations/redirect-page-urls.js +8 -8
  95. package/dist/lib/stack-app/apps/implementations/redirect-page-urls.js.map +1 -1
  96. package/dist/lib/stack-app/apps/implementations/server-app-impl.js +59 -59
  97. package/dist/lib/stack-app/apps/implementations/server-app-impl.js.map +1 -1
  98. package/dist/lib/stack-app/apps/implementations/session-replay.d.ts.map +1 -1
  99. package/dist/lib/stack-app/apps/implementations/session-replay.js +13 -12
  100. package/dist/lib/stack-app/apps/implementations/session-replay.js.map +1 -1
  101. package/dist/lib/stack-app/apps/interfaces/admin-app.d.ts +4 -0
  102. package/dist/lib/stack-app/apps/interfaces/admin-app.d.ts.map +1 -1
  103. package/dist/lib/stack-app/apps/interfaces/admin-app.js +1 -0
  104. package/dist/lib/stack-app/apps/interfaces/admin-app.js.map +1 -1
  105. package/dist/lib/stack-app/apps/interfaces/client-app.d.ts +5 -0
  106. package/dist/lib/stack-app/apps/interfaces/client-app.d.ts.map +1 -1
  107. package/dist/lib/stack-app/apps/interfaces/client-app.js +1 -0
  108. package/dist/lib/stack-app/apps/interfaces/client-app.js.map +1 -1
  109. package/dist/lib/stack-app/apps/interfaces/server-app.d.ts +4 -0
  110. package/dist/lib/stack-app/apps/interfaces/server-app.d.ts.map +1 -1
  111. package/dist/lib/stack-app/apps/interfaces/server-app.js +1 -0
  112. package/dist/lib/stack-app/apps/interfaces/server-app.js.map +1 -1
  113. package/dist/lib/stack-app/common.js.map +1 -1
  114. package/dist/lib/stack-app/contact-channels/index.js.map +1 -1
  115. package/dist/lib/stack-app/email-templates/index.js.map +1 -1
  116. package/dist/lib/stack-app/internal-api-keys/index.js.map +1 -1
  117. package/dist/lib/stack-app/permissions/index.js.map +1 -1
  118. package/dist/lib/stack-app/projects/index.js.map +1 -1
  119. package/dist/lib/stack-app/teams/index.js.map +1 -1
  120. package/dist/lib/stack-app/url-targets.js +6 -6
  121. package/dist/lib/stack-app/url-targets.js.map +1 -1
  122. package/dist/lib/stack-app/url-targets.test.js +1 -1
  123. package/dist/lib/stack-app/url-targets.test.js.map +1 -1
  124. package/dist/lib/stack-app/users/index.js +3 -3
  125. package/dist/lib/stack-app/users/index.js.map +1 -1
  126. package/dist/utils/url.js +2 -2
  127. package/dist/utils/url.js.map +1 -1
  128. package/package.json +3 -3
  129. package/dist/esm/internal/deprecation-warning.d.ts +0 -1
  130. package/dist/esm/internal/deprecation-warning.js +0 -24
  131. package/dist/esm/internal/deprecation-warning.js.map +0 -1
  132. package/dist/internal/deprecation-warning.d.ts +0 -1
  133. package/dist/internal/deprecation-warning.js +0 -24
  134. package/dist/internal/deprecation-warning.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_chunk = require('../chunk-BE-pF4vm.js');
3
- let _stackframe_stack_shared_dist_utils_promises = require("@hexclave/shared/dist/utils/promises");
4
- let _stackframe_stack_shared_dist_utils_urls = require("@hexclave/shared/dist/utils/urls");
5
- let _stackframe_stack_shared_dist_utils_errors = require("@hexclave/shared/dist/utils/errors");
3
+ let _hexclave_shared_dist_utils_promises = require("@hexclave/shared/dist/utils/promises");
4
+ let _hexclave_shared_dist_utils_urls = require("@hexclave/shared/dist/utils/urls");
5
+ let _hexclave_shared_dist_utils_errors = require("@hexclave/shared/dist/utils/errors");
6
6
 
7
7
  //#region src/dev-tool/index.ts
8
8
  const OVERRIDE_KEY = "__hexclave-dev-tool-override";
@@ -26,7 +26,7 @@ function shouldShow() {
26
26
  const override = getOverride();
27
27
  if (override !== null) return override;
28
28
  if (!canMountIntoDom()) return false;
29
- return (0, _stackframe_stack_shared_dist_utils_urls.isLocalhost)(window.location.href);
29
+ return (0, _hexclave_shared_dist_utils_urls.isLocalhost)(window.location.href);
30
30
  }
31
31
  let activeCleanup = null;
32
32
  let activeApp = null;
@@ -47,7 +47,7 @@ function tryMount() {
47
47
  if (!shouldShow() || !activeApp || !canMountIntoDom()) return;
48
48
  const generation = ++mountGeneration;
49
49
  const app = activeApp;
50
- (0, _stackframe_stack_shared_dist_utils_promises.runAsynchronously)(async () => {
50
+ (0, _hexclave_shared_dist_utils_promises.runAsynchronously)(async () => {
51
51
  const createDevTool = await loadCreateDevTool();
52
52
  if (generation !== mountGeneration) return;
53
53
  if (!shouldShow() || activeApp !== app || !canMountIntoDom()) return;
@@ -55,7 +55,7 @@ function tryMount() {
55
55
  }, {
56
56
  noErrorLogging: true,
57
57
  onError: (error) => {
58
- (0, _stackframe_stack_shared_dist_utils_errors.captureError)("dev-tool-mount", error);
58
+ (0, _hexclave_shared_dist_utils_errors.captureError)("dev-tool-mount", error);
59
59
  }
60
60
  });
61
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/dev-tool/index.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY, INSTEAD EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\n\nimport type { StackClientApp } from \"../lib/stack-app\";\nimport { captureError } from \"@stackframe/stack-shared/dist/utils/errors\";\nimport { runAsynchronously } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { isLocalhost } from \"@stackframe/stack-shared/dist/utils/urls\";\nimport type { createDevTool as CreateDevToolFn } from \"./dev-tool-core\";\n\n// Hexclave rebrand: UI-only local pref — straight rename (one-time reset is harmless)\nconst OVERRIDE_KEY = '__hexclave-dev-tool-override';\n\nfunction hasAppendChild(value: unknown): value is { appendChild(node: Node): void } {\n return typeof value === 'object' && value !== null && typeof Reflect.get(value, 'appendChild') === 'function';\n}\n\nfunction canMountIntoDom(): boolean {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n return false;\n }\n if (typeof document.createElement !== 'function') {\n return false;\n }\n return hasAppendChild(Reflect.get(document, 'body'));\n}\n\nfunction getOverride(): boolean | null {\n try {\n const val = localStorage.getItem(OVERRIDE_KEY);\n if (val === 'true') return true;\n if (val === 'false') return false;\n } catch {}\n return null;\n}\n\nfunction shouldShow(): boolean {\n const override = getOverride();\n if (override !== null) return override;\n if (!canMountIntoDom()) return false;\n return isLocalhost(window.location.href);\n}\n\nlet activeCleanup: (() => void) | null = null;\nlet activeApp: StackClientApp<true> | null = null;\nlet mountGeneration = 0;\n\nlet createDevToolPromise: Promise<typeof CreateDevToolFn> | null = null;\nfunction loadCreateDevTool(): Promise<typeof CreateDevToolFn> {\n if (!createDevToolPromise) {\n createDevToolPromise = import(\"./dev-tool-core\").then(m => m.createDevTool).catch((err) => {\n createDevToolPromise = null;\n throw err;\n });\n }\n return createDevToolPromise;\n}\n\nfunction tryMount() {\n if (activeCleanup) {\n activeCleanup();\n activeCleanup = null;\n }\n\n if (!shouldShow() || !activeApp || !canMountIntoDom()) return;\n\n const generation = ++mountGeneration;\n const app = activeApp;\n\n runAsynchronously(async () => {\n const createDevTool = await loadCreateDevTool();\n if (generation !== mountGeneration) return;\n if (!shouldShow() || activeApp !== app || !canMountIntoDom()) return;\n activeCleanup = createDevTool(app);\n }, {\n noErrorLogging: true,\n onError: (error) => {\n captureError(\"dev-tool-mount\", error);\n },\n });\n}\n\n/**\n * Mounts the Hexclave dev tool on the page.\n *\n * - Only renders on localhost (or when overridden via console)\n * - Lazily loads the dev tool UI via dynamic import\n * - Returns a cleanup function to unmount\n *\n * Console commands (also work in production):\n * StackDevTool.enable() — force-show the dev tool\n * StackDevTool.disable() — force-hide the dev tool\n * StackDevTool.reset() — revert to default (localhost-only)\n */\nexport function mountDevTool(app: StackClientApp<true>): () => void {\n activeApp = app;\n tryMount();\n\n // Capture the cleanup created by THIS specific mount call so that React\n // StrictMode's double-invoke doesn't let the first effect's cleanup tear\n // down the second mount (which would cause the tool to disappear silently).\n const myCleanup = activeCleanup;\n\n return () => {\n activeApp = null;\n if (activeCleanup === myCleanup && myCleanup != null) {\n activeCleanup = null;\n myCleanup();\n }\n };\n}\n\n// Expose console commands: StackDevTool.enable() / .disable() / .reset()\nif (typeof window !== 'undefined') {\n // Hexclave rebrand: expose under both the legacy and new global names.\n (window as any).HexclaveDevTool = (window as any).StackDevTool = {\n enable() {\n try {\n localStorage.setItem(OVERRIDE_KEY, 'true');\n } catch {}\n tryMount();\n console.log('[Stack DevTool] Enabled. Refresh if the panel does not appear.');\n },\n disable() {\n try {\n localStorage.setItem(OVERRIDE_KEY, 'false');\n } catch {}\n if (activeCleanup) {\n activeCleanup();\n activeCleanup = null;\n }\n console.log('[Stack DevTool] Disabled.');\n },\n reset() {\n try {\n localStorage.removeItem(OVERRIDE_KEY);\n } catch {}\n if (shouldShow()) {\n tryMount();\n } else if (activeCleanup) {\n activeCleanup();\n activeCleanup = null;\n }\n console.log('[Stack DevTool] Reset to default (visible on localhost only).');\n },\n };\n}\n\n"],"mappings":";;;;;;;AAYA,MAAM,eAAe;AAErB,SAAS,eAAe,OAA4D;AAClF,QAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,OAAO,QAAQ,IAAI,OAAO,cAAc,KAAK;;AAGrG,SAAS,kBAA2B;AAClC,KAAI,OAAO,WAAW,eAAe,OAAO,aAAa,YACvD,QAAO;AAET,KAAI,OAAO,SAAS,kBAAkB,WACpC,QAAO;AAET,QAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,CAAC;;AAGtD,SAAS,cAA8B;AACrC,KAAI;EACF,MAAM,MAAM,aAAa,QAAQ,aAAa;AAC9C,MAAI,QAAQ,OAAQ,QAAO;AAC3B,MAAI,QAAQ,QAAS,QAAO;SACtB;AACR,QAAO;;AAGT,SAAS,aAAsB;CAC7B,MAAM,WAAW,aAAa;AAC9B,KAAI,aAAa,KAAM,QAAO;AAC9B,KAAI,CAAC,iBAAiB,CAAE,QAAO;AAC/B,kEAAmB,OAAO,SAAS,KAAK;;AAG1C,IAAI,gBAAqC;AACzC,IAAI,YAAyC;AAC7C,IAAI,kBAAkB;AAEtB,IAAI,uBAA+D;AACnE,SAAS,oBAAqD;AAC5D,KAAI,CAAC,qBACH,wBAAuB,OAAO,sBAAmB,MAAK,MAAK,EAAE,cAAc,CAAC,OAAO,QAAQ;AACzF,yBAAuB;AACvB,QAAM;GACN;AAEJ,QAAO;;AAGT,SAAS,WAAW;AAClB,KAAI,eAAe;AACjB,iBAAe;AACf,kBAAgB;;AAGlB,KAAI,CAAC,YAAY,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAE;CAEvD,MAAM,aAAa,EAAE;CACrB,MAAM,MAAM;AAEZ,qEAAkB,YAAY;EAC5B,MAAM,gBAAgB,MAAM,mBAAmB;AAC/C,MAAI,eAAe,gBAAiB;AACpC,MAAI,CAAC,YAAY,IAAI,cAAc,OAAO,CAAC,iBAAiB,CAAE;AAC9D,kBAAgB,cAAc,IAAI;IACjC;EACD,gBAAgB;EAChB,UAAU,UAAU;AAClB,gEAAa,kBAAkB,MAAM;;EAExC,CAAC;;;;;;;;;;;;;;AAeJ,SAAgB,aAAa,KAAuC;AAClE,aAAY;AACZ,WAAU;CAKV,MAAM,YAAY;AAElB,cAAa;AACX,cAAY;AACZ,MAAI,kBAAkB,aAAa,aAAa,MAAM;AACpD,mBAAgB;AAChB,cAAW;;;;AAMjB,IAAI,OAAO,WAAW,YAEpB,CAAC,OAAe,kBAAkB,AAAC,OAAe,eAAe;CAC/D,SAAS;AACP,MAAI;AACF,gBAAa,QAAQ,cAAc,OAAO;UACpC;AACR,YAAU;AACV,UAAQ,IAAI,iEAAiE;;CAE/E,UAAU;AACR,MAAI;AACF,gBAAa,QAAQ,cAAc,QAAQ;UACrC;AACR,MAAI,eAAe;AACjB,kBAAe;AACf,mBAAgB;;AAElB,UAAQ,IAAI,4BAA4B;;CAE1C,QAAQ;AACN,MAAI;AACF,gBAAa,WAAW,aAAa;UAC/B;AACR,MAAI,YAAY,CACd,WAAU;WACD,eAAe;AACxB,kBAAe;AACf,mBAAgB;;AAElB,UAAQ,IAAI,gEAAgE;;CAE/E"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/dev-tool/index.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY, INSTEAD EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\n\nimport type { StackClientApp } from \"../lib/stack-app\";\nimport { captureError } from \"@hexclave/shared/dist/utils/errors\";\nimport { runAsynchronously } from \"@hexclave/shared/dist/utils/promises\";\nimport { isLocalhost } from \"@hexclave/shared/dist/utils/urls\";\nimport type { createDevTool as CreateDevToolFn } from \"./dev-tool-core\";\n\n// Hexclave rebrand: UI-only local pref — straight rename (one-time reset is harmless)\nconst OVERRIDE_KEY = '__hexclave-dev-tool-override';\n\nfunction hasAppendChild(value: unknown): value is { appendChild(node: Node): void } {\n return typeof value === 'object' && value !== null && typeof Reflect.get(value, 'appendChild') === 'function';\n}\n\nfunction canMountIntoDom(): boolean {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n return false;\n }\n if (typeof document.createElement !== 'function') {\n return false;\n }\n return hasAppendChild(Reflect.get(document, 'body'));\n}\n\nfunction getOverride(): boolean | null {\n try {\n const val = localStorage.getItem(OVERRIDE_KEY);\n if (val === 'true') return true;\n if (val === 'false') return false;\n } catch {}\n return null;\n}\n\nfunction shouldShow(): boolean {\n const override = getOverride();\n if (override !== null) return override;\n if (!canMountIntoDom()) return false;\n return isLocalhost(window.location.href);\n}\n\nlet activeCleanup: (() => void) | null = null;\nlet activeApp: StackClientApp<true> | null = null;\nlet mountGeneration = 0;\n\nlet createDevToolPromise: Promise<typeof CreateDevToolFn> | null = null;\nfunction loadCreateDevTool(): Promise<typeof CreateDevToolFn> {\n if (!createDevToolPromise) {\n createDevToolPromise = import(\"./dev-tool-core\").then(m => m.createDevTool).catch((err) => {\n createDevToolPromise = null;\n throw err;\n });\n }\n return createDevToolPromise;\n}\n\nfunction tryMount() {\n if (activeCleanup) {\n activeCleanup();\n activeCleanup = null;\n }\n\n if (!shouldShow() || !activeApp || !canMountIntoDom()) return;\n\n const generation = ++mountGeneration;\n const app = activeApp;\n\n runAsynchronously(async () => {\n const createDevTool = await loadCreateDevTool();\n if (generation !== mountGeneration) return;\n if (!shouldShow() || activeApp !== app || !canMountIntoDom()) return;\n activeCleanup = createDevTool(app);\n }, {\n noErrorLogging: true,\n onError: (error) => {\n captureError(\"dev-tool-mount\", error);\n },\n });\n}\n\n/**\n * Mounts the Hexclave dev tool on the page.\n *\n * - Only renders on localhost (or when overridden via console)\n * - Lazily loads the dev tool UI via dynamic import\n * - Returns a cleanup function to unmount\n *\n * Console commands (also work in production):\n * StackDevTool.enable() — force-show the dev tool\n * StackDevTool.disable() — force-hide the dev tool\n * StackDevTool.reset() — revert to default (localhost-only)\n */\nexport function mountDevTool(app: StackClientApp<true>): () => void {\n activeApp = app;\n tryMount();\n\n // Capture the cleanup created by THIS specific mount call so that React\n // StrictMode's double-invoke doesn't let the first effect's cleanup tear\n // down the second mount (which would cause the tool to disappear silently).\n const myCleanup = activeCleanup;\n\n return () => {\n activeApp = null;\n if (activeCleanup === myCleanup && myCleanup != null) {\n activeCleanup = null;\n myCleanup();\n }\n };\n}\n\n// Expose console commands: StackDevTool.enable() / .disable() / .reset()\nif (typeof window !== 'undefined') {\n // Hexclave rebrand: expose under both the legacy and new global names.\n (window as any).HexclaveDevTool = (window as any).StackDevTool = {\n enable() {\n try {\n localStorage.setItem(OVERRIDE_KEY, 'true');\n } catch {}\n tryMount();\n console.log('[Stack DevTool] Enabled. Refresh if the panel does not appear.');\n },\n disable() {\n try {\n localStorage.setItem(OVERRIDE_KEY, 'false');\n } catch {}\n if (activeCleanup) {\n activeCleanup();\n activeCleanup = null;\n }\n console.log('[Stack DevTool] Disabled.');\n },\n reset() {\n try {\n localStorage.removeItem(OVERRIDE_KEY);\n } catch {}\n if (shouldShow()) {\n tryMount();\n } else if (activeCleanup) {\n activeCleanup();\n activeCleanup = null;\n }\n console.log('[Stack DevTool] Reset to default (visible on localhost only).');\n },\n };\n}\n\n"],"mappings":";;;;;;;AAYA,MAAM,eAAe;AAErB,SAAS,eAAe,OAA4D;AAClF,QAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,OAAO,QAAQ,IAAI,OAAO,cAAc,KAAK;;AAGrG,SAAS,kBAA2B;AAClC,KAAI,OAAO,WAAW,eAAe,OAAO,aAAa,YACvD,QAAO;AAET,KAAI,OAAO,SAAS,kBAAkB,WACpC,QAAO;AAET,QAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,CAAC;;AAGtD,SAAS,cAA8B;AACrC,KAAI;EACF,MAAM,MAAM,aAAa,QAAQ,aAAa;AAC9C,MAAI,QAAQ,OAAQ,QAAO;AAC3B,MAAI,QAAQ,QAAS,QAAO;SACtB;AACR,QAAO;;AAGT,SAAS,aAAsB;CAC7B,MAAM,WAAW,aAAa;AAC9B,KAAI,aAAa,KAAM,QAAO;AAC9B,KAAI,CAAC,iBAAiB,CAAE,QAAO;AAC/B,0DAAmB,OAAO,SAAS,KAAK;;AAG1C,IAAI,gBAAqC;AACzC,IAAI,YAAyC;AAC7C,IAAI,kBAAkB;AAEtB,IAAI,uBAA+D;AACnE,SAAS,oBAAqD;AAC5D,KAAI,CAAC,qBACH,wBAAuB,OAAO,sBAAmB,MAAK,MAAK,EAAE,cAAc,CAAC,OAAO,QAAQ;AACzF,yBAAuB;AACvB,QAAM;GACN;AAEJ,QAAO;;AAGT,SAAS,WAAW;AAClB,KAAI,eAAe;AACjB,iBAAe;AACf,kBAAgB;;AAGlB,KAAI,CAAC,YAAY,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAE;CAEvD,MAAM,aAAa,EAAE;CACrB,MAAM,MAAM;AAEZ,6DAAkB,YAAY;EAC5B,MAAM,gBAAgB,MAAM,mBAAmB;AAC/C,MAAI,eAAe,gBAAiB;AACpC,MAAI,CAAC,YAAY,IAAI,cAAc,OAAO,CAAC,iBAAiB,CAAE;AAC9D,kBAAgB,cAAc,IAAI;IACjC;EACD,gBAAgB;EAChB,UAAU,UAAU;AAClB,wDAAa,kBAAkB,MAAM;;EAExC,CAAC;;;;;;;;;;;;;;AAeJ,SAAgB,aAAa,KAAuC;AAClE,aAAY;AACZ,WAAU;CAKV,MAAM,YAAY;AAElB,cAAa;AACX,cAAY;AACZ,MAAI,kBAAkB,aAAa,aAAa,MAAM;AACpD,mBAAgB;AAChB,cAAW;;;;AAMjB,IAAI,OAAO,WAAW,YAEpB,CAAC,OAAe,kBAAkB,AAAC,OAAe,eAAe;CAC/D,SAAS;AACP,MAAI;AACF,gBAAa,QAAQ,cAAc,OAAO;UACpC;AACR,YAAU;AACV,UAAQ,IAAI,iEAAiE;;CAE/E,UAAU;AACR,MAAI;AACF,gBAAa,QAAQ,cAAc,QAAQ;UACrC;AACR,MAAI,eAAe;AACjB,kBAAe;AACf,mBAAgB;;AAElB,UAAQ,IAAI,4BAA4B;;CAE1C,QAAQ;AACN,MAAI;AACF,gBAAa,WAAW,aAAa;UAC/B;AACR,MAAI,YAAY,CACd,WAAU;WACD,eAAe;AACxB,kBAAe;AACf,mBAAgB;;AAElB,UAAQ,IAAI,gEAAgE;;CAE/E"}
@@ -1 +1 @@
1
- {"version":3,"file":"dev-tool-core.d.ts","names":[],"sources":["../../../src/dev-tool/dev-tool-core.ts"],"mappings":";;;iBA0yEgB,aAAA,CAAc,GAAA,EAAK,cAAA"}
1
+ {"version":3,"file":"dev-tool-core.d.ts","names":[],"sources":["../../../src/dev-tool/dev-tool-core.ts"],"mappings":";;;iBA6yEgB,aAAA,CAAc,GAAA,EAAK,cAAA"}
@@ -54,7 +54,7 @@ const DEFAULT_STATE = {
54
54
  panelWidth: 800,
55
55
  panelHeight: 520
56
56
  };
57
- const STACK_LOGO_SVG = "<svg width=\"14\" height=\"17\" viewBox=\"0 0 131 156\" fill=\"currentColor\"><path d=\"M124.447 28.6459L70.1382 1.75616C67.3472 0.374284 64.0715 0.372197 61.279 1.75051L0.740967 31.6281V87.6369L65.7101 119.91L117.56 93.675V112.414L65.7101 138.44L0.740967 106.584V119.655C0.740967 122.359 2.28151 124.827 4.71097 126.015L62.282 154.161C65.0966 155.538 68.3938 155.515 71.1888 154.099L130.47 124.074V79.7105C130.47 74.8003 125.34 71.5769 120.915 73.7077L79.4531 93.675V75.9771L130.47 50.1589V38.3485C130.47 34.2325 128.137 30.4724 124.447 28.6459Z\"/></svg>";
57
+ const HEXCLAVE_LOGO_SVG = "<svg width=\"16\" height=\"16\" viewBox=\"0 0 48 48\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linejoin=\"miter\"><path d=\"M 24 4 L 41.32 14 L 41.32 34 L 24 44 L 6.68 34 L 6.68 14 Z\"/><path d=\"M 11 16.87 L 14 15.13 L 14 32.87 L 11 31.13 Z\" fill=\"currentColor\" stroke=\"none\"/><path d=\"M 11 16.87 L 14 15.13 L 14 32.87 L 11 31.13 Z\" fill=\"currentColor\" stroke=\"none\" transform=\"rotate(120 24 24)\"/><path d=\"M 11 16.87 L 14 15.13 L 14 32.87 L 11 31.13 Z\" fill=\"currentColor\" stroke=\"none\" transform=\"rotate(240 24 24)\"/></svg>";
58
58
  function loadState() {
59
59
  try {
60
60
  const stored = localStorage.getItem(STORAGE_KEY);
@@ -324,7 +324,7 @@ function createTrigger(onClick) {
324
324
  title: "Hexclave Dev Tools"
325
325
  });
326
326
  const logoSpan = h("span", { className: "sdt-trigger-logo" });
327
- setHtml(logoSpan, STACK_LOGO_SVG);
327
+ setHtml(logoSpan, HEXCLAVE_LOGO_SVG);
328
328
  btn.appendChild(logoSpan);
329
329
  let placement = loadPlacement() ?? { corner: "bottom-right" };
330
330
  let pos = resolveTriggerPosition(placement, triggerSize, {