@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,66 @@
1
+ //#region src/lib/stack-app/session-replays/index.d.ts
2
+ type AdminSessionReplay = {
3
+ id: string;
4
+ projectUser: {
5
+ id: string;
6
+ displayName: string | null;
7
+ primaryEmail: string | null;
8
+ };
9
+ startedAt: Date;
10
+ lastEventAt: Date;
11
+ chunkCount: number;
12
+ eventCount: number;
13
+ };
14
+ type AdminSessionReplayChunk = {
15
+ id: string;
16
+ batchId: string;
17
+ sessionReplaySegmentId: string | null;
18
+ browserSessionId: string | null;
19
+ eventCount: number;
20
+ byteLength: number;
21
+ firstEventAt: Date;
22
+ lastEventAt: Date;
23
+ createdAt: Date;
24
+ };
25
+ type ListSessionReplaysOptions = {
26
+ limit?: number;
27
+ cursor?: string;
28
+ userIds?: string[];
29
+ teamIds?: string[];
30
+ durationMsMin?: number;
31
+ durationMsMax?: number;
32
+ lastEventAtFromMillis?: number;
33
+ lastEventAtToMillis?: number;
34
+ clickCountMin?: number;
35
+ };
36
+ type ListSessionReplaysResult = {
37
+ items: AdminSessionReplay[];
38
+ nextCursor: string | null;
39
+ };
40
+ type ListSessionReplayChunksOptions = {
41
+ limit?: number;
42
+ cursor?: string;
43
+ };
44
+ type ListSessionReplayChunksResult = {
45
+ items: AdminSessionReplayChunk[];
46
+ nextCursor: string | null;
47
+ };
48
+ type SessionReplayAllEventsResult = {
49
+ chunks: Array<{
50
+ id: string;
51
+ batchId: string;
52
+ sessionReplaySegmentId: string | null;
53
+ eventCount: number;
54
+ byteLength: number;
55
+ firstEventAt: Date;
56
+ lastEventAt: Date;
57
+ createdAt: Date;
58
+ }>;
59
+ chunkEvents: Array<{
60
+ chunkId: string;
61
+ events: unknown[];
62
+ }>;
63
+ };
64
+ //#endregion
65
+ export { AdminSessionReplay, AdminSessionReplayChunk, ListSessionReplayChunksOptions, ListSessionReplayChunksResult, ListSessionReplaysOptions, ListSessionReplaysResult, SessionReplayAllEventsResult };
66
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../src/lib/stack-app/session-replays/index.ts"],"mappings":";KAIY,kBAAA;EACV,EAAA;EACA,WAAA;IACE,EAAA;IACA,WAAA;IACA,YAAA;EAAA;EAEF,SAAA,EAAW,IAAA;EACX,WAAA,EAAa,IAAA;EACb,UAAA;EACA,UAAA;AAAA;AAAA,KAGU,uBAAA;EACV,EAAA;EACA,OAAA;EACA,sBAAA;EACA,gBAAA;EACA,UAAA;EACA,UAAA;EACA,YAAA,EAAc,IAAA;EACd,WAAA,EAAa,IAAA;EACb,SAAA,EAAW,IAAA;AAAA;AAAA,KAGD,yBAAA;EACV,KAAA;EACA,MAAA;EACA,OAAA;EACA,OAAA;EACA,aAAA;EACA,aAAA;EACA,qBAAA;EACA,mBAAA;EACA,aAAA;AAAA;AAAA,KAGU,wBAAA;EACV,KAAA,EAAO,kBAAA;EACP,UAAA;AAAA;AAAA,KAGU,8BAAA;EACV,KAAA;EACA,MAAA;AAAA;AAAA,KAGU,6BAAA;EACV,KAAA,EAAO,uBAAA;EACP,UAAA;AAAA;AAAA,KAGU,4BAAA;EACV,MAAA,EAAQ,KAAA;IACN,EAAA;IACA,OAAA;IACA,sBAAA;IACA,UAAA;IACA,UAAA;IACA,YAAA,EAAc,IAAA;IACd,WAAA,EAAa,IAAA;IACb,SAAA,EAAW,IAAA;EAAA;EAEb,WAAA,EAAa,KAAA;IACX,OAAA;IACA,MAAA;EAAA;AAAA"}
File without changes
@@ -0,0 +1,160 @@
1
+ import { AsyncStoreProperty } from "../common.js";
2
+ import { Customer } from "../customers/index.js";
3
+ import { ApiKeyCreationOptions, TeamApiKey, TeamApiKeyFirstView } from "../api-keys/index.js";
4
+ import { ServerUser } from "../users/index.js";
5
+ import { ReadonlyJson } from "@hexclave/shared/dist/utils/json";
6
+ import { TeamsCrud } from "@hexclave/shared/dist/interface/crud/teams";
7
+
8
+ //#region src/lib/stack-app/teams/index.d.ts
9
+ type TeamMemberProfile = {
10
+ displayName: string | null;
11
+ profileImageUrl: string | null;
12
+ };
13
+ type TeamMemberProfileUpdateOptions = {
14
+ displayName?: string;
15
+ profileImageUrl?: string | null;
16
+ };
17
+ type EditableTeamMemberProfile = TeamMemberProfile & {
18
+ update(update: TeamMemberProfileUpdateOptions): Promise<void>;
19
+ };
20
+ type TeamUser = {
21
+ id: string;
22
+ teamProfile: TeamMemberProfile;
23
+ };
24
+ /**
25
+ * A team invitation as seen from the team's perspective (ie. the sender).
26
+ *
27
+ * Returned by `team.listInvitations()`. Contains the recipient email and allows
28
+ * revoking the invitation.
29
+ */
30
+ type SentTeamInvitation = {
31
+ id: string;
32
+ recipientEmail: string | null;
33
+ expiresAt: Date;
34
+ revoke(): Promise<void>;
35
+ };
36
+ /**
37
+ * @deprecated Use `SentTeamInvitation` instead.
38
+ */
39
+ type TeamInvitation = SentTeamInvitation;
40
+ /**
41
+ * A team invitation as seen from the invited user's perspective (ie. the receiver).
42
+ *
43
+ * Returned by `user.listTeamInvitations()`. Contains information about teams that have
44
+ * sent invitations to any of the user's verified email addresses, and allows accepting
45
+ * the invitation to join the team.
46
+ */
47
+ type ReceivedTeamInvitation = {
48
+ id: string;
49
+ teamId: string;
50
+ teamDisplayName: string;
51
+ recipientEmail: string;
52
+ expiresAt: Date;
53
+ /**
54
+ * Accepts the invitation, adding the current user to the team.
55
+ *
56
+ * The user must have a verified email address matching the invitation's recipient email.
57
+ */
58
+ accept(): Promise<void>;
59
+ };
60
+ type Team = {
61
+ id: string;
62
+ displayName: string;
63
+ profileImageUrl: string | null;
64
+ clientMetadata: any;
65
+ clientReadOnlyMetadata: any;
66
+ inviteUser(options: {
67
+ email: string;
68
+ callbackUrl?: string;
69
+ }): Promise<void>;
70
+ listUsers(): Promise<TeamUser[]>;
71
+ listInvitations(): Promise<SentTeamInvitation[]>;
72
+ update(update: TeamUpdateOptions): Promise<void>;
73
+ delete(): Promise<void>;
74
+ createApiKey(options: ApiKeyCreationOptions<"team">): Promise<TeamApiKeyFirstView>;
75
+ } & AsyncStoreProperty<"apiKeys", [], TeamApiKey[], true> & Customer;
76
+ type TeamUpdateOptions = {
77
+ displayName?: string;
78
+ profileImageUrl?: string | null;
79
+ clientMetadata?: ReadonlyJson;
80
+ };
81
+ declare function teamUpdateOptionsToCrud(options: TeamUpdateOptions): TeamsCrud["Client"]["Update"];
82
+ type TeamCreateOptions = {
83
+ displayName: string;
84
+ profileImageUrl?: string;
85
+ };
86
+ declare function teamCreateOptionsToCrud(options: TeamCreateOptions, creatorUserId: string): TeamsCrud["Client"]["Create"];
87
+ type ServerTeamMemberProfile = TeamMemberProfile;
88
+ type ServerTeamUser = ServerUser & {
89
+ teamProfile: ServerTeamMemberProfile;
90
+ };
91
+ type ServerTeam = {
92
+ createdAt: Date;
93
+ serverMetadata: any;
94
+ listUsers(): Promise<ServerTeamUser[]>;
95
+ update(update: ServerTeamUpdateOptions): Promise<void>;
96
+ delete(): Promise<void>;
97
+ addUser(userId: string): Promise<void>;
98
+ inviteUser(options: {
99
+ email: string;
100
+ callbackUrl?: string;
101
+ }): Promise<void>;
102
+ removeUser(userId: string): Promise<void>;
103
+ } & Team;
104
+ type ServerListUsersOptionsBase = {
105
+ cursor?: string;
106
+ limit?: number;
107
+ orderBy?: 'signedUpAt' | 'lastActiveAt';
108
+ desc?: boolean;
109
+ /**
110
+ * Free-text search. Matches user ID (exact UUID), display name, and contact channels (e.g. primary email).
111
+ */
112
+ query?: string;
113
+ /**
114
+ * Only return users who are members of the given team.
115
+ */
116
+ teamId?: string;
117
+ /**
118
+ * Whether to include restricted users (users who haven't completed onboarding requirements).
119
+ * Defaults to false.
120
+ */
121
+ includeRestricted?: boolean;
122
+ /**
123
+ * Whether to include anonymous users (and restricted users).
124
+ * Defaults to false.
125
+ */
126
+ includeAnonymous?: boolean;
127
+ };
128
+ type ServerListUsersOptions = ServerListUsersOptionsBase & ({
129
+ onlyAnonymous?: false;
130
+ } | {
131
+ /**
132
+ * Whether to return only anonymous users.
133
+ * Requires includeAnonymous=true.
134
+ * Defaults to false.
135
+ */
136
+ onlyAnonymous: true;
137
+ includeAnonymous: true;
138
+ });
139
+ type ServerListTeamsOptions = {
140
+ orderBy?: 'createdAt';
141
+ desc?: boolean;
142
+ cursor?: string;
143
+ limit?: number;
144
+ /**
145
+ * Free-text search. Matches team ID (exact UUID) and display name.
146
+ */
147
+ query?: string;
148
+ };
149
+ type ServerTeamCreateOptions = TeamCreateOptions & {
150
+ creatorUserId?: string;
151
+ };
152
+ declare function serverTeamCreateOptionsToCrud(options: ServerTeamCreateOptions): TeamsCrud["Server"]["Create"];
153
+ type ServerTeamUpdateOptions = TeamUpdateOptions & {
154
+ clientReadOnlyMetadata?: ReadonlyJson;
155
+ serverMetadata?: ReadonlyJson;
156
+ };
157
+ declare function serverTeamUpdateOptionsToCrud(options: ServerTeamUpdateOptions): TeamsCrud["Server"]["Update"];
158
+ //#endregion
159
+ export { EditableTeamMemberProfile, ReceivedTeamInvitation, SentTeamInvitation, ServerListTeamsOptions, ServerListUsersOptions, ServerTeam, ServerTeamCreateOptions, ServerTeamMemberProfile, ServerTeamUpdateOptions, ServerTeamUser, Team, TeamCreateOptions, TeamInvitation, TeamMemberProfile, TeamMemberProfileUpdateOptions, TeamUpdateOptions, TeamUser, serverTeamCreateOptionsToCrud, serverTeamUpdateOptionsToCrud, teamCreateOptionsToCrud, teamUpdateOptionsToCrud };
160
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../src/lib/stack-app/teams/index.ts"],"mappings":";;;;;;;;KAaY,iBAAA;EACV,WAAA;EACA,eAAA;AAAA;AAAA,KAGU,8BAAA;EACV,WAAA;EACA,eAAA;AAAA;AAAA,KAGU,yBAAA,GAA4B,iBAAA;EACtC,MAAA,CAAO,MAAA,EAAQ,8BAAA,GAAiC,OAAA;AAAA;AAAA,KAGtC,QAAA;EACV,EAAA;EACA,WAAA,EAAa,iBAAA;AAAA;;;;;;;KASH,kBAAA;EACV,EAAA;EACA,cAAA;EACA,SAAA,EAAW,IAAA;EACX,MAAA,IAAU,OAAA;AAAA;AAfZ;;;AAAA,KAqBY,cAAA,GAAiB,kBAAA;;;;;;AAV7B;;KAmBY,sBAAA;EACV,EAAA;EACA,MAAA;EACA,eAAA;EACA,cAAA;EACA,SAAA,EAAW,IAAA;EApBX;;;;AAMF;EAqBE,MAAA,IAAU,OAAA;AAAA;AAAA,KAGA,IAAA;EACV,EAAA;EACA,WAAA;EACA,eAAA;EACA,cAAA;EACA,sBAAA;EACA,UAAA,CAAW,OAAA;IAAW,KAAA;IAAe,WAAA;EAAA,IAAyB,OAAA;EAC9D,SAAA,IAAa,OAAA,CAAQ,QAAA;EACrB,eAAA,IAAmB,OAAA,CAAQ,kBAAA;EAC3B,MAAA,CAAO,MAAA,EAAQ,iBAAA,GAAoB,OAAA;EACnC,MAAA,IAAU,OAAA;EACV,YAAA,CAAa,OAAA,EAAS,qBAAA,WAAgC,OAAA,CAAQ,mBAAA;AAAA,IAC5D,kBAAA,gBAAkC,UAAA,YAAsB,QAAA;AAAA,KAEhD,iBAAA;EACV,WAAA;EACA,eAAA;EACA,cAAA,GAAiB,YAAA;AAAA;AAAA,iBAEH,uBAAA,CAAwB,OAAA,EAAS,iBAAA,GAAoB,SAAA;AAAA,KAQzD,iBAAA;EACV,WAAA;EACA,eAAA;AAAA;AAAA,iBAEc,uBAAA,CAAwB,OAAA,EAAS,iBAAA,EAAmB,aAAA,WAAwB,SAAA;AAAA,KAShF,uBAAA,GAA0B,iBAAA;AAAA,KAE1B,cAAA,GAAiB,UAAA;EAC3B,WAAA,EAAa,uBAAA;AAAA;AAAA,KAGH,UAAA;EACV,SAAA,EAAW,IAAA;EACX,cAAA;EACA,SAAA,IAAa,OAAA,CAAQ,cAAA;EACrB,MAAA,CAAO,MAAA,EAAQ,uBAAA,GAA0B,OAAA;EACzC,MAAA,IAAU,OAAA;EACV,OAAA,CAAQ,MAAA,WAAiB,OAAA;EACzB,UAAA,CAAW,OAAA;IAAW,KAAA;IAAe,WAAA;EAAA,IAAyB,OAAA;EAC9D,UAAA,CAAW,MAAA,WAAiB,OAAA;AAAA,IAC1B,IAAA;AAAA,KAEC,0BAAA;EACH,MAAA;EACA,KAAA;EACA,OAAA;EACA,IAAA;EArDmB;;;EAyDnB,KAAA;EAxDO;;;EA4DP,MAAA;EA1DA;;;;EA+DA,iBAAA;EA9DE;;;;EAmEF,gBAAA;AAAA;AAAA,KAGU,sBAAA,GAAyB,0BAAA;EAEjC,aAAA;AAAA;EArEF;;;;;EA4EE,aAAA;EACA,gBAAA;AAAA;AAAA,KAIQ,sBAAA;EACV,OAAA;EACA,IAAA;EACA,MAAA;EACA,KAAA;EAjF4E;;AAQ9E;EA6EE,KAAA;AAAA;AAAA,KAGU,uBAAA,GAA0B,iBAAA;EACpC,aAAA;AAAA;AAAA,iBAEc,6BAAA,CAA8B,OAAA,EAAS,uBAAA,GAA0B,SAAA;AAAA,KAQrE,uBAAA,GAA0B,iBAAA;EACpC,sBAAA,GAAyB,YAAA;EACzB,cAAA,GAAiB,YAAA;AAAA;AAAA,iBAEH,6BAAA,CAA8B,OAAA,EAAS,uBAAA,GAA0B,SAAA"}
@@ -0,0 +1,40 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+
3
+ //#region src/lib/stack-app/teams/index.ts
4
+ function teamUpdateOptionsToCrud(options) {
5
+ return {
6
+ display_name: options.displayName,
7
+ profile_image_url: options.profileImageUrl,
8
+ client_metadata: options.clientMetadata
9
+ };
10
+ }
11
+ function teamCreateOptionsToCrud(options, creatorUserId) {
12
+ return {
13
+ display_name: options.displayName,
14
+ profile_image_url: options.profileImageUrl,
15
+ creator_user_id: creatorUserId
16
+ };
17
+ }
18
+ function serverTeamCreateOptionsToCrud(options) {
19
+ return {
20
+ display_name: options.displayName,
21
+ profile_image_url: options.profileImageUrl,
22
+ creator_user_id: options.creatorUserId
23
+ };
24
+ }
25
+ function serverTeamUpdateOptionsToCrud(options) {
26
+ return {
27
+ display_name: options.displayName,
28
+ profile_image_url: options.profileImageUrl,
29
+ client_metadata: options.clientMetadata,
30
+ client_read_only_metadata: options.clientReadOnlyMetadata,
31
+ server_metadata: options.serverMetadata
32
+ };
33
+ }
34
+
35
+ //#endregion
36
+ exports.serverTeamCreateOptionsToCrud = serverTeamCreateOptionsToCrud;
37
+ exports.serverTeamUpdateOptionsToCrud = serverTeamUpdateOptionsToCrud;
38
+ exports.teamCreateOptionsToCrud = teamCreateOptionsToCrud;
39
+ exports.teamUpdateOptionsToCrud = teamUpdateOptionsToCrud;
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/lib/stack-app/teams/index.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY, INSTEAD EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { TeamsCrud } from \"@stackframe/stack-shared/dist/interface/crud/teams\";\nimport { ReadonlyJson } from \"@stackframe/stack-shared/dist/utils/json\";\n\nimport { ApiKeyCreationOptions, TeamApiKey, TeamApiKeyFirstView } from \"../api-keys\";\nimport { AsyncStoreProperty } from \"../common\";\nimport { Customer } from \"../customers\";\nimport { ServerUser } from \"../users\";\n\n\nexport type TeamMemberProfile = {\n displayName: string | null,\n profileImageUrl: string | null,\n}\n\nexport type TeamMemberProfileUpdateOptions = {\n displayName?: string,\n profileImageUrl?: string | null,\n};\n\nexport type EditableTeamMemberProfile = TeamMemberProfile & {\n update(update: TeamMemberProfileUpdateOptions): Promise<void>,\n}\n\nexport type TeamUser = {\n id: string,\n teamProfile: TeamMemberProfile,\n}\n\n/**\n * A team invitation as seen from the team's perspective (ie. the sender).\n *\n * Returned by `team.listInvitations()`. Contains the recipient email and allows\n * revoking the invitation.\n */\nexport type SentTeamInvitation = {\n id: string,\n recipientEmail: string | null,\n expiresAt: Date,\n revoke(): Promise<void>,\n}\n\n/**\n * @deprecated Use `SentTeamInvitation` instead.\n */\nexport type TeamInvitation = SentTeamInvitation;\n\n/**\n * A team invitation as seen from the invited user's perspective (ie. the receiver).\n *\n * Returned by `user.listTeamInvitations()`. Contains information about teams that have\n * sent invitations to any of the user's verified email addresses, and allows accepting\n * the invitation to join the team.\n */\nexport type ReceivedTeamInvitation = {\n id: string,\n teamId: string,\n teamDisplayName: string,\n recipientEmail: string,\n expiresAt: Date,\n\n /**\n * Accepts the invitation, adding the current user to the team.\n *\n * The user must have a verified email address matching the invitation's recipient email.\n */\n accept(): Promise<void>,\n}\n\nexport type Team = {\n id: string,\n displayName: string,\n profileImageUrl: string | null,\n clientMetadata: any,\n clientReadOnlyMetadata: any,\n inviteUser(options: { email: string, callbackUrl?: string }): Promise<void>,\n listUsers(): Promise<TeamUser[]>,\n listInvitations(): Promise<SentTeamInvitation[]>,\n update(update: TeamUpdateOptions): Promise<void>,\n delete(): Promise<void>,\n createApiKey(options: ApiKeyCreationOptions<\"team\">): Promise<TeamApiKeyFirstView>,\n} & AsyncStoreProperty<\"apiKeys\", [], TeamApiKey[], true> & Customer;\n\nexport type TeamUpdateOptions = {\n displayName?: string,\n profileImageUrl?: string | null,\n clientMetadata?: ReadonlyJson,\n};\nexport function teamUpdateOptionsToCrud(options: TeamUpdateOptions): TeamsCrud[\"Client\"][\"Update\"] {\n return {\n display_name: options.displayName,\n profile_image_url: options.profileImageUrl,\n client_metadata: options.clientMetadata,\n };\n}\n\nexport type TeamCreateOptions = {\n displayName: string,\n profileImageUrl?: string,\n}\nexport function teamCreateOptionsToCrud(options: TeamCreateOptions, creatorUserId: string): TeamsCrud[\"Client\"][\"Create\"] {\n return {\n display_name: options.displayName,\n profile_image_url: options.profileImageUrl,\n creator_user_id: creatorUserId,\n };\n}\n\n\nexport type ServerTeamMemberProfile = TeamMemberProfile;\n\nexport type ServerTeamUser = ServerUser & {\n teamProfile: ServerTeamMemberProfile,\n}\n\nexport type ServerTeam = {\n createdAt: Date,\n serverMetadata: any,\n listUsers(): Promise<ServerTeamUser[]>,\n update(update: ServerTeamUpdateOptions): Promise<void>,\n delete(): Promise<void>,\n addUser(userId: string): Promise<void>,\n inviteUser(options: { email: string, callbackUrl?: string }): Promise<void>,\n removeUser(userId: string): Promise<void>,\n} & Team;\n\ntype ServerListUsersOptionsBase = {\n cursor?: string,\n limit?: number,\n orderBy?: 'signedUpAt' | 'lastActiveAt',\n desc?: boolean,\n /**\n * Free-text search. Matches user ID (exact UUID), display name, and contact channels (e.g. primary email).\n */\n query?: string,\n /**\n * Only return users who are members of the given team.\n */\n teamId?: string,\n /**\n * Whether to include restricted users (users who haven't completed onboarding requirements).\n * Defaults to false.\n */\n includeRestricted?: boolean,\n /**\n * Whether to include anonymous users (and restricted users).\n * Defaults to false.\n */\n includeAnonymous?: boolean,\n};\n\nexport type ServerListUsersOptions = ServerListUsersOptionsBase & (\n {\n onlyAnonymous?: false,\n } | {\n /**\n * Whether to return only anonymous users.\n * Requires includeAnonymous=true.\n * Defaults to false.\n */\n onlyAnonymous: true,\n includeAnonymous: true,\n }\n);\n\nexport type ServerListTeamsOptions = {\n orderBy?: 'createdAt',\n desc?: boolean,\n cursor?: string,\n limit?: number,\n /**\n * Free-text search. Matches team ID (exact UUID) and display name.\n */\n query?: string,\n};\n\nexport type ServerTeamCreateOptions = TeamCreateOptions & {\n creatorUserId?: string,\n};\nexport function serverTeamCreateOptionsToCrud(options: ServerTeamCreateOptions): TeamsCrud[\"Server\"][\"Create\"] {\n return {\n display_name: options.displayName,\n profile_image_url: options.profileImageUrl,\n creator_user_id: options.creatorUserId,\n };\n}\n\nexport type ServerTeamUpdateOptions = TeamUpdateOptions & {\n clientReadOnlyMetadata?: ReadonlyJson,\n serverMetadata?: ReadonlyJson,\n};\nexport function serverTeamUpdateOptionsToCrud(options: ServerTeamUpdateOptions): TeamsCrud[\"Server\"][\"Update\"] {\n return {\n display_name: options.displayName,\n profile_image_url: options.profileImageUrl,\n client_metadata: options.clientMetadata,\n client_read_only_metadata: options.clientReadOnlyMetadata,\n server_metadata: options.serverMetadata,\n };\n}\n"],"mappings":";;;AA2FA,SAAgB,wBAAwB,SAA2D;AACjG,QAAO;EACL,cAAc,QAAQ;EACtB,mBAAmB,QAAQ;EAC3B,iBAAiB,QAAQ;EAC1B;;AAOH,SAAgB,wBAAwB,SAA4B,eAAsD;AACxH,QAAO;EACL,cAAc,QAAQ;EACtB,mBAAmB,QAAQ;EAC3B,iBAAiB;EAClB;;AA0EH,SAAgB,8BAA8B,SAAiE;AAC7G,QAAO;EACL,cAAc,QAAQ;EACtB,mBAAmB,QAAQ;EAC3B,iBAAiB,QAAQ;EAC1B;;AAOH,SAAgB,8BAA8B,SAAiE;AAC7G,QAAO;EACL,cAAc,QAAQ;EACtB,mBAAmB,QAAQ;EAC3B,iBAAiB,QAAQ;EACzB,2BAA2B,QAAQ;EACnC,iBAAiB,QAAQ;EAC1B"}
@@ -0,0 +1,39 @@
1
+ import { DefaultHandlerUrlTarget, HandlerUrlOptions, ResolvedHandlerUrls } from "./common.js";
2
+
3
+ //#region src/lib/stack-app/url-targets.d.ts
4
+ declare const getHostedHandlerUrl: (options: {
5
+ projectId: string;
6
+ pagePath: string;
7
+ }) => string;
8
+ declare const isLocalHandlerUrlTarget: (options: {
9
+ targetUrl: string;
10
+ handlerPath: string;
11
+ currentOrigin?: string;
12
+ }) => boolean;
13
+ declare const resolveHandlerUrls: (options: {
14
+ urls: HandlerUrlOptions | undefined;
15
+ projectId: string;
16
+ }) => ResolvedHandlerUrls;
17
+ declare const buildCliAuthConfirmUrl: (options: {
18
+ cliAuthConfirmUrl: string; /** Used as the base URL only when cliAuthConfirmUrl is relative. */
19
+ appUrl: string;
20
+ loginCode: string;
21
+ }) => string;
22
+ declare const resolveUnknownHandlerPathFallbackUrl: (options: {
23
+ defaultTarget: DefaultHandlerUrlTarget | undefined;
24
+ projectId: string;
25
+ unknownPath: string;
26
+ }) => string | null;
27
+ declare function getPagePrompt(pageName: string, currentVersion?: number): {
28
+ title: string;
29
+ fullPrompt: string;
30
+ upgradePrompt: string | null;
31
+ latestVersion: number;
32
+ } | null;
33
+ declare const isHostedHandlerUrlForProject: (options: {
34
+ url: string;
35
+ projectId: string;
36
+ }) => boolean;
37
+ //#endregion
38
+ export { buildCliAuthConfirmUrl, getHostedHandlerUrl, getPagePrompt, isHostedHandlerUrlForProject, isLocalHandlerUrlTarget, resolveHandlerUrls, resolveUnknownHandlerPathFallbackUrl };
39
+ //# sourceMappingURL=url-targets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-targets.d.ts","names":[],"sources":["../../../src/lib/stack-app/url-targets.ts"],"mappings":";;;cA2Ga,mBAAA,GAAuB,OAAA;EAAW,SAAA;EAAmB,QAAA;AAAA;AAAA,cAmBrD,uBAAA,GAA2B,OAAA;EACtC,SAAA;EACA,WAAA;EACA,aAAA;AAAA;AAAA,cA4DW,kBAAA,GAAsB,OAAA;EAAW,IAAA,EAAM,iBAAA;EAA+B,SAAA;AAAA,MAAsB,mBAAA;AAAA,cA4I5F,sBAAA,GAA0B,OAAA;EACrC,iBAAA,UA3MA;EA6MA,MAAA;EACA,SAAA;AAAA;AAAA,cAOW,oCAAA,GAAwC,OAAA;EACnD,aAAA,EAAe,uBAAA;EACf,SAAA;EACA,WAAA;AAAA;AAAA,iBAiBc,aAAA,CAAc,QAAA,UAAkB,cAAA;EAA4B,KAAA;EAAe,UAAA;EAAoB,aAAA;EAA8B,aAAA;AAAA;AAAA,cAuBhI,4BAAA,GAAgC,OAAA;EAAW,GAAA;EAAa,SAAA;AAAA"}
@@ -0,0 +1,274 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_chunk = require('../../chunk-BE-pF4vm.js');
3
+ let _stackframe_stack_shared_dist_utils_errors = require("@hexclave/shared/dist/utils/errors");
4
+ let _stackframe_stack_shared_dist_interface_handler_urls = require("@hexclave/shared/dist/interface/handler-urls");
5
+ let _stackframe_stack_shared_dist_utils_redirect_urls = require("@hexclave/shared/dist/utils/redirect-urls");
6
+ let ___env_js = require("../env.js");
7
+
8
+ //#region src/lib/stack-app/url-targets.ts
9
+ const localUrlPlaceholderOrigin = "http://example.com";
10
+ const schemePrefixRegex = /^[a-zA-Z][a-zA-Z\d+\-.]*:/;
11
+ const customPagePrompts = (0, _stackframe_stack_shared_dist_interface_handler_urls.getCustomPagePrompts)();
12
+ const joinHandlerComponentPath = (basePath, pagePath) => {
13
+ const normalizedBasePath = basePath.endsWith("/") && basePath.length > 1 ? basePath.slice(0, -1) : basePath;
14
+ if (pagePath.length === 0) return normalizedBasePath;
15
+ if (normalizedBasePath === "/") return `/${pagePath}`;
16
+ return `${normalizedBasePath}/${pagePath}`;
17
+ };
18
+ const getHostedPagePathForHandlerName = (handlerName) => {
19
+ switch (handlerName) {
20
+ case "handler": return "";
21
+ case "home": return "";
22
+ case "afterSignIn": return "";
23
+ case "afterSignUp": return "";
24
+ case "afterSignOut": return "";
25
+ case "signIn": return "sign-in";
26
+ case "signUp": return "sign-up";
27
+ case "signOut": return "sign-out";
28
+ case "emailVerification": return "email-verification";
29
+ case "passwordReset": return "password-reset";
30
+ case "forgotPassword": return "forgot-password";
31
+ case "oauthCallback": return "oauth-callback";
32
+ case "magicLinkCallback": return "magic-link-callback";
33
+ case "accountSettings": return "account-settings";
34
+ case "teamInvitation": return "team-invitation";
35
+ case "cliAuthConfirm": return "cli-auth-confirm";
36
+ case "mfa": return "mfa";
37
+ case "error": return "error";
38
+ case "onboarding": return "onboarding";
39
+ }
40
+ };
41
+ const resolveCustomTargetUrl = (options) => {
42
+ const handlerName = options.handlerName;
43
+ if (handlerName in customPagePrompts) {
44
+ const customPagePrompt = customPagePrompts[handlerName];
45
+ if (options.target.version === 0 || options.target.version in customPagePrompt.versions) return options.target.url;
46
+ throw new Error(`Unsupported custom page version ${options.target.version} for ${options.handlerName} page at ${options.target.url}. The latest supported version of this page is ${Math.max(0, ...Object.keys(customPagePrompt.versions).map(Number))}. Please upgrade your Hexclave SDK to a version that supports this version.`);
47
+ } else throw new Error(`URL target ${options.handlerName} cannot be a custom page. Please specify the URL as a string instead.`);
48
+ };
49
+ const getHostedHandlerUrl = (options) => {
50
+ const normalizedPagePath = options.pagePath.replace(/^\/+/, "");
51
+ const hostedPath = normalizedPagePath.length > 0 ? `handler/${normalizedPagePath}` : "handler";
52
+ return (0, _stackframe_stack_shared_dist_utils_redirect_urls.getHostedHandlerUrlFromConfig)({
53
+ projectId: options.projectId,
54
+ hostedPath,
55
+ hostedHandlerDomainSuffix: ___env_js.envVars.NEXT_PUBLIC_STACK_HOSTED_HANDLER_DOMAIN_SUFFIX,
56
+ hostedHandlerUrlTemplate: ___env_js.envVars.NEXT_PUBLIC_STACK_HOSTED_HANDLER_URL_TEMPLATE,
57
+ stackPortPrefix: ___env_js.envVars.NEXT_PUBLIC_HEXCLAVE_PORT_PREFIX
58
+ });
59
+ };
60
+ const isRelativeUrlString = (url) => {
61
+ if (url.startsWith("//")) return false;
62
+ return !schemePrefixRegex.test(url);
63
+ };
64
+ const isLocalHandlerUrlTarget = (options) => {
65
+ const urlObject = new URL(options.targetUrl, localUrlPlaceholderOrigin);
66
+ if (!(urlObject.pathname === options.handlerPath || urlObject.pathname.startsWith(`${options.handlerPath}/`))) return false;
67
+ if (options.currentOrigin == null) return true;
68
+ return isRelativeUrlString(options.targetUrl) || urlObject.origin === options.currentOrigin;
69
+ };
70
+ const resolveUrlTarget = (options) => {
71
+ if (typeof options.target === "string") return options.target;
72
+ switch (options.target.type) {
73
+ case "handler-component": return options.fallbackPath;
74
+ case "hosted": return getHostedHandlerUrl({
75
+ projectId: options.projectId,
76
+ pagePath: getHostedPagePathForHandlerName(options.handlerName)
77
+ });
78
+ case "custom": return resolveCustomTargetUrl({
79
+ target: options.target,
80
+ handlerName: options.handlerName
81
+ });
82
+ }
83
+ };
84
+ const assertOAuthCallbackTargetIsRelative = (target) => {
85
+ const url = typeof target === "string" ? target : target.type === "custom" ? target.url : null;
86
+ if (url != null && !isRelativeUrlString(url)) throw new _stackframe_stack_shared_dist_utils_errors.HexclaveAssertionError("OAuth callback URLs must be relative.", {
87
+ oauthCallbackUrl: url,
88
+ hint: "Use a relative URL like '/handler/oauth-callback', or use { type: 'hosted' } to let Stack use the current page for hosted callbacks."
89
+ });
90
+ };
91
+ const resolveHandlerUrls = (options) => {
92
+ const configuredUrls = options.urls;
93
+ const defaultTarget = configuredUrls?.default ?? { type: "handler-component" };
94
+ const oauthCallbackTarget = configuredUrls?.oauthCallback ?? (defaultTarget.type === "hosted" ? defaultTarget : { type: "handler-component" });
95
+ assertOAuthCallbackTargetIsRelative(oauthCallbackTarget);
96
+ let handlerComponentBasePath = "/handler";
97
+ if (typeof configuredUrls?.handler === "string") handlerComponentBasePath = configuredUrls.handler;
98
+ else if (configuredUrls?.handler != null && configuredUrls.handler.type === "custom") handlerComponentBasePath = resolveCustomTargetUrl({
99
+ target: configuredUrls.handler,
100
+ handlerName: "handler"
101
+ });
102
+ const home = resolveUrlTarget({
103
+ target: configuredUrls?.home ?? defaultTarget,
104
+ fallbackPath: "/",
105
+ handlerName: "home",
106
+ projectId: options.projectId
107
+ });
108
+ const afterSignIn = resolveUrlTarget({
109
+ target: configuredUrls?.afterSignIn ?? defaultTarget,
110
+ fallbackPath: home,
111
+ handlerName: "afterSignIn",
112
+ projectId: options.projectId
113
+ });
114
+ return {
115
+ handler: resolveUrlTarget({
116
+ target: configuredUrls?.handler ?? defaultTarget,
117
+ fallbackPath: handlerComponentBasePath,
118
+ handlerName: "handler",
119
+ projectId: options.projectId
120
+ }),
121
+ signIn: resolveUrlTarget({
122
+ target: configuredUrls?.signIn ?? defaultTarget,
123
+ fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, "sign-in"),
124
+ handlerName: "signIn",
125
+ projectId: options.projectId
126
+ }),
127
+ signUp: resolveUrlTarget({
128
+ target: configuredUrls?.signUp ?? defaultTarget,
129
+ fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, "sign-up"),
130
+ handlerName: "signUp",
131
+ projectId: options.projectId
132
+ }),
133
+ afterSignIn,
134
+ afterSignUp: resolveUrlTarget({
135
+ target: configuredUrls?.afterSignUp ?? defaultTarget,
136
+ fallbackPath: afterSignIn,
137
+ handlerName: "afterSignUp",
138
+ projectId: options.projectId
139
+ }),
140
+ signOut: resolveUrlTarget({
141
+ target: configuredUrls?.signOut ?? defaultTarget,
142
+ fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, "sign-out"),
143
+ handlerName: "signOut",
144
+ projectId: options.projectId
145
+ }),
146
+ afterSignOut: resolveUrlTarget({
147
+ target: configuredUrls?.afterSignOut ?? defaultTarget,
148
+ fallbackPath: home,
149
+ handlerName: "afterSignOut",
150
+ projectId: options.projectId
151
+ }),
152
+ emailVerification: resolveUrlTarget({
153
+ target: configuredUrls?.emailVerification ?? defaultTarget,
154
+ fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, "email-verification"),
155
+ handlerName: "emailVerification",
156
+ projectId: options.projectId
157
+ }),
158
+ passwordReset: resolveUrlTarget({
159
+ target: configuredUrls?.passwordReset ?? defaultTarget,
160
+ fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, "password-reset"),
161
+ handlerName: "passwordReset",
162
+ projectId: options.projectId
163
+ }),
164
+ forgotPassword: resolveUrlTarget({
165
+ target: configuredUrls?.forgotPassword ?? defaultTarget,
166
+ fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, "forgot-password"),
167
+ handlerName: "forgotPassword",
168
+ projectId: options.projectId
169
+ }),
170
+ home,
171
+ oauthCallback: resolveUrlTarget({
172
+ target: oauthCallbackTarget,
173
+ fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, "oauth-callback"),
174
+ handlerName: "oauthCallback",
175
+ projectId: options.projectId
176
+ }),
177
+ magicLinkCallback: resolveUrlTarget({
178
+ target: configuredUrls?.magicLinkCallback ?? defaultTarget,
179
+ fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, "magic-link-callback"),
180
+ handlerName: "magicLinkCallback",
181
+ projectId: options.projectId
182
+ }),
183
+ accountSettings: resolveUrlTarget({
184
+ target: configuredUrls?.accountSettings ?? defaultTarget,
185
+ fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, "account-settings"),
186
+ handlerName: "accountSettings",
187
+ projectId: options.projectId
188
+ }),
189
+ teamInvitation: resolveUrlTarget({
190
+ target: configuredUrls?.teamInvitation ?? defaultTarget,
191
+ fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, "team-invitation"),
192
+ handlerName: "teamInvitation",
193
+ projectId: options.projectId
194
+ }),
195
+ cliAuthConfirm: resolveUrlTarget({
196
+ target: configuredUrls?.cliAuthConfirm ?? defaultTarget,
197
+ fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, "cli-auth-confirm"),
198
+ handlerName: "cliAuthConfirm",
199
+ projectId: options.projectId
200
+ }),
201
+ mfa: resolveUrlTarget({
202
+ target: configuredUrls?.mfa ?? defaultTarget,
203
+ fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, "mfa"),
204
+ handlerName: "mfa",
205
+ projectId: options.projectId
206
+ }),
207
+ error: resolveUrlTarget({
208
+ target: configuredUrls?.error ?? defaultTarget,
209
+ fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, "error"),
210
+ handlerName: "error",
211
+ projectId: options.projectId
212
+ }),
213
+ onboarding: resolveUrlTarget({
214
+ target: configuredUrls?.onboarding ?? defaultTarget,
215
+ fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, "onboarding"),
216
+ handlerName: "onboarding",
217
+ projectId: options.projectId
218
+ })
219
+ };
220
+ };
221
+ const buildCliAuthConfirmUrl = (options) => {
222
+ const url = new URL(options.cliAuthConfirmUrl, options.appUrl);
223
+ url.searchParams.set("login_code", options.loginCode);
224
+ return url.toString();
225
+ };
226
+ const resolveUnknownHandlerPathFallbackUrl = (options) => {
227
+ switch ((options.defaultTarget ?? { type: "handler-component" }).type) {
228
+ case "handler-component": return null;
229
+ case "hosted": return getHostedHandlerUrl({
230
+ projectId: options.projectId,
231
+ pagePath: options.unknownPath
232
+ });
233
+ }
234
+ };
235
+ function getPagePrompt(pageName, currentVersion) {
236
+ if (!(pageName in customPagePrompts)) return null;
237
+ const prompt = customPagePrompts[pageName];
238
+ const versionKeys = Object.keys(prompt.versions).map(Number);
239
+ const latestVersion = versionKeys.length > 0 ? Math.max(...versionKeys) : 0;
240
+ let upgradePrompt = null;
241
+ if (currentVersion != null) {
242
+ const prompts = versionKeys.filter((v) => v > currentVersion).sort((a, b) => a - b).map((v) => prompt.versions[v].upgradePrompt).filter((p) => p.length > 0);
243
+ upgradePrompt = prompts.length > 0 ? prompts.join("\n\n") : null;
244
+ } else upgradePrompt = (latestVersion > 0 ? prompt.versions[latestVersion] : void 0)?.upgradePrompt ?? null;
245
+ return {
246
+ title: prompt.title,
247
+ fullPrompt: prompt.fullPrompt,
248
+ upgradePrompt,
249
+ latestVersion
250
+ };
251
+ }
252
+ const isHostedHandlerUrlForProject = (options) => {
253
+ let parsedUrl;
254
+ try {
255
+ parsedUrl = new URL(options.url);
256
+ } catch {
257
+ return false;
258
+ }
259
+ const hostedBaseUrl = new URL(getHostedHandlerUrl({
260
+ projectId: options.projectId,
261
+ pagePath: ""
262
+ }));
263
+ return parsedUrl.origin === hostedBaseUrl.origin && (parsedUrl.pathname === hostedBaseUrl.pathname || parsedUrl.pathname.startsWith(`${hostedBaseUrl.pathname}/`));
264
+ };
265
+
266
+ //#endregion
267
+ exports.buildCliAuthConfirmUrl = buildCliAuthConfirmUrl;
268
+ exports.getHostedHandlerUrl = getHostedHandlerUrl;
269
+ exports.getPagePrompt = getPagePrompt;
270
+ exports.isHostedHandlerUrlForProject = isHostedHandlerUrlForProject;
271
+ exports.isLocalHandlerUrlTarget = isLocalHandlerUrlTarget;
272
+ exports.resolveHandlerUrls = resolveHandlerUrls;
273
+ exports.resolveUnknownHandlerPathFallbackUrl = resolveUnknownHandlerPathFallbackUrl;
274
+ //# sourceMappingURL=url-targets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-targets.js","names":["envVars","HexclaveAssertionError"],"sources":["../../../src/lib/stack-app/url-targets.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY, INSTEAD EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { getCustomPagePrompts, type CustomPagePrompt } from \"@stackframe/stack-shared/dist/interface/handler-urls\";\nimport { HexclaveAssertionError } from \"@stackframe/stack-shared/dist/utils/errors\";\nimport { getHostedHandlerUrlFromConfig } from \"@stackframe/stack-shared/dist/utils/redirect-urls\";\nimport { envVars } from \"../env\";\nimport { DefaultHandlerUrlTarget, HandlerPageUrls, HandlerUrlOptions, HandlerUrlTarget, HandlerUrls, ResolvedHandlerUrls } from \"./common\";\n\nconst localUrlPlaceholderOrigin = \"http://example.com\";\nconst schemePrefixRegex = /^[a-zA-Z][a-zA-Z\\d+\\-.]*:/;\n\nconst customPagePrompts: Record<keyof Omit<HandlerPageUrls, \"handler\">, CustomPagePrompt> = getCustomPagePrompts();\n\nconst joinHandlerComponentPath = (basePath: string, pagePath: string): string => {\n const normalizedBasePath = basePath.endsWith(\"/\") && basePath.length > 1\n ? basePath.slice(0, -1)\n : basePath;\n if (pagePath.length === 0) {\n return normalizedBasePath;\n }\n if (normalizedBasePath === \"/\") {\n return `/${pagePath}`;\n }\n return `${normalizedBasePath}/${pagePath}`;\n};\n\nconst getHostedPagePathForHandlerName = (handlerName: keyof HandlerUrls): string => {\n switch (handlerName) {\n case \"handler\": {\n return \"\";\n }\n case \"home\": {\n return \"\";\n }\n case \"afterSignIn\": {\n return \"\";\n }\n case \"afterSignUp\": {\n return \"\";\n }\n case \"afterSignOut\": {\n return \"\";\n }\n case \"signIn\": {\n return \"sign-in\";\n }\n case \"signUp\": {\n return \"sign-up\";\n }\n case \"signOut\": {\n return \"sign-out\";\n }\n case \"emailVerification\": {\n return \"email-verification\";\n }\n case \"passwordReset\": {\n return \"password-reset\";\n }\n case \"forgotPassword\": {\n return \"forgot-password\";\n }\n case \"oauthCallback\": {\n return \"oauth-callback\";\n }\n case \"magicLinkCallback\": {\n return \"magic-link-callback\";\n }\n case \"accountSettings\": {\n return \"account-settings\";\n }\n case \"teamInvitation\": {\n return \"team-invitation\";\n }\n case \"cliAuthConfirm\": {\n return \"cli-auth-confirm\";\n }\n case \"mfa\": {\n return \"mfa\";\n }\n case \"error\": {\n return \"error\";\n }\n case \"onboarding\": {\n return \"onboarding\";\n }\n }\n};\n\nconst resolveCustomTargetUrl = (options: {\n target: { type: \"custom\", url: string, version: number },\n handlerName: keyof HandlerUrls,\n}): string => {\n const handlerName = options.handlerName;\n if (handlerName in customPagePrompts) {\n const customPagePrompt = customPagePrompts[handlerName as keyof typeof customPagePrompts];\n if (options.target.version === 0 || options.target.version in customPagePrompt.versions) {\n return options.target.url;\n }\n\n throw new Error(`Unsupported custom page version ${options.target.version} for ${options.handlerName} page at ${options.target.url}. The latest supported version of this page is ${Math.max(0, ...Object.keys(customPagePrompt.versions).map(Number))}. Please upgrade your Hexclave SDK to a version that supports this version.`);\n } else {\n throw new Error(`URL target ${options.handlerName} cannot be a custom page. Please specify the URL as a string instead.`);\n }\n};\n\nexport const getHostedHandlerUrl = (options: { projectId: string, pagePath: string }): string => {\n const normalizedPagePath = options.pagePath.replace(/^\\/+/, \"\");\n const hostedPath = normalizedPagePath.length > 0 ? `handler/${normalizedPagePath}` : \"handler\";\n return getHostedHandlerUrlFromConfig({\n projectId: options.projectId,\n hostedPath,\n hostedHandlerDomainSuffix: envVars.NEXT_PUBLIC_STACK_HOSTED_HANDLER_DOMAIN_SUFFIX,\n hostedHandlerUrlTemplate: envVars.NEXT_PUBLIC_STACK_HOSTED_HANDLER_URL_TEMPLATE,\n stackPortPrefix: envVars.NEXT_PUBLIC_HEXCLAVE_PORT_PREFIX,\n });\n};\n\nconst isRelativeUrlString = (url: string): boolean => {\n if (url.startsWith(\"//\")) {\n return false;\n }\n return !schemePrefixRegex.test(url);\n};\n\nexport const isLocalHandlerUrlTarget = (options: {\n targetUrl: string,\n handlerPath: string,\n currentOrigin?: string,\n}): boolean => {\n const urlObject = new URL(options.targetUrl, localUrlPlaceholderOrigin);\n const isHandlerPathTarget = urlObject.pathname === options.handlerPath\n || urlObject.pathname.startsWith(`${options.handlerPath}/`);\n if (!isHandlerPathTarget) {\n return false;\n }\n\n // On server we only have path information, so treat matching handler paths as local.\n if (options.currentOrigin == null) {\n return true;\n }\n\n return isRelativeUrlString(options.targetUrl) || urlObject.origin === options.currentOrigin;\n};\n\nconst resolveUrlTarget = (options: {\n target: HandlerUrlTarget,\n fallbackPath: string,\n handlerName: keyof HandlerUrls,\n projectId: string,\n}): string => {\n if (typeof options.target === \"string\") {\n return options.target;\n }\n\n switch (options.target.type) {\n case \"handler-component\": {\n return options.fallbackPath;\n }\n case \"hosted\": {\n return getHostedHandlerUrl({\n projectId: options.projectId,\n pagePath: getHostedPagePathForHandlerName(options.handlerName),\n });\n }\n case \"custom\": {\n return resolveCustomTargetUrl({\n target: options.target,\n handlerName: options.handlerName,\n });\n }\n }\n};\n\nconst assertOAuthCallbackTargetIsRelative = (target: HandlerUrlTarget): void => {\n const url = typeof target === \"string\"\n ? target\n : target.type === \"custom\"\n ? target.url\n : null;\n if (url != null && !isRelativeUrlString(url)) {\n throw new HexclaveAssertionError(\"OAuth callback URLs must be relative.\", {\n oauthCallbackUrl: url,\n hint: \"Use a relative URL like '/handler/oauth-callback', or use { type: 'hosted' } to let Stack use the current page for hosted callbacks.\",\n });\n }\n};\n\nexport const resolveHandlerUrls = (options: { urls: HandlerUrlOptions | undefined, projectId: string }): ResolvedHandlerUrls => {\n const configuredUrls = options.urls;\n const defaultTarget = configuredUrls?.default ?? { type: \"handler-component\" } as const;\n const oauthCallbackTarget: HandlerUrlTarget = configuredUrls?.oauthCallback ?? (\n defaultTarget.type === \"hosted\"\n ? defaultTarget\n : { type: \"handler-component\" }\n );\n assertOAuthCallbackTargetIsRelative(oauthCallbackTarget);\n let handlerComponentBasePath = \"/handler\";\n if (typeof configuredUrls?.handler === \"string\") {\n handlerComponentBasePath = configuredUrls.handler;\n } else if (configuredUrls?.handler != null && configuredUrls.handler.type === \"custom\") {\n handlerComponentBasePath = resolveCustomTargetUrl({\n target: configuredUrls.handler,\n handlerName: \"handler\",\n });\n }\n\n const home = resolveUrlTarget({\n target: configuredUrls?.home ?? defaultTarget,\n fallbackPath: \"/\",\n handlerName: \"home\",\n projectId: options.projectId,\n });\n const afterSignIn = resolveUrlTarget({\n target: configuredUrls?.afterSignIn ?? defaultTarget,\n fallbackPath: home,\n handlerName: \"afterSignIn\",\n projectId: options.projectId,\n });\n\n return {\n handler: resolveUrlTarget({\n target: configuredUrls?.handler ?? defaultTarget,\n fallbackPath: handlerComponentBasePath,\n handlerName: \"handler\",\n projectId: options.projectId,\n }),\n signIn: resolveUrlTarget({\n target: configuredUrls?.signIn ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"sign-in\"),\n handlerName: \"signIn\",\n projectId: options.projectId,\n }),\n signUp: resolveUrlTarget({\n target: configuredUrls?.signUp ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"sign-up\"),\n handlerName: \"signUp\",\n projectId: options.projectId,\n }),\n afterSignIn,\n afterSignUp: resolveUrlTarget({\n target: configuredUrls?.afterSignUp ?? defaultTarget,\n fallbackPath: afterSignIn,\n handlerName: \"afterSignUp\",\n projectId: options.projectId,\n }),\n signOut: resolveUrlTarget({\n target: configuredUrls?.signOut ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"sign-out\"),\n handlerName: \"signOut\",\n projectId: options.projectId,\n }),\n afterSignOut: resolveUrlTarget({\n target: configuredUrls?.afterSignOut ?? defaultTarget,\n fallbackPath: home,\n handlerName: \"afterSignOut\",\n projectId: options.projectId,\n }),\n emailVerification: resolveUrlTarget({\n target: configuredUrls?.emailVerification ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"email-verification\"),\n handlerName: \"emailVerification\",\n projectId: options.projectId,\n }),\n passwordReset: resolveUrlTarget({\n target: configuredUrls?.passwordReset ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"password-reset\"),\n handlerName: \"passwordReset\",\n projectId: options.projectId,\n }),\n forgotPassword: resolveUrlTarget({\n target: configuredUrls?.forgotPassword ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"forgot-password\"),\n handlerName: \"forgotPassword\",\n projectId: options.projectId,\n }),\n home,\n oauthCallback: resolveUrlTarget({\n target: oauthCallbackTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"oauth-callback\"),\n handlerName: \"oauthCallback\",\n projectId: options.projectId,\n }),\n magicLinkCallback: resolveUrlTarget({\n target: configuredUrls?.magicLinkCallback ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"magic-link-callback\"),\n handlerName: \"magicLinkCallback\",\n projectId: options.projectId,\n }),\n accountSettings: resolveUrlTarget({\n target: configuredUrls?.accountSettings ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"account-settings\"),\n handlerName: \"accountSettings\",\n projectId: options.projectId,\n }),\n teamInvitation: resolveUrlTarget({\n target: configuredUrls?.teamInvitation ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"team-invitation\"),\n handlerName: \"teamInvitation\",\n projectId: options.projectId,\n }),\n cliAuthConfirm: resolveUrlTarget({\n target: configuredUrls?.cliAuthConfirm ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"cli-auth-confirm\"),\n handlerName: \"cliAuthConfirm\",\n projectId: options.projectId,\n }),\n mfa: resolveUrlTarget({\n target: configuredUrls?.mfa ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"mfa\"),\n handlerName: \"mfa\",\n projectId: options.projectId,\n }),\n error: resolveUrlTarget({\n target: configuredUrls?.error ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"error\"),\n handlerName: \"error\",\n projectId: options.projectId,\n }),\n onboarding: resolveUrlTarget({\n target: configuredUrls?.onboarding ?? defaultTarget,\n fallbackPath: joinHandlerComponentPath(handlerComponentBasePath, \"onboarding\"),\n handlerName: \"onboarding\",\n projectId: options.projectId,\n }),\n };\n};\n\nexport const buildCliAuthConfirmUrl = (options: {\n cliAuthConfirmUrl: string,\n /** Used as the base URL only when cliAuthConfirmUrl is relative. */\n appUrl: string,\n loginCode: string,\n}): string => {\n const url = new URL(options.cliAuthConfirmUrl, options.appUrl);\n url.searchParams.set(\"login_code\", options.loginCode);\n return url.toString();\n};\n\nexport const resolveUnknownHandlerPathFallbackUrl = (options: {\n defaultTarget: DefaultHandlerUrlTarget | undefined,\n projectId: string,\n unknownPath: string,\n}): string | null => {\n const defaultTarget = options.defaultTarget ?? { type: \"handler-component\" } satisfies DefaultHandlerUrlTarget;\n\n switch (defaultTarget.type) {\n case \"handler-component\": {\n return null;\n }\n case \"hosted\": {\n return getHostedHandlerUrl({\n projectId: options.projectId,\n pagePath: options.unknownPath,\n });\n }\n }\n};\n\nexport function getPagePrompt(pageName: string, currentVersion?: number): { title: string; fullPrompt: string; upgradePrompt: string | null; latestVersion: number } | null {\n if (!(pageName in customPagePrompts)) return null;\n const prompt = customPagePrompts[pageName as keyof typeof customPagePrompts];\n const versionKeys = Object.keys(prompt.versions).map(Number);\n const latestVersion = versionKeys.length > 0 ? Math.max(...versionKeys) : 0;\n\n let upgradePrompt: string | null = null;\n if (currentVersion != null) {\n const relevantVersions = versionKeys\n .filter(v => v > currentVersion)\n .sort((a, b) => a - b);\n const prompts = relevantVersions\n .map(v => prompt.versions[v].upgradePrompt)\n .filter(p => p.length > 0);\n upgradePrompt = prompts.length > 0 ? prompts.join(\"\\n\\n\") : null;\n } else {\n const upgradeEntry = latestVersion > 0 ? prompt.versions[latestVersion] : undefined;\n upgradePrompt = upgradeEntry?.upgradePrompt ?? null;\n }\n\n return { title: prompt.title, fullPrompt: prompt.fullPrompt, upgradePrompt, latestVersion };\n}\n\nexport const isHostedHandlerUrlForProject = (options: { url: string, projectId: string }): boolean => {\n let parsedUrl: URL;\n try {\n parsedUrl = new URL(options.url);\n } catch {\n return false;\n }\n\n const hostedBaseUrl = new URL(getHostedHandlerUrl({ projectId: options.projectId, pagePath: \"\" }));\n return parsedUrl.origin === hostedBaseUrl.origin\n && (parsedUrl.pathname === hostedBaseUrl.pathname || parsedUrl.pathname.startsWith(`${hostedBaseUrl.pathname}/`));\n};\n"],"mappings":"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"}