@stackframe/stack 2.7.18 → 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 (82) hide show
  1. package/CHANGELOG.md +18 -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/elements/sidebar-layout.js +10 -7
  5. package/dist/components/elements/sidebar-layout.js.map +1 -1
  6. package/dist/components/link.d.mts +14 -0
  7. package/dist/components/link.d.ts +14 -0
  8. package/dist/components/link.js +63 -0
  9. package/dist/components/link.js.map +1 -0
  10. package/dist/components/oauth-button.js +17 -7
  11. package/dist/components/oauth-button.js.map +1 -1
  12. package/dist/components/selected-team-switcher.js +4 -5
  13. package/dist/components/selected-team-switcher.js.map +1 -1
  14. package/dist/components-page/account-settings.js +2 -3
  15. package/dist/components-page/account-settings.js.map +1 -1
  16. package/dist/components-page/auth-page.js +3 -2
  17. package/dist/components-page/auth-page.js.map +1 -1
  18. package/dist/components-page/forgot-password.js +2 -1
  19. package/dist/components-page/forgot-password.js.map +1 -1
  20. package/dist/components-page/oauth-callback.js +4 -4
  21. package/dist/components-page/oauth-callback.js.map +1 -1
  22. package/dist/components-page/stack-handler.d.mts +5 -3
  23. package/dist/components-page/stack-handler.d.ts +5 -3
  24. package/dist/components-page/stack-handler.js +173 -157
  25. package/dist/components-page/stack-handler.js.map +1 -1
  26. package/dist/components-page/team-creation.js +2 -3
  27. package/dist/components-page/team-creation.js.map +1 -1
  28. package/dist/esm/components/credential-sign-in.js +2 -1
  29. package/dist/esm/components/credential-sign-in.js.map +1 -1
  30. package/dist/esm/components/elements/sidebar-layout.js +10 -7
  31. package/dist/esm/components/elements/sidebar-layout.js.map +1 -1
  32. package/dist/esm/components/link.js +28 -0
  33. package/dist/esm/components/link.js.map +1 -0
  34. package/dist/esm/components/oauth-button.js +18 -8
  35. package/dist/esm/components/oauth-button.js.map +1 -1
  36. package/dist/esm/components/selected-team-switcher.js +4 -5
  37. package/dist/esm/components/selected-team-switcher.js.map +1 -1
  38. package/dist/esm/components-page/account-settings.js +2 -3
  39. package/dist/esm/components-page/account-settings.js.map +1 -1
  40. package/dist/esm/components-page/auth-page.js +2 -1
  41. package/dist/esm/components-page/auth-page.js.map +1 -1
  42. package/dist/esm/components-page/forgot-password.js +2 -1
  43. package/dist/esm/components-page/forgot-password.js.map +1 -1
  44. package/dist/esm/components-page/oauth-callback.js +4 -4
  45. package/dist/esm/components-page/oauth-callback.js.map +1 -1
  46. package/dist/esm/components-page/stack-handler.js +173 -157
  47. package/dist/esm/components-page/stack-handler.js.map +1 -1
  48. package/dist/esm/components-page/team-creation.js +2 -3
  49. package/dist/esm/components-page/team-creation.js.map +1 -1
  50. package/dist/esm/generated/global-css.js +1 -1
  51. package/dist/esm/generated/global-css.js.map +1 -1
  52. package/dist/esm/lib/stack-app.js +35 -16
  53. package/dist/esm/lib/stack-app.js.map +1 -1
  54. package/dist/esm/providers/stack-provider-client.js +1 -2
  55. package/dist/esm/providers/stack-provider-client.js.map +1 -1
  56. package/dist/esm/providers/stack-provider.js +8 -7
  57. package/dist/esm/providers/stack-provider.js.map +1 -1
  58. package/dist/esm/providers/translation-provider.js +1 -1
  59. package/dist/esm/providers/translation-provider.js.map +1 -1
  60. package/dist/generated/global-css.d.mts +1 -1
  61. package/dist/generated/global-css.d.ts +1 -1
  62. package/dist/generated/global-css.js +1 -1
  63. package/dist/generated/global-css.js.map +1 -1
  64. package/dist/generated/quetzal-translations.d.mts +2 -2
  65. package/dist/generated/quetzal-translations.d.ts +2 -2
  66. package/dist/lib/stack-app.d.mts +5 -3
  67. package/dist/lib/stack-app.d.ts +5 -3
  68. package/dist/lib/stack-app.js +35 -16
  69. package/dist/lib/stack-app.js.map +1 -1
  70. package/dist/providers/stack-provider-client.d.mts +2 -1
  71. package/dist/providers/stack-provider-client.d.ts +2 -1
  72. package/dist/providers/stack-provider-client.js +1 -2
  73. package/dist/providers/stack-provider-client.js.map +1 -1
  74. package/dist/providers/stack-provider.d.mts +2 -2
  75. package/dist/providers/stack-provider.d.ts +2 -2
  76. package/dist/providers/stack-provider.js +8 -7
  77. package/dist/providers/stack-provider.js.map +1 -1
  78. package/dist/providers/translation-provider.d.mts +1 -1
  79. package/dist/providers/translation-provider.d.ts +1 -1
  80. package/dist/providers/translation-provider.js +1 -1
  81. package/dist/providers/translation-provider.js.map +1 -1
  82. package/package.json +5 -5
@@ -14,7 +14,10 @@ type RequestLike = {
14
14
  get: (name: string) => string | null;
15
15
  };
16
16
  };
17
- type RedirectMethod = "window" | "nextjs" | "none";
17
+ type RedirectMethod = "window" | "nextjs" | "none" | {
18
+ useNavigate: () => (to: string) => void;
19
+ navigate?: (to: string) => void;
20
+ };
18
21
  type TokenStoreInit<HasTokenStore extends boolean = boolean> = HasTokenStore extends true ? ("cookie" | "nextjs-cookie" | "memory" | RequestLike | {
19
22
  accessToken: string;
20
23
  refreshToken: string;
@@ -415,7 +418,6 @@ type AdminProjectConfig = {
415
418
  readonly passkeyEnabled: boolean;
416
419
  readonly clientTeamCreationEnabled: boolean;
417
420
  readonly clientUserDeletionEnabled: boolean;
418
- readonly legacyGlobalJwtSigning: boolean;
419
421
  readonly allowLocalhost: boolean;
420
422
  readonly oauthProviders: AdminOAuthProviderConfig[];
421
423
  readonly emailConfig?: AdminEmailConfig;
@@ -466,7 +468,6 @@ type AdminProjectConfigUpdateOptions = {
466
468
  allowLocalhost?: boolean;
467
469
  createTeamOnSignUp?: boolean;
468
470
  emailConfig?: AdminEmailConfig;
469
- legacyGlobalJwtSigning?: false;
470
471
  teamCreatorDefaultPermissions?: {
471
472
  id: string;
472
473
  }[];
@@ -679,6 +680,7 @@ type StackClientApp<HasTokenStore extends boolean = boolean, ProjectId extends s
679
680
  or: 'throw';
680
681
  }): Promise<ProjectCurrentUser<ProjectId>>;
681
682
  getUser(options?: GetUserOptions<HasTokenStore>): Promise<ProjectCurrentUser<ProjectId> | null>;
683
+ useNavigate(): (to: string) => void;
682
684
  [stackAppInternalsSymbol]: {
683
685
  toClientJson(): StackClientAppJson<HasTokenStore, ProjectId>;
684
686
  setCurrentUser(userJsonPromise: Promise<CurrentUserCrud['Client']['Read'] | null>): void;
@@ -14,7 +14,10 @@ type RequestLike = {
14
14
  get: (name: string) => string | null;
15
15
  };
16
16
  };
17
- type RedirectMethod = "window" | "nextjs" | "none";
17
+ type RedirectMethod = "window" | "nextjs" | "none" | {
18
+ useNavigate: () => (to: string) => void;
19
+ navigate?: (to: string) => void;
20
+ };
18
21
  type TokenStoreInit<HasTokenStore extends boolean = boolean> = HasTokenStore extends true ? ("cookie" | "nextjs-cookie" | "memory" | RequestLike | {
19
22
  accessToken: string;
20
23
  refreshToken: string;
@@ -415,7 +418,6 @@ type AdminProjectConfig = {
415
418
  readonly passkeyEnabled: boolean;
416
419
  readonly clientTeamCreationEnabled: boolean;
417
420
  readonly clientUserDeletionEnabled: boolean;
418
- readonly legacyGlobalJwtSigning: boolean;
419
421
  readonly allowLocalhost: boolean;
420
422
  readonly oauthProviders: AdminOAuthProviderConfig[];
421
423
  readonly emailConfig?: AdminEmailConfig;
@@ -466,7 +468,6 @@ type AdminProjectConfigUpdateOptions = {
466
468
  allowLocalhost?: boolean;
467
469
  createTeamOnSignUp?: boolean;
468
470
  emailConfig?: AdminEmailConfig;
469
- legacyGlobalJwtSigning?: false;
470
471
  teamCreatorDefaultPermissions?: {
471
472
  id: string;
472
473
  }[];
@@ -679,6 +680,7 @@ type StackClientApp<HasTokenStore extends boolean = boolean, ProjectId extends s
679
680
  or: 'throw';
680
681
  }): Promise<ProjectCurrentUser<ProjectId>>;
681
682
  getUser(options?: GetUserOptions<HasTokenStore>): Promise<ProjectCurrentUser<ProjectId> | null>;
683
+ useNavigate(): (to: string) => void;
682
684
  [stackAppInternalsSymbol]: {
683
685
  toClientJson(): StackClientAppJson<HasTokenStore, ProjectId>;
684
686
  setCurrentUser(userJsonPromise: Promise<CurrentUserCrud['Client']['Read'] | null>): void;
@@ -63,10 +63,11 @@ var import_url = require("../utils/url");
63
63
  var import_auth = require("./auth");
64
64
  var import_cookie = require("./cookie");
65
65
  var sc = __toESM(require("@stackframe/stack-sc"));
66
+ var import_stack_sc = require("@stackframe/stack-sc");
66
67
  var isReactServer2 = false;
67
68
  isReactServer2 = sc.isReactServer;
68
69
  var NextNavigation = (0, import_compile_time.scrambleDuringCompileTime)(NextNavigationUnscrambled);
69
- var clientVersion = "js @stackframe/stack@2.7.18";
70
+ var clientVersion = "js @stackframe/stack@2.7.20";
70
71
  if (clientVersion.startsWith("STACK_COMPILE_TIME")) {
71
72
  throw new import_errors.StackAssertionError("Client version was not replaced. Something went wrong during build!");
72
73
  }
@@ -280,7 +281,10 @@ var _StackClientAppImpl = class __StackClientAppImpl {
280
281
  getBaseUrl: () => getBaseUrl(_options.baseUrl),
281
282
  projectId: _options.projectId ?? getDefaultProjectId(),
282
283
  clientVersion,
283
- publishableClientKey: _options.publishableClientKey ?? getDefaultPublishableClientKey()
284
+ publishableClientKey: _options.publishableClientKey ?? getDefaultPublishableClientKey(),
285
+ prepareRequest: async () => {
286
+ await (0, import_stack_sc.cookies)?.();
287
+ }
284
288
  });
285
289
  }
286
290
  this._tokenStoreInit = _options.tokenStore;
@@ -384,9 +388,9 @@ var _StackClientAppImpl = class __StackClientAppImpl {
384
388
  get _refreshTokenCookieName() {
385
389
  return `stack-refresh-${this.projectId}`;
386
390
  }
387
- _getTokensFromCookies(cookies) {
388
- const refreshToken = cookies.refreshTokenCookie;
389
- const accessTokenObject = cookies.accessTokenCookie?.startsWith('["') ? JSON.parse(cookies.accessTokenCookie) : null;
391
+ _getTokensFromCookies(cookies2) {
392
+ const refreshToken = cookies2.refreshTokenCookie;
393
+ const accessTokenObject = cookies2.accessTokenCookie?.startsWith('["') ? JSON.parse(cookies2.accessTokenCookie) : null;
390
394
  const accessToken = accessTokenObject && refreshToken === accessTokenObject[0] ? accessTokenObject[1] : null;
391
395
  return {
392
396
  refreshToken,
@@ -959,16 +963,29 @@ var _StackClientAppImpl = class __StackClientAppImpl {
959
963
  async _redirectTo(options) {
960
964
  if (this._redirectMethod === "none") {
961
965
  return;
962
- }
963
- if (isReactServer2 && this._redirectMethod === "nextjs") {
966
+ } else if (isReactServer2 && this._redirectMethod === "nextjs") {
964
967
  NextNavigation.redirect(options.url.toString(), options.replace ? NextNavigation.RedirectType.replace : NextNavigation.RedirectType.push);
968
+ } else if (typeof this._redirectMethod === "object" && this._redirectMethod.navigate) {
969
+ this._redirectMethod.navigate(options.url.toString());
965
970
  } else {
966
971
  if (options.replace) {
967
972
  window.location.replace(options.url);
968
973
  } else {
969
974
  window.location.assign(options.url);
970
975
  }
971
- await (0, import_promises.wait)(2e3);
976
+ }
977
+ await (0, import_promises.wait)(2e3);
978
+ }
979
+ useNavigate() {
980
+ if (typeof this._redirectMethod === "object") {
981
+ return this._redirectMethod.useNavigate();
982
+ } else if (this._redirectMethod === "window") {
983
+ return () => window.location.assign;
984
+ } else if (this._redirectMethod === "nextjs") {
985
+ return NextNavigation.useRouter().push;
986
+ } else {
987
+ return (to) => {
988
+ };
972
989
  }
973
990
  }
974
991
  async _redirectIfTrusted(url, options) {
@@ -1135,7 +1152,6 @@ var _StackClientAppImpl = class __StackClientAppImpl {
1135
1152
  }
1136
1153
  useUser(options) {
1137
1154
  this._ensurePersistentTokenStore(options?.tokenStore);
1138
- const router = NextNavigation.useRouter();
1139
1155
  const session = this._useSession(options?.tokenStore);
1140
1156
  const crud = useAsyncCache(this._currentUserCache, [session], "useUser()");
1141
1157
  if (crud === null) {
@@ -1432,6 +1448,9 @@ var _StackClientAppImpl = class __StackClientAppImpl {
1432
1448
  if (!("publishableClientKey" in this._interface.options)) {
1433
1449
  throw new import_errors.StackAssertionError("Cannot serialize to JSON from an application without a publishable client key");
1434
1450
  }
1451
+ if (typeof this._redirectMethod !== "string") {
1452
+ throw new import_errors.StackAssertionError("Cannot serialize to JSON from an application with a non-string redirect method");
1453
+ }
1435
1454
  return {
1436
1455
  baseUrl: this._options.baseUrl,
1437
1456
  projectId: this.projectId,
@@ -1439,7 +1458,8 @@ var _StackClientAppImpl = class __StackClientAppImpl {
1439
1458
  tokenStore: this._tokenStoreInit,
1440
1459
  urls: this._urlOptions,
1441
1460
  oauthScopesOnSignIn: this._oauthScopesOnSignIn,
1442
- uniqueIdentifier: this._getUniqueIdentifier()
1461
+ uniqueIdentifier: this._getUniqueIdentifier(),
1462
+ redirectMethod: this._redirectMethod
1443
1463
  };
1444
1464
  },
1445
1465
  setCurrentUser: (userJsonPromise) => {
@@ -1473,7 +1493,8 @@ var _StackServerAppImpl = class extends _StackClientAppImpl {
1473
1493
  publishableClientKey: options.publishableClientKey,
1474
1494
  tokenStore: options.tokenStore,
1475
1495
  urls: options.urls ?? {},
1476
- oauthScopesOnSignIn: options.oauthScopesOnSignIn ?? {}
1496
+ oauthScopesOnSignIn: options.oauthScopesOnSignIn ?? {},
1497
+ redirectMethod: options.redirectMethod
1477
1498
  });
1478
1499
  // TODO override the client user cache to use the server user cache, so we save some requests
1479
1500
  this._currentServerUserCache = createCacheBySession(async (session) => {
@@ -1869,7 +1890,6 @@ var _StackServerAppImpl = class extends _StackClientAppImpl {
1869
1890
  return this.useUserById(options);
1870
1891
  } else {
1871
1892
  this._ensurePersistentTokenStore(options?.tokenStore);
1872
- const router = NextNavigation.useRouter();
1873
1893
  const session = this._useSession(options?.tokenStore);
1874
1894
  const crud = useAsyncCache(this._currentServerUserCache, [session], "useUser()");
1875
1895
  if (crud === null) {
@@ -1981,7 +2001,8 @@ var _StackAdminAppImpl = class extends _StackServerAppImpl {
1981
2001
  projectId: options.projectId,
1982
2002
  tokenStore: options.tokenStore,
1983
2003
  urls: options.urls,
1984
- oauthScopesOnSignIn: options.oauthScopesOnSignIn
2004
+ oauthScopesOnSignIn: options.oauthScopesOnSignIn,
2005
+ redirectMethod: options.redirectMethod
1985
2006
  });
1986
2007
  this._adminProjectCache = createCache(async () => {
1987
2008
  return await this._interface.getProject();
@@ -2030,7 +2051,6 @@ var _StackAdminAppImpl = class extends _StackServerAppImpl {
2030
2051
  credentialEnabled: data.config.credential_enabled,
2031
2052
  magicLinkEnabled: data.config.magic_link_enabled,
2032
2053
  passkeyEnabled: data.config.passkey_enabled,
2033
- legacyGlobalJwtSigning: data.config.legacy_global_jwt_signing,
2034
2054
  clientTeamCreationEnabled: data.config.client_team_creation_enabled,
2035
2055
  clientUserDeletionEnabled: data.config.client_user_deletion_enabled,
2036
2056
  allowLocalhost: data.config.allow_localhost,
@@ -2345,8 +2365,7 @@ function adminProjectUpdateOptionsToCrud(options) {
2345
2365
  client_team_creation_enabled: options.config?.clientTeamCreationEnabled,
2346
2366
  client_user_deletion_enabled: options.config?.clientUserDeletionEnabled,
2347
2367
  team_creator_default_permissions: options.config?.teamCreatorDefaultPermissions,
2348
- team_member_default_permissions: options.config?.teamMemberDefaultPermissions,
2349
- legacy_global_jwt_signing: options.config?.legacyGlobalJwtSigning
2368
+ team_member_default_permissions: options.config?.teamMemberDefaultPermissions
2350
2369
  }
2351
2370
  };
2352
2371
  }