@hexclave/js 1.0.41 → 1.0.43

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 (401) hide show
  1. package/dist/admin-app-impl-6qQFRdrQ.d.ts +1095 -0
  2. package/dist/admin-app-impl-6qQFRdrQ.d.ts.map +1 -0
  3. package/dist/clickmap/clickmap-core.d.ts +1 -2
  4. package/dist/clickmap/clickmap-core.d.ts.map +1 -1
  5. package/dist/clickmap/clickmap-core.js +2 -4
  6. package/dist/clickmap/clickmap-core.js.map +1 -1
  7. package/dist/clickmap/clickmap-styles.js +3 -6
  8. package/dist/clickmap/clickmap-styles.js.map +1 -1
  9. package/dist/clickmap/index.d.ts +1 -2
  10. package/dist/clickmap/index.d.ts.map +1 -1
  11. package/dist/clickmap/index.js +2 -4
  12. package/dist/clickmap/index.js.map +1 -1
  13. package/dist/client-app-D8-Lm4RT.d.ts +1235 -0
  14. package/dist/client-app-D8-Lm4RT.d.ts.map +1 -0
  15. package/dist/common-BDyEKSM6.d.ts +174 -0
  16. package/dist/common-BDyEKSM6.d.ts.map +1 -0
  17. package/dist/common-CRu2FsO9.d.ts +65 -0
  18. package/dist/common-CRu2FsO9.d.ts.map +1 -0
  19. package/dist/config.js +17 -19
  20. package/dist/cookie-DTOQvCYn.d.ts +42 -0
  21. package/dist/cookie-DTOQvCYn.d.ts.map +1 -0
  22. package/dist/dev-tool/dev-tool-core.d.ts +1 -2
  23. package/dist/dev-tool/dev-tool-core.d.ts.map +1 -1
  24. package/dist/dev-tool/dev-tool-core.js +2 -4
  25. package/dist/dev-tool/dev-tool-core.js.map +1 -1
  26. package/dist/dev-tool/dev-tool-styles.js +3 -6
  27. package/dist/dev-tool/dev-tool-styles.js.map +1 -1
  28. package/dist/dev-tool/dev-tool-trigger-position.d.ts.map +1 -1
  29. package/dist/dev-tool/dev-tool-trigger-position.js +6 -7
  30. package/dist/dev-tool/dev-tool-trigger-position.js.map +1 -1
  31. package/dist/dev-tool/dev-tool-trigger-position.test.js +1 -3
  32. package/dist/dev-tool/dev-tool-trigger-position.test.js.map +1 -1
  33. package/dist/dev-tool/index.d.ts +1 -2
  34. package/dist/dev-tool/index.d.ts.map +1 -1
  35. package/dist/dev-tool/index.js +2 -4
  36. package/dist/dev-tool/index.js.map +1 -1
  37. package/dist/esm/clickmap/clickmap-core.d.ts +1 -1
  38. package/dist/esm/clickmap/clickmap-core.d.ts.map +1 -1
  39. package/dist/esm/clickmap/clickmap-core.js +1 -2
  40. package/dist/esm/clickmap/clickmap-core.js.map +1 -1
  41. package/dist/esm/clickmap/clickmap-styles.js +1 -2
  42. package/dist/esm/clickmap/clickmap-styles.js.map +1 -1
  43. package/dist/esm/clickmap/index.d.ts +1 -1
  44. package/dist/esm/clickmap/index.d.ts.map +1 -1
  45. package/dist/esm/clickmap/index.js +1 -2
  46. package/dist/esm/clickmap/index.js.map +1 -1
  47. package/dist/esm/config.js +1 -2
  48. package/dist/esm/dev-tool/dev-tool-core.d.ts +1 -1
  49. package/dist/esm/dev-tool/dev-tool-core.d.ts.map +1 -1
  50. package/dist/esm/dev-tool/dev-tool-core.js +1 -2
  51. package/dist/esm/dev-tool/dev-tool-core.js.map +1 -1
  52. package/dist/esm/dev-tool/dev-tool-styles.js +1 -2
  53. package/dist/esm/dev-tool/dev-tool-styles.js.map +1 -1
  54. package/dist/esm/dev-tool/dev-tool-trigger-position.d.ts.map +1 -1
  55. package/dist/esm/dev-tool/dev-tool-trigger-position.js +5 -5
  56. package/dist/esm/dev-tool/dev-tool-trigger-position.js.map +1 -1
  57. package/dist/esm/dev-tool/dev-tool-trigger-position.test.js +2 -3
  58. package/dist/esm/dev-tool/dev-tool-trigger-position.test.js.map +1 -1
  59. package/dist/esm/dev-tool/index.d.ts +1 -1
  60. package/dist/esm/dev-tool/index.d.ts.map +1 -1
  61. package/dist/esm/dev-tool/index.js +1 -2
  62. package/dist/esm/dev-tool/index.js.map +1 -1
  63. package/dist/esm/generated/env.js +1 -1
  64. package/dist/esm/generated/env.js.map +1 -1
  65. package/dist/esm/global.d.ts.map +1 -1
  66. package/dist/esm/in-page-ui/base-styles.d.ts.map +1 -1
  67. package/dist/esm/in-page-ui/base-styles.js +1 -1
  68. package/dist/esm/in-page-ui/base-styles.js.map +1 -1
  69. package/dist/esm/in-page-ui/dom.d.ts.map +1 -1
  70. package/dist/esm/in-page-ui/dom.js +1 -1
  71. package/dist/esm/in-page-ui/dom.js.map +1 -1
  72. package/dist/esm/index.d.ts +2 -2
  73. package/dist/esm/index.js +2 -4
  74. package/dist/esm/integrations/convex/component/convex.config.d.ts +1 -3
  75. package/dist/esm/integrations/convex/component/convex.config.d.ts.map +1 -1
  76. package/dist/esm/integrations/convex/component/convex.config.js +1 -2
  77. package/dist/esm/integrations/convex/component/convex.config.js.map +1 -1
  78. package/dist/esm/integrations/convex.js +1 -2
  79. package/dist/esm/integrations/convex.js.map +1 -1
  80. package/dist/esm/lib/auth.js +1 -2
  81. package/dist/esm/lib/auth.js.map +1 -1
  82. package/dist/esm/lib/auth.test.js +2 -3
  83. package/dist/esm/lib/auth.test.js.map +1 -1
  84. package/dist/esm/lib/cookie.d.ts.map +1 -1
  85. package/dist/esm/lib/cookie.js +4 -22
  86. package/dist/esm/lib/cookie.js.map +1 -1
  87. package/dist/esm/lib/hexclave-app/api-keys/index.d.ts.map +1 -1
  88. package/dist/esm/lib/hexclave-app/api-keys/index.js +1 -2
  89. package/dist/esm/lib/hexclave-app/api-keys/index.js.map +1 -1
  90. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +34 -42
  91. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
  92. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js +1 -2
  93. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -1
  94. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js +2 -3
  95. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -1
  96. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts +26 -28
  97. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -1
  98. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js +1 -2
  99. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
  100. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.oauth-prefetch.test.js +2 -3
  101. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.oauth-prefetch.test.js.map +1 -1
  102. package/dist/esm/lib/hexclave-app/apps/implementations/common.d.ts +1 -1
  103. package/dist/esm/lib/hexclave-app/apps/implementations/common.d.ts.map +1 -1
  104. package/dist/esm/lib/hexclave-app/apps/implementations/common.js +7 -8
  105. package/dist/esm/lib/hexclave-app/apps/implementations/common.js.map +1 -1
  106. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.d.ts.map +1 -1
  107. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.js +1 -2
  108. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.js.map +1 -1
  109. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.test.js +2 -3
  110. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.test.js.map +1 -1
  111. package/dist/esm/lib/hexclave-app/apps/implementations/index.d.ts +3 -3
  112. package/dist/esm/lib/hexclave-app/apps/implementations/index.d.ts.map +1 -1
  113. package/dist/esm/lib/hexclave-app/apps/implementations/index.js +1 -2
  114. package/dist/esm/lib/hexclave-app/apps/implementations/index.js.map +1 -1
  115. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.d.ts +1 -1
  116. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.d.ts.map +1 -1
  117. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.js +1 -2
  118. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.js.map +1 -1
  119. package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.d.ts +13 -13
  120. package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.d.ts.map +1 -1
  121. package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.js +1 -2
  122. package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.js.map +1 -1
  123. package/dist/esm/lib/hexclave-app/apps/implementations/session-refresh-subscription.d.ts.map +1 -1
  124. package/dist/esm/lib/hexclave-app/apps/implementations/session-refresh-subscription.js +1 -1
  125. package/dist/esm/lib/hexclave-app/apps/implementations/session-refresh-subscription.js.map +1 -1
  126. package/dist/esm/lib/hexclave-app/apps/implementations/session-refresh-subscription.test.js +2 -3
  127. package/dist/esm/lib/hexclave-app/apps/implementations/session-refresh-subscription.test.js.map +1 -1
  128. package/dist/esm/lib/hexclave-app/apps/implementations/session-replay.d.ts.map +1 -1
  129. package/dist/esm/lib/hexclave-app/apps/implementations/session-replay.js +13 -7
  130. package/dist/esm/lib/hexclave-app/apps/implementations/session-replay.js.map +1 -1
  131. package/dist/esm/lib/hexclave-app/apps/implementations/session-replay.test.js +134 -3
  132. package/dist/esm/lib/hexclave-app/apps/implementations/session-replay.test.js.map +1 -1
  133. package/dist/esm/lib/hexclave-app/apps/index.d.ts +3 -3
  134. package/dist/esm/lib/hexclave-app/apps/index.js +1 -2
  135. package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.d.ts +8 -8
  136. package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.d.ts.map +1 -1
  137. package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.js +1 -2
  138. package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.js.map +1 -1
  139. package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.d.ts +6 -6
  140. package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.d.ts.map +1 -1
  141. package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.js +1 -2
  142. package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.js.map +1 -1
  143. package/dist/esm/lib/hexclave-app/apps/interfaces/server-app.d.ts +7 -7
  144. package/dist/esm/lib/hexclave-app/apps/interfaces/server-app.d.ts.map +1 -1
  145. package/dist/esm/lib/hexclave-app/apps/interfaces/server-app.js +1 -2
  146. package/dist/esm/lib/hexclave-app/apps/interfaces/server-app.js.map +1 -1
  147. package/dist/esm/lib/hexclave-app/common.d.ts.map +1 -1
  148. package/dist/esm/lib/hexclave-app/common.js +1 -1
  149. package/dist/esm/lib/hexclave-app/common.js.map +1 -1
  150. package/dist/esm/lib/hexclave-app/connected-accounts/index.d.ts.map +1 -1
  151. package/dist/esm/lib/hexclave-app/connected-accounts/index.js +1 -1
  152. package/dist/esm/lib/hexclave-app/contact-channels/index.d.ts.map +1 -1
  153. package/dist/esm/lib/hexclave-app/contact-channels/index.js +1 -1
  154. package/dist/esm/lib/hexclave-app/contact-channels/index.js.map +1 -1
  155. package/dist/esm/lib/hexclave-app/customers/index.d.ts +1 -1
  156. package/dist/esm/lib/hexclave-app/customers/index.d.ts.map +1 -1
  157. package/dist/esm/lib/hexclave-app/customers/index.js +1 -1
  158. package/dist/esm/lib/hexclave-app/data-vault/index.d.ts +1 -1
  159. package/dist/esm/lib/hexclave-app/data-vault/index.d.ts.map +1 -1
  160. package/dist/esm/lib/hexclave-app/data-vault/index.js +1 -1
  161. package/dist/esm/lib/hexclave-app/email/index.d.ts.map +1 -1
  162. package/dist/esm/lib/hexclave-app/email/index.js +1 -1
  163. package/dist/esm/lib/hexclave-app/email-templates/index.d.ts.map +1 -1
  164. package/dist/esm/lib/hexclave-app/email-templates/index.js +1 -1
  165. package/dist/esm/lib/hexclave-app/email-templates/index.js.map +1 -1
  166. package/dist/esm/lib/hexclave-app/index.d.ts +14 -14
  167. package/dist/esm/lib/hexclave-app/index.js +1 -2
  168. package/dist/esm/lib/hexclave-app/internal-api-keys/index.d.ts.map +1 -1
  169. package/dist/esm/lib/hexclave-app/internal-api-keys/index.js +1 -1
  170. package/dist/esm/lib/hexclave-app/internal-api-keys/index.js.map +1 -1
  171. package/dist/esm/lib/hexclave-app/notification-categories/index.d.ts.map +1 -1
  172. package/dist/esm/lib/hexclave-app/notification-categories/index.js +1 -1
  173. package/dist/esm/lib/hexclave-app/permissions/index.d.ts.map +1 -1
  174. package/dist/esm/lib/hexclave-app/permissions/index.js +1 -1
  175. package/dist/esm/lib/hexclave-app/permissions/index.js.map +1 -1
  176. package/dist/esm/lib/hexclave-app/plan-usage/index.d.ts.map +1 -1
  177. package/dist/esm/lib/hexclave-app/plan-usage/index.js +1 -1
  178. package/dist/esm/lib/hexclave-app/project-configs/index.d.ts +1 -1
  179. package/dist/esm/lib/hexclave-app/project-configs/index.d.ts.map +1 -1
  180. package/dist/esm/lib/hexclave-app/project-configs/index.js +1 -1
  181. package/dist/esm/lib/hexclave-app/projects/index.d.ts +2 -2
  182. package/dist/esm/lib/hexclave-app/projects/index.d.ts.map +1 -1
  183. package/dist/esm/lib/hexclave-app/projects/index.js +5 -1
  184. package/dist/esm/lib/hexclave-app/projects/index.js.map +1 -1
  185. package/dist/esm/lib/hexclave-app/session-replays/index.d.ts.map +1 -1
  186. package/dist/esm/lib/hexclave-app/session-replays/index.js +1 -1
  187. package/dist/esm/lib/hexclave-app/teams/index.d.ts +4 -4
  188. package/dist/esm/lib/hexclave-app/teams/index.d.ts.map +1 -1
  189. package/dist/esm/lib/hexclave-app/teams/index.js +1 -1
  190. package/dist/esm/lib/hexclave-app/teams/index.js.map +1 -1
  191. package/dist/esm/lib/hexclave-app/url-targets.d.ts +1 -1
  192. package/dist/esm/lib/hexclave-app/url-targets.d.ts.map +1 -1
  193. package/dist/esm/lib/hexclave-app/url-targets.js +2 -3
  194. package/dist/esm/lib/hexclave-app/url-targets.js.map +1 -1
  195. package/dist/esm/lib/hexclave-app/url-targets.test.js +2 -3
  196. package/dist/esm/lib/hexclave-app/url-targets.test.js.map +1 -1
  197. package/dist/esm/lib/hexclave-app/users/index.d.ts +10 -10
  198. package/dist/esm/lib/hexclave-app/users/index.d.ts.map +1 -1
  199. package/dist/esm/lib/hexclave-app/users/index.js +1 -2
  200. package/dist/esm/lib/hexclave-app/users/index.js.map +1 -1
  201. package/dist/esm/pushed-config-error-overlay/index.d.ts +1 -1
  202. package/dist/esm/pushed-config-error-overlay/index.d.ts.map +1 -1
  203. package/dist/esm/pushed-config-error-overlay/index.js +1 -2
  204. package/dist/esm/pushed-config-error-overlay/index.js.map +1 -1
  205. package/dist/esm/pushed-config-error-overlay/index.test.js +2 -3
  206. package/dist/esm/pushed-config-error-overlay/index.test.js.map +1 -1
  207. package/dist/esm/utils/url.d.ts.map +1 -1
  208. package/dist/esm/utils/url.js +1 -2
  209. package/dist/esm/utils/url.js.map +1 -1
  210. package/dist/generated/env.js +2 -3
  211. package/dist/generated/env.js.map +1 -1
  212. package/dist/global.d.ts.map +1 -1
  213. package/dist/in-page-ui/base-styles.d.ts.map +1 -1
  214. package/dist/in-page-ui/base-styles.js +2 -3
  215. package/dist/in-page-ui/base-styles.js.map +1 -1
  216. package/dist/in-page-ui/dom.d.ts.map +1 -1
  217. package/dist/in-page-ui/dom.js +2 -3
  218. package/dist/in-page-ui/dom.js.map +1 -1
  219. package/dist/index-BKZ67WMa.d.ts +1 -0
  220. package/dist/index-BVVgDSdq.d.ts +1 -0
  221. package/dist/index-Bo5DpPFH.d.ts +17 -0
  222. package/dist/index-Bo5DpPFH.d.ts.map +1 -0
  223. package/dist/index-CBDR4cNg.d.ts +206 -0
  224. package/dist/index-CBDR4cNg.d.ts.map +1 -0
  225. package/dist/index-ClBTM-St.d.ts +40 -0
  226. package/dist/index-ClBTM-St.d.ts.map +1 -0
  227. package/dist/index-D7Vdg30O.d.ts +27 -0
  228. package/dist/index-D7Vdg30O.d.ts.map +1 -0
  229. package/dist/index-DLPccxVU.d.ts +14 -0
  230. package/dist/index-DLPccxVU.d.ts.map +1 -0
  231. package/dist/index-DN04TjLM.d.ts +43 -0
  232. package/dist/index-DN04TjLM.d.ts.map +1 -0
  233. package/dist/index-DSzMf-rS.d.ts +43 -0
  234. package/dist/index-DSzMf-rS.d.ts.map +1 -0
  235. package/dist/index-Dq4xsW7_.d.ts +106 -0
  236. package/dist/index-Dq4xsW7_.d.ts.map +1 -0
  237. package/dist/index-O3hJsHSl.d.ts +11 -0
  238. package/dist/index-O3hJsHSl.d.ts.map +1 -0
  239. package/dist/index-TUtJOdMm.d.ts +42 -0
  240. package/dist/index-TUtJOdMm.d.ts.map +1 -0
  241. package/dist/index-ZiEXZJBF.d.ts +129 -0
  242. package/dist/index-ZiEXZJBF.d.ts.map +1 -0
  243. package/dist/index-fOYcs4NH.d.ts +53 -0
  244. package/dist/{lib/hexclave-app/api-keys/index.d.ts.map → index-fOYcs4NH.d.ts.map} +1 -1
  245. package/dist/index-hYjsGKNc.d.ts +66 -0
  246. package/dist/index-hYjsGKNc.d.ts.map +1 -0
  247. package/dist/index.d.ts +11 -16
  248. package/dist/index.js +23 -23
  249. package/dist/integrations/convex/component/convex.config.d.ts +1 -1
  250. package/dist/integrations/convex/component/convex.config.d.ts.map +1 -1
  251. package/dist/integrations/convex/component/convex.config.js +2 -5
  252. package/dist/integrations/convex/component/convex.config.js.map +1 -1
  253. package/dist/integrations/convex.js +2 -4
  254. package/dist/integrations/convex.js.map +1 -1
  255. package/dist/lib/auth.js +2 -4
  256. package/dist/lib/auth.js.map +1 -1
  257. package/dist/lib/auth.test.js +1 -3
  258. package/dist/lib/auth.test.js.map +1 -1
  259. package/dist/lib/cookie.d.ts +2 -42
  260. package/dist/lib/cookie.js +7 -25
  261. package/dist/lib/cookie.js.map +1 -1
  262. package/dist/lib/hexclave-app/api-keys/index.d.ts +2 -53
  263. package/dist/lib/hexclave-app/api-keys/index.js +2 -4
  264. package/dist/lib/hexclave-app/api-keys/index.js.map +1 -1
  265. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +2 -376
  266. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js +2 -4
  267. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -1
  268. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js +1 -3
  269. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -1
  270. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts +2 -554
  271. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js +4 -5
  272. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
  273. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.oauth-prefetch.test.js +1 -3
  274. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.oauth-prefetch.test.js.map +1 -1
  275. package/dist/lib/hexclave-app/apps/implementations/common.d.ts +2 -65
  276. package/dist/lib/hexclave-app/apps/implementations/common.js +7 -9
  277. package/dist/lib/hexclave-app/apps/implementations/common.js.map +1 -1
  278. package/dist/lib/hexclave-app/apps/implementations/event-tracker.d.ts.map +1 -1
  279. package/dist/lib/hexclave-app/apps/implementations/event-tracker.js +2 -4
  280. package/dist/lib/hexclave-app/apps/implementations/event-tracker.js.map +1 -1
  281. package/dist/lib/hexclave-app/apps/implementations/event-tracker.test.js +1 -3
  282. package/dist/lib/hexclave-app/apps/implementations/event-tracker.test.js.map +1 -1
  283. package/dist/lib/hexclave-app/apps/implementations/index.d.ts +1 -3
  284. package/dist/lib/hexclave-app/apps/implementations/index.d.ts.map +1 -1
  285. package/dist/lib/hexclave-app/apps/implementations/index.js +2 -4
  286. package/dist/lib/hexclave-app/apps/implementations/index.js.map +1 -1
  287. package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.d.ts +2 -35
  288. package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.js +2 -4
  289. package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.js.map +1 -1
  290. package/dist/lib/hexclave-app/apps/implementations/server-app-impl.d.ts +2 -217
  291. package/dist/lib/hexclave-app/apps/implementations/server-app-impl.js +2 -4
  292. package/dist/lib/hexclave-app/apps/implementations/server-app-impl.js.map +1 -1
  293. package/dist/lib/hexclave-app/apps/implementations/session-refresh-subscription.d.ts.map +1 -1
  294. package/dist/lib/hexclave-app/apps/implementations/session-refresh-subscription.js +2 -3
  295. package/dist/lib/hexclave-app/apps/implementations/session-refresh-subscription.js.map +1 -1
  296. package/dist/lib/hexclave-app/apps/implementations/session-refresh-subscription.test.js +1 -3
  297. package/dist/lib/hexclave-app/apps/implementations/session-refresh-subscription.test.js.map +1 -1
  298. package/dist/lib/hexclave-app/apps/implementations/session-replay.d.ts +2 -122
  299. package/dist/lib/hexclave-app/apps/implementations/session-replay.js +14 -9
  300. package/dist/lib/hexclave-app/apps/implementations/session-replay.js.map +1 -1
  301. package/dist/lib/hexclave-app/apps/implementations/session-replay.test.js +135 -3
  302. package/dist/lib/hexclave-app/apps/implementations/session-replay.test.js.map +1 -1
  303. package/dist/lib/hexclave-app/apps/index.d.ts +1 -3
  304. package/dist/lib/hexclave-app/apps/index.js +32 -34
  305. package/dist/lib/hexclave-app/apps/interfaces/admin-app.d.ts +3 -255
  306. package/dist/lib/hexclave-app/apps/interfaces/admin-app.js +3 -6
  307. package/dist/lib/hexclave-app/apps/interfaces/admin-app.js.map +1 -1
  308. package/dist/lib/hexclave-app/apps/interfaces/client-app.d.ts +2 -219
  309. package/dist/lib/hexclave-app/apps/interfaces/client-app.js +3 -6
  310. package/dist/lib/hexclave-app/apps/interfaces/client-app.js.map +1 -1
  311. package/dist/lib/hexclave-app/apps/interfaces/server-app.d.ts +2 -133
  312. package/dist/lib/hexclave-app/apps/interfaces/server-app.js +3 -6
  313. package/dist/lib/hexclave-app/apps/interfaces/server-app.js.map +1 -1
  314. package/dist/lib/hexclave-app/common.d.ts +2 -174
  315. package/dist/lib/hexclave-app/common.js +2 -3
  316. package/dist/lib/hexclave-app/common.js.map +1 -1
  317. package/dist/lib/hexclave-app/connected-accounts/index.d.ts +2 -40
  318. package/dist/lib/hexclave-app/contact-channels/index.d.ts +2 -43
  319. package/dist/lib/hexclave-app/contact-channels/index.js +2 -3
  320. package/dist/lib/hexclave-app/contact-channels/index.js.map +1 -1
  321. package/dist/lib/hexclave-app/customers/index.d.ts +2 -129
  322. package/dist/lib/hexclave-app/data-vault/index.d.ts +2 -14
  323. package/dist/lib/hexclave-app/email/index.d.ts +2 -206
  324. package/dist/lib/hexclave-app/email-templates/index.d.ts +2 -17
  325. package/dist/lib/hexclave-app/email-templates/index.js +2 -3
  326. package/dist/lib/hexclave-app/email-templates/index.js.map +1 -1
  327. package/dist/lib/hexclave-app/index.d.ts +10 -15
  328. package/dist/lib/hexclave-app/index.js +49 -51
  329. package/dist/lib/hexclave-app/internal-api-keys/index.d.ts +2 -42
  330. package/dist/lib/hexclave-app/internal-api-keys/index.js +2 -3
  331. package/dist/lib/hexclave-app/internal-api-keys/index.js.map +1 -1
  332. package/dist/lib/hexclave-app/notification-categories/index.d.ts +2 -11
  333. package/dist/lib/hexclave-app/permissions/index.d.ts +2 -43
  334. package/dist/lib/hexclave-app/permissions/index.js +2 -3
  335. package/dist/lib/hexclave-app/permissions/index.js.map +1 -1
  336. package/dist/lib/hexclave-app/plan-usage/index.d.ts +2 -27
  337. package/dist/lib/hexclave-app/project-configs/index.d.ts +2 -106
  338. package/dist/lib/hexclave-app/projects/index.d.ts +2 -152
  339. package/dist/lib/hexclave-app/projects/index.js +6 -3
  340. package/dist/lib/hexclave-app/projects/index.js.map +1 -1
  341. package/dist/lib/hexclave-app/session-replays/index.d.ts +2 -66
  342. package/dist/lib/hexclave-app/teams/index.d.ts +2 -164
  343. package/dist/lib/hexclave-app/teams/index.js +2 -3
  344. package/dist/lib/hexclave-app/teams/index.js.map +1 -1
  345. package/dist/lib/hexclave-app/url-targets.d.ts +2 -39
  346. package/dist/lib/hexclave-app/url-targets.js +3 -5
  347. package/dist/lib/hexclave-app/url-targets.js.map +1 -1
  348. package/dist/lib/hexclave-app/url-targets.test.js +1 -3
  349. package/dist/lib/hexclave-app/url-targets.test.js.map +1 -1
  350. package/dist/lib/hexclave-app/users/index.d.ts +2 -357
  351. package/dist/lib/hexclave-app/users/index.js +2 -4
  352. package/dist/lib/hexclave-app/users/index.js.map +1 -1
  353. package/dist/pushed-config-error-overlay/index.d.ts +1 -2
  354. package/dist/pushed-config-error-overlay/index.d.ts.map +1 -1
  355. package/dist/pushed-config-error-overlay/index.js +2 -4
  356. package/dist/pushed-config-error-overlay/index.js.map +1 -1
  357. package/dist/pushed-config-error-overlay/index.test.js +1 -3
  358. package/dist/pushed-config-error-overlay/index.test.js.map +1 -1
  359. package/dist/redirect-page-urls-elbPx2J1.d.ts +35 -0
  360. package/dist/redirect-page-urls-elbPx2J1.d.ts.map +1 -0
  361. package/dist/{chunk-BE-pF4vm.js → rolldown-runtime-D6vf50IK.js} +12 -18
  362. package/dist/session-replay-8_3WCrsZ.d.ts +122 -0
  363. package/dist/session-replay-8_3WCrsZ.d.ts.map +1 -0
  364. package/dist/{storage-CKsyME2q.d.ts → storage-CA867GtX.d.ts} +1 -1
  365. package/dist/storage-CA867GtX.d.ts.map +1 -0
  366. package/dist/url-targets-BJgkwPGW.d.ts +39 -0
  367. package/dist/url-targets-BJgkwPGW.d.ts.map +1 -0
  368. package/dist/utils/url.d.ts.map +1 -1
  369. package/dist/utils/url.js +2 -4
  370. package/dist/utils/url.js.map +1 -1
  371. package/package.json +4 -4
  372. package/src/lib/hexclave-app/apps/implementations/session-replay.test.ts +160 -1
  373. package/src/lib/hexclave-app/apps/implementations/session-replay.ts +38 -12
  374. package/dist/lib/cookie.d.ts.map +0 -1
  375. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +0 -1
  376. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +0 -1
  377. package/dist/lib/hexclave-app/apps/implementations/common.d.ts.map +0 -1
  378. package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.d.ts.map +0 -1
  379. package/dist/lib/hexclave-app/apps/implementations/server-app-impl.d.ts.map +0 -1
  380. package/dist/lib/hexclave-app/apps/implementations/session-replay.d.ts.map +0 -1
  381. package/dist/lib/hexclave-app/apps/interfaces/admin-app.d.ts.map +0 -1
  382. package/dist/lib/hexclave-app/apps/interfaces/client-app.d.ts.map +0 -1
  383. package/dist/lib/hexclave-app/apps/interfaces/server-app.d.ts.map +0 -1
  384. package/dist/lib/hexclave-app/common.d.ts.map +0 -1
  385. package/dist/lib/hexclave-app/connected-accounts/index.d.ts.map +0 -1
  386. package/dist/lib/hexclave-app/contact-channels/index.d.ts.map +0 -1
  387. package/dist/lib/hexclave-app/customers/index.d.ts.map +0 -1
  388. package/dist/lib/hexclave-app/data-vault/index.d.ts.map +0 -1
  389. package/dist/lib/hexclave-app/email/index.d.ts.map +0 -1
  390. package/dist/lib/hexclave-app/email-templates/index.d.ts.map +0 -1
  391. package/dist/lib/hexclave-app/internal-api-keys/index.d.ts.map +0 -1
  392. package/dist/lib/hexclave-app/notification-categories/index.d.ts.map +0 -1
  393. package/dist/lib/hexclave-app/permissions/index.d.ts.map +0 -1
  394. package/dist/lib/hexclave-app/plan-usage/index.d.ts.map +0 -1
  395. package/dist/lib/hexclave-app/project-configs/index.d.ts.map +0 -1
  396. package/dist/lib/hexclave-app/projects/index.d.ts.map +0 -1
  397. package/dist/lib/hexclave-app/session-replays/index.d.ts.map +0 -1
  398. package/dist/lib/hexclave-app/teams/index.d.ts.map +0 -1
  399. package/dist/lib/hexclave-app/url-targets.d.ts.map +0 -1
  400. package/dist/lib/hexclave-app/users/index.d.ts.map +0 -1
  401. package/dist/storage-CKsyME2q.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../../src/lib/hexclave-app/users/index.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 { KnownErrors } from \"@hexclave/shared\";\nimport { CurrentUserCrud } from \"@hexclave/shared/dist/interface/crud/current-user\";\nimport { UsersCrud } from \"@hexclave/shared/dist/interface/crud/users\";\nimport type { RestrictedReason } from \"@hexclave/shared/dist/schema-fields\";\nimport { InternalSession } from \"@hexclave/shared/dist/sessions\";\nimport { encodeBase64 } from \"@hexclave/shared/dist/utils/bytes\";\nimport { GeoInfo } from \"@hexclave/shared/dist/utils/geo\";\nimport { ReadonlyJson } from \"@hexclave/shared/dist/utils/json\";\nimport { ProviderType } from \"@hexclave/shared/dist/utils/oauth\";\nimport { Result } from \"@hexclave/shared/dist/utils/results\";\nimport { ApiKeyCreationOptions, UserApiKey, UserApiKeyFirstView } from \"../api-keys\";\nimport { AsyncStoreProperty, AuthLike } from \"../common\";\nimport { DeprecatedOAuthConnection, OAuthConnection } from \"../connected-accounts\";\nimport { ContactChannel, ContactChannelCreateOptions, ServerContactChannel, ServerContactChannelCreateOptions } from \"../contact-channels\";\nimport { Customer } from \"../customers\";\nimport { NotificationCategory } from \"../notification-categories\";\nimport { AdminTeamPermission, TeamPermission } from \"../permissions\";\nimport { AdminOwnedProject, AdminProjectCreateOptions } from \"../projects\";\nimport { EditableTeamMemberProfile, ReceivedTeamInvitation, ServerListTeamsOptions, ServerTeam, ServerTeamCreateOptions, Team, TeamCreateOptions } from \"../teams\";\n\nconst userGetterErrorMessage = \"Hexclave: useUser() already returns the user object. Use `const user = useUser()` (or `const user = await app.getUser()`) instead of destructuring it like `const { user } = ...`.\";\n\nexport function withUserDestructureGuard<T extends object>(target: T): T {\n Object.freeze(target);\n return new Proxy(target, {\n get(target, prop, receiver) {\n if (prop === \"user\") {\n return guardGetter();\n }\n return target[prop as keyof T];\n },\n });\n}\n\nfunction guardGetter(): never {\n throw new Error(userGetterErrorMessage);\n}\n\nexport type OAuthProvider = {\n readonly id: string,\n readonly type: string,\n readonly userId: string,\n readonly accountId?: string,\n readonly email?: string,\n readonly allowSignIn: boolean,\n readonly allowConnectedAccounts: boolean,\n update(data: { allowSignIn?: boolean, allowConnectedAccounts?: boolean }): Promise<Result<void,\n InstanceType<typeof KnownErrors.OAuthProviderAccountIdAlreadyUsedForSignIn>\n >>,\n delete(): Promise<void>,\n};\n\nexport type ServerOAuthProvider = {\n readonly id: string,\n readonly type: string,\n readonly userId: string,\n readonly accountId: string,\n readonly email?: string,\n readonly allowSignIn: boolean,\n readonly allowConnectedAccounts: boolean,\n update(data: { accountId?: string, email?: string, allowSignIn?: boolean, allowConnectedAccounts?: boolean }): Promise<Result<void,\n InstanceType<typeof KnownErrors.OAuthProviderAccountIdAlreadyUsedForSignIn>\n >>,\n delete(): Promise<void>,\n};\n\n\n/**\n * Contains everything related to the current user session.\n */\nexport type Auth = AuthLike<{}> & {\n readonly _internalSession: InternalSession,\n readonly currentSession: {\n getTokens(): Promise<{ accessToken: string | null, refreshToken: string | null }>,\n },\n};\n\n/**\n * ```\n * +----------+-------------+-------------------+\n * | \\ | !Server | Server |\n * +----------+-------------+-------------------+\n * | !Session | User | ServerUser |\n * | Session | CurrentUser | CurrentServerUser |\n * +----------+-------------+-------------------+\n * ```\n *\n * The fields on each of these types are available iff:\n * BaseUser: true\n * Auth: Session\n * ServerBaseUser: Server\n * UserExtra: Session OR Server\n *\n * The types are defined as follows (in the typescript manner):\n * User = BaseUser\n * CurrentUser = BaseUser & Auth & UserExtra\n * ServerUser = BaseUser & ServerBaseUser & UserExtra\n * CurrentServerUser = BaseUser & ServerBaseUser & Auth & UserExtra\n **/\n\nexport type BaseUser = {\n readonly id: string,\n\n readonly displayName: string | null,\n\n /**\n * The user's email address.\n *\n * Note: This might NOT be unique across multiple users, so always use `id` for unique identification.\n */\n readonly primaryEmail: string | null,\n readonly primaryEmailVerified: boolean,\n readonly profileImageUrl: string | null,\n\n readonly signedUpAt: Date,\n\n readonly clientMetadata: any,\n readonly clientReadOnlyMetadata: any,\n\n /**\n * Whether the user has a password set.\n */\n readonly hasPassword: boolean,\n readonly otpAuthEnabled: boolean,\n readonly passkeyAuthEnabled: boolean,\n\n readonly isMultiFactorRequired: boolean,\n readonly isAnonymous: boolean,\n /**\n * Whether the user is in restricted state (signed up but hasn't completed onboarding requirements).\n * For example, if email verification is required but the user hasn't verified their email yet.\n */\n readonly isRestricted: boolean,\n /**\n * The reason why the user is restricted, e.g., { type: \"email_not_verified\" }, { type: \"anonymous\" }, or { type: \"restricted_by_administrator\" }.\n * Null if the user is not restricted.\n */\n readonly restrictedReason: RestrictedReason | null,\n toClientJson(): CurrentUserCrud[\"Client\"][\"Read\"],\n\n /**\n * @deprecated, use contact channel's usedForAuth instead\n */\n readonly emailAuthEnabled: boolean,\n /**\n * @deprecated\n */\n readonly oauthProviders: readonly { id: string }[],\n}\n\nexport type UserExtra = {\n setDisplayName(displayName: string | null): Promise<void>,\n /** @deprecated Use contact channel's sendVerificationEmail instead */\n sendVerificationEmail(): Promise<KnownErrors[\"EmailAlreadyVerified\"] | void>,\n setClientMetadata(metadata: any): Promise<void>,\n updatePassword(options: { oldPassword: string, newPassword: string}): Promise<KnownErrors[\"PasswordConfirmationMismatch\"] | KnownErrors[\"PasswordRequirementsNotMet\"] | void>,\n setPassword(options: { password: string }): Promise<KnownErrors[\"PasswordRequirementsNotMet\"] | void>,\n\n /**\n * A shorthand method to update multiple fields of the user at once.\n */\n update(update: UserUpdateOptions): Promise<void>,\n\n listContactChannels(): Promise<ContactChannel[]>,\n createContactChannel(data: ContactChannelCreateOptions): Promise<ContactChannel>,\n\n listNotificationCategories(): Promise<NotificationCategory[]>,\n\n delete(): Promise<void>,\n\n /** @deprecated Use `getOrLinkConnectedAccount` for redirect behavior, or `getConnectedAccount({ provider, providerAccountId })` for existence check. */\n getConnectedAccount(id: ProviderType, options: { or: 'redirect', scopes?: string[] }): Promise<DeprecatedOAuthConnection>,\n /** @deprecated Use `getConnectedAccount({ provider, providerAccountId })` for existence check, or `getOrLinkConnectedAccount` for redirect behavior. */\n getConnectedAccount(id: ProviderType, options?: { or?: 'redirect' | 'throw' | 'return-null', scopes?: string[] }): Promise<DeprecatedOAuthConnection | null>,\n /** Get a specific connected account by provider and providerAccountId. Returns null if not found. */\n getConnectedAccount(account: { provider: string, providerAccountId: string }): Promise<OAuthConnection | null>,\n\n\n /** List all connected accounts for this user (only those with allowConnectedAccounts enabled). */\n listConnectedAccounts(): Promise<OAuthConnection[]>,\n /** React hook to list all connected accounts. */\n /** Redirect the user to the OAuth flow to link a new connected account. Always redirects, never returns. */\n linkConnectedAccount(provider: string, options?: { scopes?: string[] }): Promise<void>,\n /** Get a connected account for the given provider, or redirect to link one if none exists or the token/scopes are insufficient. */\n getOrLinkConnectedAccount(provider: string, options?: { scopes?: string[] }): Promise<OAuthConnection>,\n /** React hook: get a connected account for the given provider, or redirect to link one if none exists or the token/scopes are insufficient. */\n\n hasPermission(scope: Team, permissionId: string): Promise<boolean>,\n hasPermission(permissionId: string): Promise<boolean>,\n\n getPermission(scope: Team, permissionId: string): Promise<TeamPermission | null>,\n getPermission(permissionId: string): Promise<TeamPermission | null>,\n\n listPermissions(scope: Team, options?: { recursive?: boolean }): Promise<TeamPermission[]>,\n listPermissions(options?: { recursive?: boolean }): Promise<TeamPermission[]>,\n\n\n readonly selectedTeam: Team | null,\n setSelectedTeam(teamOrId: string | Team | null): Promise<void>,\n createTeam(data: TeamCreateOptions): Promise<Team>,\n leaveTeam(team: Team): Promise<void>,\n\n /**\n * Lists all pending team invitations sent to any of the current user's verified email addresses.\n *\n * This allows the user to discover which teams have invited them, even if they haven't\n * joined those teams yet. Only invitations sent to verified email addresses are included.\n *\n * @returns An array of `ReceivedTeamInvitation` objects, each containing the team ID, team\n * display name, recipient email, and expiration date.\n *\n * @example\n * ```ts\n * const invitations = await user.listTeamInvitations();\n * for (const invitation of invitations) {\n * console.log(`Invited to ${invitation.teamDisplayName} via ${invitation.recipientEmail}`);\n * }\n * ```\n */\n listTeamInvitations(): Promise<ReceivedTeamInvitation[]>,\n /**\n * Lists all pending team invitations sent to any of the current user's verified email addresses.\n *\n * React hook version of `listTeamInvitations()`. Automatically re-renders when invitations change.\n */\n\n getActiveSessions(): Promise<ActiveSession[]>,\n revokeSession(sessionId: string): Promise<void>,\n getTeamProfile(team: Team): Promise<EditableTeamMemberProfile>,\n\n createApiKey(options: ApiKeyCreationOptions<\"user\">): Promise<UserApiKeyFirstView>,\n\n listOAuthProviders(): Promise<OAuthProvider[]>,\n\n getOAuthProvider(id: string): Promise<OAuthProvider | null>,\n\n registerPasskey(options?: { hostname?: string }): Promise<Result<undefined, KnownErrors[\"PasskeyRegistrationFailed\"] | KnownErrors[\"PasskeyWebAuthnError\"]>>,\n}\n& AsyncStoreProperty<\"apiKeys\", [], UserApiKey[], true>\n& AsyncStoreProperty<\"team\", [id: string], Team | null, false>\n& AsyncStoreProperty<\"teams\", [], Team[], true>\n& AsyncStoreProperty<\"teamInvitations\", [], ReceivedTeamInvitation[], true>\n& AsyncStoreProperty<\"permission\", [scope: Team, permissionId: string, options?: { recursive?: boolean }], TeamPermission | null, false>\n& AsyncStoreProperty<\"permissions\", [scope: Team, options?: { recursive?: boolean }], TeamPermission[], true>;\n\nexport type InternalUserExtra =\n & {\n createProject(newProject: AdminProjectCreateOptions): Promise<AdminOwnedProject>,\n transferProject(projectIdToTransfer: string, newTeamId: string): Promise<void>,\n }\n & AsyncStoreProperty<\"ownedProjects\", [], AdminOwnedProject[], true>\n\nexport type User = BaseUser;\n\nexport type CurrentUser = BaseUser & Auth & UserExtra & Customer;\n\nexport type CurrentInternalUser = CurrentUser & InternalUserExtra;\n\nexport type ProjectCurrentUser<ProjectId> = ProjectId extends \"internal\" ? CurrentInternalUser : CurrentUser;\n\nexport type TokenPartialUser = Pick<\n User,\n | \"id\"\n | \"displayName\"\n | \"primaryEmail\"\n | \"primaryEmailVerified\"\n | \"isAnonymous\"\n | \"isMultiFactorRequired\"\n | \"isRestricted\"\n | \"restrictedReason\"\n>\n\nexport type SyncedPartialUser = TokenPartialUser & Pick<\n User,\n | \"id\"\n | \"displayName\"\n | \"primaryEmail\"\n | \"primaryEmailVerified\"\n | \"profileImageUrl\"\n | \"signedUpAt\"\n | \"clientMetadata\"\n | \"clientReadOnlyMetadata\"\n | \"isAnonymous\"\n | \"hasPassword\"\n | \"isRestricted\"\n | \"restrictedReason\"\n>;\n\n\nexport type ActiveSession = {\n id: string,\n userId: string,\n createdAt: Date,\n isImpersonation: boolean,\n lastUsedAt: Date | undefined,\n isCurrentSession: boolean,\n geoInfo?: GeoInfo,\n};\n\nexport type UserUpdateOptions = {\n displayName?: string | null,\n clientMetadata?: ReadonlyJson,\n selectedTeamId?: string | null,\n totpMultiFactorSecret?: Uint8Array | null,\n profileImageUrl?: string | null,\n otpAuthEnabled?: boolean,\n passkeyAuthEnabled?: boolean,\n primaryEmail?: string | null,\n}\nexport function userUpdateOptionsToCrud(options: UserUpdateOptions): CurrentUserCrud[\"Client\"][\"Update\"] {\n return {\n display_name: options.displayName,\n client_metadata: options.clientMetadata,\n selected_team_id: options.selectedTeamId,\n totp_secret_base64: options.totpMultiFactorSecret != null ? encodeBase64(options.totpMultiFactorSecret) : options.totpMultiFactorSecret,\n profile_image_url: options.profileImageUrl,\n otp_auth_enabled: options.otpAuthEnabled,\n passkey_auth_enabled: options.passkeyAuthEnabled,\n primary_email: options.primaryEmail,\n };\n}\n\n\nexport type ServerBaseUser = {\n setPrimaryEmail(email: string | null, options?: { verified?: boolean | undefined }): Promise<void>,\n\n readonly lastActiveAt: Date,\n\n readonly serverMetadata: any,\n setServerMetadata(metadata: any): Promise<void>,\n setClientReadOnlyMetadata(metadata: any): Promise<void>,\n\n /** Whether the user is restricted by an administrator. Can be set manually or by sign-up rules. */\n readonly restrictedByAdmin: boolean,\n /** Public reason shown to the user explaining why they are restricted. Optional. */\n readonly restrictedByAdminReason: string | null,\n /** Private details about the restriction (e.g., which sign-up rule triggered). Only visible to server access and above. */\n readonly restrictedByAdminPrivateDetails: string | null,\n /** Best-effort ISO country code captured at sign-up time from request geo headers. */\n readonly countryCode: string | null,\n /** Server-only risk scores used during sign-up risk evaluation. */\n readonly riskScores: {\n readonly signUp: {\n readonly bot: number,\n readonly freeTrialAbuse: number,\n },\n },\n\n createTeam(data: Omit<ServerTeamCreateOptions, \"creatorUserId\">): Promise<ServerTeam>,\n\n listContactChannels(): Promise<ServerContactChannel[]>,\n createContactChannel(data: ServerContactChannelCreateOptions): Promise<ServerContactChannel>,\n\n update(user: ServerUserUpdateOptions): Promise<void>,\n\n grantPermission(scope: Team, permissionId: string): Promise<void>,\n grantPermission(permissionId: string): Promise<void>,\n\n revokePermission(scope: Team, permissionId: string): Promise<void>,\n revokePermission(permissionId: string): Promise<void>,\n\n getPermission(scope: Team, permissionId: string): Promise<TeamPermission | null>,\n getPermission(permissionId: string): Promise<TeamPermission | null>,\n\n hasPermission(scope: Team, permissionId: string): Promise<boolean>,\n hasPermission(permissionId: string): Promise<boolean>,\n\n listPermissions(scope: Team, options?: { recursive?: boolean }): Promise<TeamPermission[]>,\n listPermissions(options?: { recursive?: boolean }): Promise<TeamPermission[]>,\n\n\n listOAuthProviders(): Promise<ServerOAuthProvider[]>,\n\n getOAuthProvider(id: string): Promise<ServerOAuthProvider | null>,\n\n /**\n * Creates a new session object with a refresh token for this user. Can be used to impersonate them.\n */\n createSession(options?: { expiresInMillis?: number, isImpersonation?: boolean }): Promise<{\n getTokens(): Promise<{ accessToken: string | null, refreshToken: string | null }>,\n }>,\n}\n& AsyncStoreProperty<\"team\", [id: string], ServerTeam | null, false>\n& AsyncStoreProperty<\"teams\", [options?: ServerListTeamsOptions], ServerTeam[] & { nextCursor: string | null }, true>\n& AsyncStoreProperty<\"permission\", [scope: Team, permissionId: string, options?: { direct?: boolean }], AdminTeamPermission | null, false>\n& AsyncStoreProperty<\"permissions\", [scope: Team, options?: { direct?: boolean }], AdminTeamPermission[], true>;\n\n/**\n * A user including sensitive fields that should only be used on the server, never sent to the client\n * (such as sensitive information and serverMetadata).\n */\nexport type ServerUser = ServerBaseUser & BaseUser & UserExtra & Customer<true>;\n\nexport type CurrentServerUser = Auth & ServerUser;\n\nexport type CurrentInternalServerUser = CurrentServerUser & InternalUserExtra;\n\nexport type ProjectCurrentServerUser<ProjectId> = ProjectId extends \"internal\" ? CurrentInternalServerUser : CurrentServerUser;\n\nexport type SyncedPartialServerUser = SyncedPartialUser & Pick<\n ServerUser,\n | \"serverMetadata\"\n>;\n\nexport type ServerUserUpdateOptions = {\n primaryEmail?: string | null,\n primaryEmailVerified?: boolean,\n primaryEmailAuthEnabled?: boolean,\n clientReadOnlyMetadata?: ReadonlyJson,\n serverMetadata?: ReadonlyJson,\n password?: string,\n restrictedByAdmin?: boolean,\n restrictedByAdminReason?: string | null,\n restrictedByAdminPrivateDetails?: string | null,\n countryCode?: string | null,\n riskScores?: {\n signUp: {\n bot: number,\n freeTrialAbuse: number,\n },\n },\n} & UserUpdateOptions;\nexport function serverUserUpdateOptionsToCrud(options: ServerUserUpdateOptions): CurrentUserCrud[\"Server\"][\"Update\"] {\n // Base update options\n const baseUpdate: CurrentUserCrud[\"Server\"][\"Update\"] = {\n display_name: options.displayName,\n primary_email: options.primaryEmail,\n client_metadata: options.clientMetadata,\n client_read_only_metadata: options.clientReadOnlyMetadata,\n server_metadata: options.serverMetadata,\n selected_team_id: options.selectedTeamId,\n primary_email_auth_enabled: options.primaryEmailAuthEnabled,\n primary_email_verified: options.primaryEmailVerified,\n password: options.password,\n profile_image_url: options.profileImageUrl,\n totp_secret_base64: options.totpMultiFactorSecret != null ? encodeBase64(options.totpMultiFactorSecret) : options.totpMultiFactorSecret,\n };\n return {\n ...baseUpdate,\n restricted_by_admin: options.restrictedByAdmin,\n restricted_by_admin_reason: options.restrictedByAdminReason,\n restricted_by_admin_private_details: options.restrictedByAdminPrivateDetails,\n country_code: options.countryCode,\n risk_scores: options.riskScores ? {\n sign_up: {\n bot: options.riskScores.signUp.bot,\n free_trial_abuse: options.riskScores.signUp.freeTrialAbuse,\n },\n } : undefined,\n };\n}\n\n\nexport type ServerUserCreateOptions = {\n primaryEmail?: string | null,\n primaryEmailAuthEnabled?: boolean,\n password?: string,\n otpAuthEnabled?: boolean,\n displayName?: string,\n primaryEmailVerified?: boolean,\n clientMetadata?: any,\n clientReadOnlyMetadata?: any,\n serverMetadata?: any,\n countryCode?: string | null,\n riskScores?: {\n signUp: {\n bot: number,\n freeTrialAbuse: number,\n },\n },\n}\nexport function serverUserCreateOptionsToCrud(options: ServerUserCreateOptions): UsersCrud[\"Server\"][\"Create\"] {\n return {\n primary_email: options.primaryEmail,\n password: options.password,\n otp_auth_enabled: options.otpAuthEnabled,\n primary_email_auth_enabled: options.primaryEmailAuthEnabled,\n display_name: options.displayName,\n primary_email_verified: options.primaryEmailVerified,\n client_metadata: options.clientMetadata,\n client_read_only_metadata: options.clientReadOnlyMetadata,\n server_metadata: options.serverMetadata,\n country_code: options.countryCode,\n risk_scores: options.riskScores ? {\n sign_up: {\n bot: options.riskScores.signUp.bot,\n free_trial_abuse: options.riskScores.signUp.freeTrialAbuse,\n },\n } : undefined,\n };\n}\n"],"mappings":";;;AAwBA,MAAM,yBAAyB;AAE/B,SAAgB,yBAA2C,QAAc;AACvE,QAAO,OAAO,OAAO;AACrB,QAAO,IAAI,MAAM,QAAQ,EACvB,IAAI,QAAQ,MAAM,UAAU;AAC1B,MAAI,SAAS,OACX,QAAO,aAAa;AAEtB,SAAO,OAAO;IAEjB,CAAC;;AAGJ,SAAS,cAAqB;AAC5B,OAAM,IAAI,MAAM,uBAAuB;;AAkRzC,SAAgB,wBAAwB,SAAiE;AACvG,QAAO;EACL,cAAc,QAAQ;EACtB,iBAAiB,QAAQ;EACzB,kBAAkB,QAAQ;EAC1B,oBAAoB,QAAQ,yBAAyB,OAAO,aAAa,QAAQ,sBAAsB,GAAG,QAAQ;EAClH,mBAAmB,QAAQ;EAC3B,kBAAkB,QAAQ;EAC1B,sBAAsB,QAAQ;EAC9B,eAAe,QAAQ;EACxB;;AAuGH,SAAgB,8BAA8B,SAAuE;AAenH,QAAO;EAZL,cAAc,QAAQ;EACtB,eAAe,QAAQ;EACvB,iBAAiB,QAAQ;EACzB,2BAA2B,QAAQ;EACnC,iBAAiB,QAAQ;EACzB,kBAAkB,QAAQ;EAC1B,4BAA4B,QAAQ;EACpC,wBAAwB,QAAQ;EAChC,UAAU,QAAQ;EAClB,mBAAmB,QAAQ;EAC3B,oBAAoB,QAAQ,yBAAyB,OAAO,aAAa,QAAQ,sBAAsB,GAAG,QAAQ;EAIlH,qBAAqB,QAAQ;EAC7B,4BAA4B,QAAQ;EACpC,qCAAqC,QAAQ;EAC7C,cAAc,QAAQ;EACtB,aAAa,QAAQ,aAAa,EAChC,SAAS;GACP,KAAK,QAAQ,WAAW,OAAO;GAC/B,kBAAkB,QAAQ,WAAW,OAAO;GAC7C,EACF,GAAG;EACL;;AAsBH,SAAgB,8BAA8B,SAAiE;AAC7G,QAAO;EACL,eAAe,QAAQ;EACvB,UAAU,QAAQ;EAClB,kBAAkB,QAAQ;EAC1B,4BAA4B,QAAQ;EACpC,cAAc,QAAQ;EACtB,wBAAwB,QAAQ;EAChC,iBAAiB,QAAQ;EACzB,2BAA2B,QAAQ;EACnC,iBAAiB,QAAQ;EACzB,cAAc,QAAQ;EACtB,aAAa,QAAQ,aAAa,EAChC,SAAS;GACP,KAAK,QAAQ,WAAW,OAAO;GAC/B,kBAAkB,QAAQ,WAAW,OAAO;GAC7C,EACF,GAAG;EACL"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../../src/lib/hexclave-app/users/index.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 { KnownErrors } from \"@hexclave/shared\";\nimport { CurrentUserCrud } from \"@hexclave/shared/dist/interface/crud/current-user\";\nimport { UsersCrud } from \"@hexclave/shared/dist/interface/crud/users\";\nimport type { RestrictedReason } from \"@hexclave/shared/dist/schema-fields\";\nimport { InternalSession } from \"@hexclave/shared/dist/sessions\";\nimport { encodeBase64 } from \"@hexclave/shared/dist/utils/bytes\";\nimport { GeoInfo } from \"@hexclave/shared/dist/utils/geo\";\nimport { ReadonlyJson } from \"@hexclave/shared/dist/utils/json\";\nimport { ProviderType } from \"@hexclave/shared/dist/utils/oauth\";\nimport { Result } from \"@hexclave/shared/dist/utils/results\";\nimport { ApiKeyCreationOptions, UserApiKey, UserApiKeyFirstView } from \"../api-keys\";\nimport { AsyncStoreProperty, AuthLike } from \"../common\";\nimport { DeprecatedOAuthConnection, OAuthConnection } from \"../connected-accounts\";\nimport { ContactChannel, ContactChannelCreateOptions, ServerContactChannel, ServerContactChannelCreateOptions } from \"../contact-channels\";\nimport { Customer } from \"../customers\";\nimport { NotificationCategory } from \"../notification-categories\";\nimport { AdminTeamPermission, TeamPermission } from \"../permissions\";\nimport { AdminOwnedProject, AdminProjectCreateOptions } from \"../projects\";\nimport { EditableTeamMemberProfile, ReceivedTeamInvitation, ServerListTeamsOptions, ServerTeam, ServerTeamCreateOptions, Team, TeamCreateOptions } from \"../teams\";\n\nconst userGetterErrorMessage = \"Hexclave: useUser() already returns the user object. Use `const user = useUser()` (or `const user = await app.getUser()`) instead of destructuring it like `const { user } = ...`.\";\n\nexport function withUserDestructureGuard<T extends object>(target: T): T {\n Object.freeze(target);\n return new Proxy(target, {\n get(target, prop, receiver) {\n if (prop === \"user\") {\n return guardGetter();\n }\n return target[prop as keyof T];\n },\n });\n}\n\nfunction guardGetter(): never {\n throw new Error(userGetterErrorMessage);\n}\n\nexport type OAuthProvider = {\n readonly id: string,\n readonly type: string,\n readonly userId: string,\n readonly accountId?: string,\n readonly email?: string,\n readonly allowSignIn: boolean,\n readonly allowConnectedAccounts: boolean,\n update(data: { allowSignIn?: boolean, allowConnectedAccounts?: boolean }): Promise<Result<void,\n InstanceType<typeof KnownErrors.OAuthProviderAccountIdAlreadyUsedForSignIn>\n >>,\n delete(): Promise<void>,\n};\n\nexport type ServerOAuthProvider = {\n readonly id: string,\n readonly type: string,\n readonly userId: string,\n readonly accountId: string,\n readonly email?: string,\n readonly allowSignIn: boolean,\n readonly allowConnectedAccounts: boolean,\n update(data: { accountId?: string, email?: string, allowSignIn?: boolean, allowConnectedAccounts?: boolean }): Promise<Result<void,\n InstanceType<typeof KnownErrors.OAuthProviderAccountIdAlreadyUsedForSignIn>\n >>,\n delete(): Promise<void>,\n};\n\n\n/**\n * Contains everything related to the current user session.\n */\nexport type Auth = AuthLike<{}> & {\n readonly _internalSession: InternalSession,\n readonly currentSession: {\n getTokens(): Promise<{ accessToken: string | null, refreshToken: string | null }>,\n },\n};\n\n/**\n * ```\n * +----------+-------------+-------------------+\n * | \\ | !Server | Server |\n * +----------+-------------+-------------------+\n * | !Session | User | ServerUser |\n * | Session | CurrentUser | CurrentServerUser |\n * +----------+-------------+-------------------+\n * ```\n *\n * The fields on each of these types are available iff:\n * BaseUser: true\n * Auth: Session\n * ServerBaseUser: Server\n * UserExtra: Session OR Server\n *\n * The types are defined as follows (in the typescript manner):\n * User = BaseUser\n * CurrentUser = BaseUser & Auth & UserExtra\n * ServerUser = BaseUser & ServerBaseUser & UserExtra\n * CurrentServerUser = BaseUser & ServerBaseUser & Auth & UserExtra\n **/\n\nexport type BaseUser = {\n readonly id: string,\n\n readonly displayName: string | null,\n\n /**\n * The user's email address.\n *\n * Note: This might NOT be unique across multiple users, so always use `id` for unique identification.\n */\n readonly primaryEmail: string | null,\n readonly primaryEmailVerified: boolean,\n readonly profileImageUrl: string | null,\n\n readonly signedUpAt: Date,\n\n readonly clientMetadata: any,\n readonly clientReadOnlyMetadata: any,\n\n /**\n * Whether the user has a password set.\n */\n readonly hasPassword: boolean,\n readonly otpAuthEnabled: boolean,\n readonly passkeyAuthEnabled: boolean,\n\n readonly isMultiFactorRequired: boolean,\n readonly isAnonymous: boolean,\n /**\n * Whether the user is in restricted state (signed up but hasn't completed onboarding requirements).\n * For example, if email verification is required but the user hasn't verified their email yet.\n */\n readonly isRestricted: boolean,\n /**\n * The reason why the user is restricted, e.g., { type: \"email_not_verified\" }, { type: \"anonymous\" }, or { type: \"restricted_by_administrator\" }.\n * Null if the user is not restricted.\n */\n readonly restrictedReason: RestrictedReason | null,\n toClientJson(): CurrentUserCrud[\"Client\"][\"Read\"],\n\n /**\n * @deprecated, use contact channel's usedForAuth instead\n */\n readonly emailAuthEnabled: boolean,\n /**\n * @deprecated\n */\n readonly oauthProviders: readonly { id: string }[],\n}\n\nexport type UserExtra = {\n setDisplayName(displayName: string | null): Promise<void>,\n /** @deprecated Use contact channel's sendVerificationEmail instead */\n sendVerificationEmail(): Promise<KnownErrors[\"EmailAlreadyVerified\"] | void>,\n setClientMetadata(metadata: any): Promise<void>,\n updatePassword(options: { oldPassword: string, newPassword: string}): Promise<KnownErrors[\"PasswordConfirmationMismatch\"] | KnownErrors[\"PasswordRequirementsNotMet\"] | void>,\n setPassword(options: { password: string }): Promise<KnownErrors[\"PasswordRequirementsNotMet\"] | void>,\n\n /**\n * A shorthand method to update multiple fields of the user at once.\n */\n update(update: UserUpdateOptions): Promise<void>,\n\n listContactChannels(): Promise<ContactChannel[]>,\n createContactChannel(data: ContactChannelCreateOptions): Promise<ContactChannel>,\n\n listNotificationCategories(): Promise<NotificationCategory[]>,\n\n delete(): Promise<void>,\n\n /** @deprecated Use `getOrLinkConnectedAccount` for redirect behavior, or `getConnectedAccount({ provider, providerAccountId })` for existence check. */\n getConnectedAccount(id: ProviderType, options: { or: 'redirect', scopes?: string[] }): Promise<DeprecatedOAuthConnection>,\n /** @deprecated Use `getConnectedAccount({ provider, providerAccountId })` for existence check, or `getOrLinkConnectedAccount` for redirect behavior. */\n getConnectedAccount(id: ProviderType, options?: { or?: 'redirect' | 'throw' | 'return-null', scopes?: string[] }): Promise<DeprecatedOAuthConnection | null>,\n /** Get a specific connected account by provider and providerAccountId. Returns null if not found. */\n getConnectedAccount(account: { provider: string, providerAccountId: string }): Promise<OAuthConnection | null>,\n\n\n /** List all connected accounts for this user (only those with allowConnectedAccounts enabled). */\n listConnectedAccounts(): Promise<OAuthConnection[]>,\n /** React hook to list all connected accounts. */\n /** Redirect the user to the OAuth flow to link a new connected account. Always redirects, never returns. */\n linkConnectedAccount(provider: string, options?: { scopes?: string[] }): Promise<void>,\n /** Get a connected account for the given provider, or redirect to link one if none exists or the token/scopes are insufficient. */\n getOrLinkConnectedAccount(provider: string, options?: { scopes?: string[] }): Promise<OAuthConnection>,\n /** React hook: get a connected account for the given provider, or redirect to link one if none exists or the token/scopes are insufficient. */\n\n hasPermission(scope: Team, permissionId: string): Promise<boolean>,\n hasPermission(permissionId: string): Promise<boolean>,\n\n getPermission(scope: Team, permissionId: string): Promise<TeamPermission | null>,\n getPermission(permissionId: string): Promise<TeamPermission | null>,\n\n listPermissions(scope: Team, options?: { recursive?: boolean }): Promise<TeamPermission[]>,\n listPermissions(options?: { recursive?: boolean }): Promise<TeamPermission[]>,\n\n\n readonly selectedTeam: Team | null,\n setSelectedTeam(teamOrId: string | Team | null): Promise<void>,\n createTeam(data: TeamCreateOptions): Promise<Team>,\n leaveTeam(team: Team): Promise<void>,\n\n /**\n * Lists all pending team invitations sent to any of the current user's verified email addresses.\n *\n * This allows the user to discover which teams have invited them, even if they haven't\n * joined those teams yet. Only invitations sent to verified email addresses are included.\n *\n * @returns An array of `ReceivedTeamInvitation` objects, each containing the team ID, team\n * display name, recipient email, and expiration date.\n *\n * @example\n * ```ts\n * const invitations = await user.listTeamInvitations();\n * for (const invitation of invitations) {\n * console.log(`Invited to ${invitation.teamDisplayName} via ${invitation.recipientEmail}`);\n * }\n * ```\n */\n listTeamInvitations(): Promise<ReceivedTeamInvitation[]>,\n /**\n * Lists all pending team invitations sent to any of the current user's verified email addresses.\n *\n * React hook version of `listTeamInvitations()`. Automatically re-renders when invitations change.\n */\n\n getActiveSessions(): Promise<ActiveSession[]>,\n revokeSession(sessionId: string): Promise<void>,\n getTeamProfile(team: Team): Promise<EditableTeamMemberProfile>,\n\n createApiKey(options: ApiKeyCreationOptions<\"user\">): Promise<UserApiKeyFirstView>,\n\n listOAuthProviders(): Promise<OAuthProvider[]>,\n\n getOAuthProvider(id: string): Promise<OAuthProvider | null>,\n\n registerPasskey(options?: { hostname?: string }): Promise<Result<undefined, KnownErrors[\"PasskeyRegistrationFailed\"] | KnownErrors[\"PasskeyWebAuthnError\"]>>,\n}\n& AsyncStoreProperty<\"apiKeys\", [], UserApiKey[], true>\n& AsyncStoreProperty<\"team\", [id: string], Team | null, false>\n& AsyncStoreProperty<\"teams\", [], Team[], true>\n& AsyncStoreProperty<\"teamInvitations\", [], ReceivedTeamInvitation[], true>\n& AsyncStoreProperty<\"permission\", [scope: Team, permissionId: string, options?: { recursive?: boolean }], TeamPermission | null, false>\n& AsyncStoreProperty<\"permissions\", [scope: Team, options?: { recursive?: boolean }], TeamPermission[], true>;\n\nexport type InternalUserExtra =\n & {\n createProject(newProject: AdminProjectCreateOptions): Promise<AdminOwnedProject>,\n transferProject(projectIdToTransfer: string, newTeamId: string): Promise<void>,\n }\n & AsyncStoreProperty<\"ownedProjects\", [], AdminOwnedProject[], true>\n\nexport type User = BaseUser;\n\nexport type CurrentUser = BaseUser & Auth & UserExtra & Customer;\n\nexport type CurrentInternalUser = CurrentUser & InternalUserExtra;\n\nexport type ProjectCurrentUser<ProjectId> = ProjectId extends \"internal\" ? CurrentInternalUser : CurrentUser;\n\nexport type TokenPartialUser = Pick<\n User,\n | \"id\"\n | \"displayName\"\n | \"primaryEmail\"\n | \"primaryEmailVerified\"\n | \"isAnonymous\"\n | \"isMultiFactorRequired\"\n | \"isRestricted\"\n | \"restrictedReason\"\n>\n\nexport type SyncedPartialUser = TokenPartialUser & Pick<\n User,\n | \"id\"\n | \"displayName\"\n | \"primaryEmail\"\n | \"primaryEmailVerified\"\n | \"profileImageUrl\"\n | \"signedUpAt\"\n | \"clientMetadata\"\n | \"clientReadOnlyMetadata\"\n | \"isAnonymous\"\n | \"hasPassword\"\n | \"isRestricted\"\n | \"restrictedReason\"\n>;\n\n\nexport type ActiveSession = {\n id: string,\n userId: string,\n createdAt: Date,\n isImpersonation: boolean,\n lastUsedAt: Date | undefined,\n isCurrentSession: boolean,\n geoInfo?: GeoInfo,\n};\n\nexport type UserUpdateOptions = {\n displayName?: string | null,\n clientMetadata?: ReadonlyJson,\n selectedTeamId?: string | null,\n totpMultiFactorSecret?: Uint8Array | null,\n profileImageUrl?: string | null,\n otpAuthEnabled?: boolean,\n passkeyAuthEnabled?: boolean,\n primaryEmail?: string | null,\n}\nexport function userUpdateOptionsToCrud(options: UserUpdateOptions): CurrentUserCrud[\"Client\"][\"Update\"] {\n return {\n display_name: options.displayName,\n client_metadata: options.clientMetadata,\n selected_team_id: options.selectedTeamId,\n totp_secret_base64: options.totpMultiFactorSecret != null ? encodeBase64(options.totpMultiFactorSecret) : options.totpMultiFactorSecret,\n profile_image_url: options.profileImageUrl,\n otp_auth_enabled: options.otpAuthEnabled,\n passkey_auth_enabled: options.passkeyAuthEnabled,\n primary_email: options.primaryEmail,\n };\n}\n\n\nexport type ServerBaseUser = {\n setPrimaryEmail(email: string | null, options?: { verified?: boolean | undefined }): Promise<void>,\n\n readonly lastActiveAt: Date,\n\n readonly serverMetadata: any,\n setServerMetadata(metadata: any): Promise<void>,\n setClientReadOnlyMetadata(metadata: any): Promise<void>,\n\n /** Whether the user is restricted by an administrator. Can be set manually or by sign-up rules. */\n readonly restrictedByAdmin: boolean,\n /** Public reason shown to the user explaining why they are restricted. Optional. */\n readonly restrictedByAdminReason: string | null,\n /** Private details about the restriction (e.g., which sign-up rule triggered). Only visible to server access and above. */\n readonly restrictedByAdminPrivateDetails: string | null,\n /** Best-effort ISO country code captured at sign-up time from request geo headers. */\n readonly countryCode: string | null,\n /** Server-only risk scores used during sign-up risk evaluation. */\n readonly riskScores: {\n readonly signUp: {\n readonly bot: number,\n readonly freeTrialAbuse: number,\n },\n },\n\n createTeam(data: Omit<ServerTeamCreateOptions, \"creatorUserId\">): Promise<ServerTeam>,\n\n listContactChannels(): Promise<ServerContactChannel[]>,\n createContactChannel(data: ServerContactChannelCreateOptions): Promise<ServerContactChannel>,\n\n update(user: ServerUserUpdateOptions): Promise<void>,\n\n grantPermission(scope: Team, permissionId: string): Promise<void>,\n grantPermission(permissionId: string): Promise<void>,\n\n revokePermission(scope: Team, permissionId: string): Promise<void>,\n revokePermission(permissionId: string): Promise<void>,\n\n getPermission(scope: Team, permissionId: string): Promise<TeamPermission | null>,\n getPermission(permissionId: string): Promise<TeamPermission | null>,\n\n hasPermission(scope: Team, permissionId: string): Promise<boolean>,\n hasPermission(permissionId: string): Promise<boolean>,\n\n listPermissions(scope: Team, options?: { recursive?: boolean }): Promise<TeamPermission[]>,\n listPermissions(options?: { recursive?: boolean }): Promise<TeamPermission[]>,\n\n\n listOAuthProviders(): Promise<ServerOAuthProvider[]>,\n\n getOAuthProvider(id: string): Promise<ServerOAuthProvider | null>,\n\n /**\n * Creates a new session object with a refresh token for this user. Can be used to impersonate them.\n */\n createSession(options?: { expiresInMillis?: number, isImpersonation?: boolean }): Promise<{\n getTokens(): Promise<{ accessToken: string | null, refreshToken: string | null }>,\n }>,\n}\n& AsyncStoreProperty<\"team\", [id: string], ServerTeam | null, false>\n& AsyncStoreProperty<\"teams\", [options?: ServerListTeamsOptions], ServerTeam[] & { nextCursor: string | null }, true>\n& AsyncStoreProperty<\"permission\", [scope: Team, permissionId: string, options?: { direct?: boolean }], AdminTeamPermission | null, false>\n& AsyncStoreProperty<\"permissions\", [scope: Team, options?: { direct?: boolean }], AdminTeamPermission[], true>;\n\n/**\n * A user including sensitive fields that should only be used on the server, never sent to the client\n * (such as sensitive information and serverMetadata).\n */\nexport type ServerUser = ServerBaseUser & BaseUser & UserExtra & Customer<true>;\n\nexport type CurrentServerUser = Auth & ServerUser;\n\nexport type CurrentInternalServerUser = CurrentServerUser & InternalUserExtra;\n\nexport type ProjectCurrentServerUser<ProjectId> = ProjectId extends \"internal\" ? CurrentInternalServerUser : CurrentServerUser;\n\nexport type SyncedPartialServerUser = SyncedPartialUser & Pick<\n ServerUser,\n | \"serverMetadata\"\n>;\n\nexport type ServerUserUpdateOptions = {\n primaryEmail?: string | null,\n primaryEmailVerified?: boolean,\n primaryEmailAuthEnabled?: boolean,\n clientReadOnlyMetadata?: ReadonlyJson,\n serverMetadata?: ReadonlyJson,\n password?: string,\n restrictedByAdmin?: boolean,\n restrictedByAdminReason?: string | null,\n restrictedByAdminPrivateDetails?: string | null,\n countryCode?: string | null,\n riskScores?: {\n signUp: {\n bot: number,\n freeTrialAbuse: number,\n },\n },\n} & UserUpdateOptions;\nexport function serverUserUpdateOptionsToCrud(options: ServerUserUpdateOptions): CurrentUserCrud[\"Server\"][\"Update\"] {\n // Base update options\n const baseUpdate: CurrentUserCrud[\"Server\"][\"Update\"] = {\n display_name: options.displayName,\n primary_email: options.primaryEmail,\n client_metadata: options.clientMetadata,\n client_read_only_metadata: options.clientReadOnlyMetadata,\n server_metadata: options.serverMetadata,\n selected_team_id: options.selectedTeamId,\n primary_email_auth_enabled: options.primaryEmailAuthEnabled,\n primary_email_verified: options.primaryEmailVerified,\n password: options.password,\n profile_image_url: options.profileImageUrl,\n totp_secret_base64: options.totpMultiFactorSecret != null ? encodeBase64(options.totpMultiFactorSecret) : options.totpMultiFactorSecret,\n };\n return {\n ...baseUpdate,\n restricted_by_admin: options.restrictedByAdmin,\n restricted_by_admin_reason: options.restrictedByAdminReason,\n restricted_by_admin_private_details: options.restrictedByAdminPrivateDetails,\n country_code: options.countryCode,\n risk_scores: options.riskScores ? {\n sign_up: {\n bot: options.riskScores.signUp.bot,\n free_trial_abuse: options.riskScores.signUp.freeTrialAbuse,\n },\n } : undefined,\n };\n}\n\n\nexport type ServerUserCreateOptions = {\n primaryEmail?: string | null,\n primaryEmailAuthEnabled?: boolean,\n password?: string,\n otpAuthEnabled?: boolean,\n displayName?: string,\n primaryEmailVerified?: boolean,\n clientMetadata?: any,\n clientReadOnlyMetadata?: any,\n serverMetadata?: any,\n countryCode?: string | null,\n riskScores?: {\n signUp: {\n bot: number,\n freeTrialAbuse: number,\n },\n },\n}\nexport function serverUserCreateOptionsToCrud(options: ServerUserCreateOptions): UsersCrud[\"Server\"][\"Create\"] {\n return {\n primary_email: options.primaryEmail,\n password: options.password,\n otp_auth_enabled: options.otpAuthEnabled,\n primary_email_auth_enabled: options.primaryEmailAuthEnabled,\n display_name: options.displayName,\n primary_email_verified: options.primaryEmailVerified,\n client_metadata: options.clientMetadata,\n client_read_only_metadata: options.clientReadOnlyMetadata,\n server_metadata: options.serverMetadata,\n country_code: options.countryCode,\n risk_scores: options.riskScores ? {\n sign_up: {\n bot: options.riskScores.signUp.bot,\n free_trial_abuse: options.riskScores.signUp.freeTrialAbuse,\n },\n } : undefined,\n };\n}\n"],"mappings":";;AAwBA,MAAM,yBAAyB;AAE/B,SAAgB,yBAA2C,QAAc;CACvE,OAAO,OAAO,MAAM;CACpB,OAAO,IAAI,MAAM,QAAQ,EACvB,IAAI,QAAQ,MAAM,UAAU;EAC1B,IAAI,SAAS,QACX,OAAO,YAAY;EAErB,OAAO,OAAO;CAChB,EACF,CAAC;AACH;AAEA,SAAS,cAAqB;CAC5B,MAAM,IAAI,MAAM,sBAAsB;AACxC;AAiRA,SAAgB,wBAAwB,SAAiE;CACvG,OAAO;EACL,cAAc,QAAQ;EACtB,iBAAiB,QAAQ;EACzB,kBAAkB,QAAQ;EAC1B,oBAAoB,QAAQ,yBAAyB,OAAO,aAAa,QAAQ,qBAAqB,IAAI,QAAQ;EAClH,mBAAmB,QAAQ;EAC3B,kBAAkB,QAAQ;EAC1B,sBAAsB,QAAQ;EAC9B,eAAe,QAAQ;CACzB;AACF;AAsGA,SAAgB,8BAA8B,SAAuE;CAenH,OAAO;EAZL,cAAc,QAAQ;EACtB,eAAe,QAAQ;EACvB,iBAAiB,QAAQ;EACzB,2BAA2B,QAAQ;EACnC,iBAAiB,QAAQ;EACzB,kBAAkB,QAAQ;EAC1B,4BAA4B,QAAQ;EACpC,wBAAwB,QAAQ;EAChC,UAAU,QAAQ;EAClB,mBAAmB,QAAQ;EAC3B,oBAAoB,QAAQ,yBAAyB,OAAO,aAAa,QAAQ,qBAAqB,IAAI,QAAQ;EAIlH,qBAAqB,QAAQ;EAC7B,4BAA4B,QAAQ;EACpC,qCAAqC,QAAQ;EAC7C,cAAc,QAAQ;EACtB,aAAa,QAAQ,aAAa,EAChC,SAAS;GACP,KAAK,QAAQ,WAAW,OAAO;GAC/B,kBAAkB,QAAQ,WAAW,OAAO;EAC9C,EACF,IAAI,KAAA;CACN;AACF;AAqBA,SAAgB,8BAA8B,SAAiE;CAC7G,OAAO;EACL,eAAe,QAAQ;EACvB,UAAU,QAAQ;EAClB,kBAAkB,QAAQ;EAC1B,4BAA4B,QAAQ;EACpC,cAAc,QAAQ;EACtB,wBAAwB,QAAQ;EAChC,iBAAiB,QAAQ;EACzB,2BAA2B,QAAQ;EACnC,iBAAiB,QAAQ;EACzB,cAAc,QAAQ;EACtB,aAAa,QAAQ,aAAa,EAChC,SAAS;GACP,KAAK,QAAQ,WAAW,OAAO;GAC/B,kBAAkB,QAAQ,WAAW,OAAO;EAC9C,EACF,IAAI,KAAA;CACN;AACF"}
@@ -1,4 +1,4 @@
1
- import { StackClientApp } from "../lib/hexclave-app";
1
+ import { StackClientApp } from "../lib/hexclave-app/index.js";
2
2
 
3
3
  //#region src/pushed-config-error-overlay/index.d.ts
4
4
  declare function mountPushedConfigErrorOverlay(app: StackClientApp<true>): () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/pushed-config-error-overlay/index.ts"],"mappings":";;;iBA6VgB,6BAAA,CAA8B,GAAA,EAAK,cAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/pushed-config-error-overlay/index.ts"],"mappings":";;;iBA6VgB,6BAAA,CAA8B,GAAyB,EAApB,cAAc"}
@@ -4,7 +4,6 @@ import { getInPageUiBaseCSS } from "../in-page-ui/base-styles.js";
4
4
  import { captureError } from "@hexclave/shared/dist/utils/errors";
5
5
  import { isLocalhost } from "@hexclave/shared/dist/utils/urls";
6
6
  import { envVars } from "../generated/env.js";
7
-
8
7
  //#region src/pushed-config-error-overlay/index.ts
9
8
  const GLOBAL_INSTANCE_KEY = "__hexclave-pushed-config-error-overlay";
10
9
  const MINIMIZED_STORAGE_KEY = "hexclave-pushed-config-error-minimized-key";
@@ -458,7 +457,7 @@ function mountPushedConfigErrorOverlay(app) {
458
457
  setGlobalUiInstance(GLOBAL_INSTANCE_KEY, { cleanup });
459
458
  return cleanup;
460
459
  }
461
-
462
460
  //#endregion
463
461
  export { mountPushedConfigErrorOverlay };
462
+
464
463
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/pushed-config-error-overlay/index.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//===========================================\n\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 { envVars } from \"../generated/env\";\nimport { getInPageUiBaseCSS } from \"../in-page-ui/base-styles\";\nimport { canMountIntoDom, getGlobalUiInstance, h, setGlobalUiInstance, setHtml } from \"../in-page-ui/dom\";\nimport type { StackClientApp } from \"../lib/hexclave-app\";\n\nconst GLOBAL_INSTANCE_KEY = \"__hexclave-pushed-config-error-overlay\";\nconst MINIMIZED_STORAGE_KEY = \"hexclave-pushed-config-error-minimized-key\";\nconst REFRESH_INTERVAL_MS = 5_000;\nconst 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>';\nconst COPY_ICON_SVG = '<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></svg>';\n\ntype ConfigIssue = {\n kind: \"error\" | \"warning\",\n messages: string[],\n};\n\nconst css = getInPageUiBaseCSS(\".hexclave-config-error-overlay\") + `\n .hexclave-config-error-overlay .hce-backdrop {\n position: fixed;\n inset: 0;\n z-index: 2147483647;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 24px;\n background: rgba(0, 0, 0, 0.46);\n backdrop-filter: blur(6px);\n overflow: auto;\n }\n\n .hexclave-config-error-overlay .hce-card {\n --hce-status: var(--sdt-error);\n width: min(720px, calc(100vw - 32px));\n max-height: min(640px, calc(100dvh - 48px));\n border: 1px solid color-mix(in srgb, var(--hce-status) 35%, var(--sdt-border));\n border-radius: 18px;\n background: var(--sdt-overlay-bg);\n box-shadow: var(--sdt-shadow);\n backdrop-filter: blur(18px);\n display: flex;\n overflow: hidden;\n }\n\n .hexclave-config-error-overlay .hce-card-warning {\n --hce-status: var(--sdt-warning);\n }\n\n .hexclave-config-error-overlay .hce-card-inner {\n padding: 18px;\n width: 100%;\n overflow: auto;\n }\n\n .hexclave-config-error-overlay .hce-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 12px;\n margin-bottom: 12px;\n }\n\n .hexclave-config-error-overlay .hce-title-row {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n min-width: 0;\n }\n\n .hexclave-config-error-overlay .hce-logo {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 34px;\n height: 34px;\n border-radius: 10px;\n background: var(--hce-status);\n color: white;\n box-shadow: 0 10px 30px color-mix(in srgb, var(--hce-status) 32%, transparent);\n }\n\n .hexclave-config-error-overlay .hce-badge {\n display: inline-flex;\n flex-shrink: 0;\n padding: 2px 6px;\n border-radius: 999px;\n background: var(--hce-status);\n color: white;\n font-size: 10px;\n font-weight: 700;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n }\n\n .hexclave-config-error-overlay .hce-title {\n color: var(--sdt-text);\n margin-top: 4px;\n font-size: 18px;\n font-weight: 700;\n line-height: 1.25;\n }\n\n .hexclave-config-error-overlay .hce-actions {\n display: flex;\n gap: 4px;\n }\n\n .hexclave-config-error-overlay .hce-icon-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: 1px solid var(--sdt-border);\n border-radius: 8px;\n background: var(--sdt-bg-elevated);\n color: var(--sdt-text-secondary);\n cursor: pointer;\n font: inherit;\n line-height: 1;\n vertical-align: top;\n }\n\n .hexclave-config-error-overlay .hce-icon-btn svg {\n display: block;\n flex-shrink: 0;\n }\n\n .hexclave-config-error-overlay .hce-text-btn {\n align-items: center;\n gap: 6px;\n min-height: 28px;\n padding: 0 10px;\n width: auto;\n font-size: 12px;\n line-height: 1;\n }\n\n .hexclave-config-error-overlay .hce-icon-btn:hover {\n background: var(--sdt-bg-hover);\n color: var(--sdt-text);\n }\n\n .hexclave-config-error-overlay .hce-body {\n color: var(--sdt-text-secondary);\n font-size: 14px;\n line-height: 1.5;\n }\n\n .hexclave-config-error-overlay .hce-message-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 10px;\n margin-top: 14px;\n margin-bottom: 8px;\n }\n\n .hexclave-config-error-overlay .hce-message-label {\n color: var(--sdt-text);\n font-size: 12px;\n font-weight: 650;\n }\n\n .hexclave-config-error-overlay .hce-message {\n padding: 12px;\n max-height: min(260px, max(96px, 30dvh));\n overflow: auto;\n border: 1px solid var(--sdt-border-subtle);\n border-radius: 10px;\n background: var(--sdt-bg-subtle);\n color: var(--sdt-text);\n font-family: var(--sdt-font-mono);\n font-size: 12px;\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n }\n\n .hexclave-config-error-overlay .hce-footer {\n margin-top: 10px;\n color: var(--sdt-text-tertiary);\n font-size: 12px;\n }\n\n .hexclave-config-error-overlay .hce-pill {\n position: fixed;\n right: 18px;\n bottom: 18px;\n z-index: 2147483647;\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px 8px 8px;\n --hce-status: var(--sdt-error);\n border: 1px solid color-mix(in srgb, var(--hce-status) 35%, var(--sdt-border));\n border-radius: 999px;\n background: var(--sdt-overlay-bg);\n box-shadow: var(--sdt-trigger-shadow);\n color: var(--sdt-text);\n cursor: pointer;\n font: inherit;\n backdrop-filter: blur(18px);\n }\n\n .hexclave-config-error-overlay .hce-pill-warning {\n --hce-status: var(--sdt-warning);\n }\n\n .hexclave-config-error-overlay .hce-pill-logo {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border-radius: 999px;\n background: var(--hce-status);\n color: white;\n }\n\n @media (max-height: 520px) {\n .hexclave-config-error-overlay .hce-backdrop {\n align-items: flex-start;\n padding: 12px;\n }\n\n .hexclave-config-error-overlay .hce-card {\n width: min(720px, calc(100vw - 24px));\n max-height: calc(100dvh - 24px);\n }\n\n .hexclave-config-error-overlay .hce-card-inner {\n padding: 12px;\n }\n\n .hexclave-config-error-overlay .hce-header {\n margin-bottom: 8px;\n }\n\n .hexclave-config-error-overlay .hce-title {\n font-size: 16px;\n }\n\n .hexclave-config-error-overlay .hce-body {\n font-size: 13px;\n }\n\n .hexclave-config-error-overlay .hce-message {\n max-height: max(80px, 24dvh);\n }\n }\n`;\n\nfunction storageGet(key: string): string | null {\n try {\n return localStorage.getItem(key);\n } catch {\n return null;\n }\n}\n\nfunction storageSet(key: string, value: string): void {\n try {\n localStorage.setItem(key, value);\n } catch {\n // Storage may be unavailable in private or embedded contexts.\n }\n}\n\nfunction storageRemove(key: string): void {\n try {\n localStorage.removeItem(key);\n } catch {\n // Storage may be unavailable in private or embedded contexts.\n }\n}\n\nfunction shouldMount(): boolean {\n if (!canMountIntoDom()) {\n return false;\n }\n\n const nodeEnv = envVars.NODE_ENV;\n if (nodeEnv !== undefined) {\n return nodeEnv === \"development\";\n }\n\n try {\n const url = new URL(window.location.href);\n if (url.protocol === \"file:\") {\n return true;\n }\n } catch {\n return false;\n }\n return isLocalhost(window.location.href);\n}\n\nasync function copyTextToClipboard(text: string): Promise<void> {\n const clipboard: unknown = Reflect.get(navigator, \"clipboard\");\n const writeText = clipboard != null && typeof clipboard === \"object\"\n ? Reflect.get(clipboard, \"writeText\")\n : null;\n if (typeof writeText === \"function\") {\n await writeText.call(clipboard, text);\n return;\n }\n\n const textarea = h(\"textarea\", {\n style: {\n position: \"fixed\",\n left: \"-9999px\",\n top: \"0\",\n opacity: \"0\",\n },\n readonly: \"true\",\n }) as HTMLTextAreaElement;\n textarea.value = text;\n document.body.appendChild(textarea);\n textarea.select();\n const copied = document.execCommand(\"copy\");\n textarea.remove();\n if (!copied) {\n throw new Error(\"Browser refused to copy the config error message.\");\n }\n}\n\nfunction buildConfigIssueAiPrompt(issue: ConfigIssue): string {\n const issueLabel = issue.kind === \"error\" ? \"error\" : \"warning\";\n return [\n `Help me fix this Hexclave config ${issueLabel}.`,\n \"\",\n \"Hexclave reminder:\",\n `This ${issueLabel} comes from a pushed Hexclave config file. The app may keep running with the synced Hexclave config, but I need to fix the config file mentioned in the message and save it again so Hexclave can sync the config successfully and clear the dialog. Use your web fetch tool to read https://skill.hexclave.com to learn more about Hexclave.`,\n \"\",\n issue.kind === \"error\" ? \"Error message:\" : \"Warning message:\",\n issue.messages.join(\"\\n\"),\n \"\",\n \"Please explain the likely cause, identify the config key or value I should change, and suggest the smallest safe fix.\",\n ].join(\"\\n\");\n}\n\nexport function mountPushedConfigErrorOverlay(app: StackClientApp<true>): () => void {\n if (!shouldMount()) {\n return () => {};\n }\n\n getGlobalUiInstance(GLOBAL_INSTANCE_KEY)?.cleanup();\n\n const root = h(\"div\", { className: \"hexclave-config-error-overlay\" });\n const style = h(\"style\", null, css);\n root.appendChild(style);\n document.body.appendChild(root);\n\n let disposed = false;\n let lastErrorKey: string | null = null;\n let lastConsoleErrorKey: string | null = null;\n let minimized = false;\n\n const render = (issue: ConfigIssue | null) => {\n root.replaceChildren(style);\n if (issue == null) {\n lastErrorKey = null;\n minimized = false;\n return;\n }\n\n const issueMessage = issue.messages.join(\"\\n\");\n const issueKey = `${app.projectId}:${issue.kind}:${issueMessage}`;\n const issueLabel = issue.kind === \"error\" ? \"error\" : \"warning\";\n const issueTitle = issue.kind === \"error\"\n ? \"Your Hexclave config has been saved, but contains errors\"\n : \"Your Hexclave config has been saved, but has warnings\";\n const bodyText = issue.kind === \"error\"\n ? \"Your app can keep running, but Hexclave is still using the last valid config until this is fixed.\"\n : \"Your app can keep running, but part of your Hexclave config may not behave the way you expect until this is fixed.\";\n const footerText = issue.kind === \"error\"\n ? \"Fix the config file mentioned above and save it again. This message will disappear after the config sync succeeds.\"\n : \"Fix the config file mentioned above and save it again. This warning will disappear after Hexclave syncs a config without warnings.\";\n if (issueKey !== lastConsoleErrorKey) {\n lastConsoleErrorKey = issueKey;\n const consoleMessage = `[Hexclave] Config ${issueLabel}: ${issueMessage}`;\n if (issue.kind === \"error\") {\n console.error(consoleMessage);\n } else {\n console.warn(consoleMessage);\n }\n }\n\n if (issueKey !== lastErrorKey) {\n lastErrorKey = issueKey;\n minimized = storageGet(MINIMIZED_STORAGE_KEY) === issueKey;\n }\n\n if (minimized) {\n const logoSpan = h(\"span\", { className: \"hce-pill-logo\" });\n setHtml(logoSpan, HEXCLAVE_LOGO_SVG);\n root.appendChild(h(\"button\", {\n className: issue.kind === \"error\" ? \"hce-pill\" : \"hce-pill hce-pill-warning\",\n type: \"button\",\n onClick: () => {\n minimized = false;\n storageRemove(MINIMIZED_STORAGE_KEY);\n render(issue);\n },\n },\n logoSpan,\n h(\"span\", null, issue.kind === \"error\" ? \"Config error\" : \"Config warning\")));\n return;\n }\n\n const logoSpan = h(\"span\", { className: \"hce-logo\" });\n setHtml(logoSpan, HEXCLAVE_LOGO_SVG);\n const copyButton = h(\"button\", {\n className: \"hce-icon-btn hce-text-btn\",\n type: \"button\",\n title: issue.kind === \"error\" ? \"Copy error message\" : \"Copy warning message\",\n \"aria-label\": issue.kind === \"error\" ? \"Copy config error message\" : \"Copy config warning message\",\n onClick: () => {\n runAsynchronously(async () => {\n await copyTextToClipboard(issueMessage);\n copyButton.textContent = \"Copied\";\n setTimeout(() => {\n setHtml(copyButton, `${COPY_ICON_SVG}Copy`);\n }, 1500);\n }, {\n noErrorLogging: true,\n onError: (copyError) => {\n captureError(\"pushed-config-error-overlay-copy\", copyError);\n copyButton.textContent = \"Copy failed\";\n setTimeout(() => {\n setHtml(copyButton, `${COPY_ICON_SVG}Copy`);\n }, 1500);\n },\n });\n },\n });\n setHtml(copyButton, `${COPY_ICON_SVG}Copy`);\n\n const aiPromptCopyButton = h(\"button\", {\n className: \"hce-icon-btn\",\n type: \"button\",\n title: \"Copy AI prompt\",\n \"aria-label\": issue.kind === \"error\" ? \"Copy AI prompt for config error\" : \"Copy AI prompt for config warning\",\n onClick: () => {\n runAsynchronously(async () => {\n await copyTextToClipboard(buildConfigIssueAiPrompt(issue));\n aiPromptCopyButton.textContent = \"✓\";\n setTimeout(() => {\n setHtml(aiPromptCopyButton, COPY_ICON_SVG);\n }, 1500);\n }, {\n noErrorLogging: true,\n onError: (copyError) => {\n captureError(\"pushed-config-error-overlay-copy-ai-prompt\", copyError);\n aiPromptCopyButton.textContent = \"!\";\n setTimeout(() => {\n setHtml(aiPromptCopyButton, COPY_ICON_SVG);\n }, 1500);\n },\n });\n },\n });\n setHtml(aiPromptCopyButton, COPY_ICON_SVG);\n\n root.appendChild(h(\"div\", { className: \"hce-backdrop\" },\n h(\"div\", { className: issue.kind === \"error\" ? \"hce-card\" : \"hce-card hce-card-warning\", role: \"alertdialog\", \"aria-modal\": \"true\", \"aria-label\": `Hexclave config ${issueLabel}` },\n h(\"div\", { className: \"hce-card-inner\" },\n h(\"div\", { className: \"hce-header\" },\n h(\"div\", { className: \"hce-title-row\" },\n logoSpan,\n h(\"div\", null,\n h(\"span\", { className: \"hce-badge\" }, `Config ${issueLabel}`),\n h(\"div\", { className: \"hce-title\" }, issueTitle),\n ),\n ),\n h(\"div\", { className: \"hce-actions\" },\n aiPromptCopyButton,\n h(\"button\", {\n className: \"hce-icon-btn\",\n type: \"button\",\n title: \"Minimize\",\n \"aria-label\": issue.kind === \"error\" ? \"Minimize config error\" : \"Minimize config warning\",\n onClick: () => {\n minimized = true;\n storageSet(MINIMIZED_STORAGE_KEY, issueKey);\n render(issue);\n },\n }, \"–\"),\n ),\n ),\n h(\"div\", { className: \"hce-body\" },\n bodyText,\n h(\"div\", { className: \"hce-message-header\" },\n h(\"div\", { className: \"hce-message-label\" }, issue.kind === \"error\" ? \"Error message\" : \"Warning message\"),\n copyButton,\n ),\n h(\"div\", { className: \"hce-message\" }, issueMessage),\n h(\"div\", { className: \"hce-footer\" }, footerText),\n ),\n ),\n )));\n };\n\n const refresh = () => {\n if (disposed || !canMountIntoDom()) {\n return;\n }\n runAsynchronously(async () => {\n const project = await app.getProject();\n if (disposed) {\n return;\n }\n render(project.pushedConfigError == null\n ? project.configWarnings.length === 0\n ? null\n : { kind: \"warning\", messages: project.configWarnings.map((warning) => warning.message) }\n : { kind: \"error\", messages: [project.pushedConfigError.message] });\n }, {\n noErrorLogging: true,\n onError: (error) => {\n captureError(\"pushed-config-error-overlay-refresh\", error);\n },\n });\n };\n\n // This is mounted from the base client-app constructor, which also runs\n // before subclass field initializers. Defer the first app call so overridden\n // methods like adminApp.getProject() can safely touch subclass caches.\n queueMicrotask(refresh);\n const interval = setInterval(refresh, REFRESH_INTERVAL_MS);\n\n const cleanup = () => {\n disposed = true;\n clearInterval(interval);\n root.remove();\n if (getGlobalUiInstance(GLOBAL_INSTANCE_KEY)?.cleanup === cleanup) {\n setGlobalUiInstance(GLOBAL_INSTANCE_KEY, null);\n }\n };\n setGlobalUiInstance(GLOBAL_INSTANCE_KEY, { cleanup });\n return cleanup;\n}\n\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/pushed-config-error-overlay/index.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//===========================================\n\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 { envVars } from \"../generated/env\";\nimport { getInPageUiBaseCSS } from \"../in-page-ui/base-styles\";\nimport { canMountIntoDom, getGlobalUiInstance, h, setGlobalUiInstance, setHtml } from \"../in-page-ui/dom\";\nimport type { StackClientApp } from \"../lib/hexclave-app\";\n\nconst GLOBAL_INSTANCE_KEY = \"__hexclave-pushed-config-error-overlay\";\nconst MINIMIZED_STORAGE_KEY = \"hexclave-pushed-config-error-minimized-key\";\nconst REFRESH_INTERVAL_MS = 5_000;\nconst 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>';\nconst COPY_ICON_SVG = '<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.25\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></svg>';\n\ntype ConfigIssue = {\n kind: \"error\" | \"warning\",\n messages: string[],\n};\n\nconst css = getInPageUiBaseCSS(\".hexclave-config-error-overlay\") + `\n .hexclave-config-error-overlay .hce-backdrop {\n position: fixed;\n inset: 0;\n z-index: 2147483647;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 24px;\n background: rgba(0, 0, 0, 0.46);\n backdrop-filter: blur(6px);\n overflow: auto;\n }\n\n .hexclave-config-error-overlay .hce-card {\n --hce-status: var(--sdt-error);\n width: min(720px, calc(100vw - 32px));\n max-height: min(640px, calc(100dvh - 48px));\n border: 1px solid color-mix(in srgb, var(--hce-status) 35%, var(--sdt-border));\n border-radius: 18px;\n background: var(--sdt-overlay-bg);\n box-shadow: var(--sdt-shadow);\n backdrop-filter: blur(18px);\n display: flex;\n overflow: hidden;\n }\n\n .hexclave-config-error-overlay .hce-card-warning {\n --hce-status: var(--sdt-warning);\n }\n\n .hexclave-config-error-overlay .hce-card-inner {\n padding: 18px;\n width: 100%;\n overflow: auto;\n }\n\n .hexclave-config-error-overlay .hce-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 12px;\n margin-bottom: 12px;\n }\n\n .hexclave-config-error-overlay .hce-title-row {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n min-width: 0;\n }\n\n .hexclave-config-error-overlay .hce-logo {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 34px;\n height: 34px;\n border-radius: 10px;\n background: var(--hce-status);\n color: white;\n box-shadow: 0 10px 30px color-mix(in srgb, var(--hce-status) 32%, transparent);\n }\n\n .hexclave-config-error-overlay .hce-badge {\n display: inline-flex;\n flex-shrink: 0;\n padding: 2px 6px;\n border-radius: 999px;\n background: var(--hce-status);\n color: white;\n font-size: 10px;\n font-weight: 700;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n }\n\n .hexclave-config-error-overlay .hce-title {\n color: var(--sdt-text);\n margin-top: 4px;\n font-size: 18px;\n font-weight: 700;\n line-height: 1.25;\n }\n\n .hexclave-config-error-overlay .hce-actions {\n display: flex;\n gap: 4px;\n }\n\n .hexclave-config-error-overlay .hce-icon-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: 1px solid var(--sdt-border);\n border-radius: 8px;\n background: var(--sdt-bg-elevated);\n color: var(--sdt-text-secondary);\n cursor: pointer;\n font: inherit;\n line-height: 1;\n vertical-align: top;\n }\n\n .hexclave-config-error-overlay .hce-icon-btn svg {\n display: block;\n flex-shrink: 0;\n }\n\n .hexclave-config-error-overlay .hce-text-btn {\n align-items: center;\n gap: 6px;\n min-height: 28px;\n padding: 0 10px;\n width: auto;\n font-size: 12px;\n line-height: 1;\n }\n\n .hexclave-config-error-overlay .hce-icon-btn:hover {\n background: var(--sdt-bg-hover);\n color: var(--sdt-text);\n }\n\n .hexclave-config-error-overlay .hce-body {\n color: var(--sdt-text-secondary);\n font-size: 14px;\n line-height: 1.5;\n }\n\n .hexclave-config-error-overlay .hce-message-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 10px;\n margin-top: 14px;\n margin-bottom: 8px;\n }\n\n .hexclave-config-error-overlay .hce-message-label {\n color: var(--sdt-text);\n font-size: 12px;\n font-weight: 650;\n }\n\n .hexclave-config-error-overlay .hce-message {\n padding: 12px;\n max-height: min(260px, max(96px, 30dvh));\n overflow: auto;\n border: 1px solid var(--sdt-border-subtle);\n border-radius: 10px;\n background: var(--sdt-bg-subtle);\n color: var(--sdt-text);\n font-family: var(--sdt-font-mono);\n font-size: 12px;\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n }\n\n .hexclave-config-error-overlay .hce-footer {\n margin-top: 10px;\n color: var(--sdt-text-tertiary);\n font-size: 12px;\n }\n\n .hexclave-config-error-overlay .hce-pill {\n position: fixed;\n right: 18px;\n bottom: 18px;\n z-index: 2147483647;\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px 8px 8px;\n --hce-status: var(--sdt-error);\n border: 1px solid color-mix(in srgb, var(--hce-status) 35%, var(--sdt-border));\n border-radius: 999px;\n background: var(--sdt-overlay-bg);\n box-shadow: var(--sdt-trigger-shadow);\n color: var(--sdt-text);\n cursor: pointer;\n font: inherit;\n backdrop-filter: blur(18px);\n }\n\n .hexclave-config-error-overlay .hce-pill-warning {\n --hce-status: var(--sdt-warning);\n }\n\n .hexclave-config-error-overlay .hce-pill-logo {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border-radius: 999px;\n background: var(--hce-status);\n color: white;\n }\n\n @media (max-height: 520px) {\n .hexclave-config-error-overlay .hce-backdrop {\n align-items: flex-start;\n padding: 12px;\n }\n\n .hexclave-config-error-overlay .hce-card {\n width: min(720px, calc(100vw - 24px));\n max-height: calc(100dvh - 24px);\n }\n\n .hexclave-config-error-overlay .hce-card-inner {\n padding: 12px;\n }\n\n .hexclave-config-error-overlay .hce-header {\n margin-bottom: 8px;\n }\n\n .hexclave-config-error-overlay .hce-title {\n font-size: 16px;\n }\n\n .hexclave-config-error-overlay .hce-body {\n font-size: 13px;\n }\n\n .hexclave-config-error-overlay .hce-message {\n max-height: max(80px, 24dvh);\n }\n }\n`;\n\nfunction storageGet(key: string): string | null {\n try {\n return localStorage.getItem(key);\n } catch {\n return null;\n }\n}\n\nfunction storageSet(key: string, value: string): void {\n try {\n localStorage.setItem(key, value);\n } catch {\n // Storage may be unavailable in private or embedded contexts.\n }\n}\n\nfunction storageRemove(key: string): void {\n try {\n localStorage.removeItem(key);\n } catch {\n // Storage may be unavailable in private or embedded contexts.\n }\n}\n\nfunction shouldMount(): boolean {\n if (!canMountIntoDom()) {\n return false;\n }\n\n const nodeEnv = envVars.NODE_ENV;\n if (nodeEnv !== undefined) {\n return nodeEnv === \"development\";\n }\n\n try {\n const url = new URL(window.location.href);\n if (url.protocol === \"file:\") {\n return true;\n }\n } catch {\n return false;\n }\n return isLocalhost(window.location.href);\n}\n\nasync function copyTextToClipboard(text: string): Promise<void> {\n const clipboard: unknown = Reflect.get(navigator, \"clipboard\");\n const writeText = clipboard != null && typeof clipboard === \"object\"\n ? Reflect.get(clipboard, \"writeText\")\n : null;\n if (typeof writeText === \"function\") {\n await writeText.call(clipboard, text);\n return;\n }\n\n const textarea = h(\"textarea\", {\n style: {\n position: \"fixed\",\n left: \"-9999px\",\n top: \"0\",\n opacity: \"0\",\n },\n readonly: \"true\",\n }) as HTMLTextAreaElement;\n textarea.value = text;\n document.body.appendChild(textarea);\n textarea.select();\n const copied = document.execCommand(\"copy\");\n textarea.remove();\n if (!copied) {\n throw new Error(\"Browser refused to copy the config error message.\");\n }\n}\n\nfunction buildConfigIssueAiPrompt(issue: ConfigIssue): string {\n const issueLabel = issue.kind === \"error\" ? \"error\" : \"warning\";\n return [\n `Help me fix this Hexclave config ${issueLabel}.`,\n \"\",\n \"Hexclave reminder:\",\n `This ${issueLabel} comes from a pushed Hexclave config file. The app may keep running with the synced Hexclave config, but I need to fix the config file mentioned in the message and save it again so Hexclave can sync the config successfully and clear the dialog. Use your web fetch tool to read https://skill.hexclave.com to learn more about Hexclave.`,\n \"\",\n issue.kind === \"error\" ? \"Error message:\" : \"Warning message:\",\n issue.messages.join(\"\\n\"),\n \"\",\n \"Please explain the likely cause, identify the config key or value I should change, and suggest the smallest safe fix.\",\n ].join(\"\\n\");\n}\n\nexport function mountPushedConfigErrorOverlay(app: StackClientApp<true>): () => void {\n if (!shouldMount()) {\n return () => {};\n }\n\n getGlobalUiInstance(GLOBAL_INSTANCE_KEY)?.cleanup();\n\n const root = h(\"div\", { className: \"hexclave-config-error-overlay\" });\n const style = h(\"style\", null, css);\n root.appendChild(style);\n document.body.appendChild(root);\n\n let disposed = false;\n let lastErrorKey: string | null = null;\n let lastConsoleErrorKey: string | null = null;\n let minimized = false;\n\n const render = (issue: ConfigIssue | null) => {\n root.replaceChildren(style);\n if (issue == null) {\n lastErrorKey = null;\n minimized = false;\n return;\n }\n\n const issueMessage = issue.messages.join(\"\\n\");\n const issueKey = `${app.projectId}:${issue.kind}:${issueMessage}`;\n const issueLabel = issue.kind === \"error\" ? \"error\" : \"warning\";\n const issueTitle = issue.kind === \"error\"\n ? \"Your Hexclave config has been saved, but contains errors\"\n : \"Your Hexclave config has been saved, but has warnings\";\n const bodyText = issue.kind === \"error\"\n ? \"Your app can keep running, but Hexclave is still using the last valid config until this is fixed.\"\n : \"Your app can keep running, but part of your Hexclave config may not behave the way you expect until this is fixed.\";\n const footerText = issue.kind === \"error\"\n ? \"Fix the config file mentioned above and save it again. This message will disappear after the config sync succeeds.\"\n : \"Fix the config file mentioned above and save it again. This warning will disappear after Hexclave syncs a config without warnings.\";\n if (issueKey !== lastConsoleErrorKey) {\n lastConsoleErrorKey = issueKey;\n const consoleMessage = `[Hexclave] Config ${issueLabel}: ${issueMessage}`;\n if (issue.kind === \"error\") {\n console.error(consoleMessage);\n } else {\n console.warn(consoleMessage);\n }\n }\n\n if (issueKey !== lastErrorKey) {\n lastErrorKey = issueKey;\n minimized = storageGet(MINIMIZED_STORAGE_KEY) === issueKey;\n }\n\n if (minimized) {\n const logoSpan = h(\"span\", { className: \"hce-pill-logo\" });\n setHtml(logoSpan, HEXCLAVE_LOGO_SVG);\n root.appendChild(h(\"button\", {\n className: issue.kind === \"error\" ? \"hce-pill\" : \"hce-pill hce-pill-warning\",\n type: \"button\",\n onClick: () => {\n minimized = false;\n storageRemove(MINIMIZED_STORAGE_KEY);\n render(issue);\n },\n },\n logoSpan,\n h(\"span\", null, issue.kind === \"error\" ? \"Config error\" : \"Config warning\")));\n return;\n }\n\n const logoSpan = h(\"span\", { className: \"hce-logo\" });\n setHtml(logoSpan, HEXCLAVE_LOGO_SVG);\n const copyButton = h(\"button\", {\n className: \"hce-icon-btn hce-text-btn\",\n type: \"button\",\n title: issue.kind === \"error\" ? \"Copy error message\" : \"Copy warning message\",\n \"aria-label\": issue.kind === \"error\" ? \"Copy config error message\" : \"Copy config warning message\",\n onClick: () => {\n runAsynchronously(async () => {\n await copyTextToClipboard(issueMessage);\n copyButton.textContent = \"Copied\";\n setTimeout(() => {\n setHtml(copyButton, `${COPY_ICON_SVG}Copy`);\n }, 1500);\n }, {\n noErrorLogging: true,\n onError: (copyError) => {\n captureError(\"pushed-config-error-overlay-copy\", copyError);\n copyButton.textContent = \"Copy failed\";\n setTimeout(() => {\n setHtml(copyButton, `${COPY_ICON_SVG}Copy`);\n }, 1500);\n },\n });\n },\n });\n setHtml(copyButton, `${COPY_ICON_SVG}Copy`);\n\n const aiPromptCopyButton = h(\"button\", {\n className: \"hce-icon-btn\",\n type: \"button\",\n title: \"Copy AI prompt\",\n \"aria-label\": issue.kind === \"error\" ? \"Copy AI prompt for config error\" : \"Copy AI prompt for config warning\",\n onClick: () => {\n runAsynchronously(async () => {\n await copyTextToClipboard(buildConfigIssueAiPrompt(issue));\n aiPromptCopyButton.textContent = \"✓\";\n setTimeout(() => {\n setHtml(aiPromptCopyButton, COPY_ICON_SVG);\n }, 1500);\n }, {\n noErrorLogging: true,\n onError: (copyError) => {\n captureError(\"pushed-config-error-overlay-copy-ai-prompt\", copyError);\n aiPromptCopyButton.textContent = \"!\";\n setTimeout(() => {\n setHtml(aiPromptCopyButton, COPY_ICON_SVG);\n }, 1500);\n },\n });\n },\n });\n setHtml(aiPromptCopyButton, COPY_ICON_SVG);\n\n root.appendChild(h(\"div\", { className: \"hce-backdrop\" },\n h(\"div\", { className: issue.kind === \"error\" ? \"hce-card\" : \"hce-card hce-card-warning\", role: \"alertdialog\", \"aria-modal\": \"true\", \"aria-label\": `Hexclave config ${issueLabel}` },\n h(\"div\", { className: \"hce-card-inner\" },\n h(\"div\", { className: \"hce-header\" },\n h(\"div\", { className: \"hce-title-row\" },\n logoSpan,\n h(\"div\", null,\n h(\"span\", { className: \"hce-badge\" }, `Config ${issueLabel}`),\n h(\"div\", { className: \"hce-title\" }, issueTitle),\n ),\n ),\n h(\"div\", { className: \"hce-actions\" },\n aiPromptCopyButton,\n h(\"button\", {\n className: \"hce-icon-btn\",\n type: \"button\",\n title: \"Minimize\",\n \"aria-label\": issue.kind === \"error\" ? \"Minimize config error\" : \"Minimize config warning\",\n onClick: () => {\n minimized = true;\n storageSet(MINIMIZED_STORAGE_KEY, issueKey);\n render(issue);\n },\n }, \"–\"),\n ),\n ),\n h(\"div\", { className: \"hce-body\" },\n bodyText,\n h(\"div\", { className: \"hce-message-header\" },\n h(\"div\", { className: \"hce-message-label\" }, issue.kind === \"error\" ? \"Error message\" : \"Warning message\"),\n copyButton,\n ),\n h(\"div\", { className: \"hce-message\" }, issueMessage),\n h(\"div\", { className: \"hce-footer\" }, footerText),\n ),\n ),\n )));\n };\n\n const refresh = () => {\n if (disposed || !canMountIntoDom()) {\n return;\n }\n runAsynchronously(async () => {\n const project = await app.getProject();\n if (disposed) {\n return;\n }\n render(project.pushedConfigError == null\n ? project.configWarnings.length === 0\n ? null\n : { kind: \"warning\", messages: project.configWarnings.map((warning) => warning.message) }\n : { kind: \"error\", messages: [project.pushedConfigError.message] });\n }, {\n noErrorLogging: true,\n onError: (error) => {\n captureError(\"pushed-config-error-overlay-refresh\", error);\n },\n });\n };\n\n // This is mounted from the base client-app constructor, which also runs\n // before subclass field initializers. Defer the first app call so overridden\n // methods like adminApp.getProject() can safely touch subclass caches.\n queueMicrotask(refresh);\n const interval = setInterval(refresh, REFRESH_INTERVAL_MS);\n\n const cleanup = () => {\n disposed = true;\n clearInterval(interval);\n root.remove();\n if (getGlobalUiInstance(GLOBAL_INSTANCE_KEY)?.cleanup === cleanup) {\n setGlobalUiInstance(GLOBAL_INSTANCE_KEY, null);\n }\n };\n setGlobalUiInstance(GLOBAL_INSTANCE_KEY, { cleanup });\n return cleanup;\n}\n\n"],"mappings":"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"}
@@ -2,7 +2,6 @@ import { envVars } from "../generated/env.js";
2
2
  import { afterEach, describe, expect, it, vi } from "vitest";
3
3
  import { StackClientApp } from "../lib/hexclave-app/index.js";
4
4
  import { mountPushedConfigErrorOverlay } from "./index.js";
5
-
6
5
  //#region src/pushed-config-error-overlay/index.test.ts
7
6
  function createMockElement() {
8
7
  return {
@@ -61,7 +60,7 @@ describe("pushed config error overlay", () => {
61
60
  }
62
61
  });
63
62
  });
64
-
65
63
  //#endregion
66
- export { };
64
+ export {};
65
+
67
66
  //# sourceMappingURL=index.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","names":[],"sources":["../../../src/pushed-config-error-overlay/index.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 { afterEach, describe, expect, it, vi } from \"vitest\";\nimport { envVars } from \"../generated/env\";\nimport { StackClientApp } from \"../lib/hexclave-app\";\nimport { mountPushedConfigErrorOverlay } from \".\";\n\nfunction createMockElement() {\n return {\n style: {},\n appendChild: () => {},\n addEventListener: () => {},\n setAttribute: () => {},\n replaceChildren: () => {},\n remove: () => {},\n };\n}\n\ndescribe(\"pushed config error overlay\", () => {\n afterEach(() => {\n vi.unstubAllEnvs();\n vi.unstubAllGlobals();\n });\n\n it(\"defers the first project refresh until after construction-time callers finish\", async () => {\n const app = new StackClientApp({\n baseUrl: \"http://localhost:12345\",\n projectId: \"00000000-0000-4000-8000-000000000000\",\n publishableClientKey: \"stack-pk-test\",\n tokenStore: \"memory\",\n redirectMethod: \"none\",\n devTool: false,\n });\n const getProject = vi.fn(async () => ({\n pushedConfigError: null,\n configWarnings: [],\n }));\n Reflect.set(app, \"getProject\", getProject);\n const appendChild = vi.fn();\n vi.stubEnv(\"NODE_ENV\", \"development\");\n expect(Reflect.get(envVars, \"NODE_ENV\")).toBe(\"development\");\n\n vi.stubGlobal(\"window\", {\n \"__hexclave-pushed-config-error-overlay\": null,\n location: {\n href: \"http://localhost:3000\",\n },\n });\n vi.stubGlobal(\"document\", {\n body: {\n appendChild,\n },\n createElement: () => createMockElement(),\n createTextNode: () => createMockElement(),\n });\n vi.stubGlobal(\"localStorage\", {\n getItem: () => null,\n setItem: () => {},\n removeItem: () => {},\n });\n\n const cleanup = mountPushedConfigErrorOverlay(app);\n try {\n expect(appendChild).toHaveBeenCalledOnce();\n expect(getProject).not.toHaveBeenCalled();\n\n await Promise.resolve();\n\n expect(getProject).toHaveBeenCalledOnce();\n } finally {\n cleanup();\n }\n });\n});\n"],"mappings":";;;;;;AASA,SAAS,oBAAoB;AAC3B,QAAO;EACL,OAAO,EAAE;EACT,mBAAmB;EACnB,wBAAwB;EACxB,oBAAoB;EACpB,uBAAuB;EACvB,cAAc;EACf;;AAGH,SAAS,qCAAqC;AAC5C,iBAAgB;AACd,KAAG,eAAe;AAClB,KAAG,kBAAkB;GACrB;AAEF,IAAG,iFAAiF,YAAY;EAC9F,MAAM,MAAM,IAAI,eAAe;GAC7B,SAAS;GACT,WAAW;GACX,sBAAsB;GACtB,YAAY;GACZ,gBAAgB;GAChB,SAAS;GACV,CAAC;EACF,MAAM,aAAa,GAAG,GAAG,aAAa;GACpC,mBAAmB;GACnB,gBAAgB,EAAE;GACnB,EAAE;AACH,UAAQ,IAAI,KAAK,cAAc,WAAW;EAC1C,MAAM,cAAc,GAAG,IAAI;AAC3B,KAAG,QAAQ,YAAY,cAAc;AACrC,SAAO,QAAQ,IAAI,SAAS,WAAW,CAAC,CAAC,KAAK,cAAc;AAE5D,KAAG,WAAW,UAAU;GACtB,0CAA0C;GAC1C,UAAU,EACR,MAAM,yBACP;GACF,CAAC;AACF,KAAG,WAAW,YAAY;GACxB,MAAM,EACJ,aACD;GACD,qBAAqB,mBAAmB;GACxC,sBAAsB,mBAAmB;GAC1C,CAAC;AACF,KAAG,WAAW,gBAAgB;GAC5B,eAAe;GACf,eAAe;GACf,kBAAkB;GACnB,CAAC;EAEF,MAAM,UAAU,8BAA8B,IAAI;AAClD,MAAI;AACF,UAAO,YAAY,CAAC,sBAAsB;AAC1C,UAAO,WAAW,CAAC,IAAI,kBAAkB;AAEzC,SAAM,QAAQ,SAAS;AAEvB,UAAO,WAAW,CAAC,sBAAsB;YACjC;AACR,YAAS;;GAEX;EACF"}
1
+ {"version":3,"file":"index.test.js","names":[],"sources":["../../../src/pushed-config-error-overlay/index.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 { afterEach, describe, expect, it, vi } from \"vitest\";\nimport { envVars } from \"../generated/env\";\nimport { StackClientApp } from \"../lib/hexclave-app\";\nimport { mountPushedConfigErrorOverlay } from \".\";\n\nfunction createMockElement() {\n return {\n style: {},\n appendChild: () => {},\n addEventListener: () => {},\n setAttribute: () => {},\n replaceChildren: () => {},\n remove: () => {},\n };\n}\n\ndescribe(\"pushed config error overlay\", () => {\n afterEach(() => {\n vi.unstubAllEnvs();\n vi.unstubAllGlobals();\n });\n\n it(\"defers the first project refresh until after construction-time callers finish\", async () => {\n const app = new StackClientApp({\n baseUrl: \"http://localhost:12345\",\n projectId: \"00000000-0000-4000-8000-000000000000\",\n publishableClientKey: \"stack-pk-test\",\n tokenStore: \"memory\",\n redirectMethod: \"none\",\n devTool: false,\n });\n const getProject = vi.fn(async () => ({\n pushedConfigError: null,\n configWarnings: [],\n }));\n Reflect.set(app, \"getProject\", getProject);\n const appendChild = vi.fn();\n vi.stubEnv(\"NODE_ENV\", \"development\");\n expect(Reflect.get(envVars, \"NODE_ENV\")).toBe(\"development\");\n\n vi.stubGlobal(\"window\", {\n \"__hexclave-pushed-config-error-overlay\": null,\n location: {\n href: \"http://localhost:3000\",\n },\n });\n vi.stubGlobal(\"document\", {\n body: {\n appendChild,\n },\n createElement: () => createMockElement(),\n createTextNode: () => createMockElement(),\n });\n vi.stubGlobal(\"localStorage\", {\n getItem: () => null,\n setItem: () => {},\n removeItem: () => {},\n });\n\n const cleanup = mountPushedConfigErrorOverlay(app);\n try {\n expect(appendChild).toHaveBeenCalledOnce();\n expect(getProject).not.toHaveBeenCalled();\n\n await Promise.resolve();\n\n expect(getProject).toHaveBeenCalledOnce();\n } finally {\n cleanup();\n }\n });\n});\n"],"mappings":";;;;;AASA,SAAS,oBAAoB;CAC3B,OAAO;EACL,OAAO,CAAC;EACR,mBAAmB,CAAC;EACpB,wBAAwB,CAAC;EACzB,oBAAoB,CAAC;EACrB,uBAAuB,CAAC;EACxB,cAAc,CAAC;CACjB;AACF;AAEA,SAAS,qCAAqC;CAC5C,gBAAgB;EACd,GAAG,cAAc;EACjB,GAAG,iBAAiB;CACtB,CAAC;CAED,GAAG,iFAAiF,YAAY;EAC9F,MAAM,MAAM,IAAI,eAAe;GAC7B,SAAS;GACT,WAAW;GACX,sBAAsB;GACtB,YAAY;GACZ,gBAAgB;GAChB,SAAS;EACX,CAAC;EACD,MAAM,aAAa,GAAG,GAAG,aAAa;GACpC,mBAAmB;GACnB,gBAAgB,CAAC;EACnB,EAAE;EACF,QAAQ,IAAI,KAAK,cAAc,UAAU;EACzC,MAAM,cAAc,GAAG,GAAG;EAC1B,GAAG,QAAQ,YAAY,aAAa;EACpC,OAAO,QAAQ,IAAI,SAAS,UAAU,CAAC,CAAC,CAAC,KAAK,aAAa;EAE3D,GAAG,WAAW,UAAU;GACtB,0CAA0C;GAC1C,UAAU,EACR,MAAM,wBACR;EACF,CAAC;EACD,GAAG,WAAW,YAAY;GACxB,MAAM,EACJ,YACF;GACA,qBAAqB,kBAAkB;GACvC,sBAAsB,kBAAkB;EAC1C,CAAC;EACD,GAAG,WAAW,gBAAgB;GAC5B,eAAe;GACf,eAAe,CAAC;GAChB,kBAAkB,CAAC;EACrB,CAAC;EAED,MAAM,UAAU,8BAA8B,GAAG;EACjD,IAAI;GACF,OAAO,WAAW,CAAC,CAAC,qBAAqB;GACzC,OAAO,UAAU,CAAC,CAAC,IAAI,iBAAiB;GAExC,MAAM,QAAQ,QAAQ;GAEtB,OAAO,UAAU,CAAC,CAAC,qBAAqB;EAC1C,UAAU;GACR,QAAQ;EACV;CACF,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"url.d.ts","names":[],"sources":["../../../src/utils/url.ts"],"mappings":";iBAOgB,oBAAA,CAAqB,WAAA,EAAa,GAAA,uBAA0B,eAAA"}
1
+ {"version":3,"file":"url.d.ts","names":[],"sources":["../../../src/utils/url.ts"],"mappings":";iBAOgB,oBAAA,CAAqB,WAAA,EAAa,GAAG,uBAAuB,eAAA"}
@@ -1,5 +1,4 @@
1
1
  import { HexclaveAssertionError } from "@hexclave/shared/dist/utils/errors";
2
-
3
2
  //#region src/utils/url.ts
4
3
  function constructRedirectUrl(redirectUrl, callbackUrlName) {
5
4
  if (typeof window === "undefined" || !window.location) throw new HexclaveAssertionError(`${callbackUrlName} option is required in a non-browser environment.`, { redirectUrl });
@@ -10,7 +9,7 @@ function constructRedirectUrl(redirectUrl, callbackUrlName) {
10
9
  url.hash = "";
11
10
  return url.toString();
12
11
  }
13
-
14
12
  //#endregion
15
13
  export { constructRedirectUrl };
14
+
16
15
  //# sourceMappingURL=url.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"url.js","names":[],"sources":["../../../src/utils/url.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 { HexclaveAssertionError } from \"@hexclave/shared/dist/utils/errors\";\n\n\nexport function constructRedirectUrl(redirectUrl: URL | string | undefined, callbackUrlName: string) {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (typeof window === 'undefined' || !window.location) {\n throw new HexclaveAssertionError(`${callbackUrlName} option is required in a non-browser environment.`, { redirectUrl });\n }\n\n const retainedQueryParams = [\"after_auth_return_to\"];\n const currentUrl = new URL(window.location.href);\n const url = redirectUrl ? new URL(redirectUrl, window.location.href) : new URL(window.location.href);\n for (const param of retainedQueryParams) {\n if (currentUrl.searchParams.has(param)) {\n url.searchParams.set(param, currentUrl.searchParams.get(param)!);\n }\n }\n url.hash = \"\";\n return url.toString();\n}\n"],"mappings":";;;AAOA,SAAgB,qBAAqB,aAAuC,iBAAyB;AAEnG,KAAI,OAAO,WAAW,eAAe,CAAC,OAAO,SAC3C,OAAM,IAAI,uBAAuB,GAAG,gBAAgB,oDAAoD,EAAE,aAAa,CAAC;CAG1H,MAAM,sBAAsB,CAAC,uBAAuB;CACpD,MAAM,aAAa,IAAI,IAAI,OAAO,SAAS,KAAK;CAChD,MAAM,MAAM,cAAc,IAAI,IAAI,aAAa,OAAO,SAAS,KAAK,GAAG,IAAI,IAAI,OAAO,SAAS,KAAK;AACpG,MAAK,MAAM,SAAS,oBAClB,KAAI,WAAW,aAAa,IAAI,MAAM,CACpC,KAAI,aAAa,IAAI,OAAO,WAAW,aAAa,IAAI,MAAM,CAAE;AAGpE,KAAI,OAAO;AACX,QAAO,IAAI,UAAU"}
1
+ {"version":3,"file":"url.js","names":[],"sources":["../../../src/utils/url.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 { HexclaveAssertionError } from \"@hexclave/shared/dist/utils/errors\";\n\n\nexport function constructRedirectUrl(redirectUrl: URL | string | undefined, callbackUrlName: string) {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (typeof window === 'undefined' || !window.location) {\n throw new HexclaveAssertionError(`${callbackUrlName} option is required in a non-browser environment.`, { redirectUrl });\n }\n\n const retainedQueryParams = [\"after_auth_return_to\"];\n const currentUrl = new URL(window.location.href);\n const url = redirectUrl ? new URL(redirectUrl, window.location.href) : new URL(window.location.href);\n for (const param of retainedQueryParams) {\n if (currentUrl.searchParams.has(param)) {\n url.searchParams.set(param, currentUrl.searchParams.get(param)!);\n }\n }\n url.hash = \"\";\n return url.toString();\n}\n"],"mappings":";;AAOA,SAAgB,qBAAqB,aAAuC,iBAAyB;CAEnG,IAAI,OAAO,WAAW,eAAe,CAAC,OAAO,UAC3C,MAAM,IAAI,uBAAuB,GAAG,gBAAgB,oDAAoD,EAAE,YAAY,CAAC;CAGzH,MAAM,sBAAsB,CAAC,sBAAsB;CACnD,MAAM,aAAa,IAAI,IAAI,OAAO,SAAS,IAAI;CAC/C,MAAM,MAAM,cAAc,IAAI,IAAI,aAAa,OAAO,SAAS,IAAI,IAAI,IAAI,IAAI,OAAO,SAAS,IAAI;CACnG,KAAK,MAAM,SAAS,qBAClB,IAAI,WAAW,aAAa,IAAI,KAAK,GACnC,IAAI,aAAa,IAAI,OAAO,WAAW,aAAa,IAAI,KAAK,CAAE;CAGnE,IAAI,OAAO;CACX,OAAO,IAAI,SAAS;AACtB"}
@@ -1,5 +1,4 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
-
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
2
  //#region src/generated/env.ts
4
3
  const envVars = {
5
4
  get HEXCLAVE_PORT_PREFIX() {
@@ -63,7 +62,7 @@ const envVars = {
63
62
  return (typeof process !== "undefined" ? process.env.NODE_ENV : void 0) || {}.env?.NODE_ENV || void 0;
64
63
  }
65
64
  };
66
-
67
65
  //#endregion
68
66
  exports.envVars = envVars;
67
+
69
68
  //# sourceMappingURL=env.js.map
@@ -1 +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) || 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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"}
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) || 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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"}
@@ -1 +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
+ {"version":3,"file":"global.d.ts","names":["global","ImportMeta","env","Record"],"sources":["../src/global.d.ts"],"mappings":";QAMQA,MAAAA;EAAAA;EAAAA,UAEIC,UAAAA;IAAAA,SACCC,GAAAA,GAAM,MAAM;EAAA;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"base-styles.d.ts","names":[],"sources":["../../src/in-page-ui/base-styles.ts"],"mappings":";iBAUgB,kBAAA,CAAmB,aAAA"}
1
+ {"version":3,"file":"base-styles.d.ts","names":[],"sources":["../../src/in-page-ui/base-styles.ts"],"mappings":";iBAUgB,kBAAA,CAAmB,aAAqB"}
@@ -1,5 +1,4 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
-
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
2
  //#region src/in-page-ui/base-styles.ts
4
3
  function getInPageUiBaseCSS(scopeSelector) {
5
4
  return `
@@ -162,7 +161,7 @@ function getInPageUiBaseCSS(scopeSelector) {
162
161
  }
163
162
  `;
164
163
  }
165
-
166
164
  //#endregion
167
165
  exports.getInPageUiBaseCSS = getInPageUiBaseCSS;
166
+
168
167
  //# sourceMappingURL=base-styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-styles.js","names":[],"sources":["../../src/in-page-ui/base-styles.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//===========================================\n// Shared design tokens + base reset for Hexclave's in-page UIs (the dev tool\n// and the standalone clickmap overlay). Each feature passes its own scope\n// selector so the two stylesheets never collide, while the tokens stay defined\n// in exactly one place. This module deliberately lives outside both feature\n// folders so either feature can be removed without affecting the other.\n\nexport function getInPageUiBaseCSS(scopeSelector: string): string {\n return `\n ${scopeSelector} {\n --sdt-bg: #0a0a0b;\n --sdt-bg-elevated: #141416;\n --sdt-bg-hover: #1c1c1f;\n --sdt-bg-active: #232326;\n --sdt-bg-subtle: #111113;\n --sdt-border: #2a2a2e;\n --sdt-border-subtle: #1e1e22;\n --sdt-text: #ececef;\n --sdt-text-secondary: #8b8b93;\n --sdt-text-tertiary: #5c5c66;\n --sdt-accent: #6366f1;\n --sdt-accent-hover: #818cf8;\n --sdt-accent-muted: rgba(99, 102, 241, 0.15);\n --sdt-success: #22c55e;\n --sdt-success-muted: rgba(34, 197, 94, 0.15);\n --sdt-warning: #eab308;\n --sdt-warning-muted: rgba(234, 179, 8, 0.15);\n --sdt-error: #ef4444;\n --sdt-error-muted: rgba(239, 68, 68, 0.15);\n --sdt-info: #3b82f6;\n --sdt-info-muted: rgba(59, 130, 246, 0.15);\n --sdt-overlay-bg: rgba(17, 17, 19, 0.92);\n --sdt-radius: 8px;\n --sdt-radius-sm: 4px;\n --sdt-radius-lg: 12px;\n --sdt-font: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n --sdt-font-mono: 'SF Mono', SFMono-Regular, ui-monospace, 'DejaVu Sans Mono', Menlo, Consolas, monospace;\n --sdt-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.05);\n --sdt-trigger-shadow: 0 4px 12px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(255, 255, 255, 0.08);\n\n all: initial;\n font-family: var(--sdt-font);\n color: var(--sdt-text);\n font-size: 13px;\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n box-sizing: border-box;\n }\n\n ${scopeSelector} *, ${scopeSelector} *::before, ${scopeSelector} *::after {\n box-sizing: border-box;\n }\n\n /* Thin, unobtrusive scrollbars for every scroll container */\n ${scopeSelector} * {\n scrollbar-width: thin;\n scrollbar-color: var(--sdt-border) transparent;\n }\n\n ${scopeSelector} *::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n\n ${scopeSelector} *::-webkit-scrollbar-track {\n background: transparent;\n }\n\n ${scopeSelector} *::-webkit-scrollbar-thumb {\n background: var(--sdt-border);\n border-radius: 3px;\n }\n\n ${scopeSelector} *::-webkit-scrollbar-thumb:hover {\n background: var(--sdt-text-tertiary);\n }\n\n ${scopeSelector} *::-webkit-scrollbar-corner {\n background: transparent;\n }\n\n /* --- Light theme: system preference fallback --- */\n @media (prefers-color-scheme: light) {\n ${scopeSelector} {\n --sdt-bg: #ffffff;\n --sdt-bg-elevated: #f8f8fa;\n --sdt-bg-hover: #f0f0f3;\n --sdt-bg-active: #e8e8ec;\n --sdt-bg-subtle: #fafafa;\n --sdt-border: #e0e0e5;\n --sdt-border-subtle: #eaeaef;\n --sdt-text: #111113;\n --sdt-text-secondary: #6b6b73;\n --sdt-text-tertiary: #9b9ba3;\n --sdt-accent: #6366f1;\n --sdt-accent-hover: #4f46e5;\n --sdt-accent-muted: rgba(99, 102, 241, 0.1);\n --sdt-success: #16a34a;\n --sdt-success-muted: rgba(22, 163, 74, 0.1);\n --sdt-warning: #ca8a04;\n --sdt-warning-muted: rgba(202, 138, 4, 0.1);\n --sdt-error: #dc2626;\n --sdt-error-muted: rgba(220, 38, 38, 0.1);\n --sdt-info: #2563eb;\n --sdt-info-muted: rgba(37, 99, 235, 0.1);\n --sdt-overlay-bg: rgba(255, 255, 255, 0.92);\n --sdt-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.12), 0 0 0 1px rgba(0, 0, 0, 0.06);\n --sdt-trigger-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(0, 0, 0, 0.06);\n }\n }\n\n /* --- Stack theme explicit overrides (take priority over system preference) --- */\n html:has(head > [data-stack-theme=\"light\"]) ${scopeSelector} {\n --sdt-bg: #ffffff;\n --sdt-bg-elevated: #f8f8fa;\n --sdt-bg-hover: #f0f0f3;\n --sdt-bg-active: #e8e8ec;\n --sdt-bg-subtle: #fafafa;\n --sdt-border: #e0e0e5;\n --sdt-border-subtle: #eaeaef;\n --sdt-text: #111113;\n --sdt-text-secondary: #6b6b73;\n --sdt-text-tertiary: #9b9ba3;\n --sdt-accent: #6366f1;\n --sdt-accent-hover: #4f46e5;\n --sdt-accent-muted: rgba(99, 102, 241, 0.1);\n --sdt-success: #16a34a;\n --sdt-success-muted: rgba(22, 163, 74, 0.1);\n --sdt-warning: #ca8a04;\n --sdt-warning-muted: rgba(202, 138, 4, 0.1);\n --sdt-error: #dc2626;\n --sdt-error-muted: rgba(220, 38, 38, 0.1);\n --sdt-info: #2563eb;\n --sdt-info-muted: rgba(37, 99, 235, 0.1);\n --sdt-overlay-bg: rgba(255, 255, 255, 0.92);\n --sdt-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.12), 0 0 0 1px rgba(0, 0, 0, 0.06);\n --sdt-trigger-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(0, 0, 0, 0.06);\n }\n\n html:has(head > [data-stack-theme=\"dark\"]) ${scopeSelector} {\n --sdt-bg: #0a0a0b;\n --sdt-bg-elevated: #141416;\n --sdt-bg-hover: #1c1c1f;\n --sdt-bg-active: #232326;\n --sdt-bg-subtle: #111113;\n --sdt-border: #2a2a2e;\n --sdt-border-subtle: #1e1e22;\n --sdt-text: #ececef;\n --sdt-text-secondary: #8b8b93;\n --sdt-text-tertiary: #5c5c66;\n --sdt-accent: #6366f1;\n --sdt-accent-hover: #818cf8;\n --sdt-accent-muted: rgba(99, 102, 241, 0.15);\n --sdt-success: #22c55e;\n --sdt-success-muted: rgba(34, 197, 94, 0.15);\n --sdt-warning: #eab308;\n --sdt-warning-muted: rgba(234, 179, 8, 0.15);\n --sdt-error: #ef4444;\n --sdt-error-muted: rgba(239, 68, 68, 0.15);\n --sdt-info: #3b82f6;\n --sdt-info-muted: rgba(59, 130, 246, 0.15);\n --sdt-overlay-bg: rgba(17, 17, 19, 0.92);\n --sdt-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.05);\n --sdt-trigger-shadow: 0 4px 12px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(255, 255, 255, 0.08);\n }\n`;\n}\n"],"mappings":";;;AAUA,SAAgB,mBAAmB,eAA+B;AAChE,QAAO;IACL,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAyCd,cAAc,MAAM,cAAc,cAAc,cAAc;;;;;IAK9D,cAAc;;;;;IAKd,cAAc;;;;;IAKd,cAAc;;;;IAId,cAAc;;;;;IAKd,cAAc;;;;IAId,cAAc;;;;;;MAMZ,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gDA6B4B,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;+CA2Bf,cAAc"}
1
+ {"version":3,"file":"base-styles.js","names":[],"sources":["../../src/in-page-ui/base-styles.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//===========================================\n// Shared design tokens + base reset for Hexclave's in-page UIs (the dev tool\n// and the standalone clickmap overlay). Each feature passes its own scope\n// selector so the two stylesheets never collide, while the tokens stay defined\n// in exactly one place. This module deliberately lives outside both feature\n// folders so either feature can be removed without affecting the other.\n\nexport function getInPageUiBaseCSS(scopeSelector: string): string {\n return `\n ${scopeSelector} {\n --sdt-bg: #0a0a0b;\n --sdt-bg-elevated: #141416;\n --sdt-bg-hover: #1c1c1f;\n --sdt-bg-active: #232326;\n --sdt-bg-subtle: #111113;\n --sdt-border: #2a2a2e;\n --sdt-border-subtle: #1e1e22;\n --sdt-text: #ececef;\n --sdt-text-secondary: #8b8b93;\n --sdt-text-tertiary: #5c5c66;\n --sdt-accent: #6366f1;\n --sdt-accent-hover: #818cf8;\n --sdt-accent-muted: rgba(99, 102, 241, 0.15);\n --sdt-success: #22c55e;\n --sdt-success-muted: rgba(34, 197, 94, 0.15);\n --sdt-warning: #eab308;\n --sdt-warning-muted: rgba(234, 179, 8, 0.15);\n --sdt-error: #ef4444;\n --sdt-error-muted: rgba(239, 68, 68, 0.15);\n --sdt-info: #3b82f6;\n --sdt-info-muted: rgba(59, 130, 246, 0.15);\n --sdt-overlay-bg: rgba(17, 17, 19, 0.92);\n --sdt-radius: 8px;\n --sdt-radius-sm: 4px;\n --sdt-radius-lg: 12px;\n --sdt-font: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n --sdt-font-mono: 'SF Mono', SFMono-Regular, ui-monospace, 'DejaVu Sans Mono', Menlo, Consolas, monospace;\n --sdt-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.05);\n --sdt-trigger-shadow: 0 4px 12px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(255, 255, 255, 0.08);\n\n all: initial;\n font-family: var(--sdt-font);\n color: var(--sdt-text);\n font-size: 13px;\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n box-sizing: border-box;\n }\n\n ${scopeSelector} *, ${scopeSelector} *::before, ${scopeSelector} *::after {\n box-sizing: border-box;\n }\n\n /* Thin, unobtrusive scrollbars for every scroll container */\n ${scopeSelector} * {\n scrollbar-width: thin;\n scrollbar-color: var(--sdt-border) transparent;\n }\n\n ${scopeSelector} *::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n\n ${scopeSelector} *::-webkit-scrollbar-track {\n background: transparent;\n }\n\n ${scopeSelector} *::-webkit-scrollbar-thumb {\n background: var(--sdt-border);\n border-radius: 3px;\n }\n\n ${scopeSelector} *::-webkit-scrollbar-thumb:hover {\n background: var(--sdt-text-tertiary);\n }\n\n ${scopeSelector} *::-webkit-scrollbar-corner {\n background: transparent;\n }\n\n /* --- Light theme: system preference fallback --- */\n @media (prefers-color-scheme: light) {\n ${scopeSelector} {\n --sdt-bg: #ffffff;\n --sdt-bg-elevated: #f8f8fa;\n --sdt-bg-hover: #f0f0f3;\n --sdt-bg-active: #e8e8ec;\n --sdt-bg-subtle: #fafafa;\n --sdt-border: #e0e0e5;\n --sdt-border-subtle: #eaeaef;\n --sdt-text: #111113;\n --sdt-text-secondary: #6b6b73;\n --sdt-text-tertiary: #9b9ba3;\n --sdt-accent: #6366f1;\n --sdt-accent-hover: #4f46e5;\n --sdt-accent-muted: rgba(99, 102, 241, 0.1);\n --sdt-success: #16a34a;\n --sdt-success-muted: rgba(22, 163, 74, 0.1);\n --sdt-warning: #ca8a04;\n --sdt-warning-muted: rgba(202, 138, 4, 0.1);\n --sdt-error: #dc2626;\n --sdt-error-muted: rgba(220, 38, 38, 0.1);\n --sdt-info: #2563eb;\n --sdt-info-muted: rgba(37, 99, 235, 0.1);\n --sdt-overlay-bg: rgba(255, 255, 255, 0.92);\n --sdt-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.12), 0 0 0 1px rgba(0, 0, 0, 0.06);\n --sdt-trigger-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(0, 0, 0, 0.06);\n }\n }\n\n /* --- Stack theme explicit overrides (take priority over system preference) --- */\n html:has(head > [data-stack-theme=\"light\"]) ${scopeSelector} {\n --sdt-bg: #ffffff;\n --sdt-bg-elevated: #f8f8fa;\n --sdt-bg-hover: #f0f0f3;\n --sdt-bg-active: #e8e8ec;\n --sdt-bg-subtle: #fafafa;\n --sdt-border: #e0e0e5;\n --sdt-border-subtle: #eaeaef;\n --sdt-text: #111113;\n --sdt-text-secondary: #6b6b73;\n --sdt-text-tertiary: #9b9ba3;\n --sdt-accent: #6366f1;\n --sdt-accent-hover: #4f46e5;\n --sdt-accent-muted: rgba(99, 102, 241, 0.1);\n --sdt-success: #16a34a;\n --sdt-success-muted: rgba(22, 163, 74, 0.1);\n --sdt-warning: #ca8a04;\n --sdt-warning-muted: rgba(202, 138, 4, 0.1);\n --sdt-error: #dc2626;\n --sdt-error-muted: rgba(220, 38, 38, 0.1);\n --sdt-info: #2563eb;\n --sdt-info-muted: rgba(37, 99, 235, 0.1);\n --sdt-overlay-bg: rgba(255, 255, 255, 0.92);\n --sdt-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.12), 0 0 0 1px rgba(0, 0, 0, 0.06);\n --sdt-trigger-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(0, 0, 0, 0.06);\n }\n\n html:has(head > [data-stack-theme=\"dark\"]) ${scopeSelector} {\n --sdt-bg: #0a0a0b;\n --sdt-bg-elevated: #141416;\n --sdt-bg-hover: #1c1c1f;\n --sdt-bg-active: #232326;\n --sdt-bg-subtle: #111113;\n --sdt-border: #2a2a2e;\n --sdt-border-subtle: #1e1e22;\n --sdt-text: #ececef;\n --sdt-text-secondary: #8b8b93;\n --sdt-text-tertiary: #5c5c66;\n --sdt-accent: #6366f1;\n --sdt-accent-hover: #818cf8;\n --sdt-accent-muted: rgba(99, 102, 241, 0.15);\n --sdt-success: #22c55e;\n --sdt-success-muted: rgba(34, 197, 94, 0.15);\n --sdt-warning: #eab308;\n --sdt-warning-muted: rgba(234, 179, 8, 0.15);\n --sdt-error: #ef4444;\n --sdt-error-muted: rgba(239, 68, 68, 0.15);\n --sdt-info: #3b82f6;\n --sdt-info-muted: rgba(59, 130, 246, 0.15);\n --sdt-overlay-bg: rgba(17, 17, 19, 0.92);\n --sdt-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.05);\n --sdt-trigger-shadow: 0 4px 12px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(255, 255, 255, 0.08);\n }\n`;\n}\n"],"mappings":";;AAUA,SAAgB,mBAAmB,eAA+B;CAChE,OAAO;IACL,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAyCd,cAAc,MAAM,cAAc,cAAc,cAAc;;;;;IAK9D,cAAc;;;;;IAKd,cAAc;;;;;IAKd,cAAc;;;;IAId,cAAc;;;;;IAKd,cAAc;;;;IAId,cAAc;;;;;;MAMZ,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gDA6B4B,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;+CA2Bf,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2B7D"}
@@ -1 +1 @@
1
- {"version":3,"file":"dom.d.ts","names":[],"sources":["../../src/in-page-ui/dom.ts"],"mappings":";iBAQgB,CAAA,iBAAkB,qBAAA,CAAA,CAChC,GAAA,EAAK,CAAA,EACL,KAAA,GAAQ,MAAA,yBACL,QAAA,YAAoB,IAAA,yBACtB,qBAAA,CAAsB,CAAA;AAAA,iBAuBT,OAAA,CAAQ,EAAA,EAAI,WAAA,EAAa,IAAA;AAAA,iBAIzB,cAAA,CAAe,KAAA,YAAiB,KAAA;EAAW,WAAA,CAAY,IAAA,EAAM,IAAA;AAAA;AAAA,iBAI7D,eAAA,CAAA;AAAA,KAeJ,gBAAA;EACV,OAAA;AAAA;AAAA,iBAOc,mBAAA,CAAoB,GAAA,WAAc,gBAAA;AAAA,iBAMlC,mBAAA,CAAoB,GAAA,UAAa,QAAA,EAAU,gBAAA"}
1
+ {"version":3,"file":"dom.d.ts","names":[],"sources":["../../src/in-page-ui/dom.ts"],"mappings":";iBAQgB,CAAA,iBAAkB,qBAAA,EAChC,GAAA,EAAK,CAAA,EACL,KAAA,GAAQ,MAAA,yBACL,QAAA,YAAoB,IAAA,yBACtB,qBAAA,CAAsB,CAAA;AAAA,iBAuBT,OAAA,CAAQ,EAAA,EAAI,WAAW,EAAE,IAAA;AAAA,iBAIzB,cAAA,CAAe,KAAA,YAAiB,KAAA;EAAW,WAAA,CAAY,IAAA,EAAM,IAAI;AAAA;AAAA,iBAIjE,eAAA;AAAA,KAeJ,gBAAA;EACV,OAAO;AAAA;AAAA,iBAOO,mBAAA,CAAoB,GAAA,WAAc,gBAAgB;AAAA,iBAMlD,mBAAA,CAAoB,GAAA,UAAa,QAAA,EAAU,gBAAgB"}
@@ -1,5 +1,4 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
-
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
2
  //#region src/in-page-ui/dom.ts
4
3
  function h(tag, attrs, ...children) {
5
4
  const el = document.createElement(tag);
@@ -40,7 +39,6 @@ function setGlobalUiInstance(key, instance) {
40
39
  if (instance === null) Reflect.deleteProperty(window, key);
41
40
  else Reflect.set(window, key, instance);
42
41
  }
43
-
44
42
  //#endregion
45
43
  exports.canMountIntoDom = canMountIntoDom;
46
44
  exports.getGlobalUiInstance = getGlobalUiInstance;
@@ -48,4 +46,5 @@ exports.h = h;
48
46
  exports.hasAppendChild = hasAppendChild;
49
47
  exports.setGlobalUiInstance = setGlobalUiInstance;
50
48
  exports.setHtml = setHtml;
49
+
51
50
  //# sourceMappingURL=dom.js.map