@stackframe/stack 2.4.26 → 2.4.28

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.
package/dist/index.d.mts CHANGED
@@ -17,6 +17,7 @@ export { default as PasswordField } from './components/password-field.mjs';
17
17
  export { default as UserButton } from './components/user-button.mjs';
18
18
  export { default as AccountSettings } from './components-page/account-settings.mjs';
19
19
  export { default as AuthPage } from './components-page/auth-page.mjs';
20
+ export { default as MagicLinkSignIn } from './components/magic-link-sign-in.mjs';
20
21
  export { ColorPalette, useDesign } from './providers/design-provider.mjs';
21
22
  export { useComponents } from './providers/component-provider.mjs';
22
23
  export { StackTheme, ThemeConfig } from './providers/theme-provider.mjs';
package/dist/index.d.ts CHANGED
@@ -17,6 +17,7 @@ export { default as PasswordField } from './components/password-field.js';
17
17
  export { default as UserButton } from './components/user-button.js';
18
18
  export { default as AccountSettings } from './components-page/account-settings.js';
19
19
  export { default as AuthPage } from './components-page/auth-page.js';
20
+ export { default as MagicLinkSignIn } from './components/magic-link-sign-in.js';
20
21
  export { ColorPalette, useDesign } from './providers/design-provider.js';
21
22
  export { useComponents } from './providers/component-provider.js';
22
23
  export { StackTheme, ThemeConfig } from './providers/theme-provider.js';
package/dist/index.js CHANGED
@@ -37,6 +37,7 @@ __export(src_exports, {
37
37
  CredentialSignUp: () => import_credential_sign_up.default,
38
38
  EmailVerification: () => import_email_verification.default,
39
39
  ForgotPassword: () => import_forgot_password.default,
40
+ MagicLinkSignIn: () => import_magic_link_sign_in.default,
40
41
  MessageCard: () => import_message_card.default,
41
42
  OAuthButton: () => import_oauth_button.default,
42
43
  OAuthGroup: () => import_oauth_group.default,
@@ -78,6 +79,7 @@ var import_password_field = __toESM(require("./components/password-field"));
78
79
  var import_user_button = __toESM(require("./components/user-button"));
79
80
  var import_account_settings = __toESM(require("./components-page/account-settings"));
80
81
  var import_auth_page = __toESM(require("./components-page/auth-page"));
82
+ var import_magic_link_sign_in = __toESM(require("./components/magic-link-sign-in"));
81
83
  var import_design_provider = require("./providers/design-provider");
82
84
  var import_component_provider = require("./providers/component-provider");
83
85
  var import_theme_provider = require("./providers/theme-provider");
@@ -90,6 +92,7 @@ __reExport(src_exports, require("./components-core"), module.exports);
90
92
  CredentialSignUp,
91
93
  EmailVerification,
92
94
  ForgotPassword,
95
+ MagicLinkSignIn,
93
96
  MessageCard,
94
97
  OAuthButton,
95
98
  OAuthGroup,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.tsx"],"sourcesContent":["export { default as StackProvider } from \"./providers/stack-provider\";\n\nexport { useUser, useStackApp } from \"./lib/hooks\";\nexport { StackClientApp, StackServerApp, StackAdminApp } from \"./lib/stack-app\";\n\nexport { default as StackHandler } from \"./components-page/stack-handler\";\nexport { default as SignIn } from \"./components-page/sign-in\";\nexport { default as SignUp } from \"./components-page/sign-up\";\nexport { default as EmailVerification } from \"./components-page/email-verification\";\nexport { default as PasswordReset } from \"./components-page/password-reset\";\nexport { default as ForgotPassword } from \"./components-page/forgot-password\";\nexport { default as MessageCard } from \"./components/message-cards/message-card\";\nexport {\n default as SelectedTeamSwitcher,\n /**\n * @deprecated This was renamed to `SelectedTeamSwitcher`.\n */\n default as TeamSwitcher\n} from \"./components/selected-team-switcher\";\n\n\nexport { default as CredentialSignIn } from \"./components/credential-sign-in\";\nexport { default as CredentialSignUp } from \"./components/credential-sign-up\";\nexport { default as OAuthButton } from \"./components/oauth-button\";\nexport { default as OAuthGroup } from \"./components/oauth-group\";\nexport { default as PasswordField } from \"./components/password-field\";\nexport { default as UserButton } from \"./components/user-button\";\nexport { default as AccountSettings } from \"./components-page/account-settings\";\nexport { default as AuthPage } from \"./components-page/auth-page\";\n\nexport { useDesign } from './providers/design-provider';\nexport type { ColorPalette } from './providers/design-provider';\nexport { useComponents } from './providers/component-provider';\nexport { StackTheme } from './providers/theme-provider';\nexport type { ThemeConfig } from './providers/theme-provider';\n\nexport type { \n CurrentUser, \n Project, \n ServerUser as ServerUser, \n ApiKeySetFirstView, \n ApiKeySet, \n ServerTeam, \n Team, \n TeamMember,\n ServerTeamMember,\n ServerPermission as Permission,\n ServerPermission,\n} from './lib/stack-app';\n\nexport * from './components-core';\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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAAyC;AAEzC,mBAAqC;AACrC,uBAA8D;AAE9D,2BAAwC;AACxC,qBAAkC;AAClC,qBAAkC;AAClC,gCAA6C;AAC7C,4BAAyC;AACzC,6BAA0C;AAC1C,0BAAuC;AACvC,oCAMO;AAGP,gCAA4C;AAC5C,gCAA4C;AAC5C,0BAAuC;AACvC,yBAAsC;AACtC,4BAAyC;AACzC,yBAAsC;AACtC,8BAA2C;AAC3C,uBAAoC;AAEpC,6BAA0B;AAE1B,gCAA8B;AAC9B,4BAA2B;AAiB3B,wBAAc,8BAlDd;","names":[]}
1
+ {"version":3,"sources":["../src/index.tsx"],"sourcesContent":["export { default as StackProvider } from \"./providers/stack-provider\";\n\nexport { useUser, useStackApp } from \"./lib/hooks\";\nexport { StackClientApp, StackServerApp, StackAdminApp } from \"./lib/stack-app\";\n\nexport { default as StackHandler } from \"./components-page/stack-handler\";\nexport { default as SignIn } from \"./components-page/sign-in\";\nexport { default as SignUp } from \"./components-page/sign-up\";\nexport { default as EmailVerification } from \"./components-page/email-verification\";\nexport { default as PasswordReset } from \"./components-page/password-reset\";\nexport { default as ForgotPassword } from \"./components-page/forgot-password\";\nexport { default as MessageCard } from \"./components/message-cards/message-card\";\nexport {\n default as SelectedTeamSwitcher,\n /**\n * @deprecated This was renamed to `SelectedTeamSwitcher`.\n */\n default as TeamSwitcher\n} from \"./components/selected-team-switcher\";\n\n\nexport { default as CredentialSignIn } from \"./components/credential-sign-in\";\nexport { default as CredentialSignUp } from \"./components/credential-sign-up\";\nexport { default as OAuthButton } from \"./components/oauth-button\";\nexport { default as OAuthGroup } from \"./components/oauth-group\";\nexport { default as PasswordField } from \"./components/password-field\";\nexport { default as UserButton } from \"./components/user-button\";\nexport { default as AccountSettings } from \"./components-page/account-settings\";\nexport { default as AuthPage } from \"./components-page/auth-page\";\nexport { default as MagicLinkSignIn } from \"./components/magic-link-sign-in\";\n\nexport { useDesign } from './providers/design-provider';\nexport type { ColorPalette } from './providers/design-provider';\nexport { useComponents } from './providers/component-provider';\nexport { StackTheme } from './providers/theme-provider';\nexport type { ThemeConfig } from './providers/theme-provider';\n\nexport type { \n CurrentUser, \n Project, \n ServerUser as ServerUser, \n ApiKeySetFirstView, \n ApiKeySet, \n ServerTeam, \n Team, \n TeamMember,\n ServerTeamMember,\n ServerPermission as Permission,\n ServerPermission,\n} from './lib/stack-app';\n\nexport * from './components-core';\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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAAyC;AAEzC,mBAAqC;AACrC,uBAA8D;AAE9D,2BAAwC;AACxC,qBAAkC;AAClC,qBAAkC;AAClC,gCAA6C;AAC7C,4BAAyC;AACzC,6BAA0C;AAC1C,0BAAuC;AACvC,oCAMO;AAGP,gCAA4C;AAC5C,gCAA4C;AAC5C,0BAAuC;AACvC,yBAAsC;AACtC,4BAAyC;AACzC,yBAAsC;AACtC,8BAA2C;AAC3C,uBAAoC;AACpC,gCAA2C;AAE3C,6BAA0B;AAE1B,gCAA8B;AAC9B,4BAA2B;AAiB3B,wBAAc,8BAnDd;","names":[]}
@@ -1,5 +1,5 @@
1
1
  import { KnownErrors, ServerUserJson, OAuthProviderConfigJson } from '@stackframe/stack-shared';
2
- import { StandardProvider, UserUpdateJson, UserJson, ProjectJson, ProductionModeError, TeamJson, EmailConfigJson, DomainConfigJson, ClientProjectJson } from '@stackframe/stack-shared/dist/interface/clientInterface';
2
+ import { StandardProvider, UserUpdateJson, TeamCustomizableJson, UserJson, PermissionDefinitionJson, ProjectJson, ProductionModeError, TeamJson, EmailConfigJson, DomainConfigJson, ClientProjectJson } from '@stackframe/stack-shared/dist/interface/clientInterface';
3
3
  import { ReadonlyJson } from '@stackframe/stack-shared/dist/utils/json';
4
4
  import { ProjectUpdateOptions, ApiKeySetCreateOptions } from '@stackframe/stack-shared/dist/interface/adminInterface';
5
5
  import { ServerUserUpdateJson, ServerTeamCustomizableJson, ServerPermissionDefinitionCustomizableJson, ServerPermissionDefinitionJson, EmailTemplateType } from '@stackframe/stack-shared/dist/interface/serverInterface';
@@ -182,6 +182,7 @@ type User = {
182
182
  hasPermission(scope: Team, permissionId: string): Promise<boolean>;
183
183
  readonly selectedTeam: Team | null;
184
184
  setSelectedTeam(team: Team | null): Promise<void>;
185
+ createTeam(data: TeamCustomizableJson): Promise<Team>;
185
186
  getConnectedAccount(id: StandardProvider, options: {
186
187
  or: 'redirect';
187
188
  scopes?: string[];
@@ -254,6 +255,8 @@ type Project = {
254
255
  readonly emailConfig?: EmailConfig;
255
256
  readonly domains: DomainConfig[];
256
257
  readonly createTeamOnSignUp: boolean;
258
+ readonly teamCreatorDefaultPermissions: PermissionDefinitionJson[];
259
+ readonly teamMemberDefaultPermissions: PermissionDefinitionJson[];
257
260
  };
258
261
  update(this: Project, update: ProjectUpdateOptions): Promise<void>;
259
262
  toJson(this: Project): ProjectJson;
@@ -1,5 +1,5 @@
1
1
  import { KnownErrors, ServerUserJson, OAuthProviderConfigJson } from '@stackframe/stack-shared';
2
- import { StandardProvider, UserUpdateJson, UserJson, ProjectJson, ProductionModeError, TeamJson, EmailConfigJson, DomainConfigJson, ClientProjectJson } from '@stackframe/stack-shared/dist/interface/clientInterface';
2
+ import { StandardProvider, UserUpdateJson, TeamCustomizableJson, UserJson, PermissionDefinitionJson, ProjectJson, ProductionModeError, TeamJson, EmailConfigJson, DomainConfigJson, ClientProjectJson } from '@stackframe/stack-shared/dist/interface/clientInterface';
3
3
  import { ReadonlyJson } from '@stackframe/stack-shared/dist/utils/json';
4
4
  import { ProjectUpdateOptions, ApiKeySetCreateOptions } from '@stackframe/stack-shared/dist/interface/adminInterface';
5
5
  import { ServerUserUpdateJson, ServerTeamCustomizableJson, ServerPermissionDefinitionCustomizableJson, ServerPermissionDefinitionJson, EmailTemplateType } from '@stackframe/stack-shared/dist/interface/serverInterface';
@@ -182,6 +182,7 @@ type User = {
182
182
  hasPermission(scope: Team, permissionId: string): Promise<boolean>;
183
183
  readonly selectedTeam: Team | null;
184
184
  setSelectedTeam(team: Team | null): Promise<void>;
185
+ createTeam(data: TeamCustomizableJson): Promise<Team>;
185
186
  getConnectedAccount(id: StandardProvider, options: {
186
187
  or: 'redirect';
187
188
  scopes?: string[];
@@ -254,6 +255,8 @@ type Project = {
254
255
  readonly emailConfig?: EmailConfig;
255
256
  readonly domains: DomainConfig[];
256
257
  readonly createTeamOnSignUp: boolean;
258
+ readonly teamCreatorDefaultPermissions: PermissionDefinitionJson[];
259
+ readonly teamMemberDefaultPermissions: PermissionDefinitionJson[];
257
260
  };
258
261
  update(this: Project, update: ProjectUpdateOptions): Promise<void>;
259
262
  toJson(this: Project): ProjectJson;
@@ -60,7 +60,7 @@ var import_sessions = require("@stackframe/stack-shared/dist/sessions");
60
60
  var import_use_trigger = require("@stackframe/stack-shared/dist/hooks/use-trigger");
61
61
  var import_strings = require("@stackframe/stack-shared/dist/utils/strings");
62
62
  var NextNavigation = (0, import_compile_time.scrambleDuringCompileTime)(NextNavigationUnscrambled);
63
- var clientVersion = "js @stackframe/stack@2.4.26";
63
+ var clientVersion = "js @stackframe/stack@2.4.28";
64
64
  function permissionDefinitionScopeToType(scope) {
65
65
  return { "any-team": "team", "specific-team": "team", "global": "global" }[scope.type];
66
66
  }
@@ -119,7 +119,6 @@ function createEmptyTokenStore() {
119
119
  accessToken: null
120
120
  });
121
121
  }
122
- var loadingSentinel = Symbol("stackAppCacheLoadingSentinel");
123
122
  var cachePromiseByComponentId = /* @__PURE__ */ new Map();
124
123
  function useAsyncCache(cache, dependencies, caller) {
125
124
  (0, import_react2.suspendIfSsr)(caller);
@@ -634,6 +633,11 @@ var _StackClientAppImpl = class __StackClientAppImpl {
634
633
  const teams = useAsyncCache(app._currentUserTeamsCache, [session], "user.useTeams()");
635
634
  return (0, import_react.useMemo)(() => teams.map((json2) => app._teamFromJson(json2)), [teams]);
636
635
  },
636
+ async createTeam(data) {
637
+ const teamJson = await app._interface.createTeamForCurrentUser(data, session);
638
+ await app._currentUserTeamsCache.refresh([session]);
639
+ return app._teamFromJson(teamJson);
640
+ },
637
641
  async listPermissions(scope, options) {
638
642
  const permissions = await app._currentUserPermissionsCache.getOrWait([session, scope.id, "team", !!options?.direct], "write-only");
639
643
  return permissions.map((json2) => app._permissionFromJson(json2));
@@ -708,7 +712,9 @@ var _StackClientAppImpl = class __StackClientAppImpl {
708
712
  oauthProviders: data.evaluatedConfig.oauthProviders,
709
713
  emailConfig: data.evaluatedConfig.emailConfig,
710
714
  domains: data.evaluatedConfig.domains,
711
- createTeamOnSignUp: data.evaluatedConfig.createTeamOnSignUp
715
+ createTeamOnSignUp: data.evaluatedConfig.createTeamOnSignUp,
716
+ teamCreatorDefaultPermissions: data.evaluatedConfig.teamCreatorDefaultPermissions,
717
+ teamMemberDefaultPermissions: data.evaluatedConfig.teamMemberDefaultPermissions
712
718
  },
713
719
  async update(update) {
714
720
  await adminInterface.updateProject(update);
@@ -1041,23 +1047,23 @@ var _StackServerAppImpl = class extends _StackClientAppImpl {
1041
1047
  return import_results.Result.or(user, null);
1042
1048
  });
1043
1049
  _serverUsersCache = createCache(async () => {
1044
- return await this._interface.listUsers();
1050
+ return await this._interface.listServerUsers();
1045
1051
  });
1046
1052
  _serverUserCache = createCache(async ([userId]) => {
1047
1053
  const user = await this._interface.getServerUserById(userId);
1048
1054
  return import_results.Result.or(user, null);
1049
1055
  });
1050
1056
  _serverTeamsCache = createCache(async () => {
1051
- return await this._interface.listTeams();
1057
+ return await this._interface.listServerTeams();
1052
1058
  });
1053
1059
  _serverTeamMembersCache = createCache(async ([teamId]) => {
1054
- return await this._interface.listTeamMembers(teamId);
1060
+ return await this._interface.listServerTeamMembers(teamId);
1055
1061
  });
1056
1062
  _serverTeamPermissionDefinitionsCache = createCache(async () => {
1057
1063
  return await this._interface.listPermissionDefinitions();
1058
1064
  });
1059
1065
  _serverTeamUserPermissionsCache = createCache(async ([teamId, userId, type, direct]) => {
1060
- return await this._interface.listTeamMemberPermissions({ teamId, userId, type, direct });
1066
+ return await this._interface.listServerTeamMemberPermissions({ teamId, userId, type, direct });
1061
1067
  });
1062
1068
  _serverEmailTemplatesCache = createCache(async () => {
1063
1069
  return await this._interface.listEmailTemplates();
@@ -1139,6 +1145,11 @@ var _StackServerAppImpl = class extends _StackClientAppImpl {
1139
1145
  useTeams() {
1140
1146
  return app._useCheckFeatureSupport("useTeams() on ServerUser", {});
1141
1147
  },
1148
+ createTeam: async (data) => {
1149
+ const team = await app._interface.createServerTeamForUser(json.id, data, app._getSession());
1150
+ await app._serverTeamsCache.refresh([]);
1151
+ return app._serverTeamFromJson(team);
1152
+ },
1142
1153
  async listPermissions(scope, options) {
1143
1154
  const permissions = await app._serverTeamUserPermissionsCache.getOrWait([scope.id, json.id, "team", !!options?.direct], "write-only");
1144
1155
  return permissions.map((json2) => app._serverPermissionFromJson(json2));
@@ -1159,19 +1170,19 @@ var _StackServerAppImpl = class extends _StackClientAppImpl {
1159
1170
  return await this.getPermission(scope, permissionId) !== null;
1160
1171
  },
1161
1172
  async grantPermission(scope, permissionId) {
1162
- await app._interface.grantTeamUserPermission(scope.id, json.id, permissionId, "team");
1173
+ await app._interface.grantServerTeamUserPermission(scope.id, json.id, permissionId, "team");
1163
1174
  for (const direct of [true, false]) {
1164
1175
  await app._serverTeamUserPermissionsCache.refresh([scope.id, json.id, "team", direct]);
1165
1176
  }
1166
1177
  },
1167
1178
  async revokePermission(scope, permissionId) {
1168
- await app._interface.revokeTeamUserPermission(scope.id, json.id, permissionId, "team");
1179
+ await app._interface.revokeServerTeamUserPermission(scope.id, json.id, permissionId, "team");
1169
1180
  for (const direct of [true, false]) {
1170
1181
  await app._serverTeamUserPermissionsCache.refresh([scope.id, json.id, "team", direct]);
1171
1182
  }
1172
1183
  },
1173
1184
  async delete() {
1174
- const res = await app._interface.deleteServerUser(json.id);
1185
+ const res = await app._interface.deleteServerServerUser(json.id);
1175
1186
  await app._refreshUsers();
1176
1187
  return res;
1177
1188
  },
@@ -1219,14 +1230,14 @@ var _StackServerAppImpl = class extends _StackClientAppImpl {
1219
1230
  displayName: json.displayName,
1220
1231
  createdAt: new Date(json.createdAtMillis),
1221
1232
  async listMembers() {
1222
- return (await app._interface.listTeamMembers(json.id)).map((u) => app._serverTeamMemberFromJson(u));
1233
+ return (await app._interface.listServerTeamMembers(json.id)).map((u) => app._serverTeamMemberFromJson(u));
1223
1234
  },
1224
1235
  async update(update) {
1225
- await app._interface.updateTeam(json.id, update);
1236
+ await app._interface.updateServerTeam(json.id, update);
1226
1237
  await app._serverTeamsCache.refresh([]);
1227
1238
  },
1228
1239
  async delete() {
1229
- await app._interface.deleteTeam(json.id);
1240
+ await app._interface.deleteServerTeam(json.id);
1230
1241
  await app._serverTeamsCache.refresh([]);
1231
1242
  },
1232
1243
  useMembers() {
@@ -1234,14 +1245,14 @@ var _StackServerAppImpl = class extends _StackClientAppImpl {
1234
1245
  return (0, import_react.useMemo)(() => result.map((u) => app._serverTeamMemberFromJson(u)), [result]);
1235
1246
  },
1236
1247
  async addUser(userId) {
1237
- await app._interface.addUserToTeam({
1248
+ await app._interface.addServerUserToTeam({
1238
1249
  teamId: json.id,
1239
1250
  userId
1240
1251
  });
1241
1252
  await app._serverTeamMembersCache.refresh([json.id]);
1242
1253
  },
1243
1254
  async removeUser(userId) {
1244
- await app._interface.removeUserFromTeam({
1255
+ await app._interface.removeServerUserFromTeam({
1245
1256
  teamId: json.id,
1246
1257
  userId
1247
1258
  });
@@ -1353,7 +1364,7 @@ var _StackServerAppImpl = class extends _StackClientAppImpl {
1353
1364
  return teams.map((t) => this._serverTeamFromJson(t));
1354
1365
  }
1355
1366
  async createTeam(data) {
1356
- const team = await this._interface.createTeam(data);
1367
+ const team = await this._interface.createServerTeam(data);
1357
1368
  await this._serverTeamsCache.refresh([]);
1358
1369
  return this._serverTeamFromJson(team);
1359
1370
  }