@stackframe/stack 2.7.19 → 2.7.21

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 (150) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/components/credential-sign-in.js +2 -1
  3. package/dist/components/credential-sign-in.js.map +1 -1
  4. package/dist/components/credential-sign-up.js.map +1 -1
  5. package/dist/components/elements/form-warning.js.map +1 -1
  6. package/dist/components/elements/maybe-full-page.js.map +1 -1
  7. package/dist/components/elements/separator-with-text.js.map +1 -1
  8. package/dist/components/elements/sidebar-layout.js +10 -7
  9. package/dist/components/elements/sidebar-layout.js.map +1 -1
  10. package/dist/components/elements/ssr-layout-effect.js.map +1 -1
  11. package/dist/components/elements/user-avatar.js.map +1 -1
  12. package/dist/components/iframe-preventer.js.map +1 -1
  13. package/dist/components/link.d.mts +14 -0
  14. package/dist/components/link.d.ts +14 -0
  15. package/dist/components/link.js +63 -0
  16. package/dist/components/link.js.map +1 -0
  17. package/dist/components/magic-link-sign-in.js.map +1 -1
  18. package/dist/components/message-cards/known-error-message-card.js.map +1 -1
  19. package/dist/components/message-cards/message-card.js.map +1 -1
  20. package/dist/components/message-cards/predefined-message-card.js.map +1 -1
  21. package/dist/components/oauth-button-group.js.map +1 -1
  22. package/dist/components/oauth-button.js.map +1 -1
  23. package/dist/components/passkey-button.js.map +1 -1
  24. package/dist/components/profile-image-editor.js.map +1 -1
  25. package/dist/components/selected-team-switcher.js +4 -5
  26. package/dist/components/selected-team-switcher.js.map +1 -1
  27. package/dist/components/team-icon.js.map +1 -1
  28. package/dist/components/user-button.js.map +1 -1
  29. package/dist/components-page/account-settings.js +2 -3
  30. package/dist/components-page/account-settings.js.map +1 -1
  31. package/dist/components-page/auth-page.js +3 -2
  32. package/dist/components-page/auth-page.js.map +1 -1
  33. package/dist/components-page/email-verification.js.map +1 -1
  34. package/dist/components-page/error-page.js.map +1 -1
  35. package/dist/components-page/forgot-password.js +2 -1
  36. package/dist/components-page/forgot-password.js.map +1 -1
  37. package/dist/components-page/magic-link-callback.js.map +1 -1
  38. package/dist/components-page/oauth-callback.js +4 -4
  39. package/dist/components-page/oauth-callback.js.map +1 -1
  40. package/dist/components-page/password-reset.js.map +1 -1
  41. package/dist/components-page/sign-in.js.map +1 -1
  42. package/dist/components-page/sign-out.js.map +1 -1
  43. package/dist/components-page/sign-up.js.map +1 -1
  44. package/dist/components-page/stack-handler.d.mts +5 -3
  45. package/dist/components-page/stack-handler.d.ts +5 -3
  46. package/dist/components-page/stack-handler.js +173 -157
  47. package/dist/components-page/stack-handler.js.map +1 -1
  48. package/dist/components-page/team-creation.js +2 -3
  49. package/dist/components-page/team-creation.js.map +1 -1
  50. package/dist/components-page/team-invitation.js.map +1 -1
  51. package/dist/esm/components/credential-sign-in.js +2 -1
  52. package/dist/esm/components/credential-sign-in.js.map +1 -1
  53. package/dist/esm/components/credential-sign-up.js.map +1 -1
  54. package/dist/esm/components/elements/form-warning.js.map +1 -1
  55. package/dist/esm/components/elements/maybe-full-page.js.map +1 -1
  56. package/dist/esm/components/elements/separator-with-text.js.map +1 -1
  57. package/dist/esm/components/elements/sidebar-layout.js +10 -7
  58. package/dist/esm/components/elements/sidebar-layout.js.map +1 -1
  59. package/dist/esm/components/elements/ssr-layout-effect.js.map +1 -1
  60. package/dist/esm/components/elements/user-avatar.js.map +1 -1
  61. package/dist/esm/components/iframe-preventer.js.map +1 -1
  62. package/dist/esm/components/link.js +28 -0
  63. package/dist/esm/components/link.js.map +1 -0
  64. package/dist/esm/components/magic-link-sign-in.js.map +1 -1
  65. package/dist/esm/components/message-cards/known-error-message-card.js.map +1 -1
  66. package/dist/esm/components/message-cards/message-card.js.map +1 -1
  67. package/dist/esm/components/message-cards/predefined-message-card.js.map +1 -1
  68. package/dist/esm/components/oauth-button-group.js.map +1 -1
  69. package/dist/esm/components/oauth-button.js.map +1 -1
  70. package/dist/esm/components/passkey-button.js.map +1 -1
  71. package/dist/esm/components/profile-image-editor.js.map +1 -1
  72. package/dist/esm/components/selected-team-switcher.js +4 -5
  73. package/dist/esm/components/selected-team-switcher.js.map +1 -1
  74. package/dist/esm/components/team-icon.js.map +1 -1
  75. package/dist/esm/components/user-button.js.map +1 -1
  76. package/dist/esm/components-page/account-settings.js +2 -3
  77. package/dist/esm/components-page/account-settings.js.map +1 -1
  78. package/dist/esm/components-page/auth-page.js +2 -1
  79. package/dist/esm/components-page/auth-page.js.map +1 -1
  80. package/dist/esm/components-page/email-verification.js.map +1 -1
  81. package/dist/esm/components-page/error-page.js.map +1 -1
  82. package/dist/esm/components-page/forgot-password.js +2 -1
  83. package/dist/esm/components-page/forgot-password.js.map +1 -1
  84. package/dist/esm/components-page/magic-link-callback.js.map +1 -1
  85. package/dist/esm/components-page/oauth-callback.js +4 -4
  86. package/dist/esm/components-page/oauth-callback.js.map +1 -1
  87. package/dist/esm/components-page/password-reset.js.map +1 -1
  88. package/dist/esm/components-page/sign-in.js.map +1 -1
  89. package/dist/esm/components-page/sign-out.js.map +1 -1
  90. package/dist/esm/components-page/sign-up.js.map +1 -1
  91. package/dist/esm/components-page/stack-handler.js +173 -157
  92. package/dist/esm/components-page/stack-handler.js.map +1 -1
  93. package/dist/esm/components-page/team-creation.js +2 -3
  94. package/dist/esm/components-page/team-creation.js.map +1 -1
  95. package/dist/esm/components-page/team-invitation.js.map +1 -1
  96. package/dist/esm/generated/quetzal-translations.js.map +1 -1
  97. package/dist/esm/index.js.map +1 -1
  98. package/dist/esm/lib/auth.js.map +1 -1
  99. package/dist/esm/lib/cookie.js +4 -7
  100. package/dist/esm/lib/cookie.js.map +1 -1
  101. package/dist/esm/lib/hooks.js.map +1 -1
  102. package/dist/esm/lib/stack-app.js +38 -16
  103. package/dist/esm/lib/stack-app.js.map +1 -1
  104. package/dist/esm/lib/translations.js.map +1 -1
  105. package/dist/esm/providers/stack-provider-client.js +1 -2
  106. package/dist/esm/providers/stack-provider-client.js.map +1 -1
  107. package/dist/esm/providers/stack-provider.js +8 -7
  108. package/dist/esm/providers/stack-provider.js.map +1 -1
  109. package/dist/esm/providers/theme-provider.js.map +1 -1
  110. package/dist/esm/providers/translation-provider-client.js.map +1 -1
  111. package/dist/esm/providers/translation-provider.js +1 -1
  112. package/dist/esm/providers/translation-provider.js.map +1 -1
  113. package/dist/esm/utils/browser-script.js.map +1 -1
  114. package/dist/esm/utils/constants.js.map +1 -1
  115. package/dist/esm/utils/url.js +4 -13
  116. package/dist/esm/utils/url.js.map +1 -1
  117. package/dist/generated/quetzal-translations.js.map +1 -1
  118. package/dist/index.js.map +1 -1
  119. package/dist/lib/auth.js.map +1 -1
  120. package/dist/lib/cookie.d.mts +2 -2
  121. package/dist/lib/cookie.d.ts +2 -2
  122. package/dist/lib/cookie.js +5 -8
  123. package/dist/lib/cookie.js.map +1 -1
  124. package/dist/lib/hooks.js.map +1 -1
  125. package/dist/lib/stack-app.d.mts +6 -1
  126. package/dist/lib/stack-app.d.ts +6 -1
  127. package/dist/lib/stack-app.js +37 -15
  128. package/dist/lib/stack-app.js.map +1 -1
  129. package/dist/lib/translations.js.map +1 -1
  130. package/dist/providers/stack-provider-client.d.mts +2 -1
  131. package/dist/providers/stack-provider-client.d.ts +2 -1
  132. package/dist/providers/stack-provider-client.js +1 -2
  133. package/dist/providers/stack-provider-client.js.map +1 -1
  134. package/dist/providers/stack-provider.d.mts +2 -2
  135. package/dist/providers/stack-provider.d.ts +2 -2
  136. package/dist/providers/stack-provider.js +8 -7
  137. package/dist/providers/stack-provider.js.map +1 -1
  138. package/dist/providers/theme-provider.js.map +1 -1
  139. package/dist/providers/translation-provider-client.js.map +1 -1
  140. package/dist/providers/translation-provider.d.mts +1 -1
  141. package/dist/providers/translation-provider.d.ts +1 -1
  142. package/dist/providers/translation-provider.js +1 -1
  143. package/dist/providers/translation-provider.js.map +1 -1
  144. package/dist/utils/browser-script.js.map +1 -1
  145. package/dist/utils/constants.js.map +1 -1
  146. package/dist/utils/url.d.mts +1 -2
  147. package/dist/utils/url.d.ts +1 -2
  148. package/dist/utils/url.js +4 -14
  149. package/dist/utils/url.js.map +1 -1
  150. package/package.json +5 -5
@@ -22,12 +22,13 @@ import * as NextNavigationUnscrambled from "next/navigation";
22
22
  import React, { useCallback, useMemo } from "react";
23
23
  import { constructRedirectUrl } from "../utils/url";
24
24
  import { addNewOAuthProviderOrScope, callOAuthCallback, signInWithOAuth } from "./auth";
25
- import { createBrowserCookieHelper, createCookieHelper, createEmptyCookieHelper, deleteCookieClient, getCookieClient, setOrDeleteCookie, setOrDeleteCookieClient } from "./cookie";
25
+ import { createBrowserCookieHelper, createCookieHelper, createPlaceholderCookieHelper, deleteCookieClient, getCookieClient, setOrDeleteCookie, setOrDeleteCookieClient } from "./cookie";
26
26
  import * as sc from "@stackframe/stack-sc";
27
+ import { cookies } from "@stackframe/stack-sc";
27
28
  var isReactServer2 = false;
28
29
  isReactServer2 = sc.isReactServer;
29
30
  var NextNavigation = scrambleDuringCompileTime(NextNavigationUnscrambled);
30
- var clientVersion = "js @stackframe/stack@2.7.19";
31
+ var clientVersion = "js @stackframe/stack@2.7.21";
31
32
  if (clientVersion.startsWith("STACK_COMPILE_TIME")) {
32
33
  throw new StackAssertionError("Client version was not replaced. Something went wrong during build!");
33
34
  }
@@ -223,6 +224,7 @@ var _StackClientAppImpl = class __StackClientAppImpl {
223
224
  }
224
225
  );
225
226
  this._memoryTokenStore = createEmptyTokenStore();
227
+ this._nextServerCookiesTokenStores = /* @__PURE__ */ new WeakMap();
226
228
  this._requestTokenStores = /* @__PURE__ */ new WeakMap();
227
229
  this._storedBrowserCookieTokenStore = null;
228
230
  /**
@@ -241,7 +243,10 @@ var _StackClientAppImpl = class __StackClientAppImpl {
241
243
  getBaseUrl: () => getBaseUrl(_options.baseUrl),
242
244
  projectId: _options.projectId ?? getDefaultProjectId(),
243
245
  clientVersion,
244
- publishableClientKey: _options.publishableClientKey ?? getDefaultPublishableClientKey()
246
+ publishableClientKey: _options.publishableClientKey ?? getDefaultPublishableClientKey(),
247
+ prepareRequest: async () => {
248
+ await cookies?.();
249
+ }
245
250
  });
246
251
  }
247
252
  this._tokenStoreInit = _options.tokenStore;
@@ -264,7 +269,7 @@ var _StackClientAppImpl = class __StackClientAppImpl {
264
269
  if (this._tokenStoreInit === "nextjs-cookie" || this._tokenStoreInit === "cookie") {
265
270
  return await createCookieHelper();
266
271
  } else {
267
- return await createEmptyCookieHelper();
272
+ return await createPlaceholderCookieHelper();
268
273
  }
269
274
  }
270
275
  async _getUserOAuthConnectionCacheFn(options) {
@@ -345,9 +350,9 @@ var _StackClientAppImpl = class __StackClientAppImpl {
345
350
  get _refreshTokenCookieName() {
346
351
  return `stack-refresh-${this.projectId}`;
347
352
  }
348
- _getTokensFromCookies(cookies) {
349
- const refreshToken = cookies.refreshTokenCookie;
350
- const accessTokenObject = cookies.accessTokenCookie?.startsWith('["') ? JSON.parse(cookies.accessTokenCookie) : null;
353
+ _getTokensFromCookies(cookies2) {
354
+ const refreshToken = cookies2.refreshTokenCookie;
355
+ const accessTokenObject = cookies2.accessTokenCookie?.startsWith('["') ? JSON.parse(cookies2.accessTokenCookie) : null;
351
356
  const accessToken = accessTokenObject && refreshToken === accessTokenObject[0] ? accessTokenObject[1] : null;
352
357
  return {
353
358
  refreshToken,
@@ -920,16 +925,29 @@ var _StackClientAppImpl = class __StackClientAppImpl {
920
925
  async _redirectTo(options) {
921
926
  if (this._redirectMethod === "none") {
922
927
  return;
923
- }
924
- if (isReactServer2 && this._redirectMethod === "nextjs") {
928
+ } else if (isReactServer2 && this._redirectMethod === "nextjs") {
925
929
  NextNavigation.redirect(options.url.toString(), options.replace ? NextNavigation.RedirectType.replace : NextNavigation.RedirectType.push);
930
+ } else if (typeof this._redirectMethod === "object" && this._redirectMethod.navigate) {
931
+ this._redirectMethod.navigate(options.url.toString());
926
932
  } else {
927
933
  if (options.replace) {
928
934
  window.location.replace(options.url);
929
935
  } else {
930
936
  window.location.assign(options.url);
931
937
  }
932
- await wait(2e3);
938
+ }
939
+ await wait(2e3);
940
+ }
941
+ useNavigate() {
942
+ if (typeof this._redirectMethod === "object") {
943
+ return this._redirectMethod.useNavigate();
944
+ } else if (this._redirectMethod === "window") {
945
+ return () => window.location.assign;
946
+ } else if (this._redirectMethod === "nextjs") {
947
+ return NextNavigation.useRouter().push;
948
+ } else {
949
+ return (to) => {
950
+ };
933
951
  }
934
952
  }
935
953
  async _redirectIfTrusted(url, options) {
@@ -1096,7 +1114,6 @@ var _StackClientAppImpl = class __StackClientAppImpl {
1096
1114
  }
1097
1115
  useUser(options) {
1098
1116
  this._ensurePersistentTokenStore(options?.tokenStore);
1099
- const router = NextNavigation.useRouter();
1100
1117
  const session = this._useSession(options?.tokenStore);
1101
1118
  const crud = useAsyncCache(this._currentUserCache, [session], "useUser()");
1102
1119
  if (crud === null) {
@@ -1194,7 +1211,7 @@ var _StackClientAppImpl = class __StackClientAppImpl {
1194
1211
  async signUpWithCredential(options) {
1195
1212
  this._ensurePersistentTokenStore();
1196
1213
  const session = await this._getSession();
1197
- const emailVerificationRedirectUrl = constructRedirectUrl(this.urls.emailVerification);
1214
+ const emailVerificationRedirectUrl = options.verificationCallbackUrl ?? constructRedirectUrl(this.urls.emailVerification);
1198
1215
  const result = await this._interface.signUpWithCredential(
1199
1216
  options.email,
1200
1217
  options.password,
@@ -1393,6 +1410,9 @@ var _StackClientAppImpl = class __StackClientAppImpl {
1393
1410
  if (!("publishableClientKey" in this._interface.options)) {
1394
1411
  throw new StackAssertionError("Cannot serialize to JSON from an application without a publishable client key");
1395
1412
  }
1413
+ if (typeof this._redirectMethod !== "string") {
1414
+ throw new StackAssertionError("Cannot serialize to JSON from an application with a non-string redirect method");
1415
+ }
1396
1416
  return {
1397
1417
  baseUrl: this._options.baseUrl,
1398
1418
  projectId: this.projectId,
@@ -1400,7 +1420,8 @@ var _StackClientAppImpl = class __StackClientAppImpl {
1400
1420
  tokenStore: this._tokenStoreInit,
1401
1421
  urls: this._urlOptions,
1402
1422
  oauthScopesOnSignIn: this._oauthScopesOnSignIn,
1403
- uniqueIdentifier: this._getUniqueIdentifier()
1423
+ uniqueIdentifier: this._getUniqueIdentifier(),
1424
+ redirectMethod: this._redirectMethod
1404
1425
  };
1405
1426
  },
1406
1427
  setCurrentUser: (userJsonPromise) => {
@@ -1434,7 +1455,8 @@ var _StackServerAppImpl = class extends _StackClientAppImpl {
1434
1455
  publishableClientKey: options.publishableClientKey,
1435
1456
  tokenStore: options.tokenStore,
1436
1457
  urls: options.urls ?? {},
1437
- oauthScopesOnSignIn: options.oauthScopesOnSignIn ?? {}
1458
+ oauthScopesOnSignIn: options.oauthScopesOnSignIn ?? {},
1459
+ redirectMethod: options.redirectMethod
1438
1460
  });
1439
1461
  // TODO override the client user cache to use the server user cache, so we save some requests
1440
1462
  this._currentServerUserCache = createCacheBySession(async (session) => {
@@ -1830,7 +1852,6 @@ var _StackServerAppImpl = class extends _StackClientAppImpl {
1830
1852
  return this.useUserById(options);
1831
1853
  } else {
1832
1854
  this._ensurePersistentTokenStore(options?.tokenStore);
1833
- const router = NextNavigation.useRouter();
1834
1855
  const session = this._useSession(options?.tokenStore);
1835
1856
  const crud = useAsyncCache(this._currentServerUserCache, [session], "useUser()");
1836
1857
  if (crud === null) {
@@ -1942,7 +1963,8 @@ var _StackAdminAppImpl = class extends _StackServerAppImpl {
1942
1963
  projectId: options.projectId,
1943
1964
  tokenStore: options.tokenStore,
1944
1965
  urls: options.urls,
1945
- oauthScopesOnSignIn: options.oauthScopesOnSignIn
1966
+ oauthScopesOnSignIn: options.oauthScopesOnSignIn,
1967
+ redirectMethod: options.redirectMethod
1946
1968
  });
1947
1969
  this._adminProjectCache = createCache(async () => {
1948
1970
  return await this._interface.getProject();