@hexclave/js 1.0.103 → 1.0.105

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 (78) hide show
  1. package/dist/{admin-app-impl-ksLk70Sj.d.ts → admin-app-impl-BebuSYtn.d.ts} +14 -14
  2. package/dist/{admin-app-impl-ksLk70Sj.d.ts.map → admin-app-impl-BebuSYtn.d.ts.map} +1 -1
  3. package/dist/clickmap/clickmap-core.d.ts +1 -1
  4. package/dist/clickmap/index.d.ts +1 -1
  5. package/dist/{client-app-CdAaCL3p.d.ts → client-app-Cri37vaC.d.ts} +10 -10
  6. package/dist/client-app-Cri37vaC.d.ts.map +1 -0
  7. package/dist/dev-tool/dev-tool-core.d.ts +1 -1
  8. package/dist/dev-tool/index.d.ts +1 -1
  9. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +2 -12
  10. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
  11. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js +0 -87
  12. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -1
  13. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js +22 -2
  14. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -1
  15. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -1
  16. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js +1 -1
  17. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
  18. package/dist/esm/lib/hexclave-app/apps/implementations/common.js +2 -2
  19. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.d.ts +1 -1
  20. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.d.ts.map +1 -1
  21. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.js +1 -1
  22. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.js.map +1 -1
  23. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.test.js +21 -1
  24. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.test.js.map +1 -1
  25. package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.d.ts +10 -0
  26. package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.d.ts.map +1 -1
  27. package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.js +87 -0
  28. package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.js.map +1 -1
  29. package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.d.ts +1 -11
  30. package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.d.ts.map +1 -1
  31. package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.js.map +1 -1
  32. package/dist/esm/lib/hexclave-app/apps/interfaces/server-app.d.ts +11 -1
  33. package/dist/esm/lib/hexclave-app/apps/interfaces/server-app.d.ts.map +1 -1
  34. package/dist/esm/lib/hexclave-app/apps/interfaces/server-app.js.map +1 -1
  35. package/dist/esm/lib/hexclave-app/index.d.ts +2 -1
  36. package/dist/index.d.ts +3 -2
  37. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +1 -1
  38. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js +0 -87
  39. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -1
  40. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js +22 -2
  41. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -1
  42. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts +1 -1
  43. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js +1 -1
  44. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
  45. package/dist/lib/hexclave-app/apps/implementations/common.js +2 -2
  46. package/dist/lib/hexclave-app/apps/implementations/index.d.ts +1 -1
  47. package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.d.ts +1 -1
  48. package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.js +1 -1
  49. package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.js.map +1 -1
  50. package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.test.js +21 -1
  51. package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.test.js.map +1 -1
  52. package/dist/lib/hexclave-app/apps/implementations/server-app-impl.d.ts +1 -1
  53. package/dist/lib/hexclave-app/apps/implementations/server-app-impl.js +87 -0
  54. package/dist/lib/hexclave-app/apps/implementations/server-app-impl.js.map +1 -1
  55. package/dist/lib/hexclave-app/apps/index.d.ts +1 -1
  56. package/dist/lib/hexclave-app/apps/interfaces/admin-app.d.ts +2 -3
  57. package/dist/lib/hexclave-app/apps/interfaces/admin-app.js.map +1 -1
  58. package/dist/lib/hexclave-app/apps/interfaces/client-app.d.ts +1 -1
  59. package/dist/lib/hexclave-app/apps/interfaces/server-app.d.ts +3 -2
  60. package/dist/lib/hexclave-app/apps/interfaces/server-app.js.map +1 -1
  61. package/dist/lib/hexclave-app/index.d.ts +3 -2
  62. package/dist/lib/hexclave-app/projects/index.d.ts +1 -1
  63. package/dist/lib/hexclave-app/teams/index.d.ts +1 -1
  64. package/dist/lib/hexclave-app/users/index.d.ts +1 -1
  65. package/dist/pushed-config-error-overlay/index.d.ts +1 -1
  66. package/dist/{redirect-page-urls-Cu5BRQwm.d.ts → redirect-page-urls-BLceehT4.d.ts} +2 -2
  67. package/dist/{redirect-page-urls-Cu5BRQwm.d.ts.map → redirect-page-urls-BLceehT4.d.ts.map} +1 -1
  68. package/package.json +2 -2
  69. package/src/lib/hexclave-app/apps/implementations/admin-app-impl.ts +0 -100
  70. package/src/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.ts +31 -2
  71. package/src/lib/hexclave-app/apps/implementations/client-app-impl.ts +3 -1
  72. package/src/lib/hexclave-app/apps/implementations/redirect-page-urls.test.ts +24 -1
  73. package/src/lib/hexclave-app/apps/implementations/redirect-page-urls.ts +2 -2
  74. package/src/lib/hexclave-app/apps/implementations/server-app-impl.ts +100 -0
  75. package/src/lib/hexclave-app/apps/interfaces/admin-app.ts +0 -9
  76. package/src/lib/hexclave-app/apps/interfaces/server-app.ts +11 -0
  77. package/src/lib/hexclave-app/index.ts +10 -0
  78. package/dist/client-app-CdAaCL3p.d.ts.map +0 -1
@@ -1,2 +1,3 @@
1
- import { B as StackServerAppConstructor, I as HexclaveServerApp, L as HexclaveServerAppConstructor, R as HexclaveServerAppConstructorOptions, V as StackServerAppConstructorOptions, z as StackServerApp } from "../../../../client-app-CdAaCL3p.js";
2
- export { HexclaveServerApp, HexclaveServerAppConstructor, HexclaveServerAppConstructorOptions, StackServerApp, StackServerAppConstructor, StackServerAppConstructorOptions };
1
+ import { B as StackServerAppConstructor, I as HexclaveServerApp, L as HexclaveServerAppConstructor, R as HexclaveServerAppConstructorOptions, V as StackServerAppConstructorOptions, z as StackServerApp } from "../../../../client-app-Cri37vaC.js";
2
+ import { a as ListSessionReplaysOptions, i as ListSessionReplayChunksResult, n as AdminSessionReplayChunk, o as ListSessionReplaysResult, r as ListSessionReplayChunksOptions, s as SessionReplayAllEventsResult, t as AdminSessionReplay } from "../../../../index-Cf1wOohp.js";
3
+ export { type AdminSessionReplay, type AdminSessionReplayChunk, HexclaveServerApp, HexclaveServerAppConstructor, HexclaveServerAppConstructorOptions, type ListSessionReplayChunksOptions, type ListSessionReplayChunksResult, type ListSessionReplaysOptions, type ListSessionReplaysResult, type SessionReplayAllEventsResult, StackServerApp, StackServerAppConstructor, StackServerAppConstructorOptions };
@@ -1 +1 @@
1
- {"version":3,"file":"server-app.js","names":["_HexclaveServerAppImpl"],"sources":["../../../../../src/lib/hexclave-app/apps/interfaces/server-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 { Result } from \"@hexclave/shared/dist/utils/results\";\nimport type { GenericQueryCtx } from \"convex/server\";\nimport type { AnalyticsQueryOptions, AnalyticsQueryResponse } from \"@hexclave/shared/dist/interface/crud/analytics\";\nimport { AsyncStoreProperty, GetCurrentPartialUserOptions, GetCurrentUserOptions } from \"../../common\";\nimport { CustomerProductsList, CustomerProductsRequestOptions, InlineProduct, ServerItem } from \"../../customers\";\nimport { DataVaultStore } from \"../../data-vault\";\nimport { EmailDeliveryInfo, SendEmailOptions } from \"../../email\";\nimport { ServerListTeamsOptions, ServerListUsersOptions, ServerTeam, ServerTeamCreateOptions } from \"../../teams\";\nimport { ProjectCurrentServerUser, ServerOAuthProvider, ServerUser, ServerUserCreateOptions, SyncedPartialServerUser, TokenPartialUser } from \"../../users\";\nimport { _HexclaveServerAppImpl } from \"../implementations\";\nimport { StackClientApp, StackClientAppConstructorOptions } from \"./client-app\";\n\n\n/** @deprecated Use `HexclaveServerAppConstructorOptions` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport type StackServerAppConstructorOptions<HasTokenStore extends boolean, ProjectId extends string> = StackClientAppConstructorOptions<HasTokenStore, ProjectId> & {\n secretServerKey?: string,\n};\n\n/** @deprecated Use `HexclaveServerApp` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport type StackServerApp<HasTokenStore extends boolean = boolean, ProjectId extends string = string> = (\n & {\n createTeam(data: ServerTeamCreateOptions): Promise<ServerTeam>,\n /**\n * @deprecated use `getUser()` instead\n */\n getServerUser(): Promise<ProjectCurrentServerUser<ProjectId> | null>,\n\n createUser(options: ServerUserCreateOptions): Promise<ServerUser>,\n grantProduct(options: (\n ({ userId: string } | { teamId: string } | { customCustomerId: string }) &\n ({ productId: string } | { product: InlineProduct }) &\n { quantity?: number }\n )): Promise<void>,\n createCheckoutUrl(options: (\n ({ userId: string } | { teamId: string } | { customCustomerId: string }) &\n ({ productId: string } | { product: InlineProduct }) &\n { returnUrl?: string }\n )): Promise<string>,\n\n\n getUser(options: GetCurrentUserOptions<HasTokenStore> & { or: 'redirect' }): Promise<ProjectCurrentServerUser<ProjectId>>,\n getUser(options: GetCurrentUserOptions<HasTokenStore> & { or: 'throw' }): Promise<ProjectCurrentServerUser<ProjectId>>,\n getUser(options: GetCurrentUserOptions<HasTokenStore> & { or: 'anonymous' }): Promise<ProjectCurrentServerUser<ProjectId>>,\n getUser(options?: GetCurrentUserOptions<HasTokenStore>): Promise<ProjectCurrentServerUser<ProjectId> | null>,\n getUser(id: string): Promise<ServerUser | null>,\n getUser(options: { apiKey: string, or?: \"return-null\" | \"anonymous\" }): Promise<ServerUser | null>,\n getUser(options: { from: \"convex\", ctx: GenericQueryCtx<any>, or?: \"return-null\" | \"anonymous\" }): Promise<ServerUser | null>,\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<SyncedPartialServerUser | TokenPartialUser | null>,\n getTeam(id: string): Promise<ServerTeam | null>,\n getTeam(options: { apiKey: string }): Promise<ServerTeam | null>,\n\n\n listUsers(options?: ServerListUsersOptions): Promise<ServerUser[] & { nextCursor: string | null }>,\n\n /**\n * Returns every direct (or recursive) team permission grant for every\n * member of the given team in one request. Use this instead of calling\n * `user.listPermissions(team)` per row when rendering a roster — that\n * pattern produces an N+1 over the team-member endpoint.\n */\n listTeamMemberPermissions(teamId: string, options?: { recursive?: boolean }): Promise<{ userId: string, permissionId: string }[]>,\n\n // TODO this should actually be on ServerUser\n createOAuthProvider(options: {\n userId: string,\n accountId: string,\n providerConfigId: string,\n email: string,\n allowSignIn: boolean,\n allowConnectedAccounts: boolean,\n }): Promise<Result<ServerOAuthProvider, InstanceType<typeof KnownErrors.OAuthProviderAccountIdAlreadyUsedForSignIn>>>,\n\n sendEmail(options: SendEmailOptions): Promise<void>,\n\n getEmailDeliveryStats(): Promise<EmailDeliveryInfo>,\n\n activateEmailCapacityBoost(): Promise<void>,\n\n queryAnalytics(options: AnalyticsQueryOptions): Promise<AnalyticsQueryResponse>,\n }\n & AsyncStoreProperty<\"user\", [id: string], ServerUser | null, false>\n & Omit<AsyncStoreProperty<\"users\", [], ServerUser[], true>, \"listUsers\" | \"useUsers\">\n & AsyncStoreProperty<\"teams\", [options?: ServerListTeamsOptions], ServerTeam[] & { nextCursor: string | null }, true>\n & AsyncStoreProperty<\"dataVaultStore\", [id: string], DataVaultStore, false>\n & AsyncStoreProperty<\n \"item\",\n [{ itemId: string, userId: string } | { itemId: string, teamId: string } | { itemId: string, customCustomerId: string }],\n ServerItem,\n false\n >\n & AsyncStoreProperty<\n \"products\",\n [options: CustomerProductsRequestOptions],\n CustomerProductsList,\n true\n >\n & StackClientApp<HasTokenStore, ProjectId>\n);\n/** @deprecated Use `HexclaveServerAppConstructor` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport type StackServerAppConstructor = {\n new <\n TokenStoreType extends string,\n HasTokenStore extends (TokenStoreType extends {} ? true : boolean),\n ProjectId extends string\n >(options: StackServerAppConstructorOptions<HasTokenStore, ProjectId>): StackServerApp<HasTokenStore, ProjectId>,\n new (options: StackServerAppConstructorOptions<boolean, string>): StackServerApp<boolean, string>,\n};\nexport type HexclaveServerAppConstructorOptions<HasTokenStore extends boolean, ProjectId extends string> = StackServerAppConstructorOptions<HasTokenStore, ProjectId>;\nexport type HexclaveServerApp<HasTokenStore extends boolean = boolean, ProjectId extends string = string> = StackServerApp<HasTokenStore, ProjectId>;\nexport type HexclaveServerAppConstructor = StackServerAppConstructor;\nexport const HexclaveServerApp: HexclaveServerAppConstructor = _HexclaveServerAppImpl;\n/** @deprecated Use `HexclaveServerApp` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport const StackServerApp: StackServerAppConstructor = HexclaveServerApp;\n"],"mappings":";;AAuHA,MAAa,yDAAkDA,CAAAA,CAAAA;;AAE/D,MAAa,iBAA4C"}
1
+ {"version":3,"file":"server-app.js","names":["_HexclaveServerAppImpl"],"sources":["../../../../../src/lib/hexclave-app/apps/interfaces/server-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 { Result } from \"@hexclave/shared/dist/utils/results\";\nimport type { GenericQueryCtx } from \"convex/server\";\nimport type { AnalyticsQueryOptions, AnalyticsQueryResponse } from \"@hexclave/shared/dist/interface/crud/analytics\";\nimport type { AdminGetSessionReplayChunkEventsResponse } from \"@hexclave/shared/dist/interface/crud/session-replays\";\nimport { AsyncStoreProperty, GetCurrentPartialUserOptions, GetCurrentUserOptions } from \"../../common\";\nimport { CustomerProductsList, CustomerProductsRequestOptions, InlineProduct, ServerItem } from \"../../customers\";\nimport { DataVaultStore } from \"../../data-vault\";\nimport { EmailDeliveryInfo, SendEmailOptions } from \"../../email\";\nimport { ServerListTeamsOptions, ServerListUsersOptions, ServerTeam, ServerTeamCreateOptions } from \"../../teams\";\nimport type { AdminSessionReplay, ListSessionReplayChunksOptions, ListSessionReplayChunksResult, ListSessionReplaysOptions, ListSessionReplaysResult, SessionReplayAllEventsResult } from \"../../session-replays\";\nimport { ProjectCurrentServerUser, ServerOAuthProvider, ServerUser, ServerUserCreateOptions, SyncedPartialServerUser, TokenPartialUser } from \"../../users\";\nimport { _HexclaveServerAppImpl } from \"../implementations\";\nimport { StackClientApp, StackClientAppConstructorOptions } from \"./client-app\";\n\n\nexport type { AdminSessionReplay, AdminSessionReplayChunk, ListSessionReplaysOptions, ListSessionReplaysResult, ListSessionReplayChunksOptions, ListSessionReplayChunksResult, SessionReplayAllEventsResult } from \"../../session-replays\";\n\n\n/** @deprecated Use `HexclaveServerAppConstructorOptions` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport type StackServerAppConstructorOptions<HasTokenStore extends boolean, ProjectId extends string> = StackClientAppConstructorOptions<HasTokenStore, ProjectId> & {\n secretServerKey?: string,\n};\n\n/** @deprecated Use `HexclaveServerApp` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport type StackServerApp<HasTokenStore extends boolean = boolean, ProjectId extends string = string> = (\n & {\n createTeam(data: ServerTeamCreateOptions): Promise<ServerTeam>,\n /**\n * @deprecated use `getUser()` instead\n */\n getServerUser(): Promise<ProjectCurrentServerUser<ProjectId> | null>,\n\n createUser(options: ServerUserCreateOptions): Promise<ServerUser>,\n grantProduct(options: (\n ({ userId: string } | { teamId: string } | { customCustomerId: string }) &\n ({ productId: string } | { product: InlineProduct }) &\n { quantity?: number }\n )): Promise<void>,\n createCheckoutUrl(options: (\n ({ userId: string } | { teamId: string } | { customCustomerId: string }) &\n ({ productId: string } | { product: InlineProduct }) &\n { returnUrl?: string }\n )): Promise<string>,\n\n\n getUser(options: GetCurrentUserOptions<HasTokenStore> & { or: 'redirect' }): Promise<ProjectCurrentServerUser<ProjectId>>,\n getUser(options: GetCurrentUserOptions<HasTokenStore> & { or: 'throw' }): Promise<ProjectCurrentServerUser<ProjectId>>,\n getUser(options: GetCurrentUserOptions<HasTokenStore> & { or: 'anonymous' }): Promise<ProjectCurrentServerUser<ProjectId>>,\n getUser(options?: GetCurrentUserOptions<HasTokenStore>): Promise<ProjectCurrentServerUser<ProjectId> | null>,\n getUser(id: string): Promise<ServerUser | null>,\n getUser(options: { apiKey: string, or?: \"return-null\" | \"anonymous\" }): Promise<ServerUser | null>,\n getUser(options: { from: \"convex\", ctx: GenericQueryCtx<any>, or?: \"return-null\" | \"anonymous\" }): Promise<ServerUser | null>,\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<SyncedPartialServerUser | TokenPartialUser | null>,\n getTeam(id: string): Promise<ServerTeam | null>,\n getTeam(options: { apiKey: string }): Promise<ServerTeam | null>,\n\n\n listUsers(options?: ServerListUsersOptions): Promise<ServerUser[] & { nextCursor: string | null }>,\n\n /**\n * Returns every direct (or recursive) team permission grant for every\n * member of the given team in one request. Use this instead of calling\n * `user.listPermissions(team)` per row when rendering a roster — that\n * pattern produces an N+1 over the team-member endpoint.\n */\n listTeamMemberPermissions(teamId: string, options?: { recursive?: boolean }): Promise<{ userId: string, permissionId: string }[]>,\n\n // TODO this should actually be on ServerUser\n createOAuthProvider(options: {\n userId: string,\n accountId: string,\n providerConfigId: string,\n email: string,\n allowSignIn: boolean,\n allowConnectedAccounts: boolean,\n }): Promise<Result<ServerOAuthProvider, InstanceType<typeof KnownErrors.OAuthProviderAccountIdAlreadyUsedForSignIn>>>,\n\n sendEmail(options: SendEmailOptions): Promise<void>,\n\n getEmailDeliveryStats(): Promise<EmailDeliveryInfo>,\n\n activateEmailCapacityBoost(): Promise<void>,\n\n queryAnalytics(options: AnalyticsQueryOptions): Promise<AnalyticsQueryResponse>,\n\n listSessionReplays(options?: ListSessionReplaysOptions): Promise<ListSessionReplaysResult>,\n getSessionReplay(sessionReplayId: string): Promise<AdminSessionReplay>,\n listSessionReplayChunks(sessionReplayId: string, options?: ListSessionReplayChunksOptions): Promise<ListSessionReplayChunksResult>,\n getSessionReplayChunkEvents(sessionReplayId: string, chunkId: string): Promise<AdminGetSessionReplayChunkEventsResponse>,\n getSessionReplayEvents(sessionReplayId: string, options?: { offset?: number, limit?: number }): Promise<SessionReplayAllEventsResult>,\n }\n & AsyncStoreProperty<\"user\", [id: string], ServerUser | null, false>\n & Omit<AsyncStoreProperty<\"users\", [], ServerUser[], true>, \"listUsers\" | \"useUsers\">\n & AsyncStoreProperty<\"teams\", [options?: ServerListTeamsOptions], ServerTeam[] & { nextCursor: string | null }, true>\n & AsyncStoreProperty<\"dataVaultStore\", [id: string], DataVaultStore, false>\n & AsyncStoreProperty<\n \"item\",\n [{ itemId: string, userId: string } | { itemId: string, teamId: string } | { itemId: string, customCustomerId: string }],\n ServerItem,\n false\n >\n & AsyncStoreProperty<\n \"products\",\n [options: CustomerProductsRequestOptions],\n CustomerProductsList,\n true\n >\n & StackClientApp<HasTokenStore, ProjectId>\n);\n/** @deprecated Use `HexclaveServerAppConstructor` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport type StackServerAppConstructor = {\n new <\n TokenStoreType extends string,\n HasTokenStore extends (TokenStoreType extends {} ? true : boolean),\n ProjectId extends string\n >(options: StackServerAppConstructorOptions<HasTokenStore, ProjectId>): StackServerApp<HasTokenStore, ProjectId>,\n new (options: StackServerAppConstructorOptions<boolean, string>): StackServerApp<boolean, string>,\n};\nexport type HexclaveServerAppConstructorOptions<HasTokenStore extends boolean, ProjectId extends string> = StackServerAppConstructorOptions<HasTokenStore, ProjectId>;\nexport type HexclaveServerApp<HasTokenStore extends boolean = boolean, ProjectId extends string = string> = StackServerApp<HasTokenStore, ProjectId>;\nexport type HexclaveServerAppConstructor = StackServerAppConstructor;\nexport const HexclaveServerApp: HexclaveServerAppConstructor = _HexclaveServerAppImpl;\n/** @deprecated Use `HexclaveServerApp` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */\nexport const StackServerApp: StackServerAppConstructor = HexclaveServerApp;\n"],"mappings":";;AAkIA,MAAa,yDAAkDA,CAAAA,CAAAA;;AAE/D,MAAa,iBAA4C"}
@@ -6,7 +6,8 @@ import { a as PlanUsageRow, i as PlanUsagePlanId, n as PlanUsageKind, r as PlanU
6
6
  import { a as AdminWorkflowRunState, c as AdminWorkflowStepAttempt, d as AdminWorkflowUpgradeResult, f as AdminWorkflowVersion, i as AdminWorkflowRunDetails, l as AdminWorkflowSyncResult, n as AdminWorkflowDivergenceDiagnostic, o as AdminWorkflowRunsFilter, r as AdminWorkflowRun, s as AdminWorkflowStep, t as AdminWorkflow, u as AdminWorkflowTrigger } from "../../workflows-2-MBWbGl.js";
7
7
  import { r as OAuthConnection, t as Connection } from "../../index-ClBTM-St.js";
8
8
  import { i as ServerContactChannel, t as ContactChannel } from "../../index-DN04TjLM.js";
9
- 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 AdminProjectSecretJson, _t as OAuthProvider, a as StackClientApp, c as StackClientAppJson, d as AdminDeploymentJson, et as TeamInvitation, f as AdminDeploymentServiceJson, ft as CurrentInternalServerUser, g as AdminProjectCreateOptions, h as AdminProject, ht as CurrentUser, i as HexclaveClientAppJson, it as TeamUser, k as HexclaveAdminAppConstructorOptions, l as AdminDeploymentDomainJson, m as AdminOwnedProject, mt as CurrentServerUser, n as HexclaveClientAppConstructor, o as StackClientAppConstructor, p as AdminDeploymentServiceOutcomeJson, 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-CdAaCL3p.js";
9
+ 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 AdminProjectSecretJson, _t as OAuthProvider, a as StackClientApp, c as StackClientAppJson, d as AdminDeploymentJson, et as TeamInvitation, f as AdminDeploymentServiceJson, ft as CurrentInternalServerUser, g as AdminProjectCreateOptions, h as AdminProject, ht as CurrentUser, i as HexclaveClientAppJson, it as TeamUser, k as HexclaveAdminAppConstructorOptions, l as AdminDeploymentDomainJson, m as AdminOwnedProject, mt as CurrentServerUser, n as HexclaveClientAppConstructor, o as StackClientAppConstructor, p as AdminDeploymentServiceOutcomeJson, 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-Cri37vaC.js";
10
+ import { a as ListSessionReplaysOptions, i as ListSessionReplayChunksResult, n as AdminSessionReplayChunk, o as ListSessionReplaysResult, r as ListSessionReplayChunksOptions, s as SessionReplayAllEventsResult, t as AdminSessionReplay } from "../../index-Cf1wOohp.js";
10
11
  import { a as AdminProjectConfigUpdateOptions, i as AdminProjectConfig, n as AdminEmailConfig, o as OAuthProviderConfig, r as AdminOAuthProviderConfig, s as ProjectConfig, t as AdminDomainConfig } from "../../index-B-MazpM_.js";
11
12
  import { r as getPagePrompt } from "../../url-targets-BJgkwPGW.js";
12
- export { type AdminDeploymentDomainJson, type AdminDeploymentEnvVarJson, type AdminDeploymentJson, type AdminDeploymentServiceJson, type AdminDeploymentServiceOutcomeJson, type AdminDomainConfig, type AdminEmailConfig, type AdminEmailOutbox, type AdminEmailOutboxRecipient, type AdminEmailOutboxSimpleStatus, type AdminEmailOutboxStatus, type AdminOAuthProviderConfig, type AdminOwnedProject, type AdminProject, type AdminProjectConfig, type AdminProjectConfigUpdateOptions, type AdminProjectCreateOptions, type AdminProjectPermission, type AdminProjectPermissionDefinition, type AdminProjectPermissionDefinitionCreateOptions, type AdminProjectPermissionDefinitionUpdateOptions, type AdminProjectSecretJson, type AdminProjectUpdateOptions, type AdminSendAttemptError, type AdminSentEmail, type AdminTeamPermission, type AdminTeamPermissionDefinition, type AdminTeamPermissionDefinitionCreateOptions, type AdminTeamPermissionDefinitionUpdateOptions, type AdminWorkflow, type AdminWorkflowDivergenceDiagnostic, type AdminWorkflowRun, type AdminWorkflowRunDetails, type AdminWorkflowRunState, type AdminWorkflowRunsFilter, type AdminWorkflowStep, type AdminWorkflowStepAttempt, type AdminWorkflowSyncResult, type AdminWorkflowTrigger, type AdminWorkflowUpgradeResult, type AdminWorkflowVersion, type Auth, type Connection, type ContactChannel, type CurrentInternalServerUser, type CurrentInternalUser, type CurrentServerUser, type CurrentUser, type EditableTeamMemberProfile, type EmailOutboxListOptions, type EmailOutboxListResult, type EmailOutboxUpdateOptions, type GetCurrentUserOptions, type GetCurrentUserOptions as GetUserOptions, type HandlerUrlOptions, type HandlerUrls, HexclaveAdminApp, type HexclaveAdminAppConstructor, type HexclaveAdminAppConstructorOptions, HexclaveClientApp, type HexclaveClientAppConstructor, type HexclaveClientAppConstructorOptions, type HexclaveClientAppJson, HexclaveServerApp, type HexclaveServerAppConstructor, type HexclaveServerAppConstructorOptions, type InternalApiKey, type InternalApiKeyBase, type InternalApiKeyBaseCrudRead, type InternalApiKeyCreateOptions, type InternalApiKeyFirstView, type OAuthConnection, type OAuthProvider, type OAuthProviderConfig, type OAuthScopesOnSignIn, type PlanUsage, type PlanUsageKind, type PlanUsageNextPlanId, type PlanUsagePlanId, type PlanUsageRow, type Project, type ProjectConfig, type PushedConfigSource, type ReceivedTeamInvitation, type ResolvedHandlerUrls, type SentTeamInvitation, type ServerContactChannel, type ServerListUsersOptions, type ServerOAuthProvider, type ServerTeam, type ServerTeamCreateOptions, type ServerTeamMemberProfile, type ServerTeamUpdateOptions, type ServerTeamUser, type ServerUser, StackAdminApp, type StackAdminAppConstructor, type StackAdminAppConstructorOptions, StackClientApp, type StackClientAppConstructor, type StackClientAppConstructorOptions, type StackClientAppJson, StackServerApp, type StackServerAppConstructor, type StackServerAppConstructorOptions, type Team, type TeamCreateOptions, type TeamInvitation, type TeamMemberProfile, type TeamUpdateOptions, type TeamUser, type User, getPagePrompt, hexclaveAppInternalsSymbol };
13
+ export { type AdminDeploymentDomainJson, type AdminDeploymentEnvVarJson, type AdminDeploymentJson, type AdminDeploymentServiceJson, type AdminDeploymentServiceOutcomeJson, type AdminDomainConfig, type AdminEmailConfig, type AdminEmailOutbox, type AdminEmailOutboxRecipient, type AdminEmailOutboxSimpleStatus, type AdminEmailOutboxStatus, type AdminOAuthProviderConfig, type AdminOwnedProject, type AdminProject, type AdminProjectConfig, type AdminProjectConfigUpdateOptions, type AdminProjectCreateOptions, type AdminProjectPermission, type AdminProjectPermissionDefinition, type AdminProjectPermissionDefinitionCreateOptions, type AdminProjectPermissionDefinitionUpdateOptions, type AdminProjectSecretJson, type AdminProjectUpdateOptions, type AdminSendAttemptError, type AdminSentEmail, type AdminSessionReplay, type AdminSessionReplayChunk, type AdminTeamPermission, type AdminTeamPermissionDefinition, type AdminTeamPermissionDefinitionCreateOptions, type AdminTeamPermissionDefinitionUpdateOptions, type AdminWorkflow, type AdminWorkflowDivergenceDiagnostic, type AdminWorkflowRun, type AdminWorkflowRunDetails, type AdminWorkflowRunState, type AdminWorkflowRunsFilter, type AdminWorkflowStep, type AdminWorkflowStepAttempt, type AdminWorkflowSyncResult, type AdminWorkflowTrigger, type AdminWorkflowUpgradeResult, type AdminWorkflowVersion, type Auth, type Connection, type ContactChannel, type CurrentInternalServerUser, type CurrentInternalUser, type CurrentServerUser, type CurrentUser, type EditableTeamMemberProfile, type EmailOutboxListOptions, type EmailOutboxListResult, type EmailOutboxUpdateOptions, type GetCurrentUserOptions, type GetCurrentUserOptions as GetUserOptions, type HandlerUrlOptions, type HandlerUrls, HexclaveAdminApp, type HexclaveAdminAppConstructor, type HexclaveAdminAppConstructorOptions, HexclaveClientApp, type HexclaveClientAppConstructor, type HexclaveClientAppConstructorOptions, type HexclaveClientAppJson, HexclaveServerApp, type HexclaveServerAppConstructor, type HexclaveServerAppConstructorOptions, type InternalApiKey, type InternalApiKeyBase, type InternalApiKeyBaseCrudRead, type InternalApiKeyCreateOptions, type InternalApiKeyFirstView, type ListSessionReplayChunksOptions, type ListSessionReplayChunksResult, type ListSessionReplaysOptions, type ListSessionReplaysResult, type OAuthConnection, type OAuthProvider, type OAuthProviderConfig, type OAuthScopesOnSignIn, type PlanUsage, type PlanUsageKind, type PlanUsageNextPlanId, type PlanUsagePlanId, type PlanUsageRow, type Project, type ProjectConfig, type PushedConfigSource, type ReceivedTeamInvitation, type ResolvedHandlerUrls, type SentTeamInvitation, type ServerContactChannel, type ServerListUsersOptions, type ServerOAuthProvider, type ServerTeam, type ServerTeamCreateOptions, type ServerTeamMemberProfile, type ServerTeamUpdateOptions, type ServerTeamUser, type ServerUser, type SessionReplayAllEventsResult, StackAdminApp, type StackAdminAppConstructor, type StackAdminAppConstructorOptions, StackClientApp, type StackClientAppConstructor, type StackClientAppConstructorOptions, type StackClientAppJson, StackServerApp, type StackServerAppConstructor, type StackServerAppConstructorOptions, type Team, type TeamCreateOptions, type TeamInvitation, type TeamMemberProfile, type TeamUpdateOptions, type TeamUser, type User, getPagePrompt, hexclaveAppInternalsSymbol };
@@ -1,2 +1,2 @@
1
- import { C as adminProjectUpdateOptionsToCrud, S as adminProjectCreateOptionsToCrud, _ as AdminProjectSecretJson, b as PushConfigOptions, d as AdminDeploymentJson, f as AdminDeploymentServiceJson, g as AdminProjectCreateOptions, h as AdminProject, l as AdminDeploymentDomainJson, m as AdminOwnedProject, p as AdminDeploymentServiceOutcomeJson, u as AdminDeploymentEnvVarJson, v as AdminProjectUpdateOptions, x as PushedConfigSource, y as Project } from "../../../client-app-CdAaCL3p.js";
1
+ import { C as adminProjectUpdateOptionsToCrud, S as adminProjectCreateOptionsToCrud, _ as AdminProjectSecretJson, b as PushConfigOptions, d as AdminDeploymentJson, f as AdminDeploymentServiceJson, g as AdminProjectCreateOptions, h as AdminProject, l as AdminDeploymentDomainJson, m as AdminOwnedProject, p as AdminDeploymentServiceOutcomeJson, u as AdminDeploymentEnvVarJson, v as AdminProjectUpdateOptions, x as PushedConfigSource, y as Project } from "../../../client-app-Cri37vaC.js";
2
2
  export { type AdminDeploymentDomainJson, type AdminDeploymentEnvVarJson, type AdminDeploymentJson, type AdminDeploymentServiceJson, type AdminDeploymentServiceOutcomeJson, AdminOwnedProject, AdminProject, AdminProjectCreateOptions, type AdminProjectSecretJson, AdminProjectUpdateOptions, Project, PushConfigOptions, PushedConfigSource, adminProjectCreateOptionsToCrud, adminProjectUpdateOptionsToCrud };
@@ -1,2 +1,2 @@
1
- import { $ as TeamCreateOptions, G as ServerListTeamsOptions, H as EditableTeamMemberProfile, J as ServerTeamCreateOptions, K as ServerListUsersOptions, Q as Team, U as ReceivedTeamInvitation, W as SentTeamInvitation, X as ServerTeamUpdateOptions, Y as ServerTeamMemberProfile, Z as ServerTeamUser, at as serverTeamCreateOptionsToCrud, ct as teamUpdateOptionsToCrud, et as TeamInvitation, it as TeamUser, nt as TeamMemberProfileUpdateOptions, ot as serverTeamUpdateOptionsToCrud, q as ServerTeam, rt as TeamUpdateOptions, st as teamCreateOptionsToCrud, tt as TeamMemberProfile } from "../../../client-app-CdAaCL3p.js";
1
+ import { $ as TeamCreateOptions, G as ServerListTeamsOptions, H as EditableTeamMemberProfile, J as ServerTeamCreateOptions, K as ServerListUsersOptions, Q as Team, U as ReceivedTeamInvitation, W as SentTeamInvitation, X as ServerTeamUpdateOptions, Y as ServerTeamMemberProfile, Z as ServerTeamUser, at as serverTeamCreateOptionsToCrud, ct as teamUpdateOptionsToCrud, et as TeamInvitation, it as TeamUser, nt as TeamMemberProfileUpdateOptions, ot as serverTeamUpdateOptionsToCrud, q as ServerTeam, rt as TeamUpdateOptions, st as teamCreateOptionsToCrud, tt as TeamMemberProfile } from "../../../client-app-Cri37vaC.js";
2
2
  export { EditableTeamMemberProfile, ReceivedTeamInvitation, SentTeamInvitation, ServerListTeamsOptions, ServerListUsersOptions, ServerTeam, ServerTeamCreateOptions, ServerTeamMemberProfile, ServerTeamUpdateOptions, ServerTeamUser, Team, TeamCreateOptions, TeamInvitation, TeamMemberProfile, TeamMemberProfileUpdateOptions, TeamUpdateOptions, TeamUser, serverTeamCreateOptionsToCrud, serverTeamUpdateOptionsToCrud, teamCreateOptionsToCrud, teamUpdateOptionsToCrud };
@@ -1,2 +1,2 @@
1
- import { At as UserUpdateOptions, Ct as ServerUserCreateOptions, Dt as TokenPartialUser, Et as SyncedPartialUser, Mt as serverUserUpdateOptionsToCrud, Nt as userUpdateOptionsToCrud, Ot as User, Pt as withUserDestructureGuard, St as ServerUser, Tt as SyncedPartialServerUser, _t as OAuthProvider, bt as ServerBaseUser, dt as BaseUser, ft as CurrentInternalServerUser, gt as InternalUserExtra, ht as CurrentUser, jt as serverUserCreateOptionsToCrud, kt as UserExtra, lt as ActiveSession, mt as CurrentServerUser, pt as CurrentInternalUser, ut as Auth, vt as ProjectCurrentServerUser, wt as ServerUserUpdateOptions, xt as ServerOAuthProvider, yt as ProjectCurrentUser } from "../../../client-app-CdAaCL3p.js";
1
+ import { At as UserUpdateOptions, Ct as ServerUserCreateOptions, Dt as TokenPartialUser, Et as SyncedPartialUser, Mt as serverUserUpdateOptionsToCrud, Nt as userUpdateOptionsToCrud, Ot as User, Pt as withUserDestructureGuard, St as ServerUser, Tt as SyncedPartialServerUser, _t as OAuthProvider, bt as ServerBaseUser, dt as BaseUser, ft as CurrentInternalServerUser, gt as InternalUserExtra, ht as CurrentUser, jt as serverUserCreateOptionsToCrud, kt as UserExtra, lt as ActiveSession, mt as CurrentServerUser, pt as CurrentInternalUser, ut as Auth, vt as ProjectCurrentServerUser, wt as ServerUserUpdateOptions, xt as ServerOAuthProvider, yt as ProjectCurrentUser } from "../../../client-app-Cri37vaC.js";
2
2
  export { ActiveSession, Auth, BaseUser, CurrentInternalServerUser, CurrentInternalUser, CurrentServerUser, CurrentUser, InternalUserExtra, OAuthProvider, ProjectCurrentServerUser, ProjectCurrentUser, ServerBaseUser, ServerOAuthProvider, ServerUser, ServerUserCreateOptions, ServerUserUpdateOptions, SyncedPartialServerUser, SyncedPartialUser, TokenPartialUser, User, UserExtra, UserUpdateOptions, serverUserCreateOptionsToCrud, serverUserUpdateOptionsToCrud, userUpdateOptionsToCrud, withUserDestructureGuard };
@@ -1,4 +1,4 @@
1
- import { a as StackClientApp } from "../client-app-CdAaCL3p.js";
1
+ import { a as StackClientApp } from "../client-app-Cri37vaC.js";
2
2
  //#region src/pushed-config-error-overlay/index.d.ts
3
3
  declare function mountPushedConfigErrorOverlay(app: StackClientApp<true>): () => void;
4
4
  //#endregion
@@ -27,10 +27,10 @@ declare function planRedirectToHandler(options: {
27
27
  rawHandlerUrl: string;
28
28
  noRedirectBack: boolean;
29
29
  currentUrl: URL | null;
30
- localOAuthCallbackUrl: string;
30
+ getLocalOAuthCallbackUrl: () => string;
31
31
  rawHomeUrl: string;
32
32
  getCrossDomainHandoffParams: (currentUrl: URL) => Promise<CrossDomainHandoffParams>;
33
33
  }): Promise<RedirectToHandlerPlan>;
34
34
  //#endregion
35
35
  export { planRedirectToHandler as i, crossDomainAuthQueryParams as n, getCrossDomainHandoffParamsFromCurrentUrl as r, CrossDomainHandoffParams as t };
36
- //# sourceMappingURL=redirect-page-urls-Cu5BRQwm.d.ts.map
36
+ //# sourceMappingURL=redirect-page-urls-BLceehT4.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"redirect-page-urls-Cu5BRQwm.d.ts","names":[],"sources":["../src/lib/hexclave-app/apps/implementations/redirect-page-urls.ts"],"mappings":";;;cAQa,0BAAA;EAAA;;;;;KAqBD,wBAAA;EACV,KAAA;EACA,aAAa;AAAA;AAAA,iBAGC,yCAAA,CAA0C,UAAA,EAAY,GAAA,GAAM,wBAAwB;AAAA,KA0K/F,qBAAA;EACC,IAAA;EAAkB,GAAA;AAAA;EAEpB,IAAA;EACA,WAAA;EACA,KAAA;EACA,aAAA;EACA,wBAAA;AAAA;AAAA,iBA4CkB,qBAAA,CAAsB,OAAA;EAC1C,WAAA,QAAmB,WAAA;EACnB,aAAA;EACA,cAAA;EACA,UAAA,EAAY,GAAA;EACZ,qBAAA;EACA,UAAA;EACA,2BAAA,GAA8B,UAAA,EAAY,GAAA,KAAQ,OAAA,CAAQ,wBAAA;AAAA,IACxD,OAAA,CAAQ,qBAAA"}
1
+ {"version":3,"file":"redirect-page-urls-BLceehT4.d.ts","names":[],"sources":["../src/lib/hexclave-app/apps/implementations/redirect-page-urls.ts"],"mappings":";;;cAQa,0BAAA;EAAA;;;;;KAqBD,wBAAA;EACV,KAAA;EACA,aAAa;AAAA;AAAA,iBAGC,yCAAA,CAA0C,UAAA,EAAY,GAAA,GAAM,wBAAwB;AAAA,KA0K/F,qBAAA;EACC,IAAA;EAAkB,GAAA;AAAA;EAEpB,IAAA;EACA,WAAA;EACA,KAAA;EACA,aAAA;EACA,wBAAA;AAAA;AAAA,iBA4CkB,qBAAA,CAAsB,OAAA;EAC1C,WAAA,QAAmB,WAAA;EACnB,aAAA;EACA,cAAA;EACA,UAAA,EAAY,GAAA;EACZ,wBAAA;EACA,UAAA;EACA,2BAAA,GAA8B,UAAA,EAAY,GAAA,KAAQ,OAAA,CAAQ,wBAAA;AAAA,IACxD,OAAA,CAAQ,qBAAA"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "//": "THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template (FOR package.json FILES, PLEASE EDIT package-template.json)",
3
3
  "name": "@hexclave/js",
4
- "version": "1.0.103",
4
+ "version": "1.0.105",
5
5
  "repository": "https://github.com/hexclave/hexclave",
6
6
  "sideEffects": false,
7
7
  "main": "./dist/index.js",
@@ -65,7 +65,7 @@
65
65
  "qrcode": "^1.5.4",
66
66
  "rrweb": "^1.1.3",
67
67
  "yup": "^1.7.1",
68
- "@hexclave/shared": "1.0.103"
68
+ "@hexclave/shared": "1.0.105"
69
69
  },
70
70
  "devDependencies": {
71
71
  "@quetzallabs/i18n": "^0.1.19",
@@ -9,7 +9,6 @@ import type { AnalyticsClickmapOptions, AnalyticsClickmapResponse, AnalyticsClic
9
9
  import { EmailTemplateCrud } from "@hexclave/shared/dist/interface/crud/email-templates";
10
10
  import { InternalApiKeysCrud } from "@hexclave/shared/dist/interface/crud/internal-api-keys";
11
11
  import { ProjectsCrud } from "@hexclave/shared/dist/interface/crud/projects";
12
- import type { AdminGetSessionReplayChunkEventsResponse } from "@hexclave/shared/dist/interface/crud/session-replays";
13
12
  import type { Transaction, TransactionType } from "@hexclave/shared/dist/interface/crud/transactions";
14
13
  import type { RestrictedReason } from "@hexclave/shared/dist/schema-fields";
15
14
  import type { MoneyAmount } from "@hexclave/shared/dist/utils/currency-constants";
@@ -24,7 +23,6 @@ import { InternalApiKey, InternalApiKeyBase, InternalApiKeyBaseCrudRead, Interna
24
23
  import { AdminProjectPermission, AdminProjectPermissionDefinition, AdminProjectPermissionDefinitionCreateOptions, AdminProjectPermissionDefinitionUpdateOptions, AdminTeamPermission, AdminTeamPermissionDefinition, AdminTeamPermissionDefinitionCreateOptions, AdminTeamPermissionDefinitionUpdateOptions, adminProjectPermissionDefinitionCreateOptionsToCrud, adminProjectPermissionDefinitionUpdateOptionsToCrud, adminTeamPermissionDefinitionCreateOptionsToCrud, adminTeamPermissionDefinitionUpdateOptionsToCrud } from "../../permissions";
25
24
  import type { PlanUsage } from "../../plan-usage";
26
25
  import { AdminOwnedProject, AdminProject, AdminProjectUpdateOptions, PushConfigOptions, adminProjectUpdateOptionsToCrud } from "../../projects";
27
- import type { AdminSessionReplay, AdminSessionReplayChunk, ListSessionReplayChunksOptions, ListSessionReplayChunksResult, ListSessionReplaysOptions, ListSessionReplaysResult, SessionReplayAllEventsResult } from "../../session-replays";
28
26
  import { AdminWorkflow, AdminWorkflowRun, AdminWorkflowRunDetails, AdminWorkflowRunsFilter, AdminWorkflowSyncResult, AdminWorkflowUpgradeResult, AdminWorkflowVersion, adminWorkflowFromCrud, adminWorkflowRunDetailsFromCrud, adminWorkflowRunFromCrud, adminWorkflowSyncResultFromCrud, adminWorkflowVersionFromCrud, isWorkflowRunDetailsJson } from "../../workflows";
29
27
  import { ManagedEmailProviderListItem, ManagedEmailProviderSetupResult, ManagedEmailProviderStatus, EmailOutboxUpdateOptions, StackAdminApp, StackAdminAppConstructorOptions } from "../interfaces/admin-app";
30
28
  import { clientVersion, createCache, getDefaultExtraRequestHeaders, getDefaultProjectId, getDefaultPublishableClientKey, getDefaultSecretServerKey, getDefaultSuperSecretAdminKey, resolveApiUrls, resolveConstructorOptions } from "./common";
@@ -1270,104 +1268,6 @@ export class _HexclaveAdminAppImplIncomplete<HasTokenStore extends boolean, Proj
1270
1268
  return await this._interface.createAnalyticsClickmapToken(options);
1271
1269
  }
1272
1270
 
1273
- async listSessionReplays(options?: ListSessionReplaysOptions): Promise<ListSessionReplaysResult> {
1274
- const response = await this._interface.listSessionReplays({
1275
- cursor: options?.cursor,
1276
- limit: options?.limit,
1277
- user_ids: options?.userIds,
1278
- team_ids: options?.teamIds,
1279
- duration_ms_min: options?.durationMsMin,
1280
- duration_ms_max: options?.durationMsMax,
1281
- last_event_at_from_millis: options?.lastEventAtFromMillis,
1282
- last_event_at_to_millis: options?.lastEventAtToMillis,
1283
- click_count_min: options?.clickCountMin,
1284
- });
1285
-
1286
- const items: AdminSessionReplay[] = response.items.map((r) => ({
1287
- id: r.id,
1288
- refreshTokenId: r.refresh_token_id,
1289
- projectUser: {
1290
- id: r.project_user.id,
1291
- displayName: r.project_user.display_name,
1292
- primaryEmail: r.project_user.primary_email,
1293
- },
1294
- startedAt: new Date(r.started_at_millis),
1295
- lastEventAt: new Date(r.last_event_at_millis),
1296
- chunkCount: r.chunk_count,
1297
- eventCount: r.event_count,
1298
- }));
1299
-
1300
- return {
1301
- items,
1302
- nextCursor: response.pagination.next_cursor,
1303
- };
1304
- }
1305
-
1306
- async getSessionReplay(sessionReplayId: string): Promise<AdminSessionReplay> {
1307
- const response = await this._interface.getSessionReplay(sessionReplayId);
1308
- return {
1309
- id: response.id,
1310
- refreshTokenId: response.refresh_token_id,
1311
- projectUser: {
1312
- id: response.project_user.id,
1313
- displayName: response.project_user.display_name,
1314
- primaryEmail: response.project_user.primary_email,
1315
- },
1316
- startedAt: new Date(response.started_at_millis),
1317
- lastEventAt: new Date(response.last_event_at_millis),
1318
- chunkCount: response.chunk_count,
1319
- eventCount: response.event_count,
1320
- };
1321
- }
1322
-
1323
- async listSessionReplayChunks(sessionReplayId: string, options?: ListSessionReplayChunksOptions): Promise<ListSessionReplayChunksResult> {
1324
- const response = await this._interface.listSessionReplayChunks(sessionReplayId, {
1325
- cursor: options?.cursor,
1326
- limit: options?.limit,
1327
- });
1328
-
1329
- const items: AdminSessionReplayChunk[] = response.items.map((c) => ({
1330
- id: c.id,
1331
- batchId: c.batch_id,
1332
- sessionReplaySegmentId: c.session_replay_segment_id,
1333
- browserSessionId: c.browser_session_id,
1334
- eventCount: c.event_count,
1335
- byteLength: c.byte_length,
1336
- firstEventAt: new Date(c.first_event_at_millis),
1337
- lastEventAt: new Date(c.last_event_at_millis),
1338
- createdAt: new Date(c.created_at_millis),
1339
- }));
1340
-
1341
- return {
1342
- items,
1343
- nextCursor: response.pagination.next_cursor,
1344
- };
1345
- }
1346
-
1347
- async getSessionReplayChunkEvents(sessionReplayId: string, chunkId: string): Promise<AdminGetSessionReplayChunkEventsResponse> {
1348
- return await this._interface.getSessionReplayChunkEvents(sessionReplayId, chunkId);
1349
- }
1350
-
1351
- async getSessionReplayEvents(sessionReplayId: string, options?: { offset?: number, limit?: number }): Promise<SessionReplayAllEventsResult> {
1352
- const response = await this._interface.getSessionReplayEvents(sessionReplayId, options);
1353
- return {
1354
- chunks: response.chunks.map((c) => ({
1355
- id: c.id,
1356
- batchId: c.batch_id,
1357
- sessionReplaySegmentId: c.session_replay_segment_id,
1358
- eventCount: c.event_count,
1359
- byteLength: c.byte_length,
1360
- firstEventAt: new Date(c.first_event_at_millis),
1361
- lastEventAt: new Date(c.last_event_at_millis),
1362
- createdAt: new Date(c.created_at_millis),
1363
- })),
1364
- chunkEvents: response.chunk_events.map((ce) => ({
1365
- chunkId: ce.chunk_id,
1366
- events: ce.events,
1367
- })),
1368
- };
1369
- }
1370
-
1371
1271
  async previewAffectedUsersByOnboardingChange(
1372
1272
  onboarding: { requireEmailVerification?: boolean },
1373
1273
  limit?: number,
@@ -87,7 +87,7 @@ describe("StackClientApp cross-domain auth", () => {
87
87
  rawHandlerUrl: "/handler/sign-in",
88
88
  noRedirectBack: true,
89
89
  currentUrl: new URL("https://app.example.test/settings?tab=profile"),
90
- localOAuthCallbackUrl: "/handler/oauth-callback",
90
+ getLocalOAuthCallbackUrl: () => "/handler/oauth-callback",
91
91
  rawHomeUrl: "/home",
92
92
  getCrossDomainHandoffParams: async () => {
93
93
  throw new Error("Same-domain redirects must not create cross-domain handoff parameters.");
@@ -116,7 +116,7 @@ describe("StackClientApp cross-domain auth", () => {
116
116
  rawHandlerUrl: "https://auth.example.test/handler/sign-in",
117
117
  noRedirectBack: true,
118
118
  currentUrl,
119
- localOAuthCallbackUrl: "/handler/oauth-callback",
119
+ getLocalOAuthCallbackUrl: () => "/handler/oauth-callback",
120
120
  rawHomeUrl: "/home",
121
121
  getCrossDomainHandoffParams: async () => {
122
122
  throw new Error("Existing cross-domain handoff parameters must be reused.");
@@ -188,6 +188,35 @@ describe("StackClientApp cross-domain auth", () => {
188
188
  }
189
189
  });
190
190
 
191
+ it("gets a hosted sign-in redirect without accessing window on the server", async () => {
192
+ const previousWindow = Reflect.get(globalThis, "window");
193
+ const hadPreviousWindow = Reflect.has(globalThis, "window");
194
+ Reflect.deleteProperty(globalThis, "window");
195
+
196
+ try {
197
+ const clientApp = new StackClientApp({
198
+ baseUrl: "http://localhost:12345",
199
+ projectId: "00000000-0000-4000-8000-000000000000",
200
+ publishableClientKey: "stack-pk-test",
201
+ tokenStore: "memory",
202
+ redirectMethod: "none",
203
+ urls: {
204
+ default: { type: "hosted" },
205
+ },
206
+ noAutomaticPrefetch: true,
207
+ devTool: false,
208
+ });
209
+
210
+ const redirectUrl = await clientApp[hexclaveAppInternalsSymbol].getRedirectToHandlerUrl("signIn");
211
+
212
+ expect(new URL(redirectUrl).pathname).toContain("sign-in");
213
+ } finally {
214
+ if (hadPreviousWindow) {
215
+ Reflect.set(globalThis, "window", previousWindow);
216
+ }
217
+ }
218
+ });
219
+
191
220
  it("uses the fresh post-auth refresh token when minting a cross-domain handoff", async () => {
192
221
  const freshAccessToken = createAccessTokenString("fresh-refresh-token-id");
193
222
  const clientApp = new StackClientApp({
@@ -2994,7 +2994,9 @@ export class _HexclaveClientAppImplIncomplete<HasTokenStore extends boolean, Pro
2994
2994
  rawHandlerUrl,
2995
2995
  noRedirectBack: options?.noRedirectBack === true,
2996
2996
  currentUrl,
2997
- localOAuthCallbackUrl: this._getLocalOAuthCallbackHandlerUrl(),
2997
+ // Hosted callback URLs use the browser's current location. Keep this lazy because Server
2998
+ // Components intentionally plan redirects without a current URL and never need a callback.
2999
+ getLocalOAuthCallbackUrl: () => this._getLocalOAuthCallbackHandlerUrl(),
2998
3000
  rawHomeUrl: rawUrls.home,
2999
3001
  getCrossDomainHandoffParams: async (href) => await this._getCrossDomainHandoffParamsForRedirect(href),
3000
3002
  });
@@ -16,7 +16,7 @@ async function plan(options: {
16
16
  return await planRedirectToHandler({
17
17
  ...options,
18
18
  noRedirectBack: options.noRedirectBack === true,
19
- localOAuthCallbackUrl,
19
+ getLocalOAuthCallbackUrl: () => localOAuthCallbackUrl,
20
20
  rawHomeUrl: "/",
21
21
  getCrossDomainHandoffParams: async () => {
22
22
  throw new Error("Continuation-only redirects must not mint a new cross-domain handoff");
@@ -38,6 +38,29 @@ function expectContinuation(url: URL, expectedReturnTo: string): void {
38
38
  expect(url.searchParams.get(crossDomainAuthQueryParams.afterCallbackRedirectUrl)).toBe("https://customer.example.test/dashboard");
39
39
  }
40
40
 
41
+ describe("server-side redirect planning", () => {
42
+ it("does not resolve a browser-only callback URL without a current URL", async () => {
43
+ const result = await planRedirectToHandler({
44
+ handlerName: "signIn",
45
+ rawHandlerUrl: "https://hosted.example.test/handler/sign-in",
46
+ noRedirectBack: false,
47
+ currentUrl: null,
48
+ getLocalOAuthCallbackUrl: () => {
49
+ throw new Error("Server-side redirect planning must not resolve the browser callback URL");
50
+ },
51
+ rawHomeUrl: "/",
52
+ getCrossDomainHandoffParams: async () => {
53
+ throw new Error("Server-side redirect planning must not mint cross-domain handoff parameters");
54
+ },
55
+ });
56
+
57
+ expect(result).toEqual({
58
+ type: "redirect",
59
+ url: "https://hosted.example.test/handler/sign-in",
60
+ });
61
+ });
62
+ });
63
+
41
64
  describe("password-flow redirect continuation", () => {
42
65
  it("carries the complete customer return state through forgot-password and a reset-email new tab", async () => {
43
66
  const customerReturnTo = "https://customer.example.test/handler/oauth-callback?hexclave_cross_domain_auth=1";
@@ -258,7 +258,7 @@ export async function planRedirectToHandler(options: {
258
258
  rawHandlerUrl: string,
259
259
  noRedirectBack: boolean,
260
260
  currentUrl: URL | null,
261
- localOAuthCallbackUrl: string,
261
+ getLocalOAuthCallbackUrl: () => string,
262
262
  rawHomeUrl: string,
263
263
  getCrossDomainHandoffParams: (currentUrl: URL) => Promise<CrossDomainHandoffParams>,
264
264
  }): Promise<RedirectToHandlerPlan> {
@@ -363,7 +363,7 @@ export async function planRedirectToHandler(options: {
363
363
  handlerName: options.handlerName,
364
364
  rawHandlerUrl: options.rawHandlerUrl,
365
365
  currentUrl: options.currentUrl,
366
- localOAuthCallbackUrl: options.localOAuthCallbackUrl,
366
+ localOAuthCallbackUrl: options.getLocalOAuthCallbackUrl(),
367
367
  getCrossDomainHandoffParams: options.getCrossDomainHandoffParams,
368
368
  noRedirectBack: options.noRedirectBack,
369
369
  afterCallbackRedirectUrlOverride,
@@ -4,6 +4,8 @@
4
4
  //===========================================
5
5
  import { HexclaveServerInterface, KnownErrors } from "@hexclave/shared";
6
6
  import type { AnalyticsQueryOptions, AnalyticsQueryResponse } from "@hexclave/shared/dist/interface/crud/analytics";
7
+ import type { AdminGetSessionReplayChunkEventsResponse } from "@hexclave/shared/dist/interface/crud/session-replays";
8
+ import type { AdminSessionReplay, AdminSessionReplayChunk, ListSessionReplayChunksOptions, ListSessionReplayChunksResult, ListSessionReplaysOptions, ListSessionReplaysResult, SessionReplayAllEventsResult } from "../../session-replays";
7
9
  import { ContactChannelsCrud } from "@hexclave/shared/dist/interface/crud/contact-channels";
8
10
  import { ItemCrud } from "@hexclave/shared/dist/interface/crud/items";
9
11
  import { NotificationPreferenceCrud } from "@hexclave/shared/dist/interface/crud/notification-preferences";
@@ -1312,6 +1314,104 @@ export class _HexclaveServerAppImplIncomplete<HasTokenStore extends boolean, Pro
1312
1314
  return await this._interface.queryAnalytics(options);
1313
1315
  }
1314
1316
 
1317
+ async listSessionReplays(options?: ListSessionReplaysOptions): Promise<ListSessionReplaysResult> {
1318
+ const response = await this._interface.listSessionReplays({
1319
+ cursor: options?.cursor,
1320
+ limit: options?.limit,
1321
+ user_ids: options?.userIds,
1322
+ team_ids: options?.teamIds,
1323
+ duration_ms_min: options?.durationMsMin,
1324
+ duration_ms_max: options?.durationMsMax,
1325
+ last_event_at_from_millis: options?.lastEventAtFromMillis,
1326
+ last_event_at_to_millis: options?.lastEventAtToMillis,
1327
+ click_count_min: options?.clickCountMin,
1328
+ });
1329
+
1330
+ const items: AdminSessionReplay[] = response.items.map((r) => ({
1331
+ id: r.id,
1332
+ refreshTokenId: r.refresh_token_id,
1333
+ projectUser: {
1334
+ id: r.project_user.id,
1335
+ displayName: r.project_user.display_name,
1336
+ primaryEmail: r.project_user.primary_email,
1337
+ },
1338
+ startedAt: new Date(r.started_at_millis),
1339
+ lastEventAt: new Date(r.last_event_at_millis),
1340
+ chunkCount: r.chunk_count,
1341
+ eventCount: r.event_count,
1342
+ }));
1343
+
1344
+ return {
1345
+ items,
1346
+ nextCursor: response.pagination.next_cursor,
1347
+ };
1348
+ }
1349
+
1350
+ async getSessionReplay(sessionReplayId: string): Promise<AdminSessionReplay> {
1351
+ const response = await this._interface.getSessionReplay(sessionReplayId);
1352
+ return {
1353
+ id: response.id,
1354
+ refreshTokenId: response.refresh_token_id,
1355
+ projectUser: {
1356
+ id: response.project_user.id,
1357
+ displayName: response.project_user.display_name,
1358
+ primaryEmail: response.project_user.primary_email,
1359
+ },
1360
+ startedAt: new Date(response.started_at_millis),
1361
+ lastEventAt: new Date(response.last_event_at_millis),
1362
+ chunkCount: response.chunk_count,
1363
+ eventCount: response.event_count,
1364
+ };
1365
+ }
1366
+
1367
+ async listSessionReplayChunks(sessionReplayId: string, options?: ListSessionReplayChunksOptions): Promise<ListSessionReplayChunksResult> {
1368
+ const response = await this._interface.listSessionReplayChunks(sessionReplayId, {
1369
+ cursor: options?.cursor,
1370
+ limit: options?.limit,
1371
+ });
1372
+
1373
+ const items: AdminSessionReplayChunk[] = response.items.map((c) => ({
1374
+ id: c.id,
1375
+ batchId: c.batch_id,
1376
+ sessionReplaySegmentId: c.session_replay_segment_id,
1377
+ browserSessionId: c.browser_session_id,
1378
+ eventCount: c.event_count,
1379
+ byteLength: c.byte_length,
1380
+ firstEventAt: new Date(c.first_event_at_millis),
1381
+ lastEventAt: new Date(c.last_event_at_millis),
1382
+ createdAt: new Date(c.created_at_millis),
1383
+ }));
1384
+
1385
+ return {
1386
+ items,
1387
+ nextCursor: response.pagination.next_cursor,
1388
+ };
1389
+ }
1390
+
1391
+ async getSessionReplayChunkEvents(sessionReplayId: string, chunkId: string): Promise<AdminGetSessionReplayChunkEventsResponse> {
1392
+ return await this._interface.getSessionReplayChunkEvents(sessionReplayId, chunkId);
1393
+ }
1394
+
1395
+ async getSessionReplayEvents(sessionReplayId: string, options?: { offset?: number, limit?: number }): Promise<SessionReplayAllEventsResult> {
1396
+ const response = await this._interface.getSessionReplayEvents(sessionReplayId, options);
1397
+ return {
1398
+ chunks: response.chunks.map((c) => ({
1399
+ id: c.id,
1400
+ batchId: c.batch_id,
1401
+ sessionReplaySegmentId: c.session_replay_segment_id,
1402
+ eventCount: c.event_count,
1403
+ byteLength: c.byte_length,
1404
+ firstEventAt: new Date(c.first_event_at_millis),
1405
+ lastEventAt: new Date(c.last_event_at_millis),
1406
+ createdAt: new Date(c.created_at_millis),
1407
+ })),
1408
+ chunkEvents: response.chunk_events.map((ce) => ({
1409
+ chunkId: ce.chunk_id,
1410
+ events: ce.events,
1411
+ })),
1412
+ };
1413
+ }
1414
+
1315
1415
  protected override async _refreshSession(session: InternalSession) {
1316
1416
  await Promise.all([
1317
1417
  super._refreshUser(session),
@@ -3,7 +3,6 @@
3
3
  // THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template
4
4
  //===========================================
5
5
  import type { AnalyticsClickmapOptions, AnalyticsClickmapResponse, AnalyticsClickmapTokenResponse } from "@hexclave/shared/dist/interface/admin-metrics";
6
- import type { AdminGetSessionReplayChunkEventsResponse, AdminGetSessionReplayAllEventsResponse } from "@hexclave/shared/dist/interface/crud/session-replays";
7
6
  import type { Transaction, TransactionType } from "@hexclave/shared/dist/interface/crud/transactions";
8
7
  import { InternalSession } from "@hexclave/shared/dist/sessions";
9
8
  import type { MoneyAmount } from "@hexclave/shared/dist/utils/currency-constants";
@@ -59,8 +58,6 @@ export type ManagedEmailProviderListItem = {
59
58
  nameServerRecords: string[],
60
59
  };
61
60
 
62
- import type { AdminSessionReplay, ListSessionReplayChunksOptions, ListSessionReplayChunksResult, ListSessionReplaysOptions, ListSessionReplaysResult, SessionReplayAllEventsResult } from "../../session-replays";
63
- export type { AdminSessionReplay, AdminSessionReplayChunk, ListSessionReplaysOptions, ListSessionReplaysResult, ListSessionReplayChunksOptions, ListSessionReplayChunksResult, SessionReplayAllEventsResult } from "../../session-replays";
64
61
  export type { AdminWorkflow, AdminWorkflowDivergenceDiagnostic, AdminWorkflowRun, AdminWorkflowRunDetails, AdminWorkflowRunsFilter, AdminWorkflowRunState, AdminWorkflowStep, AdminWorkflowStepAttempt, AdminWorkflowSyncResult, AdminWorkflowTrigger, AdminWorkflowUpgradeResult, AdminWorkflowVersion } from "../../workflows";
65
62
 
66
63
 
@@ -182,12 +179,6 @@ export type StackAdminApp<HasTokenStore extends boolean = boolean, ProjectId ext
182
179
  getAnalyticsClickmap(options: AnalyticsClickmapOptions): Promise<AnalyticsClickmapResponse>,
183
180
  createAnalyticsClickmapToken(options: { origin: string }): Promise<AnalyticsClickmapTokenResponse>,
184
181
 
185
- listSessionReplays(options?: ListSessionReplaysOptions): Promise<ListSessionReplaysResult>,
186
- getSessionReplay(sessionReplayId: string): Promise<AdminSessionReplay>,
187
- listSessionReplayChunks(sessionReplayId: string, options?: ListSessionReplayChunksOptions): Promise<ListSessionReplayChunksResult>,
188
- getSessionReplayChunkEvents(sessionReplayId: string, chunkId: string): Promise<AdminGetSessionReplayChunkEventsResponse>,
189
- getSessionReplayEvents(sessionReplayId: string, options?: { offset?: number, limit?: number }): Promise<SessionReplayAllEventsResult>,
190
-
191
182
  // Email Outbox methods
192
183
  listOutboxEmails(options?: EmailOutboxListOptions): Promise<EmailOutboxListResult>,
193
184
  getOutboxEmail(id: string): Promise<AdminEmailOutbox>,
@@ -6,16 +6,21 @@ import { KnownErrors } from "@hexclave/shared";
6
6
  import { Result } from "@hexclave/shared/dist/utils/results";
7
7
  import type { GenericQueryCtx } from "convex/server";
8
8
  import type { AnalyticsQueryOptions, AnalyticsQueryResponse } from "@hexclave/shared/dist/interface/crud/analytics";
9
+ import type { AdminGetSessionReplayChunkEventsResponse } from "@hexclave/shared/dist/interface/crud/session-replays";
9
10
  import { AsyncStoreProperty, GetCurrentPartialUserOptions, GetCurrentUserOptions } from "../../common";
10
11
  import { CustomerProductsList, CustomerProductsRequestOptions, InlineProduct, ServerItem } from "../../customers";
11
12
  import { DataVaultStore } from "../../data-vault";
12
13
  import { EmailDeliveryInfo, SendEmailOptions } from "../../email";
13
14
  import { ServerListTeamsOptions, ServerListUsersOptions, ServerTeam, ServerTeamCreateOptions } from "../../teams";
15
+ import type { AdminSessionReplay, ListSessionReplayChunksOptions, ListSessionReplayChunksResult, ListSessionReplaysOptions, ListSessionReplaysResult, SessionReplayAllEventsResult } from "../../session-replays";
14
16
  import { ProjectCurrentServerUser, ServerOAuthProvider, ServerUser, ServerUserCreateOptions, SyncedPartialServerUser, TokenPartialUser } from "../../users";
15
17
  import { _HexclaveServerAppImpl } from "../implementations";
16
18
  import { StackClientApp, StackClientAppConstructorOptions } from "./client-app";
17
19
 
18
20
 
21
+ export type { AdminSessionReplay, AdminSessionReplayChunk, ListSessionReplaysOptions, ListSessionReplaysResult, ListSessionReplayChunksOptions, ListSessionReplayChunksResult, SessionReplayAllEventsResult } from "../../session-replays";
22
+
23
+
19
24
  /** @deprecated Use `HexclaveServerAppConstructorOptions` from the `@hexclave/*` package instead — same symbol, new brand name. See https://docs.hexclave.com/migration. */
20
25
  export type StackServerAppConstructorOptions<HasTokenStore extends boolean, ProjectId extends string> = StackClientAppConstructorOptions<HasTokenStore, ProjectId> & {
21
26
  secretServerKey?: string,
@@ -86,6 +91,12 @@ export type StackServerApp<HasTokenStore extends boolean = boolean, ProjectId ex
86
91
  activateEmailCapacityBoost(): Promise<void>,
87
92
 
88
93
  queryAnalytics(options: AnalyticsQueryOptions): Promise<AnalyticsQueryResponse>,
94
+
95
+ listSessionReplays(options?: ListSessionReplaysOptions): Promise<ListSessionReplaysResult>,
96
+ getSessionReplay(sessionReplayId: string): Promise<AdminSessionReplay>,
97
+ listSessionReplayChunks(sessionReplayId: string, options?: ListSessionReplayChunksOptions): Promise<ListSessionReplayChunksResult>,
98
+ getSessionReplayChunkEvents(sessionReplayId: string, chunkId: string): Promise<AdminGetSessionReplayChunkEventsResponse>,
99
+ getSessionReplayEvents(sessionReplayId: string, options?: { offset?: number, limit?: number }): Promise<SessionReplayAllEventsResult>,
89
100
  }
90
101
  & AsyncStoreProperty<"user", [id: string], ServerUser | null, false>
91
102
  & Omit<AsyncStoreProperty<"users", [], ServerUser[], true>, "listUsers" | "useUsers">
@@ -60,6 +60,16 @@ export type {
60
60
  AdminWorkflowVersion
61
61
  } from "./workflows";
62
62
 
63
+ export type {
64
+ AdminSessionReplay,
65
+ AdminSessionReplayChunk,
66
+ ListSessionReplayChunksOptions,
67
+ ListSessionReplayChunksResult,
68
+ ListSessionReplaysOptions,
69
+ ListSessionReplaysResult,
70
+ SessionReplayAllEventsResult
71
+ } from "./session-replays";
72
+
63
73
  export type {
64
74
  ProjectConfig
65
75
  } from "./project-configs";