@hexclave/js 1.0.103 → 1.0.104
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{admin-app-impl-ksLk70Sj.d.ts → admin-app-impl-CReZAWqx.d.ts} +12 -12
- package/dist/{admin-app-impl-ksLk70Sj.d.ts.map → admin-app-impl-CReZAWqx.d.ts.map} +1 -1
- package/dist/clickmap/clickmap-core.d.ts +1 -1
- package/dist/clickmap/index.d.ts +1 -1
- package/dist/{client-app-CdAaCL3p.d.ts → client-app-Cri37vaC.d.ts} +10 -10
- package/dist/client-app-Cri37vaC.d.ts.map +1 -0
- package/dist/dev-tool/dev-tool-core.d.ts +1 -1
- package/dist/dev-tool/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +0 -10
- package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js +0 -87
- package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js +22 -2
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/common.js +2 -2
- package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.js +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.test.js +21 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.test.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.d.ts +10 -0
- package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.js +87 -0
- package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.d.ts +1 -11
- package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.js.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/interfaces/server-app.d.ts +11 -1
- package/dist/esm/lib/hexclave-app/apps/interfaces/server-app.d.ts.map +1 -1
- package/dist/esm/lib/hexclave-app/apps/interfaces/server-app.js.map +1 -1
- package/dist/esm/lib/hexclave-app/index.d.ts +2 -1
- package/dist/index.d.ts +3 -2
- package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +1 -1
- package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js +0 -87
- package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js +22 -2
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts +1 -1
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js +1 -1
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/common.js +2 -2
- package/dist/lib/hexclave-app/apps/implementations/index.d.ts +1 -1
- package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.d.ts +1 -1
- package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.js +1 -1
- package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.test.js +21 -1
- package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.test.js.map +1 -1
- package/dist/lib/hexclave-app/apps/implementations/server-app-impl.d.ts +1 -1
- package/dist/lib/hexclave-app/apps/implementations/server-app-impl.js +87 -0
- package/dist/lib/hexclave-app/apps/implementations/server-app-impl.js.map +1 -1
- package/dist/lib/hexclave-app/apps/index.d.ts +1 -1
- package/dist/lib/hexclave-app/apps/interfaces/admin-app.d.ts +2 -3
- package/dist/lib/hexclave-app/apps/interfaces/admin-app.js.map +1 -1
- package/dist/lib/hexclave-app/apps/interfaces/client-app.d.ts +1 -1
- package/dist/lib/hexclave-app/apps/interfaces/server-app.d.ts +3 -2
- package/dist/lib/hexclave-app/apps/interfaces/server-app.js.map +1 -1
- package/dist/lib/hexclave-app/index.d.ts +3 -2
- package/dist/lib/hexclave-app/projects/index.d.ts +1 -1
- package/dist/lib/hexclave-app/teams/index.d.ts +1 -1
- package/dist/lib/hexclave-app/users/index.d.ts +1 -1
- package/dist/pushed-config-error-overlay/index.d.ts +1 -1
- package/dist/{redirect-page-urls-Cu5BRQwm.d.ts → redirect-page-urls-BLceehT4.d.ts} +2 -2
- package/dist/{redirect-page-urls-Cu5BRQwm.d.ts.map → redirect-page-urls-BLceehT4.d.ts.map} +1 -1
- package/package.json +2 -2
- package/src/lib/hexclave-app/apps/implementations/admin-app-impl.ts +0 -100
- package/src/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.ts +31 -2
- package/src/lib/hexclave-app/apps/implementations/client-app-impl.ts +3 -1
- package/src/lib/hexclave-app/apps/implementations/redirect-page-urls.test.ts +24 -1
- package/src/lib/hexclave-app/apps/implementations/redirect-page-urls.ts +2 -2
- package/src/lib/hexclave-app/apps/implementations/server-app-impl.ts +100 -0
- package/src/lib/hexclave-app/apps/interfaces/admin-app.ts +0 -9
- package/src/lib/hexclave-app/apps/interfaces/server-app.ts +11 -0
- package/src/lib/hexclave-app/index.ts +10 -0
- 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-
|
|
2
|
-
|
|
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":";;
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
-
|
|
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-
|
|
36
|
+
//# sourceMappingURL=redirect-page-urls-BLceehT4.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redirect-page-urls-
|
|
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.
|
|
4
|
+
"version": "1.0.104",
|
|
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.
|
|
68
|
+
"@hexclave/shared": "1.0.104"
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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";
|