@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 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../../src/lib/stack-app/apps/implementations/index.ts"],"mappings":";;;;;cA8BE,kBAAA,SAAkB,4BAAA,EAAA,mBAAA,SACC,6BAAA,EAAA,mBAAA,SACA,6BAAA"}
@@ -0,0 +1,31 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_chunk = require('../../../../chunk-BE-pF4vm.js');
3
+ let __server_app_impl_js = require("./server-app-impl.js");
4
+ let _stackframe_stack_shared_dist_utils_compile_time = require("@hexclave/shared/dist/utils/compile-time");
5
+ let __admin_app_impl_js = require("./admin-app-impl.js");
6
+ let __client_app_impl_js = require("./client-app-impl.js");
7
+
8
+ //#region src/lib/stack-app/apps/implementations/index.ts
9
+ /**
10
+ * Prevents a circular dependency between the client and admin apps. For more information, see the documentation comment
11
+ * of `_StackClientAppImplIncomplete.LazyStackAdminAppImpl`.
12
+ *
13
+ * Note: This is an explicitly defined function that returns the new values (and not a barrel file with top-level side
14
+ * effects) because we have `sideEffects: false` in the package.json, and so it would be tree-shaken away if we just
15
+ * exported the values directly.
16
+ */
17
+ function complete() {
18
+ __client_app_impl_js._StackClientAppImplIncomplete.LazyStackAdminAppImpl.value = __admin_app_impl_js._StackAdminAppImplIncomplete;
19
+ return {
20
+ _StackAdminAppImpl: (0, _stackframe_stack_shared_dist_utils_compile_time.scrambleDuringCompileTime)(__admin_app_impl_js._StackAdminAppImplIncomplete),
21
+ _StackClientAppImpl: (0, _stackframe_stack_shared_dist_utils_compile_time.scrambleDuringCompileTime)(__client_app_impl_js._StackClientAppImplIncomplete),
22
+ _StackServerAppImpl: (0, _stackframe_stack_shared_dist_utils_compile_time.scrambleDuringCompileTime)(__server_app_impl_js._StackServerAppImplIncomplete)
23
+ };
24
+ }
25
+ const { _StackAdminAppImpl, _StackClientAppImpl, _StackServerAppImpl } = complete();
26
+
27
+ //#endregion
28
+ exports._StackAdminAppImpl = _StackAdminAppImpl;
29
+ exports._StackClientAppImpl = _StackClientAppImpl;
30
+ exports._StackServerAppImpl = _StackServerAppImpl;
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_StackAdminAppImplIncomplete","_StackClientAppImplIncomplete","_StackServerAppImplIncomplete"],"sources":["../../../../../src/lib/stack-app/apps/implementations/index.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY, INSTEAD EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\n\nimport { scrambleDuringCompileTime } from \"@stackframe/stack-shared/dist/utils/compile-time\";\nimport { _StackAdminAppImplIncomplete } from \"./admin-app-impl\";\nimport { _StackClientAppImplIncomplete } from \"./client-app-impl\";\nimport { _StackServerAppImplIncomplete } from \"./server-app-impl\";\n\n\n/**\n * Prevents a circular dependency between the client and admin apps. For more information, see the documentation comment\n * of `_StackClientAppImplIncomplete.LazyStackAdminAppImpl`.\n *\n * Note: This is an explicitly defined function that returns the new values (and not a barrel file with top-level side\n * effects) because we have `sideEffects: false` in the package.json, and so it would be tree-shaken away if we just\n * exported the values directly.\n */\nfunction complete() {\n _StackClientAppImplIncomplete.LazyStackAdminAppImpl.value = _StackAdminAppImplIncomplete;\n\n return {\n _StackAdminAppImpl: scrambleDuringCompileTime(_StackAdminAppImplIncomplete),\n _StackClientAppImpl: scrambleDuringCompileTime(_StackClientAppImplIncomplete),\n _StackServerAppImpl: scrambleDuringCompileTime(_StackServerAppImplIncomplete),\n };\n}\n\nexport const {\n _StackAdminAppImpl,\n _StackClientAppImpl,\n _StackServerAppImpl\n} = complete();\n\n"],"mappings":";;;;;;;;;;;;;;;;AAmBA,SAAS,WAAW;AAClB,oDAA8B,sBAAsB,QAAQA;AAE5D,QAAO;EACL,oGAA8CA,iDAA6B;EAC3E,qGAA+CC,mDAA8B;EAC7E,qGAA+CC,mDAA8B;EAC9E;;AAGH,MAAa,EACX,oBACA,qBACA,wBACE,UAAU"}
@@ -0,0 +1,35 @@
1
+ import { HandlerUrls } from "../../common.js";
2
+
3
+ //#region src/lib/stack-app/apps/implementations/redirect-page-urls.d.ts
4
+ declare const crossDomainAuthQueryParams: {
5
+ readonly marker: "hexclave_cross_domain_auth";
6
+ readonly state: "hexclave_cross_domain_state";
7
+ readonly codeChallenge: "hexclave_cross_domain_code_challenge";
8
+ readonly afterCallbackRedirectUrl: "hexclave_cross_domain_after_callback_redirect_url";
9
+ };
10
+ type CrossDomainHandoffParams = {
11
+ state: string;
12
+ codeChallenge: string;
13
+ };
14
+ declare function getCrossDomainHandoffParamsFromCurrentUrl(currentUrl: URL): CrossDomainHandoffParams | null;
15
+ type RedirectToHandlerPlan = {
16
+ type: "redirect";
17
+ url: string;
18
+ } | {
19
+ type: "cross-domain-authorize";
20
+ redirectUri: string;
21
+ state: string;
22
+ codeChallenge: string;
23
+ afterCallbackRedirectUrl: string;
24
+ };
25
+ declare function planRedirectToHandler(options: {
26
+ handlerName: keyof HandlerUrls;
27
+ rawHandlerUrl: string;
28
+ noRedirectBack: boolean;
29
+ currentUrl: URL | null;
30
+ localOAuthCallbackUrl: string;
31
+ getCrossDomainHandoffParams: (currentUrl: URL) => Promise<CrossDomainHandoffParams>;
32
+ }): Promise<RedirectToHandlerPlan>;
33
+ //#endregion
34
+ export { CrossDomainHandoffParams, crossDomainAuthQueryParams, getCrossDomainHandoffParamsFromCurrentUrl, planRedirectToHandler };
35
+ //# sourceMappingURL=redirect-page-urls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redirect-page-urls.d.ts","names":[],"sources":["../../../../../src/lib/stack-app/apps/implementations/redirect-page-urls.ts"],"mappings":";;;cAQa,0BAAA;EAAA;;;;;KAqBD,wBAAA;EACV,KAAA;EACA,aAAA;AAAA;AAAA,iBAGc,yCAAA,CAA0C,UAAA,EAAY,GAAA,GAAM,wBAAA;AAAA,KAkIvE,qBAAA;EACC,IAAA;EAAkB,GAAA;AAAA;EAEpB,IAAA;EACA,WAAA;EACA,KAAA;EACA,aAAA;EACA,wBAAA;AAAA;AAAA,iBAsCkB,qBAAA,CAAsB,OAAA;EAC1C,WAAA,QAAmB,WAAA;EACnB,aAAA;EACA,cAAA;EACA,UAAA,EAAY,GAAA;EACZ,qBAAA;EACA,2BAAA,GAA8B,UAAA,EAAY,GAAA,KAAQ,OAAA,CAAQ,wBAAA;AAAA,IACxD,OAAA,CAAQ,qBAAA"}
@@ -0,0 +1,201 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_chunk = require('../../../../chunk-BE-pF4vm.js');
3
+ let _stackframe_stack_shared_dist_utils_urls = require("@hexclave/shared/dist/utils/urls");
4
+ let _stackframe_stack_shared_dist_utils_errors = require("@hexclave/shared/dist/utils/errors");
5
+
6
+ //#region src/lib/stack-app/apps/implementations/redirect-page-urls.ts
7
+ const crossDomainAuthQueryParams = {
8
+ marker: "hexclave_cross_domain_auth",
9
+ state: "hexclave_cross_domain_state",
10
+ codeChallenge: "hexclave_cross_domain_code_challenge",
11
+ afterCallbackRedirectUrl: "hexclave_cross_domain_after_callback_redirect_url"
12
+ };
13
+ function getCrossDomainParam(params, key) {
14
+ return params.get(crossDomainAuthQueryParams[key]);
15
+ }
16
+ function hasCrossDomainParam(params, key) {
17
+ return params.has(crossDomainAuthQueryParams[key]);
18
+ }
19
+ function setCrossDomainParam(params, key, value) {
20
+ params.set(crossDomainAuthQueryParams[key], value);
21
+ }
22
+ function getCrossDomainHandoffParamsFromCurrentUrl(currentUrl) {
23
+ const state = getCrossDomainParam(currentUrl.searchParams, "state");
24
+ const codeChallenge = getCrossDomainParam(currentUrl.searchParams, "codeChallenge");
25
+ if (state == null || codeChallenge == null) return null;
26
+ return {
27
+ state,
28
+ codeChallenge
29
+ };
30
+ }
31
+ function isRedirectBackAwareHandlerName(handlerName) {
32
+ return handlerName === "signIn" || handlerName === "signUp" || handlerName === "onboarding" || handlerName === "signOut";
33
+ }
34
+ function hasCrossDomainHandoffParams(url) {
35
+ return hasCrossDomainParam(url.searchParams, "state") && hasCrossDomainParam(url.searchParams, "codeChallenge") && hasCrossDomainParam(url.searchParams, "afterCallbackRedirectUrl");
36
+ }
37
+ function buildCrossDomainAuthCallbackUrl(options) {
38
+ const localOAuthCallbackUrl = new URL(options.localOAuthCallbackUrl, options.currentUrl);
39
+ if (localOAuthCallbackUrl.origin !== options.currentUrl.origin) throw new _stackframe_stack_shared_dist_utils_errors.HexclaveAssertionError("Cross-domain auth callback URL must stay on the current origin", {
40
+ localOAuthCallbackUrl: localOAuthCallbackUrl.toString(),
41
+ currentUrl: options.currentUrl.toString()
42
+ });
43
+ setCrossDomainParam(localOAuthCallbackUrl.searchParams, "marker", "1");
44
+ if (options.state != null) setCrossDomainParam(localOAuthCallbackUrl.searchParams, "state", options.state);
45
+ if (options.codeChallenge != null) setCrossDomainParam(localOAuthCallbackUrl.searchParams, "codeChallenge", options.codeChallenge);
46
+ if (options.afterCallbackRedirectUrl != null) setCrossDomainParam(localOAuthCallbackUrl.searchParams, "afterCallbackRedirectUrl", options.afterCallbackRedirectUrl);
47
+ return localOAuthCallbackUrl;
48
+ }
49
+ function buildRedirectBackAwareHandlerUrl(options) {
50
+ const nextUrl = new URL(options.rawHandlerUrl, options.currentUrl);
51
+ const currentAfterAuthReturnTo = options.currentUrl.searchParams.get("after_auth_return_to");
52
+ if (currentAfterAuthReturnTo != null && !nextUrl.searchParams.has("after_auth_return_to")) nextUrl.searchParams.set("after_auth_return_to", currentAfterAuthReturnTo);
53
+ for (const preservedParam of [
54
+ "state",
55
+ "codeChallenge",
56
+ "afterCallbackRedirectUrl"
57
+ ]) {
58
+ const currentValue = getCrossDomainParam(options.currentUrl.searchParams, preservedParam);
59
+ if (currentValue != null && !hasCrossDomainParam(nextUrl.searchParams, preservedParam)) setCrossDomainParam(nextUrl.searchParams, preservedParam, currentValue);
60
+ }
61
+ if (options.handlerName === "signOut") {
62
+ if (!nextUrl.searchParams.has("after_auth_return_to")) if (options.currentUrl.protocol === nextUrl.protocol && options.currentUrl.host === nextUrl.host) nextUrl.searchParams.set("after_auth_return_to", (0, _stackframe_stack_shared_dist_utils_urls.getRelativePart)(options.currentUrl));
63
+ else nextUrl.searchParams.set("after_auth_return_to", options.currentUrl.toString());
64
+ return nextUrl.origin === options.currentUrl.origin ? (0, _stackframe_stack_shared_dist_utils_urls.getRelativePart)(nextUrl) : nextUrl.toString();
65
+ }
66
+ if (options.currentUrl.origin !== nextUrl.origin) {
67
+ if (!hasCrossDomainHandoffParams(nextUrl)) {
68
+ const inheritedAfterAuthReturnTo = options.currentUrl.searchParams.get("after_auth_return_to");
69
+ const afterCallbackRedirectUrl = inheritedAfterAuthReturnTo ? new URL(inheritedAfterAuthReturnTo, options.currentUrl).toString() : options.currentUrl.toString();
70
+ const callbackUrl = buildCrossDomainAuthCallbackUrl({
71
+ currentUrl: options.currentUrl,
72
+ localOAuthCallbackUrl: options.localOAuthCallbackUrl,
73
+ state: options.crossDomainHandoffParams?.state,
74
+ codeChallenge: options.crossDomainHandoffParams?.codeChallenge,
75
+ afterCallbackRedirectUrl
76
+ });
77
+ nextUrl.searchParams.set("after_auth_return_to", callbackUrl.toString());
78
+ setCrossDomainParam(nextUrl.searchParams, "afterCallbackRedirectUrl", afterCallbackRedirectUrl);
79
+ if (options.crossDomainHandoffParams != null) {
80
+ setCrossDomainParam(nextUrl.searchParams, "state", options.crossDomainHandoffParams.state);
81
+ setCrossDomainParam(nextUrl.searchParams, "codeChallenge", options.crossDomainHandoffParams.codeChallenge);
82
+ }
83
+ }
84
+ } else if (options.currentUrl.protocol === nextUrl.protocol && options.currentUrl.host === nextUrl.host && !nextUrl.searchParams.has("after_auth_return_to")) nextUrl.searchParams.set("after_auth_return_to", (0, _stackframe_stack_shared_dist_utils_urls.getRelativePart)(options.currentUrl));
85
+ return nextUrl.origin === options.currentUrl.origin ? (0, _stackframe_stack_shared_dist_utils_urls.getRelativePart)(nextUrl) : nextUrl.toString();
86
+ }
87
+ function getHandlerRedirectPolicy(handlerName) {
88
+ if (handlerName === "afterSignIn" || handlerName === "afterSignUp") return "after-auth-return";
89
+ if (isRedirectBackAwareHandlerName(handlerName)) return "redirect-back-aware";
90
+ return "none";
91
+ }
92
+ async function resolveRedirectBackAwareHandlerUrlForRedirect(options) {
93
+ const initial = buildRedirectBackAwareHandlerUrl({
94
+ handlerName: options.handlerName,
95
+ rawHandlerUrl: options.rawHandlerUrl,
96
+ currentUrl: options.currentUrl,
97
+ crossDomainHandoffParams: null,
98
+ localOAuthCallbackUrl: options.localOAuthCallbackUrl
99
+ });
100
+ if (options.handlerName === "signOut") return initial;
101
+ const initialTarget = new URL(initial, options.currentUrl);
102
+ if (!(options.currentUrl.origin !== initialTarget.origin) || hasCrossDomainHandoffParams(initialTarget)) return initial;
103
+ const crossDomainHandoffParams = await options.getCrossDomainHandoffParams(options.currentUrl);
104
+ return buildRedirectBackAwareHandlerUrl({
105
+ handlerName: options.handlerName,
106
+ rawHandlerUrl: options.rawHandlerUrl,
107
+ currentUrl: options.currentUrl,
108
+ crossDomainHandoffParams,
109
+ localOAuthCallbackUrl: options.localOAuthCallbackUrl
110
+ });
111
+ }
112
+ async function planRedirectToHandler(options) {
113
+ if (options.noRedirectBack || options.currentUrl == null) return {
114
+ type: "redirect",
115
+ url: options.rawHandlerUrl
116
+ };
117
+ const policy = getHandlerRedirectPolicy(options.handlerName);
118
+ if (policy === "none") return {
119
+ type: "redirect",
120
+ url: options.rawHandlerUrl
121
+ };
122
+ if (policy === "after-auth-return") {
123
+ const redirectBackUrl = options.currentUrl.searchParams.get("after_auth_return_to");
124
+ if (redirectBackUrl == null) return {
125
+ type: "redirect",
126
+ url: options.rawHandlerUrl
127
+ };
128
+ const redirectBackTarget = new URL(redirectBackUrl, options.currentUrl);
129
+ const crossDomainHandoff = getCrossDomainHandoffForRedirect({
130
+ currentUrl: options.currentUrl,
131
+ redirectBackTarget
132
+ });
133
+ if (crossDomainHandoff == null) return {
134
+ type: "redirect",
135
+ url: redirectBackUrl
136
+ };
137
+ let state = crossDomainHandoff.handoffParams.state;
138
+ let codeChallenge = crossDomainHandoff.handoffParams.codeChallenge;
139
+ let afterCallbackRedirectUrl = crossDomainHandoff.handoffParams.afterCallbackRedirectUrl;
140
+ if (state == null || codeChallenge == null) {
141
+ const generatedHandoffParams = await options.getCrossDomainHandoffParams(options.currentUrl);
142
+ state ??= generatedHandoffParams.state;
143
+ codeChallenge ??= generatedHandoffParams.codeChallenge;
144
+ }
145
+ afterCallbackRedirectUrl ??= options.currentUrl.toString();
146
+ return {
147
+ type: "cross-domain-authorize",
148
+ redirectUri: crossDomainHandoff.redirectBackTarget.toString(),
149
+ state,
150
+ codeChallenge,
151
+ afterCallbackRedirectUrl
152
+ };
153
+ }
154
+ if (options.handlerName !== "signIn" && options.handlerName !== "signUp" && options.handlerName !== "onboarding" && options.handlerName !== "signOut") throw new _stackframe_stack_shared_dist_utils_errors.HexclaveAssertionError("Unexpected redirect-back-aware handler policy mismatch", {
155
+ handlerName: options.handlerName,
156
+ policy
157
+ });
158
+ return {
159
+ type: "redirect",
160
+ url: await resolveRedirectBackAwareHandlerUrlForRedirect({
161
+ handlerName: options.handlerName,
162
+ rawHandlerUrl: options.rawHandlerUrl,
163
+ currentUrl: options.currentUrl,
164
+ localOAuthCallbackUrl: options.localOAuthCallbackUrl,
165
+ getCrossDomainHandoffParams: options.getCrossDomainHandoffParams
166
+ })
167
+ };
168
+ }
169
+ function readCrossDomainHandoffParams(currentUrl, redirectBackTarget) {
170
+ return {
171
+ state: getCrossDomainParam(currentUrl.searchParams, "state") ?? getCrossDomainParam(redirectBackTarget.searchParams, "state"),
172
+ codeChallenge: getCrossDomainParam(currentUrl.searchParams, "codeChallenge") ?? getCrossDomainParam(redirectBackTarget.searchParams, "codeChallenge"),
173
+ afterCallbackRedirectUrl: getCrossDomainParam(currentUrl.searchParams, "afterCallbackRedirectUrl") ?? getCrossDomainParam(redirectBackTarget.searchParams, "afterCallbackRedirectUrl")
174
+ };
175
+ }
176
+ function resolveCrossDomainRedirectBackTarget(options) {
177
+ if (options.redirectBackTarget.origin !== options.currentUrl.origin) return options.redirectBackTarget;
178
+ if (options.handoffParams.state == null || options.handoffParams.codeChallenge == null || options.handoffParams.afterCallbackRedirectUrl == null) return null;
179
+ const afterCallbackRedirectTarget = new URL(options.handoffParams.afterCallbackRedirectUrl, options.currentUrl);
180
+ if (afterCallbackRedirectTarget.origin === options.currentUrl.origin) return null;
181
+ return new URL(`${options.redirectBackTarget.pathname}${options.redirectBackTarget.search}${options.redirectBackTarget.hash}`, afterCallbackRedirectTarget.origin);
182
+ }
183
+ function getCrossDomainHandoffForRedirect(options) {
184
+ const handoffParams = readCrossDomainHandoffParams(options.currentUrl, options.redirectBackTarget);
185
+ const crossDomainRedirectBackTarget = resolveCrossDomainRedirectBackTarget({
186
+ currentUrl: options.currentUrl,
187
+ redirectBackTarget: options.redirectBackTarget,
188
+ handoffParams
189
+ });
190
+ if (crossDomainRedirectBackTarget == null) return null;
191
+ return {
192
+ redirectBackTarget: crossDomainRedirectBackTarget,
193
+ handoffParams
194
+ };
195
+ }
196
+
197
+ //#endregion
198
+ exports.crossDomainAuthQueryParams = crossDomainAuthQueryParams;
199
+ exports.getCrossDomainHandoffParamsFromCurrentUrl = getCrossDomainHandoffParamsFromCurrentUrl;
200
+ exports.planRedirectToHandler = planRedirectToHandler;
201
+ //# sourceMappingURL=redirect-page-urls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redirect-page-urls.js","names":["HexclaveAssertionError"],"sources":["../../../../../src/lib/stack-app/apps/implementations/redirect-page-urls.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 { HexclaveAssertionError } from \"@stackframe/stack-shared/dist/utils/errors\";\nimport { getRelativePart } from \"@stackframe/stack-shared/dist/utils/urls\";\nimport { HandlerUrls } from \"../../common\";\n\nexport const crossDomainAuthQueryParams = {\n marker: \"hexclave_cross_domain_auth\",\n state: \"hexclave_cross_domain_state\",\n codeChallenge: \"hexclave_cross_domain_code_challenge\",\n afterCallbackRedirectUrl: \"hexclave_cross_domain_after_callback_redirect_url\",\n} as const;\n\ntype CrossDomainAuthQueryParamKey = keyof typeof crossDomainAuthQueryParams;\n\nfunction getCrossDomainParam(params: URLSearchParams, key: CrossDomainAuthQueryParamKey): string | null {\n return params.get(crossDomainAuthQueryParams[key]);\n}\n\nfunction hasCrossDomainParam(params: URLSearchParams, key: CrossDomainAuthQueryParamKey): boolean {\n return params.has(crossDomainAuthQueryParams[key]);\n}\n\nfunction setCrossDomainParam(params: URLSearchParams, key: CrossDomainAuthQueryParamKey, value: string): void {\n params.set(crossDomainAuthQueryParams[key], value);\n}\n\nexport type CrossDomainHandoffParams = {\n state: string,\n codeChallenge: string,\n};\n\nexport function getCrossDomainHandoffParamsFromCurrentUrl(currentUrl: URL): CrossDomainHandoffParams | null {\n const state = getCrossDomainParam(currentUrl.searchParams, \"state\");\n const codeChallenge = getCrossDomainParam(currentUrl.searchParams, \"codeChallenge\");\n if (state == null || codeChallenge == null) {\n return null;\n }\n return { state, codeChallenge };\n}\n\ntype RedirectBackAwareHandlerName = \"signIn\" | \"signUp\" | \"onboarding\" | \"signOut\";\ntype HandlerRedirectPolicy = \"none\" | \"redirect-back-aware\" | \"after-auth-return\";\n\ntype CrossDomainHandoffParamsMaybeMissing = {\n state: string | null,\n codeChallenge: string | null,\n afterCallbackRedirectUrl: string | null,\n};\n\nfunction isRedirectBackAwareHandlerName(handlerName: keyof HandlerUrls): handlerName is RedirectBackAwareHandlerName {\n return handlerName === \"signIn\"\n || handlerName === \"signUp\"\n || handlerName === \"onboarding\"\n || handlerName === \"signOut\";\n}\n\nfunction hasCrossDomainHandoffParams(url: URL): boolean {\n return (\n hasCrossDomainParam(url.searchParams, \"state\")\n && hasCrossDomainParam(url.searchParams, \"codeChallenge\")\n && hasCrossDomainParam(url.searchParams, \"afterCallbackRedirectUrl\")\n );\n}\n\nfunction buildCrossDomainAuthCallbackUrl(options: {\n currentUrl: URL,\n localOAuthCallbackUrl: string,\n state?: string,\n codeChallenge?: string,\n afterCallbackRedirectUrl?: string,\n}): URL {\n const localOAuthCallbackUrl = new URL(options.localOAuthCallbackUrl, options.currentUrl);\n if (localOAuthCallbackUrl.origin !== options.currentUrl.origin) {\n throw new HexclaveAssertionError(\"Cross-domain auth callback URL must stay on the current origin\", {\n localOAuthCallbackUrl: localOAuthCallbackUrl.toString(),\n currentUrl: options.currentUrl.toString(),\n });\n }\n setCrossDomainParam(localOAuthCallbackUrl.searchParams, \"marker\", \"1\");\n if (options.state != null) {\n setCrossDomainParam(localOAuthCallbackUrl.searchParams, \"state\", options.state);\n }\n if (options.codeChallenge != null) {\n setCrossDomainParam(localOAuthCallbackUrl.searchParams, \"codeChallenge\", options.codeChallenge);\n }\n if (options.afterCallbackRedirectUrl != null) {\n setCrossDomainParam(localOAuthCallbackUrl.searchParams, \"afterCallbackRedirectUrl\", options.afterCallbackRedirectUrl);\n }\n return localOAuthCallbackUrl;\n}\n\nfunction buildRedirectBackAwareHandlerUrl(options: {\n handlerName: RedirectBackAwareHandlerName,\n rawHandlerUrl: string,\n currentUrl: URL,\n crossDomainHandoffParams: CrossDomainHandoffParams | null,\n localOAuthCallbackUrl: string,\n}): string {\n const nextUrl = new URL(options.rawHandlerUrl, options.currentUrl);\n // Preserve after_auth_return_to verbatim (not a rebranded param).\n const currentAfterAuthReturnTo = options.currentUrl.searchParams.get(\"after_auth_return_to\");\n if (currentAfterAuthReturnTo != null && !nextUrl.searchParams.has(\"after_auth_return_to\")) {\n nextUrl.searchParams.set(\"after_auth_return_to\", currentAfterAuthReturnTo);\n }\n for (const preservedParam of [\"state\", \"codeChallenge\", \"afterCallbackRedirectUrl\"] as const) {\n const currentValue = getCrossDomainParam(options.currentUrl.searchParams, preservedParam);\n if (currentValue != null && !hasCrossDomainParam(nextUrl.searchParams, preservedParam)) {\n setCrossDomainParam(nextUrl.searchParams, preservedParam, currentValue);\n }\n }\n\n if (options.handlerName === \"signOut\") {\n if (!nextUrl.searchParams.has(\"after_auth_return_to\")) {\n if (options.currentUrl.protocol === nextUrl.protocol && options.currentUrl.host === nextUrl.host) {\n nextUrl.searchParams.set(\"after_auth_return_to\", getRelativePart(options.currentUrl));\n } else {\n nextUrl.searchParams.set(\"after_auth_return_to\", options.currentUrl.toString());\n }\n }\n return nextUrl.origin === options.currentUrl.origin ? getRelativePart(nextUrl) : nextUrl.toString();\n }\n\n const isCrossDomainHandlerRedirect = options.currentUrl.origin !== nextUrl.origin;\n if (isCrossDomainHandlerRedirect) {\n if (!hasCrossDomainHandoffParams(nextUrl)) {\n const inheritedAfterAuthReturnTo = options.currentUrl.searchParams.get(\"after_auth_return_to\");\n const afterCallbackRedirectUrl = inheritedAfterAuthReturnTo\n ? new URL(inheritedAfterAuthReturnTo, options.currentUrl).toString()\n : options.currentUrl.toString();\n const callbackUrl = buildCrossDomainAuthCallbackUrl({\n currentUrl: options.currentUrl,\n localOAuthCallbackUrl: options.localOAuthCallbackUrl,\n state: options.crossDomainHandoffParams?.state,\n codeChallenge: options.crossDomainHandoffParams?.codeChallenge,\n afterCallbackRedirectUrl,\n });\n\n nextUrl.searchParams.set(\"after_auth_return_to\", callbackUrl.toString());\n setCrossDomainParam(nextUrl.searchParams, \"afterCallbackRedirectUrl\", afterCallbackRedirectUrl);\n if (options.crossDomainHandoffParams != null) {\n setCrossDomainParam(nextUrl.searchParams, \"state\", options.crossDomainHandoffParams.state);\n setCrossDomainParam(nextUrl.searchParams, \"codeChallenge\", options.crossDomainHandoffParams.codeChallenge);\n }\n }\n } else if (options.currentUrl.protocol === nextUrl.protocol && options.currentUrl.host === nextUrl.host && !nextUrl.searchParams.has(\"after_auth_return_to\")) {\n nextUrl.searchParams.set(\"after_auth_return_to\", getRelativePart(options.currentUrl));\n }\n\n return nextUrl.origin === options.currentUrl.origin ? getRelativePart(nextUrl) : nextUrl.toString();\n}\n\nfunction getHandlerRedirectPolicy(handlerName: keyof HandlerUrls): HandlerRedirectPolicy {\n if (handlerName === \"afterSignIn\" || handlerName === \"afterSignUp\") {\n return \"after-auth-return\";\n }\n if (isRedirectBackAwareHandlerName(handlerName)) {\n return \"redirect-back-aware\";\n }\n return \"none\";\n}\n\ntype RedirectToHandlerPlan =\n | { type: \"redirect\", url: string }\n | {\n type: \"cross-domain-authorize\",\n redirectUri: string,\n state: string,\n codeChallenge: string,\n afterCallbackRedirectUrl: string,\n };\n\n\nasync function resolveRedirectBackAwareHandlerUrlForRedirect(options: {\n handlerName: RedirectBackAwareHandlerName,\n rawHandlerUrl: string,\n currentUrl: URL,\n localOAuthCallbackUrl: string,\n getCrossDomainHandoffParams: (currentUrl: URL) => Promise<CrossDomainHandoffParams>,\n}): Promise<string> {\n const initial = buildRedirectBackAwareHandlerUrl({\n handlerName: options.handlerName,\n rawHandlerUrl: options.rawHandlerUrl,\n currentUrl: options.currentUrl,\n crossDomainHandoffParams: null,\n localOAuthCallbackUrl: options.localOAuthCallbackUrl,\n });\n if (options.handlerName === \"signOut\") {\n return initial;\n }\n\n const initialTarget = new URL(initial, options.currentUrl);\n const isCrossDomainHandlerRedirect = options.currentUrl.origin !== initialTarget.origin;\n if (!isCrossDomainHandlerRedirect || hasCrossDomainHandoffParams(initialTarget)) {\n return initial;\n }\n\n const crossDomainHandoffParams = await options.getCrossDomainHandoffParams(options.currentUrl);\n return buildRedirectBackAwareHandlerUrl({\n handlerName: options.handlerName,\n rawHandlerUrl: options.rawHandlerUrl,\n currentUrl: options.currentUrl,\n crossDomainHandoffParams,\n localOAuthCallbackUrl: options.localOAuthCallbackUrl,\n });\n}\n\nexport async function planRedirectToHandler(options: {\n handlerName: keyof HandlerUrls,\n rawHandlerUrl: string,\n noRedirectBack: boolean,\n currentUrl: URL | null,\n localOAuthCallbackUrl: string,\n getCrossDomainHandoffParams: (currentUrl: URL) => Promise<CrossDomainHandoffParams>,\n}): Promise<RedirectToHandlerPlan> {\n if (options.noRedirectBack || options.currentUrl == null) {\n return { type: \"redirect\", url: options.rawHandlerUrl };\n }\n\n const policy = getHandlerRedirectPolicy(options.handlerName);\n if (policy === \"none\") {\n return { type: \"redirect\", url: options.rawHandlerUrl };\n }\n\n if (policy === \"after-auth-return\") {\n const redirectBackUrl = options.currentUrl.searchParams.get(\"after_auth_return_to\");\n if (redirectBackUrl == null) {\n return { type: \"redirect\", url: options.rawHandlerUrl };\n }\n const redirectBackTarget = new URL(redirectBackUrl, options.currentUrl);\n const crossDomainHandoff = getCrossDomainHandoffForRedirect({\n currentUrl: options.currentUrl,\n redirectBackTarget,\n });\n if (crossDomainHandoff == null) {\n return { type: \"redirect\", url: redirectBackUrl };\n }\n let state = crossDomainHandoff.handoffParams.state;\n let codeChallenge = crossDomainHandoff.handoffParams.codeChallenge;\n let afterCallbackRedirectUrl = crossDomainHandoff.handoffParams.afterCallbackRedirectUrl;\n if (state == null || codeChallenge == null) {\n const generatedHandoffParams = await options.getCrossDomainHandoffParams(options.currentUrl);\n state ??= generatedHandoffParams.state;\n codeChallenge ??= generatedHandoffParams.codeChallenge;\n }\n afterCallbackRedirectUrl ??= options.currentUrl.toString();\n return {\n type: \"cross-domain-authorize\",\n redirectUri: crossDomainHandoff.redirectBackTarget.toString(),\n state,\n codeChallenge,\n afterCallbackRedirectUrl,\n };\n }\n\n if (\n options.handlerName !== \"signIn\"\n && options.handlerName !== \"signUp\"\n && options.handlerName !== \"onboarding\"\n && options.handlerName !== \"signOut\"\n ) {\n throw new HexclaveAssertionError(\"Unexpected redirect-back-aware handler policy mismatch\", {\n handlerName: options.handlerName,\n policy,\n });\n }\n\n return {\n type: \"redirect\",\n url: await resolveRedirectBackAwareHandlerUrlForRedirect({\n handlerName: options.handlerName,\n rawHandlerUrl: options.rawHandlerUrl,\n currentUrl: options.currentUrl,\n localOAuthCallbackUrl: options.localOAuthCallbackUrl,\n getCrossDomainHandoffParams: options.getCrossDomainHandoffParams,\n }),\n };\n}\n\nfunction readCrossDomainHandoffParams(currentUrl: URL, redirectBackTarget: URL): CrossDomainHandoffParamsMaybeMissing {\n // Hexclave rebrand: accept either param name from both URLs.\n const state = getCrossDomainParam(currentUrl.searchParams, \"state\")\n ?? getCrossDomainParam(redirectBackTarget.searchParams, \"state\");\n const codeChallenge = getCrossDomainParam(currentUrl.searchParams, \"codeChallenge\")\n ?? getCrossDomainParam(redirectBackTarget.searchParams, \"codeChallenge\");\n const afterCallbackRedirectUrl = getCrossDomainParam(currentUrl.searchParams, \"afterCallbackRedirectUrl\")\n ?? getCrossDomainParam(redirectBackTarget.searchParams, \"afterCallbackRedirectUrl\");\n return {\n state,\n codeChallenge,\n afterCallbackRedirectUrl,\n };\n}\n\nfunction resolveCrossDomainRedirectBackTarget(options: {\n currentUrl: URL,\n redirectBackTarget: URL,\n handoffParams: CrossDomainHandoffParamsMaybeMissing,\n}): URL | null {\n if (options.redirectBackTarget.origin !== options.currentUrl.origin) {\n return options.redirectBackTarget;\n }\n if (\n options.handoffParams.state == null\n || options.handoffParams.codeChallenge == null\n || options.handoffParams.afterCallbackRedirectUrl == null\n ) {\n return null;\n }\n const afterCallbackRedirectTarget = new URL(options.handoffParams.afterCallbackRedirectUrl, options.currentUrl);\n if (afterCallbackRedirectTarget.origin === options.currentUrl.origin) {\n return null;\n }\n return new URL(\n `${options.redirectBackTarget.pathname}${options.redirectBackTarget.search}${options.redirectBackTarget.hash}`,\n afterCallbackRedirectTarget.origin,\n );\n}\n\nfunction getCrossDomainHandoffForRedirect(options: {\n currentUrl: URL,\n redirectBackTarget: URL,\n}): {\n redirectBackTarget: URL,\n handoffParams: CrossDomainHandoffParamsMaybeMissing,\n} | null {\n const handoffParams = readCrossDomainHandoffParams(options.currentUrl, options.redirectBackTarget);\n const crossDomainRedirectBackTarget = resolveCrossDomainRedirectBackTarget({\n currentUrl: options.currentUrl,\n redirectBackTarget: options.redirectBackTarget,\n handoffParams,\n });\n if (crossDomainRedirectBackTarget == null) {\n return null;\n }\n return {\n redirectBackTarget: crossDomainRedirectBackTarget,\n handoffParams,\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,203 @@
1
+ import { ConvexCtx, GetCurrentUserOptions } from "../../common.js";
2
+ import { Customer, CustomerProductsList, CustomerProductsRequestOptions, InlineProduct, ServerItem } from "../../customers/index.js";
3
+ import { EmailDeliveryInfo, SendEmailOptions } from "../../email/index.js";
4
+ import { AdminProjectPermissionDefinition, AdminTeamPermission, AdminTeamPermissionDefinition } from "../../permissions/index.js";
5
+ import { DataVaultStore } from "../../data-vault/index.js";
6
+ import { ApiKey } from "../../api-keys/index.js";
7
+ import { OAuthConnection } from "../../connected-accounts/index.js";
8
+ import { ServerContactChannel } from "../../contact-channels/index.js";
9
+ import { NotificationCategory } from "../../notification-categories/index.js";
10
+ import { ProjectCurrentServerUser, ServerOAuthProvider, ServerUser, ServerUserCreateOptions } from "../../users/index.js";
11
+ import { EditableTeamMemberProfile, ReceivedTeamInvitation, SentTeamInvitation, ServerListTeamsOptions, ServerListUsersOptions, ServerTeam, ServerTeamCreateOptions, ServerTeamUser } from "../../teams/index.js";
12
+ import { StackServerAppConstructorOptions } from "../interfaces/server-app.js";
13
+ import { _StackClientAppImplIncomplete } from "./client-app-impl.js";
14
+ import { HexclaveServerInterface, KnownErrors } from "@hexclave/shared";
15
+ import { Result } from "@hexclave/shared/dist/utils/results";
16
+ import * as yup from "yup";
17
+ import { InternalSession } from "@hexclave/shared/dist/sessions";
18
+ import { ProjectPermissionDefinitionsCrud, ProjectPermissionsCrud } from "@hexclave/shared/dist/interface/crud/project-permissions";
19
+ import { TeamPermissionDefinitionsCrud, TeamPermissionsCrud } from "@hexclave/shared/dist/interface/crud/team-permissions";
20
+ import { TeamsCrud } from "@hexclave/shared/dist/interface/crud/teams";
21
+ import { TeamApiKeysCrud, UserApiKeysCrud, teamApiKeysCreateOutputSchema, userApiKeysCreateOutputSchema } from "@hexclave/shared/dist/interface/crud/project-api-keys";
22
+ import { UsersCrud } from "@hexclave/shared/dist/interface/crud/users";
23
+ import { ContactChannelsCrud } from "@hexclave/shared/dist/interface/crud/contact-channels";
24
+ import { ItemCrud } from "@hexclave/shared/dist/interface/crud/items";
25
+ import { NotificationPreferenceCrud } from "@hexclave/shared/dist/interface/crud/notification-preferences";
26
+ import { OAuthProviderCrud } from "@hexclave/shared/dist/interface/crud/oauth-providers";
27
+ import { TeamInvitationCrud } from "@hexclave/shared/dist/interface/crud/team-invitation";
28
+ import { TeamMemberProfilesCrud } from "@hexclave/shared/dist/interface/crud/team-member-profiles";
29
+
30
+ //#region src/lib/stack-app/apps/implementations/server-app-impl.d.ts
31
+ declare class _StackServerAppImplIncomplete<HasTokenStore extends boolean, ProjectId extends string> extends _StackClientAppImplIncomplete<HasTokenStore, ProjectId> {
32
+ protected _interface: HexclaveServerInterface;
33
+ private readonly _currentServerUserCache;
34
+ private readonly _serverUsersCache;
35
+ private readonly _serverUserCache;
36
+ private readonly _serverTeamsCache;
37
+ protected _refreshTeamMembership(teamId: string, userId: string): Promise<void>;
38
+ private readonly _serverUserTeamInvitationsCache;
39
+ private readonly _serverTeamUserPermissionsCache;
40
+ private readonly _serverAllTeamMemberPermissionsCache;
41
+ private readonly _serverUserProjectPermissionsCache;
42
+ /** @deprecated Used by legacy getConnectedAccount(providerId) — uses old per-provider access token endpoint */
43
+ private readonly _serverUserOAuthConnectionAccessTokensCache;
44
+ /** @deprecated Used by legacy getConnectedAccount(providerId) — combines token check + redirect */
45
+ private readonly _serverUserOAuthConnectionCache;
46
+ private readonly _serverUserConnectedAccountsCache;
47
+ private readonly _serverUserOAuthConnectionAccessTokensByAccountCache;
48
+ private readonly _serverTeamMemberProfilesCache;
49
+ private readonly _serverTeamInvitationsCache;
50
+ private readonly _serverUserTeamProfileCache;
51
+ private readonly _serverContactChannelsCache;
52
+ private readonly _serverNotificationCategoriesCache;
53
+ private readonly _serverDataVaultStoreValueCache;
54
+ private readonly _emailDeliveryInfoCache;
55
+ private readonly _serverUserApiKeysCache;
56
+ private readonly _serverTeamApiKeysCache;
57
+ private readonly _convexIdentitySubjectCache;
58
+ private readonly _serverCheckApiKeyCache;
59
+ private readonly _serverOAuthProvidersCache;
60
+ private readonly _serverTeamItemsCache;
61
+ private readonly _serverUserItemsCache;
62
+ private readonly _serverCustomItemsCache;
63
+ private readonly _serverUserProductsCache;
64
+ private readonly _serverTeamProductsCache;
65
+ private readonly _serverCustomProductsCache;
66
+ protected _createServerCustomer(userIdOrTeamId: string, type: "user" | "team"): Omit<Customer<true>, "id">;
67
+ private _updateServerUser;
68
+ protected _serverEditableTeamProfileFromCrud(crud: TeamMemberProfilesCrud['Client']['Read']): EditableTeamMemberProfile;
69
+ protected _serverContactChannelFromCrud(userId: string, crud: ContactChannelsCrud['Server']['Read']): ServerContactChannel;
70
+ protected _serverNotificationCategoryFromCrud(userId: string, crud: NotificationPreferenceCrud['Server']['Read']): NotificationCategory;
71
+ protected _serverOAuthProviderFromCrud(crud: OAuthProviderCrud['Server']['Read']): {
72
+ id: string;
73
+ type: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x" | "twitch";
74
+ userId: string;
75
+ accountId: string;
76
+ email: string | undefined;
77
+ allowSignIn: boolean;
78
+ allowConnectedAccounts: boolean;
79
+ update(data: {
80
+ accountId?: string;
81
+ email?: string;
82
+ allowSignIn?: boolean;
83
+ allowConnectedAccounts?: boolean;
84
+ }): Promise<Result<void, InstanceType<typeof KnownErrors.OAuthProviderAccountIdAlreadyUsedForSignIn>>>;
85
+ delete(): Promise<void>;
86
+ };
87
+ constructor(options: StackServerAppConstructorOptions<HasTokenStore, ProjectId>, extraOptions?: {
88
+ uniqueIdentifier?: string;
89
+ checkString?: string;
90
+ interface?: HexclaveServerInterface;
91
+ });
92
+ protected _serverApiKeyFromCrud(crud: TeamApiKeysCrud['Client']['Read']): ApiKey<"team">;
93
+ protected _serverApiKeyFromCrud(crud: UserApiKeysCrud['Client']['Read']): ApiKey<"user">;
94
+ protected _serverApiKeyFromCrud(crud: yup.InferType<typeof teamApiKeysCreateOutputSchema>): ApiKey<"team", true>;
95
+ protected _serverApiKeyFromCrud(crud: yup.InferType<typeof userApiKeysCreateOutputSchema>): ApiKey<"user", true>;
96
+ protected _createServerOAuthConnectionFromCrudItem(userId: string, item: {
97
+ provider: string;
98
+ provider_account_id: string;
99
+ }): OAuthConnection;
100
+ protected _serverUserFromCrud(crud: UsersCrud['Server']['Read']): ServerUser;
101
+ protected _serverTeamUserFromCrud(crud: TeamMemberProfilesCrud["Server"]["Read"]): ServerTeamUser;
102
+ protected _serverSentTeamInvitationFromCrud(crud: TeamInvitationCrud['Server']['Read']): SentTeamInvitation;
103
+ protected _serverReceivedTeamInvitationFromCrud(userId: string, crud: TeamInvitationCrud['Client']['Read']): ReceivedTeamInvitation;
104
+ protected _currentUserFromCrud(crud: UsersCrud['Server']['Read'], session: InternalSession): ProjectCurrentServerUser<ProjectId>;
105
+ protected _serverTeamFromCrud(crud: TeamsCrud['Server']['Read']): ServerTeam;
106
+ protected _serverItemFromCrud(customer: {
107
+ type: "user" | "team" | "custom";
108
+ id: string;
109
+ }, crud: ItemCrud['Client']['Read']): ServerItem;
110
+ protected _getUserApiKey(options: {
111
+ apiKey: string;
112
+ }): Promise<ApiKey<"user"> | null>;
113
+ protected _getTeamApiKey(options: {
114
+ apiKey: string;
115
+ }): Promise<ApiKey<"team"> | null>;
116
+ protected _getUserByApiKey(apiKey: string): Promise<ServerUser | null>;
117
+ protected _getUserByConvex(ctx: ConvexCtx, includeAnonymous: boolean): Promise<ServerUser | null>;
118
+ protected _getTeamByApiKey(apiKey: string): Promise<ServerTeam | null>;
119
+ createUser(options: ServerUserCreateOptions): Promise<ServerUser>;
120
+ getUser(options: GetCurrentUserOptions<HasTokenStore> & {
121
+ or: 'redirect';
122
+ }): Promise<ProjectCurrentServerUser<ProjectId>>;
123
+ getUser(options: GetCurrentUserOptions<HasTokenStore> & {
124
+ or: 'throw';
125
+ }): Promise<ProjectCurrentServerUser<ProjectId>>;
126
+ getUser(options: GetCurrentUserOptions<HasTokenStore> & {
127
+ or: 'anonymous';
128
+ }): Promise<ProjectCurrentServerUser<ProjectId>>;
129
+ getUser(options?: GetCurrentUserOptions<HasTokenStore>): Promise<ProjectCurrentServerUser<ProjectId> | null>;
130
+ getUser(id: string): Promise<ServerUser | null>;
131
+ getUser(options: {
132
+ apiKey: string;
133
+ }): Promise<ServerUser | null>;
134
+ getUser(options: {
135
+ from: "convex";
136
+ ctx: ConvexCtx;
137
+ or?: "return-null" | "anonymous";
138
+ }): Promise<ServerUser | null>;
139
+ getServerUser(): Promise<ProjectCurrentServerUser<ProjectId> | null>;
140
+ getServerUserById(userId: string): Promise<ServerUser | null>;
141
+ listUsers(options?: ServerListUsersOptions): Promise<ServerUser[] & {
142
+ nextCursor: string | null;
143
+ }>;
144
+ _serverPermissionFromCrud(crud: TeamPermissionsCrud['Server']['Read'] | ProjectPermissionsCrud['Server']['Read']): AdminTeamPermission;
145
+ _serverTeamPermissionDefinitionFromCrud(crud: TeamPermissionDefinitionsCrud['Admin']['Read']): AdminTeamPermissionDefinition;
146
+ _serverProjectPermissionDefinitionFromCrud(crud: ProjectPermissionDefinitionsCrud['Admin']['Read']): AdminProjectPermissionDefinition;
147
+ getItem(options: {
148
+ itemId: string;
149
+ userId: string;
150
+ } | {
151
+ itemId: string;
152
+ teamId: string;
153
+ } | {
154
+ itemId: string;
155
+ customCustomerId: string;
156
+ }): Promise<ServerItem>;
157
+ listProducts(options: CustomerProductsRequestOptions): Promise<CustomerProductsList>;
158
+ grantProduct(options: (({
159
+ userId: string;
160
+ } | {
161
+ teamId: string;
162
+ } | {
163
+ customCustomerId: string;
164
+ }) & ({
165
+ productId: string;
166
+ } | {
167
+ product: InlineProduct;
168
+ }) & {
169
+ quantity?: number;
170
+ })): Promise<void>;
171
+ createTeam(data: ServerTeamCreateOptions): Promise<ServerTeam>;
172
+ listTeams(options?: ServerListTeamsOptions): Promise<ServerTeam[] & {
173
+ nextCursor: string | null;
174
+ }>;
175
+ listTeamMemberPermissions(teamId: string, options?: {
176
+ recursive?: boolean;
177
+ }): Promise<{
178
+ userId: string;
179
+ permissionId: string;
180
+ }[]>;
181
+ getTeam(options: {
182
+ apiKey: string;
183
+ }): Promise<ServerTeam | null>;
184
+ getTeam(teamId: string): Promise<ServerTeam | null>;
185
+ protected _createServerDataVaultStore(id: string): DataVaultStore;
186
+ getDataVaultStore(id: string): Promise<DataVaultStore>;
187
+ sendEmail(options: SendEmailOptions): Promise<void>;
188
+ getEmailDeliveryStats(): Promise<EmailDeliveryInfo>;
189
+ activateEmailCapacityBoost(): Promise<void>;
190
+ protected _refreshSession(session: InternalSession): Promise<void>;
191
+ protected _refreshUsers(): Promise<void>;
192
+ createOAuthProvider(options: {
193
+ userId: string;
194
+ providerConfigId: string;
195
+ accountId: string;
196
+ email: string;
197
+ allowSignIn: boolean;
198
+ allowConnectedAccounts: boolean;
199
+ }): Promise<Result<ServerOAuthProvider, InstanceType<typeof KnownErrors.OAuthProviderAccountIdAlreadyUsedForSignIn>>>;
200
+ }
201
+ //#endregion
202
+ export { _StackServerAppImplIncomplete };
203
+ //# sourceMappingURL=server-app-impl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-app-impl.d.ts","names":[],"sources":["../../../../../src/lib/stack-app/apps/implementations/server-app-impl.ts"],"mappings":"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"}