@hexclave/shared 1.0.39 → 1.0.41
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/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.d.ts.map +1 -1
- package/dist/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js +1 -0
- package/dist/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js.map +1 -1
- package/dist/config/schema.d.ts +210 -210
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.d.ts.map +1 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js +1 -0
- package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js.map +1 -1
- package/dist/esm/config/schema.d.ts +210 -210
- package/dist/esm/interface/admin-interface.js +1 -1
- package/dist/esm/interface/admin-metrics.d.ts +19 -19
- package/dist/esm/interface/client-interface.js +1 -1
- package/dist/esm/interface/conversations.d.ts +7 -7
- package/dist/esm/interface/crud/current-user.d.ts +12 -12
- package/dist/esm/interface/crud/email-outbox.d.ts +226 -226
- package/dist/esm/interface/crud/products.d.ts +13 -13
- package/dist/esm/interface/crud/products.d.ts.map +1 -1
- package/dist/esm/interface/crud/project-api-keys.d.ts +4 -4
- package/dist/esm/interface/crud/projects.d.ts +35 -35
- package/dist/esm/interface/crud/team-member-profiles.d.ts +24 -24
- package/dist/esm/interface/crud/transactions.d.ts +6 -6
- package/dist/esm/interface/crud/transactions.d.ts.map +1 -1
- package/dist/esm/interface/crud/users.d.ts +16 -16
- package/dist/esm/interface/plan-usage.d.ts +2 -2
- package/dist/esm/interface/server-interface.d.ts +1 -0
- package/dist/esm/interface/server-interface.d.ts.map +1 -1
- package/dist/esm/interface/server-interface.js +2 -1
- package/dist/esm/interface/server-interface.js.map +1 -1
- package/dist/esm/interface/webhooks.d.ts +2 -2
- package/dist/esm/known-errors.d.ts +2 -2
- package/dist/esm/schema-fields.d.ts +12 -12
- package/dist/esm/sessions.d.ts +5 -5
- package/dist/esm/utils/promises.js +1 -1
- package/dist/interface/admin-interface.js +1 -1
- package/dist/interface/admin-metrics.d.ts +19 -19
- package/dist/interface/client-interface.js +1 -1
- package/dist/interface/conversations.d.ts +7 -7
- package/dist/interface/crud/current-user.d.ts +12 -12
- package/dist/interface/crud/email-outbox.d.ts +226 -226
- package/dist/interface/crud/products.d.ts +13 -13
- package/dist/interface/crud/products.d.ts.map +1 -1
- package/dist/interface/crud/project-api-keys.d.ts +4 -4
- package/dist/interface/crud/projects.d.ts +35 -35
- package/dist/interface/crud/team-member-profiles.d.ts +24 -24
- package/dist/interface/crud/transactions.d.ts +6 -6
- package/dist/interface/crud/transactions.d.ts.map +1 -1
- package/dist/interface/crud/users.d.ts +16 -16
- package/dist/interface/plan-usage.d.ts +2 -2
- package/dist/interface/server-interface.d.ts +1 -0
- package/dist/interface/server-interface.d.ts.map +1 -1
- package/dist/interface/server-interface.js +2 -1
- package/dist/interface/server-interface.js.map +1 -1
- package/dist/interface/webhooks.d.ts +2 -2
- package/dist/known-errors.d.ts +2 -2
- package/dist/schema-fields.d.ts +12 -12
- package/dist/sessions.d.ts +5 -5
- package/dist/utils/promises.js +1 -1
- package/package.json +1 -1
- package/src/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.ts +1 -0
- package/src/interface/server-interface.ts +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-interface.d.ts","names":[],"sources":["../../src/interface/server-interface.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"server-interface.d.ts","names":[],"sources":["../../src/interface/server-interface.ts"],"mappings":"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"}
|
|
@@ -3,8 +3,8 @@ const require_chunk = require('../chunk-BE-pF4vm.js');
|
|
|
3
3
|
let ___utils_errors_js = require("../utils/errors.js");
|
|
4
4
|
let ___utils_objects_js = require("../utils/objects.js");
|
|
5
5
|
let ___utils_results_js = require("../utils/results.js");
|
|
6
|
-
let ___known_errors_js = require("../known-errors.js");
|
|
7
6
|
let ___utils_urls_js = require("../utils/urls.js");
|
|
7
|
+
let ___known_errors_js = require("../known-errors.js");
|
|
8
8
|
let ___sessions_js = require("../sessions.js");
|
|
9
9
|
let __client_interface_js = require("./client-interface.js");
|
|
10
10
|
let ___helpers_vault_client_side_js = require("../helpers/vault/client-side.js");
|
|
@@ -357,6 +357,7 @@ var HexclaveServerInterface = class extends __client_interface_js.HexclaveClient
|
|
|
357
357
|
body: JSON.stringify({
|
|
358
358
|
user_ids: options.userIds,
|
|
359
359
|
all_users: options.allUsers,
|
|
360
|
+
emails: options.emails,
|
|
360
361
|
theme_id: options.themeId,
|
|
361
362
|
html: options.html,
|
|
362
363
|
subject: options.subject,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-interface.js","names":["HexclaveClientInterface","Result","KnownErrors","HexclaveAssertionError","InternalSession"],"sources":["../../src/interface/server-interface.ts"],"sourcesContent":["import * as yup from \"yup\";\nimport { decryptValue, encryptValue, hashKey } from \"../helpers/vault/client-side\";\nimport { KnownErrors } from \"../known-errors\";\nimport { inlineProductSchema } from \"../schema-fields\";\nimport { AccessToken, InternalSession, RefreshToken } from \"../sessions\";\nimport { HexclaveAssertionError } from \"../utils/errors\";\nimport { filterUndefined } from \"../utils/objects\";\nimport { Result } from \"../utils/results\";\nimport { urlString } from \"../utils/urls\";\nimport {\n ClientInterfaceOptions,\n HexclaveClientInterface\n} from \"./client-interface\";\nimport { ConnectedAccountAccessTokenCrud, ConnectedAccountCrud } from \"./crud/connected-accounts\";\nimport { ContactChannelsCrud } from \"./crud/contact-channels\";\nimport { CurrentUserCrud } from \"./crud/current-user\";\nimport { ItemCrud } from \"./crud/items\";\nimport { NotificationPreferenceCrud } from \"./crud/notification-preferences\";\nimport { OAuthProviderCrud } from \"./crud/oauth-providers\";\nimport { ProjectPermissionsCrud } from \"./crud/project-permissions\";\nimport { SessionsCrud } from \"./crud/sessions\";\nimport { TeamInvitationCrud } from \"./crud/team-invitation\";\nimport { TeamMemberProfilesCrud } from \"./crud/team-member-profiles\";\nimport { TeamMembershipsCrud } from \"./crud/team-memberships\";\nimport { TeamPermissionsCrud } from \"./crud/team-permissions\";\nimport { TeamsCrud } from \"./crud/teams\";\nimport { UsersCrud } from \"./crud/users\";\n\nexport type ServerAuthApplicationOptions = (\n & ClientInterfaceOptions\n & (\n | {\n readonly secretServerKey: string,\n }\n | {\n readonly projectOwnerSession: InternalSession | (() => Promise<string | null>),\n }\n )\n);\n\nexport class HexclaveServerInterface extends HexclaveClientInterface {\n constructor(public override options: ServerAuthApplicationOptions) {\n super(options);\n }\n\n protected async sendServerRequest(path: string, options: RequestInit, session: InternalSession | null, requestType: \"server\" | \"admin\" = \"server\") {\n return await this.sendClientRequest(\n path,\n {\n ...options,\n headers: {\n // Hexclave rebrand: emit x-hexclave-* request header; the backend proxy dual-accepts both names.\n \"x-hexclave-secret-server-key\": \"secretServerKey\" in this.options ? this.options.secretServerKey : \"\",\n ...options.headers,\n },\n },\n session,\n requestType,\n );\n }\n\n override async getCustomerBilling(\n customerType: \"user\" | \"team\",\n customerId: string,\n session: InternalSession | null,\n ): Promise<{\n has_customer: boolean,\n default_payment_method: {\n id: string,\n brand: string | null,\n last4: string | null,\n exp_month: number | null,\n exp_year: number | null,\n } | null,\n }> {\n const response = await this.sendServerRequest(\n urlString`/payments/billing/${customerType}/${customerId}`,\n {},\n session,\n );\n return await response.json();\n }\n\n override async createCustomerPaymentMethodSetupIntent(\n customerType: \"user\" | \"team\",\n customerId: string,\n session: InternalSession | null,\n ): Promise<{\n client_secret: string,\n stripe_account_id: string,\n }> {\n const response = await this.sendServerRequest(\n urlString`/payments/payment-method/${customerType}/${customerId}/setup-intent`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n session,\n );\n return await response.json();\n }\n\n override async setDefaultCustomerPaymentMethodFromSetupIntent(\n customerType: \"user\" | \"team\",\n customerId: string,\n setupIntentId: string,\n session: InternalSession | null,\n ): Promise<{\n default_payment_method: {\n id: string,\n brand: string | null,\n last4: string | null,\n exp_month: number | null,\n exp_year: number | null,\n },\n }> {\n const response = await this.sendServerRequest(\n urlString`/payments/payment-method/${customerType}/${customerId}/set-default`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n setup_intent_id: setupIntentId,\n }),\n },\n session,\n );\n return await response.json();\n }\n\n\n protected async sendServerRequestAndCatchKnownError<E extends typeof KnownErrors[keyof KnownErrors]>(\n path: string,\n requestOptions: RequestInit,\n tokenStoreOrNull: InternalSession | null,\n errorsToCatch: readonly E[],\n ): Promise<Result<\n Response & {\n usedTokens: {\n accessToken: AccessToken,\n refreshToken: RefreshToken | null,\n } | null,\n },\n InstanceType<E>\n >> {\n try {\n return Result.ok(await this.sendServerRequest(path, requestOptions, tokenStoreOrNull));\n } catch (e) {\n for (const errorType of errorsToCatch) {\n if (errorType.isInstance(e)) {\n return Result.error(e as InstanceType<E>);\n }\n }\n throw e;\n }\n }\n\n async createServerUser(data: UsersCrud['Server']['Create']): Promise<UsersCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n \"/users\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async getServerUserByToken(session: InternalSession): Promise<CurrentUserCrud['Server']['Read'] | null> {\n const responseOrError = await this.sendServerRequestAndCatchKnownError(\n \"/users/me\",\n {},\n session,\n [KnownErrors.CannotGetOwnUserWithoutUser],\n );\n if (responseOrError.status === \"error\") {\n if (KnownErrors.CannotGetOwnUserWithoutUser.isInstance(responseOrError.error)) {\n return null;\n } else {\n throw new HexclaveAssertionError(\"Unexpected uncaught error\", { cause: responseOrError.error });\n }\n }\n const response = responseOrError.data;\n const user: CurrentUserCrud['Server']['Read'] = await response.json();\n if (!(user as any)) throw new HexclaveAssertionError(\"User endpoint returned null; this should never happen\");\n return user;\n }\n\n async getServerUserById(userId: string): Promise<Result<UsersCrud['Server']['Read']>> {\n const responseOrError = await this.sendServerRequestAndCatchKnownError(\n urlString`/users/${userId}`,\n {},\n null,\n [KnownErrors.UserNotFound],\n );\n if (responseOrError.status === \"error\") {\n return Result.error(responseOrError.error);\n }\n const user: UsersCrud['Server']['Read'] = await responseOrError.data.json();\n return Result.ok(user);\n }\n\n async listServerTeamInvitations(options: {\n teamId: string,\n }): Promise<TeamInvitationCrud['Server']['Read'][]> {\n const response = await this.sendServerRequest(\n urlString`/team-invitations?team_id=${options.teamId}`,\n {},\n null,\n );\n const result = await response.json() as TeamInvitationCrud['Server']['List'];\n return result.items;\n }\n\n async revokeServerTeamInvitation(invitationId: string, teamId: string) {\n await this.sendServerRequest(\n urlString`/team-invitations/${invitationId}?team_id=${teamId}`,\n { method: \"DELETE\" },\n null,\n );\n }\n\n async listServerTeamMemberProfiles(\n options: {\n teamId: string,\n },\n ): Promise<TeamMemberProfilesCrud['Server']['Read'][]> {\n const response = await this.sendServerRequest(\n urlString`/team-member-profiles?team_id=${options.teamId}`,\n {},\n null,\n );\n const result = await response.json() as TeamMemberProfilesCrud['Server']['List'];\n return result.items;\n }\n\n async getServerTeamMemberProfile(\n options: {\n teamId: string,\n userId: string,\n },\n ): Promise<TeamMemberProfilesCrud['Client']['Read']> {\n const response = await this.sendServerRequest(\n urlString`/team-member-profiles/${options.teamId}/${options.userId}`,\n {},\n null,\n );\n return await response.json();\n }\n\n async listServerTeamPermissions(\n options: {\n userId?: string,\n teamId?: string,\n recursive: boolean,\n },\n session: InternalSession | null,\n ): Promise<TeamPermissionsCrud['Server']['Read'][]> {\n const response = await this.sendServerRequest(\n `/team-permissions?${new URLSearchParams(filterUndefined({\n user_id: options.userId,\n team_id: options.teamId,\n recursive: options.recursive.toString(),\n }))}`,\n {},\n session,\n );\n const result = await response.json() as TeamPermissionsCrud['Server']['List'];\n return result.items;\n }\n\n async listServerProjectPermissions(\n options: {\n userId?: string,\n recursive: boolean,\n },\n session: InternalSession | null,\n ): Promise<ProjectPermissionsCrud['Server']['Read'][]> {\n const response = await this.sendServerRequest(\n `/project-permissions?${new URLSearchParams(filterUndefined({\n user_id: options.userId,\n recursive: options.recursive.toString(),\n }))}`,\n {},\n session,\n );\n const result = await response.json() as ProjectPermissionsCrud['Server']['List'];\n return result.items;\n }\n\n async listServerUsers(options: (\n & {\n cursor?: string,\n limit?: number,\n orderBy?: 'signedUpAt' | 'lastActiveAt',\n desc?: boolean,\n query?: string,\n excludedEmailDomains?: string[],\n includeRestricted?: boolean,\n teamId?: string,\n }\n & (\n {\n includeAnonymous?: boolean,\n onlyAnonymous?: false,\n }\n | {\n includeAnonymous: true,\n onlyAnonymous: true,\n }\n )\n )): Promise<UsersCrud['Server']['List']> {\n const searchParams = new URLSearchParams(filterUndefined({\n cursor: options.cursor,\n limit: options.limit?.toString(),\n desc: options.desc?.toString(),\n team_id: options.teamId,\n ...options.orderBy ? {\n order_by: {\n signedUpAt: \"signed_up_at\",\n lastActiveAt: \"last_active_at\",\n }[options.orderBy],\n } : {},\n ...options.query ? {\n query: options.query,\n } : {},\n ...options.excludedEmailDomains && options.excludedEmailDomains.length > 0 ? {\n excluded_email_domains: options.excludedEmailDomains.join(\",\"), // backend expects comma-separated list of domains.\n } : {},\n ...options.includeRestricted ? {\n include_restricted: 'true',\n } : {},\n ...options.includeAnonymous ? {\n include_anonymous: 'true',\n } : {},\n ...options.onlyAnonymous ? {\n only_anonymous: 'true',\n } : {},\n }));\n const response = await this.sendServerRequest(\"/users?\" + searchParams.toString(), {}, null);\n return await response.json();\n }\n\n async listServerTeams(options?: {\n userId?: string,\n }): Promise<TeamsCrud['Server']['Read'][]> {\n const result = await this.listServerTeamsPaginated(options);\n return result.items;\n }\n\n async listServerTeamsPaginated(options?: {\n userId?: string,\n orderBy?: 'createdAt',\n desc?: boolean,\n cursor?: string,\n limit?: number,\n query?: string,\n }): Promise<TeamsCrud['Server']['List']> {\n const response = await this.sendServerRequest(\n `/teams?${new URLSearchParams(filterUndefined({\n user_id: options?.userId,\n // SDK option uses camelCase `createdAt`; backend uses snake_case.\n order_by: options?.orderBy === 'createdAt' ? 'created_at' : options?.orderBy,\n desc: options?.desc !== undefined ? String(options.desc) : undefined,\n cursor: options?.cursor,\n limit: options?.limit?.toString(),\n query: options?.query,\n }))}`,\n {},\n null\n );\n return await response.json() as TeamsCrud['Server']['List'];\n }\n\n async getServerTeam(teamId: string): Promise<TeamsCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n `/teams/${teamId}`,\n {},\n null\n );\n return await response.json();\n }\n\n async listServerTeamUsers(teamId: string): Promise<UsersCrud['Server']['Read'][]> {\n const response = await this.sendServerRequest(`/users?team_id=${teamId}`, {}, null);\n const result = await response.json() as UsersCrud['Server']['List'];\n return result.items;\n }\n\n /* when passing a session, the user will be added to the team */\n async createServerTeam(data: TeamsCrud['Server']['Create']): Promise<TeamsCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n \"/teams\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null\n );\n return await response.json();\n }\n\n async updateServerTeam(teamId: string, data: TeamsCrud['Server']['Update']): Promise<TeamsCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n urlString`/teams/${teamId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async deleteServerTeam(teamId: string): Promise<void> {\n await this.sendServerRequest(\n urlString`/teams/${teamId}`,\n { method: \"DELETE\" },\n null,\n );\n }\n\n async addServerUserToTeam(options: {\n userId: string,\n teamId: string,\n }): Promise<TeamMembershipsCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n urlString`/team-memberships/${options.teamId}/${options.userId}`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n return await response.json();\n }\n\n async removeServerUserFromTeam(options: {\n userId: string,\n teamId: string,\n }) {\n await this.sendServerRequest(\n urlString`/team-memberships/${options.teamId}/${options.userId}`,\n {\n method: \"DELETE\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n }\n\n async listServerUserTeamInvitations(userId: string): Promise<TeamInvitationCrud['Server']['Read'][]> {\n const response = await this.sendServerRequest(\n \"/team-invitations?\" + new URLSearchParams({ user_id: userId }),\n {},\n null,\n );\n const result = await response.json() as TeamInvitationCrud['Server']['List'];\n return result.items;\n }\n\n async acceptServerTeamInvitationById(\n invitationId: string,\n userId: string,\n ) {\n await this.sendServerRequest(\n urlString`/team-invitations/${invitationId}/accept` + \"?\" + new URLSearchParams({ user_id: userId }),\n { method: \"POST\" },\n null,\n );\n }\n\n async updateServerUser(userId: string, update: UsersCrud['Server']['Update']): Promise<UsersCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n urlString`/users/${userId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(update),\n },\n null,\n );\n return await response.json();\n }\n\n async createServerProviderAccessToken(\n userId: string,\n provider: string,\n scope: string,\n ): Promise<ConnectedAccountAccessTokenCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n urlString`/connected-accounts/${userId}/${provider}/access-token`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ scope }),\n },\n null,\n );\n return await response.json();\n }\n\n /**\n * Get access token for a specific connected account by provider ID and provider account ID.\n * This is the preferred method when dealing with multiple accounts of the same provider.\n */\n async createServerProviderAccessTokenByAccount(\n userId: string,\n providerId: string,\n providerAccountId: string,\n scope: string,\n ): Promise<ConnectedAccountAccessTokenCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n urlString`/connected-accounts/${userId}/${providerId}/${providerAccountId}/access-token`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ scope }),\n },\n null,\n );\n return await response.json();\n }\n\n /**\n * List all connected accounts for a user.\n */\n async listServerConnectedAccounts(\n userId: string,\n ): Promise<ConnectedAccountCrud['Server']['List']> {\n const response = await this.sendServerRequest(\n urlString`/connected-accounts/${userId}`,\n { method: \"GET\" },\n null,\n );\n return await response.json();\n }\n\n async createServerUserSession(userId: string, expiresInMillis: number, isImpersonation: boolean): Promise<{ accessToken: string, refreshToken: string }> {\n const response = await this.sendServerRequest(\n \"/auth/sessions\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n user_id: userId,\n expires_in_millis: expiresInMillis,\n is_impersonation: isImpersonation,\n }),\n },\n null,\n );\n const result = await response.json();\n return {\n accessToken: result.access_token,\n refreshToken: result.refresh_token,\n };\n }\n\n async leaveServerTeam(\n options: {\n teamId: string,\n userId: string,\n },\n ) {\n await this.sendClientRequest(\n urlString`/team-memberships/${options.teamId}/${options.userId}`,\n {\n method: \"DELETE\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n }\n\n async updateServerTeamMemberProfile(options: {\n teamId: string,\n userId: string,\n profile: TeamMemberProfilesCrud['Server']['Update'],\n }) {\n await this.sendServerRequest(\n urlString`/team-member-profiles/${options.teamId}/${options.userId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(options.profile),\n },\n null,\n );\n }\n\n async grantServerTeamUserPermission(teamId: string, userId: string, permissionId: string) {\n await this.sendServerRequest(\n urlString`/team-permissions/${teamId}/${userId}/${permissionId}`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n }\n\n async grantServerProjectPermission(userId: string, permissionId: string) {\n await this.sendServerRequest(\n urlString`/project-permissions/${userId}/${permissionId}`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n }\n\n async revokeServerTeamUserPermission(teamId: string, userId: string, permissionId: string) {\n await this.sendServerRequest(\n urlString`/team-permissions/${teamId}/${userId}/${permissionId}`,\n {\n method: \"DELETE\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n }\n\n async revokeServerProjectPermission(userId: string, permissionId: string) {\n await this.sendServerRequest(\n urlString`/project-permissions/${userId}/${permissionId}`,\n {\n method: \"DELETE\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n }\n\n async deleteServerUser(userId: string) {\n await this.sendServerRequest(\n urlString`/users/${userId}`,\n {\n method: \"DELETE\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n }\n\n async createServerContactChannel(\n data: ContactChannelsCrud['Server']['Create'],\n ): Promise<ContactChannelsCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n \"/contact-channels\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async updateServerContactChannel(\n userId: string,\n contactChannelId: string,\n data: ContactChannelsCrud['Server']['Update'],\n ): Promise<ContactChannelsCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n urlString`/contact-channels/${userId}/${contactChannelId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async deleteServerContactChannel(\n userId: string,\n contactChannelId: string,\n ): Promise<void> {\n await this.sendServerRequest(\n urlString`/contact-channels/${userId}/${contactChannelId}`,\n {\n method: \"DELETE\",\n },\n null,\n );\n }\n\n async listServerContactChannels(\n userId: string,\n ): Promise<ContactChannelsCrud['Server']['Read'][]> {\n const response = await this.sendServerRequest(\n urlString`/contact-channels?user_id=${userId}`,\n {\n method: \"GET\",\n },\n null,\n );\n const json = await response.json() as ContactChannelsCrud['Server']['List'];\n return json.items;\n }\n\n async listServerNotificationCategories(\n userId: string,\n ): Promise<NotificationPreferenceCrud['Server']['Read'][]> {\n const response = await this.sendServerRequest(\n urlString`/emails/notification-preference/${userId}`,\n {\n method: \"GET\",\n },\n null,\n );\n const json = await response.json() as NotificationPreferenceCrud['Server']['List'];\n return json.items;\n }\n\n async setServerNotificationsEnabled(\n userId: string,\n notificationCategoryId: string,\n enabled: boolean,\n ): Promise<void> {\n await this.sendServerRequest(\n urlString`/emails/notification-preference/${userId}/${notificationCategoryId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n enabled,\n }),\n },\n null,\n );\n }\n\n async sendServerContactChannelVerificationEmail(\n userId: string,\n contactChannelId: string,\n callbackUrl: string,\n ): Promise<void> {\n await this.sendServerRequest(\n urlString`/contact-channels/${userId}/${contactChannelId}/send-verification-code`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ callback_url: callbackUrl }),\n },\n null,\n );\n }\n\n\n async listServerSessions(userId: string): Promise<SessionsCrud['Server']['List']> {\n const response = await this.sendServerRequest(\n urlString`/auth/sessions?user_id=${userId}`,\n {\n method: \"GET\",\n },\n null,\n );\n return await response.json();\n }\n\n async deleteServerSession(sessionId: string) {\n await this.sendServerRequest(\n urlString`/auth/sessions/${sessionId}`,\n {\n method: \"DELETE\",\n },\n null,\n );\n }\n\n\n async sendServerTeamInvitation(options: {\n email: string,\n teamId: string,\n callbackUrl: string,\n }): Promise<void> {\n await this.sendServerRequest(\n \"/team-invitations/send-code\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n email: options.email,\n team_id: options.teamId,\n callback_url: options.callbackUrl,\n }),\n },\n null,\n );\n }\n\n async updatePassword(\n options: { oldPassword: string, newPassword: string },\n ): Promise<KnownErrors[\"PasswordConfirmationMismatch\"] | KnownErrors[\"PasswordRequirementsNotMet\"] | undefined> {\n const res = await this.sendServerRequestAndCatchKnownError(\n \"/auth/password/update\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n old_password: options.oldPassword,\n new_password: options.newPassword,\n }),\n },\n null,\n [KnownErrors.PasswordConfirmationMismatch, KnownErrors.PasswordRequirementsNotMet]\n );\n\n if (res.status === \"error\") {\n return res.error;\n }\n }\n\n // OAuth Providers CRUD operations\n async createServerOAuthProvider(\n data: OAuthProviderCrud['Server']['Create'],\n ): Promise<OAuthProviderCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n \"/oauth-providers\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n\n async listServerOAuthProviders(\n options: {\n user_id?: string,\n } = {},\n ): Promise<OAuthProviderCrud['Server']['Read'][]> {\n const queryParams = new URLSearchParams(filterUndefined(options));\n const response = await this.sendServerRequest(\n `/oauth-providers${queryParams.toString() ? `?${queryParams.toString()}` : ''}`,\n {\n method: \"GET\",\n },\n null,\n );\n const result = await response.json();\n return result.items;\n }\n\n async updateServerOAuthProvider(\n userId: string,\n providerId: string,\n data: OAuthProviderCrud['Server']['Update'],\n ): Promise<OAuthProviderCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n urlString`/oauth-providers/${userId}/${providerId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async deleteServerOAuthProvider(\n userId: string,\n providerId: string,\n ): Promise<void> {\n const response = await this.sendServerRequest(\n urlString`/oauth-providers/${userId}/${providerId}`,\n {\n method: \"DELETE\",\n },\n null,\n );\n return await response.json();\n }\n\n async sendEmail(options: {\n userIds?: string[],\n allUsers?: true,\n themeId?: string | null | false,\n html?: string,\n subject?: string,\n notificationCategoryName?: string,\n templateId?: string,\n variables?: Record<string, any>,\n draftId?: string,\n scheduledAt?: Date,\n }): Promise<Result<void, KnownErrors[\"RequiresCustomEmailServer\"] | KnownErrors[\"SchemaError\"] | KnownErrors[\"UserIdDoesNotExist\"]>> {\n const res = await this.sendServerRequest(\n \"/emails/send-email\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n user_ids: options.userIds,\n all_users: options.allUsers,\n theme_id: options.themeId,\n html: options.html,\n subject: options.subject,\n notification_category_name: options.notificationCategoryName,\n template_id: options.templateId,\n variables: options.variables,\n draft_id: options.draftId,\n scheduled_at_millis: options.scheduledAt?.getTime(),\n }),\n },\n null,\n );\n return Result.ok(undefined);\n }\n\n async getEmailDeliveryInfo(): Promise<{\n stats: {\n hour: { sent: number, bounced: number, marked_as_spam: number },\n day: { sent: number, bounced: number, marked_as_spam: number },\n week: { sent: number, bounced: number, marked_as_spam: number },\n month: { sent: number, bounced: number, marked_as_spam: number },\n },\n capacity: {\n rate_per_second: number,\n boost_multiplier: number,\n penalty_factor: number,\n is_boost_active: boolean,\n boost_expires_at: string | null,\n },\n }> {\n const res = await this.sendServerRequest(\n \"/emails/delivery-info\",\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n },\n null,\n );\n return await res.json();\n }\n\n async activateEmailCapacityBoost(): Promise<{ expires_at: string }> {\n const res = await this.sendServerRequest(\n \"/emails/capacity-boost\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({}),\n },\n null,\n );\n return await res.json();\n }\n\n async updateItemQuantity(\n options: (\n { itemId: string, userId: string } |\n { itemId: string, teamId: string } |\n { itemId: string, customCustomerId: string }\n ),\n data: ItemCrud['Server']['Update'],\n ): Promise<void> {\n let customerType: \"user\" | \"team\" | \"custom\";\n let customerId: string;\n const itemId: string = options.itemId;\n\n if (\"userId\" in options) {\n customerType = \"user\";\n customerId = options.userId;\n } else if (\"teamId\" in options) {\n customerType = \"team\";\n customerId = options.teamId;\n } else if (\"customCustomerId\" in options) {\n customerType = \"custom\";\n customerId = options.customCustomerId;\n } else {\n throw new HexclaveAssertionError(\"updateItemQuantity requires one of userId, teamId, or customCustomerId\");\n }\n\n const queryParams = new URLSearchParams({ allow_negative: (data.allow_negative ?? false).toString() });\n await this.sendServerRequest(\n `/payments/items/${customerType}/${customerId}/${itemId}/update-quantity?${queryParams.toString()}`,\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({ delta: data.delta, expires_at: data.expires_at, description: data.description }),\n },\n null\n );\n }\n\n async grantProduct(\n options: {\n customerType: \"user\" | \"team\" | \"custom\",\n customerId: string,\n productId?: string,\n product?: yup.InferType<typeof inlineProductSchema>,\n quantity?: number,\n },\n ): Promise<void> {\n if (!options.productId && !options.product) {\n throw new HexclaveAssertionError(\"grantProduct requires either productId or product\");\n }\n if (options.productId && options.product) {\n throw new HexclaveAssertionError(\"grantProduct should not receive both productId and product\");\n }\n const body = filterUndefined({\n product_id: options.productId,\n product_inline: options.product,\n quantity: options.quantity,\n });\n await this.sendServerRequest(\n urlString`/payments/products/${options.customerType}/${options.customerId}`,\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(body),\n },\n null,\n );\n }\n\n async getDataVaultStoreValue(secret: string, storeId: string, key: string) {\n const hashedKey = await hashKey(secret, key);\n const response = await this.sendServerRequestAndCatchKnownError(\n `/data-vault/stores/${storeId}/get`,\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({ hashed_key: hashedKey }),\n },\n null,\n [KnownErrors.DataVaultStoreHashedKeyDoesNotExist] as const,\n );\n if (response.status === \"error\") {\n if (KnownErrors.DataVaultStoreHashedKeyDoesNotExist.isInstance(response.error)) {\n return null;\n } else {\n throw new HexclaveAssertionError(\"Unexpected uncaught error\", { cause: response.error });\n }\n }\n const json = await response.data.json();\n const encryptedValue = json.encrypted_value;\n if (typeof encryptedValue !== \"string\") throw new HexclaveAssertionError(\"encrypted_value is not a string\", { type: typeof encryptedValue });\n return await decryptValue(secret, key, encryptedValue);\n }\n\n async setDataVaultStoreValue(secret: string, storeId: string, key: string, value: string) {\n const hashedKey = await hashKey(secret, key);\n const encryptedValue = await encryptValue(secret, key, value);\n await this.sendServerRequest(\n `/data-vault/stores/${storeId}/set`,\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({ hashed_key: hashedKey, encrypted_value: encryptedValue }),\n },\n null,\n );\n }\n\n async initiateServerPasskeyRegistration(userId: string): Promise<Result<{ options_json: any, code: string }, KnownErrors[]>> {\n // Create a temporary session for this user to use for passkey registration\n // TODO instead of creating a new session, this should just call the endpoint in a way in which it doesn't require a session\n // (currently this shows up on session history etc... not ideal)\n const { accessToken, refreshToken } = await this.createServerUserSession(userId, 60000 * 2, false); // 2 minute session\n const tempSession = new InternalSession({\n accessToken,\n refreshToken,\n refreshAccessTokenCallback: async () => null, // No refresh for temporary sessions\n });\n\n // Use the existing initiatePasskeyRegistration method with the temporary session\n return await this.initiatePasskeyRegistration({}, tempSession);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server-interface.js","names":["HexclaveClientInterface","Result","KnownErrors","HexclaveAssertionError","InternalSession"],"sources":["../../src/interface/server-interface.ts"],"sourcesContent":["import * as yup from \"yup\";\nimport { decryptValue, encryptValue, hashKey } from \"../helpers/vault/client-side\";\nimport { KnownErrors } from \"../known-errors\";\nimport { inlineProductSchema } from \"../schema-fields\";\nimport { AccessToken, InternalSession, RefreshToken } from \"../sessions\";\nimport { HexclaveAssertionError } from \"../utils/errors\";\nimport { filterUndefined } from \"../utils/objects\";\nimport { Result } from \"../utils/results\";\nimport { urlString } from \"../utils/urls\";\nimport {\n ClientInterfaceOptions,\n HexclaveClientInterface\n} from \"./client-interface\";\nimport { ConnectedAccountAccessTokenCrud, ConnectedAccountCrud } from \"./crud/connected-accounts\";\nimport { ContactChannelsCrud } from \"./crud/contact-channels\";\nimport { CurrentUserCrud } from \"./crud/current-user\";\nimport { ItemCrud } from \"./crud/items\";\nimport { NotificationPreferenceCrud } from \"./crud/notification-preferences\";\nimport { OAuthProviderCrud } from \"./crud/oauth-providers\";\nimport { ProjectPermissionsCrud } from \"./crud/project-permissions\";\nimport { SessionsCrud } from \"./crud/sessions\";\nimport { TeamInvitationCrud } from \"./crud/team-invitation\";\nimport { TeamMemberProfilesCrud } from \"./crud/team-member-profiles\";\nimport { TeamMembershipsCrud } from \"./crud/team-memberships\";\nimport { TeamPermissionsCrud } from \"./crud/team-permissions\";\nimport { TeamsCrud } from \"./crud/teams\";\nimport { UsersCrud } from \"./crud/users\";\n\nexport type ServerAuthApplicationOptions = (\n & ClientInterfaceOptions\n & (\n | {\n readonly secretServerKey: string,\n }\n | {\n readonly projectOwnerSession: InternalSession | (() => Promise<string | null>),\n }\n )\n);\n\nexport class HexclaveServerInterface extends HexclaveClientInterface {\n constructor(public override options: ServerAuthApplicationOptions) {\n super(options);\n }\n\n protected async sendServerRequest(path: string, options: RequestInit, session: InternalSession | null, requestType: \"server\" | \"admin\" = \"server\") {\n return await this.sendClientRequest(\n path,\n {\n ...options,\n headers: {\n // Hexclave rebrand: emit x-hexclave-* request header; the backend proxy dual-accepts both names.\n \"x-hexclave-secret-server-key\": \"secretServerKey\" in this.options ? this.options.secretServerKey : \"\",\n ...options.headers,\n },\n },\n session,\n requestType,\n );\n }\n\n override async getCustomerBilling(\n customerType: \"user\" | \"team\",\n customerId: string,\n session: InternalSession | null,\n ): Promise<{\n has_customer: boolean,\n default_payment_method: {\n id: string,\n brand: string | null,\n last4: string | null,\n exp_month: number | null,\n exp_year: number | null,\n } | null,\n }> {\n const response = await this.sendServerRequest(\n urlString`/payments/billing/${customerType}/${customerId}`,\n {},\n session,\n );\n return await response.json();\n }\n\n override async createCustomerPaymentMethodSetupIntent(\n customerType: \"user\" | \"team\",\n customerId: string,\n session: InternalSession | null,\n ): Promise<{\n client_secret: string,\n stripe_account_id: string,\n }> {\n const response = await this.sendServerRequest(\n urlString`/payments/payment-method/${customerType}/${customerId}/setup-intent`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n session,\n );\n return await response.json();\n }\n\n override async setDefaultCustomerPaymentMethodFromSetupIntent(\n customerType: \"user\" | \"team\",\n customerId: string,\n setupIntentId: string,\n session: InternalSession | null,\n ): Promise<{\n default_payment_method: {\n id: string,\n brand: string | null,\n last4: string | null,\n exp_month: number | null,\n exp_year: number | null,\n },\n }> {\n const response = await this.sendServerRequest(\n urlString`/payments/payment-method/${customerType}/${customerId}/set-default`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n setup_intent_id: setupIntentId,\n }),\n },\n session,\n );\n return await response.json();\n }\n\n\n protected async sendServerRequestAndCatchKnownError<E extends typeof KnownErrors[keyof KnownErrors]>(\n path: string,\n requestOptions: RequestInit,\n tokenStoreOrNull: InternalSession | null,\n errorsToCatch: readonly E[],\n ): Promise<Result<\n Response & {\n usedTokens: {\n accessToken: AccessToken,\n refreshToken: RefreshToken | null,\n } | null,\n },\n InstanceType<E>\n >> {\n try {\n return Result.ok(await this.sendServerRequest(path, requestOptions, tokenStoreOrNull));\n } catch (e) {\n for (const errorType of errorsToCatch) {\n if (errorType.isInstance(e)) {\n return Result.error(e as InstanceType<E>);\n }\n }\n throw e;\n }\n }\n\n async createServerUser(data: UsersCrud['Server']['Create']): Promise<UsersCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n \"/users\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async getServerUserByToken(session: InternalSession): Promise<CurrentUserCrud['Server']['Read'] | null> {\n const responseOrError = await this.sendServerRequestAndCatchKnownError(\n \"/users/me\",\n {},\n session,\n [KnownErrors.CannotGetOwnUserWithoutUser],\n );\n if (responseOrError.status === \"error\") {\n if (KnownErrors.CannotGetOwnUserWithoutUser.isInstance(responseOrError.error)) {\n return null;\n } else {\n throw new HexclaveAssertionError(\"Unexpected uncaught error\", { cause: responseOrError.error });\n }\n }\n const response = responseOrError.data;\n const user: CurrentUserCrud['Server']['Read'] = await response.json();\n if (!(user as any)) throw new HexclaveAssertionError(\"User endpoint returned null; this should never happen\");\n return user;\n }\n\n async getServerUserById(userId: string): Promise<Result<UsersCrud['Server']['Read']>> {\n const responseOrError = await this.sendServerRequestAndCatchKnownError(\n urlString`/users/${userId}`,\n {},\n null,\n [KnownErrors.UserNotFound],\n );\n if (responseOrError.status === \"error\") {\n return Result.error(responseOrError.error);\n }\n const user: UsersCrud['Server']['Read'] = await responseOrError.data.json();\n return Result.ok(user);\n }\n\n async listServerTeamInvitations(options: {\n teamId: string,\n }): Promise<TeamInvitationCrud['Server']['Read'][]> {\n const response = await this.sendServerRequest(\n urlString`/team-invitations?team_id=${options.teamId}`,\n {},\n null,\n );\n const result = await response.json() as TeamInvitationCrud['Server']['List'];\n return result.items;\n }\n\n async revokeServerTeamInvitation(invitationId: string, teamId: string) {\n await this.sendServerRequest(\n urlString`/team-invitations/${invitationId}?team_id=${teamId}`,\n { method: \"DELETE\" },\n null,\n );\n }\n\n async listServerTeamMemberProfiles(\n options: {\n teamId: string,\n },\n ): Promise<TeamMemberProfilesCrud['Server']['Read'][]> {\n const response = await this.sendServerRequest(\n urlString`/team-member-profiles?team_id=${options.teamId}`,\n {},\n null,\n );\n const result = await response.json() as TeamMemberProfilesCrud['Server']['List'];\n return result.items;\n }\n\n async getServerTeamMemberProfile(\n options: {\n teamId: string,\n userId: string,\n },\n ): Promise<TeamMemberProfilesCrud['Client']['Read']> {\n const response = await this.sendServerRequest(\n urlString`/team-member-profiles/${options.teamId}/${options.userId}`,\n {},\n null,\n );\n return await response.json();\n }\n\n async listServerTeamPermissions(\n options: {\n userId?: string,\n teamId?: string,\n recursive: boolean,\n },\n session: InternalSession | null,\n ): Promise<TeamPermissionsCrud['Server']['Read'][]> {\n const response = await this.sendServerRequest(\n `/team-permissions?${new URLSearchParams(filterUndefined({\n user_id: options.userId,\n team_id: options.teamId,\n recursive: options.recursive.toString(),\n }))}`,\n {},\n session,\n );\n const result = await response.json() as TeamPermissionsCrud['Server']['List'];\n return result.items;\n }\n\n async listServerProjectPermissions(\n options: {\n userId?: string,\n recursive: boolean,\n },\n session: InternalSession | null,\n ): Promise<ProjectPermissionsCrud['Server']['Read'][]> {\n const response = await this.sendServerRequest(\n `/project-permissions?${new URLSearchParams(filterUndefined({\n user_id: options.userId,\n recursive: options.recursive.toString(),\n }))}`,\n {},\n session,\n );\n const result = await response.json() as ProjectPermissionsCrud['Server']['List'];\n return result.items;\n }\n\n async listServerUsers(options: (\n & {\n cursor?: string,\n limit?: number,\n orderBy?: 'signedUpAt' | 'lastActiveAt',\n desc?: boolean,\n query?: string,\n excludedEmailDomains?: string[],\n includeRestricted?: boolean,\n teamId?: string,\n }\n & (\n {\n includeAnonymous?: boolean,\n onlyAnonymous?: false,\n }\n | {\n includeAnonymous: true,\n onlyAnonymous: true,\n }\n )\n )): Promise<UsersCrud['Server']['List']> {\n const searchParams = new URLSearchParams(filterUndefined({\n cursor: options.cursor,\n limit: options.limit?.toString(),\n desc: options.desc?.toString(),\n team_id: options.teamId,\n ...options.orderBy ? {\n order_by: {\n signedUpAt: \"signed_up_at\",\n lastActiveAt: \"last_active_at\",\n }[options.orderBy],\n } : {},\n ...options.query ? {\n query: options.query,\n } : {},\n ...options.excludedEmailDomains && options.excludedEmailDomains.length > 0 ? {\n excluded_email_domains: options.excludedEmailDomains.join(\",\"), // backend expects comma-separated list of domains.\n } : {},\n ...options.includeRestricted ? {\n include_restricted: 'true',\n } : {},\n ...options.includeAnonymous ? {\n include_anonymous: 'true',\n } : {},\n ...options.onlyAnonymous ? {\n only_anonymous: 'true',\n } : {},\n }));\n const response = await this.sendServerRequest(\"/users?\" + searchParams.toString(), {}, null);\n return await response.json();\n }\n\n async listServerTeams(options?: {\n userId?: string,\n }): Promise<TeamsCrud['Server']['Read'][]> {\n const result = await this.listServerTeamsPaginated(options);\n return result.items;\n }\n\n async listServerTeamsPaginated(options?: {\n userId?: string,\n orderBy?: 'createdAt',\n desc?: boolean,\n cursor?: string,\n limit?: number,\n query?: string,\n }): Promise<TeamsCrud['Server']['List']> {\n const response = await this.sendServerRequest(\n `/teams?${new URLSearchParams(filterUndefined({\n user_id: options?.userId,\n // SDK option uses camelCase `createdAt`; backend uses snake_case.\n order_by: options?.orderBy === 'createdAt' ? 'created_at' : options?.orderBy,\n desc: options?.desc !== undefined ? String(options.desc) : undefined,\n cursor: options?.cursor,\n limit: options?.limit?.toString(),\n query: options?.query,\n }))}`,\n {},\n null\n );\n return await response.json() as TeamsCrud['Server']['List'];\n }\n\n async getServerTeam(teamId: string): Promise<TeamsCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n `/teams/${teamId}`,\n {},\n null\n );\n return await response.json();\n }\n\n async listServerTeamUsers(teamId: string): Promise<UsersCrud['Server']['Read'][]> {\n const response = await this.sendServerRequest(`/users?team_id=${teamId}`, {}, null);\n const result = await response.json() as UsersCrud['Server']['List'];\n return result.items;\n }\n\n /* when passing a session, the user will be added to the team */\n async createServerTeam(data: TeamsCrud['Server']['Create']): Promise<TeamsCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n \"/teams\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null\n );\n return await response.json();\n }\n\n async updateServerTeam(teamId: string, data: TeamsCrud['Server']['Update']): Promise<TeamsCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n urlString`/teams/${teamId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async deleteServerTeam(teamId: string): Promise<void> {\n await this.sendServerRequest(\n urlString`/teams/${teamId}`,\n { method: \"DELETE\" },\n null,\n );\n }\n\n async addServerUserToTeam(options: {\n userId: string,\n teamId: string,\n }): Promise<TeamMembershipsCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n urlString`/team-memberships/${options.teamId}/${options.userId}`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n return await response.json();\n }\n\n async removeServerUserFromTeam(options: {\n userId: string,\n teamId: string,\n }) {\n await this.sendServerRequest(\n urlString`/team-memberships/${options.teamId}/${options.userId}`,\n {\n method: \"DELETE\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n }\n\n async listServerUserTeamInvitations(userId: string): Promise<TeamInvitationCrud['Server']['Read'][]> {\n const response = await this.sendServerRequest(\n \"/team-invitations?\" + new URLSearchParams({ user_id: userId }),\n {},\n null,\n );\n const result = await response.json() as TeamInvitationCrud['Server']['List'];\n return result.items;\n }\n\n async acceptServerTeamInvitationById(\n invitationId: string,\n userId: string,\n ) {\n await this.sendServerRequest(\n urlString`/team-invitations/${invitationId}/accept` + \"?\" + new URLSearchParams({ user_id: userId }),\n { method: \"POST\" },\n null,\n );\n }\n\n async updateServerUser(userId: string, update: UsersCrud['Server']['Update']): Promise<UsersCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n urlString`/users/${userId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(update),\n },\n null,\n );\n return await response.json();\n }\n\n async createServerProviderAccessToken(\n userId: string,\n provider: string,\n scope: string,\n ): Promise<ConnectedAccountAccessTokenCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n urlString`/connected-accounts/${userId}/${provider}/access-token`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ scope }),\n },\n null,\n );\n return await response.json();\n }\n\n /**\n * Get access token for a specific connected account by provider ID and provider account ID.\n * This is the preferred method when dealing with multiple accounts of the same provider.\n */\n async createServerProviderAccessTokenByAccount(\n userId: string,\n providerId: string,\n providerAccountId: string,\n scope: string,\n ): Promise<ConnectedAccountAccessTokenCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n urlString`/connected-accounts/${userId}/${providerId}/${providerAccountId}/access-token`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ scope }),\n },\n null,\n );\n return await response.json();\n }\n\n /**\n * List all connected accounts for a user.\n */\n async listServerConnectedAccounts(\n userId: string,\n ): Promise<ConnectedAccountCrud['Server']['List']> {\n const response = await this.sendServerRequest(\n urlString`/connected-accounts/${userId}`,\n { method: \"GET\" },\n null,\n );\n return await response.json();\n }\n\n async createServerUserSession(userId: string, expiresInMillis: number, isImpersonation: boolean): Promise<{ accessToken: string, refreshToken: string }> {\n const response = await this.sendServerRequest(\n \"/auth/sessions\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n user_id: userId,\n expires_in_millis: expiresInMillis,\n is_impersonation: isImpersonation,\n }),\n },\n null,\n );\n const result = await response.json();\n return {\n accessToken: result.access_token,\n refreshToken: result.refresh_token,\n };\n }\n\n async leaveServerTeam(\n options: {\n teamId: string,\n userId: string,\n },\n ) {\n await this.sendClientRequest(\n urlString`/team-memberships/${options.teamId}/${options.userId}`,\n {\n method: \"DELETE\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n }\n\n async updateServerTeamMemberProfile(options: {\n teamId: string,\n userId: string,\n profile: TeamMemberProfilesCrud['Server']['Update'],\n }) {\n await this.sendServerRequest(\n urlString`/team-member-profiles/${options.teamId}/${options.userId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(options.profile),\n },\n null,\n );\n }\n\n async grantServerTeamUserPermission(teamId: string, userId: string, permissionId: string) {\n await this.sendServerRequest(\n urlString`/team-permissions/${teamId}/${userId}/${permissionId}`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n }\n\n async grantServerProjectPermission(userId: string, permissionId: string) {\n await this.sendServerRequest(\n urlString`/project-permissions/${userId}/${permissionId}`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n }\n\n async revokeServerTeamUserPermission(teamId: string, userId: string, permissionId: string) {\n await this.sendServerRequest(\n urlString`/team-permissions/${teamId}/${userId}/${permissionId}`,\n {\n method: \"DELETE\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n }\n\n async revokeServerProjectPermission(userId: string, permissionId: string) {\n await this.sendServerRequest(\n urlString`/project-permissions/${userId}/${permissionId}`,\n {\n method: \"DELETE\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n }\n\n async deleteServerUser(userId: string) {\n await this.sendServerRequest(\n urlString`/users/${userId}`,\n {\n method: \"DELETE\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n }\n\n async createServerContactChannel(\n data: ContactChannelsCrud['Server']['Create'],\n ): Promise<ContactChannelsCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n \"/contact-channels\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async updateServerContactChannel(\n userId: string,\n contactChannelId: string,\n data: ContactChannelsCrud['Server']['Update'],\n ): Promise<ContactChannelsCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n urlString`/contact-channels/${userId}/${contactChannelId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async deleteServerContactChannel(\n userId: string,\n contactChannelId: string,\n ): Promise<void> {\n await this.sendServerRequest(\n urlString`/contact-channels/${userId}/${contactChannelId}`,\n {\n method: \"DELETE\",\n },\n null,\n );\n }\n\n async listServerContactChannels(\n userId: string,\n ): Promise<ContactChannelsCrud['Server']['Read'][]> {\n const response = await this.sendServerRequest(\n urlString`/contact-channels?user_id=${userId}`,\n {\n method: \"GET\",\n },\n null,\n );\n const json = await response.json() as ContactChannelsCrud['Server']['List'];\n return json.items;\n }\n\n async listServerNotificationCategories(\n userId: string,\n ): Promise<NotificationPreferenceCrud['Server']['Read'][]> {\n const response = await this.sendServerRequest(\n urlString`/emails/notification-preference/${userId}`,\n {\n method: \"GET\",\n },\n null,\n );\n const json = await response.json() as NotificationPreferenceCrud['Server']['List'];\n return json.items;\n }\n\n async setServerNotificationsEnabled(\n userId: string,\n notificationCategoryId: string,\n enabled: boolean,\n ): Promise<void> {\n await this.sendServerRequest(\n urlString`/emails/notification-preference/${userId}/${notificationCategoryId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n enabled,\n }),\n },\n null,\n );\n }\n\n async sendServerContactChannelVerificationEmail(\n userId: string,\n contactChannelId: string,\n callbackUrl: string,\n ): Promise<void> {\n await this.sendServerRequest(\n urlString`/contact-channels/${userId}/${contactChannelId}/send-verification-code`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ callback_url: callbackUrl }),\n },\n null,\n );\n }\n\n\n async listServerSessions(userId: string): Promise<SessionsCrud['Server']['List']> {\n const response = await this.sendServerRequest(\n urlString`/auth/sessions?user_id=${userId}`,\n {\n method: \"GET\",\n },\n null,\n );\n return await response.json();\n }\n\n async deleteServerSession(sessionId: string) {\n await this.sendServerRequest(\n urlString`/auth/sessions/${sessionId}`,\n {\n method: \"DELETE\",\n },\n null,\n );\n }\n\n\n async sendServerTeamInvitation(options: {\n email: string,\n teamId: string,\n callbackUrl: string,\n }): Promise<void> {\n await this.sendServerRequest(\n \"/team-invitations/send-code\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n email: options.email,\n team_id: options.teamId,\n callback_url: options.callbackUrl,\n }),\n },\n null,\n );\n }\n\n async updatePassword(\n options: { oldPassword: string, newPassword: string },\n ): Promise<KnownErrors[\"PasswordConfirmationMismatch\"] | KnownErrors[\"PasswordRequirementsNotMet\"] | undefined> {\n const res = await this.sendServerRequestAndCatchKnownError(\n \"/auth/password/update\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n old_password: options.oldPassword,\n new_password: options.newPassword,\n }),\n },\n null,\n [KnownErrors.PasswordConfirmationMismatch, KnownErrors.PasswordRequirementsNotMet]\n );\n\n if (res.status === \"error\") {\n return res.error;\n }\n }\n\n // OAuth Providers CRUD operations\n async createServerOAuthProvider(\n data: OAuthProviderCrud['Server']['Create'],\n ): Promise<OAuthProviderCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n \"/oauth-providers\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n\n async listServerOAuthProviders(\n options: {\n user_id?: string,\n } = {},\n ): Promise<OAuthProviderCrud['Server']['Read'][]> {\n const queryParams = new URLSearchParams(filterUndefined(options));\n const response = await this.sendServerRequest(\n `/oauth-providers${queryParams.toString() ? `?${queryParams.toString()}` : ''}`,\n {\n method: \"GET\",\n },\n null,\n );\n const result = await response.json();\n return result.items;\n }\n\n async updateServerOAuthProvider(\n userId: string,\n providerId: string,\n data: OAuthProviderCrud['Server']['Update'],\n ): Promise<OAuthProviderCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n urlString`/oauth-providers/${userId}/${providerId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async deleteServerOAuthProvider(\n userId: string,\n providerId: string,\n ): Promise<void> {\n const response = await this.sendServerRequest(\n urlString`/oauth-providers/${userId}/${providerId}`,\n {\n method: \"DELETE\",\n },\n null,\n );\n return await response.json();\n }\n\n async sendEmail(options: {\n userIds?: string[],\n allUsers?: true,\n emails?: string[],\n themeId?: string | null | false,\n html?: string,\n subject?: string,\n notificationCategoryName?: string,\n templateId?: string,\n variables?: Record<string, any>,\n draftId?: string,\n scheduledAt?: Date,\n }): Promise<Result<void, KnownErrors[\"RequiresCustomEmailServer\"] | KnownErrors[\"SchemaError\"] | KnownErrors[\"UserIdDoesNotExist\"]>> {\n const res = await this.sendServerRequest(\n \"/emails/send-email\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n user_ids: options.userIds,\n all_users: options.allUsers,\n emails: options.emails,\n theme_id: options.themeId,\n html: options.html,\n subject: options.subject,\n notification_category_name: options.notificationCategoryName,\n template_id: options.templateId,\n variables: options.variables,\n draft_id: options.draftId,\n scheduled_at_millis: options.scheduledAt?.getTime(),\n }),\n },\n null,\n );\n return Result.ok(undefined);\n }\n\n async getEmailDeliveryInfo(): Promise<{\n stats: {\n hour: { sent: number, bounced: number, marked_as_spam: number },\n day: { sent: number, bounced: number, marked_as_spam: number },\n week: { sent: number, bounced: number, marked_as_spam: number },\n month: { sent: number, bounced: number, marked_as_spam: number },\n },\n capacity: {\n rate_per_second: number,\n boost_multiplier: number,\n penalty_factor: number,\n is_boost_active: boolean,\n boost_expires_at: string | null,\n },\n }> {\n const res = await this.sendServerRequest(\n \"/emails/delivery-info\",\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n },\n null,\n );\n return await res.json();\n }\n\n async activateEmailCapacityBoost(): Promise<{ expires_at: string }> {\n const res = await this.sendServerRequest(\n \"/emails/capacity-boost\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({}),\n },\n null,\n );\n return await res.json();\n }\n\n async updateItemQuantity(\n options: (\n { itemId: string, userId: string } |\n { itemId: string, teamId: string } |\n { itemId: string, customCustomerId: string }\n ),\n data: ItemCrud['Server']['Update'],\n ): Promise<void> {\n let customerType: \"user\" | \"team\" | \"custom\";\n let customerId: string;\n const itemId: string = options.itemId;\n\n if (\"userId\" in options) {\n customerType = \"user\";\n customerId = options.userId;\n } else if (\"teamId\" in options) {\n customerType = \"team\";\n customerId = options.teamId;\n } else if (\"customCustomerId\" in options) {\n customerType = \"custom\";\n customerId = options.customCustomerId;\n } else {\n throw new HexclaveAssertionError(\"updateItemQuantity requires one of userId, teamId, or customCustomerId\");\n }\n\n const queryParams = new URLSearchParams({ allow_negative: (data.allow_negative ?? false).toString() });\n await this.sendServerRequest(\n `/payments/items/${customerType}/${customerId}/${itemId}/update-quantity?${queryParams.toString()}`,\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({ delta: data.delta, expires_at: data.expires_at, description: data.description }),\n },\n null\n );\n }\n\n async grantProduct(\n options: {\n customerType: \"user\" | \"team\" | \"custom\",\n customerId: string,\n productId?: string,\n product?: yup.InferType<typeof inlineProductSchema>,\n quantity?: number,\n },\n ): Promise<void> {\n if (!options.productId && !options.product) {\n throw new HexclaveAssertionError(\"grantProduct requires either productId or product\");\n }\n if (options.productId && options.product) {\n throw new HexclaveAssertionError(\"grantProduct should not receive both productId and product\");\n }\n const body = filterUndefined({\n product_id: options.productId,\n product_inline: options.product,\n quantity: options.quantity,\n });\n await this.sendServerRequest(\n urlString`/payments/products/${options.customerType}/${options.customerId}`,\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(body),\n },\n null,\n );\n }\n\n async getDataVaultStoreValue(secret: string, storeId: string, key: string) {\n const hashedKey = await hashKey(secret, key);\n const response = await this.sendServerRequestAndCatchKnownError(\n `/data-vault/stores/${storeId}/get`,\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({ hashed_key: hashedKey }),\n },\n null,\n [KnownErrors.DataVaultStoreHashedKeyDoesNotExist] as const,\n );\n if (response.status === \"error\") {\n if (KnownErrors.DataVaultStoreHashedKeyDoesNotExist.isInstance(response.error)) {\n return null;\n } else {\n throw new HexclaveAssertionError(\"Unexpected uncaught error\", { cause: response.error });\n }\n }\n const json = await response.data.json();\n const encryptedValue = json.encrypted_value;\n if (typeof encryptedValue !== \"string\") throw new HexclaveAssertionError(\"encrypted_value is not a string\", { type: typeof encryptedValue });\n return await decryptValue(secret, key, encryptedValue);\n }\n\n async setDataVaultStoreValue(secret: string, storeId: string, key: string, value: string) {\n const hashedKey = await hashKey(secret, key);\n const encryptedValue = await encryptValue(secret, key, value);\n await this.sendServerRequest(\n `/data-vault/stores/${storeId}/set`,\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({ hashed_key: hashedKey, encrypted_value: encryptedValue }),\n },\n null,\n );\n }\n\n async initiateServerPasskeyRegistration(userId: string): Promise<Result<{ options_json: any, code: string }, KnownErrors[]>> {\n // Create a temporary session for this user to use for passkey registration\n // TODO instead of creating a new session, this should just call the endpoint in a way in which it doesn't require a session\n // (currently this shows up on session history etc... not ideal)\n const { accessToken, refreshToken } = await this.createServerUserSession(userId, 60000 * 2, false); // 2 minute session\n const tempSession = new InternalSession({\n accessToken,\n refreshToken,\n refreshAccessTokenCallback: async () => null, // No refresh for temporary sessions\n });\n\n // Use the existing initiatePasskeyRegistration method with the temporary session\n return await this.initiatePasskeyRegistration({}, tempSession);\n }\n}\n"],"mappings":"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"}
|
|
@@ -21,9 +21,9 @@ declare const webhookEvents: readonly [WebhookEvent<yup$1.ObjectSchema<{
|
|
|
21
21
|
client_read_only_metadata?: {} | null | undefined;
|
|
22
22
|
server_metadata?: {} | null | undefined;
|
|
23
23
|
id: string;
|
|
24
|
-
created_at_millis: number;
|
|
25
24
|
display_name: string;
|
|
26
25
|
profile_image_url: string | null;
|
|
26
|
+
created_at_millis: number;
|
|
27
27
|
} | null;
|
|
28
28
|
selected_team_id: string | null;
|
|
29
29
|
profile_image_url: string | null;
|
|
@@ -111,9 +111,9 @@ declare const webhookEvents: readonly [WebhookEvent<yup$1.ObjectSchema<{
|
|
|
111
111
|
client_read_only_metadata?: {} | null | undefined;
|
|
112
112
|
server_metadata?: {} | null | undefined;
|
|
113
113
|
id: string;
|
|
114
|
-
created_at_millis: number;
|
|
115
114
|
display_name: string;
|
|
116
115
|
profile_image_url: string | null;
|
|
116
|
+
created_at_millis: number;
|
|
117
117
|
} | null;
|
|
118
118
|
selected_team_id: string | null;
|
|
119
119
|
profile_image_url: string | null;
|
package/dist/known-errors.d.ts
CHANGED
|
@@ -98,7 +98,7 @@ declare const KnownErrors: {
|
|
|
98
98
|
};
|
|
99
99
|
AccessTypeWithoutProjectId: KnownErrorConstructor<KnownError & KnownErrorBrand<"PROJECT_AUTHENTICATION_ERROR"> & {
|
|
100
100
|
constructorArgs: [statusCode: number, humanReadableMessage: string, details?: Json | undefined];
|
|
101
|
-
} & KnownErrorBrand<"INVALID_PROJECT_AUTHENTICATION"> & KnownErrorBrand<"ACCESS_TYPE_WITHOUT_PROJECT_ID">, [accessType: "
|
|
101
|
+
} & KnownErrorBrand<"INVALID_PROJECT_AUTHENTICATION"> & KnownErrorBrand<"ACCESS_TYPE_WITHOUT_PROJECT_ID">, [accessType: "client" | "server" | "admin"]> & {
|
|
102
102
|
errorCode: "ACCESS_TYPE_WITHOUT_PROJECT_ID";
|
|
103
103
|
};
|
|
104
104
|
AccessTypeRequired: KnownErrorConstructor<KnownError & KnownErrorBrand<"PROJECT_AUTHENTICATION_ERROR"> & {
|
|
@@ -111,7 +111,7 @@ declare const KnownErrors: {
|
|
|
111
111
|
};
|
|
112
112
|
InsufficientAccessType: KnownErrorConstructor<KnownError & KnownErrorBrand<"PROJECT_AUTHENTICATION_ERROR"> & {
|
|
113
113
|
constructorArgs: [statusCode: number, humanReadableMessage: string, details?: Json | undefined];
|
|
114
|
-
} & KnownErrorBrand<"INVALID_PROJECT_AUTHENTICATION"> & KnownErrorBrand<"INSUFFICIENT_ACCESS_TYPE">, [actualAccessType: "
|
|
114
|
+
} & KnownErrorBrand<"INVALID_PROJECT_AUTHENTICATION"> & KnownErrorBrand<"INSUFFICIENT_ACCESS_TYPE">, [actualAccessType: "client" | "server" | "admin", allowedAccessTypes: ("client" | "server" | "admin")[]]> & {
|
|
115
115
|
errorCode: "INSUFFICIENT_ACCESS_TYPE";
|
|
116
116
|
};
|
|
117
117
|
InvalidPublishableClientKey: KnownErrorConstructor<KnownError & KnownErrorBrand<"PROJECT_AUTHENTICATION_ERROR"> & {
|
package/dist/schema-fields.d.ts
CHANGED
|
@@ -113,7 +113,7 @@ declare const moneyAmountSchema: (currency: Currency) => yup$1.StringSchema<stri
|
|
|
113
113
|
*/
|
|
114
114
|
declare const strictEmailSchema: (message: string | undefined) => yup$1.StringSchema<string | undefined, yup$1.AnyObject, undefined, "">;
|
|
115
115
|
declare const emailSchema: yup$1.StringSchema<string | undefined, yup$1.AnyObject, undefined, "">;
|
|
116
|
-
declare const clientOrHigherAuthTypeSchema: yup$1.StringSchema<"
|
|
116
|
+
declare const clientOrHigherAuthTypeSchema: yup$1.StringSchema<"client" | "server" | "admin", yup$1.AnyObject, undefined, "">;
|
|
117
117
|
declare const serverOrHigherAuthTypeSchema: yup$1.StringSchema<"server" | "admin", yup$1.AnyObject, undefined, "">;
|
|
118
118
|
declare const adminAuthTypeSchema: yup$1.StringSchema<"admin", yup$1.AnyObject, undefined, "">;
|
|
119
119
|
declare const projectIdSchema: yup$1.StringSchema<string | undefined, yup$1.AnyObject, undefined, "">;
|
|
@@ -203,6 +203,9 @@ declare const productPriceSchema: yup$1.ObjectSchema<{
|
|
|
203
203
|
CAD: undefined;
|
|
204
204
|
}, "">;
|
|
205
205
|
declare const pricesSchema: yup$1.MixedSchema<Record<string, {
|
|
206
|
+
interval?: DayInterval | undefined;
|
|
207
|
+
freeTrial?: DayInterval | undefined;
|
|
208
|
+
serverOnly?: boolean | undefined;
|
|
206
209
|
USD?: string | undefined;
|
|
207
210
|
EUR?: string | undefined;
|
|
208
211
|
GBP?: string | undefined;
|
|
@@ -210,9 +213,6 @@ declare const pricesSchema: yup$1.MixedSchema<Record<string, {
|
|
|
210
213
|
INR?: string | undefined;
|
|
211
214
|
AUD?: string | undefined;
|
|
212
215
|
CAD?: string | undefined;
|
|
213
|
-
interval?: DayInterval | undefined;
|
|
214
|
-
serverOnly?: boolean | undefined;
|
|
215
|
-
freeTrial?: DayInterval | undefined;
|
|
216
216
|
}>, yup$1.AnyObject, undefined, "">;
|
|
217
217
|
declare const productSchema: yup$1.ObjectSchema<{
|
|
218
218
|
displayName: string | undefined;
|
|
@@ -223,6 +223,9 @@ declare const productSchema: yup$1.ObjectSchema<{
|
|
|
223
223
|
serverOnly: boolean | undefined;
|
|
224
224
|
stackable: boolean | undefined;
|
|
225
225
|
prices: Record<string, {
|
|
226
|
+
interval?: DayInterval | undefined;
|
|
227
|
+
freeTrial?: DayInterval | undefined;
|
|
228
|
+
serverOnly?: boolean | undefined;
|
|
226
229
|
USD?: string | undefined;
|
|
227
230
|
EUR?: string | undefined;
|
|
228
231
|
GBP?: string | undefined;
|
|
@@ -230,9 +233,6 @@ declare const productSchema: yup$1.ObjectSchema<{
|
|
|
230
233
|
INR?: string | undefined;
|
|
231
234
|
AUD?: string | undefined;
|
|
232
235
|
CAD?: string | undefined;
|
|
233
|
-
interval?: DayInterval | undefined;
|
|
234
|
-
serverOnly?: boolean | undefined;
|
|
235
|
-
freeTrial?: DayInterval | undefined;
|
|
236
236
|
}>;
|
|
237
237
|
includedItems: Record<string, {
|
|
238
238
|
repeat?: "never" | DayInterval | undefined;
|
|
@@ -262,6 +262,9 @@ declare const productSchemaWithMetadata: yup$1.ObjectSchema<{
|
|
|
262
262
|
serverOnly: boolean | undefined;
|
|
263
263
|
stackable: boolean | undefined;
|
|
264
264
|
prices: Record<string, {
|
|
265
|
+
interval?: DayInterval | undefined;
|
|
266
|
+
freeTrial?: DayInterval | undefined;
|
|
267
|
+
serverOnly?: boolean | undefined;
|
|
265
268
|
USD?: string | undefined;
|
|
266
269
|
EUR?: string | undefined;
|
|
267
270
|
GBP?: string | undefined;
|
|
@@ -269,9 +272,6 @@ declare const productSchemaWithMetadata: yup$1.ObjectSchema<{
|
|
|
269
272
|
INR?: string | undefined;
|
|
270
273
|
AUD?: string | undefined;
|
|
271
274
|
CAD?: string | undefined;
|
|
272
|
-
interval?: DayInterval | undefined;
|
|
273
|
-
serverOnly?: boolean | undefined;
|
|
274
|
-
freeTrial?: DayInterval | undefined;
|
|
275
275
|
}>;
|
|
276
276
|
includedItems: Record<string, {
|
|
277
277
|
repeat?: "never" | DayInterval | undefined;
|
|
@@ -303,6 +303,7 @@ declare const inlineProductSchema: yup$1.ObjectSchema<{
|
|
|
303
303
|
server_only: boolean;
|
|
304
304
|
stackable: boolean;
|
|
305
305
|
prices: Record<string, {
|
|
306
|
+
interval?: DayInterval | undefined;
|
|
306
307
|
USD?: string | undefined;
|
|
307
308
|
EUR?: string | undefined;
|
|
308
309
|
GBP?: string | undefined;
|
|
@@ -310,7 +311,6 @@ declare const inlineProductSchema: yup$1.ObjectSchema<{
|
|
|
310
311
|
INR?: string | undefined;
|
|
311
312
|
AUD?: string | undefined;
|
|
312
313
|
CAD?: string | undefined;
|
|
313
|
-
interval?: DayInterval | undefined;
|
|
314
314
|
free_trial?: DayInterval | undefined;
|
|
315
315
|
}>;
|
|
316
316
|
included_items: Record<string, {
|
|
@@ -473,9 +473,9 @@ declare function yupDefinedAndNonEmptyWhen<S extends yup$1.StringSchema>(schema:
|
|
|
473
473
|
declare const branchConfigSourceSchema: yup$1.MixedSchema<{
|
|
474
474
|
workflow_path?: string | undefined;
|
|
475
475
|
type: "pushed-from-github";
|
|
476
|
+
branch: string;
|
|
476
477
|
owner: string;
|
|
477
478
|
repo: string;
|
|
478
|
-
branch: string;
|
|
479
479
|
commit_hash: string;
|
|
480
480
|
config_file_path: string;
|
|
481
481
|
} | {
|
package/dist/sessions.d.ts
CHANGED
|
@@ -9,7 +9,6 @@ declare class AccessToken {
|
|
|
9
9
|
private constructor();
|
|
10
10
|
get payload(): {
|
|
11
11
|
exp?: number | undefined;
|
|
12
|
-
name: string | null;
|
|
13
12
|
project_id: string;
|
|
14
13
|
refresh_token_id: string;
|
|
15
14
|
email: string | null;
|
|
@@ -17,17 +16,18 @@ declare class AccessToken {
|
|
|
17
16
|
type: "anonymous" | "email_not_verified" | "restricted_by_administrator";
|
|
18
17
|
} | null;
|
|
19
18
|
branch_id: string;
|
|
19
|
+
name: string | null;
|
|
20
20
|
sub: string;
|
|
21
|
+
selected_team_id: string | null;
|
|
22
|
+
is_anonymous: boolean;
|
|
23
|
+
is_restricted: boolean;
|
|
24
|
+
requires_totp_mfa: boolean;
|
|
21
25
|
iat: number;
|
|
22
26
|
iss: string;
|
|
23
27
|
aud: string;
|
|
24
28
|
role: "authenticated";
|
|
25
29
|
email_verified: boolean;
|
|
26
|
-
selected_team_id: string | null;
|
|
27
30
|
signed_up_at: number;
|
|
28
|
-
is_anonymous: boolean;
|
|
29
|
-
is_restricted: boolean;
|
|
30
|
-
requires_totp_mfa: boolean;
|
|
31
31
|
};
|
|
32
32
|
get expiresAt(): Date;
|
|
33
33
|
get issuedAt(): Date;
|
package/dist/utils/promises.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
2
|
const require_chunk = require('../chunk-BE-pF4vm.js');
|
|
3
|
+
let ___index_js = require("../index.js");
|
|
3
4
|
let __errors_js = require("./errors.js");
|
|
4
5
|
let __env_js = require("./env.js");
|
|
5
6
|
let __maps_js = require("./maps.js");
|
|
6
7
|
let __results_js = require("./results.js");
|
|
7
8
|
let __telemetry_js = require("./telemetry.js");
|
|
8
|
-
let ___index_js = require("../index.js");
|
|
9
9
|
let __uuids_js = require("./uuids.js");
|
|
10
10
|
|
|
11
11
|
//#region src/utils/promises.tsx
|
package/package.json
CHANGED
|
@@ -840,6 +840,7 @@ export function getSdkSetupPrompt(mainType: "ai-prompt" | "nextjs" | "react" | "
|
|
|
840
840
|
- React: \`@hexclave/react\`
|
|
841
841
|
- TanStack Start: \`@hexclave/tanstack-start\`
|
|
842
842
|
- Other & vanilla JS: \`@hexclave/js\`
|
|
843
|
+
- Vanilla JS in browser with no bundler: Cannot use npm packages, so use ESM imports with \`https://esm.sh/@hexclave/js\`
|
|
843
844
|
|
|
844
845
|
You can install the correct JavaScript Hexclave SDK into your project by running the following command:
|
|
845
846
|
` : deindent`
|
|
@@ -949,6 +949,7 @@ export class HexclaveServerInterface extends HexclaveClientInterface {
|
|
|
949
949
|
async sendEmail(options: {
|
|
950
950
|
userIds?: string[],
|
|
951
951
|
allUsers?: true,
|
|
952
|
+
emails?: string[],
|
|
952
953
|
themeId?: string | null | false,
|
|
953
954
|
html?: string,
|
|
954
955
|
subject?: string,
|
|
@@ -968,6 +969,7 @@ export class HexclaveServerInterface extends HexclaveClientInterface {
|
|
|
968
969
|
body: JSON.stringify({
|
|
969
970
|
user_ids: options.userIds,
|
|
970
971
|
all_users: options.allUsers,
|
|
972
|
+
emails: options.emails,
|
|
971
973
|
theme_id: options.themeId,
|
|
972
974
|
html: options.html,
|
|
973
975
|
subject: options.subject,
|