@hexclave/js 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +26 -0
  3. package/dist/chunk-BE-pF4vm.js +34 -0
  4. package/dist/dev-tool/dev-tool-core.d.ts +7 -0
  5. package/dist/dev-tool/dev-tool-core.d.ts.map +1 -0
  6. package/dist/dev-tool/dev-tool-core.js +2116 -0
  7. package/dist/dev-tool/dev-tool-core.js.map +1 -0
  8. package/dist/dev-tool/dev-tool-styles.d.ts +5 -0
  9. package/dist/dev-tool/dev-tool-styles.d.ts.map +1 -0
  10. package/dist/dev-tool/dev-tool-styles.js +2757 -0
  11. package/dist/dev-tool/dev-tool-styles.js.map +1 -0
  12. package/dist/dev-tool/dev-tool-trigger-position.d.ts +36 -0
  13. package/dist/dev-tool/dev-tool-trigger-position.d.ts.map +1 -0
  14. package/dist/dev-tool/dev-tool-trigger-position.js +70 -0
  15. package/dist/dev-tool/dev-tool-trigger-position.js.map +1 -0
  16. package/dist/dev-tool/dev-tool-trigger-position.test.d.ts +1 -0
  17. package/dist/dev-tool/dev-tool-trigger-position.test.js +155 -0
  18. package/dist/dev-tool/dev-tool-trigger-position.test.js.map +1 -0
  19. package/dist/dev-tool/index.d.ts +19 -0
  20. package/dist/dev-tool/index.d.ts.map +1 -0
  21. package/dist/dev-tool/index.js +119 -0
  22. package/dist/dev-tool/index.js.map +1 -0
  23. package/dist/esm/dev-tool/dev-tool-core.d.ts +7 -0
  24. package/dist/esm/dev-tool/dev-tool-core.d.ts.map +1 -0
  25. package/dist/esm/dev-tool/dev-tool-core.js +2114 -0
  26. package/dist/esm/dev-tool/dev-tool-core.js.map +1 -0
  27. package/dist/esm/dev-tool/dev-tool-styles.d.ts +5 -0
  28. package/dist/esm/dev-tool/dev-tool-styles.d.ts.map +1 -0
  29. package/dist/esm/dev-tool/dev-tool-styles.js +2755 -0
  30. package/dist/esm/dev-tool/dev-tool-styles.js.map +1 -0
  31. package/dist/esm/dev-tool/dev-tool-trigger-position.d.ts +36 -0
  32. package/dist/esm/dev-tool/dev-tool-trigger-position.d.ts.map +1 -0
  33. package/dist/esm/dev-tool/dev-tool-trigger-position.js +65 -0
  34. package/dist/esm/dev-tool/dev-tool-trigger-position.js.map +1 -0
  35. package/dist/esm/dev-tool/dev-tool-trigger-position.test.d.ts +1 -0
  36. package/dist/esm/dev-tool/dev-tool-trigger-position.test.js +155 -0
  37. package/dist/esm/dev-tool/dev-tool-trigger-position.test.js.map +1 -0
  38. package/dist/esm/dev-tool/index.d.ts +19 -0
  39. package/dist/esm/dev-tool/index.d.ts.map +1 -0
  40. package/dist/esm/dev-tool/index.js +117 -0
  41. package/dist/esm/dev-tool/index.js.map +1 -0
  42. package/dist/esm/index.d.ts +4 -0
  43. package/dist/esm/index.js +7 -0
  44. package/dist/esm/integrations/convex/component/convex.config.d.ts +7 -0
  45. package/dist/esm/integrations/convex/component/convex.config.d.ts.map +1 -0
  46. package/dist/esm/integrations/convex/component/convex.config.js +8 -0
  47. package/dist/esm/integrations/convex/component/convex.config.js.map +1 -0
  48. package/dist/esm/integrations/convex.d.ts +13 -0
  49. package/dist/esm/integrations/convex.d.ts.map +1 -0
  50. package/dist/esm/integrations/convex.js +23 -0
  51. package/dist/esm/integrations/convex.js.map +1 -0
  52. package/dist/esm/internal/deprecation-warning.d.ts +1 -0
  53. package/dist/esm/internal/deprecation-warning.js +24 -0
  54. package/dist/esm/internal/deprecation-warning.js.map +1 -0
  55. package/dist/esm/lib/auth.d.ts +31 -0
  56. package/dist/esm/lib/auth.d.ts.map +1 -0
  57. package/dist/esm/lib/auth.js +108 -0
  58. package/dist/esm/lib/auth.js.map +1 -0
  59. package/dist/esm/lib/auth.test.d.ts +1 -0
  60. package/dist/esm/lib/auth.test.js +60 -0
  61. package/dist/esm/lib/auth.test.js.map +1 -0
  62. package/dist/esm/lib/cookie.d.ts +42 -0
  63. package/dist/esm/lib/cookie.d.ts.map +1 -0
  64. package/dist/esm/lib/cookie.js +287 -0
  65. package/dist/esm/lib/cookie.js.map +1 -0
  66. package/dist/esm/lib/env.d.ts +42 -0
  67. package/dist/esm/lib/env.d.ts.map +1 -0
  68. package/dist/esm/lib/env.js +93 -0
  69. package/dist/esm/lib/env.js.map +1 -0
  70. package/dist/esm/lib/stack-app/api-keys/index.d.ts +53 -0
  71. package/dist/esm/lib/stack-app/api-keys/index.d.ts.map +1 -0
  72. package/dist/esm/lib/stack-app/api-keys/index.js +22 -0
  73. package/dist/esm/lib/stack-app/api-keys/index.js.map +1 -0
  74. package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.d.ts +364 -0
  75. package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.d.ts.map +1 -0
  76. package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.js +924 -0
  77. package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.js.map +1 -0
  78. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.cross-domain.test.d.ts +1 -0
  79. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.cross-domain.test.js +55 -0
  80. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -0
  81. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.d.ts +542 -0
  82. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.d.ts.map +1 -0
  83. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.js +2504 -0
  84. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.js.map +1 -0
  85. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.oauth-prefetch.test.d.ts +1 -0
  86. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.oauth-prefetch.test.js +32 -0
  87. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.oauth-prefetch.test.js.map +1 -0
  88. package/dist/esm/lib/stack-app/apps/implementations/common.d.ts +65 -0
  89. package/dist/esm/lib/stack-app/apps/implementations/common.d.ts.map +1 -0
  90. package/dist/esm/lib/stack-app/apps/implementations/common.js +127 -0
  91. package/dist/esm/lib/stack-app/apps/implementations/common.js.map +1 -0
  92. package/dist/esm/lib/stack-app/apps/implementations/event-tracker.d.ts +42 -0
  93. package/dist/esm/lib/stack-app/apps/implementations/event-tracker.d.ts.map +1 -0
  94. package/dist/esm/lib/stack-app/apps/implementations/event-tracker.js +211 -0
  95. package/dist/esm/lib/stack-app/apps/implementations/event-tracker.js.map +1 -0
  96. package/dist/esm/lib/stack-app/apps/implementations/event-tracker.test.d.ts +1 -0
  97. package/dist/esm/lib/stack-app/apps/implementations/event-tracker.test.js +87 -0
  98. package/dist/esm/lib/stack-app/apps/implementations/event-tracker.test.js.map +1 -0
  99. package/dist/esm/lib/stack-app/apps/implementations/index.d.ts +9 -0
  100. package/dist/esm/lib/stack-app/apps/implementations/index.d.ts.map +1 -0
  101. package/dist/esm/lib/stack-app/apps/implementations/index.js +27 -0
  102. package/dist/esm/lib/stack-app/apps/implementations/index.js.map +1 -0
  103. package/dist/esm/lib/stack-app/apps/implementations/redirect-page-urls.d.ts +35 -0
  104. package/dist/esm/lib/stack-app/apps/implementations/redirect-page-urls.d.ts.map +1 -0
  105. package/dist/esm/lib/stack-app/apps/implementations/redirect-page-urls.js +197 -0
  106. package/dist/esm/lib/stack-app/apps/implementations/redirect-page-urls.js.map +1 -0
  107. package/dist/esm/lib/stack-app/apps/implementations/server-app-impl.d.ts +203 -0
  108. package/dist/esm/lib/stack-app/apps/implementations/server-app-impl.d.ts.map +1 -0
  109. package/dist/esm/lib/stack-app/apps/implementations/server-app-impl.js +1094 -0
  110. package/dist/esm/lib/stack-app/apps/implementations/server-app-impl.js.map +1 -0
  111. package/dist/esm/lib/stack-app/apps/implementations/session-refresh-subscription.d.ts +28 -0
  112. package/dist/esm/lib/stack-app/apps/implementations/session-refresh-subscription.d.ts.map +1 -0
  113. package/dist/esm/lib/stack-app/apps/implementations/session-refresh-subscription.js +31 -0
  114. package/dist/esm/lib/stack-app/apps/implementations/session-refresh-subscription.js.map +1 -0
  115. package/dist/esm/lib/stack-app/apps/implementations/session-refresh-subscription.test.d.ts +1 -0
  116. package/dist/esm/lib/stack-app/apps/implementations/session-refresh-subscription.test.js +82 -0
  117. package/dist/esm/lib/stack-app/apps/implementations/session-refresh-subscription.test.js.map +1 -0
  118. package/dist/esm/lib/stack-app/apps/implementations/session-replay.d.ts +111 -0
  119. package/dist/esm/lib/stack-app/apps/implementations/session-replay.d.ts.map +1 -0
  120. package/dist/esm/lib/stack-app/apps/implementations/session-replay.js +241 -0
  121. package/dist/esm/lib/stack-app/apps/implementations/session-replay.js.map +1 -0
  122. package/dist/esm/lib/stack-app/apps/implementations/session-replay.test.d.ts +1 -0
  123. package/dist/esm/lib/stack-app/apps/implementations/session-replay.test.js +29 -0
  124. package/dist/esm/lib/stack-app/apps/implementations/session-replay.test.js.map +1 -0
  125. package/dist/esm/lib/stack-app/apps/index.d.ts +4 -0
  126. package/dist/esm/lib/stack-app/apps/index.js +5 -0
  127. package/dist/esm/lib/stack-app/apps/interfaces/admin-app.d.ts +244 -0
  128. package/dist/esm/lib/stack-app/apps/interfaces/admin-app.d.ts.map +1 -0
  129. package/dist/esm/lib/stack-app/apps/interfaces/admin-app.js +9 -0
  130. package/dist/esm/lib/stack-app/apps/interfaces/admin-app.js.map +1 -0
  131. package/dist/esm/lib/stack-app/apps/interfaces/client-app.d.ts +208 -0
  132. package/dist/esm/lib/stack-app/apps/interfaces/client-app.d.ts.map +1 -0
  133. package/dist/esm/lib/stack-app/apps/interfaces/client-app.js +9 -0
  134. package/dist/esm/lib/stack-app/apps/interfaces/client-app.js.map +1 -0
  135. package/dist/esm/lib/stack-app/apps/interfaces/server-app.d.ts +116 -0
  136. package/dist/esm/lib/stack-app/apps/interfaces/server-app.d.ts.map +1 -0
  137. package/dist/esm/lib/stack-app/apps/interfaces/server-app.js +9 -0
  138. package/dist/esm/lib/stack-app/apps/interfaces/server-app.js.map +1 -0
  139. package/dist/esm/lib/stack-app/common.d.ts +174 -0
  140. package/dist/esm/lib/stack-app/common.d.ts.map +1 -0
  141. package/dist/esm/lib/stack-app/common.js +7 -0
  142. package/dist/esm/lib/stack-app/common.js.map +1 -0
  143. package/dist/esm/lib/stack-app/connected-accounts/index.d.ts +40 -0
  144. package/dist/esm/lib/stack-app/connected-accounts/index.d.ts.map +1 -0
  145. package/dist/esm/lib/stack-app/connected-accounts/index.js +1 -0
  146. package/dist/esm/lib/stack-app/contact-channels/index.d.ts +43 -0
  147. package/dist/esm/lib/stack-app/contact-channels/index.d.ts.map +1 -0
  148. package/dist/esm/lib/stack-app/contact-channels/index.js +39 -0
  149. package/dist/esm/lib/stack-app/contact-channels/index.js.map +1 -0
  150. package/dist/esm/lib/stack-app/customers/index.d.ts +129 -0
  151. package/dist/esm/lib/stack-app/customers/index.d.ts.map +1 -0
  152. package/dist/esm/lib/stack-app/customers/index.js +1 -0
  153. package/dist/esm/lib/stack-app/data-vault/index.d.ts +14 -0
  154. package/dist/esm/lib/stack-app/data-vault/index.d.ts.map +1 -0
  155. package/dist/esm/lib/stack-app/data-vault/index.js +1 -0
  156. package/dist/esm/lib/stack-app/email/index.d.ts +204 -0
  157. package/dist/esm/lib/stack-app/email/index.d.ts.map +1 -0
  158. package/dist/esm/lib/stack-app/email/index.js +1 -0
  159. package/dist/esm/lib/stack-app/email-templates/index.d.ts +17 -0
  160. package/dist/esm/lib/stack-app/email-templates/index.d.ts.map +1 -0
  161. package/dist/esm/lib/stack-app/email-templates/index.js +11 -0
  162. package/dist/esm/lib/stack-app/email-templates/index.js.map +1 -0
  163. package/dist/esm/lib/stack-app/index.d.ts +14 -0
  164. package/dist/esm/lib/stack-app/index.js +5 -0
  165. package/dist/esm/lib/stack-app/internal-api-keys/index.d.ts +42 -0
  166. package/dist/esm/lib/stack-app/internal-api-keys/index.d.ts.map +1 -0
  167. package/dist/esm/lib/stack-app/internal-api-keys/index.js +14 -0
  168. package/dist/esm/lib/stack-app/internal-api-keys/index.js.map +1 -0
  169. package/dist/esm/lib/stack-app/notification-categories/index.d.ts +11 -0
  170. package/dist/esm/lib/stack-app/notification-categories/index.d.ts.map +1 -0
  171. package/dist/esm/lib/stack-app/notification-categories/index.js +1 -0
  172. package/dist/esm/lib/stack-app/permissions/index.d.ts +43 -0
  173. package/dist/esm/lib/stack-app/permissions/index.d.ts.map +1 -0
  174. package/dist/esm/lib/stack-app/permissions/index.js +31 -0
  175. package/dist/esm/lib/stack-app/permissions/index.js.map +1 -0
  176. package/dist/esm/lib/stack-app/project-configs/index.d.ts +99 -0
  177. package/dist/esm/lib/stack-app/project-configs/index.d.ts.map +1 -0
  178. package/dist/esm/lib/stack-app/project-configs/index.js +1 -0
  179. package/dist/esm/lib/stack-app/projects/index.d.ts +145 -0
  180. package/dist/esm/lib/stack-app/projects/index.d.ts.map +1 -0
  181. package/dist/esm/lib/stack-app/projects/index.js +66 -0
  182. package/dist/esm/lib/stack-app/projects/index.js.map +1 -0
  183. package/dist/esm/lib/stack-app/session-replays/index.d.ts +66 -0
  184. package/dist/esm/lib/stack-app/session-replays/index.d.ts.map +1 -0
  185. package/dist/esm/lib/stack-app/session-replays/index.js +1 -0
  186. package/dist/esm/lib/stack-app/teams/index.d.ts +160 -0
  187. package/dist/esm/lib/stack-app/teams/index.d.ts.map +1 -0
  188. package/dist/esm/lib/stack-app/teams/index.js +35 -0
  189. package/dist/esm/lib/stack-app/teams/index.js.map +1 -0
  190. package/dist/esm/lib/stack-app/url-targets.d.ts +39 -0
  191. package/dist/esm/lib/stack-app/url-targets.d.ts.map +1 -0
  192. package/dist/esm/lib/stack-app/url-targets.js +266 -0
  193. package/dist/esm/lib/stack-app/url-targets.js.map +1 -0
  194. package/dist/esm/lib/stack-app/url-targets.test.d.ts +1 -0
  195. package/dist/esm/lib/stack-app/url-targets.test.js +213 -0
  196. package/dist/esm/lib/stack-app/url-targets.test.js.map +1 -0
  197. package/dist/esm/lib/stack-app/users/index.d.ts +357 -0
  198. package/dist/esm/lib/stack-app/users/index.d.ts.map +1 -0
  199. package/dist/esm/lib/stack-app/users/index.js +71 -0
  200. package/dist/esm/lib/stack-app/users/index.js.map +1 -0
  201. package/dist/esm/utils/url.d.ts +5 -0
  202. package/dist/esm/utils/url.d.ts.map +1 -0
  203. package/dist/esm/utils/url.js +16 -0
  204. package/dist/esm/utils/url.js.map +1 -0
  205. package/dist/index.d.ts +17 -0
  206. package/dist/index.js +31 -0
  207. package/dist/integrations/convex/component/convex.config.d.ts +61 -0
  208. package/dist/integrations/convex/component/convex.config.d.ts.map +1 -0
  209. package/dist/integrations/convex/component/convex.config.js +9 -0
  210. package/dist/integrations/convex/component/convex.config.js.map +1 -0
  211. package/dist/integrations/convex.d.ts +13 -0
  212. package/dist/integrations/convex.d.ts.map +1 -0
  213. package/dist/integrations/convex.js +25 -0
  214. package/dist/integrations/convex.js.map +1 -0
  215. package/dist/internal/deprecation-warning.d.ts +1 -0
  216. package/dist/internal/deprecation-warning.js +24 -0
  217. package/dist/internal/deprecation-warning.js.map +1 -0
  218. package/dist/lib/auth.d.ts +31 -0
  219. package/dist/lib/auth.d.ts.map +1 -0
  220. package/dist/lib/auth.js +111 -0
  221. package/dist/lib/auth.js.map +1 -0
  222. package/dist/lib/auth.test.d.ts +1 -0
  223. package/dist/lib/auth.test.js +60 -0
  224. package/dist/lib/auth.test.js.map +1 -0
  225. package/dist/lib/cookie.d.ts +42 -0
  226. package/dist/lib/cookie.d.ts.map +1 -0
  227. package/dist/lib/cookie.js +305 -0
  228. package/dist/lib/cookie.js.map +1 -0
  229. package/dist/lib/env.d.ts +42 -0
  230. package/dist/lib/env.d.ts.map +1 -0
  231. package/dist/lib/env.js +95 -0
  232. package/dist/lib/env.js.map +1 -0
  233. package/dist/lib/stack-app/api-keys/index.d.ts +53 -0
  234. package/dist/lib/stack-app/api-keys/index.d.ts.map +1 -0
  235. package/dist/lib/stack-app/api-keys/index.js +25 -0
  236. package/dist/lib/stack-app/api-keys/index.js.map +1 -0
  237. package/dist/lib/stack-app/apps/implementations/admin-app-impl.d.ts +362 -0
  238. package/dist/lib/stack-app/apps/implementations/admin-app-impl.d.ts.map +1 -0
  239. package/dist/lib/stack-app/apps/implementations/admin-app-impl.js +926 -0
  240. package/dist/lib/stack-app/apps/implementations/admin-app-impl.js.map +1 -0
  241. package/dist/lib/stack-app/apps/implementations/client-app-impl.cross-domain.test.d.ts +1 -0
  242. package/dist/lib/stack-app/apps/implementations/client-app-impl.cross-domain.test.js +55 -0
  243. package/dist/lib/stack-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -0
  244. package/dist/lib/stack-app/apps/implementations/client-app-impl.d.ts +541 -0
  245. package/dist/lib/stack-app/apps/implementations/client-app-impl.d.ts.map +1 -0
  246. package/dist/lib/stack-app/apps/implementations/client-app-impl.js +2507 -0
  247. package/dist/lib/stack-app/apps/implementations/client-app-impl.js.map +1 -0
  248. package/dist/lib/stack-app/apps/implementations/client-app-impl.oauth-prefetch.test.d.ts +1 -0
  249. package/dist/lib/stack-app/apps/implementations/client-app-impl.oauth-prefetch.test.js +32 -0
  250. package/dist/lib/stack-app/apps/implementations/client-app-impl.oauth-prefetch.test.js.map +1 -0
  251. package/dist/lib/stack-app/apps/implementations/common.d.ts +65 -0
  252. package/dist/lib/stack-app/apps/implementations/common.d.ts.map +1 -0
  253. package/dist/lib/stack-app/apps/implementations/common.js +144 -0
  254. package/dist/lib/stack-app/apps/implementations/common.js.map +1 -0
  255. package/dist/lib/stack-app/apps/implementations/event-tracker.d.ts +42 -0
  256. package/dist/lib/stack-app/apps/implementations/event-tracker.d.ts.map +1 -0
  257. package/dist/lib/stack-app/apps/implementations/event-tracker.js +213 -0
  258. package/dist/lib/stack-app/apps/implementations/event-tracker.js.map +1 -0
  259. package/dist/lib/stack-app/apps/implementations/event-tracker.test.d.ts +1 -0
  260. package/dist/lib/stack-app/apps/implementations/event-tracker.test.js +87 -0
  261. package/dist/lib/stack-app/apps/implementations/event-tracker.test.js.map +1 -0
  262. package/dist/lib/stack-app/apps/implementations/index.d.ts +9 -0
  263. package/dist/lib/stack-app/apps/implementations/index.d.ts.map +1 -0
  264. package/dist/lib/stack-app/apps/implementations/index.js +31 -0
  265. package/dist/lib/stack-app/apps/implementations/index.js.map +1 -0
  266. package/dist/lib/stack-app/apps/implementations/redirect-page-urls.d.ts +35 -0
  267. package/dist/lib/stack-app/apps/implementations/redirect-page-urls.d.ts.map +1 -0
  268. package/dist/lib/stack-app/apps/implementations/redirect-page-urls.js +201 -0
  269. package/dist/lib/stack-app/apps/implementations/redirect-page-urls.js.map +1 -0
  270. package/dist/lib/stack-app/apps/implementations/server-app-impl.d.ts +203 -0
  271. package/dist/lib/stack-app/apps/implementations/server-app-impl.d.ts.map +1 -0
  272. package/dist/lib/stack-app/apps/implementations/server-app-impl.js +1096 -0
  273. package/dist/lib/stack-app/apps/implementations/server-app-impl.js.map +1 -0
  274. package/dist/lib/stack-app/apps/implementations/session-refresh-subscription.d.ts +28 -0
  275. package/dist/lib/stack-app/apps/implementations/session-refresh-subscription.d.ts.map +1 -0
  276. package/dist/lib/stack-app/apps/implementations/session-refresh-subscription.js +33 -0
  277. package/dist/lib/stack-app/apps/implementations/session-refresh-subscription.js.map +1 -0
  278. package/dist/lib/stack-app/apps/implementations/session-refresh-subscription.test.d.ts +1 -0
  279. package/dist/lib/stack-app/apps/implementations/session-refresh-subscription.test.js +82 -0
  280. package/dist/lib/stack-app/apps/implementations/session-refresh-subscription.test.js.map +1 -0
  281. package/dist/lib/stack-app/apps/implementations/session-replay.d.ts +111 -0
  282. package/dist/lib/stack-app/apps/implementations/session-replay.d.ts.map +1 -0
  283. package/dist/lib/stack-app/apps/implementations/session-replay.js +250 -0
  284. package/dist/lib/stack-app/apps/implementations/session-replay.js.map +1 -0
  285. package/dist/lib/stack-app/apps/implementations/session-replay.test.d.ts +1 -0
  286. package/dist/lib/stack-app/apps/implementations/session-replay.test.js +29 -0
  287. package/dist/lib/stack-app/apps/implementations/session-replay.test.js.map +1 -0
  288. package/dist/lib/stack-app/apps/index.d.ts +4 -0
  289. package/dist/lib/stack-app/apps/index.js +42 -0
  290. package/dist/lib/stack-app/apps/interfaces/admin-app.d.ts +244 -0
  291. package/dist/lib/stack-app/apps/interfaces/admin-app.d.ts.map +1 -0
  292. package/dist/lib/stack-app/apps/interfaces/admin-app.js +12 -0
  293. package/dist/lib/stack-app/apps/interfaces/admin-app.js.map +1 -0
  294. package/dist/lib/stack-app/apps/interfaces/client-app.d.ts +208 -0
  295. package/dist/lib/stack-app/apps/interfaces/client-app.d.ts.map +1 -0
  296. package/dist/lib/stack-app/apps/interfaces/client-app.js +12 -0
  297. package/dist/lib/stack-app/apps/interfaces/client-app.js.map +1 -0
  298. package/dist/lib/stack-app/apps/interfaces/server-app.d.ts +116 -0
  299. package/dist/lib/stack-app/apps/interfaces/server-app.d.ts.map +1 -0
  300. package/dist/lib/stack-app/apps/interfaces/server-app.js +12 -0
  301. package/dist/lib/stack-app/apps/interfaces/server-app.js.map +1 -0
  302. package/dist/lib/stack-app/common.d.ts +174 -0
  303. package/dist/lib/stack-app/common.d.ts.map +1 -0
  304. package/dist/lib/stack-app/common.js +9 -0
  305. package/dist/lib/stack-app/common.js.map +1 -0
  306. package/dist/lib/stack-app/connected-accounts/index.d.ts +40 -0
  307. package/dist/lib/stack-app/connected-accounts/index.d.ts.map +1 -0
  308. package/dist/lib/stack-app/connected-accounts/index.js +0 -0
  309. package/dist/lib/stack-app/contact-channels/index.d.ts +43 -0
  310. package/dist/lib/stack-app/contact-channels/index.d.ts.map +1 -0
  311. package/dist/lib/stack-app/contact-channels/index.js +44 -0
  312. package/dist/lib/stack-app/contact-channels/index.js.map +1 -0
  313. package/dist/lib/stack-app/customers/index.d.ts +129 -0
  314. package/dist/lib/stack-app/customers/index.d.ts.map +1 -0
  315. package/dist/lib/stack-app/customers/index.js +0 -0
  316. package/dist/lib/stack-app/data-vault/index.d.ts +14 -0
  317. package/dist/lib/stack-app/data-vault/index.d.ts.map +1 -0
  318. package/dist/lib/stack-app/data-vault/index.js +0 -0
  319. package/dist/lib/stack-app/email/index.d.ts +204 -0
  320. package/dist/lib/stack-app/email/index.d.ts.map +1 -0
  321. package/dist/lib/stack-app/email/index.js +0 -0
  322. package/dist/lib/stack-app/email-templates/index.d.ts +17 -0
  323. package/dist/lib/stack-app/email-templates/index.d.ts.map +1 -0
  324. package/dist/lib/stack-app/email-templates/index.js +13 -0
  325. package/dist/lib/stack-app/email-templates/index.js.map +1 -0
  326. package/dist/lib/stack-app/index.d.ts +15 -0
  327. package/dist/lib/stack-app/index.js +54 -0
  328. package/dist/lib/stack-app/internal-api-keys/index.d.ts +42 -0
  329. package/dist/lib/stack-app/internal-api-keys/index.d.ts.map +1 -0
  330. package/dist/lib/stack-app/internal-api-keys/index.js +16 -0
  331. package/dist/lib/stack-app/internal-api-keys/index.js.map +1 -0
  332. package/dist/lib/stack-app/notification-categories/index.d.ts +11 -0
  333. package/dist/lib/stack-app/notification-categories/index.d.ts.map +1 -0
  334. package/dist/lib/stack-app/notification-categories/index.js +0 -0
  335. package/dist/lib/stack-app/permissions/index.d.ts +43 -0
  336. package/dist/lib/stack-app/permissions/index.d.ts.map +1 -0
  337. package/dist/lib/stack-app/permissions/index.js +36 -0
  338. package/dist/lib/stack-app/permissions/index.js.map +1 -0
  339. package/dist/lib/stack-app/project-configs/index.d.ts +99 -0
  340. package/dist/lib/stack-app/project-configs/index.d.ts.map +1 -0
  341. package/dist/lib/stack-app/project-configs/index.js +0 -0
  342. package/dist/lib/stack-app/projects/index.d.ts +145 -0
  343. package/dist/lib/stack-app/projects/index.d.ts.map +1 -0
  344. package/dist/lib/stack-app/projects/index.js +69 -0
  345. package/dist/lib/stack-app/projects/index.js.map +1 -0
  346. package/dist/lib/stack-app/session-replays/index.d.ts +66 -0
  347. package/dist/lib/stack-app/session-replays/index.d.ts.map +1 -0
  348. package/dist/lib/stack-app/session-replays/index.js +0 -0
  349. package/dist/lib/stack-app/teams/index.d.ts +160 -0
  350. package/dist/lib/stack-app/teams/index.d.ts.map +1 -0
  351. package/dist/lib/stack-app/teams/index.js +40 -0
  352. package/dist/lib/stack-app/teams/index.js.map +1 -0
  353. package/dist/lib/stack-app/url-targets.d.ts +39 -0
  354. package/dist/lib/stack-app/url-targets.d.ts.map +1 -0
  355. package/dist/lib/stack-app/url-targets.js +274 -0
  356. package/dist/lib/stack-app/url-targets.js.map +1 -0
  357. package/dist/lib/stack-app/url-targets.test.d.ts +1 -0
  358. package/dist/lib/stack-app/url-targets.test.js +213 -0
  359. package/dist/lib/stack-app/url-targets.test.js.map +1 -0
  360. package/dist/lib/stack-app/users/index.d.ts +357 -0
  361. package/dist/lib/stack-app/users/index.d.ts.map +1 -0
  362. package/dist/lib/stack-app/users/index.js +76 -0
  363. package/dist/lib/stack-app/users/index.js.map +1 -0
  364. package/dist/storage-CKsyME2q.d.ts +1912 -0
  365. package/dist/storage-CKsyME2q.d.ts.map +1 -0
  366. package/dist/utils/url.d.ts +5 -0
  367. package/dist/utils/url.d.ts.map +1 -0
  368. package/dist/utils/url.js +18 -0
  369. package/dist/utils/url.js.map +1 -0
  370. package/package.json +88 -0
@@ -0,0 +1,924 @@
1
+ import { HexclaveAssertionError, throwErr } from "@hexclave/shared/dist/utils/errors";
2
+ import { HexclaveAdminInterface, KnownErrors } from "@hexclave/shared";
3
+ import { Result } from "@hexclave/shared/dist/utils/results";
4
+ import { clientVersion, createCache, getDefaultExtraRequestHeaders, getDefaultProjectId, getDefaultPublishableClientKey, getDefaultSecretServerKey, getDefaultSuperSecretAdminKey, resolveApiUrls, resolveConstructorOptions } from "./common.js";
5
+ import { pick, typedEntries, typedValues } from "@hexclave/shared/dist/utils/objects";
6
+ import { getProductionModeErrors } from "@hexclave/shared/dist/helpers/production-mode";
7
+ import { stackAppInternalsSymbol } from "../../common.js";
8
+ import { internalApiKeyCreateOptionsToCrud } from "../../internal-api-keys/index.js";
9
+ import { adminProjectPermissionDefinitionCreateOptionsToCrud, adminProjectPermissionDefinitionUpdateOptionsToCrud, adminTeamPermissionDefinitionCreateOptionsToCrud, adminTeamPermissionDefinitionUpdateOptionsToCrud } from "../../permissions/index.js";
10
+ import { adminProjectUpdateOptionsToCrud } from "../../projects/index.js";
11
+ import { _StackServerAppImplIncomplete } from "./server-app-impl.js";
12
+
13
+ //#region src/lib/stack-app/apps/implementations/admin-app-impl.ts
14
+ /**
15
+ * Converts a PushedConfigSource (SDK camelCase) to BranchConfigSourceApi (API snake_case).
16
+ */
17
+ function pushedConfigSourceToApi(source) {
18
+ if (source.type === "pushed-from-github") return {
19
+ type: "pushed-from-github",
20
+ owner: source.owner,
21
+ repo: source.repo,
22
+ branch: source.branch,
23
+ commit_hash: source.commitHash,
24
+ config_file_path: source.configFilePath,
25
+ workflow_path: source.workflowPath
26
+ };
27
+ return source;
28
+ }
29
+ /**
30
+ * Converts a BranchConfigSourceApi (API snake_case) to PushedConfigSource (SDK camelCase).
31
+ */
32
+ function apiToPushedConfigSource(source) {
33
+ if (source.type === "pushed-from-github") return {
34
+ type: "pushed-from-github",
35
+ owner: source.owner,
36
+ repo: source.repo,
37
+ branch: source.branch,
38
+ commitHash: source.commit_hash,
39
+ configFilePath: source.config_file_path,
40
+ workflowPath: source.workflow_path
41
+ };
42
+ return source;
43
+ }
44
+ var _StackAdminAppImplIncomplete = class extends _StackServerAppImplIncomplete {
45
+ constructor(options, extraOptions) {
46
+ const resolvedOptions = resolveConstructorOptions(options);
47
+ const publishableClientKey = resolvedOptions.publishableClientKey ?? getDefaultPublishableClientKey();
48
+ super(resolvedOptions, {
49
+ ...extraOptions,
50
+ interface: extraOptions?.interface ?? (() => {
51
+ const apiUrls = resolveApiUrls(resolvedOptions.baseUrl);
52
+ return new HexclaveAdminInterface({
53
+ getBaseUrl: () => apiUrls()[0],
54
+ getApiUrls: apiUrls,
55
+ projectId: resolvedOptions.projectId ?? getDefaultProjectId(),
56
+ extraRequestHeaders: resolvedOptions.extraRequestHeaders ?? getDefaultExtraRequestHeaders(),
57
+ clientVersion,
58
+ ...resolvedOptions.projectOwnerSession ? { projectOwnerSession: resolvedOptions.projectOwnerSession } : {
59
+ ...publishableClientKey ? { publishableClientKey } : {},
60
+ secretServerKey: resolvedOptions.secretServerKey ?? getDefaultSecretServerKey(),
61
+ superSecretAdminKey: resolvedOptions.superSecretAdminKey ?? getDefaultSuperSecretAdminKey()
62
+ }
63
+ });
64
+ })()
65
+ });
66
+ this._adminProjectCache = createCache(async () => {
67
+ return await this._interface.getProject();
68
+ });
69
+ this._internalApiKeysCache = createCache(async () => {
70
+ return await this._interface.listInternalApiKeys();
71
+ });
72
+ this._adminEmailThemeCache = createCache(async ([id]) => {
73
+ return await this._interface.getEmailTheme(id);
74
+ });
75
+ this._adminEmailThemesCache = createCache(async () => {
76
+ return await this._interface.listEmailThemes();
77
+ });
78
+ this._adminEmailTemplatesCache = createCache(async () => {
79
+ return await this._interface.listInternalEmailTemplates();
80
+ });
81
+ this._adminEmailDraftsCache = createCache(async () => {
82
+ return await this._interface.listInternalEmailDrafts();
83
+ });
84
+ this._adminTeamPermissionDefinitionsCache = createCache(async () => {
85
+ return await this._interface.listTeamPermissionDefinitions();
86
+ });
87
+ this._adminProjectPermissionDefinitionsCache = createCache(async () => {
88
+ return await this._interface.listProjectPermissionDefinitions();
89
+ });
90
+ this._svixTokenCache = createCache(async () => {
91
+ return await this._interface.getSvixToken();
92
+ });
93
+ this._metricsCache = createCache(async ([includeAnonymous]) => {
94
+ return await this._interface.getMetrics(includeAnonymous);
95
+ });
96
+ this._userActivityCache = createCache(async ([userId]) => {
97
+ return await this._interface.getUserActivity(userId);
98
+ });
99
+ this._metricsUserCountsCache = createCache(async () => {
100
+ return await this._interface.getMetricsUserCounts();
101
+ });
102
+ this._emailPreviewCache = createCache(async ([themeId, themeTsxSource, templateId, templateTsxSource]) => {
103
+ return await this._interface.renderEmailPreview({
104
+ themeId,
105
+ themeTsxSource,
106
+ templateId,
107
+ templateTsxSource
108
+ });
109
+ });
110
+ this._emailPreviewWithEditableMarkersCache = createCache(async ([themeId, themeTsxSource, templateId, templateTsxSource, editableSource]) => {
111
+ return await this._interface.renderEmailPreview({
112
+ themeId,
113
+ themeTsxSource,
114
+ templateId,
115
+ templateTsxSource,
116
+ editableMarkers: true,
117
+ editableSource
118
+ });
119
+ });
120
+ this._configOverridesCache = createCache(async () => {
121
+ return await this._interface.getConfig();
122
+ });
123
+ this._stripeAccountInfoCache = createCache(async () => {
124
+ try {
125
+ return await this._interface.getStripeAccountInfo();
126
+ } catch (error) {
127
+ if (error?.status === 404) return null;
128
+ throw error;
129
+ }
130
+ });
131
+ this._transactionsCache = createCache(async ([cursor, limit, type, customerType, customerId]) => {
132
+ return await this._interface.listTransactions({
133
+ cursor,
134
+ limit,
135
+ type,
136
+ customerType,
137
+ customerId
138
+ });
139
+ });
140
+ }
141
+ _adminConfigFromCrud(data) {
142
+ return JSON.parse(data.config_string);
143
+ }
144
+ _adminOwnedProjectFromCrud(data, onRefresh) {
145
+ if (this._tokenStoreInit !== null) throw new HexclaveAssertionError("Owned apps must always have tokenStore === null — did you not create this project with app._createOwnedApp()?");
146
+ return {
147
+ ...this._adminProjectFromCrud(data, onRefresh),
148
+ app: this
149
+ };
150
+ }
151
+ _adminProjectFromCrud(data, onRefresh) {
152
+ if (data.id !== this.projectId) throw new HexclaveAssertionError(`The project ID of the provided project JSON (${data.id}) does not match the project ID of the app (${this.projectId})!`);
153
+ const app = this;
154
+ return {
155
+ id: data.id,
156
+ displayName: data.display_name,
157
+ description: data.description,
158
+ createdAt: new Date(data.created_at_millis),
159
+ isProductionMode: data.is_production_mode,
160
+ isDevelopmentEnvironment: data.is_development_environment,
161
+ ownerTeamId: data.owner_team_id,
162
+ onboardingStatus: data.onboarding_status,
163
+ logoUrl: data.logo_url,
164
+ logoFullUrl: data.logo_full_url,
165
+ logoDarkModeUrl: data.logo_dark_mode_url,
166
+ logoFullDarkModeUrl: data.logo_full_dark_mode_url,
167
+ config: {
168
+ signUpEnabled: data.config.sign_up_enabled,
169
+ credentialEnabled: data.config.credential_enabled,
170
+ magicLinkEnabled: data.config.magic_link_enabled,
171
+ passkeyEnabled: data.config.passkey_enabled,
172
+ clientTeamCreationEnabled: data.config.client_team_creation_enabled,
173
+ clientUserDeletionEnabled: data.config.client_user_deletion_enabled,
174
+ allowLocalhost: data.config.allow_localhost,
175
+ oauthAccountMergeStrategy: data.config.oauth_account_merge_strategy,
176
+ allowUserApiKeys: data.config.allow_user_api_keys,
177
+ allowTeamApiKeys: data.config.allow_team_api_keys,
178
+ oauthProviders: data.config.oauth_providers.map((p) => p.type === "shared" ? {
179
+ id: p.id,
180
+ type: "shared"
181
+ } : {
182
+ id: p.id,
183
+ type: "standard",
184
+ clientId: p.client_id ?? throwErr("Client ID is missing"),
185
+ clientSecret: p.client_secret ?? throwErr("Client secret is missing"),
186
+ facebookConfigId: p.facebook_config_id,
187
+ microsoftTenantId: p.microsoft_tenant_id,
188
+ appleBundleIds: p.apple_bundle_ids
189
+ }),
190
+ emailConfig: data.config.email_config.type === "shared" ? { type: "shared" } : {
191
+ type: "standard",
192
+ host: data.config.email_config.host ?? throwErr("Email host is missing"),
193
+ port: data.config.email_config.port ?? throwErr("Email port is missing"),
194
+ username: data.config.email_config.username ?? throwErr("Email username is missing"),
195
+ password: data.config.email_config.password ?? throwErr("Email password is missing"),
196
+ senderName: data.config.email_config.sender_name ?? throwErr("Email sender name is missing"),
197
+ senderEmail: data.config.email_config.sender_email ?? throwErr("Email sender email is missing")
198
+ },
199
+ emailTheme: data.config.email_theme,
200
+ domains: data.config.domains.map((d) => ({
201
+ domain: d.domain,
202
+ handlerPath: d.handler_path
203
+ })),
204
+ createTeamOnSignUp: data.config.create_team_on_sign_up,
205
+ teamCreatorDefaultPermissions: data.config.team_creator_default_permissions,
206
+ teamMemberDefaultPermissions: data.config.team_member_default_permissions,
207
+ userDefaultPermissions: data.config.user_default_permissions
208
+ },
209
+ async getConfig() {
210
+ return app._adminConfigFromCrud(await app._interface.getConfig());
211
+ },
212
+ async updateConfig(configOverride) {
213
+ await app._interface.updateConfigOverride("environment", configOverride);
214
+ await app._refreshProjectConfig();
215
+ },
216
+ async pushConfig(config, options) {
217
+ await app._interface.setConfigOverride("branch", config, pushedConfigSourceToApi(options.source));
218
+ await app._refreshProjectConfig();
219
+ },
220
+ async updatePushedConfig(config) {
221
+ await app._interface.updateConfigOverride("branch", config);
222
+ await app._refreshProjectConfig();
223
+ },
224
+ async getPushedConfigSource() {
225
+ return apiToPushedConfigSource(await app._interface.getPushedConfigSource());
226
+ },
227
+ async unlinkPushedConfigSource() {
228
+ await app._interface.unlinkPushedConfigSource();
229
+ await app._refreshProjectConfig();
230
+ },
231
+ async resetConfigOverrideKeys(level, keys) {
232
+ await app._interface.resetConfigOverrideKeys(level, keys);
233
+ await app._refreshProjectConfig();
234
+ },
235
+ async getConfigOverride(level) {
236
+ const result = await app._interface.getConfigOverride(level);
237
+ return JSON.parse(result.config_string);
238
+ },
239
+ async replaceConfigOverride(level, config) {
240
+ if (level === "branch") {
241
+ const source = await app._interface.getPushedConfigSource();
242
+ await app._interface.setConfigOverride(level, config, source);
243
+ } else await app._interface.setConfigOverride(level, config);
244
+ await app._refreshProjectConfig();
245
+ },
246
+ async update(update) {
247
+ const { requirePublishableClientKey, ...projectUpdate } = update;
248
+ const updateOptions = adminProjectUpdateOptionsToCrud(projectUpdate);
249
+ const hasConfigUpdate = !!updateOptions.config && typedValues(updateOptions.config).some((value) => value !== void 0);
250
+ if (typedEntries(updateOptions).some(([key, value]) => {
251
+ if (key === "config") return hasConfigUpdate;
252
+ return value !== void 0;
253
+ })) {
254
+ await app._interface.updateProject(updateOptions);
255
+ await onRefresh();
256
+ }
257
+ if (requirePublishableClientKey !== void 0) {
258
+ await app._interface.updateConfigOverride("project", { "project.requirePublishableClientKey": requirePublishableClientKey });
259
+ await app._refreshProjectConfig();
260
+ }
261
+ },
262
+ async delete() {
263
+ await app._interface.deleteProject();
264
+ },
265
+ async getProductionModeErrors() {
266
+ return getProductionModeErrors(data);
267
+ }
268
+ };
269
+ }
270
+ _adminEmailTemplateFromCrud(data) {
271
+ return {
272
+ type: data.type,
273
+ subject: data.subject,
274
+ content: data.content,
275
+ isDefault: data.is_default
276
+ };
277
+ }
278
+ async getProject() {
279
+ return this._adminProjectFromCrud(Result.orThrow(await this._adminProjectCache.getOrWait([], "write-only")), () => this._refreshProject());
280
+ }
281
+ _createInternalApiKeyBaseFromCrud(data) {
282
+ const app = this;
283
+ return {
284
+ id: data.id,
285
+ description: data.description,
286
+ expiresAt: new Date(data.expires_at_millis),
287
+ manuallyRevokedAt: data.manually_revoked_at_millis ? new Date(data.manually_revoked_at_millis) : null,
288
+ createdAt: new Date(data.created_at_millis),
289
+ isValid() {
290
+ return this.whyInvalid() === null;
291
+ },
292
+ whyInvalid() {
293
+ if (this.expiresAt.getTime() < Date.now()) return "expired";
294
+ if (this.manuallyRevokedAt) return "manually-revoked";
295
+ return null;
296
+ },
297
+ async revoke() {
298
+ const res = await app._interface.revokeInternalApiKeyById(data.id);
299
+ await app._refreshInternalApiKeys();
300
+ return res;
301
+ }
302
+ };
303
+ }
304
+ _createInternalApiKeyFromCrud(data) {
305
+ return {
306
+ ...this._createInternalApiKeyBaseFromCrud(data),
307
+ publishableClientKey: data.publishable_client_key ? { lastFour: data.publishable_client_key.last_four } : null,
308
+ secretServerKey: data.secret_server_key ? { lastFour: data.secret_server_key.last_four } : null,
309
+ superSecretAdminKey: data.super_secret_admin_key ? { lastFour: data.super_secret_admin_key.last_four } : null
310
+ };
311
+ }
312
+ _createInternalApiKeyFirstViewFromCrud(data) {
313
+ return {
314
+ ...this._createInternalApiKeyBaseFromCrud(data),
315
+ publishableClientKey: data.publishable_client_key,
316
+ secretServerKey: data.secret_server_key,
317
+ superSecretAdminKey: data.super_secret_admin_key
318
+ };
319
+ }
320
+ async listInternalApiKeys() {
321
+ return Result.orThrow(await this._internalApiKeysCache.getOrWait([], "write-only")).map((j) => this._createInternalApiKeyFromCrud(j));
322
+ }
323
+ async createInternalApiKey(options) {
324
+ const crud = await this._interface.createInternalApiKey(internalApiKeyCreateOptionsToCrud(options));
325
+ await this._refreshInternalApiKeys();
326
+ return this._createInternalApiKeyFirstViewFromCrud(crud);
327
+ }
328
+ async listEmailThemes() {
329
+ return Result.orThrow(await this._adminEmailThemesCache.getOrWait([], "write-only")).map((theme) => ({
330
+ id: theme.id,
331
+ displayName: theme.display_name
332
+ }));
333
+ }
334
+ async listEmailTemplates() {
335
+ return Result.orThrow(await this._adminEmailTemplatesCache.getOrWait([], "write-only")).map((template) => ({
336
+ id: template.id,
337
+ displayName: template.display_name,
338
+ themeId: template.theme_id,
339
+ tsxSource: template.tsx_source
340
+ }));
341
+ }
342
+ async listEmailDrafts() {
343
+ return Result.orThrow(await this._adminEmailDraftsCache.getOrWait([], "write-only")).map((draft) => ({
344
+ id: draft.id,
345
+ displayName: draft.display_name,
346
+ themeId: draft.theme_id,
347
+ tsxSource: draft.tsx_source,
348
+ sentAt: draft.sent_at_millis ? new Date(draft.sent_at_millis) : null
349
+ }));
350
+ }
351
+ async createTeamPermissionDefinition(data) {
352
+ const crud = await this._interface.createTeamPermissionDefinition(adminTeamPermissionDefinitionCreateOptionsToCrud(data));
353
+ await this._adminTeamPermissionDefinitionsCache.refresh([]);
354
+ return this._serverTeamPermissionDefinitionFromCrud(crud);
355
+ }
356
+ async updateTeamPermissionDefinition(permissionId, data) {
357
+ await this._interface.updateTeamPermissionDefinition(permissionId, adminTeamPermissionDefinitionUpdateOptionsToCrud(data));
358
+ await this._adminTeamPermissionDefinitionsCache.refresh([]);
359
+ }
360
+ async deleteTeamPermissionDefinition(permissionId) {
361
+ await this._interface.deleteTeamPermissionDefinition(permissionId);
362
+ await this._adminTeamPermissionDefinitionsCache.refresh([]);
363
+ }
364
+ async listTeamPermissionDefinitions() {
365
+ return Result.orThrow(await this._adminTeamPermissionDefinitionsCache.getOrWait([], "write-only")).map((p) => this._serverTeamPermissionDefinitionFromCrud(p));
366
+ }
367
+ async listTeamPermissionDefinitionsPaginated(options) {
368
+ const result = await this._interface.listTeamPermissionDefinitionsPaginated(options);
369
+ return {
370
+ items: result.items.map((p) => this._serverTeamPermissionDefinitionFromCrud(p)),
371
+ nextCursor: result.nextCursor
372
+ };
373
+ }
374
+ async createProjectPermissionDefinition(data) {
375
+ const crud = await this._interface.createProjectPermissionDefinition(adminProjectPermissionDefinitionCreateOptionsToCrud(data));
376
+ await this._adminProjectPermissionDefinitionsCache.refresh([]);
377
+ return this._serverProjectPermissionDefinitionFromCrud(crud);
378
+ }
379
+ async updateProjectPermissionDefinition(permissionId, data) {
380
+ await this._interface.updateProjectPermissionDefinition(permissionId, adminProjectPermissionDefinitionUpdateOptionsToCrud(data));
381
+ await this._adminProjectPermissionDefinitionsCache.refresh([]);
382
+ }
383
+ async deleteProjectPermissionDefinition(permissionId) {
384
+ await this._interface.deleteProjectPermissionDefinition(permissionId);
385
+ await this._adminProjectPermissionDefinitionsCache.refresh([]);
386
+ }
387
+ async listProjectPermissionDefinitions() {
388
+ return Result.orThrow(await this._adminProjectPermissionDefinitionsCache.getOrWait([], "write-only")).map((p) => this._serverProjectPermissionDefinitionFromCrud(p));
389
+ }
390
+ async _refreshProject() {
391
+ await Promise.all([super._refreshProject(), this._adminProjectCache.refresh([])]);
392
+ }
393
+ async _refreshProjectConfig() {
394
+ await Promise.all([this._configOverridesCache.refresh([]), this._adminProjectCache.refresh([])]);
395
+ }
396
+ async _refreshInternalApiKeys() {
397
+ await this._internalApiKeysCache.refresh([]);
398
+ }
399
+ async _refreshUsers() {
400
+ await Promise.all([
401
+ super._refreshUsers(),
402
+ this._metricsCache.refresh([false]),
403
+ this._metricsCache.refresh([true]),
404
+ this._metricsUserCountsCache.refresh([])
405
+ ]);
406
+ }
407
+ get [stackAppInternalsSymbol]() {
408
+ return { ...super[stackAppInternalsSymbol] };
409
+ }
410
+ async sendTestEmail(options) {
411
+ let response;
412
+ try {
413
+ response = await this._interface.sendTestEmail({
414
+ recipient_email: options.recipientEmail,
415
+ email_config: {
416
+ ...pick(options.emailConfig, [
417
+ "host",
418
+ "port",
419
+ "username",
420
+ "password"
421
+ ]),
422
+ sender_email: options.emailConfig.senderEmail,
423
+ sender_name: options.emailConfig.senderName
424
+ }
425
+ });
426
+ } catch (error) {
427
+ if (error instanceof KnownErrors.ItemQuantityInsufficientAmount) return Result.error({ errorMessage: "Monthly email sending limit exceeded for your plan. Please upgrade your plan or wait until next month before sending more test emails." });
428
+ throw error;
429
+ }
430
+ if (response.success) return Result.ok(void 0);
431
+ else return Result.error({ errorMessage: response.error_message ?? throwErr("Email test error not specified") });
432
+ }
433
+ async sendTestWebhook(options) {
434
+ const response = await this._interface.sendTestWebhook({ endpoint_id: options.endpointId });
435
+ if (response.success) return Result.ok(void 0);
436
+ else return Result.error({ errorMessage: response.error_message ?? throwErr("Webhook test error not specified") });
437
+ }
438
+ async listSentEmails() {
439
+ return (await this._interface.listSentEmails()).items.map((email) => ({
440
+ id: email.id,
441
+ to: email.to ?? [],
442
+ subject: email.subject,
443
+ recipient: email.to?.[0] ?? "",
444
+ sentAt: new Date(email.sent_at_millis),
445
+ error: email.error
446
+ }));
447
+ }
448
+ async setupManagedEmailProvider(options) {
449
+ const response = await this._interface.setupManagedEmailProvider({
450
+ subdomain: options.subdomain,
451
+ sender_local_part: options.senderLocalPart
452
+ });
453
+ return {
454
+ domainId: response.domain_id,
455
+ subdomain: response.subdomain,
456
+ senderLocalPart: response.sender_local_part,
457
+ nameServerRecords: response.name_server_records,
458
+ status: response.status
459
+ };
460
+ }
461
+ async checkManagedEmailStatus(options) {
462
+ return { status: (await this._interface.checkManagedEmailStatus({
463
+ domain_id: options.domainId,
464
+ subdomain: options.subdomain,
465
+ sender_local_part: options.senderLocalPart
466
+ })).status };
467
+ }
468
+ async listManagedEmailDomains() {
469
+ return (await this._interface.listManagedEmailDomains()).items.map((item) => ({
470
+ domainId: item.domain_id,
471
+ subdomain: item.subdomain,
472
+ senderLocalPart: item.sender_local_part,
473
+ status: item.status,
474
+ nameServerRecords: item.name_server_records
475
+ }));
476
+ }
477
+ async applyManagedEmailProvider(options) {
478
+ const result = await this._interface.applyManagedEmailProvider({ domain_id: options.domainId });
479
+ await this._refreshProjectConfig();
480
+ return result;
481
+ }
482
+ async deleteManagedEmailDomain(options) {
483
+ return await this._interface.deleteManagedEmailDomain({ resend_domain_id: options.resendDomainId });
484
+ }
485
+ async sendSignInInvitationEmail(email, callbackUrl) {
486
+ await this._interface.sendSignInInvitationEmail(email, callbackUrl);
487
+ }
488
+ async createEmailTemplate(displayName) {
489
+ const result = await this._interface.createEmailTemplate(displayName);
490
+ await this._adminEmailTemplatesCache.refresh([]);
491
+ return result;
492
+ }
493
+ async deleteEmailTemplate(id) {
494
+ await this._interface.deleteEmailTemplate(id);
495
+ await this._adminEmailTemplatesCache.refresh([]);
496
+ }
497
+ async createEmailDraft(options) {
498
+ const result = await this._interface.createEmailDraft({
499
+ display_name: options.displayName,
500
+ theme_id: options.themeId,
501
+ tsx_source: options.tsxSource
502
+ });
503
+ await this._adminEmailDraftsCache.refresh([]);
504
+ return result;
505
+ }
506
+ async updateEmailDraft(id, data) {
507
+ await this._interface.updateEmailDraft(id, {
508
+ display_name: data.displayName,
509
+ theme_id: data.themeId,
510
+ tsx_source: data.tsxSource
511
+ });
512
+ await this._adminEmailDraftsCache.refresh([]);
513
+ }
514
+ async deleteEmailDraft(id) {
515
+ await this._interface.deleteEmailDraft(id);
516
+ const current = this._adminEmailDraftsCache.getIfCached([]);
517
+ if (current.status === "ok" && current.data.status === "ok") this._adminEmailDraftsCache.forceSetCachedValue([], Result.ok(current.data.data.filter((d) => d.id !== id)));
518
+ await this._adminEmailDraftsCache.refresh([]);
519
+ }
520
+ async refreshEmailDrafts() {
521
+ await this._adminEmailDraftsCache.refresh([]);
522
+ }
523
+ async saveChatMessage(threadId, message) {
524
+ await this._interface.saveChatMessage(threadId, message);
525
+ }
526
+ async listChatMessages(threadId) {
527
+ return await this._interface.listChatMessages(threadId);
528
+ }
529
+ async rewriteTemplateSourceWithAI(templateTsxSource) {
530
+ return { tsxSource: (await this._interface.rewriteTemplateSourceWithAI(templateTsxSource)).tsx_source };
531
+ }
532
+ async createEmailTheme(displayName) {
533
+ const result = await this._interface.createEmailTheme(displayName);
534
+ await this._adminEmailThemesCache.refresh([]);
535
+ return result;
536
+ }
537
+ async getEmailPreview(options) {
538
+ return (await this._interface.renderEmailPreview(options)).html;
539
+ }
540
+ async getEmailPreviewWithEditableMarkers(options) {
541
+ const result = await this._interface.renderEmailPreview({
542
+ ...options,
543
+ editableMarkers: true,
544
+ editableSource: options.editableSource
545
+ });
546
+ return {
547
+ html: result.html,
548
+ editableRegions: result.editable_regions
549
+ };
550
+ }
551
+ async updateEmailTheme(id, tsxSource) {
552
+ await this._interface.updateEmailTheme(id, tsxSource);
553
+ await this._adminEmailThemesCache.refresh([]);
554
+ await this._adminEmailThemeCache.invalidate([id]);
555
+ }
556
+ async deleteEmailTheme(id) {
557
+ await this._interface.deleteEmailTheme(id);
558
+ await this._adminEmailThemesCache.refresh([]);
559
+ await this._adminEmailThemeCache.invalidate([id]);
560
+ }
561
+ async updateEmailTemplate(id, tsxSource, themeId) {
562
+ const result = await this._interface.updateEmailTemplate(id, tsxSource, themeId);
563
+ await this._adminEmailTemplatesCache.refresh([]);
564
+ return { renderedHtml: result.rendered_html };
565
+ }
566
+ async setupPayments() {
567
+ return await this._interface.setupPayments();
568
+ }
569
+ async createStripeWidgetAccountSession() {
570
+ return await this._interface.createStripeWidgetAccountSession();
571
+ }
572
+ async getPaymentMethodConfigs() {
573
+ return await this._interface.getPaymentMethodConfigs();
574
+ }
575
+ async updatePaymentMethodConfigs(configId, updates) {
576
+ await this._interface.updatePaymentMethodConfigs(configId, updates);
577
+ }
578
+ async createItemQuantityChange(options) {
579
+ await this._interface.updateItemQuantity({
580
+ itemId: options.itemId,
581
+ ..."userId" in options ? { userId: options.userId } : "teamId" in options ? { teamId: options.teamId } : { customCustomerId: options.customCustomerId }
582
+ }, {
583
+ delta: options.quantity,
584
+ expires_at: options.expiresAt,
585
+ description: options.description,
586
+ allow_negative: true
587
+ });
588
+ }
589
+ async refundTransaction(options) {
590
+ const result = await this._interface.refundTransaction({
591
+ type: options.type,
592
+ id: options.id,
593
+ invoiceId: options.invoiceId,
594
+ amountUsd: options.amountUsd,
595
+ endAction: options.endAction
596
+ });
597
+ await this._transactionsCache.invalidateWhere(() => true);
598
+ return { refundTransactionId: result.refundTransactionId };
599
+ }
600
+ async listTransactions(params) {
601
+ return Result.orThrow(await this._transactionsCache.getOrWait([
602
+ params.cursor,
603
+ params.limit,
604
+ params.type,
605
+ params.customerType,
606
+ params.customerId
607
+ ], "write-only"));
608
+ }
609
+ _emailOutboxCrudToAdmin(crud) {
610
+ const recipient = crud.to;
611
+ let to;
612
+ if (recipient.type === "user-primary-email") to = {
613
+ type: "user-primary-email",
614
+ userId: recipient.user_id
615
+ };
616
+ else if (recipient.type === "user-custom-emails") to = {
617
+ type: "user-custom-emails",
618
+ userId: recipient.user_id,
619
+ emails: recipient.emails
620
+ };
621
+ else to = {
622
+ type: "custom-emails",
623
+ emails: recipient.emails
624
+ };
625
+ const base = {
626
+ id: crud.id,
627
+ createdAt: new Date(crud.created_at_millis),
628
+ updatedAt: new Date(crud.updated_at_millis),
629
+ tsxSource: crud.tsx_source,
630
+ themeId: crud.theme_id ?? null,
631
+ to,
632
+ scheduledAt: new Date(crud.scheduled_at_millis),
633
+ createdWith: crud.created_with,
634
+ emailDraftId: crud.email_draft_id,
635
+ emailProgrammaticCallTemplateId: crud.email_programmatic_call_template_id,
636
+ variables: crud.variables ?? {},
637
+ isPaused: false,
638
+ hasRendered: false,
639
+ hasDelivered: false,
640
+ sendRetries: crud.send_retries,
641
+ nextSendRetryAt: crud.next_send_retry_at_millis ? new Date(crud.next_send_retry_at_millis) : null,
642
+ sendAttemptErrors: crud.send_attempt_errors ? crud.send_attempt_errors.map((e) => ({
643
+ attemptNumber: e.attempt_number,
644
+ timestamp: e.timestamp,
645
+ externalMessage: e.external_message,
646
+ externalDetails: e.external_details,
647
+ internalMessage: e.internal_message,
648
+ internalDetails: e.internal_details
649
+ })) : null
650
+ };
651
+ const rendered = crud.has_rendered ? {
652
+ ...base,
653
+ startedRenderingAt: new Date(crud.started_rendering_at_millis),
654
+ renderedAt: new Date(crud.rendered_at_millis),
655
+ subject: crud.subject,
656
+ html: crud.html,
657
+ text: crud.text,
658
+ isTransactional: crud.is_transactional,
659
+ isHighPriority: crud.is_high_priority,
660
+ notificationCategoryId: crud.notification_category_id,
661
+ hasRendered: true
662
+ } : null;
663
+ const startedSending = rendered && crud.started_sending_at_millis ? {
664
+ ...rendered,
665
+ startedSendingAt: new Date(crud.started_sending_at_millis)
666
+ } : null;
667
+ const finishedDelivering = startedSending && crud.has_delivered ? {
668
+ ...startedSending,
669
+ deliveredAt: new Date(crud.delivered_at_millis),
670
+ hasDelivered: true
671
+ } : null;
672
+ return (() => {
673
+ switch (crud.status) {
674
+ case "paused": return {
675
+ ...base,
676
+ status: "paused",
677
+ simpleStatus: "in-progress",
678
+ isPaused: true
679
+ };
680
+ case "preparing": return {
681
+ ...base,
682
+ status: "preparing",
683
+ simpleStatus: "in-progress"
684
+ };
685
+ case "rendering": return {
686
+ ...base,
687
+ status: "rendering",
688
+ simpleStatus: "in-progress",
689
+ startedRenderingAt: new Date(crud.started_rendering_at_millis)
690
+ };
691
+ case "render-error": return {
692
+ ...base,
693
+ status: "render-error",
694
+ simpleStatus: "error",
695
+ startedRenderingAt: new Date(crud.started_rendering_at_millis),
696
+ renderedAt: new Date(crud.rendered_at_millis),
697
+ renderError: crud.render_error
698
+ };
699
+ case "scheduled": return {
700
+ ...rendered,
701
+ status: "scheduled",
702
+ simpleStatus: "in-progress"
703
+ };
704
+ case "queued": return {
705
+ ...rendered,
706
+ status: "queued",
707
+ simpleStatus: "in-progress"
708
+ };
709
+ case "sending": return {
710
+ ...startedSending,
711
+ status: "sending",
712
+ simpleStatus: "in-progress"
713
+ };
714
+ case "server-error": return {
715
+ ...startedSending,
716
+ status: "server-error",
717
+ simpleStatus: "error",
718
+ errorAt: new Date(crud.error_at_millis),
719
+ serverError: crud.server_error
720
+ };
721
+ case "skipped": return {
722
+ ...base,
723
+ status: "skipped",
724
+ simpleStatus: "ok",
725
+ skippedAt: new Date(crud.skipped_at_millis),
726
+ skippedReason: crud.skipped_reason,
727
+ skippedDetails: crud.skipped_details ?? {},
728
+ hasRendered: crud.has_rendered,
729
+ startedRenderingAt: crud.started_rendering_at_millis ? new Date(crud.started_rendering_at_millis) : void 0,
730
+ renderedAt: crud.rendered_at_millis ? new Date(crud.rendered_at_millis) : void 0,
731
+ subject: crud.subject,
732
+ html: crud.html,
733
+ text: crud.text,
734
+ isTransactional: crud.is_transactional,
735
+ isHighPriority: crud.is_high_priority,
736
+ notificationCategoryId: crud.notification_category_id,
737
+ startedSendingAt: crud.started_sending_at_millis ? new Date(crud.started_sending_at_millis) : void 0
738
+ };
739
+ case "bounced": return {
740
+ ...startedSending,
741
+ status: "bounced",
742
+ simpleStatus: "error",
743
+ bouncedAt: new Date(crud.bounced_at_millis)
744
+ };
745
+ case "delivery-delayed": return {
746
+ ...startedSending,
747
+ status: "delivery-delayed",
748
+ simpleStatus: "ok",
749
+ deliveryDelayedAt: new Date(crud.delivery_delayed_at_millis)
750
+ };
751
+ case "sent": return {
752
+ ...finishedDelivering,
753
+ status: "sent",
754
+ simpleStatus: "ok",
755
+ canHaveDeliveryInfo: crud.can_have_delivery_info
756
+ };
757
+ case "opened": return {
758
+ ...finishedDelivering,
759
+ status: "opened",
760
+ simpleStatus: "ok",
761
+ openedAt: new Date(crud.opened_at_millis),
762
+ canHaveDeliveryInfo: true
763
+ };
764
+ case "clicked": return {
765
+ ...finishedDelivering,
766
+ status: "clicked",
767
+ simpleStatus: "ok",
768
+ clickedAt: new Date(crud.clicked_at_millis),
769
+ canHaveDeliveryInfo: true
770
+ };
771
+ case "marked-as-spam": return {
772
+ ...finishedDelivering,
773
+ status: "marked-as-spam",
774
+ simpleStatus: "ok",
775
+ markedAsSpamAt: new Date(crud.marked_as_spam_at_millis),
776
+ canHaveDeliveryInfo: true
777
+ };
778
+ default: throw new HexclaveAssertionError(`Unknown email outbox status: ${crud.status}`, { status: crud.status });
779
+ }
780
+ })();
781
+ }
782
+ async listOutboxEmails(options) {
783
+ const response = await this._interface.listOutboxEmails({
784
+ status: options?.status,
785
+ simple_status: options?.simpleStatus,
786
+ limit: options?.limit,
787
+ cursor: options?.cursor
788
+ });
789
+ return {
790
+ items: response.items.map((item) => this._emailOutboxCrudToAdmin(item)),
791
+ nextCursor: response.pagination?.next_cursor ?? null
792
+ };
793
+ }
794
+ async getOutboxEmail(id) {
795
+ const response = await this._interface.getOutboxEmail(id);
796
+ return this._emailOutboxCrudToAdmin(response);
797
+ }
798
+ async updateOutboxEmail(id, options) {
799
+ const response = await this._interface.updateOutboxEmail(id, {
800
+ is_paused: options.isPaused,
801
+ scheduled_at_millis: options.scheduledAtMillis,
802
+ cancel: options.cancel,
803
+ tsx_source: options.tsxSource,
804
+ theme_id: options.themeId
805
+ });
806
+ return this._emailOutboxCrudToAdmin(response);
807
+ }
808
+ async pauseOutboxEmail(id) {
809
+ return await this.updateOutboxEmail(id, { isPaused: true });
810
+ }
811
+ async unpauseOutboxEmail(id) {
812
+ return await this.updateOutboxEmail(id, { isPaused: false });
813
+ }
814
+ async cancelOutboxEmail(id) {
815
+ return await this.updateOutboxEmail(id, { cancel: true });
816
+ }
817
+ async getStripeAccountInfo() {
818
+ return await this._interface.getStripeAccountInfo();
819
+ }
820
+ async queryAnalytics(options) {
821
+ return await this._interface.queryAnalytics(options);
822
+ }
823
+ async listSessionReplays(options) {
824
+ const response = await this._interface.listSessionReplays({
825
+ cursor: options?.cursor,
826
+ limit: options?.limit,
827
+ user_ids: options?.userIds,
828
+ team_ids: options?.teamIds,
829
+ duration_ms_min: options?.durationMsMin,
830
+ duration_ms_max: options?.durationMsMax,
831
+ last_event_at_from_millis: options?.lastEventAtFromMillis,
832
+ last_event_at_to_millis: options?.lastEventAtToMillis,
833
+ click_count_min: options?.clickCountMin
834
+ });
835
+ return {
836
+ items: response.items.map((r) => ({
837
+ id: r.id,
838
+ projectUser: {
839
+ id: r.project_user.id,
840
+ displayName: r.project_user.display_name,
841
+ primaryEmail: r.project_user.primary_email
842
+ },
843
+ startedAt: new Date(r.started_at_millis),
844
+ lastEventAt: new Date(r.last_event_at_millis),
845
+ chunkCount: r.chunk_count,
846
+ eventCount: r.event_count
847
+ })),
848
+ nextCursor: response.pagination.next_cursor
849
+ };
850
+ }
851
+ async getSessionReplay(sessionReplayId) {
852
+ const response = await this._interface.getSessionReplay(sessionReplayId);
853
+ return {
854
+ id: response.id,
855
+ projectUser: {
856
+ id: response.project_user.id,
857
+ displayName: response.project_user.display_name,
858
+ primaryEmail: response.project_user.primary_email
859
+ },
860
+ startedAt: new Date(response.started_at_millis),
861
+ lastEventAt: new Date(response.last_event_at_millis),
862
+ chunkCount: response.chunk_count,
863
+ eventCount: response.event_count
864
+ };
865
+ }
866
+ async listSessionReplayChunks(sessionReplayId, options) {
867
+ const response = await this._interface.listSessionReplayChunks(sessionReplayId, {
868
+ cursor: options?.cursor,
869
+ limit: options?.limit
870
+ });
871
+ return {
872
+ items: response.items.map((c) => ({
873
+ id: c.id,
874
+ batchId: c.batch_id,
875
+ sessionReplaySegmentId: c.session_replay_segment_id,
876
+ browserSessionId: c.browser_session_id,
877
+ eventCount: c.event_count,
878
+ byteLength: c.byte_length,
879
+ firstEventAt: new Date(c.first_event_at_millis),
880
+ lastEventAt: new Date(c.last_event_at_millis),
881
+ createdAt: new Date(c.created_at_millis)
882
+ })),
883
+ nextCursor: response.pagination.next_cursor
884
+ };
885
+ }
886
+ async getSessionReplayChunkEvents(sessionReplayId, chunkId) {
887
+ return await this._interface.getSessionReplayChunkEvents(sessionReplayId, chunkId);
888
+ }
889
+ async getSessionReplayEvents(sessionReplayId, options) {
890
+ const response = await this._interface.getSessionReplayEvents(sessionReplayId, options);
891
+ return {
892
+ chunks: response.chunks.map((c) => ({
893
+ id: c.id,
894
+ batchId: c.batch_id,
895
+ sessionReplaySegmentId: c.session_replay_segment_id,
896
+ eventCount: c.event_count,
897
+ byteLength: c.byte_length,
898
+ firstEventAt: new Date(c.first_event_at_millis),
899
+ lastEventAt: new Date(c.last_event_at_millis),
900
+ createdAt: new Date(c.created_at_millis)
901
+ })),
902
+ chunkEvents: response.chunk_events.map((ce) => ({
903
+ chunkId: ce.chunk_id,
904
+ events: ce.events
905
+ }))
906
+ };
907
+ }
908
+ async previewAffectedUsersByOnboardingChange(onboarding, limit) {
909
+ const result = await this._interface.previewAffectedUsersByOnboardingChange({ require_email_verification: onboarding.requireEmailVerification }, limit);
910
+ return {
911
+ affectedUsers: result.affected_users.map((u) => ({
912
+ id: u.id,
913
+ displayName: u.display_name,
914
+ primaryEmail: u.primary_email,
915
+ restrictedReason: u.restricted_reason
916
+ })),
917
+ totalAffectedCount: result.total_affected_count
918
+ };
919
+ }
920
+ };
921
+
922
+ //#endregion
923
+ export { _StackAdminAppImplIncomplete };
924
+ //# sourceMappingURL=admin-app-impl.js.map