@hexclave/next 1.0.67 → 1.0.69

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 (111) hide show
  1. package/README.md +21 -21
  2. package/dist/{admin-app-impl-C74lwnMu.d.ts → admin-app-impl-DNcnEhc-.d.ts} +15 -10
  3. package/dist/admin-app-impl-DNcnEhc-.d.ts.map +1 -0
  4. package/dist/clickmap/clickmap-core.d.ts +1 -1
  5. package/dist/clickmap/index.d.ts +1 -1
  6. package/dist/{client-app-BlA5Ptxs.d.ts → client-app-CE8FTKgO.d.ts} +13 -6
  7. package/dist/client-app-CE8FTKgO.d.ts.map +1 -0
  8. package/dist/components/elements/sidebar-layout.js +1 -1
  9. package/dist/components/selected-team-switcher.d.ts +1 -1
  10. package/dist/components/team-icon.d.ts +1 -1
  11. package/dist/components/team-switcher.d.ts +1 -1
  12. package/dist/components-page/account-settings/payments/payments-page.d.ts +1 -1
  13. package/dist/components-page/account-settings/teams/leave-team-section.d.ts +1 -1
  14. package/dist/components-page/account-settings/teams/team-api-keys-section.d.ts +1 -1
  15. package/dist/components-page/account-settings/teams/team-display-name-section.d.ts +1 -1
  16. package/dist/components-page/account-settings/teams/team-member-invitation-section.d.ts +1 -1
  17. package/dist/components-page/account-settings/teams/team-member-list-section.d.ts +1 -1
  18. package/dist/components-page/account-settings/teams/team-page.d.ts +1 -1
  19. package/dist/components-page/account-settings/teams/team-profile-image-section.d.ts +1 -1
  20. package/dist/components-page/account-settings/teams/team-profile-user-section.d.ts +1 -1
  21. package/dist/components-page/hexclave-handler-client.d.ts +1 -1
  22. package/dist/components-page/hexclave-handler.d.ts +1 -1
  23. package/dist/components-page/onboarding.js +11 -1
  24. package/dist/components-page/onboarding.js.map +1 -1
  25. package/dist/components-page/onboarding.test.d.ts +1 -0
  26. package/dist/components-page/onboarding.test.js +151 -0
  27. package/dist/components-page/onboarding.test.js.map +1 -0
  28. package/dist/dev-tool/dev-tool-core.d.ts +1 -1
  29. package/dist/dev-tool/index.d.ts +1 -1
  30. package/dist/esm/components/elements/sidebar-layout.js +1 -1
  31. package/dist/esm/components-page/onboarding.js +11 -1
  32. package/dist/esm/components-page/onboarding.js.map +1 -1
  33. package/dist/esm/components-page/onboarding.test.d.ts +1 -0
  34. package/dist/esm/components-page/onboarding.test.js +150 -0
  35. package/dist/esm/components-page/onboarding.test.js.map +1 -0
  36. package/dist/esm/generated/quetzal-translations.d.ts +2 -2
  37. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +4 -4
  38. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
  39. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts +9 -4
  40. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -1
  41. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js +22 -5
  42. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
  43. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.sign-in-cache-warmup.test.d.ts +1 -0
  44. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.sign-in-cache-warmup.test.js +97 -0
  45. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.sign-in-cache-warmup.test.js.map +1 -0
  46. package/dist/esm/lib/hexclave-app/apps/implementations/common.js +2 -2
  47. package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.d.ts.map +1 -1
  48. package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.js +1 -4
  49. package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.js.map +1 -1
  50. package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.d.ts +1 -1
  51. package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.d.ts.map +1 -1
  52. package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.js.map +1 -1
  53. package/dist/esm/lib/hexclave-app/teams/index.d.ts +1 -0
  54. package/dist/esm/lib/hexclave-app/teams/index.d.ts.map +1 -1
  55. package/dist/esm/lib/hexclave-app/teams/index.js.map +1 -1
  56. package/dist/esm/lib/hexclave-app/users/index.d.ts +10 -4
  57. package/dist/esm/lib/hexclave-app/users/index.d.ts.map +1 -1
  58. package/dist/esm/lib/hexclave-app/users/index.js.map +1 -1
  59. package/dist/generated/quetzal-translations.d.ts +1 -1
  60. package/dist/{hexclave-provider-Dtr9mxju.d.ts → hexclave-provider-Ve1QPx9k.d.ts} +3 -3
  61. package/dist/{hexclave-provider-Dtr9mxju.d.ts.map → hexclave-provider-Ve1QPx9k.d.ts.map} +1 -1
  62. package/dist/{hooks-4BBvIKWJ.d.ts → hooks-BNF4UvGF.d.ts} +2 -2
  63. package/dist/{hooks-4BBvIKWJ.d.ts.map → hooks-BNF4UvGF.d.ts.map} +1 -1
  64. package/dist/{index-DDICHT5X.d.ts → index-g1JoVgIu.d.ts} +2 -2
  65. package/dist/{index-DDICHT5X.d.ts.map → index-g1JoVgIu.d.ts.map} +1 -1
  66. package/dist/index.d.ts +4 -4
  67. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +1 -1
  68. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts +1 -1
  69. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js +22 -5
  70. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
  71. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.sign-in-cache-warmup.test.d.ts +1 -0
  72. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.sign-in-cache-warmup.test.js +96 -0
  73. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.sign-in-cache-warmup.test.js.map +1 -0
  74. package/dist/lib/hexclave-app/apps/implementations/common.js +2 -2
  75. package/dist/lib/hexclave-app/apps/implementations/index.d.ts +1 -1
  76. package/dist/lib/hexclave-app/apps/implementations/server-app-impl.d.ts +1 -1
  77. package/dist/lib/hexclave-app/apps/implementations/server-app-impl.js +1 -4
  78. package/dist/lib/hexclave-app/apps/implementations/server-app-impl.js.map +1 -1
  79. package/dist/lib/hexclave-app/apps/index.d.ts +1 -1
  80. package/dist/lib/hexclave-app/apps/interfaces/admin-app.d.ts +1 -1
  81. package/dist/lib/hexclave-app/apps/interfaces/client-app.d.ts +1 -1
  82. package/dist/lib/hexclave-app/apps/interfaces/client-app.js.map +1 -1
  83. package/dist/lib/hexclave-app/apps/interfaces/server-app.d.ts +1 -1
  84. package/dist/lib/hexclave-app/index.d.ts +1 -1
  85. package/dist/lib/hexclave-app/projects/index.d.ts +1 -1
  86. package/dist/lib/hexclave-app/teams/index.d.ts +1 -1
  87. package/dist/lib/hexclave-app/teams/index.js.map +1 -1
  88. package/dist/lib/hexclave-app/users/index.d.ts +1 -1
  89. package/dist/lib/hexclave-app/users/index.js.map +1 -1
  90. package/dist/lib/hooks.d.ts +1 -1
  91. package/dist/providers/hexclave-context.d.ts +1 -1
  92. package/dist/providers/hexclave-provider-client.d.ts +1 -1
  93. package/dist/providers/hexclave-provider.d.ts +1 -1
  94. package/dist/providers/translation-provider.d.ts +1 -1
  95. package/dist/pushed-config-error-overlay/index.d.ts +1 -1
  96. package/dist/{quetzal-translations-DVNj-zsr.d.ts → quetzal-translations-XeH3zQ9l.d.ts} +3 -3
  97. package/dist/{quetzal-translations-DVNj-zsr.d.ts.map → quetzal-translations-XeH3zQ9l.d.ts.map} +1 -1
  98. package/dist/{translation-provider-DPFkLbrw.d.ts → translation-provider-WOaZXqAz.d.ts} +2 -2
  99. package/dist/{translation-provider-DPFkLbrw.d.ts.map → translation-provider-WOaZXqAz.d.ts.map} +1 -1
  100. package/package.json +4 -4
  101. package/src/components-page/onboarding.test.tsx +182 -0
  102. package/src/components-page/onboarding.tsx +17 -0
  103. package/src/integrations/convex/component/README.md +4 -4
  104. package/src/lib/hexclave-app/apps/implementations/client-app-impl.sign-in-cache-warmup.test.ts +94 -0
  105. package/src/lib/hexclave-app/apps/implementations/client-app-impl.ts +33 -8
  106. package/src/lib/hexclave-app/apps/implementations/server-app-impl.ts +1 -10
  107. package/src/lib/hexclave-app/apps/interfaces/client-app.ts +1 -1
  108. package/src/lib/hexclave-app/teams/index.ts +1 -0
  109. package/src/lib/hexclave-app/users/index.ts +9 -4
  110. package/dist/admin-app-impl-C74lwnMu.d.ts.map +0 -1
  111. package/dist/client-app-BlA5Ptxs.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"client-app.d.ts","names":[],"sources":["../../../../../../src/lib/hexclave-app/apps/interfaces/client-app.ts"],"mappings":"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"}
1
+ {"version":3,"file":"client-app.d.ts","names":[],"sources":["../../../../../../src/lib/hexclave-app/apps/interfaces/client-app.ts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"client-app.js","names":[],"sources":["../../../../../../src/lib/hexclave-app/apps/interfaces/client-app.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { KnownErrors } from \"@hexclave/shared\";\nimport { CurrentUserCrud } from \"@hexclave/shared/dist/interface/crud/current-user\";\nimport { Result } from \"@hexclave/shared/dist/utils/results\";\nimport { AsyncStoreProperty, AuthLike, GetCurrentPartialUserOptions, GetCurrentUserOptions, HandlerUrlOptions, HandlerUrls, OAuthScopesOnSignIn, RedirectMethod, RedirectToOptions, ResolvedHandlerUrls, hexclaveAppInternalsSymbol, TokenStoreInit } from \"../../common\";\nimport type { RequestListener } from \"@hexclave/shared/dist/interface/client-interface\";\nimport { CustomerInvoicesList, CustomerInvoicesRequestOptions, CustomerProductsList, CustomerProductsRequestOptions, Item } from \"../../customers\";\nimport { Project } from \"../../projects\";\nimport { ProjectCurrentUser, SyncedPartialUser, TokenPartialUser } from \"../../users\";\nimport { _HexclaveClientAppImpl } from \"../implementations\";\nimport { AnalyticsOptions } from \"../implementations/session-replay\";\n\n/** @deprecated Use `HexclaveClientAppConstructorOptions` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport type StackClientAppConstructorOptions<HasTokenStore extends boolean, ProjectId extends string> = {\n baseUrl?: string | { browser: string, server: string },\n extraRequestHeaders?: Record<string, string>,\n projectId?: ProjectId,\n publishableClientKey?: string,\n urls?: HandlerUrlOptions,\n oauthScopesOnSignIn?: Partial<OAuthScopesOnSignIn>,\n tokenStore?: TokenStoreInit<HasTokenStore>,\n redirectMethod?: RedirectMethod,\n inheritsFrom?: StackClientApp<any, any>,\n\n /**\n * Whether to show the Hexclave dev tool indicator in browser-like environments.\n *\n * - `true`: always show\n * - `false`: never show\n * - `\"auto\"` (default): show based on NODE_ENV or origin heuristics\n */\n devTool?: boolean | \"auto\",\n\n /**\n * By default, the Stack app will automatically prefetch some data from Stack's server when this app is first\n * constructed. This improves the performance of your app, but will create network requests that are unnecessary if\n * the app is never used or disposed of immediately. To disable this behavior, set this option to true.\n */\n noAutomaticPrefetch?: boolean,\n\n /**\n * Options for analytics and session recording. Replays are enabled by default;\n * set `{ replays: { enabled: false } }` to opt out.\n */\n analytics?: AnalyticsOptions,\n} & (\n { tokenStore: TokenStoreInit<HasTokenStore> } | { tokenStore?: undefined, inheritsFrom: StackClientApp<HasTokenStore, any> }\n) & (\n string extends ProjectId ? unknown : ({ projectId: ProjectId } | { inheritsFrom: StackClientApp<any, ProjectId> })\n);\n\n\n/** @deprecated Use `HexclaveClientAppJson` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport type StackClientAppJson<HasTokenStore extends boolean, ProjectId extends string> = StackClientAppConstructorOptions<HasTokenStore, ProjectId> & { inheritsFrom?: undefined } & {\n uniqueIdentifier: string,\n // note: if you add more fields here, make sure to ensure the checkString in the constructor has/doesn't have them\n};\n\n/** @deprecated Use `HexclaveClientApp` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport type StackClientApp<HasTokenStore extends boolean = boolean, ProjectId extends string = string> = (\n & {\n readonly projectId: ProjectId,\n\n /**\n * The version of the Hexclave SDK.\n */\n readonly version: string,\n\n /**\n * @deprecated Do not use `app.urls` for navigation. It is static and does not include runtime redirect-back,\n * cross-domain auth, or sign-out state. Use the matching `redirectToXyz()` method instead, for example\n * `redirectToSignIn()`, `redirectToSignUp()`, `redirectToSignOut()`, or `redirectToAccountSettings()`.\n */\n readonly urls: Readonly<ResolvedHandlerUrls>,\n\n signInWithOAuth(provider: string, options?: { returnTo?: string }): Promise<void>,\n signInWithCredential(options: { email: string, password: string, noRedirect?: boolean }): Promise<Result<undefined, KnownErrors[\"EmailPasswordMismatch\"] | KnownErrors[\"InvalidTotpCode\"]>>,\n signUpWithCredential(options: {\n email: string,\n password: string,\n noRedirect?: boolean,\n } & ({ noVerificationCallback: true } | { noVerificationCallback?: false, verificationCallbackUrl?: string })): Promise<Result<undefined, KnownErrors[\"UserWithEmailAlreadyExists\"] | KnownErrors[\"PasswordRequirementsNotMet\"] | KnownErrors[\"BotChallengeFailed\"]>>,\n signInWithPasskey(): Promise<Result<undefined, KnownErrors[\"PasskeyAuthenticationFailed\"] | KnownErrors[\"InvalidTotpCode\"] | KnownErrors[\"PasskeyWebAuthnError\"]>>,\n callOAuthCallback(): Promise<boolean>,\n promptCliLogin(options: { appUrl: string, expiresInMillis?: number, anonRefreshToken?: string, promptLink?: (url: string, loginCode: string) => void }): Promise<Result<string, KnownErrors[\"CliAuthError\"] | KnownErrors[\"CliAuthExpiredError\"] | KnownErrors[\"CliAuthUsedError\"]>>,\n sendForgotPasswordEmail(email: string, options?: { callbackUrl?: string }): Promise<Result<undefined, KnownErrors[\"UserNotFound\"]>>,\n sendMagicLinkEmail(email: string, options?: { callbackUrl?: string }): Promise<Result<{ nonce: string }, KnownErrors[\"RedirectUrlNotWhitelisted\"] | KnownErrors[\"BotChallengeFailed\"]>>,\n resetPassword(options: { code: string, password: string }): Promise<Result<undefined, KnownErrors[\"VerificationCodeError\"]>>,\n verifyPasswordResetCode(code: string): Promise<Result<undefined, KnownErrors[\"VerificationCodeError\"]>>,\n verifyTeamInvitationCode(code: string): Promise<Result<undefined, KnownErrors[\"VerificationCodeError\"] | KnownErrors[\"TeamInvitationEmailMismatch\"]>>,\n acceptTeamInvitation(code: string): Promise<Result<undefined, KnownErrors[\"VerificationCodeError\"] | KnownErrors[\"TeamInvitationEmailMismatch\"]>>,\n getTeamInvitationDetails(code: string): Promise<Result<{ teamDisplayName: string }, KnownErrors[\"VerificationCodeError\"] | KnownErrors[\"TeamInvitationEmailMismatch\"]>>,\n verifyEmail(code: string): Promise<Result<undefined, KnownErrors[\"VerificationCodeError\"]>>,\n signInWithMagicLink(code: string, options?: { noRedirect?: boolean }): Promise<Result<undefined, KnownErrors[\"VerificationCodeError\"] | KnownErrors[\"InvalidTotpCode\"]>>,\n signInWithMfa(otp: string, code: string, options?: { noRedirect?: boolean }): Promise<Result<undefined, KnownErrors[\"VerificationCodeError\"] | KnownErrors[\"InvalidTotpCode\"]>>,\n\n redirectToOAuthCallback(): Promise<void>,\n\n getConvexClientAuth(options: HasTokenStore extends false ? { tokenStore: TokenStoreInit } : { tokenStore?: TokenStoreInit }): (args: { forceRefreshToken: boolean }) => Promise<string | null>,\n getConvexHttpClientAuth(options: { tokenStore: TokenStoreInit }): Promise<string>,\n\n useUser(options: GetCurrentUserOptions<HasTokenStore> & { or: 'redirect' }): ProjectCurrentUser<ProjectId>,\n useUser(options: GetCurrentUserOptions<HasTokenStore> & { or: 'throw' }): ProjectCurrentUser<ProjectId>,\n useUser(options: GetCurrentUserOptions<HasTokenStore> & { or: 'anonymous' }): ProjectCurrentUser<ProjectId>,\n useUser(options?: GetCurrentUserOptions<HasTokenStore>): ProjectCurrentUser<ProjectId> | null,\n\n getUser(options: GetCurrentUserOptions<HasTokenStore> & { or: 'redirect' }): Promise<ProjectCurrentUser<ProjectId>>,\n getUser(options: GetCurrentUserOptions<HasTokenStore> & { or: 'throw' }): Promise<ProjectCurrentUser<ProjectId>>,\n getUser(options: GetCurrentUserOptions<HasTokenStore> & { or: 'anonymous' }): Promise<ProjectCurrentUser<ProjectId>>,\n getUser(options?: GetCurrentUserOptions<HasTokenStore>): Promise<ProjectCurrentUser<ProjectId> | null>,\n\n cancelSubscription(options: { productId: string, subscriptionId?: string } | { productId: string, subscriptionId?: string, teamId: string }): Promise<void>,\n\n // note: we don't special-case 'anonymous' here to return non-null, see GetPartialUserOptions for more details\n getPartialUser(options: GetCurrentPartialUserOptions<HasTokenStore> & { from: 'token' }): Promise<TokenPartialUser | null>,\n getPartialUser(options: GetCurrentPartialUserOptions<HasTokenStore> & { from: 'convex' }): Promise<TokenPartialUser | null>,\n getPartialUser(options: GetCurrentPartialUserOptions<HasTokenStore>): Promise<SyncedPartialUser | TokenPartialUser | null>,\n usePartialUser(options: GetCurrentPartialUserOptions<HasTokenStore> & { from: 'token' }): TokenPartialUser | null,\n usePartialUser(options: GetCurrentPartialUserOptions<HasTokenStore> & { from: 'convex' }): TokenPartialUser | null,\n usePartialUser(options: GetCurrentPartialUserOptions<HasTokenStore>): SyncedPartialUser | TokenPartialUser | null,\n useNavigate(): (to: string) => void, // THIS_LINE_PLATFORM react-like\n\n [hexclaveAppInternalsSymbol]: {\n toClientJson(): StackClientAppJson<HasTokenStore, ProjectId>,\n setCurrentUser(userJsonPromise: Promise<CurrentUserCrud['Client']['Read'] | null>): void,\n getConstructorOptions(): StackClientAppConstructorOptions<HasTokenStore, ProjectId> & { inheritsFrom?: undefined },\n sendSessionReplayBatch(body: string, options: { keepalive: boolean }): Promise<Result<Response, Error>>,\n sendAnalyticsEventBatch(body: string, options: { keepalive: boolean }): Promise<Result<Response, Error>>,\n addRequestListener(listener: RequestListener): () => void,\n sendRequest(path: string, requestOptions: RequestInit, requestType?: \"client\" | \"server\" | \"admin\"): Promise<Response>,\n getUrls(): Readonly<ResolvedHandlerUrls>,\n getRedirectMethod(): RedirectMethod,\n redirectToUrl(url: string | URL, options?: { replace?: boolean }): Promise<void>,\n getRedirectToHandlerUrl(handlerName: keyof HandlerUrls, options?: RedirectToOptions): Promise<string>,\n redirectToHandler(handlerName: keyof HandlerUrls, options?: RedirectToOptions): Promise<void>,\n signInWithTokens(tokens: { accessToken: string, refreshToken: string }): Promise<void>,\n awaitPendingAuthResolutions(): Promise<void>,\n isTrustedRedirectUrl(url: string): Promise<boolean>,\n },\n }\n & AsyncStoreProperty<\"project\", [], Project, false>\n & AsyncStoreProperty<\n \"item\",\n [{ itemId: string, userId: string } | { itemId: string, teamId: string } | { itemId: string, customCustomerId: string }],\n Item,\n false\n >\n & AsyncStoreProperty<\n \"products\",\n [options: CustomerProductsRequestOptions],\n CustomerProductsList,\n true\n >\n & AsyncStoreProperty<\n \"invoices\",\n [options: CustomerInvoicesRequestOptions],\n CustomerInvoicesList,\n true\n >\n & { [K in `redirectTo${Capitalize<keyof Omit<HandlerUrls, 'handler' | 'oauthCallback'>>}`]: (options?: RedirectToOptions) => Promise<void> }\n & AuthLike<HasTokenStore extends false ? { tokenStore: TokenStoreInit } : { tokenStore?: TokenStoreInit }>\n);\n/** @deprecated Use `HexclaveClientAppConstructor` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport type StackClientAppConstructor = {\n new <\n TokenStoreType extends string,\n HasTokenStore extends (TokenStoreType extends {} ? true : boolean),\n ProjectId extends string\n >(options: StackClientAppConstructorOptions<HasTokenStore, ProjectId>): StackClientApp<HasTokenStore, ProjectId>,\n new(options: StackClientAppConstructorOptions<boolean, string>): StackClientApp<boolean, string>,\n\n [hexclaveAppInternalsSymbol]: {\n fromClientJson<HasTokenStore extends boolean, ProjectId extends string>(\n json: StackClientAppJson<HasTokenStore, ProjectId>\n ): StackClientApp<HasTokenStore, ProjectId>,\n },\n};\nexport type HexclaveClientAppConstructorOptions<HasTokenStore extends boolean, ProjectId extends string> = StackClientAppConstructorOptions<HasTokenStore, ProjectId>;\nexport type HexclaveClientAppJson<HasTokenStore extends boolean, ProjectId extends string> = StackClientAppJson<HasTokenStore, ProjectId>;\nexport type HexclaveClientApp<HasTokenStore extends boolean = boolean, ProjectId extends string = string> = StackClientApp<HasTokenStore, ProjectId>;\nexport type HexclaveClientAppConstructor = StackClientAppConstructor;\nexport const HexclaveClientApp: HexclaveClientAppConstructor = _HexclaveClientAppImpl;\n/** @deprecated Use `HexclaveClientApp` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport const StackClientApp: StackClientAppConstructor = HexclaveClientApp;\n"],"mappings":";;AAwLA,MAAa,oBAAkD;;AAE/D,MAAa,iBAA4C"}
1
+ {"version":3,"file":"client-app.js","names":[],"sources":["../../../../../../src/lib/hexclave-app/apps/interfaces/client-app.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { KnownErrors } from \"@hexclave/shared\";\nimport { CurrentUserCrud } from \"@hexclave/shared/dist/interface/crud/current-user\";\nimport { Result } from \"@hexclave/shared/dist/utils/results\";\nimport { AsyncStoreProperty, AuthLike, GetCurrentPartialUserOptions, GetCurrentUserOptions, HandlerUrlOptions, HandlerUrls, OAuthScopesOnSignIn, RedirectMethod, RedirectToOptions, ResolvedHandlerUrls, hexclaveAppInternalsSymbol, TokenStoreInit } from \"../../common\";\nimport type { RequestListener } from \"@hexclave/shared/dist/interface/client-interface\";\nimport { CustomerInvoicesList, CustomerInvoicesRequestOptions, CustomerProductsList, CustomerProductsRequestOptions, Item } from \"../../customers\";\nimport { Project } from \"../../projects\";\nimport { ProjectCurrentUser, SyncedPartialUser, TokenPartialUser } from \"../../users\";\nimport { _HexclaveClientAppImpl } from \"../implementations\";\nimport { AnalyticsOptions } from \"../implementations/session-replay\";\n\n/** @deprecated Use `HexclaveClientAppConstructorOptions` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport type StackClientAppConstructorOptions<HasTokenStore extends boolean, ProjectId extends string> = {\n baseUrl?: string | { browser: string, server: string },\n extraRequestHeaders?: Record<string, string>,\n projectId?: ProjectId,\n publishableClientKey?: string,\n urls?: HandlerUrlOptions,\n oauthScopesOnSignIn?: Partial<OAuthScopesOnSignIn>,\n tokenStore?: TokenStoreInit<HasTokenStore>,\n redirectMethod?: RedirectMethod,\n inheritsFrom?: StackClientApp<any, any>,\n\n /**\n * Whether to show the Hexclave dev tool indicator in browser-like environments.\n *\n * - `true`: always show\n * - `false`: never show\n * - `\"auto\"` (default): show based on NODE_ENV or origin heuristics\n */\n devTool?: boolean | \"auto\",\n\n /**\n * By default, the Stack app will automatically prefetch some data from Stack's server when this app is first\n * constructed. This improves the performance of your app, but will create network requests that are unnecessary if\n * the app is never used or disposed of immediately. To disable this behavior, set this option to true.\n */\n noAutomaticPrefetch?: boolean,\n\n /**\n * Options for analytics and session recording. Replays are enabled by default;\n * set `{ replays: { enabled: false } }` to opt out.\n */\n analytics?: AnalyticsOptions,\n} & (\n { tokenStore: TokenStoreInit<HasTokenStore> } | { tokenStore?: undefined, inheritsFrom: StackClientApp<HasTokenStore, any> }\n) & (\n string extends ProjectId ? unknown : ({ projectId: ProjectId } | { inheritsFrom: StackClientApp<any, ProjectId> })\n);\n\n\n/** @deprecated Use `HexclaveClientAppJson` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport type StackClientAppJson<HasTokenStore extends boolean, ProjectId extends string> = StackClientAppConstructorOptions<HasTokenStore, ProjectId> & { inheritsFrom?: undefined } & {\n uniqueIdentifier: string,\n // note: if you add more fields here, make sure to ensure the checkString in the constructor has/doesn't have them\n};\n\n/** @deprecated Use `HexclaveClientApp` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport type StackClientApp<HasTokenStore extends boolean = boolean, ProjectId extends string = string> = (\n & {\n readonly projectId: ProjectId,\n\n /**\n * The version of the Hexclave SDK.\n */\n readonly version: string,\n\n /**\n * @deprecated Do not use `app.urls` for navigation. It is static and does not include runtime redirect-back,\n * cross-domain auth, or sign-out state. Use the matching `redirectToXyz()` method instead, for example\n * `redirectToSignIn()`, `redirectToSignUp()`, `redirectToSignOut()`, or `redirectToAccountSettings()`.\n */\n readonly urls: Readonly<ResolvedHandlerUrls>,\n\n signInWithOAuth(provider: string, options?: { returnTo?: string }): Promise<void>,\n signInWithCredential(options: { email: string, password: string, noRedirect?: boolean }): Promise<Result<undefined, KnownErrors[\"EmailPasswordMismatch\"] | KnownErrors[\"InvalidTotpCode\"]>>,\n signUpWithCredential(options: {\n email: string,\n password: string,\n noRedirect?: boolean,\n } & ({ noVerificationCallback: true } | { noVerificationCallback?: false, verificationCallbackUrl?: string })): Promise<Result<undefined, KnownErrors[\"UserWithEmailAlreadyExists\"] | KnownErrors[\"ContactChannelAlreadyUsedForAuthBySomeoneElse\"] | KnownErrors[\"PasswordRequirementsNotMet\"] | KnownErrors[\"BotChallengeFailed\"]>>,\n signInWithPasskey(): Promise<Result<undefined, KnownErrors[\"PasskeyAuthenticationFailed\"] | KnownErrors[\"InvalidTotpCode\"] | KnownErrors[\"PasskeyWebAuthnError\"]>>,\n callOAuthCallback(): Promise<boolean>,\n promptCliLogin(options: { appUrl: string, expiresInMillis?: number, anonRefreshToken?: string, promptLink?: (url: string, loginCode: string) => void }): Promise<Result<string, KnownErrors[\"CliAuthError\"] | KnownErrors[\"CliAuthExpiredError\"] | KnownErrors[\"CliAuthUsedError\"]>>,\n sendForgotPasswordEmail(email: string, options?: { callbackUrl?: string }): Promise<Result<undefined, KnownErrors[\"UserNotFound\"]>>,\n sendMagicLinkEmail(email: string, options?: { callbackUrl?: string }): Promise<Result<{ nonce: string }, KnownErrors[\"RedirectUrlNotWhitelisted\"] | KnownErrors[\"BotChallengeFailed\"]>>,\n resetPassword(options: { code: string, password: string }): Promise<Result<undefined, KnownErrors[\"VerificationCodeError\"]>>,\n verifyPasswordResetCode(code: string): Promise<Result<undefined, KnownErrors[\"VerificationCodeError\"]>>,\n verifyTeamInvitationCode(code: string): Promise<Result<undefined, KnownErrors[\"VerificationCodeError\"] | KnownErrors[\"TeamInvitationEmailMismatch\"]>>,\n acceptTeamInvitation(code: string): Promise<Result<undefined, KnownErrors[\"VerificationCodeError\"] | KnownErrors[\"TeamInvitationEmailMismatch\"]>>,\n getTeamInvitationDetails(code: string): Promise<Result<{ teamDisplayName: string }, KnownErrors[\"VerificationCodeError\"] | KnownErrors[\"TeamInvitationEmailMismatch\"]>>,\n verifyEmail(code: string): Promise<Result<undefined, KnownErrors[\"VerificationCodeError\"]>>,\n signInWithMagicLink(code: string, options?: { noRedirect?: boolean }): Promise<Result<undefined, KnownErrors[\"VerificationCodeError\"] | KnownErrors[\"InvalidTotpCode\"]>>,\n signInWithMfa(otp: string, code: string, options?: { noRedirect?: boolean }): Promise<Result<undefined, KnownErrors[\"VerificationCodeError\"] | KnownErrors[\"InvalidTotpCode\"]>>,\n\n redirectToOAuthCallback(): Promise<void>,\n\n getConvexClientAuth(options: HasTokenStore extends false ? { tokenStore: TokenStoreInit } : { tokenStore?: TokenStoreInit }): (args: { forceRefreshToken: boolean }) => Promise<string | null>,\n getConvexHttpClientAuth(options: { tokenStore: TokenStoreInit }): Promise<string>,\n\n useUser(options: GetCurrentUserOptions<HasTokenStore> & { or: 'redirect' }): ProjectCurrentUser<ProjectId>,\n useUser(options: GetCurrentUserOptions<HasTokenStore> & { or: 'throw' }): ProjectCurrentUser<ProjectId>,\n useUser(options: GetCurrentUserOptions<HasTokenStore> & { or: 'anonymous' }): ProjectCurrentUser<ProjectId>,\n useUser(options?: GetCurrentUserOptions<HasTokenStore>): ProjectCurrentUser<ProjectId> | null,\n\n getUser(options: GetCurrentUserOptions<HasTokenStore> & { or: 'redirect' }): Promise<ProjectCurrentUser<ProjectId>>,\n getUser(options: GetCurrentUserOptions<HasTokenStore> & { or: 'throw' }): Promise<ProjectCurrentUser<ProjectId>>,\n getUser(options: GetCurrentUserOptions<HasTokenStore> & { or: 'anonymous' }): Promise<ProjectCurrentUser<ProjectId>>,\n getUser(options?: GetCurrentUserOptions<HasTokenStore>): Promise<ProjectCurrentUser<ProjectId> | null>,\n\n cancelSubscription(options: { productId: string, subscriptionId?: string } | { productId: string, subscriptionId?: string, teamId: string }): Promise<void>,\n\n // note: we don't special-case 'anonymous' here to return non-null, see GetPartialUserOptions for more details\n getPartialUser(options: GetCurrentPartialUserOptions<HasTokenStore> & { from: 'token' }): Promise<TokenPartialUser | null>,\n getPartialUser(options: GetCurrentPartialUserOptions<HasTokenStore> & { from: 'convex' }): Promise<TokenPartialUser | null>,\n getPartialUser(options: GetCurrentPartialUserOptions<HasTokenStore>): Promise<SyncedPartialUser | TokenPartialUser | null>,\n usePartialUser(options: GetCurrentPartialUserOptions<HasTokenStore> & { from: 'token' }): TokenPartialUser | null,\n usePartialUser(options: GetCurrentPartialUserOptions<HasTokenStore> & { from: 'convex' }): TokenPartialUser | null,\n usePartialUser(options: GetCurrentPartialUserOptions<HasTokenStore>): SyncedPartialUser | TokenPartialUser | null,\n useNavigate(): (to: string) => void, // THIS_LINE_PLATFORM react-like\n\n [hexclaveAppInternalsSymbol]: {\n toClientJson(): StackClientAppJson<HasTokenStore, ProjectId>,\n setCurrentUser(userJsonPromise: Promise<CurrentUserCrud['Client']['Read'] | null>): void,\n getConstructorOptions(): StackClientAppConstructorOptions<HasTokenStore, ProjectId> & { inheritsFrom?: undefined },\n sendSessionReplayBatch(body: string, options: { keepalive: boolean }): Promise<Result<Response, Error>>,\n sendAnalyticsEventBatch(body: string, options: { keepalive: boolean }): Promise<Result<Response, Error>>,\n addRequestListener(listener: RequestListener): () => void,\n sendRequest(path: string, requestOptions: RequestInit, requestType?: \"client\" | \"server\" | \"admin\"): Promise<Response>,\n getUrls(): Readonly<ResolvedHandlerUrls>,\n getRedirectMethod(): RedirectMethod,\n redirectToUrl(url: string | URL, options?: { replace?: boolean }): Promise<void>,\n getRedirectToHandlerUrl(handlerName: keyof HandlerUrls, options?: RedirectToOptions): Promise<string>,\n redirectToHandler(handlerName: keyof HandlerUrls, options?: RedirectToOptions): Promise<void>,\n signInWithTokens(tokens: { accessToken: string, refreshToken: string }): Promise<void>,\n awaitPendingAuthResolutions(): Promise<void>,\n isTrustedRedirectUrl(url: string): Promise<boolean>,\n },\n }\n & AsyncStoreProperty<\"project\", [], Project, false>\n & AsyncStoreProperty<\n \"item\",\n [{ itemId: string, userId: string } | { itemId: string, teamId: string } | { itemId: string, customCustomerId: string }],\n Item,\n false\n >\n & AsyncStoreProperty<\n \"products\",\n [options: CustomerProductsRequestOptions],\n CustomerProductsList,\n true\n >\n & AsyncStoreProperty<\n \"invoices\",\n [options: CustomerInvoicesRequestOptions],\n CustomerInvoicesList,\n true\n >\n & { [K in `redirectTo${Capitalize<keyof Omit<HandlerUrls, 'handler' | 'oauthCallback'>>}`]: (options?: RedirectToOptions) => Promise<void> }\n & AuthLike<HasTokenStore extends false ? { tokenStore: TokenStoreInit } : { tokenStore?: TokenStoreInit }>\n);\n/** @deprecated Use `HexclaveClientAppConstructor` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport type StackClientAppConstructor = {\n new <\n TokenStoreType extends string,\n HasTokenStore extends (TokenStoreType extends {} ? true : boolean),\n ProjectId extends string\n >(options: StackClientAppConstructorOptions<HasTokenStore, ProjectId>): StackClientApp<HasTokenStore, ProjectId>,\n new(options: StackClientAppConstructorOptions<boolean, string>): StackClientApp<boolean, string>,\n\n [hexclaveAppInternalsSymbol]: {\n fromClientJson<HasTokenStore extends boolean, ProjectId extends string>(\n json: StackClientAppJson<HasTokenStore, ProjectId>\n ): StackClientApp<HasTokenStore, ProjectId>,\n },\n};\nexport type HexclaveClientAppConstructorOptions<HasTokenStore extends boolean, ProjectId extends string> = StackClientAppConstructorOptions<HasTokenStore, ProjectId>;\nexport type HexclaveClientAppJson<HasTokenStore extends boolean, ProjectId extends string> = StackClientAppJson<HasTokenStore, ProjectId>;\nexport type HexclaveClientApp<HasTokenStore extends boolean = boolean, ProjectId extends string = string> = StackClientApp<HasTokenStore, ProjectId>;\nexport type HexclaveClientAppConstructor = StackClientAppConstructor;\nexport const HexclaveClientApp: HexclaveClientAppConstructor = _HexclaveClientAppImpl;\n/** @deprecated Use `HexclaveClientApp` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport const StackClientApp: StackClientAppConstructor = HexclaveClientApp;\n"],"mappings":";;AAwLA,MAAa,oBAAkD;;AAE/D,MAAa,iBAA4C"}
@@ -68,6 +68,7 @@ type Team = {
68
68
  callbackUrl?: string;
69
69
  }): Promise<void>;
70
70
  listUsers(): Promise<TeamUser[]>;
71
+ removeUser(userId: string): Promise<void>;
71
72
  useUsers(): TeamUser[];
72
73
  listInvitations(): Promise<SentTeamInvitation[]>;
73
74
  useInvitations(): SentTeamInvitation[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../../src/lib/hexclave-app/teams/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../../src/lib/hexclave-app/teams/index.ts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../../src/lib/hexclave-app/teams/index.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { TeamsCrud } from \"@hexclave/shared/dist/interface/crud/teams\";\nimport { ReadonlyJson } from \"@hexclave/shared/dist/utils/json\";\n\nimport { ApiKeyCreationOptions, TeamApiKey, TeamApiKeyFirstView } from \"../api-keys\";\nimport { AsyncStoreProperty } from \"../common\";\nimport { Customer } from \"../customers\";\nimport { ServerUser } from \"../users\";\n\n\nexport type TeamMemberProfile = {\n displayName: string | null,\n profileImageUrl: string | null,\n}\n\nexport type TeamMemberProfileUpdateOptions = {\n displayName?: string,\n profileImageUrl?: string | null,\n};\n\nexport type EditableTeamMemberProfile = TeamMemberProfile & {\n update(update: TeamMemberProfileUpdateOptions): Promise<void>,\n}\n\nexport type TeamUser = {\n id: string,\n teamProfile: TeamMemberProfile,\n}\n\n/**\n * A team invitation as seen from the team's perspective (ie. the sender).\n *\n * Returned by `team.listInvitations()`. Contains the recipient email and allows\n * revoking the invitation.\n */\nexport type SentTeamInvitation = {\n id: string,\n recipientEmail: string | null,\n expiresAt: Date,\n revoke(): Promise<void>,\n}\n\n/**\n * @deprecated Use `SentTeamInvitation` instead.\n */\nexport type TeamInvitation = SentTeamInvitation;\n\n/**\n * A team invitation as seen from the invited user's perspective (ie. the receiver).\n *\n * Returned by `user.listTeamInvitations()`. Contains information about teams that have\n * sent invitations to any of the user's verified email addresses, and allows accepting\n * the invitation to join the team.\n */\nexport type ReceivedTeamInvitation = {\n id: string,\n teamId: string,\n teamDisplayName: string,\n recipientEmail: string,\n expiresAt: Date,\n\n /**\n * Accepts the invitation, adding the current user to the team.\n *\n * The user must have a verified email address matching the invitation's recipient email.\n */\n accept(): Promise<void>,\n}\n\nexport type Team = {\n id: string,\n displayName: string,\n profileImageUrl: string | null,\n clientMetadata: any,\n clientReadOnlyMetadata: any,\n inviteUser(options: { email: string, callbackUrl?: string }): Promise<void>,\n listUsers(): Promise<TeamUser[]>,\n useUsers(): TeamUser[], // THIS_LINE_PLATFORM react-like\n listInvitations(): Promise<SentTeamInvitation[]>,\n useInvitations(): SentTeamInvitation[], // THIS_LINE_PLATFORM react-like\n update(update: TeamUpdateOptions): Promise<void>,\n delete(): Promise<void>,\n createApiKey(options: ApiKeyCreationOptions<\"team\">): Promise<TeamApiKeyFirstView>,\n} & AsyncStoreProperty<\"apiKeys\", [], TeamApiKey[], true> & Customer;\n\nexport type TeamUpdateOptions = {\n displayName?: string,\n profileImageUrl?: string | null,\n clientMetadata?: ReadonlyJson,\n};\nexport function teamUpdateOptionsToCrud(options: TeamUpdateOptions): TeamsCrud[\"Client\"][\"Update\"] {\n return {\n display_name: options.displayName,\n profile_image_url: options.profileImageUrl,\n client_metadata: options.clientMetadata,\n };\n}\n\nexport type TeamCreateOptions = {\n displayName: string,\n profileImageUrl?: string,\n}\nexport function teamCreateOptionsToCrud(options: TeamCreateOptions, creatorUserId: string): TeamsCrud[\"Client\"][\"Create\"] {\n return {\n display_name: options.displayName,\n profile_image_url: options.profileImageUrl,\n creator_user_id: creatorUserId,\n };\n}\n\n\nexport type ServerTeamMemberProfile = TeamMemberProfile;\n\nexport type ServerTeamUser = ServerUser & {\n teamProfile: ServerTeamMemberProfile,\n}\n\nexport type ServerTeam = {\n createdAt: Date,\n serverMetadata: any,\n listUsers(): Promise<ServerTeamUser[]>,\n useUsers(): ServerUser[], // THIS_LINE_PLATFORM react-like\n update(update: ServerTeamUpdateOptions): Promise<void>,\n delete(): Promise<void>,\n addUser(userId: string): Promise<void>,\n inviteUser(options: { email: string, callbackUrl?: string }): Promise<void>,\n removeUser(userId: string): Promise<void>,\n} & Team;\n\ntype ServerListUsersOptionsBase = {\n cursor?: string,\n limit?: number,\n orderBy?: 'signedUpAt' | 'lastActiveAt',\n desc?: boolean,\n /**\n * Free-text search. Matches user ID (exact UUID), display name, and contact channels (e.g. primary email).\n */\n query?: string,\n /**\n * Exclude users whose primary email domain matches one of these exact domains.\n */\n excludedEmailDomains?: string[],\n /**\n * Only return users who are members of the given team.\n */\n teamId?: string,\n /**\n * Whether to include restricted users (users who haven't completed onboarding requirements).\n * Defaults to false.\n */\n includeRestricted?: boolean,\n /**\n * Whether to include anonymous users (and restricted users).\n * Defaults to false.\n */\n includeAnonymous?: boolean,\n};\n\nexport type ServerListUsersOptions = ServerListUsersOptionsBase & (\n {\n onlyAnonymous?: false,\n } | {\n /**\n * Whether to return only anonymous users.\n * Requires includeAnonymous=true.\n * Defaults to false.\n */\n onlyAnonymous: true,\n includeAnonymous: true,\n }\n);\n\nexport type ServerListTeamsOptions = {\n orderBy?: 'createdAt',\n desc?: boolean,\n cursor?: string,\n limit?: number,\n /**\n * Free-text search. Matches team ID (exact UUID) and display name.\n */\n query?: string,\n};\n\nexport type ServerTeamCreateOptions = TeamCreateOptions & {\n creatorUserId?: string,\n};\nexport function serverTeamCreateOptionsToCrud(options: ServerTeamCreateOptions): TeamsCrud[\"Server\"][\"Create\"] {\n return {\n display_name: options.displayName,\n profile_image_url: options.profileImageUrl,\n creator_user_id: options.creatorUserId,\n };\n}\n\nexport type ServerTeamUpdateOptions = TeamUpdateOptions & {\n clientReadOnlyMetadata?: ReadonlyJson,\n serverMetadata?: ReadonlyJson,\n};\nexport function serverTeamUpdateOptionsToCrud(options: ServerTeamUpdateOptions): TeamsCrud[\"Server\"][\"Update\"] {\n return {\n display_name: options.displayName,\n profile_image_url: options.profileImageUrl,\n client_metadata: options.clientMetadata,\n client_read_only_metadata: options.clientReadOnlyMetadata,\n server_metadata: options.serverMetadata,\n };\n}\n"],"mappings":";AA6FA,SAAgB,wBAAwB,SAA2D;CACjG,OAAO;EACL,cAAc,QAAQ;EACtB,mBAAmB,QAAQ;EAC3B,iBAAiB,QAAQ;CAC3B;AACF;AAMA,SAAgB,wBAAwB,SAA4B,eAAsD;CACxH,OAAO;EACL,cAAc,QAAQ;EACtB,mBAAmB,QAAQ;EAC3B,iBAAiB;CACnB;AACF;AA8EA,SAAgB,8BAA8B,SAAiE;CAC7G,OAAO;EACL,cAAc,QAAQ;EACtB,mBAAmB,QAAQ;EAC3B,iBAAiB,QAAQ;CAC3B;AACF;AAMA,SAAgB,8BAA8B,SAAiE;CAC7G,OAAO;EACL,cAAc,QAAQ;EACtB,mBAAmB,QAAQ;EAC3B,iBAAiB,QAAQ;EACzB,2BAA2B,QAAQ;EACnC,iBAAiB,QAAQ;CAC3B;AACF"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../../src/lib/hexclave-app/teams/index.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { TeamsCrud } from \"@hexclave/shared/dist/interface/crud/teams\";\nimport { ReadonlyJson } from \"@hexclave/shared/dist/utils/json\";\n\nimport { ApiKeyCreationOptions, TeamApiKey, TeamApiKeyFirstView } from \"../api-keys\";\nimport { AsyncStoreProperty } from \"../common\";\nimport { Customer } from \"../customers\";\nimport { ServerUser } from \"../users\";\n\n\nexport type TeamMemberProfile = {\n displayName: string | null,\n profileImageUrl: string | null,\n}\n\nexport type TeamMemberProfileUpdateOptions = {\n displayName?: string,\n profileImageUrl?: string | null,\n};\n\nexport type EditableTeamMemberProfile = TeamMemberProfile & {\n update(update: TeamMemberProfileUpdateOptions): Promise<void>,\n}\n\nexport type TeamUser = {\n id: string,\n teamProfile: TeamMemberProfile,\n}\n\n/**\n * A team invitation as seen from the team's perspective (ie. the sender).\n *\n * Returned by `team.listInvitations()`. Contains the recipient email and allows\n * revoking the invitation.\n */\nexport type SentTeamInvitation = {\n id: string,\n recipientEmail: string | null,\n expiresAt: Date,\n revoke(): Promise<void>,\n}\n\n/**\n * @deprecated Use `SentTeamInvitation` instead.\n */\nexport type TeamInvitation = SentTeamInvitation;\n\n/**\n * A team invitation as seen from the invited user's perspective (ie. the receiver).\n *\n * Returned by `user.listTeamInvitations()`. Contains information about teams that have\n * sent invitations to any of the user's verified email addresses, and allows accepting\n * the invitation to join the team.\n */\nexport type ReceivedTeamInvitation = {\n id: string,\n teamId: string,\n teamDisplayName: string,\n recipientEmail: string,\n expiresAt: Date,\n\n /**\n * Accepts the invitation, adding the current user to the team.\n *\n * The user must have a verified email address matching the invitation's recipient email.\n */\n accept(): Promise<void>,\n}\n\nexport type Team = {\n id: string,\n displayName: string,\n profileImageUrl: string | null,\n clientMetadata: any,\n clientReadOnlyMetadata: any,\n inviteUser(options: { email: string, callbackUrl?: string }): Promise<void>,\n listUsers(): Promise<TeamUser[]>,\n removeUser(userId: string): Promise<void>,\n useUsers(): TeamUser[], // THIS_LINE_PLATFORM react-like\n listInvitations(): Promise<SentTeamInvitation[]>,\n useInvitations(): SentTeamInvitation[], // THIS_LINE_PLATFORM react-like\n update(update: TeamUpdateOptions): Promise<void>,\n delete(): Promise<void>,\n createApiKey(options: ApiKeyCreationOptions<\"team\">): Promise<TeamApiKeyFirstView>,\n} & AsyncStoreProperty<\"apiKeys\", [], TeamApiKey[], true> & Customer;\n\nexport type TeamUpdateOptions = {\n displayName?: string,\n profileImageUrl?: string | null,\n clientMetadata?: ReadonlyJson,\n};\nexport function teamUpdateOptionsToCrud(options: TeamUpdateOptions): TeamsCrud[\"Client\"][\"Update\"] {\n return {\n display_name: options.displayName,\n profile_image_url: options.profileImageUrl,\n client_metadata: options.clientMetadata,\n };\n}\n\nexport type TeamCreateOptions = {\n displayName: string,\n profileImageUrl?: string,\n}\nexport function teamCreateOptionsToCrud(options: TeamCreateOptions, creatorUserId: string): TeamsCrud[\"Client\"][\"Create\"] {\n return {\n display_name: options.displayName,\n profile_image_url: options.profileImageUrl,\n creator_user_id: creatorUserId,\n };\n}\n\n\nexport type ServerTeamMemberProfile = TeamMemberProfile;\n\nexport type ServerTeamUser = ServerUser & {\n teamProfile: ServerTeamMemberProfile,\n}\n\nexport type ServerTeam = {\n createdAt: Date,\n serverMetadata: any,\n listUsers(): Promise<ServerTeamUser[]>,\n useUsers(): ServerUser[], // THIS_LINE_PLATFORM react-like\n update(update: ServerTeamUpdateOptions): Promise<void>,\n delete(): Promise<void>,\n addUser(userId: string): Promise<void>,\n inviteUser(options: { email: string, callbackUrl?: string }): Promise<void>,\n removeUser(userId: string): Promise<void>,\n} & Team;\n\ntype ServerListUsersOptionsBase = {\n cursor?: string,\n limit?: number,\n orderBy?: 'signedUpAt' | 'lastActiveAt',\n desc?: boolean,\n /**\n * Free-text search. Matches user ID (exact UUID), display name, and contact channels (e.g. primary email).\n */\n query?: string,\n /**\n * Exclude users whose primary email domain matches one of these exact domains.\n */\n excludedEmailDomains?: string[],\n /**\n * Only return users who are members of the given team.\n */\n teamId?: string,\n /**\n * Whether to include restricted users (users who haven't completed onboarding requirements).\n * Defaults to false.\n */\n includeRestricted?: boolean,\n /**\n * Whether to include anonymous users (and restricted users).\n * Defaults to false.\n */\n includeAnonymous?: boolean,\n};\n\nexport type ServerListUsersOptions = ServerListUsersOptionsBase & (\n {\n onlyAnonymous?: false,\n } | {\n /**\n * Whether to return only anonymous users.\n * Requires includeAnonymous=true.\n * Defaults to false.\n */\n onlyAnonymous: true,\n includeAnonymous: true,\n }\n);\n\nexport type ServerListTeamsOptions = {\n orderBy?: 'createdAt',\n desc?: boolean,\n cursor?: string,\n limit?: number,\n /**\n * Free-text search. Matches team ID (exact UUID) and display name.\n */\n query?: string,\n};\n\nexport type ServerTeamCreateOptions = TeamCreateOptions & {\n creatorUserId?: string,\n};\nexport function serverTeamCreateOptionsToCrud(options: ServerTeamCreateOptions): TeamsCrud[\"Server\"][\"Create\"] {\n return {\n display_name: options.displayName,\n profile_image_url: options.profileImageUrl,\n creator_user_id: options.creatorUserId,\n };\n}\n\nexport type ServerTeamUpdateOptions = TeamUpdateOptions & {\n clientReadOnlyMetadata?: ReadonlyJson,\n serverMetadata?: ReadonlyJson,\n};\nexport function serverTeamUpdateOptionsToCrud(options: ServerTeamUpdateOptions): TeamsCrud[\"Server\"][\"Update\"] {\n return {\n display_name: options.displayName,\n profile_image_url: options.profileImageUrl,\n client_metadata: options.clientMetadata,\n client_read_only_metadata: options.clientReadOnlyMetadata,\n server_metadata: options.serverMetadata,\n };\n}\n"],"mappings":";AA8FA,SAAgB,wBAAwB,SAA2D;CACjG,OAAO;EACL,cAAc,QAAQ;EACtB,mBAAmB,QAAQ;EAC3B,iBAAiB,QAAQ;CAC3B;AACF;AAMA,SAAgB,wBAAwB,SAA4B,eAAsD;CACxH,OAAO;EACL,cAAc,QAAQ;EACtB,mBAAmB,QAAQ;EAC3B,iBAAiB;CACnB;AACF;AA8EA,SAAgB,8BAA8B,SAAiE;CAC7G,OAAO;EACL,cAAc,QAAQ;EACtB,mBAAmB,QAAQ;EAC3B,iBAAiB,QAAQ;CAC3B;AACF;AAMA,SAAgB,8BAA8B,SAAiE;CAC7G,OAAO;EACL,cAAc,QAAQ;EACtB,mBAAmB,QAAQ;EAC3B,iBAAiB,QAAQ;EACzB,2BAA2B,QAAQ;EACnC,iBAAiB,QAAQ;CAC3B;AACF"}
@@ -118,7 +118,15 @@ type BaseUser = {
118
118
  * The reason why the user is restricted, e.g., { type: "email_not_verified" }, { type: "anonymous" }, or { type: "restricted_by_administrator" }.
119
119
  * Null if the user is not restricted.
120
120
  */
121
- readonly restrictedReason: RestrictedReason | null;
121
+ readonly restrictedReason: RestrictedReason | null; /** Whether the user is restricted by an administrator. Can be set manually or by sign-up rules. */
122
+ readonly restrictedByAdmin: boolean;
123
+ /**
124
+ * Public reason shown to the user explaining why an administrator restricted them, or null if none was given.
125
+ *
126
+ * This is intentionally readable by the user themselves (unlike `restrictedByAdminPrivateDetails`, which is
127
+ * server-only), so onboarding screens can tell them why they can't continue.
128
+ */
129
+ readonly restrictedByAdminReason: string | null;
122
130
  toClientJson(): CurrentUserCrud["Client"]["Read"];
123
131
  /**
124
132
  * @deprecated, use contact channel's usedForAuth instead
@@ -287,9 +295,7 @@ type ServerBaseUser = {
287
295
  readonly lastActiveAt: Date;
288
296
  readonly serverMetadata: any;
289
297
  setServerMetadata(metadata: any): Promise<void>;
290
- setClientReadOnlyMetadata(metadata: any): Promise<void>; /** Whether the user is restricted by an administrator. Can be set manually or by sign-up rules. */
291
- readonly restrictedByAdmin: boolean; /** Public reason shown to the user explaining why they are restricted. Optional. */
292
- readonly restrictedByAdminReason: string | null; /** Private details about the restriction (e.g., which sign-up rule triggered). Only visible to server access and above. */
298
+ setClientReadOnlyMetadata(metadata: any): Promise<void>; /** Private details about the restriction (e.g., which sign-up rule triggered). Only visible to server access and above. */
293
299
  readonly restrictedByAdminPrivateDetails: string | null; /** Best-effort ISO country code captured at sign-up time from request geo headers. */
294
300
  readonly countryCode: string | null; /** Server-only risk scores used during sign-up risk evaluation. */
295
301
  readonly riskScores: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../../src/lib/hexclave-app/users/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../../src/lib/hexclave-app/users/index.ts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../../src/lib/hexclave-app/users/index.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { KnownErrors } from \"@hexclave/shared\";\nimport { CurrentUserCrud } from \"@hexclave/shared/dist/interface/crud/current-user\";\nimport { UsersCrud } from \"@hexclave/shared/dist/interface/crud/users\";\nimport type { RestrictedReason } from \"@hexclave/shared/dist/schema-fields\";\nimport { InternalSession } from \"@hexclave/shared/dist/sessions\";\nimport { encodeBase64 } from \"@hexclave/shared/dist/utils/bytes\";\nimport { GeoInfo } from \"@hexclave/shared/dist/utils/geo\";\nimport { ReadonlyJson } from \"@hexclave/shared/dist/utils/json\";\nimport { ProviderType } from \"@hexclave/shared/dist/utils/oauth\";\nimport { Result } from \"@hexclave/shared/dist/utils/results\";\nimport { ApiKeyCreationOptions, UserApiKey, UserApiKeyFirstView } from \"../api-keys\";\nimport { AsyncStoreProperty, AuthLike } from \"../common\";\nimport { DeprecatedOAuthConnection, OAuthConnection } from \"../connected-accounts\";\nimport { ContactChannel, ContactChannelCreateOptions, ServerContactChannel, ServerContactChannelCreateOptions } from \"../contact-channels\";\nimport { Customer } from \"../customers\";\nimport { NotificationCategory } from \"../notification-categories\";\nimport { AdminTeamPermission, TeamPermission } from \"../permissions\";\nimport { AdminOwnedProject, AdminProjectCreateOptions } from \"../projects\";\nimport { EditableTeamMemberProfile, ReceivedTeamInvitation, ServerListTeamsOptions, ServerTeam, ServerTeamCreateOptions, Team, TeamCreateOptions } from \"../teams\";\n\nconst userGetterErrorMessage = \"Hexclave: useUser() already returns the user object. Use `const user = useUser()` (or `const user = await app.getUser()`) instead of destructuring it like `const { user } = ...`.\";\n\nexport function withUserDestructureGuard<T extends object>(target: T): T {\n Object.freeze(target);\n return new Proxy(target, {\n get(target, prop, receiver) {\n if (prop === \"user\") {\n return guardGetter();\n }\n return target[prop as keyof T];\n },\n });\n}\n\nfunction guardGetter(): never {\n throw new Error(userGetterErrorMessage);\n}\n\nexport type OAuthProvider = {\n readonly id: string,\n readonly type: string,\n readonly userId: string,\n readonly accountId?: string,\n readonly email?: string,\n readonly allowSignIn: boolean,\n readonly allowConnectedAccounts: boolean,\n update(data: { allowSignIn?: boolean, allowConnectedAccounts?: boolean }): Promise<Result<void,\n InstanceType<typeof KnownErrors.OAuthProviderAccountIdAlreadyUsedForSignIn>\n >>,\n delete(): Promise<void>,\n};\n\nexport type ServerOAuthProvider = {\n readonly id: string,\n readonly type: string,\n readonly userId: string,\n readonly accountId: string,\n readonly email?: string,\n readonly allowSignIn: boolean,\n readonly allowConnectedAccounts: boolean,\n update(data: { accountId?: string, email?: string, allowSignIn?: boolean, allowConnectedAccounts?: boolean }): Promise<Result<void,\n InstanceType<typeof KnownErrors.OAuthProviderAccountIdAlreadyUsedForSignIn>\n >>,\n delete(): Promise<void>,\n};\n\n\n/**\n * Contains everything related to the current user session.\n */\nexport type Auth = AuthLike<{}> & {\n readonly _internalSession: InternalSession,\n readonly currentSession: {\n getTokens(): Promise<{ accessToken: string | null, refreshToken: string | null }>,\n useTokens(): { accessToken: string | null, refreshToken: string | null }, // THIS_LINE_PLATFORM react-like\n },\n};\n\n/**\n * ```\n * +----------+-------------+-------------------+\n * | \\ | !Server | Server |\n * +----------+-------------+-------------------+\n * | !Session | User | ServerUser |\n * | Session | CurrentUser | CurrentServerUser |\n * +----------+-------------+-------------------+\n * ```\n *\n * The fields on each of these types are available iff:\n * BaseUser: true\n * Auth: Session\n * ServerBaseUser: Server\n * UserExtra: Session OR Server\n *\n * The types are defined as follows (in the typescript manner):\n * User = BaseUser\n * CurrentUser = BaseUser & Auth & UserExtra\n * ServerUser = BaseUser & ServerBaseUser & UserExtra\n * CurrentServerUser = BaseUser & ServerBaseUser & Auth & UserExtra\n **/\n\nexport type BaseUser = {\n readonly id: string,\n\n readonly displayName: string | null,\n\n /**\n * The user's email address.\n *\n * Note: This might NOT be unique across multiple users, so always use `id` for unique identification.\n */\n readonly primaryEmail: string | null,\n readonly primaryEmailVerified: boolean,\n readonly profileImageUrl: string | null,\n\n readonly signedUpAt: Date,\n\n readonly clientMetadata: any,\n readonly clientReadOnlyMetadata: any,\n\n /**\n * Whether the user has a password set.\n */\n readonly hasPassword: boolean,\n readonly otpAuthEnabled: boolean,\n readonly passkeyAuthEnabled: boolean,\n\n readonly isMultiFactorRequired: boolean,\n readonly isAnonymous: boolean,\n /**\n * Whether the user is in restricted state (signed up but hasn't completed onboarding requirements).\n * For example, if email verification is required but the user hasn't verified their email yet.\n */\n readonly isRestricted: boolean,\n /**\n * The reason why the user is restricted, e.g., { type: \"email_not_verified\" }, { type: \"anonymous\" }, or { type: \"restricted_by_administrator\" }.\n * Null if the user is not restricted.\n */\n readonly restrictedReason: RestrictedReason | null,\n toClientJson(): CurrentUserCrud[\"Client\"][\"Read\"],\n\n /**\n * @deprecated, use contact channel's usedForAuth instead\n */\n readonly emailAuthEnabled: boolean,\n /**\n * @deprecated\n */\n readonly oauthProviders: readonly { id: string }[],\n}\n\nexport type UserExtra = {\n setDisplayName(displayName: string | null): Promise<void>,\n /** @deprecated Use contact channel's sendVerificationEmail instead */\n sendVerificationEmail(): Promise<KnownErrors[\"EmailAlreadyVerified\"] | void>,\n setClientMetadata(metadata: any): Promise<void>,\n updatePassword(options: { oldPassword: string, newPassword: string}): Promise<KnownErrors[\"PasswordConfirmationMismatch\"] | KnownErrors[\"PasswordRequirementsNotMet\"] | void>,\n setPassword(options: { password: string }): Promise<KnownErrors[\"PasswordRequirementsNotMet\"] | void>,\n\n /**\n * A shorthand method to update multiple fields of the user at once.\n */\n update(update: UserUpdateOptions): Promise<void>,\n\n useContactChannels(): ContactChannel[], // THIS_LINE_PLATFORM react-like\n listContactChannels(): Promise<ContactChannel[]>,\n createContactChannel(data: ContactChannelCreateOptions): Promise<ContactChannel>,\n\n useNotificationCategories(): NotificationCategory[], // THIS_LINE_PLATFORM react-like\n listNotificationCategories(): Promise<NotificationCategory[]>,\n\n delete(): Promise<void>,\n\n /** @deprecated Use `getOrLinkConnectedAccount` for redirect behavior, or `getConnectedAccount({ provider, providerAccountId })` for existence check. */\n getConnectedAccount(id: ProviderType, options: { or: 'redirect', scopes?: string[] }): Promise<DeprecatedOAuthConnection>,\n /** @deprecated Use `getConnectedAccount({ provider, providerAccountId })` for existence check, or `getOrLinkConnectedAccount` for redirect behavior. */\n getConnectedAccount(id: ProviderType, options?: { or?: 'redirect' | 'throw' | 'return-null', scopes?: string[] }): Promise<DeprecatedOAuthConnection | null>,\n /** Get a specific connected account by provider and providerAccountId. Returns null if not found. */\n getConnectedAccount(account: { provider: string, providerAccountId: string }): Promise<OAuthConnection | null>,\n\n /** @deprecated Use `useOrLinkConnectedAccount` for redirect behavior, or `useConnectedAccount({ provider, providerAccountId })` for existence check. */\n useConnectedAccount(id: ProviderType, options: { or: 'redirect', scopes?: string[] }): DeprecatedOAuthConnection,\n /** @deprecated Use `useConnectedAccount({ provider, providerAccountId })` for existence check, or `useOrLinkConnectedAccount` for redirect behavior. */\n useConnectedAccount(id: ProviderType, options?: { or?: 'redirect' | 'throw' | 'return-null', scopes?: string[] }): DeprecatedOAuthConnection | null,\n /** Get a specific connected account by provider and providerAccountId. Returns null if not found. */\n useConnectedAccount(account: { provider: string, providerAccountId: string }): OAuthConnection | null,\n\n /** List all connected accounts for this user (only those with allowConnectedAccounts enabled). */\n listConnectedAccounts(): Promise<OAuthConnection[]>,\n /** React hook to list all connected accounts. */\n useConnectedAccounts(): OAuthConnection[], // THIS_LINE_PLATFORM react-like\n /** Redirect the user to the OAuth flow to link a new connected account. Always redirects, never returns. */\n linkConnectedAccount(provider: string, options?: { scopes?: string[] }): Promise<void>,\n /** Get a connected account for the given provider, or redirect to link one if none exists or the token/scopes are insufficient. */\n getOrLinkConnectedAccount(provider: string, options?: { scopes?: string[] }): Promise<OAuthConnection>,\n /** React hook: get a connected account for the given provider, or redirect to link one if none exists or the token/scopes are insufficient. */\n useOrLinkConnectedAccount(provider: string, options?: { scopes?: string[] }): OAuthConnection, // THIS_LINE_PLATFORM react-like\n\n hasPermission(scope: Team, permissionId: string): Promise<boolean>,\n hasPermission(permissionId: string): Promise<boolean>,\n\n getPermission(scope: Team, permissionId: string): Promise<TeamPermission | null>,\n getPermission(permissionId: string): Promise<TeamPermission | null>,\n\n listPermissions(scope: Team, options?: { recursive?: boolean }): Promise<TeamPermission[]>,\n listPermissions(options?: { recursive?: boolean }): Promise<TeamPermission[]>,\n\n usePermissions(scope: Team, options?: { recursive?: boolean }): TeamPermission[],\n usePermissions(options?: { recursive?: boolean }): TeamPermission[],\n\n usePermission(scope: Team, permissionId: string): TeamPermission | null,\n usePermission(permissionId: string): TeamPermission | null,\n\n readonly selectedTeam: Team | null,\n setSelectedTeam(teamOrId: string | Team | null): Promise<void>,\n createTeam(data: TeamCreateOptions): Promise<Team>,\n leaveTeam(team: Team): Promise<void>,\n\n /**\n * Lists all pending team invitations sent to any of the current user's verified email addresses.\n *\n * This allows the user to discover which teams have invited them, even if they haven't\n * joined those teams yet. Only invitations sent to verified email addresses are included.\n *\n * @returns An array of `ReceivedTeamInvitation` objects, each containing the team ID, team\n * display name, recipient email, and expiration date.\n *\n * @example\n * ```ts\n * const invitations = await user.listTeamInvitations();\n * for (const invitation of invitations) {\n * console.log(`Invited to ${invitation.teamDisplayName} via ${invitation.recipientEmail}`);\n * }\n * ```\n */\n listTeamInvitations(): Promise<ReceivedTeamInvitation[]>,\n /**\n * Lists all pending team invitations sent to any of the current user's verified email addresses.\n *\n * React hook version of `listTeamInvitations()`. Automatically re-renders when invitations change.\n */\n useTeamInvitations(): ReceivedTeamInvitation[], // THIS_LINE_PLATFORM react-like\n\n getActiveSessions(): Promise<ActiveSession[]>,\n revokeSession(sessionId: string): Promise<void>,\n getTeamProfile(team: Team): Promise<EditableTeamMemberProfile>,\n useTeamProfile(team: Team): EditableTeamMemberProfile, // THIS_LINE_PLATFORM react-like\n\n createApiKey(options: ApiKeyCreationOptions<\"user\">): Promise<UserApiKeyFirstView>,\n\n useOAuthProviders(): OAuthProvider[], // THIS_LINE_PLATFORM react-like\n listOAuthProviders(): Promise<OAuthProvider[]>,\n\n useOAuthProvider(id: string): OAuthProvider | null, // THIS_LINE_PLATFORM react-like\n getOAuthProvider(id: string): Promise<OAuthProvider | null>,\n\n registerPasskey(options?: { hostname?: string }): Promise<Result<undefined, KnownErrors[\"PasskeyRegistrationFailed\"] | KnownErrors[\"PasskeyWebAuthnError\"]>>,\n}\n& AsyncStoreProperty<\"apiKeys\", [], UserApiKey[], true>\n& AsyncStoreProperty<\"team\", [id: string], Team | null, false>\n& AsyncStoreProperty<\"teams\", [], Team[], true>\n& AsyncStoreProperty<\"teamInvitations\", [], ReceivedTeamInvitation[], true>\n& AsyncStoreProperty<\"permission\", [scope: Team, permissionId: string, options?: { recursive?: boolean }], TeamPermission | null, false>\n& AsyncStoreProperty<\"permissions\", [scope: Team, options?: { recursive?: boolean }], TeamPermission[], true>;\n\nexport type InternalUserExtra =\n & {\n createProject(newProject: AdminProjectCreateOptions): Promise<AdminOwnedProject>,\n transferProject(projectIdToTransfer: string, newTeamId: string): Promise<void>,\n }\n & AsyncStoreProperty<\"ownedProjects\", [], AdminOwnedProject[], true>\n\nexport type User = BaseUser;\n\nexport type CurrentUser = BaseUser & Auth & UserExtra & Customer;\n\nexport type CurrentInternalUser = CurrentUser & InternalUserExtra;\n\nexport type ProjectCurrentUser<ProjectId> = ProjectId extends \"internal\" ? CurrentInternalUser : CurrentUser;\n\nexport type TokenPartialUser = Pick<\n User,\n | \"id\"\n | \"displayName\"\n | \"primaryEmail\"\n | \"primaryEmailVerified\"\n | \"isAnonymous\"\n | \"isMultiFactorRequired\"\n | \"isRestricted\"\n | \"restrictedReason\"\n>\n\nexport type SyncedPartialUser = TokenPartialUser & Pick<\n User,\n | \"id\"\n | \"displayName\"\n | \"primaryEmail\"\n | \"primaryEmailVerified\"\n | \"profileImageUrl\"\n | \"signedUpAt\"\n | \"clientMetadata\"\n | \"clientReadOnlyMetadata\"\n | \"isAnonymous\"\n | \"hasPassword\"\n | \"isRestricted\"\n | \"restrictedReason\"\n>;\n\n\nexport type ActiveSession = {\n id: string,\n userId: string,\n createdAt: Date,\n isImpersonation: boolean,\n lastUsedAt: Date | undefined,\n isCurrentSession: boolean,\n geoInfo?: GeoInfo,\n};\n\nexport type UserUpdateOptions = {\n displayName?: string | null,\n clientMetadata?: ReadonlyJson,\n selectedTeamId?: string | null,\n totpMultiFactorSecret?: Uint8Array | null,\n profileImageUrl?: string | null,\n otpAuthEnabled?: boolean,\n passkeyAuthEnabled?: boolean,\n primaryEmail?: string | null,\n}\nexport function userUpdateOptionsToCrud(options: UserUpdateOptions): CurrentUserCrud[\"Client\"][\"Update\"] {\n return {\n display_name: options.displayName,\n client_metadata: options.clientMetadata,\n selected_team_id: options.selectedTeamId,\n totp_secret_base64: options.totpMultiFactorSecret != null ? encodeBase64(options.totpMultiFactorSecret) : options.totpMultiFactorSecret,\n profile_image_url: options.profileImageUrl,\n otp_auth_enabled: options.otpAuthEnabled,\n passkey_auth_enabled: options.passkeyAuthEnabled,\n primary_email: options.primaryEmail,\n };\n}\n\n\nexport type ServerBaseUser = {\n setPrimaryEmail(email: string | null, options?: { verified?: boolean | undefined }): Promise<void>,\n\n readonly lastActiveAt: Date,\n\n readonly serverMetadata: any,\n setServerMetadata(metadata: any): Promise<void>,\n setClientReadOnlyMetadata(metadata: any): Promise<void>,\n\n /** Whether the user is restricted by an administrator. Can be set manually or by sign-up rules. */\n readonly restrictedByAdmin: boolean,\n /** Public reason shown to the user explaining why they are restricted. Optional. */\n readonly restrictedByAdminReason: string | null,\n /** Private details about the restriction (e.g., which sign-up rule triggered). Only visible to server access and above. */\n readonly restrictedByAdminPrivateDetails: string | null,\n /** Best-effort ISO country code captured at sign-up time from request geo headers. */\n readonly countryCode: string | null,\n /** Server-only risk scores used during sign-up risk evaluation. */\n readonly riskScores: {\n readonly signUp: {\n readonly bot: number,\n readonly freeTrialAbuse: number,\n },\n },\n\n createTeam(data: Omit<ServerTeamCreateOptions, \"creatorUserId\">): Promise<ServerTeam>,\n\n useContactChannels(): ServerContactChannel[], // THIS_LINE_PLATFORM react-like\n listContactChannels(): Promise<ServerContactChannel[]>,\n createContactChannel(data: ServerContactChannelCreateOptions): Promise<ServerContactChannel>,\n\n update(user: ServerUserUpdateOptions): Promise<void>,\n\n grantPermission(scope: Team, permissionId: string): Promise<void>,\n grantPermission(permissionId: string): Promise<void>,\n\n revokePermission(scope: Team, permissionId: string): Promise<void>,\n revokePermission(permissionId: string): Promise<void>,\n\n getPermission(scope: Team, permissionId: string): Promise<TeamPermission | null>,\n getPermission(permissionId: string): Promise<TeamPermission | null>,\n\n hasPermission(scope: Team, permissionId: string): Promise<boolean>,\n hasPermission(permissionId: string): Promise<boolean>,\n\n listPermissions(scope: Team, options?: { recursive?: boolean }): Promise<TeamPermission[]>,\n listPermissions(options?: { recursive?: boolean }): Promise<TeamPermission[]>,\n\n usePermissions(scope: Team, options?: { recursive?: boolean }): TeamPermission[],\n usePermissions(options?: { recursive?: boolean }): TeamPermission[],\n\n usePermission(scope: Team, permissionId: string): TeamPermission | null,\n usePermission(permissionId: string): TeamPermission | null,\n\n useOAuthProviders(): ServerOAuthProvider[], // THIS_LINE_PLATFORM react-like\n listOAuthProviders(): Promise<ServerOAuthProvider[]>,\n\n useOAuthProvider(id: string): ServerOAuthProvider | null, // THIS_LINE_PLATFORM react-like\n getOAuthProvider(id: string): Promise<ServerOAuthProvider | null>,\n\n /**\n * Creates a new session object with a refresh token for this user. Can be used to impersonate them.\n */\n createSession(options?: { expiresInMillis?: number, isImpersonation?: boolean }): Promise<{\n getTokens(): Promise<{ accessToken: string | null, refreshToken: string | null }>,\n }>,\n}\n& AsyncStoreProperty<\"team\", [id: string], ServerTeam | null, false>\n& AsyncStoreProperty<\"teams\", [options?: ServerListTeamsOptions], ServerTeam[] & { nextCursor: string | null }, true>\n& AsyncStoreProperty<\"permission\", [scope: Team, permissionId: string, options?: { direct?: boolean }], AdminTeamPermission | null, false>\n& AsyncStoreProperty<\"permissions\", [scope: Team, options?: { direct?: boolean }], AdminTeamPermission[], true>;\n\n/**\n * A user including sensitive fields that should only be used on the server, never sent to the client\n * (such as sensitive information and serverMetadata).\n */\nexport type ServerUser = ServerBaseUser & BaseUser & UserExtra & Customer<true>;\n\nexport type CurrentServerUser = Auth & ServerUser;\n\nexport type CurrentInternalServerUser = CurrentServerUser & InternalUserExtra;\n\nexport type ProjectCurrentServerUser<ProjectId> = ProjectId extends \"internal\" ? CurrentInternalServerUser : CurrentServerUser;\n\nexport type SyncedPartialServerUser = SyncedPartialUser & Pick<\n ServerUser,\n | \"serverMetadata\"\n>;\n\nexport type ServerUserUpdateOptions = {\n primaryEmail?: string | null,\n primaryEmailVerified?: boolean,\n primaryEmailAuthEnabled?: boolean,\n clientReadOnlyMetadata?: ReadonlyJson,\n serverMetadata?: ReadonlyJson,\n password?: string,\n restrictedByAdmin?: boolean,\n restrictedByAdminReason?: string | null,\n restrictedByAdminPrivateDetails?: string | null,\n countryCode?: string | null,\n riskScores?: {\n signUp: {\n bot: number,\n freeTrialAbuse: number,\n },\n },\n} & UserUpdateOptions;\nexport function serverUserUpdateOptionsToCrud(options: ServerUserUpdateOptions): CurrentUserCrud[\"Server\"][\"Update\"] {\n // Base update options\n const baseUpdate: CurrentUserCrud[\"Server\"][\"Update\"] = {\n display_name: options.displayName,\n primary_email: options.primaryEmail,\n client_metadata: options.clientMetadata,\n client_read_only_metadata: options.clientReadOnlyMetadata,\n server_metadata: options.serverMetadata,\n selected_team_id: options.selectedTeamId,\n primary_email_auth_enabled: options.primaryEmailAuthEnabled,\n primary_email_verified: options.primaryEmailVerified,\n password: options.password,\n profile_image_url: options.profileImageUrl,\n totp_secret_base64: options.totpMultiFactorSecret != null ? encodeBase64(options.totpMultiFactorSecret) : options.totpMultiFactorSecret,\n };\n return {\n ...baseUpdate,\n restricted_by_admin: options.restrictedByAdmin,\n restricted_by_admin_reason: options.restrictedByAdminReason,\n restricted_by_admin_private_details: options.restrictedByAdminPrivateDetails,\n country_code: options.countryCode,\n risk_scores: options.riskScores ? {\n sign_up: {\n bot: options.riskScores.signUp.bot,\n free_trial_abuse: options.riskScores.signUp.freeTrialAbuse,\n },\n } : undefined,\n };\n}\n\n\nexport type ServerUserCreateOptions = {\n primaryEmail?: string | null,\n primaryEmailAuthEnabled?: boolean,\n password?: string,\n otpAuthEnabled?: boolean,\n displayName?: string,\n primaryEmailVerified?: boolean,\n clientMetadata?: any,\n clientReadOnlyMetadata?: any,\n serverMetadata?: any,\n countryCode?: string | null,\n riskScores?: {\n signUp: {\n bot: number,\n freeTrialAbuse: number,\n },\n },\n}\nexport function serverUserCreateOptionsToCrud(options: ServerUserCreateOptions): UsersCrud[\"Server\"][\"Create\"] {\n return {\n primary_email: options.primaryEmail,\n password: options.password,\n otp_auth_enabled: options.otpAuthEnabled,\n primary_email_auth_enabled: options.primaryEmailAuthEnabled,\n display_name: options.displayName,\n primary_email_verified: options.primaryEmailVerified,\n client_metadata: options.clientMetadata,\n client_read_only_metadata: options.clientReadOnlyMetadata,\n server_metadata: options.serverMetadata,\n country_code: options.countryCode,\n risk_scores: options.riskScores ? {\n sign_up: {\n bot: options.riskScores.signUp.bot,\n free_trial_abuse: options.riskScores.signUp.freeTrialAbuse,\n },\n } : undefined,\n };\n}\n"],"mappings":";;AAwBA,MAAM,yBAAyB;AAE/B,SAAgB,yBAA2C,QAAc;CACvE,OAAO,OAAO,MAAM;CACpB,OAAO,IAAI,MAAM,QAAQ,EACvB,IAAI,QAAQ,MAAM,UAAU;EAC1B,IAAI,SAAS,QACX,OAAO,YAAY;EAErB,OAAO,OAAO;CAChB,EACF,CAAC;AACH;AAEA,SAAS,cAAqB;CAC5B,MAAM,IAAI,MAAM,sBAAsB;AACxC;AAqSA,SAAgB,wBAAwB,SAAiE;CACvG,OAAO;EACL,cAAc,QAAQ;EACtB,iBAAiB,QAAQ;EACzB,kBAAkB,QAAQ;EAC1B,oBAAoB,QAAQ,yBAAyB,OAAO,aAAa,QAAQ,qBAAqB,IAAI,QAAQ;EAClH,mBAAmB,QAAQ;EAC3B,kBAAkB,QAAQ;EAC1B,sBAAsB,QAAQ;EAC9B,eAAe,QAAQ;CACzB;AACF;AA8GA,SAAgB,8BAA8B,SAAuE;CAenH,OAAO;EAZL,cAAc,QAAQ;EACtB,eAAe,QAAQ;EACvB,iBAAiB,QAAQ;EACzB,2BAA2B,QAAQ;EACnC,iBAAiB,QAAQ;EACzB,kBAAkB,QAAQ;EAC1B,4BAA4B,QAAQ;EACpC,wBAAwB,QAAQ;EAChC,UAAU,QAAQ;EAClB,mBAAmB,QAAQ;EAC3B,oBAAoB,QAAQ,yBAAyB,OAAO,aAAa,QAAQ,qBAAqB,IAAI,QAAQ;EAIlH,qBAAqB,QAAQ;EAC7B,4BAA4B,QAAQ;EACpC,qCAAqC,QAAQ;EAC7C,cAAc,QAAQ;EACtB,aAAa,QAAQ,aAAa,EAChC,SAAS;GACP,KAAK,QAAQ,WAAW,OAAO;GAC/B,kBAAkB,QAAQ,WAAW,OAAO;EAC9C,EACF,IAAI,KAAA;CACN;AACF;AAqBA,SAAgB,8BAA8B,SAAiE;CAC7G,OAAO;EACL,eAAe,QAAQ;EACvB,UAAU,QAAQ;EAClB,kBAAkB,QAAQ;EAC1B,4BAA4B,QAAQ;EACpC,cAAc,QAAQ;EACtB,wBAAwB,QAAQ;EAChC,iBAAiB,QAAQ;EACzB,2BAA2B,QAAQ;EACnC,iBAAiB,QAAQ;EACzB,cAAc,QAAQ;EACtB,aAAa,QAAQ,aAAa,EAChC,SAAS;GACP,KAAK,QAAQ,WAAW,OAAO;GAC/B,kBAAkB,QAAQ,WAAW,OAAO;EAC9C,EACF,IAAI,KAAA;CACN;AACF"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../../src/lib/hexclave-app/users/index.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { KnownErrors } from \"@hexclave/shared\";\nimport { CurrentUserCrud } from \"@hexclave/shared/dist/interface/crud/current-user\";\nimport { UsersCrud } from \"@hexclave/shared/dist/interface/crud/users\";\nimport type { RestrictedReason } from \"@hexclave/shared/dist/schema-fields\";\nimport { InternalSession } from \"@hexclave/shared/dist/sessions\";\nimport { encodeBase64 } from \"@hexclave/shared/dist/utils/bytes\";\nimport { GeoInfo } from \"@hexclave/shared/dist/utils/geo\";\nimport { ReadonlyJson } from \"@hexclave/shared/dist/utils/json\";\nimport { ProviderType } from \"@hexclave/shared/dist/utils/oauth\";\nimport { Result } from \"@hexclave/shared/dist/utils/results\";\nimport { ApiKeyCreationOptions, UserApiKey, UserApiKeyFirstView } from \"../api-keys\";\nimport { AsyncStoreProperty, AuthLike } from \"../common\";\nimport { DeprecatedOAuthConnection, OAuthConnection } from \"../connected-accounts\";\nimport { ContactChannel, ContactChannelCreateOptions, ServerContactChannel, ServerContactChannelCreateOptions } from \"../contact-channels\";\nimport { Customer } from \"../customers\";\nimport { NotificationCategory } from \"../notification-categories\";\nimport { AdminTeamPermission, TeamPermission } from \"../permissions\";\nimport { AdminOwnedProject, AdminProjectCreateOptions } from \"../projects\";\nimport { EditableTeamMemberProfile, ReceivedTeamInvitation, ServerListTeamsOptions, ServerTeam, ServerTeamCreateOptions, Team, TeamCreateOptions } from \"../teams\";\n\nconst userGetterErrorMessage = \"Hexclave: useUser() already returns the user object. Use `const user = useUser()` (or `const user = await app.getUser()`) instead of destructuring it like `const { user } = ...`.\";\n\nexport function withUserDestructureGuard<T extends object>(target: T): T {\n Object.freeze(target);\n return new Proxy(target, {\n get(target, prop, receiver) {\n if (prop === \"user\") {\n return guardGetter();\n }\n return target[prop as keyof T];\n },\n });\n}\n\nfunction guardGetter(): never {\n throw new Error(userGetterErrorMessage);\n}\n\nexport type OAuthProvider = {\n readonly id: string,\n readonly type: string,\n readonly userId: string,\n readonly accountId?: string,\n readonly email?: string,\n readonly allowSignIn: boolean,\n readonly allowConnectedAccounts: boolean,\n update(data: { allowSignIn?: boolean, allowConnectedAccounts?: boolean }): Promise<Result<void,\n InstanceType<typeof KnownErrors.OAuthProviderAccountIdAlreadyUsedForSignIn>\n >>,\n delete(): Promise<void>,\n};\n\nexport type ServerOAuthProvider = {\n readonly id: string,\n readonly type: string,\n readonly userId: string,\n readonly accountId: string,\n readonly email?: string,\n readonly allowSignIn: boolean,\n readonly allowConnectedAccounts: boolean,\n update(data: { accountId?: string, email?: string, allowSignIn?: boolean, allowConnectedAccounts?: boolean }): Promise<Result<void,\n InstanceType<typeof KnownErrors.OAuthProviderAccountIdAlreadyUsedForSignIn>\n >>,\n delete(): Promise<void>,\n};\n\n\n/**\n * Contains everything related to the current user session.\n */\nexport type Auth = AuthLike<{}> & {\n readonly _internalSession: InternalSession,\n readonly currentSession: {\n getTokens(): Promise<{ accessToken: string | null, refreshToken: string | null }>,\n useTokens(): { accessToken: string | null, refreshToken: string | null }, // THIS_LINE_PLATFORM react-like\n },\n};\n\n/**\n * ```\n * +----------+-------------+-------------------+\n * | \\ | !Server | Server |\n * +----------+-------------+-------------------+\n * | !Session | User | ServerUser |\n * | Session | CurrentUser | CurrentServerUser |\n * +----------+-------------+-------------------+\n * ```\n *\n * The fields on each of these types are available iff:\n * BaseUser: true\n * Auth: Session\n * ServerBaseUser: Server\n * UserExtra: Session OR Server\n *\n * The types are defined as follows (in the typescript manner):\n * User = BaseUser\n * CurrentUser = BaseUser & Auth & UserExtra\n * ServerUser = BaseUser & ServerBaseUser & UserExtra\n * CurrentServerUser = BaseUser & ServerBaseUser & Auth & UserExtra\n **/\n\nexport type BaseUser = {\n readonly id: string,\n\n readonly displayName: string | null,\n\n /**\n * The user's email address.\n *\n * Note: This might NOT be unique across multiple users, so always use `id` for unique identification.\n */\n readonly primaryEmail: string | null,\n readonly primaryEmailVerified: boolean,\n readonly profileImageUrl: string | null,\n\n readonly signedUpAt: Date,\n\n readonly clientMetadata: any,\n readonly clientReadOnlyMetadata: any,\n\n /**\n * Whether the user has a password set.\n */\n readonly hasPassword: boolean,\n readonly otpAuthEnabled: boolean,\n readonly passkeyAuthEnabled: boolean,\n\n readonly isMultiFactorRequired: boolean,\n readonly isAnonymous: boolean,\n /**\n * Whether the user is in restricted state (signed up but hasn't completed onboarding requirements).\n * For example, if email verification is required but the user hasn't verified their email yet.\n */\n readonly isRestricted: boolean,\n /**\n * The reason why the user is restricted, e.g., { type: \"email_not_verified\" }, { type: \"anonymous\" }, or { type: \"restricted_by_administrator\" }.\n * Null if the user is not restricted.\n */\n readonly restrictedReason: RestrictedReason | null,\n /** Whether the user is restricted by an administrator. Can be set manually or by sign-up rules. */\n readonly restrictedByAdmin: boolean,\n /**\n * Public reason shown to the user explaining why an administrator restricted them, or null if none was given.\n *\n * This is intentionally readable by the user themselves (unlike `restrictedByAdminPrivateDetails`, which is\n * server-only), so onboarding screens can tell them why they can't continue.\n */\n readonly restrictedByAdminReason: string | null,\n toClientJson(): CurrentUserCrud[\"Client\"][\"Read\"],\n\n /**\n * @deprecated, use contact channel's usedForAuth instead\n */\n readonly emailAuthEnabled: boolean,\n /**\n * @deprecated\n */\n readonly oauthProviders: readonly { id: string }[],\n}\n\nexport type UserExtra = {\n setDisplayName(displayName: string | null): Promise<void>,\n /** @deprecated Use contact channel's sendVerificationEmail instead */\n sendVerificationEmail(): Promise<KnownErrors[\"EmailAlreadyVerified\"] | void>,\n setClientMetadata(metadata: any): Promise<void>,\n updatePassword(options: { oldPassword: string, newPassword: string}): Promise<KnownErrors[\"PasswordConfirmationMismatch\"] | KnownErrors[\"PasswordRequirementsNotMet\"] | void>,\n setPassword(options: { password: string }): Promise<KnownErrors[\"PasswordRequirementsNotMet\"] | void>,\n\n /**\n * A shorthand method to update multiple fields of the user at once.\n */\n update(update: UserUpdateOptions): Promise<void>,\n\n useContactChannels(): ContactChannel[], // THIS_LINE_PLATFORM react-like\n listContactChannels(): Promise<ContactChannel[]>,\n createContactChannel(data: ContactChannelCreateOptions): Promise<ContactChannel>,\n\n useNotificationCategories(): NotificationCategory[], // THIS_LINE_PLATFORM react-like\n listNotificationCategories(): Promise<NotificationCategory[]>,\n\n delete(): Promise<void>,\n\n /** @deprecated Use `getOrLinkConnectedAccount` for redirect behavior, or `getConnectedAccount({ provider, providerAccountId })` for existence check. */\n getConnectedAccount(id: ProviderType, options: { or: 'redirect', scopes?: string[] }): Promise<DeprecatedOAuthConnection>,\n /** @deprecated Use `getConnectedAccount({ provider, providerAccountId })` for existence check, or `getOrLinkConnectedAccount` for redirect behavior. */\n getConnectedAccount(id: ProviderType, options?: { or?: 'redirect' | 'throw' | 'return-null', scopes?: string[] }): Promise<DeprecatedOAuthConnection | null>,\n /** Get a specific connected account by provider and providerAccountId. Returns null if not found. */\n getConnectedAccount(account: { provider: string, providerAccountId: string }): Promise<OAuthConnection | null>,\n\n /** @deprecated Use `useOrLinkConnectedAccount` for redirect behavior, or `useConnectedAccount({ provider, providerAccountId })` for existence check. */\n useConnectedAccount(id: ProviderType, options: { or: 'redirect', scopes?: string[] }): DeprecatedOAuthConnection,\n /** @deprecated Use `useConnectedAccount({ provider, providerAccountId })` for existence check, or `useOrLinkConnectedAccount` for redirect behavior. */\n useConnectedAccount(id: ProviderType, options?: { or?: 'redirect' | 'throw' | 'return-null', scopes?: string[] }): DeprecatedOAuthConnection | null,\n /** Get a specific connected account by provider and providerAccountId. Returns null if not found. */\n useConnectedAccount(account: { provider: string, providerAccountId: string }): OAuthConnection | null,\n\n /** List all connected accounts for this user (only those with allowConnectedAccounts enabled). */\n listConnectedAccounts(): Promise<OAuthConnection[]>,\n /** React hook to list all connected accounts. */\n useConnectedAccounts(): OAuthConnection[], // THIS_LINE_PLATFORM react-like\n /** Redirect the user to the OAuth flow to link a new connected account. Always redirects, never returns. */\n linkConnectedAccount(provider: string, options?: { scopes?: string[] }): Promise<void>,\n /** Get a connected account for the given provider, or redirect to link one if none exists or the token/scopes are insufficient. */\n getOrLinkConnectedAccount(provider: string, options?: { scopes?: string[] }): Promise<OAuthConnection>,\n /** React hook: get a connected account for the given provider, or redirect to link one if none exists or the token/scopes are insufficient. */\n useOrLinkConnectedAccount(provider: string, options?: { scopes?: string[] }): OAuthConnection, // THIS_LINE_PLATFORM react-like\n\n hasPermission(scope: Team, permissionId: string): Promise<boolean>,\n hasPermission(permissionId: string): Promise<boolean>,\n\n getPermission(scope: Team, permissionId: string): Promise<TeamPermission | null>,\n getPermission(permissionId: string): Promise<TeamPermission | null>,\n\n listPermissions(scope: Team, options?: { recursive?: boolean }): Promise<TeamPermission[]>,\n listPermissions(options?: { recursive?: boolean }): Promise<TeamPermission[]>,\n\n usePermissions(scope: Team, options?: { recursive?: boolean }): TeamPermission[],\n usePermissions(options?: { recursive?: boolean }): TeamPermission[],\n\n usePermission(scope: Team, permissionId: string): TeamPermission | null,\n usePermission(permissionId: string): TeamPermission | null,\n\n readonly selectedTeam: Team | null,\n setSelectedTeam(teamOrId: string | Team | null): Promise<void>,\n createTeam(data: TeamCreateOptions): Promise<Team>,\n leaveTeam(team: Team): Promise<void>,\n\n /**\n * Lists all pending team invitations sent to any of the current user's verified email addresses.\n *\n * This allows the user to discover which teams have invited them, even if they haven't\n * joined those teams yet. Only invitations sent to verified email addresses are included.\n *\n * @returns An array of `ReceivedTeamInvitation` objects, each containing the team ID, team\n * display name, recipient email, and expiration date.\n *\n * @example\n * ```ts\n * const invitations = await user.listTeamInvitations();\n * for (const invitation of invitations) {\n * console.log(`Invited to ${invitation.teamDisplayName} via ${invitation.recipientEmail}`);\n * }\n * ```\n */\n listTeamInvitations(): Promise<ReceivedTeamInvitation[]>,\n /**\n * Lists all pending team invitations sent to any of the current user's verified email addresses.\n *\n * React hook version of `listTeamInvitations()`. Automatically re-renders when invitations change.\n */\n useTeamInvitations(): ReceivedTeamInvitation[], // THIS_LINE_PLATFORM react-like\n\n getActiveSessions(): Promise<ActiveSession[]>,\n revokeSession(sessionId: string): Promise<void>,\n getTeamProfile(team: Team): Promise<EditableTeamMemberProfile>,\n useTeamProfile(team: Team): EditableTeamMemberProfile, // THIS_LINE_PLATFORM react-like\n\n createApiKey(options: ApiKeyCreationOptions<\"user\">): Promise<UserApiKeyFirstView>,\n\n useOAuthProviders(): OAuthProvider[], // THIS_LINE_PLATFORM react-like\n listOAuthProviders(): Promise<OAuthProvider[]>,\n\n useOAuthProvider(id: string): OAuthProvider | null, // THIS_LINE_PLATFORM react-like\n getOAuthProvider(id: string): Promise<OAuthProvider | null>,\n\n registerPasskey(options?: { hostname?: string }): Promise<Result<undefined, KnownErrors[\"PasskeyRegistrationFailed\"] | KnownErrors[\"PasskeyWebAuthnError\"]>>,\n}\n& AsyncStoreProperty<\"apiKeys\", [], UserApiKey[], true>\n& AsyncStoreProperty<\"team\", [id: string], Team | null, false>\n& AsyncStoreProperty<\"teams\", [], Team[], true>\n& AsyncStoreProperty<\"teamInvitations\", [], ReceivedTeamInvitation[], true>\n& AsyncStoreProperty<\"permission\", [scope: Team, permissionId: string, options?: { recursive?: boolean }], TeamPermission | null, false>\n& AsyncStoreProperty<\"permissions\", [scope: Team, options?: { recursive?: boolean }], TeamPermission[], true>;\n\nexport type InternalUserExtra =\n & {\n createProject(newProject: AdminProjectCreateOptions): Promise<AdminOwnedProject>,\n transferProject(projectIdToTransfer: string, newTeamId: string): Promise<void>,\n }\n & AsyncStoreProperty<\"ownedProjects\", [], AdminOwnedProject[], true>\n\nexport type User = BaseUser;\n\nexport type CurrentUser = BaseUser & Auth & UserExtra & Customer;\n\nexport type CurrentInternalUser = CurrentUser & InternalUserExtra;\n\nexport type ProjectCurrentUser<ProjectId> = ProjectId extends \"internal\" ? CurrentInternalUser : CurrentUser;\n\nexport type TokenPartialUser = Pick<\n User,\n | \"id\"\n | \"displayName\"\n | \"primaryEmail\"\n | \"primaryEmailVerified\"\n | \"isAnonymous\"\n | \"isMultiFactorRequired\"\n | \"isRestricted\"\n | \"restrictedReason\"\n>\n\nexport type SyncedPartialUser = TokenPartialUser & Pick<\n User,\n | \"id\"\n | \"displayName\"\n | \"primaryEmail\"\n | \"primaryEmailVerified\"\n | \"profileImageUrl\"\n | \"signedUpAt\"\n | \"clientMetadata\"\n | \"clientReadOnlyMetadata\"\n | \"isAnonymous\"\n | \"hasPassword\"\n | \"isRestricted\"\n | \"restrictedReason\"\n>;\n\n\nexport type ActiveSession = {\n id: string,\n userId: string,\n createdAt: Date,\n isImpersonation: boolean,\n lastUsedAt: Date | undefined,\n isCurrentSession: boolean,\n geoInfo?: GeoInfo,\n};\n\nexport type UserUpdateOptions = {\n displayName?: string | null,\n clientMetadata?: ReadonlyJson,\n selectedTeamId?: string | null,\n totpMultiFactorSecret?: Uint8Array | null,\n profileImageUrl?: string | null,\n otpAuthEnabled?: boolean,\n passkeyAuthEnabled?: boolean,\n primaryEmail?: string | null,\n}\nexport function userUpdateOptionsToCrud(options: UserUpdateOptions): CurrentUserCrud[\"Client\"][\"Update\"] {\n return {\n display_name: options.displayName,\n client_metadata: options.clientMetadata,\n selected_team_id: options.selectedTeamId,\n totp_secret_base64: options.totpMultiFactorSecret != null ? encodeBase64(options.totpMultiFactorSecret) : options.totpMultiFactorSecret,\n profile_image_url: options.profileImageUrl,\n otp_auth_enabled: options.otpAuthEnabled,\n passkey_auth_enabled: options.passkeyAuthEnabled,\n primary_email: options.primaryEmail,\n };\n}\n\n\nexport type ServerBaseUser = {\n setPrimaryEmail(email: string | null, options?: { verified?: boolean | undefined }): Promise<void>,\n\n readonly lastActiveAt: Date,\n\n readonly serverMetadata: any,\n setServerMetadata(metadata: any): Promise<void>,\n setClientReadOnlyMetadata(metadata: any): Promise<void>,\n\n /** Private details about the restriction (e.g., which sign-up rule triggered). Only visible to server access and above. */\n readonly restrictedByAdminPrivateDetails: string | null,\n /** Best-effort ISO country code captured at sign-up time from request geo headers. */\n readonly countryCode: string | null,\n /** Server-only risk scores used during sign-up risk evaluation. */\n readonly riskScores: {\n readonly signUp: {\n readonly bot: number,\n readonly freeTrialAbuse: number,\n },\n },\n\n createTeam(data: Omit<ServerTeamCreateOptions, \"creatorUserId\">): Promise<ServerTeam>,\n\n useContactChannels(): ServerContactChannel[], // THIS_LINE_PLATFORM react-like\n listContactChannels(): Promise<ServerContactChannel[]>,\n createContactChannel(data: ServerContactChannelCreateOptions): Promise<ServerContactChannel>,\n\n update(user: ServerUserUpdateOptions): Promise<void>,\n\n grantPermission(scope: Team, permissionId: string): Promise<void>,\n grantPermission(permissionId: string): Promise<void>,\n\n revokePermission(scope: Team, permissionId: string): Promise<void>,\n revokePermission(permissionId: string): Promise<void>,\n\n getPermission(scope: Team, permissionId: string): Promise<TeamPermission | null>,\n getPermission(permissionId: string): Promise<TeamPermission | null>,\n\n hasPermission(scope: Team, permissionId: string): Promise<boolean>,\n hasPermission(permissionId: string): Promise<boolean>,\n\n listPermissions(scope: Team, options?: { recursive?: boolean }): Promise<TeamPermission[]>,\n listPermissions(options?: { recursive?: boolean }): Promise<TeamPermission[]>,\n\n usePermissions(scope: Team, options?: { recursive?: boolean }): TeamPermission[],\n usePermissions(options?: { recursive?: boolean }): TeamPermission[],\n\n usePermission(scope: Team, permissionId: string): TeamPermission | null,\n usePermission(permissionId: string): TeamPermission | null,\n\n useOAuthProviders(): ServerOAuthProvider[], // THIS_LINE_PLATFORM react-like\n listOAuthProviders(): Promise<ServerOAuthProvider[]>,\n\n useOAuthProvider(id: string): ServerOAuthProvider | null, // THIS_LINE_PLATFORM react-like\n getOAuthProvider(id: string): Promise<ServerOAuthProvider | null>,\n\n /**\n * Creates a new session object with a refresh token for this user. Can be used to impersonate them.\n */\n createSession(options?: { expiresInMillis?: number, isImpersonation?: boolean }): Promise<{\n getTokens(): Promise<{ accessToken: string | null, refreshToken: string | null }>,\n }>,\n}\n& AsyncStoreProperty<\"team\", [id: string], ServerTeam | null, false>\n& AsyncStoreProperty<\"teams\", [options?: ServerListTeamsOptions], ServerTeam[] & { nextCursor: string | null }, true>\n& AsyncStoreProperty<\"permission\", [scope: Team, permissionId: string, options?: { direct?: boolean }], AdminTeamPermission | null, false>\n& AsyncStoreProperty<\"permissions\", [scope: Team, options?: { direct?: boolean }], AdminTeamPermission[], true>;\n\n/**\n * A user including sensitive fields that should only be used on the server, never sent to the client\n * (such as sensitive information and serverMetadata).\n */\nexport type ServerUser = ServerBaseUser & BaseUser & UserExtra & Customer<true>;\n\nexport type CurrentServerUser = Auth & ServerUser;\n\nexport type CurrentInternalServerUser = CurrentServerUser & InternalUserExtra;\n\nexport type ProjectCurrentServerUser<ProjectId> = ProjectId extends \"internal\" ? CurrentInternalServerUser : CurrentServerUser;\n\nexport type SyncedPartialServerUser = SyncedPartialUser & Pick<\n ServerUser,\n | \"serverMetadata\"\n>;\n\nexport type ServerUserUpdateOptions = {\n primaryEmail?: string | null,\n primaryEmailVerified?: boolean,\n primaryEmailAuthEnabled?: boolean,\n clientReadOnlyMetadata?: ReadonlyJson,\n serverMetadata?: ReadonlyJson,\n password?: string,\n restrictedByAdmin?: boolean,\n restrictedByAdminReason?: string | null,\n restrictedByAdminPrivateDetails?: string | null,\n countryCode?: string | null,\n riskScores?: {\n signUp: {\n bot: number,\n freeTrialAbuse: number,\n },\n },\n} & UserUpdateOptions;\nexport function serverUserUpdateOptionsToCrud(options: ServerUserUpdateOptions): CurrentUserCrud[\"Server\"][\"Update\"] {\n // Base update options\n const baseUpdate: CurrentUserCrud[\"Server\"][\"Update\"] = {\n display_name: options.displayName,\n primary_email: options.primaryEmail,\n client_metadata: options.clientMetadata,\n client_read_only_metadata: options.clientReadOnlyMetadata,\n server_metadata: options.serverMetadata,\n selected_team_id: options.selectedTeamId,\n primary_email_auth_enabled: options.primaryEmailAuthEnabled,\n primary_email_verified: options.primaryEmailVerified,\n password: options.password,\n profile_image_url: options.profileImageUrl,\n totp_secret_base64: options.totpMultiFactorSecret != null ? encodeBase64(options.totpMultiFactorSecret) : options.totpMultiFactorSecret,\n };\n return {\n ...baseUpdate,\n restricted_by_admin: options.restrictedByAdmin,\n restricted_by_admin_reason: options.restrictedByAdminReason,\n restricted_by_admin_private_details: options.restrictedByAdminPrivateDetails,\n country_code: options.countryCode,\n risk_scores: options.riskScores ? {\n sign_up: {\n bot: options.riskScores.signUp.bot,\n free_trial_abuse: options.riskScores.signUp.freeTrialAbuse,\n },\n } : undefined,\n };\n}\n\n\nexport type ServerUserCreateOptions = {\n primaryEmail?: string | null,\n primaryEmailAuthEnabled?: boolean,\n password?: string,\n otpAuthEnabled?: boolean,\n displayName?: string,\n primaryEmailVerified?: boolean,\n clientMetadata?: any,\n clientReadOnlyMetadata?: any,\n serverMetadata?: any,\n countryCode?: string | null,\n riskScores?: {\n signUp: {\n bot: number,\n freeTrialAbuse: number,\n },\n },\n}\nexport function serverUserCreateOptionsToCrud(options: ServerUserCreateOptions): UsersCrud[\"Server\"][\"Create\"] {\n return {\n primary_email: options.primaryEmail,\n password: options.password,\n otp_auth_enabled: options.otpAuthEnabled,\n primary_email_auth_enabled: options.primaryEmailAuthEnabled,\n display_name: options.displayName,\n primary_email_verified: options.primaryEmailVerified,\n client_metadata: options.clientMetadata,\n client_read_only_metadata: options.clientReadOnlyMetadata,\n server_metadata: options.serverMetadata,\n country_code: options.countryCode,\n risk_scores: options.riskScores ? {\n sign_up: {\n bot: options.riskScores.signUp.bot,\n free_trial_abuse: options.riskScores.signUp.freeTrialAbuse,\n },\n } : undefined,\n };\n}\n"],"mappings":";;AAwBA,MAAM,yBAAyB;AAE/B,SAAgB,yBAA2C,QAAc;CACvE,OAAO,OAAO,MAAM;CACpB,OAAO,IAAI,MAAM,QAAQ,EACvB,IAAI,QAAQ,MAAM,UAAU;EAC1B,IAAI,SAAS,QACX,OAAO,YAAY;EAErB,OAAO,OAAO;CAChB,EACF,CAAC;AACH;AAEA,SAAS,cAAqB;CAC5B,MAAM,IAAI,MAAM,sBAAsB;AACxC;AA8SA,SAAgB,wBAAwB,SAAiE;CACvG,OAAO;EACL,cAAc,QAAQ;EACtB,iBAAiB,QAAQ;EACzB,kBAAkB,QAAQ;EAC1B,oBAAoB,QAAQ,yBAAyB,OAAO,aAAa,QAAQ,qBAAqB,IAAI,QAAQ;EAClH,mBAAmB,QAAQ;EAC3B,kBAAkB,QAAQ;EAC1B,sBAAsB,QAAQ;EAC9B,eAAe,QAAQ;CACzB;AACF;AA0GA,SAAgB,8BAA8B,SAAuE;CAenH,OAAO;EAZL,cAAc,QAAQ;EACtB,eAAe,QAAQ;EACvB,iBAAiB,QAAQ;EACzB,2BAA2B,QAAQ;EACnC,iBAAiB,QAAQ;EACzB,kBAAkB,QAAQ;EAC1B,4BAA4B,QAAQ;EACpC,wBAAwB,QAAQ;EAChC,UAAU,QAAQ;EAClB,mBAAmB,QAAQ;EAC3B,oBAAoB,QAAQ,yBAAyB,OAAO,aAAa,QAAQ,qBAAqB,IAAI,QAAQ;EAIlH,qBAAqB,QAAQ;EAC7B,4BAA4B,QAAQ;EACpC,qCAAqC,QAAQ;EAC7C,cAAc,QAAQ;EACtB,aAAa,QAAQ,aAAa,EAChC,SAAS;GACP,KAAK,QAAQ,WAAW,OAAO;GAC/B,kBAAkB,QAAQ,WAAW,OAAO;EAC9C,EACF,IAAI,KAAA;CACN;AACF;AAqBA,SAAgB,8BAA8B,SAAiE;CAC7G,OAAO;EACL,eAAe,QAAQ;EACvB,UAAU,QAAQ;EAClB,kBAAkB,QAAQ;EAC1B,4BAA4B,QAAQ;EACpC,cAAc,QAAQ;EACtB,wBAAwB,QAAQ;EAChC,iBAAiB,QAAQ;EACzB,2BAA2B,QAAQ;EACnC,iBAAiB,QAAQ;EACzB,cAAc,QAAQ;EACtB,aAAa,QAAQ,aAAa,EAChC,SAAS;GACP,KAAK,QAAQ,WAAW,OAAO;GAC/B,kBAAkB,QAAQ,WAAW,OAAO;EAC9C,EACF,IAAI,KAAA;CACN;AACF"}
@@ -1,2 +1,2 @@
1
- import { n as quetzalLocales, t as quetzalKeys } from "../quetzal-translations-DVNj-zsr.js";
1
+ import { n as quetzalLocales, t as quetzalKeys } from "../quetzal-translations-XeH3zQ9l.js";
2
2
  export { quetzalKeys, quetzalLocales };
@@ -1,5 +1,5 @@
1
- import { N as StackAdminApp, a as StackClientApp, z as StackServerApp } from "./client-app-BlA5Ptxs.js";
2
- import { t as TranslationProvider } from "./translation-provider-DPFkLbrw.js";
1
+ import { N as StackAdminApp, a as StackClientApp, z as StackServerApp } from "./client-app-CE8FTKgO.js";
2
+ import { t as TranslationProvider } from "./translation-provider-WOaZXqAz.js";
3
3
  import React from "react";
4
4
 
5
5
  //#region src/providers/hexclave-provider.d.ts
@@ -26,4 +26,4 @@ declare const HexclaveProvider: typeof NextStackProvider;
26
26
  declare const StackProvider: typeof NextStackProvider;
27
27
  //#endregion
28
28
  export { HexclaveProvider as n, StackProvider as r, ActiveProvider as t };
29
- //# sourceMappingURL=hexclave-provider-Dtr9mxju.d.ts.map
29
+ //# sourceMappingURL=hexclave-provider-Ve1QPx9k.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hexclave-provider-Dtr9mxju.d.ts","names":[],"sources":["../src/providers/hexclave-provider.tsx"],"mappings":";;;;;iBASS,iBAAA;EACP,QAAA;EACA,GAAA;EACA,IAAA;EACA;AAAA;EAEA,IAAA,GAAO,KAAA,CAAM,cAAA,QAAsB,mBAAA;;AARwB;;;;;EAe3D,oBAAA,GAAuB,MAAA;EACvB,QAAA,EAAU,KAAA,CAAM,SAAA;EAEhB,GAAA,EAAK,cAAA,SAAuB,cAAA,SAAuB,aAAA;AAAA,gCACpD,GAAA,CAAA,OAAA;AAAA,cAcK,cAAA,SAAc,iBAAoB;AAAA,cAI3B,gBAAA,SAAgB,iBAAiB;;cAEjC,aAAA,SAAa,iBAAiB"}
1
+ {"version":3,"file":"hexclave-provider-Ve1QPx9k.d.ts","names":[],"sources":["../src/providers/hexclave-provider.tsx"],"mappings":";;;;;iBASS,iBAAA;EACP,QAAA;EACA,GAAA;EACA,IAAA;EACA;AAAA;EAEA,IAAA,GAAO,KAAA,CAAM,cAAA,QAAsB,mBAAA;;AARwB;;;;;EAe3D,oBAAA,GAAuB,MAAA;EACvB,QAAA,EAAU,KAAA,CAAM,SAAA;EAEhB,GAAA,EAAK,cAAA,SAAuB,cAAA,SAAuB,aAAA;AAAA,gCACpD,GAAA,CAAA,OAAA;AAAA,cAcK,cAAA,SAAc,iBAAoB;AAAA,cAI3B,gBAAA,SAAgB,iBAAiB;;cAEjC,aAAA,SAAa,iBAAiB"}
@@ -1,5 +1,5 @@
1
1
  import { s as GetCurrentUserOptions } from "./common-B2gkWlXX.js";
2
- import { a as StackClientApp, ht as CurrentUser, pt as CurrentInternalUser } from "./client-app-BlA5Ptxs.js";
2
+ import { a as StackClientApp, ht as CurrentUser, pt as CurrentInternalUser } from "./client-app-CE8FTKgO.js";
3
3
  //#region src/lib/hooks.d.ts
4
4
  type GetUserOptions = GetCurrentUserOptions<true> & {
5
5
  projectIdMustMatch?: string;
@@ -40,4 +40,4 @@ declare function useStackApp<ProjectId extends string>(options?: {
40
40
  }): StackClientApp<true, ProjectId>;
41
41
  //#endregion
42
42
  export { useStackApp as n, useUser as r, useHexclaveApp as t };
43
- //# sourceMappingURL=hooks-4BBvIKWJ.d.ts.map
43
+ //# sourceMappingURL=hooks-BNF4UvGF.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks-4BBvIKWJ.d.ts","names":[],"sources":["../src/lib/hooks.tsx"],"mappings":";;;KAQK,cAAA,GAAiB,qBAAiB;EACrC,kBAAkB;AAAA;;AAHwG;;;;iBAW5G,OAAA,CAAQ,OAAA,EAAS,cAAA;EAAmB,EAAA;EAA0B,kBAAA;AAAA,IAAmC,mBAAmB;AAAA,iBACpH,OAAA,CAAQ,OAAA,EAAS,cAAA;EAAmB,EAAA;AAAA,IAA6B,WAAW;AAAA,iBAC5E,OAAA,CAAQ,OAAA,EAAS,cAAA;EAAmB,kBAAA;AAAA,IAAmC,mBAAmB;AAAA,iBAC1F,OAAA,CAAQ,OAAA,GAAU,cAAA,GAAiB,WAAA,GAAc,mBAAA;AAHmE;AACpI;;;;AADoI,iBAqBpH,cAAA,2BAAyC,OAAA;EAAW,kBAAA,GAAqB,SAAA;AAAA,IAAmB,cAAA,OAAqB,SAAA;;;AApBrC;AAC5F;;;;iBAyCgB,WAAA,2BAAsC,OAAA;EAAW,kBAAA,GAAqB,SAAA;AAAA,IAAmB,cAAA,OAAqB,SAAA"}
1
+ {"version":3,"file":"hooks-BNF4UvGF.d.ts","names":[],"sources":["../src/lib/hooks.tsx"],"mappings":";;;KAQK,cAAA,GAAiB,qBAAiB;EACrC,kBAAkB;AAAA;;AAHwG;;;;iBAW5G,OAAA,CAAQ,OAAA,EAAS,cAAA;EAAmB,EAAA;EAA0B,kBAAA;AAAA,IAAmC,mBAAmB;AAAA,iBACpH,OAAA,CAAQ,OAAA,EAAS,cAAA;EAAmB,EAAA;AAAA,IAA6B,WAAW;AAAA,iBAC5E,OAAA,CAAQ,OAAA,EAAS,cAAA;EAAmB,kBAAA;AAAA,IAAmC,mBAAmB;AAAA,iBAC1F,OAAA,CAAQ,OAAA,GAAU,cAAA,GAAiB,WAAA,GAAc,mBAAA;AAHmE;AACpI;;;;AADoI,iBAqBpH,cAAA,2BAAyC,OAAA;EAAW,kBAAA,GAAqB,SAAA;AAAA,IAAmB,cAAA,OAAqB,SAAA;;;AApBrC;AAC5F;;;;iBAyCgB,WAAA,2BAAsC,OAAA;EAAW,kBAAA,GAAqB,SAAA;AAAA,IAAmB,cAAA,OAAqB,SAAA"}
@@ -1,5 +1,5 @@
1
1
  import { f as HandlerUrls } from "./common-B2gkWlXX.js";
2
- import { Q as Team, a as StackClientApp } from "./client-app-BlA5Ptxs.js";
2
+ import { Q as Team, a as StackClientApp } from "./client-app-CE8FTKgO.js";
3
3
  import { t as AccountSettings } from "./account-settings-cTsj8rpJ.js";
4
4
  import { t as CliAuthConfirmation } from "./cli-auth-confirm-BW3PYpKb.js";
5
5
  import { t as EmailVerification } from "./email-verification-Cr_KKvtQ.js";
@@ -144,4 +144,4 @@ type TeamSwitcherProps<AllowNull extends boolean = false> = {
144
144
  declare function TeamSwitcher<AllowNull extends boolean = false>(props: TeamSwitcherProps<AllowNull>): import("react/jsx-runtime").JSX.Element;
145
145
  //#endregion
146
146
  export { TeamSwitcher as a, StackHandler as c, getRedirectToPageResult as d, defineStackConfig as i, BaseHandlerProps as l, StackConfig as n, SelectedTeamSwitcher as o, defineHexclaveConfig as r, HexclaveHandler as s, HexclaveConfig as t, HexclaveHandlerClient as u };
147
- //# sourceMappingURL=index-DDICHT5X.d.ts.map
147
+ //# sourceMappingURL=index-g1JoVgIu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-DDICHT5X.d.ts","names":[],"sources":["../src/components-page/hexclave-handler-client.tsx","../src/components-page/hexclave-handler.tsx","../src/components/selected-team-switcher.tsx","../src/components/team-switcher.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;KAmCK,UAAA;EACH,MAAA,SAAe,MAAA;EACf,MAAA,SAAe,MAAA;EACf,iBAAA,SAA0B,iBAAA;EAC1B,aAAA,SAAsB,aAAA;EACtB,cAAA,SAAuB,cAAA;EACvB,OAAA,SAAgB,OAAA;EAChB,aAAA,SAAsB,aAAA;EACtB,iBAAA,SAA0B,iBAAA;EAC1B,cAAA,SAAuB,cAAA;EACvB,SAAA,SAAkB,SAAA;EAClB,eAAA,SAAwB,eAAA;EACxB,mBAAA,SAA4B,mBAAA;EAC5B,GAAA,SAAY,GAAA;EACZ,UAAA,SAAmB,UAAA;AAAA;AAAA,KAGhB,UAAA;EACH,MAAA,EAAQ,OAAA;IAAU,KAAA;EAAA;IAAwB,KAAA;EAAA;EAC1C,YAAA,EAAc,OAAA,CAAQ,MAAA,oBAA0B,MAAA;AAAA;AAAA,KAG7C,oBAAA;EACC,MAAA;AAAA;EACA,MAAA;EAAuB,KAAA,EAAO,UAAU;AAAA;EACxC,MAAA;AAAA;AAAA,KA4BM,gBAAA;EACV,QAAA;EACA,cAAA,iBACc,UAAA,IAAc,UAAA,CAAW,UAAA,CAAW,CAAA;AAAA;AAAA,iBAgJ9B,uBAAA,CACpB,GAAA,EAAK,cAAA,EACL,cAAA,QAAsB,WAAA,GACrB,OAAA,CAAQ,oBAAA;AAAA,iBAiCK,qBAAA,CAAsB,KAAA,EAAO,gBAAA,GAAmB,OAAA,CAAQ,UAAA;EAAgB,QAAA;AAAA;;;KCnQnF,oBAAA,GAAuB,gBAAgB;EAAK,QAAA;AAAA;;;;EAI/C,GAAA;;;;EAKA,UAAA;;;;EAKA,MAAA;;;;EAKA,YAAA;AAAA;AAAA,iBAGO,WAAA;EAAc,GAAA;EAAK,UAAA;EAAY,MAAA;EAAQ,YAAA;EAAA,GAAiB;AAAA,GAAS,oBAAA,+BAAoB,GAAA,CAAA,OAAA;AAAA,cAKjF,eAAA,SAAe,WAAc;;cAG7B,YAAA,SAAY,WAAc;;;KC5BlC,UAAA;EACH,EAAA;EACA,WAAA;EACA,eAAA;AAAA;AAAA,KAGG,yBAAA;EACH,MAAA,IAAU,IAAA,EAAM,SAAA,gBAAyB,IAAA,UAAc,IAAA;EACvD,YAAA,GAAe,IAAA;EACf,oBAAA;EACA,SAAA,GAAY,SAAA;EACZ,SAAA;EACA,QAAA,IAAY,IAAA,EAAM,SAAA,gBAAyB,IAAA,UAAc,IAAA;EACzD,gBAAA;EAEA,QAAA;IACE,YAAA,GAAe,UAAA;EAAA;EAEjB,SAAA,GAAY,UAAA;EACZ,WAAA;IACE,MAAA;MACE,yBAAA;IAAA;EAAA;AAAA;AAAA,iBAKU,oBAAA,oCAAwD,KAAA,EAAO,yBAAyB,CAAC,SAAA,gCAAU,GAAA,CAAA,OAAA;;;KCZ9G,QAAA;EACH,EAAA;EACA,WAAA;EACA,eAAA;AAAA;AAAA,KAGG,iBAAA;EACH,IAAA,GAAO,IAAA;EACP,MAAA;EACA,KAAA,GAAQ,IAAA;EACR,SAAA,GAAY,SAAA;EACZ,SAAA;EACA,gBAAA;EACA,QAAA,IAAY,IAAA,EAAM,SAAA,gBAAyB,IAAA,UAAc,IAAA,KAAS,OAAA;EAElE,QAAA;IACE,IAAA,GAAO,QAAA;EAAA;EAET,SAAA,GAAY,QAAA;EACZ,WAAA;IACE,MAAA;MACE,yBAAA;IAAA;EAAA;AAAA;AAAA,iBAKU,YAAA,oCAAgD,KAAA,EAAO,iBAAiB,CAAC,SAAA,gCAAU,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"index-g1JoVgIu.d.ts","names":[],"sources":["../src/components-page/hexclave-handler-client.tsx","../src/components-page/hexclave-handler.tsx","../src/components/selected-team-switcher.tsx","../src/components/team-switcher.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;KAmCK,UAAA;EACH,MAAA,SAAe,MAAA;EACf,MAAA,SAAe,MAAA;EACf,iBAAA,SAA0B,iBAAA;EAC1B,aAAA,SAAsB,aAAA;EACtB,cAAA,SAAuB,cAAA;EACvB,OAAA,SAAgB,OAAA;EAChB,aAAA,SAAsB,aAAA;EACtB,iBAAA,SAA0B,iBAAA;EAC1B,cAAA,SAAuB,cAAA;EACvB,SAAA,SAAkB,SAAA;EAClB,eAAA,SAAwB,eAAA;EACxB,mBAAA,SAA4B,mBAAA;EAC5B,GAAA,SAAY,GAAA;EACZ,UAAA,SAAmB,UAAA;AAAA;AAAA,KAGhB,UAAA;EACH,MAAA,EAAQ,OAAA;IAAU,KAAA;EAAA;IAAwB,KAAA;EAAA;EAC1C,YAAA,EAAc,OAAA,CAAQ,MAAA,oBAA0B,MAAA;AAAA;AAAA,KAG7C,oBAAA;EACC,MAAA;AAAA;EACA,MAAA;EAAuB,KAAA,EAAO,UAAU;AAAA;EACxC,MAAA;AAAA;AAAA,KA4BM,gBAAA;EACV,QAAA;EACA,cAAA,iBACc,UAAA,IAAc,UAAA,CAAW,UAAA,CAAW,CAAA;AAAA;AAAA,iBAgJ9B,uBAAA,CACpB,GAAA,EAAK,cAAA,EACL,cAAA,QAAsB,WAAA,GACrB,OAAA,CAAQ,oBAAA;AAAA,iBAiCK,qBAAA,CAAsB,KAAA,EAAO,gBAAA,GAAmB,OAAA,CAAQ,UAAA;EAAgB,QAAA;AAAA;;;KCnQnF,oBAAA,GAAuB,gBAAgB;EAAK,QAAA;AAAA;;;;EAI/C,GAAA;;;;EAKA,UAAA;;;;EAKA,MAAA;;;;EAKA,YAAA;AAAA;AAAA,iBAGO,WAAA;EAAc,GAAA;EAAK,UAAA;EAAY,MAAA;EAAQ,YAAA;EAAA,GAAiB;AAAA,GAAS,oBAAA,+BAAoB,GAAA,CAAA,OAAA;AAAA,cAKjF,eAAA,SAAe,WAAc;;cAG7B,YAAA,SAAY,WAAc;;;KC5BlC,UAAA;EACH,EAAA;EACA,WAAA;EACA,eAAA;AAAA;AAAA,KAGG,yBAAA;EACH,MAAA,IAAU,IAAA,EAAM,SAAA,gBAAyB,IAAA,UAAc,IAAA;EACvD,YAAA,GAAe,IAAA;EACf,oBAAA;EACA,SAAA,GAAY,SAAA;EACZ,SAAA;EACA,QAAA,IAAY,IAAA,EAAM,SAAA,gBAAyB,IAAA,UAAc,IAAA;EACzD,gBAAA;EAEA,QAAA;IACE,YAAA,GAAe,UAAA;EAAA;EAEjB,SAAA,GAAY,UAAA;EACZ,WAAA;IACE,MAAA;MACE,yBAAA;IAAA;EAAA;AAAA;AAAA,iBAKU,oBAAA,oCAAwD,KAAA,EAAO,yBAAyB,CAAC,SAAA,gCAAU,GAAA,CAAA,OAAA;;;KCZ9G,QAAA;EACH,EAAA;EACA,WAAA;EACA,eAAA;AAAA;AAAA,KAGG,iBAAA;EACH,IAAA,GAAO,IAAA;EACP,MAAA;EACA,KAAA,GAAQ,IAAA;EACR,SAAA,GAAY,SAAA;EACZ,SAAA;EACA,gBAAA;EACA,QAAA,IAAY,IAAA,EAAM,SAAA,gBAAyB,IAAA,UAAc,IAAA,KAAS,OAAA;EAElE,QAAA;IACE,IAAA,GAAO,QAAA;EAAA;EAET,SAAA,GAAY,QAAA;EACZ,WAAA;IACE,MAAA;MACE,yBAAA;IAAA;EAAA;AAAA;AAAA,iBAKU,YAAA,oCAAgD,KAAA,EAAO,iBAAiB,CAAC,SAAA,gCAAU,GAAA,CAAA,OAAA"}
package/dist/index.d.ts CHANGED
@@ -5,7 +5,7 @@ import { a as AdminTeamPermission, c as AdminTeamPermissionDefinitionUpdateOptio
5
5
  import { a as PlanUsageRow, i as PlanUsagePlanId, n as PlanUsageKind, r as PlanUsageNextPlanId, t as PlanUsage } from "./index-B594jg4e.js";
6
6
  import { r as OAuthConnection, t as Connection } from "./index-C_kxyHao.js";
7
7
  import { i as ServerContactChannel, t as ContactChannel } from "./index-DN04TjLM.js";
8
- import { $ as TeamCreateOptions, B as StackServerAppConstructor, D as HexclaveAdminApp, E as EmailOutboxUpdateOptions, F as StackAdminAppConstructorOptions, H as EditableTeamMemberProfile, I as HexclaveServerApp, J as ServerTeamCreateOptions, K as ServerListUsersOptions, L as HexclaveServerAppConstructor, N as StackAdminApp, O as HexclaveAdminAppConstructor, Ot as User, P as StackAdminAppConstructor, Q as Team, R as HexclaveServerAppConstructorOptions, St as ServerUser, T as EmailOutboxListResult, U as ReceivedTeamInvitation, V as StackServerAppConstructorOptions, W as SentTeamInvitation, X as ServerTeamUpdateOptions, Y as ServerTeamMemberProfile, Z as ServerTeamUser, _ as AdminProjectCreateOptions, _t as OAuthProvider, a as StackClientApp, c as StackClientAppJson, d as AdminDeploymentEnvVarOptions, et as TeamInvitation, f as AdminDeploymentRunJson, ft as CurrentInternalServerUser, g as AdminProject, h as AdminOwnedProject, ht as CurrentUser, i as HexclaveClientAppJson, it as TeamUser, k as HexclaveAdminAppConstructorOptions, l as AdminDeploymentDomainJson, m as AdminDeploymentServiceJson, mt as CurrentServerUser, n as HexclaveClientAppConstructor, o as StackClientAppConstructor, p as AdminDeploymentServiceBuildOptions, pt as CurrentInternalUser, q as ServerTeam, r as HexclaveClientAppConstructorOptions, rt as TeamUpdateOptions, s as StackClientAppConstructorOptions, t as HexclaveClientApp, tt as TeamMemberProfile, u as AdminDeploymentEnvVarJson, ut as Auth, v as AdminProjectUpdateOptions, w as EmailOutboxListOptions, x as PushedConfigSource, xt as ServerOAuthProvider, y as Project, z as StackServerApp } from "./client-app-BlA5Ptxs.js";
8
+ import { $ as TeamCreateOptions, B as StackServerAppConstructor, D as HexclaveAdminApp, E as EmailOutboxUpdateOptions, F as StackAdminAppConstructorOptions, H as EditableTeamMemberProfile, I as HexclaveServerApp, J as ServerTeamCreateOptions, K as ServerListUsersOptions, L as HexclaveServerAppConstructor, N as StackAdminApp, O as HexclaveAdminAppConstructor, Ot as User, P as StackAdminAppConstructor, Q as Team, R as HexclaveServerAppConstructorOptions, St as ServerUser, T as EmailOutboxListResult, U as ReceivedTeamInvitation, V as StackServerAppConstructorOptions, W as SentTeamInvitation, X as ServerTeamUpdateOptions, Y as ServerTeamMemberProfile, Z as ServerTeamUser, _ as AdminProjectCreateOptions, _t as OAuthProvider, a as StackClientApp, c as StackClientAppJson, d as AdminDeploymentEnvVarOptions, et as TeamInvitation, f as AdminDeploymentRunJson, ft as CurrentInternalServerUser, g as AdminProject, h as AdminOwnedProject, ht as CurrentUser, i as HexclaveClientAppJson, it as TeamUser, k as HexclaveAdminAppConstructorOptions, l as AdminDeploymentDomainJson, m as AdminDeploymentServiceJson, mt as CurrentServerUser, n as HexclaveClientAppConstructor, o as StackClientAppConstructor, p as AdminDeploymentServiceBuildOptions, pt as CurrentInternalUser, q as ServerTeam, r as HexclaveClientAppConstructorOptions, rt as TeamUpdateOptions, s as StackClientAppConstructorOptions, t as HexclaveClientApp, tt as TeamMemberProfile, u as AdminDeploymentEnvVarJson, ut as Auth, v as AdminProjectUpdateOptions, w as EmailOutboxListOptions, x as PushedConfigSource, xt as ServerOAuthProvider, y as Project, z as StackServerApp } from "./client-app-CE8FTKgO.js";
9
9
  import { a as AdminProjectConfigUpdateOptions, i as AdminProjectConfig, n as AdminEmailConfig, o as OAuthProviderConfig, r as AdminOAuthProviderConfig, s as ProjectConfig, t as AdminDomainConfig } from "./index-Dq4xsW7_.js";
10
10
  import { n as AnalyticsReplayOptions, t as AnalyticsOptions } from "./session-replay-CQ849yH1.js";
11
11
  import { r as getPagePrompt } from "./url-targets-CWO0mjTr.js";
@@ -15,9 +15,9 @@ import { i as useCliAuthConfirmation, n as CliAuthConfirmationState, r as CliAut
15
15
  import { t as EmailVerification } from "./email-verification-Cr_KKvtQ.js";
16
16
  import { t as ForgotPassword } from "./forgot-password-B7RLLsC2.js";
17
17
  import { t as PasswordReset } from "./password-reset-CxIuXeIx.js";
18
- import { a as TeamSwitcher, c as StackHandler, i as defineStackConfig, n as StackConfig, o as SelectedTeamSwitcher, r as defineHexclaveConfig, s as HexclaveHandler, t as HexclaveConfig } from "./index-DDICHT5X.js";
19
- import { n as useStackApp, r as useUser, t as useHexclaveApp } from "./hooks-4BBvIKWJ.js";
20
- import { n as HexclaveProvider, r as StackProvider } from "./hexclave-provider-Dtr9mxju.js";
18
+ import { a as TeamSwitcher, c as StackHandler, i as defineStackConfig, n as StackConfig, o as SelectedTeamSwitcher, r as defineHexclaveConfig, s as HexclaveHandler, t as HexclaveConfig } from "./index-g1JoVgIu.js";
19
+ import { n as useStackApp, r as useUser, t as useHexclaveApp } from "./hooks-BNF4UvGF.js";
20
+ import { n as HexclaveProvider, r as StackProvider } from "./hexclave-provider-Ve1QPx9k.js";
21
21
  import { n as StackTheme, t as HexclaveTheme } from "./theme-provider-D9_ngSbi.js";
22
22
  import { t as AuthPage } from "./auth-page-YnM_LtbN.js";
23
23
  import { t as SignIn } from "./sign-in-BT45jb_W.js";
@@ -1,2 +1,2 @@
1
- import { t as _HexclaveAdminAppImplIncomplete } from "../../../../admin-app-impl-C74lwnMu.js";
1
+ import { t as _HexclaveAdminAppImplIncomplete } from "../../../../admin-app-impl-DNcnEhc-.js";
2
2
  export { _HexclaveAdminAppImplIncomplete };
@@ -1,2 +1,2 @@
1
- import { r as _HexclaveClientAppImplIncomplete } from "../../../../admin-app-impl-C74lwnMu.js";
1
+ import { r as _HexclaveClientAppImplIncomplete } from "../../../../admin-app-impl-DNcnEhc-.js";
2
2
  export { _HexclaveClientAppImplIncomplete };
@@ -395,6 +395,7 @@ var _HexclaveClientAppImplIncomplete = class _HexclaveClientAppImplIncomplete {
395
395
  this._storedBrowserCookieTokenStore = null;
396
396
  this._mostRecentQueuedCookieRefreshIndex = 0;
397
397
  this._sessionsByTokenStoreAndSessionKey = /* @__PURE__ */ new WeakMap();
398
+ this._signInAttemptCounter = 0;
398
399
  const resolvedOptions = (0, __common_js.resolveConstructorOptions)(options);
399
400
  if (!_HexclaveClientAppImplIncomplete.LazyStackAdminAppImpl.value) throw new _hexclave_shared_dist_utils_errors.HexclaveAssertionError("Admin app implementation not initialized. Did you import the _HexclaveClientApp from hexclave-app/apps/implementations/index.ts? You can't import it directly from ./apps/implementations/client-app-impl.ts as that causes a circular dependency (see the comment at _LazyHexclaveAdminAppImpl for more details).");
400
401
  this._options = resolvedOptions;
@@ -1000,8 +1001,12 @@ var _HexclaveClientAppImplIncomplete = class _HexclaveClientAppImplIncomplete {
1000
1001
  const cookieHelper = (0, _________cookie_js.createBrowserCookieHelper)();
1001
1002
  return this._getOrCreateTokenStore(cookieHelper, overrideTokenStoreInit);
1002
1003
  }
1003
- _getSessionFromTokenStore(tokenStore) {
1004
- const tokenObj = tokenStore.get();
1004
+ /**
1005
+ * @param overrideTokenObj The tokens to build the session for, if they haven't been written to the token store yet
1006
+ * (so we can warm a sign-in's session before the token store publishes it).
1007
+ */
1008
+ _getSessionFromTokenStore(tokenStore, overrideTokenObj) {
1009
+ const tokenObj = overrideTokenObj ?? tokenStore.get();
1005
1010
  const sessionKey = _hexclave_shared_dist_sessions.InternalSession.calculateSessionKey(tokenObj);
1006
1011
  const existing = sessionKey ? this._sessionsByTokenStoreAndSessionKey.get(tokenStore)?.get(sessionKey) : null;
1007
1012
  if (existing) return existing;
@@ -1047,11 +1052,13 @@ var _HexclaveClientAppImplIncomplete = class _HexclaveClientAppImplIncomplete {
1047
1052
  }
1048
1053
  async _signInToAccountWithTokens(tokens) {
1049
1054
  if (!("accessToken" in tokens) || !("refreshToken" in tokens)) throw new _hexclave_shared_dist_utils_errors.HexclaveAssertionError("Invalid tokens object; can't sign in with this", { tokens });
1055
+ const attemptId = ++this._signInAttemptCounter;
1050
1056
  const tokenStore = this._getOrCreateTokenStore(await this._createCookieHelper());
1051
- tokenStore.set(tokens);
1052
- const session = this._getSessionFromTokenStore(tokenStore);
1057
+ const session = this._getSessionFromTokenStore(tokenStore, tokens);
1053
1058
  session.updateAccessToken(tokens);
1054
- (0, _hexclave_shared_dist_utils_promises.runAsynchronously)(this._currentUserCache.getOrWait([session], "write-only"));
1059
+ await _hexclave_shared_dist_utils_results.Result.fromPromise(this._currentUserCache.getOrWait([session], "write-only"));
1060
+ if (attemptId !== this._signInAttemptCounter) return;
1061
+ tokenStore.set(tokens);
1055
1062
  }
1056
1063
  _getTokenStoreInitForFreshTokens(tokens) {
1057
1064
  if (tokens.accessToken == null) return;
@@ -1192,6 +1199,12 @@ var _HexclaveClientAppImplIncomplete = class _HexclaveClientAppImplIncomplete {
1192
1199
  async listUsers() {
1193
1200
  return _hexclave_shared_dist_utils_results.Result.orThrow(await app._teamMemberProfilesCache.getOrWait([session, crud.id], "write-only")).map((crud) => app._clientTeamUserFromCrud(crud));
1194
1201
  },
1202
+ async removeUser(userId) {
1203
+ await app._interface.removeUserFromTeam(crud.id, userId, session);
1204
+ await app._teamMemberProfilesCache.refresh([session, crud.id]);
1205
+ await app._currentUserTeamsCache.refresh([session]);
1206
+ await app._currentUserCache.refresh([session]);
1207
+ },
1195
1208
  useUsers() {
1196
1209
  return (0, __common_js.useAsyncCache)(app._teamMemberProfilesCache, [session, crud.id], "team.useUsers()").map((crud) => app._clientTeamUserFromCrud(crud));
1197
1210
  },
@@ -1437,6 +1450,8 @@ var _HexclaveClientAppImplIncomplete = class _HexclaveClientAppImplIncomplete {
1437
1450
  isAnonymous: crud.is_anonymous,
1438
1451
  isRestricted: crud.is_restricted,
1439
1452
  restrictedReason: crud.restricted_reason,
1453
+ restrictedByAdmin: crud.restricted_by_admin,
1454
+ restrictedByAdminReason: crud.restricted_by_admin_reason,
1440
1455
  toClientJson() {
1441
1456
  return crud;
1442
1457
  }
@@ -1545,6 +1560,8 @@ var _HexclaveClientAppImplIncomplete = class _HexclaveClientAppImplIncomplete {
1545
1560
  },
1546
1561
  async leaveTeam(team) {
1547
1562
  await app._interface.leaveTeam(team.id, session);
1563
+ await app._currentUserTeamsCache.refresh([session]);
1564
+ await app._currentUserCache.refresh([session]);
1548
1565
  },
1549
1566
  async listTeamInvitations() {
1550
1567
  return _hexclave_shared_dist_utils_results.Result.orThrow(await app._currentUserTeamInvitationsCache.getOrWait([session], "write-only")).map((crud) => app._clientReceivedTeamInvitationFromCrud(session, crud));