@stackframe/react 2.7.20

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 (316) hide show
  1. package/CHANGELOG.md +1415 -0
  2. package/LICENSE +7 -0
  3. package/README.md +26 -0
  4. package/dist/components/credential-sign-in.d.mts +5 -0
  5. package/dist/components/credential-sign-in.d.ts +5 -0
  6. package/dist/components/credential-sign-in.js +103 -0
  7. package/dist/components/credential-sign-in.js.map +1 -0
  8. package/dist/components/credential-sign-up.d.mts +7 -0
  9. package/dist/components/credential-sign-up.d.ts +7 -0
  10. package/dist/components/credential-sign-up.js +138 -0
  11. package/dist/components/credential-sign-up.js.map +1 -0
  12. package/dist/components/elements/form-warning.d.mts +7 -0
  13. package/dist/components/elements/form-warning.d.ts +7 -0
  14. package/dist/components/elements/form-warning.js +39 -0
  15. package/dist/components/elements/form-warning.js.map +1 -0
  16. package/dist/components/elements/maybe-full-page.d.mts +11 -0
  17. package/dist/components/elements/maybe-full-page.d.ts +11 -0
  18. package/dist/components/elements/maybe-full-page.js +74 -0
  19. package/dist/components/elements/maybe-full-page.js.map +1 -0
  20. package/dist/components/elements/separator-with-text.d.mts +7 -0
  21. package/dist/components/elements/separator-with-text.d.ts +7 -0
  22. package/dist/components/elements/separator-with-text.js +41 -0
  23. package/dist/components/elements/separator-with-text.js.map +1 -0
  24. package/dist/components/elements/sidebar-layout.d.mts +19 -0
  25. package/dist/components/elements/sidebar-layout.d.ts +19 -0
  26. package/dist/components/elements/sidebar-layout.js +126 -0
  27. package/dist/components/elements/sidebar-layout.js.map +1 -0
  28. package/dist/components/elements/ssr-layout-effect.d.mts +8 -0
  29. package/dist/components/elements/ssr-layout-effect.d.ts +8 -0
  30. package/dist/components/elements/ssr-layout-effect.js +47 -0
  31. package/dist/components/elements/ssr-layout-effect.js.map +1 -0
  32. package/dist/components/elements/user-avatar.d.mts +13 -0
  33. package/dist/components/elements/user-avatar.d.ts +13 -0
  34. package/dist/components/elements/user-avatar.js +41 -0
  35. package/dist/components/elements/user-avatar.js.map +1 -0
  36. package/dist/components/iframe-preventer.d.mts +8 -0
  37. package/dist/components/iframe-preventer.d.ts +8 -0
  38. package/dist/components/iframe-preventer.js +52 -0
  39. package/dist/components/iframe-preventer.js.map +1 -0
  40. package/dist/components/link.d.mts +14 -0
  41. package/dist/components/link.d.ts +14 -0
  42. package/dist/components/link.js +51 -0
  43. package/dist/components/link.js.map +1 -0
  44. package/dist/components/magic-link-sign-in.d.mts +5 -0
  45. package/dist/components/magic-link-sign-in.d.ts +5 -0
  46. package/dist/components/magic-link-sign-in.js +151 -0
  47. package/dist/components/magic-link-sign-in.js.map +1 -0
  48. package/dist/components/message-cards/known-error-message-card.d.mts +9 -0
  49. package/dist/components/message-cards/known-error-message-card.d.ts +9 -0
  50. package/dist/components/message-cards/known-error-message-card.js +61 -0
  51. package/dist/components/message-cards/known-error-message-card.js.map +1 -0
  52. package/dist/components/message-cards/message-card.d.mts +14 -0
  53. package/dist/components/message-cards/message-card.d.ts +14 -0
  54. package/dist/components/message-cards/message-card.js +45 -0
  55. package/dist/components/message-cards/message-card.js.map +1 -0
  56. package/dist/components/message-cards/predefined-message-card.d.mts +8 -0
  57. package/dist/components/message-cards/predefined-message-card.d.ts +8 -0
  58. package/dist/components/message-cards/predefined-message-card.js +107 -0
  59. package/dist/components/message-cards/predefined-message-card.js.map +1 -0
  60. package/dist/components/oauth-button-group.d.mts +14 -0
  61. package/dist/components/oauth-button-group.d.ts +14 -0
  62. package/dist/components/oauth-button-group.js +43 -0
  63. package/dist/components/oauth-button-group.js.map +1 -0
  64. package/dist/components/oauth-button.d.mts +8 -0
  65. package/dist/components/oauth-button.d.ts +8 -0
  66. package/dist/components/oauth-button.js +210 -0
  67. package/dist/components/oauth-button.js.map +1 -0
  68. package/dist/components/passkey-button.d.mts +7 -0
  69. package/dist/components/passkey-button.d.ts +7 -0
  70. package/dist/components/passkey-button.js +58 -0
  71. package/dist/components/passkey-button.js.map +1 -0
  72. package/dist/components/profile-image-editor.d.mts +11 -0
  73. package/dist/components/profile-image-editor.d.ts +11 -0
  74. package/dist/components/profile-image-editor.js +162 -0
  75. package/dist/components/profile-image-editor.js.map +1 -0
  76. package/dist/components/selected-team-switcher.d.mts +21 -0
  77. package/dist/components/selected-team-switcher.d.ts +21 -0
  78. package/dist/components/selected-team-switcher.js +119 -0
  79. package/dist/components/selected-team-switcher.js.map +1 -0
  80. package/dist/components/team-icon.d.mts +18 -0
  81. package/dist/components/team-icon.d.ts +18 -0
  82. package/dist/components/team-icon.js +39 -0
  83. package/dist/components/team-icon.js.map +1 -0
  84. package/dist/components/user-button.d.mts +15 -0
  85. package/dist/components/user-button.d.ts +15 -0
  86. package/dist/components/user-button.js +120 -0
  87. package/dist/components/user-button.js.map +1 -0
  88. package/dist/components-page/account-settings.d.mts +24 -0
  89. package/dist/components-page/account-settings.d.ts +24 -0
  90. package/dist/components-page/account-settings.js +1095 -0
  91. package/dist/components-page/account-settings.js.map +1 -0
  92. package/dist/components-page/auth-page.d.mts +24 -0
  93. package/dist/components-page/auth-page.d.ts +24 -0
  94. package/dist/components-page/auth-page.js +123 -0
  95. package/dist/components-page/auth-page.js.map +1 -0
  96. package/dist/components-page/email-verification.d.mts +8 -0
  97. package/dist/components-page/email-verification.d.ts +8 -0
  98. package/dist/components-page/email-verification.js +100 -0
  99. package/dist/components-page/email-verification.js.map +1 -0
  100. package/dist/components-page/error-page.d.mts +8 -0
  101. package/dist/components-page/error-page.d.ts +8 -0
  102. package/dist/components-page/error-page.js +97 -0
  103. package/dist/components-page/error-page.js.map +1 -0
  104. package/dist/components-page/forgot-password.d.mts +10 -0
  105. package/dist/components-page/forgot-password.d.ts +10 -0
  106. package/dist/components-page/forgot-password.js +117 -0
  107. package/dist/components-page/forgot-password.js.map +1 -0
  108. package/dist/components-page/magic-link-callback.d.mts +8 -0
  109. package/dist/components-page/magic-link-callback.d.ts +8 -0
  110. package/dist/components-page/magic-link-callback.js +110 -0
  111. package/dist/components-page/magic-link-callback.js.map +1 -0
  112. package/dist/components-page/oauth-callback.d.mts +7 -0
  113. package/dist/components-page/oauth-callback.d.ts +7 -0
  114. package/dist/components-page/oauth-callback.js +75 -0
  115. package/dist/components-page/oauth-callback.js.map +1 -0
  116. package/dist/components-page/password-reset.d.mts +12 -0
  117. package/dist/components-page/password-reset.d.ts +12 -0
  118. package/dist/components-page/password-reset.js +179 -0
  119. package/dist/components-page/password-reset.js.map +1 -0
  120. package/dist/components-page/sign-in.d.mts +10 -0
  121. package/dist/components-page/sign-in.d.ts +10 -0
  122. package/dist/components-page/sign-in.js +44 -0
  123. package/dist/components-page/sign-in.js.map +1 -0
  124. package/dist/components-page/sign-out.d.mts +7 -0
  125. package/dist/components-page/sign-out.d.ts +7 -0
  126. package/dist/components-page/sign-out.js +57 -0
  127. package/dist/components-page/sign-out.js.map +1 -0
  128. package/dist/components-page/sign-up.d.mts +11 -0
  129. package/dist/components-page/sign-up.d.ts +11 -0
  130. package/dist/components-page/sign-up.js +47 -0
  131. package/dist/components-page/sign-up.js.map +1 -0
  132. package/dist/components-page/stack-handler.d.mts +51 -0
  133. package/dist/components-page/stack-handler.d.ts +51 -0
  134. package/dist/components-page/stack-handler.js +244 -0
  135. package/dist/components-page/stack-handler.js.map +1 -0
  136. package/dist/components-page/team-creation.d.mts +7 -0
  137. package/dist/components-page/team-creation.d.ts +7 -0
  138. package/dist/components-page/team-creation.js +92 -0
  139. package/dist/components-page/team-creation.js.map +1 -0
  140. package/dist/components-page/team-invitation.d.mts +8 -0
  141. package/dist/components-page/team-invitation.d.ts +8 -0
  142. package/dist/components-page/team-invitation.js +144 -0
  143. package/dist/components-page/team-invitation.js.map +1 -0
  144. package/dist/esm/components/credential-sign-in.js +79 -0
  145. package/dist/esm/components/credential-sign-in.js.map +1 -0
  146. package/dist/esm/components/credential-sign-up.js +104 -0
  147. package/dist/esm/components/credential-sign-up.js.map +1 -0
  148. package/dist/esm/components/elements/form-warning.js +15 -0
  149. package/dist/esm/components/elements/form-warning.js.map +1 -0
  150. package/dist/esm/components/elements/maybe-full-page.js +50 -0
  151. package/dist/esm/components/elements/maybe-full-page.js.map +1 -0
  152. package/dist/esm/components/elements/separator-with-text.js +17 -0
  153. package/dist/esm/components/elements/separator-with-text.js.map +1 -0
  154. package/dist/esm/components/elements/sidebar-layout.js +102 -0
  155. package/dist/esm/components/elements/sidebar-layout.js.map +1 -0
  156. package/dist/esm/components/elements/ssr-layout-effect.js +23 -0
  157. package/dist/esm/components/elements/ssr-layout-effect.js.map +1 -0
  158. package/dist/esm/components/elements/user-avatar.js +16 -0
  159. package/dist/esm/components/elements/user-avatar.js.map +1 -0
  160. package/dist/esm/components/iframe-preventer.js +28 -0
  161. package/dist/esm/components/iframe-preventer.js.map +1 -0
  162. package/dist/esm/components/link.js +26 -0
  163. package/dist/esm/components/link.js.map +1 -0
  164. package/dist/esm/components/magic-link-sign-in.js +127 -0
  165. package/dist/esm/components/magic-link-sign-in.js.map +1 -0
  166. package/dist/esm/components/message-cards/known-error-message-card.js +37 -0
  167. package/dist/esm/components/message-cards/known-error-message-card.js.map +1 -0
  168. package/dist/esm/components/message-cards/message-card.js +21 -0
  169. package/dist/esm/components/message-cards/message-card.js.map +1 -0
  170. package/dist/esm/components/message-cards/predefined-message-card.js +83 -0
  171. package/dist/esm/components/message-cards/predefined-message-card.js.map +1 -0
  172. package/dist/esm/components/oauth-button-group.js +19 -0
  173. package/dist/esm/components/oauth-button-group.js.map +1 -0
  174. package/dist/esm/components/oauth-button.js +176 -0
  175. package/dist/esm/components/oauth-button.js.map +1 -0
  176. package/dist/esm/components/passkey-button.js +34 -0
  177. package/dist/esm/components/passkey-button.js.map +1 -0
  178. package/dist/esm/components/profile-image-editor.js +126 -0
  179. package/dist/esm/components/profile-image-editor.js.map +1 -0
  180. package/dist/esm/components/selected-team-switcher.js +107 -0
  181. package/dist/esm/components/selected-team-switcher.js.map +1 -0
  182. package/dist/esm/components/team-icon.js +14 -0
  183. package/dist/esm/components/team-icon.js.map +1 -0
  184. package/dist/esm/components/user-button.js +96 -0
  185. package/dist/esm/components/user-button.js.map +1 -0
  186. package/dist/esm/components-page/account-settings.js +1058 -0
  187. package/dist/esm/components-page/account-settings.js.map +1 -0
  188. package/dist/esm/components-page/auth-page.js +99 -0
  189. package/dist/esm/components-page/auth-page.js.map +1 -0
  190. package/dist/esm/components-page/email-verification.js +66 -0
  191. package/dist/esm/components-page/email-verification.js.map +1 -0
  192. package/dist/esm/components-page/error-page.js +73 -0
  193. package/dist/esm/components-page/error-page.js.map +1 -0
  194. package/dist/esm/components-page/forgot-password.js +92 -0
  195. package/dist/esm/components-page/forgot-password.js.map +1 -0
  196. package/dist/esm/components-page/magic-link-callback.js +76 -0
  197. package/dist/esm/components-page/magic-link-callback.js.map +1 -0
  198. package/dist/esm/components-page/oauth-callback.js +51 -0
  199. package/dist/esm/components-page/oauth-callback.js.map +1 -0
  200. package/dist/esm/components-page/password-reset.js +145 -0
  201. package/dist/esm/components-page/password-reset.js.map +1 -0
  202. package/dist/esm/components-page/sign-in.js +19 -0
  203. package/dist/esm/components-page/sign-in.js.map +1 -0
  204. package/dist/esm/components-page/sign-out.js +23 -0
  205. package/dist/esm/components-page/sign-out.js.map +1 -0
  206. package/dist/esm/components-page/sign-up.js +23 -0
  207. package/dist/esm/components-page/sign-up.js.map +1 -0
  208. package/dist/esm/components-page/stack-handler.js +223 -0
  209. package/dist/esm/components-page/stack-handler.js.map +1 -0
  210. package/dist/esm/components-page/team-creation.js +68 -0
  211. package/dist/esm/components-page/team-creation.js.map +1 -0
  212. package/dist/esm/components-page/team-invitation.js +110 -0
  213. package/dist/esm/components-page/team-invitation.js.map +1 -0
  214. package/dist/esm/generated/global-css.js +6 -0
  215. package/dist/esm/generated/global-css.js.map +1 -0
  216. package/dist/esm/generated/quetzal-translations.js +2397 -0
  217. package/dist/esm/generated/quetzal-translations.js.map +1 -0
  218. package/dist/esm/global.d.js +1 -0
  219. package/dist/esm/global.d.js.map +1 -0
  220. package/dist/esm/index.js +46 -0
  221. package/dist/esm/index.js.map +1 -0
  222. package/dist/esm/lib/auth.js +98 -0
  223. package/dist/esm/lib/auth.js.map +1 -0
  224. package/dist/esm/lib/cookie.js +244 -0
  225. package/dist/esm/lib/cookie.js.map +1 -0
  226. package/dist/esm/lib/hooks.js +30 -0
  227. package/dist/esm/lib/hooks.js.map +1 -0
  228. package/dist/esm/lib/stack-app.js +2398 -0
  229. package/dist/esm/lib/stack-app.js.map +1 -0
  230. package/dist/esm/lib/translations.js +23 -0
  231. package/dist/esm/lib/translations.js.map +1 -0
  232. package/dist/esm/providers/stack-provider-client.js +29 -0
  233. package/dist/esm/providers/stack-provider-client.js.map +1 -0
  234. package/dist/esm/providers/stack-provider.js +25 -0
  235. package/dist/esm/providers/stack-provider.js.map +1 -0
  236. package/dist/esm/providers/theme-provider.js +71 -0
  237. package/dist/esm/providers/theme-provider.js.map +1 -0
  238. package/dist/esm/providers/translation-provider-client.js +18 -0
  239. package/dist/esm/providers/translation-provider-client.js.map +1 -0
  240. package/dist/esm/providers/translation-provider.js +18 -0
  241. package/dist/esm/providers/translation-provider.js.map +1 -0
  242. package/dist/esm/utils/browser-script.js +112 -0
  243. package/dist/esm/utils/browser-script.js.map +1 -0
  244. package/dist/esm/utils/constants.js +66 -0
  245. package/dist/esm/utils/constants.js.map +1 -0
  246. package/dist/esm/utils/url.js +30 -0
  247. package/dist/esm/utils/url.js.map +1 -0
  248. package/dist/generated/global-css.d.mts +3 -0
  249. package/dist/generated/global-css.d.ts +3 -0
  250. package/dist/generated/global-css.js +31 -0
  251. package/dist/generated/global-css.js.map +1 -0
  252. package/dist/generated/quetzal-translations.d.mts +4 -0
  253. package/dist/generated/quetzal-translations.d.ts +4 -0
  254. package/dist/generated/quetzal-translations.js +2423 -0
  255. package/dist/generated/quetzal-translations.js.map +1 -0
  256. package/dist/global.d.d.mts +2 -0
  257. package/dist/global.d.d.ts +2 -0
  258. package/dist/global.d.js +2 -0
  259. package/dist/global.d.js.map +1 -0
  260. package/dist/index.d.mts +41 -0
  261. package/dist/index.d.ts +41 -0
  262. package/dist/index.js +103 -0
  263. package/dist/index.js.map +1 -0
  264. package/dist/lib/auth.d.mts +33 -0
  265. package/dist/lib/auth.d.ts +33 -0
  266. package/dist/lib/auth.js +125 -0
  267. package/dist/lib/auth.js.map +1 -0
  268. package/dist/lib/cookie.d.mts +33 -0
  269. package/dist/lib/cookie.d.ts +33 -0
  270. package/dist/lib/cookie.js +291 -0
  271. package/dist/lib/cookie.js.map +1 -0
  272. package/dist/lib/hooks.d.mts +41 -0
  273. package/dist/lib/hooks.d.ts +41 -0
  274. package/dist/lib/hooks.js +56 -0
  275. package/dist/lib/hooks.js.map +1 -0
  276. package/dist/lib/stack-app.d.mts +775 -0
  277. package/dist/lib/stack-app.d.ts +775 -0
  278. package/dist/lib/stack-app.js +2438 -0
  279. package/dist/lib/stack-app.js.map +1 -0
  280. package/dist/lib/translations.d.mts +5 -0
  281. package/dist/lib/translations.d.ts +5 -0
  282. package/dist/lib/translations.js +58 -0
  283. package/dist/lib/translations.js.map +1 -0
  284. package/dist/providers/stack-provider-client.d.mts +27 -0
  285. package/dist/providers/stack-provider-client.d.ts +27 -0
  286. package/dist/providers/stack-provider-client.js +65 -0
  287. package/dist/providers/stack-provider-client.js.map +1 -0
  288. package/dist/providers/stack-provider.d.mts +30 -0
  289. package/dist/providers/stack-provider.d.ts +30 -0
  290. package/dist/providers/stack-provider.js +46 -0
  291. package/dist/providers/stack-provider.js.map +1 -0
  292. package/dist/providers/theme-provider.d.mts +40 -0
  293. package/dist/providers/theme-provider.d.ts +40 -0
  294. package/dist/providers/theme-provider.js +105 -0
  295. package/dist/providers/theme-provider.js.map +1 -0
  296. package/dist/providers/translation-provider-client.d.mts +14 -0
  297. package/dist/providers/translation-provider-client.d.ts +14 -0
  298. package/dist/providers/translation-provider-client.js +43 -0
  299. package/dist/providers/translation-provider-client.js.map +1 -0
  300. package/dist/providers/translation-provider.d.mts +10 -0
  301. package/dist/providers/translation-provider.d.ts +10 -0
  302. package/dist/providers/translation-provider.js +43 -0
  303. package/dist/providers/translation-provider.js.map +1 -0
  304. package/dist/utils/browser-script.d.mts +7 -0
  305. package/dist/utils/browser-script.d.ts +7 -0
  306. package/dist/utils/browser-script.js +137 -0
  307. package/dist/utils/browser-script.js.map +1 -0
  308. package/dist/utils/constants.d.mts +79 -0
  309. package/dist/utils/constants.d.ts +79 -0
  310. package/dist/utils/constants.js +99 -0
  311. package/dist/utils/constants.js.map +1 -0
  312. package/dist/utils/url.d.mts +4 -0
  313. package/dist/utils/url.d.ts +4 -0
  314. package/dist/utils/url.js +56 -0
  315. package/dist/utils/url.js.map +1 -0
  316. package/package.json +96 -0
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=global.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,41 @@
1
+ export { AdminDomainConfig, AdminEmailConfig, AdminOAuthProviderConfig, AdminOwnedProject, AdminProject, AdminProjectConfig, AdminProjectConfigUpdateOptions, AdminProjectCreateOptions, AdminProjectUpdateOptions, AdminTeamPermission, AdminTeamPermissionDefinition, AdminTeamPermissionDefinitionCreateOptions, AdminTeamPermissionDefinitionUpdateOptions, ApiKey, ApiKeyBase, ApiKeyBaseCrudRead, ApiKeyCreateOptions, ApiKeyFirstView, Connection, CurrentInternalServerUser, CurrentInternalUser, CurrentServerUser, CurrentUser, EditableTeamMemberProfile, GetUserOptions, HandlerUrls, OAuthConnection, OAuthProviderConfig, OAuthScopesOnSignIn, Project, ProjectConfig, ServerListUsersOptions, ServerTeam, ServerTeamCreateOptions, ServerTeamMemberProfile, ServerTeamUpdateOptions, ServerTeamUser, ServerUser, StackAdminApp, StackAdminAppConstructor, StackAdminAppConstructorOptions, StackClientApp, StackClientAppConstructor, StackClientAppConstructorOptions, StackClientAppJson, StackServerApp, StackServerAppConstructor, StackServerAppConstructorOptions, Team, TeamCreateOptions, TeamInvitation, TeamMemberProfile, TeamPermission, TeamUpdateOptions, TeamUser, TokenStoreInit, User, serverTeamPermissionDefinitionCreateOptionsToCrud, serverTeamPermissionDefinitionUpdateOptionsToCrud, stackAppInternalsSymbol } from './lib/stack-app.mjs';
2
+ export { default as StackHandler } from './components-page/stack-handler.mjs';
3
+ export { useStackApp, useUser } from './lib/hooks.mjs';
4
+ export { default as StackProvider } from './providers/stack-provider.mjs';
5
+ export { StackTheme } from './providers/theme-provider.mjs';
6
+ export { AccountSettings } from './components-page/account-settings.mjs';
7
+ export { AuthPage } from './components-page/auth-page.mjs';
8
+ export { EmailVerification } from './components-page/email-verification.mjs';
9
+ export { ForgotPassword } from './components-page/forgot-password.mjs';
10
+ export { PasswordReset } from './components-page/password-reset.mjs';
11
+ export { SignIn } from './components-page/sign-in.mjs';
12
+ export { SignUp } from './components-page/sign-up.mjs';
13
+ export { CredentialSignIn } from './components/credential-sign-in.mjs';
14
+ export { CredentialSignUp } from './components/credential-sign-up.mjs';
15
+ export { UserAvatar } from './components/elements/user-avatar.mjs';
16
+ export { MagicLinkSignIn } from './components/magic-link-sign-in.mjs';
17
+ export { MessageCard } from './components/message-cards/message-card.mjs';
18
+ export { OAuthButton } from './components/oauth-button.mjs';
19
+ export { OAuthButtonGroup } from './components/oauth-button-group.mjs';
20
+ export { SelectedTeamSwitcher } from './components/selected-team-switcher.mjs';
21
+ export { UserButton } from './components/user-button.mjs';
22
+ import '@stackframe/stack-shared';
23
+ import '@stackframe/stack-shared/dist/helpers/production-mode';
24
+ import '@stackframe/stack-shared/dist/interface/crud/api-keys';
25
+ import '@stackframe/stack-shared/dist/interface/crud/current-user';
26
+ import '@stackframe/stack-shared/dist/interface/crud/email-templates';
27
+ import '@stackframe/stack-shared/dist/interface/crud/team-permissions';
28
+ import '@stackframe/stack-shared/dist/sessions';
29
+ import '@stackframe/stack-shared/dist/utils/json';
30
+ import '@stackframe/stack-shared/dist/utils/oauth';
31
+ import '@stackframe/stack-shared/dist/utils/results';
32
+ import 'react/jsx-runtime';
33
+ import './components-page/error-page.mjs';
34
+ import './components-page/magic-link-callback.mjs';
35
+ import './components-page/oauth-callback.mjs';
36
+ import './components-page/sign-out.mjs';
37
+ import './components-page/team-invitation.mjs';
38
+ import 'react';
39
+ import './providers/translation-provider.mjs';
40
+ import './generated/quetzal-translations.mjs';
41
+ import 'lucide-react';
@@ -0,0 +1,41 @@
1
+ export { AdminDomainConfig, AdminEmailConfig, AdminOAuthProviderConfig, AdminOwnedProject, AdminProject, AdminProjectConfig, AdminProjectConfigUpdateOptions, AdminProjectCreateOptions, AdminProjectUpdateOptions, AdminTeamPermission, AdminTeamPermissionDefinition, AdminTeamPermissionDefinitionCreateOptions, AdminTeamPermissionDefinitionUpdateOptions, ApiKey, ApiKeyBase, ApiKeyBaseCrudRead, ApiKeyCreateOptions, ApiKeyFirstView, Connection, CurrentInternalServerUser, CurrentInternalUser, CurrentServerUser, CurrentUser, EditableTeamMemberProfile, GetUserOptions, HandlerUrls, OAuthConnection, OAuthProviderConfig, OAuthScopesOnSignIn, Project, ProjectConfig, ServerListUsersOptions, ServerTeam, ServerTeamCreateOptions, ServerTeamMemberProfile, ServerTeamUpdateOptions, ServerTeamUser, ServerUser, StackAdminApp, StackAdminAppConstructor, StackAdminAppConstructorOptions, StackClientApp, StackClientAppConstructor, StackClientAppConstructorOptions, StackClientAppJson, StackServerApp, StackServerAppConstructor, StackServerAppConstructorOptions, Team, TeamCreateOptions, TeamInvitation, TeamMemberProfile, TeamPermission, TeamUpdateOptions, TeamUser, TokenStoreInit, User, serverTeamPermissionDefinitionCreateOptionsToCrud, serverTeamPermissionDefinitionUpdateOptionsToCrud, stackAppInternalsSymbol } from './lib/stack-app.js';
2
+ export { default as StackHandler } from './components-page/stack-handler.js';
3
+ export { useStackApp, useUser } from './lib/hooks.js';
4
+ export { default as StackProvider } from './providers/stack-provider.js';
5
+ export { StackTheme } from './providers/theme-provider.js';
6
+ export { AccountSettings } from './components-page/account-settings.js';
7
+ export { AuthPage } from './components-page/auth-page.js';
8
+ export { EmailVerification } from './components-page/email-verification.js';
9
+ export { ForgotPassword } from './components-page/forgot-password.js';
10
+ export { PasswordReset } from './components-page/password-reset.js';
11
+ export { SignIn } from './components-page/sign-in.js';
12
+ export { SignUp } from './components-page/sign-up.js';
13
+ export { CredentialSignIn } from './components/credential-sign-in.js';
14
+ export { CredentialSignUp } from './components/credential-sign-up.js';
15
+ export { UserAvatar } from './components/elements/user-avatar.js';
16
+ export { MagicLinkSignIn } from './components/magic-link-sign-in.js';
17
+ export { MessageCard } from './components/message-cards/message-card.js';
18
+ export { OAuthButton } from './components/oauth-button.js';
19
+ export { OAuthButtonGroup } from './components/oauth-button-group.js';
20
+ export { SelectedTeamSwitcher } from './components/selected-team-switcher.js';
21
+ export { UserButton } from './components/user-button.js';
22
+ import '@stackframe/stack-shared';
23
+ import '@stackframe/stack-shared/dist/helpers/production-mode';
24
+ import '@stackframe/stack-shared/dist/interface/crud/api-keys';
25
+ import '@stackframe/stack-shared/dist/interface/crud/current-user';
26
+ import '@stackframe/stack-shared/dist/interface/crud/email-templates';
27
+ import '@stackframe/stack-shared/dist/interface/crud/team-permissions';
28
+ import '@stackframe/stack-shared/dist/sessions';
29
+ import '@stackframe/stack-shared/dist/utils/json';
30
+ import '@stackframe/stack-shared/dist/utils/oauth';
31
+ import '@stackframe/stack-shared/dist/utils/results';
32
+ import 'react/jsx-runtime';
33
+ import './components-page/error-page.js';
34
+ import './components-page/magic-link-callback.js';
35
+ import './components-page/oauth-callback.js';
36
+ import './components-page/sign-out.js';
37
+ import './components-page/team-invitation.js';
38
+ import 'react';
39
+ import './providers/translation-provider.js';
40
+ import './generated/quetzal-translations.js';
41
+ import 'lucide-react';
package/dist/index.js ADDED
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+
31
+ // src/index.ts
32
+ var index_exports = {};
33
+ __export(index_exports, {
34
+ AccountSettings: () => import_account_settings.AccountSettings,
35
+ AuthPage: () => import_auth_page.AuthPage,
36
+ CredentialSignIn: () => import_credential_sign_in.CredentialSignIn,
37
+ CredentialSignUp: () => import_credential_sign_up.CredentialSignUp,
38
+ EmailVerification: () => import_email_verification.EmailVerification,
39
+ ForgotPassword: () => import_forgot_password.ForgotPassword,
40
+ MagicLinkSignIn: () => import_magic_link_sign_in.MagicLinkSignIn,
41
+ MessageCard: () => import_message_card.MessageCard,
42
+ OAuthButton: () => import_oauth_button.OAuthButton,
43
+ OAuthButtonGroup: () => import_oauth_button_group.OAuthButtonGroup,
44
+ PasswordReset: () => import_password_reset.PasswordReset,
45
+ SelectedTeamSwitcher: () => import_selected_team_switcher.SelectedTeamSwitcher,
46
+ SignIn: () => import_sign_in.SignIn,
47
+ SignUp: () => import_sign_up.SignUp,
48
+ StackHandler: () => import_stack_handler.default,
49
+ StackProvider: () => import_stack_provider.default,
50
+ StackTheme: () => import_theme_provider.StackTheme,
51
+ UserAvatar: () => import_user_avatar.UserAvatar,
52
+ UserButton: () => import_user_button.UserButton,
53
+ useStackApp: () => import_hooks.useStackApp,
54
+ useUser: () => import_hooks.useUser
55
+ });
56
+ module.exports = __toCommonJS(index_exports);
57
+ __reExport(index_exports, require("./lib/stack-app"), module.exports);
58
+ var import_stack_handler = __toESM(require("./components-page/stack-handler"));
59
+ var import_hooks = require("./lib/hooks");
60
+ var import_stack_provider = __toESM(require("./providers/stack-provider"));
61
+ var import_theme_provider = require("./providers/theme-provider");
62
+ var import_account_settings = require("./components-page/account-settings");
63
+ var import_auth_page = require("./components-page/auth-page");
64
+ var import_email_verification = require("./components-page/email-verification");
65
+ var import_forgot_password = require("./components-page/forgot-password");
66
+ var import_password_reset = require("./components-page/password-reset");
67
+ var import_sign_in = require("./components-page/sign-in");
68
+ var import_sign_up = require("./components-page/sign-up");
69
+ var import_credential_sign_in = require("./components/credential-sign-in");
70
+ var import_credential_sign_up = require("./components/credential-sign-up");
71
+ var import_user_avatar = require("./components/elements/user-avatar");
72
+ var import_magic_link_sign_in = require("./components/magic-link-sign-in");
73
+ var import_message_card = require("./components/message-cards/message-card");
74
+ var import_oauth_button = require("./components/oauth-button");
75
+ var import_oauth_button_group = require("./components/oauth-button-group");
76
+ var import_selected_team_switcher = require("./components/selected-team-switcher");
77
+ var import_user_button = require("./components/user-button");
78
+ // Annotate the CommonJS export names for ESM import in node:
79
+ 0 && (module.exports = {
80
+ AccountSettings,
81
+ AuthPage,
82
+ CredentialSignIn,
83
+ CredentialSignUp,
84
+ EmailVerification,
85
+ ForgotPassword,
86
+ MagicLinkSignIn,
87
+ MessageCard,
88
+ OAuthButton,
89
+ OAuthButtonGroup,
90
+ PasswordReset,
91
+ SelectedTeamSwitcher,
92
+ SignIn,
93
+ SignUp,
94
+ StackHandler,
95
+ StackProvider,
96
+ StackTheme,
97
+ UserAvatar,
98
+ UserButton,
99
+ useStackApp,
100
+ useUser,
101
+ ...require("./lib/stack-app")
102
+ });
103
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\n\nexport * from './lib/stack-app';\n\nexport { default as StackHandler } from \"./components-page/stack-handler\";\nexport { useStackApp, useUser } from \"./lib/hooks\";\nexport { default as StackProvider } from \"./providers/stack-provider\";\nexport { StackTheme } from './providers/theme-provider';\n\nexport { AccountSettings } from \"./components-page/account-settings\";\nexport { AuthPage } from \"./components-page/auth-page\";\nexport { EmailVerification } from \"./components-page/email-verification\";\nexport { ForgotPassword } from \"./components-page/forgot-password\";\nexport { PasswordReset } from \"./components-page/password-reset\";\nexport { SignIn } from \"./components-page/sign-in\";\nexport { SignUp } from \"./components-page/sign-up\";\nexport { CredentialSignIn as CredentialSignIn } from \"./components/credential-sign-in\";\nexport { CredentialSignUp as CredentialSignUp } from \"./components/credential-sign-up\";\nexport { UserAvatar } from \"./components/elements/user-avatar\";\nexport { MagicLinkSignIn as MagicLinkSignIn } from \"./components/magic-link-sign-in\";\nexport { MessageCard } from \"./components/message-cards/message-card\";\nexport { OAuthButton } from \"./components/oauth-button\";\nexport { OAuthButtonGroup } from \"./components/oauth-button-group\";\nexport { SelectedTeamSwitcher } from \"./components/selected-team-switcher\";\nexport { UserButton } from \"./components/user-button\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,0BAAc,4BAJd;AAMA,2BAAwC;AACxC,mBAAqC;AACrC,4BAAyC;AACzC,4BAA2B;AAE3B,8BAAgC;AAChC,uBAAyB;AACzB,gCAAkC;AAClC,6BAA+B;AAC/B,4BAA8B;AAC9B,qBAAuB;AACvB,qBAAuB;AACvB,gCAAqD;AACrD,gCAAqD;AACrD,yBAA2B;AAC3B,gCAAmD;AACnD,0BAA4B;AAC5B,0BAA4B;AAC5B,gCAAiC;AACjC,oCAAqC;AACrC,yBAA2B;","names":[]}
@@ -0,0 +1,33 @@
1
+ import { StackClientInterface } from '@stackframe/stack-shared';
2
+ import { InternalSession } from '@stackframe/stack-shared/dist/sessions';
3
+
4
+ declare function signInWithOAuth(iface: StackClientInterface, options: {
5
+ provider: string;
6
+ redirectUrl: string;
7
+ errorRedirectUrl: string;
8
+ providerScope?: string;
9
+ }): Promise<void>;
10
+ declare function addNewOAuthProviderOrScope(iface: StackClientInterface, options: {
11
+ provider: string;
12
+ redirectUrl: string;
13
+ errorRedirectUrl: string;
14
+ providerScope?: string;
15
+ }, session: InternalSession): Promise<void>;
16
+ declare function callOAuthCallback(iface: StackClientInterface, redirectUrl: string): Promise<({
17
+ status: "ok";
18
+ data: undefined;
19
+ } & {
20
+ status: "ok";
21
+ }) | ({
22
+ status: "ok";
23
+ data: {
24
+ newUser: boolean;
25
+ afterCallbackRedirectUrl?: string;
26
+ accessToken: string;
27
+ refreshToken: string;
28
+ };
29
+ } & {
30
+ status: "ok";
31
+ })>;
32
+
33
+ export { addNewOAuthProviderOrScope, callOAuthCallback, signInWithOAuth };
@@ -0,0 +1,33 @@
1
+ import { StackClientInterface } from '@stackframe/stack-shared';
2
+ import { InternalSession } from '@stackframe/stack-shared/dist/sessions';
3
+
4
+ declare function signInWithOAuth(iface: StackClientInterface, options: {
5
+ provider: string;
6
+ redirectUrl: string;
7
+ errorRedirectUrl: string;
8
+ providerScope?: string;
9
+ }): Promise<void>;
10
+ declare function addNewOAuthProviderOrScope(iface: StackClientInterface, options: {
11
+ provider: string;
12
+ redirectUrl: string;
13
+ errorRedirectUrl: string;
14
+ providerScope?: string;
15
+ }, session: InternalSession): Promise<void>;
16
+ declare function callOAuthCallback(iface: StackClientInterface, redirectUrl: string): Promise<({
17
+ status: "ok";
18
+ data: undefined;
19
+ } & {
20
+ status: "ok";
21
+ }) | ({
22
+ status: "ok";
23
+ data: {
24
+ newUser: boolean;
25
+ afterCallbackRedirectUrl?: string;
26
+ accessToken: string;
27
+ refreshToken: string;
28
+ };
29
+ } & {
30
+ status: "ok";
31
+ })>;
32
+
33
+ export { addNewOAuthProviderOrScope, callOAuthCallback, signInWithOAuth };
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/lib/auth.ts
21
+ var auth_exports = {};
22
+ __export(auth_exports, {
23
+ addNewOAuthProviderOrScope: () => addNewOAuthProviderOrScope,
24
+ callOAuthCallback: () => callOAuthCallback,
25
+ signInWithOAuth: () => signInWithOAuth
26
+ });
27
+ module.exports = __toCommonJS(auth_exports);
28
+ var import_stack_shared = require("@stackframe/stack-shared");
29
+ var import_errors = require("@stackframe/stack-shared/dist/utils/errors");
30
+ var import_promises = require("@stackframe/stack-shared/dist/utils/promises");
31
+ var import_results = require("@stackframe/stack-shared/dist/utils/results");
32
+ var import_strings = require("@stackframe/stack-shared/dist/utils/strings");
33
+ var import_url = require("../utils/url");
34
+ var import_cookie = require("./cookie");
35
+ async function signInWithOAuth(iface, options) {
36
+ const { codeChallenge, state } = await (0, import_cookie.saveVerifierAndState)();
37
+ const location = await iface.getOAuthUrl({
38
+ provider: options.provider,
39
+ redirectUrl: (0, import_url.constructRedirectUrl)(options.redirectUrl),
40
+ errorRedirectUrl: (0, import_url.constructRedirectUrl)(options.errorRedirectUrl),
41
+ codeChallenge,
42
+ state,
43
+ type: "authenticate",
44
+ providerScope: options.providerScope
45
+ });
46
+ window.location.assign(location);
47
+ await (0, import_promises.neverResolve)();
48
+ }
49
+ async function addNewOAuthProviderOrScope(iface, options, session) {
50
+ const { codeChallenge, state } = await (0, import_cookie.saveVerifierAndState)();
51
+ const location = await iface.getOAuthUrl({
52
+ provider: options.provider,
53
+ redirectUrl: (0, import_url.constructRedirectUrl)(options.redirectUrl),
54
+ errorRedirectUrl: (0, import_url.constructRedirectUrl)(options.errorRedirectUrl),
55
+ afterCallbackRedirectUrl: (0, import_url.constructRedirectUrl)(window.location.href),
56
+ codeChallenge,
57
+ state,
58
+ type: "link",
59
+ session,
60
+ providerScope: options.providerScope
61
+ });
62
+ window.location.assign(location);
63
+ await (0, import_promises.neverResolve)();
64
+ }
65
+ function consumeOAuthCallbackQueryParams() {
66
+ const requiredParams = ["code", "state"];
67
+ const originalUrl = new URL(window.location.href);
68
+ for (const param of requiredParams) {
69
+ if (!originalUrl.searchParams.has(param)) {
70
+ console.warn(new Error(`Missing required query parameter on OAuth callback: ${param}. Maybe you opened or reloaded the oauth-callback page from your history?`));
71
+ return null;
72
+ }
73
+ }
74
+ const expectedState = originalUrl.searchParams.get("state") ?? (0, import_errors.throwErr)("This should never happen; isn't state required above?");
75
+ const cookieResult = (0, import_cookie.consumeVerifierAndStateCookie)(expectedState);
76
+ if (!cookieResult) {
77
+ console.warn(import_strings.deindent`
78
+ Stack found an outer OAuth callback state in the query parameters, but not in cookies.
79
+
80
+ This could have multiple reasons:
81
+ - The cookie expired, because the OAuth flow took too long.
82
+ - The user's browser deleted the cookie, either manually or because of a very strict cookie policy.
83
+ - The cookie was already consumed by this page, and the user already logged in.
84
+ - You are using another OAuth client library with the same callback URL as Stack.
85
+ - The user opened the OAuth callback page from their history.
86
+
87
+ Either way, it is probably safe to ignore this warning unless you are debugging an OAuth issue.
88
+ `);
89
+ return null;
90
+ }
91
+ const newUrl = new URL(originalUrl);
92
+ for (const param of requiredParams) {
93
+ newUrl.searchParams.delete(param);
94
+ }
95
+ window.history.replaceState({}, "", newUrl.toString());
96
+ return {
97
+ originalUrl,
98
+ codeVerifier: cookieResult.codeVerifier,
99
+ state: expectedState
100
+ };
101
+ }
102
+ async function callOAuthCallback(iface, redirectUrl) {
103
+ const consumed = consumeOAuthCallbackQueryParams();
104
+ if (!consumed) return import_results.Result.ok(void 0);
105
+ try {
106
+ return import_results.Result.ok(await iface.callOAuthCallback({
107
+ oauthParams: consumed.originalUrl.searchParams,
108
+ redirectUri: (0, import_url.constructRedirectUrl)(redirectUrl),
109
+ codeVerifier: consumed.codeVerifier,
110
+ state: consumed.state
111
+ }));
112
+ } catch (e) {
113
+ if (e instanceof import_stack_shared.KnownError) {
114
+ throw e;
115
+ }
116
+ throw new import_errors.StackAssertionError("Error signing in during OAuth callback. Please try again.", { cause: e });
117
+ }
118
+ }
119
+ // Annotate the CommonJS export names for ESM import in node:
120
+ 0 && (module.exports = {
121
+ addNewOAuthProviderOrScope,
122
+ callOAuthCallback,
123
+ signInWithOAuth
124
+ });
125
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/auth.ts"],"sourcesContent":["//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\n\nimport { KnownError, StackClientInterface } from \"@stackframe/stack-shared\";\nimport { InternalSession } from \"@stackframe/stack-shared/dist/sessions\";\nimport { StackAssertionError, throwErr } from \"@stackframe/stack-shared/dist/utils/errors\";\nimport { neverResolve } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { Result } from \"@stackframe/stack-shared/dist/utils/results\";\nimport { deindent } from \"@stackframe/stack-shared/dist/utils/strings\";\nimport { constructRedirectUrl } from \"../utils/url\";\nimport { consumeVerifierAndStateCookie, saveVerifierAndState } from \"./cookie\";\n\nexport async function signInWithOAuth(\n iface: StackClientInterface,\n options: {\n provider: string,\n redirectUrl: string,\n errorRedirectUrl: string,\n providerScope?: string,\n }\n) {\n const { codeChallenge, state } = await saveVerifierAndState();\n const location = await iface.getOAuthUrl({\n provider: options.provider,\n redirectUrl: constructRedirectUrl(options.redirectUrl),\n errorRedirectUrl: constructRedirectUrl(options.errorRedirectUrl),\n codeChallenge,\n state,\n type: \"authenticate\",\n providerScope: options.providerScope,\n });\n window.location.assign(location);\n await neverResolve();\n}\n\nexport async function addNewOAuthProviderOrScope(\n iface: StackClientInterface,\n options: {\n provider: string,\n redirectUrl: string,\n errorRedirectUrl: string,\n providerScope?: string,\n },\n session: InternalSession,\n) {\n const { codeChallenge, state } = await saveVerifierAndState();\n const location = await iface.getOAuthUrl({\n provider: options.provider,\n redirectUrl: constructRedirectUrl(options.redirectUrl),\n errorRedirectUrl: constructRedirectUrl(options.errorRedirectUrl),\n afterCallbackRedirectUrl: constructRedirectUrl(window.location.href),\n codeChallenge,\n state,\n type: \"link\",\n session,\n providerScope: options.providerScope,\n });\n window.location.assign(location);\n await neverResolve();\n}\n\n/**\n * Checks if the current URL has the query parameters for an OAuth callback, and if so, removes them.\n *\n * Must be synchronous for the logic in callOAuthCallback to work without race conditions.\n */\nfunction consumeOAuthCallbackQueryParams() {\n const requiredParams = [\"code\", \"state\"];\n const originalUrl = new URL(window.location.href);\n for (const param of requiredParams) {\n if (!originalUrl.searchParams.has(param)) {\n console.warn(new Error(`Missing required query parameter on OAuth callback: ${param}. Maybe you opened or reloaded the oauth-callback page from your history?`));\n return null;\n }\n }\n\n const expectedState = originalUrl.searchParams.get(\"state\") ?? throwErr(\"This should never happen; isn't state required above?\");\n const cookieResult = consumeVerifierAndStateCookie(expectedState);\n\n if (!cookieResult) {\n // If the state can't be found in the cookies, then the callback wasn't meant for us.\n // Maybe the website uses another OAuth library?\n console.warn(deindent`\n Stack found an outer OAuth callback state in the query parameters, but not in cookies.\n \n This could have multiple reasons:\n - The cookie expired, because the OAuth flow took too long.\n - The user's browser deleted the cookie, either manually or because of a very strict cookie policy.\n - The cookie was already consumed by this page, and the user already logged in.\n - You are using another OAuth client library with the same callback URL as Stack.\n - The user opened the OAuth callback page from their history.\n\n Either way, it is probably safe to ignore this warning unless you are debugging an OAuth issue.\n `);\n return null;\n }\n\n\n const newUrl = new URL(originalUrl);\n for (const param of requiredParams) {\n newUrl.searchParams.delete(param);\n }\n\n // let's get rid of the authorization code in the history as we\n // don't redirect to `redirectUrl` if there's a validation error\n // (as the redirectUrl might be malicious!).\n //\n // We use history.replaceState instead of location.assign(...) to\n // prevent an unnecessary reload\n window.history.replaceState({}, \"\", newUrl.toString());\n\n return {\n originalUrl,\n codeVerifier: cookieResult.codeVerifier,\n state: expectedState,\n };\n}\n\nexport async function callOAuthCallback(\n iface: StackClientInterface,\n redirectUrl: string,\n) {\n // note: this part of the function (until the return) needs\n // to be synchronous, to prevent race conditions when\n // callOAuthCallback is called multiple times in parallel\n const consumed = consumeOAuthCallbackQueryParams();\n if (!consumed) return Result.ok(undefined);\n\n // the rest can be asynchronous (we now know that we are the\n // intended recipient of the callback, and the only instance\n // of callOAuthCallback that's running)\n try {\n return Result.ok(await iface.callOAuthCallback({\n oauthParams: consumed.originalUrl.searchParams,\n redirectUri: constructRedirectUrl(redirectUrl),\n codeVerifier: consumed.codeVerifier,\n state: consumed.state,\n }));\n } catch (e) {\n if (e instanceof KnownError) {\n throw e;\n }\n throw new StackAssertionError(\"Error signing in during OAuth callback. Please try again.\", { cause: e });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,0BAAiD;AAEjD,oBAA8C;AAC9C,sBAA6B;AAC7B,qBAAuB;AACvB,qBAAyB;AACzB,iBAAqC;AACrC,oBAAoE;AAEpE,eAAsB,gBACpB,OACA,SAMA;AACA,QAAM,EAAE,eAAe,MAAM,IAAI,UAAM,oCAAqB;AAC5D,QAAM,WAAW,MAAM,MAAM,YAAY;AAAA,IACvC,UAAU,QAAQ;AAAA,IAClB,iBAAa,iCAAqB,QAAQ,WAAW;AAAA,IACrD,sBAAkB,iCAAqB,QAAQ,gBAAgB;AAAA,IAC/D;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN,eAAe,QAAQ;AAAA,EACzB,CAAC;AACD,SAAO,SAAS,OAAO,QAAQ;AAC/B,YAAM,8BAAa;AACrB;AAEA,eAAsB,2BACpB,OACA,SAMA,SACA;AACA,QAAM,EAAE,eAAe,MAAM,IAAI,UAAM,oCAAqB;AAC5D,QAAM,WAAW,MAAM,MAAM,YAAY;AAAA,IACvC,UAAU,QAAQ;AAAA,IAClB,iBAAa,iCAAqB,QAAQ,WAAW;AAAA,IACrD,sBAAkB,iCAAqB,QAAQ,gBAAgB;AAAA,IAC/D,8BAA0B,iCAAqB,OAAO,SAAS,IAAI;AAAA,IACnE;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN;AAAA,IACA,eAAe,QAAQ;AAAA,EACzB,CAAC;AACD,SAAO,SAAS,OAAO,QAAQ;AAC/B,YAAM,8BAAa;AACrB;AAOA,SAAS,kCAAkC;AACzC,QAAM,iBAAiB,CAAC,QAAQ,OAAO;AACvC,QAAM,cAAc,IAAI,IAAI,OAAO,SAAS,IAAI;AAChD,aAAW,SAAS,gBAAgB;AAClC,QAAI,CAAC,YAAY,aAAa,IAAI,KAAK,GAAG;AACxC,cAAQ,KAAK,IAAI,MAAM,uDAAuD,KAAK,2EAA2E,CAAC;AAC/J,aAAO;AAAA,IACT;AAAA,EACF;AAEA,QAAM,gBAAgB,YAAY,aAAa,IAAI,OAAO,SAAK,wBAAS,uDAAuD;AAC/H,QAAM,mBAAe,6CAA8B,aAAa;AAEhE,MAAI,CAAC,cAAc;AAGjB,YAAQ,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAWZ;AACD,WAAO;AAAA,EACT;AAGA,QAAM,SAAS,IAAI,IAAI,WAAW;AAClC,aAAW,SAAS,gBAAgB;AAClC,WAAO,aAAa,OAAO,KAAK;AAAA,EAClC;AAQA,SAAO,QAAQ,aAAa,CAAC,GAAG,IAAI,OAAO,SAAS,CAAC;AAErD,SAAO;AAAA,IACL;AAAA,IACA,cAAc,aAAa;AAAA,IAC3B,OAAO;AAAA,EACT;AACF;AAEA,eAAsB,kBACpB,OACA,aACA;AAIA,QAAM,WAAW,gCAAgC;AACjD,MAAI,CAAC,SAAU,QAAO,sBAAO,GAAG,MAAS;AAKzC,MAAI;AACF,WAAO,sBAAO,GAAG,MAAM,MAAM,kBAAkB;AAAA,MAC7C,aAAa,SAAS,YAAY;AAAA,MAClC,iBAAa,iCAAqB,WAAW;AAAA,MAC7C,cAAc,SAAS;AAAA,MACvB,OAAO,SAAS;AAAA,IAClB,CAAC,CAAC;AAAA,EACJ,SAAS,GAAG;AACV,QAAI,aAAa,gCAAY;AAC3B,YAAM;AAAA,IACR;AACA,UAAM,IAAI,kCAAoB,6DAA6D,EAAE,OAAO,EAAE,CAAC;AAAA,EACzG;AACF;","names":[]}
@@ -0,0 +1,33 @@
1
+ type SetCookieOptions = {
2
+ maxAge?: number;
3
+ noOpIfServerComponent?: boolean;
4
+ };
5
+ type DeleteCookieOptions = {
6
+ noOpIfServerComponent?: boolean;
7
+ };
8
+ type CookieHelper = {
9
+ get: (name: string) => string | null;
10
+ set: (name: string, value: string, options: SetCookieOptions) => void;
11
+ setOrDelete: (name: string, value: string | null, options: SetCookieOptions & DeleteCookieOptions) => void;
12
+ delete: (name: string, options: DeleteCookieOptions) => void;
13
+ };
14
+ declare function createEmptyCookieHelper(): Promise<CookieHelper>;
15
+ declare function createCookieHelper(): Promise<CookieHelper>;
16
+ declare function createBrowserCookieHelper(): CookieHelper;
17
+ declare function getCookieClient(name: string): string | null;
18
+ declare function getCookie(name: string): Promise<string | null>;
19
+ declare function setOrDeleteCookieClient(name: string, value: string | null, options?: SetCookieOptions & DeleteCookieOptions): void;
20
+ declare function setOrDeleteCookie(name: string, value: string | null, options?: SetCookieOptions & DeleteCookieOptions): Promise<void>;
21
+ declare function deleteCookieClient(name: string, options?: DeleteCookieOptions): void;
22
+ declare function deleteCookie(name: string, options?: DeleteCookieOptions): Promise<void>;
23
+ declare function setCookieClient(name: string, value: string, options?: SetCookieOptions): void;
24
+ declare function setCookie(name: string, value: string, options?: SetCookieOptions): Promise<void>;
25
+ declare function saveVerifierAndState(): Promise<{
26
+ codeChallenge: string;
27
+ state: string;
28
+ }>;
29
+ declare function consumeVerifierAndStateCookie(state: string): {
30
+ codeVerifier: string;
31
+ } | null;
32
+
33
+ export { type CookieHelper, consumeVerifierAndStateCookie, createBrowserCookieHelper, createCookieHelper, createEmptyCookieHelper, deleteCookie, deleteCookieClient, getCookie, getCookieClient, saveVerifierAndState, setCookie, setCookieClient, setOrDeleteCookie, setOrDeleteCookieClient };
@@ -0,0 +1,33 @@
1
+ type SetCookieOptions = {
2
+ maxAge?: number;
3
+ noOpIfServerComponent?: boolean;
4
+ };
5
+ type DeleteCookieOptions = {
6
+ noOpIfServerComponent?: boolean;
7
+ };
8
+ type CookieHelper = {
9
+ get: (name: string) => string | null;
10
+ set: (name: string, value: string, options: SetCookieOptions) => void;
11
+ setOrDelete: (name: string, value: string | null, options: SetCookieOptions & DeleteCookieOptions) => void;
12
+ delete: (name: string, options: DeleteCookieOptions) => void;
13
+ };
14
+ declare function createEmptyCookieHelper(): Promise<CookieHelper>;
15
+ declare function createCookieHelper(): Promise<CookieHelper>;
16
+ declare function createBrowserCookieHelper(): CookieHelper;
17
+ declare function getCookieClient(name: string): string | null;
18
+ declare function getCookie(name: string): Promise<string | null>;
19
+ declare function setOrDeleteCookieClient(name: string, value: string | null, options?: SetCookieOptions & DeleteCookieOptions): void;
20
+ declare function setOrDeleteCookie(name: string, value: string | null, options?: SetCookieOptions & DeleteCookieOptions): Promise<void>;
21
+ declare function deleteCookieClient(name: string, options?: DeleteCookieOptions): void;
22
+ declare function deleteCookie(name: string, options?: DeleteCookieOptions): Promise<void>;
23
+ declare function setCookieClient(name: string, value: string, options?: SetCookieOptions): void;
24
+ declare function setCookie(name: string, value: string, options?: SetCookieOptions): Promise<void>;
25
+ declare function saveVerifierAndState(): Promise<{
26
+ codeChallenge: string;
27
+ state: string;
28
+ }>;
29
+ declare function consumeVerifierAndStateCookie(state: string): {
30
+ codeVerifier: string;
31
+ } | null;
32
+
33
+ export { type CookieHelper, consumeVerifierAndStateCookie, createBrowserCookieHelper, createCookieHelper, createEmptyCookieHelper, deleteCookie, deleteCookieClient, getCookie, getCookieClient, saveVerifierAndState, setCookie, setCookieClient, setOrDeleteCookie, setOrDeleteCookieClient };