@stackframe/stack 2.8.58 → 2.8.60

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 (235) hide show
  1. package/dist/components/api-key-dialogs.js.map +1 -1
  2. package/dist/components/api-key-table.js.map +1 -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.map +1 -1
  9. package/dist/components/elements/ssr-layout-effect.js.map +1 -1
  10. package/dist/components/elements/user-avatar.js.map +1 -1
  11. package/dist/components/link.js.map +1 -1
  12. package/dist/components/magic-link-sign-in.js.map +1 -1
  13. package/dist/components/message-cards/known-error-message-card.js.map +1 -1
  14. package/dist/components/message-cards/message-card.js.map +1 -1
  15. package/dist/components/message-cards/predefined-message-card.js.map +1 -1
  16. package/dist/components/oauth-button-group.js.map +1 -1
  17. package/dist/components/oauth-button.js.map +1 -1
  18. package/dist/components/passkey-button.js.map +1 -1
  19. package/dist/components/profile-image-editor.js.map +1 -1
  20. package/dist/components/selected-team-switcher.js.map +1 -1
  21. package/dist/components/team-icon.js.map +1 -1
  22. package/dist/components/team-switcher.js.map +1 -1
  23. package/dist/components/use-in-iframe.js.map +1 -1
  24. package/dist/components/user-button.js.map +1 -1
  25. package/dist/components-page/account-settings/active-sessions/active-sessions-page.js.map +1 -1
  26. package/dist/components-page/account-settings/api-keys/api-keys-page.js.map +1 -1
  27. package/dist/components-page/account-settings/editable-text.js.map +1 -1
  28. package/dist/components-page/account-settings/email-and-auth/email-and-auth-page.js.map +1 -1
  29. package/dist/components-page/account-settings/email-and-auth/emails-section.js.map +1 -1
  30. package/dist/components-page/account-settings/email-and-auth/mfa-section.js.map +1 -1
  31. package/dist/components-page/account-settings/email-and-auth/otp-section.js.map +1 -1
  32. package/dist/components-page/account-settings/email-and-auth/passkey-section.js.map +1 -1
  33. package/dist/components-page/account-settings/email-and-auth/password-section.js.map +1 -1
  34. package/dist/components-page/account-settings/notifications/notifications-page.js.map +1 -1
  35. package/dist/components-page/account-settings/page-layout.js.map +1 -1
  36. package/dist/components-page/account-settings/payments/payments-page.js +79 -0
  37. package/dist/components-page/account-settings/payments/payments-page.js.map +1 -0
  38. package/dist/components-page/account-settings/payments/payments-panel.js +374 -0
  39. package/dist/components-page/account-settings/payments/payments-panel.js.map +1 -0
  40. package/dist/components-page/account-settings/profile-page/profile-page.js.map +1 -1
  41. package/dist/components-page/account-settings/section.js.map +1 -1
  42. package/dist/components-page/account-settings/settings/delete-account-section.js.map +1 -1
  43. package/dist/components-page/account-settings/settings/settings-page.js.map +1 -1
  44. package/dist/components-page/account-settings/settings/sign-out-section.js.map +1 -1
  45. package/dist/components-page/account-settings/teams/leave-team-section.js.map +1 -1
  46. package/dist/components-page/account-settings/teams/team-api-keys-section.js.map +1 -1
  47. package/dist/components-page/account-settings/teams/team-creation-page.js.map +1 -1
  48. package/dist/components-page/account-settings/teams/team-display-name-section.js.map +1 -1
  49. package/dist/components-page/account-settings/teams/team-member-invitation-section.js.map +1 -1
  50. package/dist/components-page/account-settings/teams/team-member-list-section.js.map +1 -1
  51. package/dist/components-page/account-settings/teams/team-page.js.map +1 -1
  52. package/dist/components-page/account-settings/teams/team-profile-image-section.js.map +1 -1
  53. package/dist/components-page/account-settings/teams/team-profile-user-section.js.map +1 -1
  54. package/dist/components-page/account-settings.js +22 -2
  55. package/dist/components-page/account-settings.js.map +1 -1
  56. package/dist/components-page/auth-page.js.map +1 -1
  57. package/dist/components-page/cli-auth-confirm.js.map +1 -1
  58. package/dist/components-page/email-verification.js.map +1 -1
  59. package/dist/components-page/error-page.js.map +1 -1
  60. package/dist/components-page/forgot-password.js.map +1 -1
  61. package/dist/components-page/magic-link-callback.js.map +1 -1
  62. package/dist/components-page/mfa.js.map +1 -1
  63. package/dist/components-page/oauth-callback.js.map +1 -1
  64. package/dist/components-page/onboarding.js.map +1 -1
  65. package/dist/components-page/password-reset.js.map +1 -1
  66. package/dist/components-page/section.js.map +1 -1
  67. package/dist/components-page/sign-in.js.map +1 -1
  68. package/dist/components-page/sign-out.js.map +1 -1
  69. package/dist/components-page/sign-up.js.map +1 -1
  70. package/dist/components-page/stack-handler-client.js.map +1 -1
  71. package/dist/components-page/stack-handler.js.map +1 -1
  72. package/dist/components-page/team-creation.js.map +1 -1
  73. package/dist/components-page/team-invitation.js.map +1 -1
  74. package/dist/esm/components/api-key-dialogs.js.map +1 -1
  75. package/dist/esm/components/api-key-table.js.map +1 -1
  76. package/dist/esm/components/credential-sign-in.js.map +1 -1
  77. package/dist/esm/components/credential-sign-up.js.map +1 -1
  78. package/dist/esm/components/elements/form-warning.js.map +1 -1
  79. package/dist/esm/components/elements/maybe-full-page.js.map +1 -1
  80. package/dist/esm/components/elements/separator-with-text.js.map +1 -1
  81. package/dist/esm/components/elements/sidebar-layout.js.map +1 -1
  82. package/dist/esm/components/elements/ssr-layout-effect.js.map +1 -1
  83. package/dist/esm/components/elements/user-avatar.js.map +1 -1
  84. package/dist/esm/components/link.js.map +1 -1
  85. package/dist/esm/components/magic-link-sign-in.js.map +1 -1
  86. package/dist/esm/components/message-cards/known-error-message-card.js.map +1 -1
  87. package/dist/esm/components/message-cards/message-card.js.map +1 -1
  88. package/dist/esm/components/message-cards/predefined-message-card.js.map +1 -1
  89. package/dist/esm/components/oauth-button-group.js.map +1 -1
  90. package/dist/esm/components/oauth-button.js.map +1 -1
  91. package/dist/esm/components/passkey-button.js.map +1 -1
  92. package/dist/esm/components/profile-image-editor.js.map +1 -1
  93. package/dist/esm/components/selected-team-switcher.js.map +1 -1
  94. package/dist/esm/components/team-icon.js.map +1 -1
  95. package/dist/esm/components/team-switcher.js.map +1 -1
  96. package/dist/esm/components/use-in-iframe.js.map +1 -1
  97. package/dist/esm/components/user-button.js.map +1 -1
  98. package/dist/esm/components-page/account-settings/active-sessions/active-sessions-page.js.map +1 -1
  99. package/dist/esm/components-page/account-settings/api-keys/api-keys-page.js.map +1 -1
  100. package/dist/esm/components-page/account-settings/editable-text.js.map +1 -1
  101. package/dist/esm/components-page/account-settings/email-and-auth/email-and-auth-page.js.map +1 -1
  102. package/dist/esm/components-page/account-settings/email-and-auth/emails-section.js.map +1 -1
  103. package/dist/esm/components-page/account-settings/email-and-auth/mfa-section.js.map +1 -1
  104. package/dist/esm/components-page/account-settings/email-and-auth/otp-section.js.map +1 -1
  105. package/dist/esm/components-page/account-settings/email-and-auth/passkey-section.js.map +1 -1
  106. package/dist/esm/components-page/account-settings/email-and-auth/password-section.js.map +1 -1
  107. package/dist/esm/components-page/account-settings/notifications/notifications-page.js.map +1 -1
  108. package/dist/esm/components-page/account-settings/page-layout.js.map +1 -1
  109. package/dist/esm/components-page/account-settings/payments/payments-page.js +55 -0
  110. package/dist/esm/components-page/account-settings/payments/payments-page.js.map +1 -0
  111. package/dist/esm/components-page/account-settings/payments/payments-panel.js +350 -0
  112. package/dist/esm/components-page/account-settings/payments/payments-panel.js.map +1 -0
  113. package/dist/esm/components-page/account-settings/profile-page/profile-page.js.map +1 -1
  114. package/dist/esm/components-page/account-settings/section.js.map +1 -1
  115. package/dist/esm/components-page/account-settings/settings/delete-account-section.js.map +1 -1
  116. package/dist/esm/components-page/account-settings/settings/settings-page.js.map +1 -1
  117. package/dist/esm/components-page/account-settings/settings/sign-out-section.js.map +1 -1
  118. package/dist/esm/components-page/account-settings/teams/leave-team-section.js.map +1 -1
  119. package/dist/esm/components-page/account-settings/teams/team-api-keys-section.js.map +1 -1
  120. package/dist/esm/components-page/account-settings/teams/team-creation-page.js.map +1 -1
  121. package/dist/esm/components-page/account-settings/teams/team-display-name-section.js.map +1 -1
  122. package/dist/esm/components-page/account-settings/teams/team-member-invitation-section.js.map +1 -1
  123. package/dist/esm/components-page/account-settings/teams/team-member-list-section.js.map +1 -1
  124. package/dist/esm/components-page/account-settings/teams/team-page.js.map +1 -1
  125. package/dist/esm/components-page/account-settings/teams/team-profile-image-section.js.map +1 -1
  126. package/dist/esm/components-page/account-settings/teams/team-profile-user-section.js.map +1 -1
  127. package/dist/esm/components-page/account-settings.js +23 -3
  128. package/dist/esm/components-page/account-settings.js.map +1 -1
  129. package/dist/esm/components-page/auth-page.js.map +1 -1
  130. package/dist/esm/components-page/cli-auth-confirm.js.map +1 -1
  131. package/dist/esm/components-page/email-verification.js.map +1 -1
  132. package/dist/esm/components-page/error-page.js.map +1 -1
  133. package/dist/esm/components-page/forgot-password.js.map +1 -1
  134. package/dist/esm/components-page/magic-link-callback.js.map +1 -1
  135. package/dist/esm/components-page/mfa.js.map +1 -1
  136. package/dist/esm/components-page/oauth-callback.js.map +1 -1
  137. package/dist/esm/components-page/onboarding.js.map +1 -1
  138. package/dist/esm/components-page/password-reset.js.map +1 -1
  139. package/dist/esm/components-page/section.js.map +1 -1
  140. package/dist/esm/components-page/sign-in.js.map +1 -1
  141. package/dist/esm/components-page/sign-out.js.map +1 -1
  142. package/dist/esm/components-page/sign-up.js.map +1 -1
  143. package/dist/esm/components-page/stack-handler-client.js.map +1 -1
  144. package/dist/esm/components-page/stack-handler.js.map +1 -1
  145. package/dist/esm/components-page/team-creation.js.map +1 -1
  146. package/dist/esm/components-page/team-invitation.js.map +1 -1
  147. package/dist/esm/generated/global-css.js +1 -1
  148. package/dist/esm/generated/global-css.js.map +1 -1
  149. package/dist/esm/generated/quetzal-translations.js +4032 -3556
  150. package/dist/esm/generated/quetzal-translations.js.map +1 -1
  151. package/dist/esm/index.js.map +1 -1
  152. package/dist/esm/integrations/convex/component/convex.config.js.map +1 -1
  153. package/dist/esm/integrations/convex.js.map +1 -1
  154. package/dist/esm/lib/auth.js.map +1 -1
  155. package/dist/esm/lib/cookie.js.map +1 -1
  156. package/dist/esm/lib/hooks.js.map +1 -1
  157. package/dist/esm/lib/stack-app/api-keys/index.js.map +1 -1
  158. package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.js.map +1 -1
  159. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.js +63 -4
  160. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.js.map +1 -1
  161. package/dist/esm/lib/stack-app/apps/implementations/common.js +1 -1
  162. package/dist/esm/lib/stack-app/apps/implementations/common.js.map +1 -1
  163. package/dist/esm/lib/stack-app/apps/implementations/index.js.map +1 -1
  164. package/dist/esm/lib/stack-app/apps/implementations/server-app-impl.js.map +1 -1
  165. package/dist/esm/lib/stack-app/apps/index.js.map +1 -1
  166. package/dist/esm/lib/stack-app/apps/interfaces/admin-app.js.map +1 -1
  167. package/dist/esm/lib/stack-app/apps/interfaces/client-app.js.map +1 -1
  168. package/dist/esm/lib/stack-app/apps/interfaces/server-app.js.map +1 -1
  169. package/dist/esm/lib/stack-app/common.js.map +1 -1
  170. package/dist/esm/lib/stack-app/contact-channels/index.js.map +1 -1
  171. package/dist/esm/lib/stack-app/email-templates/index.js.map +1 -1
  172. package/dist/esm/lib/stack-app/index.js.map +1 -1
  173. package/dist/esm/lib/stack-app/internal-api-keys/index.js.map +1 -1
  174. package/dist/esm/lib/stack-app/permissions/index.js.map +1 -1
  175. package/dist/esm/lib/stack-app/projects/index.js.map +1 -1
  176. package/dist/esm/lib/stack-app/teams/index.js.map +1 -1
  177. package/dist/esm/lib/stack-app/users/index.js.map +1 -1
  178. package/dist/esm/lib/translations.js.map +1 -1
  179. package/dist/esm/providers/stack-provider-client.js.map +1 -1
  180. package/dist/esm/providers/stack-provider.js.map +1 -1
  181. package/dist/esm/providers/theme-provider.js.map +1 -1
  182. package/dist/esm/providers/translation-provider-client.js.map +1 -1
  183. package/dist/esm/providers/translation-provider.js.map +1 -1
  184. package/dist/esm/utils/browser-script.js.map +1 -1
  185. package/dist/esm/utils/constants.js.map +1 -1
  186. package/dist/esm/utils/url.js.map +1 -1
  187. package/dist/generated/global-css.js +1 -1
  188. package/dist/generated/global-css.js.map +1 -1
  189. package/dist/generated/quetzal-translations.js +4032 -3556
  190. package/dist/generated/quetzal-translations.js.map +1 -1
  191. package/dist/index.d.mts +38 -2
  192. package/dist/index.d.ts +38 -2
  193. package/dist/index.js.map +1 -1
  194. package/dist/integrations/convex/component/convex.config.js.map +1 -1
  195. package/dist/integrations/convex.js.map +1 -1
  196. package/dist/lib/auth.js.map +1 -1
  197. package/dist/lib/cookie.js.map +1 -1
  198. package/dist/lib/hooks.js.map +1 -1
  199. package/dist/lib/stack-app/api-keys/index.js.map +1 -1
  200. package/dist/lib/stack-app/apps/implementations/admin-app-impl.js.map +1 -1
  201. package/dist/lib/stack-app/apps/implementations/client-app-impl.js +63 -4
  202. package/dist/lib/stack-app/apps/implementations/client-app-impl.js.map +1 -1
  203. package/dist/lib/stack-app/apps/implementations/common.js +1 -1
  204. package/dist/lib/stack-app/apps/implementations/common.js.map +1 -1
  205. package/dist/lib/stack-app/apps/implementations/index.js.map +1 -1
  206. package/dist/lib/stack-app/apps/implementations/server-app-impl.js.map +1 -1
  207. package/dist/lib/stack-app/apps/index.js.map +1 -1
  208. package/dist/lib/stack-app/apps/interfaces/admin-app.js.map +1 -1
  209. package/dist/lib/stack-app/apps/interfaces/client-app.js.map +1 -1
  210. package/dist/lib/stack-app/apps/interfaces/server-app.js.map +1 -1
  211. package/dist/lib/stack-app/common.js.map +1 -1
  212. package/dist/lib/stack-app/connected-accounts/index.js.map +1 -1
  213. package/dist/lib/stack-app/contact-channels/index.js.map +1 -1
  214. package/dist/lib/stack-app/customers/index.js.map +1 -1
  215. package/dist/lib/stack-app/data-vault/index.js.map +1 -1
  216. package/dist/lib/stack-app/email/index.js.map +1 -1
  217. package/dist/lib/stack-app/email-templates/index.js.map +1 -1
  218. package/dist/lib/stack-app/index.js.map +1 -1
  219. package/dist/lib/stack-app/internal-api-keys/index.js.map +1 -1
  220. package/dist/lib/stack-app/notification-categories/index.js.map +1 -1
  221. package/dist/lib/stack-app/permissions/index.js.map +1 -1
  222. package/dist/lib/stack-app/project-configs/index.js.map +1 -1
  223. package/dist/lib/stack-app/projects/index.js.map +1 -1
  224. package/dist/lib/stack-app/teams/index.js.map +1 -1
  225. package/dist/lib/stack-app/users/index.js.map +1 -1
  226. package/dist/lib/translations.js.map +1 -1
  227. package/dist/providers/stack-provider-client.js.map +1 -1
  228. package/dist/providers/stack-provider.js.map +1 -1
  229. package/dist/providers/theme-provider.js.map +1 -1
  230. package/dist/providers/translation-provider-client.js.map +1 -1
  231. package/dist/providers/translation-provider.js.map +1 -1
  232. package/dist/utils/browser-script.js.map +1 -1
  233. package/dist/utils/constants.js.map +1 -1
  234. package/dist/utils/url.js.map +1 -1
  235. package/package.json +19 -17
@@ -213,6 +213,11 @@ var __StackClientAppImplIncomplete = class __StackClientAppImplIncomplete {
213
213
  }, session);
214
214
  }
215
215
  );
216
+ this._customerBillingCache = (0, import_common2.createCacheBySession)(
217
+ async (session, [customerType, customerId]) => {
218
+ return await this._interface.getCustomerBilling(customerType, customerId, session);
219
+ }
220
+ );
216
221
  this._convexPartialUserCache = (0, import_common2.createCache)(
217
222
  async ([ctx]) => await this._getPartialUserFromConvex(ctx)
218
223
  );
@@ -449,7 +454,7 @@ var __StackClientAppImplIncomplete = class __StackClientAppImplIncomplete {
449
454
  if (!(0, import_env.isBrowserLike)()) {
450
455
  throw new import_errors.StackAssertionError("Cannot get browser cookies on the server!");
451
456
  }
452
- return cookie.parse(document.cookie || "");
457
+ return cookie.parseCookie(document.cookie || "");
453
458
  }
454
459
  _getRefreshTokenCookieNamePatterns() {
455
460
  return {
@@ -649,7 +654,7 @@ var __StackClientAppImplIncomplete = class __StackClientAppImplIncomplete {
649
654
  });
650
655
  }
651
656
  const cookieHeader = tokenStoreInit.headers.get("cookie");
652
- const parsed = cookie.parse(cookieHeader || "");
657
+ const parsed = cookie.parseCookie(cookieHeader || "");
653
658
  const res = new import_stores.Store(this._getTokensFromCookies(parsed));
654
659
  this._requestTokenStores.set(tokenStoreInit, res);
655
660
  return res;
@@ -970,10 +975,27 @@ var __StackClientAppImplIncomplete = class __StackClientAppImplIncomplete {
970
975
  displayName: item.product.display_name,
971
976
  customerType: item.product.customer_type,
972
977
  isServerOnly: item.product.server_only,
973
- stackable: item.product.stackable
978
+ stackable: item.product.stackable,
979
+ type: item.type,
980
+ subscription: item.subscription ? {
981
+ currentPeriodEnd: item.subscription.current_period_end ? new Date(item.subscription.current_period_end) : null,
982
+ cancelAtPeriodEnd: item.subscription.cancel_at_period_end,
983
+ isCancelable: item.subscription.is_cancelable
984
+ } : null,
985
+ switchOptions: item.switch_options?.map((option) => ({
986
+ productId: option.product_id,
987
+ displayName: option.product.display_name,
988
+ prices: option.product.prices
989
+ }))
974
990
  }));
975
991
  return Object.assign(products, { nextCursor: response.pagination.next_cursor ?? null });
976
992
  }
993
+ _customerBillingFromResponse(response) {
994
+ return {
995
+ hasCustomer: response.has_customer,
996
+ defaultPaymentMethod: response.default_payment_method
997
+ };
998
+ }
977
999
  _createAuth(session) {
978
1000
  const app = this;
979
1001
  return {
@@ -1342,8 +1364,29 @@ var __StackClientAppImplIncomplete = class __StackClientAppImplIncomplete {
1342
1364
  }
1343
1365
  _createCustomer(userIdOrTeamId, type, session) {
1344
1366
  const app = this;
1367
+ const effectiveSession = session ?? app._interface.createSession({ refreshToken: null });
1345
1368
  const customerOptions = type === "user" ? { userId: userIdOrTeamId } : { teamId: userIdOrTeamId };
1346
1369
  return {
1370
+ async getBilling() {
1371
+ const response = import_results.Result.orThrow(await app._customerBillingCache.getOrWait([effectiveSession, type, userIdOrTeamId], "write-only"));
1372
+ return app._customerBillingFromResponse(response);
1373
+ },
1374
+ useBilling() {
1375
+ const response = (0, import_common3.useAsyncCache)(app._customerBillingCache, [effectiveSession, type, userIdOrTeamId], "customer.useBilling()");
1376
+ return app._customerBillingFromResponse(response);
1377
+ },
1378
+ async createPaymentMethodSetupIntent() {
1379
+ const body = await app._interface.createCustomerPaymentMethodSetupIntent(type, userIdOrTeamId, effectiveSession);
1380
+ return {
1381
+ clientSecret: body.client_secret,
1382
+ stripeAccountId: body.stripe_account_id
1383
+ };
1384
+ },
1385
+ async setDefaultPaymentMethodFromSetupIntent(setupIntentId) {
1386
+ const body = await app._interface.setDefaultCustomerPaymentMethodFromSetupIntent(type, userIdOrTeamId, setupIntentId, effectiveSession);
1387
+ await app._customerBillingCache.refresh([effectiveSession, type, userIdOrTeamId]);
1388
+ return body.default_payment_method;
1389
+ },
1347
1390
  async getItem(itemId) {
1348
1391
  return await app.getItem({ itemId, ...customerOptions });
1349
1392
  },
@@ -1357,7 +1400,23 @@ var __StackClientAppImplIncomplete = class __StackClientAppImplIncomplete {
1357
1400
  return app.useProducts({ ...options, ...customerOptions });
1358
1401
  },
1359
1402
  async createCheckoutUrl(options) {
1360
- return await app._interface.createCheckoutUrl(type, userIdOrTeamId, options.productId, session, options.returnUrl);
1403
+ return await app._interface.createCheckoutUrl(type, userIdOrTeamId, options.productId, effectiveSession, options.returnUrl);
1404
+ },
1405
+ async switchSubscription(options) {
1406
+ await app._interface.switchSubscription({
1407
+ customer_type: type,
1408
+ customer_id: userIdOrTeamId,
1409
+ from_product_id: options.fromProductId,
1410
+ to_product_id: options.toProductId,
1411
+ price_id: options.priceId,
1412
+ quantity: options.quantity
1413
+ }, effectiveSession);
1414
+ await app._customerBillingCache.refresh([effectiveSession, type, userIdOrTeamId]);
1415
+ if (type === "user") {
1416
+ await app._userProductsCache.invalidateWhere(([cachedSession, userId]) => cachedSession === effectiveSession && userId === userIdOrTeamId);
1417
+ } else {
1418
+ await app._teamProductsCache.invalidateWhere(([cachedSession, teamId]) => cachedSession === effectiveSession && teamId === userIdOrTeamId);
1419
+ }
1361
1420
  }
1362
1421
  };
1363
1422
  }