@rustrak/client 0.3.13 → 0.3.14
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/index.cjs +612 -448
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +198 -123
- package/dist/index.d.ts +198 -123
- package/dist/index.js +612 -448
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schemas/common.ts","../src/schemas/alert.ts","../src/errors/base.ts","../src/errors/http.ts","../src/errors/validation.ts","../src/resources/base.ts","../src/resources/alert-integrations.ts","../src/resources/alert-rules.ts","../src/schemas/team.ts","../src/schemas/invitation.ts","../src/schemas/user.ts","../src/resources/auth.ts","../src/schemas/event.ts","../src/schemas/issue.ts","../src/schemas/log.ts","../src/schemas/member.ts","../src/schemas/project.ts","../src/schemas/session.ts","../src/schemas/sourcemap.ts","../src/schemas/storage.ts","../src/schemas/token.ts","../src/schemas/transaction.ts","../src/resources/events.ts","../src/schemas/version.ts","../src/resources/health.ts","../src/resources/invitations.ts","../src/resources/issues.ts","../src/resources/logs.ts","../src/resources/members.ts","../src/resources/projects.ts","../src/resources/releases.ts","../src/resources/sessions.ts","../src/resources/sourcemaps.ts","../src/resources/storage.ts","../src/resources/team.ts","../src/resources/tokens.ts","../src/resources/transactions.ts","../src/utils/http.ts","../src/client.ts"],"names":["z","ky","isHTTPError"],"mappings":"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","file":"index.cjs","sourcesContent":["import { z } from 'zod';\n\n/**\n * Generic paginated response schema (cursor-based)\n */\nexport const paginatedResponseSchema = <T extends z.ZodTypeAny>(\n itemSchema: T,\n) =>\n z.object({\n items: z.array(itemSchema),\n next_cursor: z.string().optional(),\n has_more: z.boolean(),\n });\n\n/**\n * Generic offset-based paginated response schema\n */\nexport const offsetPaginatedResponseSchema = <T extends z.ZodTypeAny>(\n itemSchema: T,\n) =>\n z.object({\n items: z.array(itemSchema),\n total_count: z.number().int(),\n page: z.number().int(),\n per_page: z.number().int(),\n total_pages: z.number().int(),\n });\n\n/**\n * Sort order enum\n */\nexport const sortOrderSchema = z.enum(['asc', 'desc']);\n\n/**\n * Issue sort field enum\n */\nexport const issueSortSchema = z.enum([\n 'digest_order',\n 'last_seen',\n 'event_count',\n]);\n\n/**\n * Issue filter enum\n */\nexport const issueFilterSchema = z.enum(['open', 'resolved', 'muted', 'all']);\n\n/**\n * ISO 8601 datetime string\n */\nexport const dateTimeSchema = z.string().datetime();\n\n/**\n * UUID v4 string (RFC 4122). Use for server-generated ids (row PKs, issue ids)\n * which are always created with `gen_random_uuid()`.\n */\nexport const uuidSchema = z.string().uuid();\n\n/**\n * Sentry event identifier.\n *\n * Sentry event ids are 32 random hex characters — they do NOT carry RFC-4122\n * version/variant bits. The server stores them in a UUID column and returns\n * them in canonical dashed form, but a strict `uuid()` check rejects the many\n * valid ids whose version nibble falls outside 1–8. Accept any hex UUID shape\n * regardless of version/variant so real SDK payloads validate.\n */\nexport const eventIdSchema = z\n .string()\n .regex(\n /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n 'Invalid event id',\n );\n\n/**\n * API error response\n */\nexport const apiErrorSchema = z.object({\n error: z.string(),\n message: z.string().optional(),\n});\n","import { z } from 'zod';\nimport { dateTimeSchema } from './common.js';\n\n/**\n * Provider type enum (replaces channel_type)\n */\nexport const providerTypeSchema = z.enum(['webhook', 'email', 'slack']);\n\n/** @deprecated Use providerTypeSchema */\nexport const channelTypeSchema = providerTypeSchema;\n\n/**\n * Alert type enum\n */\nexport const alertTypeSchema = z.enum(['new_issue', 'regression', 'unmute']);\n\n/**\n * Alert status enum\n */\nexport const alertStatusSchema = z.enum([\n 'pending',\n 'sent',\n 'failed',\n 'skipped',\n]);\n\n/**\n * Alert integration response schema (global credentials record)\n */\nexport const alertIntegrationSchema = z.object({\n id: z.number().int(),\n name: z.string(),\n provider_type: providerTypeSchema,\n credentials: z.record(z.string(), z.unknown()),\n is_enabled: z.boolean(),\n failure_count: z.number().int(),\n last_failure_at: dateTimeSchema.nullable(),\n last_failure_message: z.string().nullable(),\n last_success_at: dateTimeSchema.nullable(),\n created_at: dateTimeSchema,\n updated_at: dateTimeSchema,\n});\n\n/** @deprecated Use alertIntegrationSchema */\nexport const notificationChannelSchema = alertIntegrationSchema;\n\n/**\n * Create alert integration request schema\n */\nexport const createAlertIntegrationSchema = z.object({\n name: z.string().min(1),\n provider_type: providerTypeSchema,\n credentials: z.record(z.string(), z.unknown()),\n is_enabled: z.boolean().optional(),\n});\n\n/** @deprecated Use createAlertIntegrationSchema */\nexport const createNotificationChannelSchema = createAlertIntegrationSchema;\n\n/**\n * Update alert integration request schema\n */\nexport const updateAlertIntegrationSchema = z.object({\n name: z.string().min(1).optional(),\n credentials: z.record(z.string(), z.unknown()).optional(),\n is_enabled: z.boolean().optional(),\n});\n\n/** @deprecated Use updateAlertIntegrationSchema */\nexport const updateNotificationChannelSchema = updateAlertIntegrationSchema;\n\n/**\n * Per-rule channel routing entry schema\n */\nexport const alertRuleChannelInputSchema = z.object({\n integration_id: z.number().int(),\n routing_override: z.record(z.string(), z.unknown()).default({}),\n});\n\n/**\n * Alert rule response schema\n */\nexport const alertRuleSchema = z.object({\n id: z.number().int(),\n project_id: z.number().int(),\n name: z.string(),\n alert_type: alertTypeSchema,\n is_enabled: z.boolean(),\n conditions: z.record(z.string(), z.unknown()),\n cooldown_minutes: z.number().int(),\n last_triggered_at: dateTimeSchema.nullable(),\n created_at: dateTimeSchema,\n updated_at: dateTimeSchema,\n channels: z.array(alertRuleChannelInputSchema).default([]),\n integration_ids: z.array(z.number().int()),\n});\n\n/**\n * Create alert rule request schema\n */\nexport const createAlertRuleSchema = z.object({\n name: z.string().min(1),\n alert_type: alertTypeSchema,\n channels: z.array(alertRuleChannelInputSchema).default([]),\n is_enabled: z.boolean().optional(),\n conditions: z.record(z.string(), z.unknown()).optional(),\n cooldown_minutes: z.number().int().min(0).optional(),\n});\n\n/**\n * Update alert rule request schema\n */\nexport const updateAlertRuleSchema = z.object({\n name: z.string().min(1).optional(),\n is_enabled: z.boolean().optional(),\n conditions: z.record(z.string(), z.unknown()).optional(),\n cooldown_minutes: z.number().int().min(0).optional(),\n channels: z.array(alertRuleChannelInputSchema).optional(),\n});\n\n/**\n * Alert history entry schema\n */\nexport const alertHistorySchema = z.object({\n id: z.number().int(),\n alert_rule_id: z.number().int().nullable(),\n integration_id: z.number().int().nullable(),\n issue_id: z.string().uuid().nullable(),\n project_id: z.number().int().nullable(),\n alert_type: z.string(),\n channel_type: z.string(),\n channel_name: z.string(),\n status: alertStatusSchema,\n attempt_count: z.number().int(),\n next_retry_at: dateTimeSchema.nullable(),\n error_message: z.string().nullable(),\n http_status_code: z.number().int().nullable(),\n idempotency_key: z.string(),\n created_at: dateTimeSchema,\n sent_at: dateTimeSchema.nullable(),\n});\n\n/**\n * Test channel response schema\n */\nexport const testChannelResponseSchema = z.object({\n success: z.boolean(),\n message: z.string(),\n});\n\n/**\n * Test integration request body schema\n */\nexport const testIntegrationBodySchema = z.object({\n routing_override: z.record(z.string(), z.unknown()).optional(),\n});\n","/**\n * Base error class for all Rustrak client errors\n */\nexport class RustrakError extends Error {\n /**\n * Whether this error is safe to retry\n */\n public readonly retryable: boolean;\n\n /**\n * HTTP status code if applicable\n */\n public readonly statusCode?: number;\n\n /**\n * Original error cause\n */\n public readonly cause?: Error;\n\n constructor(\n message: string,\n options?: {\n retryable?: boolean;\n statusCode?: number;\n cause?: Error;\n },\n ) {\n super(message);\n this.name = this.constructor.name;\n this.retryable = options?.retryable ?? false;\n this.statusCode = options?.statusCode;\n this.cause = options?.cause;\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n}\n","import { RustrakError } from './base.js';\n\n/**\n * Network error (connection issues, timeouts)\n * Retryable by default\n */\nexport class NetworkError extends RustrakError {\n constructor(message: string, cause?: Error) {\n super(message, { retryable: true, cause });\n }\n}\n\n/**\n * Authentication error (401 Unauthorized)\n * Not retryable - requires new credentials\n */\nexport class AuthenticationError extends RustrakError {\n constructor(message = 'Authentication failed') {\n super(message, { retryable: false, statusCode: 401 });\n }\n}\n\n/**\n * Authorization error (403 Forbidden)\n * Not retryable - requires different permissions\n */\nexport class AuthorizationError extends RustrakError {\n constructor(message = 'Insufficient permissions') {\n super(message, { retryable: false, statusCode: 403 });\n }\n}\n\n/**\n * Not found error (404 Not Found)\n * Not retryable\n */\nexport class NotFoundError extends RustrakError {\n constructor(resource: string) {\n super(`Resource not found: ${resource}`, {\n retryable: false,\n statusCode: 404,\n });\n }\n}\n\n/**\n * Rate limit error (429 Too Many Requests)\n * Retryable after delay\n */\nexport class RateLimitError extends RustrakError {\n /**\n * Number of seconds to wait before retrying (from Retry-After header)\n */\n public readonly retryAfter?: number;\n\n constructor(message = 'Rate limit exceeded', retryAfter?: string | number) {\n super(message, { retryable: true, statusCode: 429 });\n\n if (retryAfter !== undefined) {\n this.retryAfter =\n typeof retryAfter === 'string' ? parseInt(retryAfter, 10) : retryAfter;\n }\n }\n}\n\n/**\n * Server error (500+)\n * Retryable by default\n */\nexport class ServerError extends RustrakError {\n constructor(message: string, statusCode = 500) {\n super(message, { retryable: true, statusCode });\n }\n}\n\n/**\n * Bad request error (400)\n * Not retryable - client error\n */\nexport class BadRequestError extends RustrakError {\n constructor(message: string) {\n super(message, { retryable: false, statusCode: 400 });\n }\n}\n","import type { ZodError } from 'zod';\nimport { RustrakError } from './base.js';\n\n/**\n * Validation error when API response doesn't match expected schema\n * Not retryable - indicates API contract mismatch\n */\nexport class ValidationError extends RustrakError {\n /**\n * Zod validation errors\n */\n public readonly validationErrors?: ZodError;\n\n constructor(message: string, validationErrors?: ZodError) {\n super(message, { retryable: false });\n this.validationErrors = validationErrors;\n }\n\n /**\n * Get a formatted string of validation errors\n */\n public getValidationDetails(): string {\n if (!this.validationErrors) {\n return this.message;\n }\n\n const errors = this.validationErrors.issues\n .map((err) => `${err.path.map(String).join('.')}: ${err.message}`)\n .join(', ');\n\n return `${this.message} - ${errors}`;\n }\n}\n","import type { KyInstance } from 'ky';\nimport type { ZodSchema } from 'zod';\nimport { ValidationError } from '../errors/index.js';\n\n/**\n * Base resource class with validation helper\n */\nexport abstract class BaseResource {\n protected readonly http: KyInstance;\n\n constructor(http: KyInstance) {\n this.http = http;\n }\n\n /**\n * Validate API response against Zod schema\n * @throws {ValidationError} if validation fails\n */\n protected validate<T>(data: unknown, schema: ZodSchema<T>): T {\n const result = schema.safeParse(data);\n\n if (!result.success) {\n throw new ValidationError('API response validation failed', result.error);\n }\n\n return result.data;\n }\n}\n","import { z } from 'zod';\nimport {\n alertIntegrationSchema,\n createAlertIntegrationSchema,\n testChannelResponseSchema,\n testIntegrationBodySchema,\n updateAlertIntegrationSchema,\n} from '../schemas/alert.js';\nimport type {\n AlertIntegration,\n CreateAlertIntegration,\n RoutingOverride,\n TestChannelResponse,\n UpdateAlertIntegration,\n} from '../types/alert.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Alert Integrations API resource (global credential destinations)\n */\nexport class AlertIntegrationsResource extends BaseResource {\n /**\n * List all alert integrations\n */\n async list(): Promise<AlertIntegration[]> {\n const data = await this.http.get('api/integrations').json();\n return this.validate(data, z.array(alertIntegrationSchema));\n }\n\n /**\n * Get a single alert integration by ID\n */\n async get(id: number): Promise<AlertIntegration> {\n const data = await this.http.get(`api/integrations/${id}`).json();\n return this.validate(data, alertIntegrationSchema);\n }\n\n /**\n * Create a new alert integration\n */\n async create(input: CreateAlertIntegration): Promise<AlertIntegration> {\n const validatedInput = this.validate(input, createAlertIntegrationSchema);\n\n const data = await this.http\n .post('api/integrations', { json: validatedInput })\n .json();\n\n return this.validate(data, alertIntegrationSchema);\n }\n\n /**\n * Update an existing alert integration\n */\n async update(\n id: number,\n input: UpdateAlertIntegration,\n ): Promise<AlertIntegration> {\n const validatedInput = this.validate(input, updateAlertIntegrationSchema);\n\n const data = await this.http\n .patch(`api/integrations/${id}`, { json: validatedInput })\n .json();\n\n return this.validate(data, alertIntegrationSchema);\n }\n\n /**\n * Delete an alert integration\n */\n async delete(id: number): Promise<void> {\n await this.http.delete(`api/integrations/${id}`);\n }\n\n /**\n * Send a test notification to verify integration configuration.\n * For Slack bot_token integrations, routingOverride must include `channel`.\n */\n async test(\n id: number,\n routingOverride?: RoutingOverride,\n ): Promise<TestChannelResponse> {\n const body =\n routingOverride !== undefined\n ? this.validate(\n { routing_override: routingOverride },\n testIntegrationBodySchema,\n )\n : undefined;\n\n const data = await this.http\n .post(\n `api/integrations/${id}/test`,\n body !== undefined ? { json: body } : undefined,\n )\n .json();\n\n return this.validate(data, testChannelResponseSchema);\n }\n}\n","import { z } from 'zod';\nimport {\n alertHistorySchema,\n alertRuleSchema,\n createAlertRuleSchema,\n updateAlertRuleSchema,\n} from '../schemas/alert.js';\nimport type {\n AlertHistory,\n AlertRule,\n CreateAlertRule,\n ListAlertHistoryOptions,\n UpdateAlertRule,\n} from '../types/alert.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Alert Rules API resource (per-project alert configuration)\n */\nexport class AlertRulesResource extends BaseResource {\n /**\n * List all alert rules for a project\n */\n async list(projectId: number): Promise<AlertRule[]> {\n const data = await this.http\n .get(`api/projects/${projectId}/alert-rules`)\n .json();\n return this.validate(data, z.array(alertRuleSchema));\n }\n\n /**\n * Get a single alert rule by ID\n */\n async get(projectId: number, ruleId: number): Promise<AlertRule> {\n const data = await this.http\n .get(`api/projects/${projectId}/alert-rules/${ruleId}`)\n .json();\n return this.validate(data, alertRuleSchema);\n }\n\n /**\n * Create a new alert rule for a project\n */\n async create(projectId: number, input: CreateAlertRule): Promise<AlertRule> {\n const validatedInput = this.validate(input, createAlertRuleSchema);\n\n const data = await this.http\n .post(`api/projects/${projectId}/alert-rules`, { json: validatedInput })\n .json();\n\n return this.validate(data, alertRuleSchema);\n }\n\n /**\n * Update an existing alert rule\n */\n async update(\n projectId: number,\n ruleId: number,\n input: UpdateAlertRule,\n ): Promise<AlertRule> {\n const validatedInput = this.validate(input, updateAlertRuleSchema);\n\n const data = await this.http\n .patch(`api/projects/${projectId}/alert-rules/${ruleId}`, {\n json: validatedInput,\n })\n .json();\n\n return this.validate(data, alertRuleSchema);\n }\n\n /**\n * Delete an alert rule\n */\n async delete(projectId: number, ruleId: number): Promise<void> {\n await this.http.delete(`api/projects/${projectId}/alert-rules/${ruleId}`);\n }\n\n /**\n * List alert history for a project\n */\n async listHistory(\n projectId: number,\n options?: ListAlertHistoryOptions,\n ): Promise<AlertHistory[]> {\n const searchParams = new URLSearchParams();\n\n if (options?.limit !== undefined) {\n searchParams.set('limit', options.limit.toString());\n }\n\n const query = searchParams.toString();\n const url = query\n ? `api/projects/${projectId}/alert-history?${query}`\n : `api/projects/${projectId}/alert-history`;\n\n const data = await this.http.get(url).json();\n return this.validate(data, z.array(alertHistorySchema));\n }\n}\n","import { z } from 'zod';\nimport { dateTimeSchema } from './common.js';\n\n/**\n * Global role assignable to a user (admin has full access, member is standard).\n */\nexport const globalRoleSchema = z.enum(['admin', 'member']);\n\n/**\n * Team member schema - a user as exposed on the team roster.\n */\nexport const teamMemberSchema = z.object({\n id: z.number().int(),\n email: z.string().email(),\n role: globalRoleSchema,\n is_active: z.boolean(),\n /** True for the first-registered account, which cannot be demoted or deleted. */\n is_primary: z.boolean().optional(),\n created_at: dateTimeSchema,\n last_login: dateTimeSchema.nullable().optional(),\n});\n\n/**\n * Request body for changing a user's global role.\n */\nexport const updateUserRoleSchema = z.object({\n role: globalRoleSchema,\n});\n","import { z } from 'zod';\nimport { dateTimeSchema } from './common.js';\nimport { globalRoleSchema } from './team.js';\n\n/**\n * Status of an invitation lifecycle (server returns a free-form string;\n * kept permissive to tolerate new statuses without breaking validation).\n */\nexport const invitationStatusSchema = z.string();\n\n/**\n * Invitation schema - public-facing pending invitation.\n */\nexport const invitationSchema = z.object({\n token: z.string(),\n email: z.string().email(),\n role: globalRoleSchema,\n status: invitationStatusSchema,\n expires_at: dateTimeSchema,\n created_at: dateTimeSchema,\n});\n\n/**\n * Public-facing invitation info for the accept page (no token echoed back).\n */\nexport const invitationInfoSchema = z.object({\n email: z.string().email(),\n role: globalRoleSchema,\n status: invitationStatusSchema,\n expires_at: dateTimeSchema,\n});\n\n/**\n * Request body for creating an invitation.\n */\nexport const createInvitationSchema = z.object({\n email: z.string().email(),\n role: globalRoleSchema,\n});\n\n/**\n * Request body for accepting an invitation (public endpoint).\n */\nexport const acceptInvitationSchema = z.object({\n token: z.string().min(1),\n password: z.string().min(1),\n});\n","import { z } from 'zod';\nimport { globalRoleSchema } from './team.js';\n\n/**\n * User schema - authenticated user information\n */\nexport const userSchema = z.object({\n id: z.number().int().positive(),\n email: z.string().email(),\n role: globalRoleSchema,\n is_admin: z.boolean(),\n});\n\n/**\n * Auth response schema - returned after login/register\n */\nexport const authResponseSchema = z.object({\n user: userSchema,\n});\n\n/**\n * Login result schema - includes user and session cookies for Server Actions\n */\nexport const loginResultSchema = z.object({\n user: userSchema,\n cookies: z.array(z.string()),\n});\n\n/**\n * Login request schema\n */\nexport const loginRequestSchema = z.object({\n email: z.string().email(),\n password: z.string().min(1),\n});\n\n/**\n * Register request schema\n */\nexport const registerRequestSchema = z.object({\n email: z.string().email(),\n password: z.string().min(1),\n});\n","import {\n acceptInvitationSchema,\n invitationInfoSchema,\n} from '../schemas/invitation.js';\nimport {\n authResponseSchema,\n loginRequestSchema,\n registerRequestSchema,\n userSchema,\n} from '../schemas/user.js';\nimport type { AcceptInvitation, InvitationInfo } from '../types/invitation.js';\nimport type {\n LoginRequest,\n LoginResult,\n RegisterRequest,\n User,\n} from '../types/user.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Authentication API resource\n * Handles user registration, login, logout, and session management\n */\nexport class AuthResource extends BaseResource {\n /**\n * Register a new user account\n * Creates a new user and automatically logs them in (sets session cookie)\n * @param credentials - Email and password for the new account\n * @returns LoginResult with user information and session cookies\n */\n async register(credentials: RegisterRequest): Promise<LoginResult> {\n // Validate input\n const validatedInput = this.validate(credentials, registerRequestSchema);\n\n const response = await this.http.post('auth/register', {\n json: validatedInput,\n });\n\n // Extract Set-Cookie headers for Server Actions\n const cookies = response.headers.getSetCookie();\n\n const data = await response.json();\n const authResponse = this.validate(data, authResponseSchema);\n\n return {\n user: authResponse.user,\n cookies,\n };\n }\n\n /**\n * Login with email and password\n * Authenticates the user and sets a session cookie\n * @param credentials - Email and password\n * @returns LoginResult with user information and session cookies\n */\n async login(credentials: LoginRequest): Promise<LoginResult> {\n // Validate input\n const validatedInput = this.validate(credentials, loginRequestSchema);\n\n const response = await this.http.post('auth/login', {\n json: validatedInput,\n });\n\n // Extract Set-Cookie headers for Server Actions\n const cookies = response.headers.getSetCookie();\n\n const data = await response.json();\n const authResponse = this.validate(data, authResponseSchema);\n\n return {\n user: authResponse.user,\n cookies,\n };\n }\n\n /**\n * Logout the current user\n * Clears the session cookie\n * @returns Array of Set-Cookie headers (typically clearing cookies)\n */\n async logout(): Promise<string[]> {\n const response = await this.http.post('auth/logout');\n return response.headers.getSetCookie();\n }\n\n /**\n * Get current authenticated user\n * Requires a valid session cookie\n * @returns User information\n */\n async getCurrentUser(): Promise<User> {\n const data = await this.http.get('auth/me').json();\n return this.validate(data, userSchema);\n }\n\n /**\n * Get the details of a pending invitation by its token (public endpoint)\n * Used by the accept-invitation page before the user has an account\n * @param token - Invitation token\n * @returns Invitation info (email, role, status, expiry)\n */\n async getInvitation(token: string): Promise<InvitationInfo> {\n const data = await this.http.get(`auth/invitation/${token}`).json();\n return this.validate(data, invitationInfoSchema);\n }\n\n /**\n * Accept a pending invitation, creating the user account and logging in\n * @param input - Invitation token and the new account's password\n * @returns LoginResult with user information and session cookies\n */\n async acceptInvitation(input: AcceptInvitation): Promise<LoginResult> {\n const validatedInput = this.validate(input, acceptInvitationSchema);\n\n const response = await this.http.post('auth/accept-invitation', {\n json: validatedInput,\n });\n\n const cookies = response.headers.getSetCookie();\n\n const data = await response.json();\n const authResponse = this.validate(data, authResponseSchema);\n\n return {\n user: authResponse.user,\n cookies,\n };\n }\n}\n","import { z } from 'zod';\nimport { dateTimeSchema, eventIdSchema, uuidSchema } from './common.js';\n\n/**\n * Event response schema from list endpoint\n */\nexport const eventSchema = z.object({\n id: uuidSchema,\n event_id: eventIdSchema,\n issue_id: uuidSchema.nullable(),\n title: z.string(),\n timestamp: dateTimeSchema,\n level: z.string(),\n platform: z.string(),\n release: z.string(),\n environment: z.string(),\n event_type: z.string(),\n});\n\n/**\n * Event detail response schema from detail endpoint\n */\nexport const eventDetailSchema = z.object({\n id: uuidSchema,\n event_id: eventIdSchema,\n issue_id: uuidSchema.nullable(),\n title: z.string(),\n timestamp: dateTimeSchema,\n ingested_at: dateTimeSchema,\n level: z.string(),\n platform: z.string(),\n release: z.string(),\n environment: z.string(),\n server_name: z.string(),\n sdk_name: z.string(),\n sdk_version: z.string(),\n event_type: z.string(),\n data: z.record(z.string(), z.any()), // Full Sentry event JSON\n});\n","import { z } from 'zod';\nimport { dateTimeSchema, uuidSchema } from './common.js';\n\n/**\n * Canonical issue status values (Sentry-compatible).\n */\nexport const issueStatusSchema = z.enum(['unresolved', 'resolved', 'ignored']);\n\n/**\n * Issue priority tiers.\n */\nexport const issuePrioritySchema = z.enum(['low', 'medium', 'high']);\n\n/**\n * Issue response schema from API\n */\nexport const issueSchema = z.object({\n id: uuidSchema,\n project_id: z.number().int(),\n short_id: z.string(),\n title: z.string(),\n value: z.string(),\n culprit: z.string(),\n logger: z.string(),\n first_seen: dateTimeSchema,\n last_seen: dateTimeSchema,\n event_count: z.number().int(),\n level: z.string().nullable(),\n platform: z.string().nullable(),\n // Status model (#165)\n status: issueStatusSchema,\n substatus: z.string().nullable(),\n priority: issuePrioritySchema.nullable(),\n assigned_to: z.number().int().nullable(),\n assignee_type: z.string().nullable(),\n issue_type: z.string(),\n issue_category: z.string(),\n first_release: z.string(),\n last_release: z.string(),\n status_details: z.record(z.string(), z.unknown()),\n // Aggregate enrichment — only the single-issue GET populates this; the list\n // and PATCH endpoints return the lean response, so default to 0 when absent.\n user_report_count: z.number().int().optional().default(0),\n // Per-user fields — only present when the request carries a user session.\n is_bookmarked: z.boolean().optional(),\n is_subscribed: z.boolean().optional(),\n has_seen: z.boolean().optional(),\n // Bulk list stats — only the list endpoint populates these (computed once\n // per page); the single-issue GET and PATCH responses omit them.\n user_count: z.number().int().optional(),\n trend: z.array(z.number().int()).optional(),\n // Deprecated, derived from `status`; kept for backward compatibility.\n is_resolved: z.boolean(),\n is_muted: z.boolean(),\n});\n\n/**\n * Update issue state request schema.\n *\n * `status` (plus `substatus`/`priority`/assignment) is canonical;\n * `is_resolved`/`is_muted` remain as a deprecated compatibility shim.\n * `status` also accepts the special `resolvedInNextRelease` value.\n */\nexport const updateIssueStateSchema = z.object({\n status: z\n .union([issueStatusSchema, z.literal('resolvedInNextRelease')])\n .optional(),\n substatus: z.string().optional(),\n priority: issuePrioritySchema.optional(),\n assigned_to: z.number().int().nullable().optional(),\n assignee_type: z.string().nullable().optional(),\n is_resolved: z.boolean().optional(),\n is_muted: z.boolean().optional(),\n});\n\n/**\n * A grouping hash that maps to an issue.\n */\nexport const issueHashSchema = z.object({\n id: z.number().int(),\n project_id: z.number().int(),\n issue_id: uuidSchema,\n grouping_key: z.string(),\n grouping_key_hash: z.string(),\n created_at: dateTimeSchema,\n});\n\n/**\n * A tag value with its event count.\n */\nexport const tagValueCountSchema = z.object({\n value: z.string(),\n count: z.number().int(),\n});\n\n/**\n * A single tag value's usage within an issue — the shape `GET\n * /issues/{id}/tags/{key}` returns per entry (Sentry-compatible: a bare\n * list of these, not a `{key, values}` wrapper).\n */\nexport const issueTagValueSchema = z.object({\n key: z.string(),\n name: z.string(),\n value: z.string(),\n count: z.number().int(),\n first_seen: dateTimeSchema,\n last_seen: dateTimeSchema,\n});\n\n/**\n * A tag key with its most common values within an issue.\n */\nexport const tagSummarySchema = z.object({\n key: z.string(),\n total_values: z.number().int(),\n top_values: z.array(tagValueCountSchema),\n});\n\n/**\n * Per-issue aggregates: unique user count + top tags.\n */\nexport const issueAggregatesSchema = z.object({\n user_count: z.number().int(),\n tags: z.array(tagSummarySchema),\n});\n\n/**\n * Time window for issue stats.\n */\nexport const issueStatsWindowSchema = z.enum(['24h', '30d']);\n\n/**\n * Event-count timeseries for an issue: `[bucketStartUnix, count]` points.\n */\nexport const issueStatsSchema = z.object({\n data: z.array(z.tuple([z.number(), z.number()])),\n});\n\n/**\n * An entry in an issue's activity log (status changes, comments/notes, etc.).\n */\nexport const activityEntrySchema = z.object({\n id: uuidSchema,\n issue_id: uuidSchema,\n user_id: z.number().int().nullable(),\n type: z.string(),\n data: z.string(),\n created_at: dateTimeSchema,\n});\n\n/**\n * A user feedback report attached to an issue/event.\n */\nexport const userReportSchema = z.object({\n id: uuidSchema,\n project_id: z.number().int(),\n issue_id: uuidSchema.nullable(),\n event_id: uuidSchema.nullable(),\n name: z.string(),\n // Server stores '' for anonymous reports (column DEFAULT '' / unwrap_or_default),\n // matching real Sentry's own save_userreport(report.get(\"email\", \"\")) — accept it.\n email: z.union([z.email(), z.literal('')]),\n comments: z.string(),\n created_at: dateTimeSchema,\n});\n\n/**\n * Request to add a comment (note) to an issue.\n */\nexport const createCommentSchema = z.object({\n text: z.string(),\n});\n\n/**\n * Request to submit user feedback on an issue.\n */\nexport const createUserReportSchema = z.object({\n name: z.string().optional(),\n email: z.email().optional(),\n comments: z.string().optional(),\n event_id: uuidSchema.optional(),\n});\n\n/**\n * Request to bulk-mutate issues.\n */\nexport const bulkUpdateIssuesSchema = z.object({\n ids: z.array(uuidSchema),\n status: z\n .union([issueStatusSchema, z.literal('resolvedInNextRelease')])\n .optional(),\n priority: issuePrioritySchema.optional(),\n});\n\n/**\n * Request to bulk-delete issues.\n */\nexport const bulkDeleteIssuesSchema = z.object({\n ids: z.array(uuidSchema),\n});\n\n/**\n * Request to record a deploy (finalizes resolve-in-next-release).\n */\nexport const createDeploySchema = z.object({\n version: z.string(),\n});\n","import { z } from 'zod';\nimport { dateTimeSchema, uuidSchema } from './common.js';\n\n/**\n * Log response schema from the list endpoint (Sentry \"log\" item — OurLog).\n *\n * `attributes` keeps the OTel-style typed map as received\n * (`{\"key\":{\"value\":x,\"type\":\"string\"}}`); denormalized fields are surfaced\n * separately for filtering/sorting.\n */\nexport const logSchema = z.object({\n id: uuidSchema,\n trace_id: z.string().nullable(),\n span_id: z.string().nullable(),\n level: z.string(),\n /** OTel severity number (1=trace … 21=fatal). Null for unknown levels. */\n severity_number: z.number().int().nullable(),\n body: z.string(),\n attributes: z.record(z.string(), z.any()),\n timestamp: dateTimeSchema,\n ingested_at: dateTimeSchema,\n});\n","import { z } from 'zod';\nimport { dateTimeSchema } from './common.js';\n\n/**\n * Per-project role assignable to a member.\n */\nexport const projectRoleSchema = z.enum(['viewer', 'editor', 'admin']);\n\n/**\n * Project member schema - member row joined with the user's email.\n */\nexport const projectMemberSchema = z.object({\n user_id: z.number().int(),\n email: z.string().email(),\n role: projectRoleSchema,\n created_at: dateTimeSchema,\n});\n\n/**\n * Request body for adding or updating a project member.\n */\nexport const upsertProjectMemberSchema = z.object({\n user_id: z.number().int(),\n role: projectRoleSchema,\n});\n","import { z } from 'zod';\nimport { dateTimeSchema, uuidSchema } from './common.js';\n\n/**\n * Project response schema from API\n */\nexport const projectSchema = z.object({\n id: z.number().int(),\n name: z.string(),\n slug: z.string(),\n sentry_key: uuidSchema,\n dsn: z.string(),\n stored_event_count: z.number().int(),\n digested_event_count: z.number().int(),\n created_at: dateTimeSchema,\n updated_at: dateTimeSchema,\n platform: z.string().nullable(),\n});\n\n/**\n * Create project request schema\n */\nexport const createProjectSchema = z.object({\n name: z.string().min(1),\n slug: z.string().optional(),\n});\n\n/**\n * Update project request schema\n */\nexport const updateProjectSchema = z.object({\n name: z.string().min(1).optional(),\n});\n","import { z } from 'zod';\nimport { dateTimeSchema } from './common.js';\n\nexport const releaseHealthRowSchema = z.object({\n release: z.string(),\n environment: z.string(),\n total: z.number().int(),\n errored: z.number().int(),\n crashed: z.number().int(),\n abnormal: z.number().int(),\n healthy: z.number().int(),\n crash_free_sessions_rate: z.number().nullable(),\n crash_free_users_rate: z.number().nullable(),\n});\n\nexport const releaseHealthSchema = z.array(releaseHealthRowSchema);\n\nexport const sessionSummarySchema = z.object({\n total: z.number().int(),\n errored: z.number().int(),\n crashed: z.number().int(),\n abnormal: z.number().int(),\n crash_free_sessions_rate: z.number().nullable(),\n crash_free_users_rate: z.number().nullable(),\n active_releases: z.number().int(),\n});\n\nexport const sessionTimeseriesPointSchema = z.object({\n bucket: dateTimeSchema,\n total: z.number().int(),\n crashed: z.number().int(),\n crash_free_sessions_rate: z.number().nullable(),\n});\n\nexport const sessionTimeseriesSchema = z.array(sessionTimeseriesPointSchema);\n","import { z } from 'zod';\n\nexport const chunkUploadCapabilitySchema = z.object({\n url: z.string(),\n chunkSize: z.number().int(),\n chunksPerRequest: z.number().int(),\n maxRequestSize: z.number().int(),\n hashAlgorithm: z.string(),\n accept: z.array(z.string()),\n concurrency: z.number().int().optional(),\n});\n\nexport const assembleResponseSchema = z.object({\n state: z.string(),\n missingChunks: z.array(z.string()),\n detail: z.string().optional(),\n});\n\nexport const sourceMapFileSchema = z.object({\n debugId: z.string(),\n fileType: z.string(),\n size: z.number().int(),\n timesUsed: z.number().int(),\n dateUploaded: z.string(),\n});\n\nexport const listSourceMapsResponseSchema = z.object({\n data: z.array(sourceMapFileSchema),\n});\n","import { z } from 'zod';\n\n/**\n * Exact source-map storage weight, summed from the `size` columns of the\n * in-DB chunk table and the on-disk source_file CAS.\n */\nexport const sourceMapStorageSchema = z.object({\n chunk_bytes: z.number(),\n source_file_bytes: z.number(),\n total_bytes: z.number(),\n file_count: z.number(),\n});\n\n/**\n * Instance-wide storage summary: row counts per data category, whole-DB size\n * (best-effort, backend-reported), and exact source-map weight.\n */\nexport const storageSummarySchema = z.object({\n total_db_size_bytes: z.number(),\n events_count: z.number(),\n transactions_count: z.number(),\n spans_count: z.number(),\n logs_count: z.number(),\n source_maps: sourceMapStorageSchema,\n});\n\n/**\n * Per-project storage breakdown (one row per project, including empty ones).\n * `estimated_bytes` is the summed JSON payload length the project owns.\n */\nexport const projectStorageSchema = z.object({\n project_id: z.number(),\n project_name: z.string(),\n events_count: z.number(),\n transactions_count: z.number(),\n spans_count: z.number(),\n logs_count: z.number(),\n source_maps_count: z.number(),\n estimated_bytes: z.number(),\n});\n\n/**\n * Rows affected by a cleanup — used symmetrically for the dry-run preview\n * (\"what would be removed\") and the executed result (\"what was removed\").\n */\nexport const cleanupCountsSchema = z.object({\n events: z.number(),\n transactions: z.number(),\n spans: z.number(),\n logs: z.number(),\n issues_removed: z.number(),\n});\n\n/**\n * Outcome of a source-map garbage collection: orphaned files removed from the\n * DB and unlinked from disk, plus the exact bytes freed.\n */\nexport const sourceMapGcResultSchema = z.object({\n files_removed: z.number(),\n bytes_freed: z.number(),\n});\n\n/**\n * Request body for a cleanup (preview or execute): remove data older than\n * `older_than_days`, optionally scoped to one project (omit for all) and to\n * specific data categories. The minimum of 1 mirrors the server contract — a\n * smaller window would wipe the whole dataset.\n *\n * The `include_*` flags select which data categories the cleanup acts on. Each\n * is optional and defaults to `true` server-side, so omitting all of them keeps\n * the \"delete everything older than the cutoff\" behaviour. `include_transactions`\n * also governs the cascaded spans, and `include_events` governs the emptied\n * issues that get removed alongside their events.\n */\nexport const cleanupOptionsSchema = z.object({\n older_than_days: z.number().int().min(1),\n project_id: z.number().int().optional(),\n include_events: z.boolean().optional(),\n include_transactions: z.boolean().optional(),\n include_logs: z.boolean().optional(),\n});\n","import { z } from 'zod';\nimport { dateTimeSchema } from './common.js';\n\n/**\n * Auth token response schema from list endpoint (masked)\n */\nexport const authTokenSchema = z.object({\n id: z.number().int(),\n token_prefix: z.string(),\n description: z.string().nullable(),\n created_at: dateTimeSchema,\n last_used_at: dateTimeSchema.nullable(),\n});\n\n/**\n * Auth token created response schema (full token shown once)\n */\nexport const authTokenCreatedSchema = z.object({\n id: z.number().int(),\n token: z.string(),\n description: z.string().nullable(),\n created_at: dateTimeSchema,\n});\n\n/**\n * Create auth token request schema\n */\nexport const createAuthTokenSchema = z.object({\n description: z.string().optional(),\n});\n","import { z } from 'zod';\nimport { dateTimeSchema, eventIdSchema, uuidSchema } from './common.js';\n\n/**\n * Transaction response schema from list endpoint\n */\nexport const transactionSchema = z.object({\n id: uuidSchema,\n event_id: eventIdSchema,\n transaction_name: z.string(),\n timestamp: dateTimeSchema,\n start_timestamp: dateTimeSchema.nullable(),\n duration_ms: z.number().nullable(),\n platform: z.string(),\n environment: z.string(),\n release: z.string(),\n ingested_at: dateTimeSchema,\n});\n\n/**\n * Transaction detail schema from the detail endpoint.\n *\n * Same summary fields as {@link transactionSchema} plus the full Sentry\n * payload under `data` (spans, contexts.trace, measurements, tags, request,\n * user) used to render the span waterfall and metrics view.\n */\nexport const transactionDetailSchema = z.object({\n id: uuidSchema,\n event_id: eventIdSchema,\n transaction_name: z.string(),\n timestamp: dateTimeSchema,\n start_timestamp: dateTimeSchema.nullable(),\n duration_ms: z.number().nullable(),\n platform: z.string(),\n environment: z.string(),\n release: z.string(),\n ingested_at: dateTimeSchema,\n data: z.record(z.string(), z.any()), // Full Sentry transaction payload\n});\n\n/**\n * A single indexed span extracted from a transaction (waterfall row).\n */\nexport const spanSchema = z.object({\n id: uuidSchema,\n span_id: z.string().nullable(),\n trace_id: z.string().nullable(),\n parent_span_id: z.string().nullable(),\n op: z.string().nullable(),\n description: z.string().nullable(),\n status: z.string().nullable(),\n start_timestamp: dateTimeSchema.nullable(),\n timestamp: dateTimeSchema.nullable(),\n duration_ms: z.number().nullable(),\n exclusive_time_ms: z.number().nullable(),\n is_segment: z.boolean(),\n segment_id: z.string().nullable(),\n});\n\n/**\n * Aggregate performance stats for one (transaction_name, op) group.\n */\nexport const transactionStatsSchema = z.object({\n transaction_name: z.string(),\n op: z.string().nullable(),\n count: z.number().int(),\n p50_ms: z.number(),\n p95_ms: z.number(),\n p99_ms: z.number(),\n failure_rate: z.number(),\n});\n","import {\n eventDetailSchema,\n eventSchema,\n paginatedResponseSchema,\n} from '../schemas/index.js';\nimport type {\n Event,\n EventDetail,\n ListEventsOptions,\n PaginatedResponse,\n} from '../types/index.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Events API resource\n */\nexport class EventsResource extends BaseResource {\n /**\n * List events for an issue with pagination\n */\n async list(\n projectId: number,\n issueId: string,\n options?: ListEventsOptions,\n ): Promise<PaginatedResponse<Event>> {\n const searchParams: Record<string, string> = {};\n\n if (options?.order) {\n searchParams.order = options.order;\n }\n if (options?.cursor) {\n searchParams.cursor = options.cursor;\n }\n\n const data = await this.http\n .get(`api/projects/${projectId}/issues/${issueId}/events`, {\n searchParams,\n })\n .json();\n\n return this.validate(data, paginatedResponseSchema(eventSchema));\n }\n\n /**\n * Get a single event by ID with full details\n */\n async get(\n projectId: number,\n issueId: string,\n eventId: string,\n ): Promise<EventDetail> {\n const data = await this.http\n .get(`api/projects/${projectId}/issues/${issueId}/events/${eventId}`)\n .json();\n\n return this.validate(data, eventDetailSchema);\n }\n}\n","import { z } from 'zod';\n\nexport const serverVersionSchema = z.object({\n version: z.string(),\n});\n\nexport type ServerVersion = z.infer<typeof serverVersionSchema>;\n","import type { ServerVersion } from '../schemas/version.js';\nimport { serverVersionSchema } from '../schemas/version.js';\nimport { BaseResource } from './base.js';\n\nexport class HealthResource extends BaseResource {\n async getVersion(): Promise<ServerVersion> {\n const data = await this.http.get('health/version').json();\n return this.validate(data, serverVersionSchema);\n }\n}\n","import { createInvitationSchema, invitationSchema } from '../schemas/index.js';\nimport type { CreateInvitation, Invitation } from '../types/index.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Invitations API resource\n * Manages pending user invitations (admin only).\n */\nexport class InvitationsResource extends BaseResource {\n /**\n * Create a new invitation\n * @param input - Email and global role for the invited user\n */\n async create(input: CreateInvitation): Promise<Invitation> {\n const validatedInput = this.validate(input, createInvitationSchema);\n const data = await this.http\n .post('api/invitations', { json: validatedInput })\n .json();\n return this.validate(data, invitationSchema);\n }\n\n /**\n * List all invitations\n */\n async list(): Promise<Invitation[]> {\n const data = await this.http.get('api/invitations').json();\n return this.validate(data, invitationSchema.array());\n }\n\n /**\n * Revoke a pending invitation\n * @param token - Invitation token to revoke\n */\n async revoke(token: string): Promise<void> {\n await this.http.delete(`api/invitations/${token}`);\n }\n}\n","import { z } from 'zod';\nimport {\n activityEntrySchema,\n bulkDeleteIssuesSchema,\n bulkUpdateIssuesSchema,\n createCommentSchema,\n createDeploySchema,\n createUserReportSchema,\n issueAggregatesSchema,\n issueHashSchema,\n issueSchema,\n issueStatsSchema,\n issueTagValueSchema,\n offsetPaginatedResponseSchema,\n updateIssueStateSchema,\n userReportSchema,\n} from '../schemas/index.js';\nimport type {\n ActivityEntry,\n BulkDeleteIssues,\n BulkUpdateIssues,\n CreateComment,\n CreateDeploy,\n CreateUserReport,\n Issue,\n IssueAggregates,\n IssueHash,\n IssueStats,\n IssueStatsWindow,\n IssueTagValue,\n ListIssuesOptions,\n OffsetPaginatedResponse,\n UpdateIssueState,\n UserReport,\n} from '../types/index.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Issues API resource\n */\nexport class IssuesResource extends BaseResource {\n /**\n * List issues for a project with offset-based pagination\n */\n async list(\n projectId: number,\n options?: ListIssuesOptions,\n ): Promise<OffsetPaginatedResponse<Issue>> {\n const searchParams: Record<string, string> = {};\n\n if (options?.page !== undefined) {\n searchParams.page = options.page.toString();\n }\n if (options?.per_page !== undefined) {\n searchParams.per_page = options.per_page.toString();\n }\n if (options?.sort) {\n searchParams.sort = options.sort;\n }\n if (options?.order) {\n searchParams.order = options.order;\n }\n if (options?.filter) {\n searchParams.filter = options.filter;\n }\n if (options?.q) {\n searchParams.q = options.q;\n }\n\n const data = await this.http\n .get(`api/projects/${projectId}/issues`, { searchParams })\n .json();\n\n return this.validate(data, offsetPaginatedResponseSchema(issueSchema));\n }\n\n /**\n * Get a single issue by ID\n */\n async get(projectId: number, issueId: string): Promise<Issue> {\n const data = await this.http\n .get(`api/projects/${projectId}/issues/${issueId}`)\n .json();\n\n return this.validate(data, issueSchema);\n }\n\n /**\n * Update issue state (status, substatus, priority, assignment, …)\n */\n async updateState(\n projectId: number,\n issueId: string,\n input: UpdateIssueState,\n ): Promise<Issue> {\n const validatedInput = this.validate(input, updateIssueStateSchema);\n\n const data = await this.http\n .patch(`api/projects/${projectId}/issues/${issueId}`, {\n json: validatedInput,\n })\n .json();\n\n return this.validate(data, issueSchema);\n }\n\n /**\n * Resolve an issue in the next release (suppresses regression until a deploy).\n */\n async resolveInNextRelease(\n projectId: number,\n issueId: string,\n ): Promise<Issue> {\n return this.updateState(projectId, issueId, {\n status: 'resolvedInNextRelease',\n });\n }\n\n /**\n * Delete an issue\n */\n async delete(projectId: number, issueId: string): Promise<void> {\n await this.http.delete(`api/projects/${projectId}/issues/${issueId}`);\n }\n\n /**\n * Bulk-mutate issues (status and/or priority).\n */\n async bulkUpdate(\n projectId: number,\n input: BulkUpdateIssues,\n ): Promise<{ updated: number }> {\n const validatedInput = this.validate(input, bulkUpdateIssuesSchema);\n const data = await this.http\n .put(`api/projects/${projectId}/issues`, { json: validatedInput })\n .json();\n return this.validate(data, z.object({ updated: z.number().int() }));\n }\n\n /**\n * Bulk-delete issues.\n */\n async bulkDelete(\n projectId: number,\n input: BulkDeleteIssues,\n ): Promise<{ deleted: number }> {\n const validatedInput = this.validate(input, bulkDeleteIssuesSchema);\n const data = await this.http\n .delete(`api/projects/${projectId}/issues`, { json: validatedInput })\n .json();\n return this.validate(data, z.object({ deleted: z.number().int() }));\n }\n\n /**\n * List the grouping hashes that map to an issue.\n */\n async getHashes(projectId: number, issueId: string): Promise<IssueHash[]> {\n const data = await this.http\n .get(`api/projects/${projectId}/issues/${issueId}/hashes`)\n .json();\n return this.validate(data, z.array(issueHashSchema));\n }\n\n /**\n * List the distinct values (with counts) for a tag key across the issue.\n * Returns a bare list, one entry per value (Sentry-compatible shape).\n */\n async getTagValues(\n projectId: number,\n issueId: string,\n key: string,\n ): Promise<IssueTagValue[]> {\n const data = await this.http\n .get(\n `api/projects/${projectId}/issues/${issueId}/tags/${encodeURIComponent(key)}`,\n )\n .json();\n return this.validate(data, z.array(issueTagValueSchema));\n }\n\n /**\n * Fetch per-issue aggregates (unique user count + top tags).\n */\n async getAggregates(\n projectId: number,\n issueId: string,\n ): Promise<IssueAggregates> {\n const data = await this.http\n .get(`api/projects/${projectId}/issues/${issueId}/aggregates`)\n .json();\n return this.validate(data, issueAggregatesSchema);\n }\n\n /**\n * Fetch a zero-filled event-count timeseries (24h or 30d).\n */\n async getStats(\n projectId: number,\n issueId: string,\n window: IssueStatsWindow = '24h',\n ): Promise<IssueStats> {\n const data = await this.http\n .get(`api/projects/${projectId}/issues/${issueId}/stats`, {\n searchParams: { window },\n })\n .json();\n return this.validate(data, issueStatsSchema);\n }\n\n /**\n * List an issue's activity log (status changes, comments/notes, …).\n */\n async getActivity(\n projectId: number,\n issueId: string,\n ): Promise<ActivityEntry[]> {\n const data = await this.http\n .get(`api/projects/${projectId}/issues/${issueId}/activity`)\n .json();\n return this.validate(data, z.array(activityEntrySchema));\n }\n\n /**\n * Add a comment (note) to an issue.\n */\n async addComment(\n projectId: number,\n issueId: string,\n input: CreateComment,\n ): Promise<ActivityEntry> {\n const validatedInput = this.validate(input, createCommentSchema);\n const data = await this.http\n .post(`api/projects/${projectId}/issues/${issueId}/comments`, {\n json: validatedInput,\n })\n .json();\n return this.validate(data, activityEntrySchema);\n }\n\n /**\n * Set or clear the current user's bookmark on an issue.\n */\n async setBookmark(\n projectId: number,\n issueId: string,\n enabled: boolean,\n ): Promise<{ is_bookmarked: boolean }> {\n const data = await this.http\n .put(`api/projects/${projectId}/issues/${issueId}/bookmark`, {\n json: { enabled },\n })\n .json();\n return this.validate(data, z.object({ is_bookmarked: z.boolean() }));\n }\n\n /**\n * Set or clear the current user's subscription to an issue.\n */\n async setSubscription(\n projectId: number,\n issueId: string,\n enabled: boolean,\n ): Promise<{ is_subscribed: boolean }> {\n const data = await this.http\n .put(`api/projects/${projectId}/issues/${issueId}/subscription`, {\n json: { enabled },\n })\n .json();\n return this.validate(data, z.object({ is_subscribed: z.boolean() }));\n }\n\n /**\n * Mark the issue as seen by the current user.\n */\n async markSeen(\n projectId: number,\n issueId: string,\n ): Promise<{ has_seen: boolean }> {\n const data = await this.http\n .post(`api/projects/${projectId}/issues/${issueId}/seen`)\n .json();\n return this.validate(data, z.object({ has_seen: z.boolean() }));\n }\n\n /**\n * List user feedback reports for an issue.\n */\n async listUserReports(\n projectId: number,\n issueId: string,\n ): Promise<UserReport[]> {\n const data = await this.http\n .get(`api/projects/${projectId}/issues/${issueId}/user-reports`)\n .json();\n return this.validate(data, z.array(userReportSchema));\n }\n\n /**\n * Attach a user feedback report to an issue.\n */\n async createUserReport(\n projectId: number,\n issueId: string,\n input: CreateUserReport,\n ): Promise<UserReport> {\n const validatedInput = this.validate(input, createUserReportSchema);\n const data = await this.http\n .post(`api/projects/${projectId}/issues/${issueId}/user-reports`, {\n json: validatedInput,\n })\n .json();\n return this.validate(data, userReportSchema);\n }\n\n /**\n * Record a deploy of a release, finalizing resolve-in-next-release issues.\n */\n async createDeploy(\n projectId: number,\n input: CreateDeploy,\n ): Promise<{ version: string; finalized: number }> {\n const validatedInput = this.validate(input, createDeploySchema);\n const data = await this.http\n .post(`api/projects/${projectId}/deploys`, { json: validatedInput })\n .json();\n return this.validate(\n data,\n z.object({ version: z.string(), finalized: z.number().int() }),\n );\n }\n}\n","import { logSchema, offsetPaginatedResponseSchema } from '../schemas/index.js';\nimport type {\n ListLogsOptions,\n Log,\n OffsetPaginatedResponse,\n} from '../types/index.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Logs API resource (standalone logs — Sentry \"log\" item type)\n */\nexport class LogsResource extends BaseResource {\n /**\n * List logs for a project with offset-based pagination (newest first by log\n * timestamp), optionally filtered by level/trace_id.\n */\n async list(\n projectId: number,\n options?: ListLogsOptions,\n ): Promise<OffsetPaginatedResponse<Log>> {\n const searchParams: Record<string, string> = {};\n\n if (options?.page) {\n searchParams.page = String(options.page);\n }\n if (options?.per_page) {\n searchParams.per_page = String(options.per_page);\n }\n if (options?.level) {\n searchParams.level = options.level;\n }\n if (options?.trace_id) {\n searchParams.trace_id = options.trace_id;\n }\n\n const data = await this.http\n .get(`api/projects/${projectId}/logs`, { searchParams })\n .json();\n\n return this.validate(data, offsetPaginatedResponseSchema(logSchema));\n }\n}\n","import {\n projectMemberSchema,\n upsertProjectMemberSchema,\n} from '../schemas/index.js';\nimport type { ProjectMember, UpsertProjectMember } from '../types/index.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Project Members API resource\n * Manages per-project membership and roles.\n */\nexport class MembersResource extends BaseResource {\n /**\n * List members of a project\n * @param projectId - ID of the project\n */\n async list(projectId: number): Promise<ProjectMember[]> {\n const data = await this.http\n .get(`api/projects/${projectId}/members`)\n .json();\n return this.validate(data, projectMemberSchema.array());\n }\n\n /**\n * Add or update a project member\n * @param projectId - ID of the project\n * @param input - User ID and per-project role\n */\n async upsert(projectId: number, input: UpsertProjectMember): Promise<void> {\n const validatedInput = this.validate(input, upsertProjectMemberSchema);\n await this.http.put(`api/projects/${projectId}/members`, {\n json: validatedInput,\n });\n }\n\n /**\n * Remove a member from a project\n * @param projectId - ID of the project\n * @param userId - ID of the user to remove\n */\n async remove(projectId: number, userId: number): Promise<void> {\n await this.http.delete(`api/projects/${projectId}/members/${userId}`);\n }\n}\n","import {\n createProjectSchema,\n offsetPaginatedResponseSchema,\n projectSchema,\n updateProjectSchema,\n} from '../schemas/index.js';\nimport type {\n CreateProject,\n ListProjectsOptions,\n OffsetPaginatedResponse,\n Project,\n UpdateProject,\n} from '../types/index.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Projects API resource\n */\nexport class ProjectsResource extends BaseResource {\n /**\n * List projects with pagination\n */\n async list(\n options?: ListProjectsOptions,\n ): Promise<OffsetPaginatedResponse<Project>> {\n const searchParams = new URLSearchParams();\n\n if (options?.page !== undefined) {\n searchParams.set('page', options.page.toString());\n }\n if (options?.per_page !== undefined) {\n searchParams.set('per_page', options.per_page.toString());\n }\n if (options?.order) {\n searchParams.set('order', options.order);\n }\n\n const query = searchParams.toString();\n const url = query ? `api/projects?${query}` : 'api/projects';\n\n const data = await this.http.get(url).json();\n return this.validate(data, offsetPaginatedResponseSchema(projectSchema));\n }\n\n /**\n * Get a single project by ID\n */\n async get(id: number): Promise<Project> {\n const data = await this.http.get(`api/projects/${id}`).json();\n return this.validate(data, projectSchema);\n }\n\n /**\n * Create a new project\n */\n async create(input: CreateProject): Promise<Project> {\n // Validate input\n const validatedInput = this.validate(input, createProjectSchema);\n\n const data = await this.http\n .post('api/projects', { json: validatedInput })\n .json();\n\n return this.validate(data, projectSchema);\n }\n\n /**\n * Update an existing project\n */\n async update(id: number, input: UpdateProject): Promise<Project> {\n // Validate input\n const validatedInput = this.validate(input, updateProjectSchema);\n\n const data = await this.http\n .patch(`api/projects/${id}`, { json: validatedInput })\n .json();\n\n return this.validate(data, projectSchema);\n }\n\n /**\n * Delete a project\n */\n async delete(id: number): Promise<void> {\n await this.http.delete(`api/projects/${id}`);\n }\n}\n","import { z } from 'zod';\nimport { issueSchema } from '../schemas/index.js';\nimport type { Issue } from '../types/index.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Releases API resource — data scoped to a specific release.\n */\nexport class ReleasesResource extends BaseResource {\n /**\n * Get issues first seen in a given release, most recently introduced first.\n *\n * @param projectId - Project ID\n * @param release - Release version\n * @param limit - Max issues to return (default: 10, max: 50)\n */\n async newIssues(\n projectId: number,\n release: string,\n limit?: number,\n ): Promise<Issue[]> {\n const searchParams: Record<string, string> = {};\n if (limit !== undefined) {\n searchParams.limit = limit.toString();\n }\n\n const data = await this.http\n .get(\n `api/projects/${projectId}/releases/${encodeURIComponent(release)}/new-issues`,\n { searchParams },\n )\n .json();\n\n return this.validate(data, z.array(issueSchema));\n }\n}\n","import {\n releaseHealthSchema,\n sessionSummarySchema,\n sessionTimeseriesSchema,\n} from '../schemas/session.js';\nimport type {\n ReleaseHealth,\n SessionSummary,\n SessionTimeseries,\n} from '../types/session.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Sessions API resource — release health stats.\n */\nexport class SessionsResource extends BaseResource {\n /**\n * Get per-release health stats for a project.\n * @param projectId - Project ID\n * @param period - Time window (e.g. '24h', '7d'). Defaults to '24h'.\n * @param release - Scope to a single release (all environments), computed\n * server-side. Omit to get every release in the project.\n */\n async stats(\n projectId: number,\n period?: string,\n release?: string,\n ): Promise<ReleaseHealth> {\n const searchParams: Record<string, string> = {};\n if (period) {\n searchParams.period = period;\n }\n if (release) {\n searchParams.release = release;\n }\n\n const data = await this.http\n .get(`api/projects/${projectId}/sessions/stats`, { searchParams })\n .json();\n\n return this.validate(data, releaseHealthSchema);\n }\n\n /**\n * Get project-wide session health, aggregated across all releases and environments.\n * @param projectId - Project ID\n * @param period - Time window (e.g. '24h', '7d'). Defaults to '24h'.\n */\n async summary(projectId: number, period?: string): Promise<SessionSummary> {\n const searchParams: Record<string, string> = {};\n if (period) {\n searchParams.period = period;\n }\n\n const data = await this.http\n .get(`api/projects/${projectId}/sessions/summary`, { searchParams })\n .json();\n\n return this.validate(data, sessionSummarySchema);\n }\n\n /**\n * Get a time-bucketed session trend for a project, aggregated across all\n * releases and environments.\n * @param projectId - Project ID\n * @param period - Time window (e.g. '24h', '7d'). Defaults to '24h'.\n * @param interval - Bucket width in hours (default: 1, max: 24).\n */\n async timeseries(\n projectId: number,\n period?: string,\n interval?: number,\n ): Promise<SessionTimeseries> {\n const searchParams: Record<string, string> = {};\n if (period) {\n searchParams.period = period;\n }\n if (interval !== undefined) {\n searchParams.interval = interval.toString();\n }\n\n const data = await this.http\n .get(`api/projects/${projectId}/sessions/timeseries`, { searchParams })\n .json();\n\n return this.validate(data, sessionTimeseriesSchema);\n }\n}\n","import {\n assembleResponseSchema,\n chunkUploadCapabilitySchema,\n listSourceMapsResponseSchema,\n} from '../schemas/sourcemap.js';\nimport type {\n AssembleInput,\n AssembleResponse,\n ChunkUploadCapability,\n ListSourceMapsResponse,\n} from '../types/sourcemap.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Source Maps API resource\n *\n * Implements the sentry-cli artifact bundle protocol for source map upload\n * and the project source map listing endpoint.\n */\nexport class SourceMapsResource extends BaseResource {\n /**\n * Get chunk upload capabilities for an organization.\n * Returns the upload URL, chunk size limits, and accepted artifact types.\n */\n async getChunkUploadCapability(\n orgSlug: string,\n ): Promise<ChunkUploadCapability> {\n const data = await this.http\n .get(`api/0/organizations/${orgSlug}/chunk-upload/`)\n .json();\n return this.validate(data, chunkUploadCapabilitySchema);\n }\n\n /**\n * Upload chunks as multipart/form-data, batching by `chunksPerRequest` (default 64).\n * Each part's field name must be the pre-computed SHA-1 hash of its content — the server\n * rejects mismatches with 400. Callers must supply the hash (also needed for assembleBundle).\n */\n async uploadChunks(\n orgSlug: string,\n chunks: { hash: string; data: Blob }[],\n chunksPerRequest = 64,\n ): Promise<void> {\n if (!Number.isInteger(chunksPerRequest) || chunksPerRequest <= 0) {\n throw new Error('chunksPerRequest must be a positive integer');\n }\n for (let i = 0; i < chunks.length; i += chunksPerRequest) {\n const batch = chunks.slice(i, i + chunksPerRequest);\n const form = new FormData();\n for (const chunk of batch) {\n form.append(chunk.hash, chunk.data);\n }\n await this.http.post(`api/0/organizations/${orgSlug}/chunk-upload/`, {\n body: form,\n });\n }\n }\n\n /**\n * Trigger assembly of a previously uploaded artifact bundle.\n *\n * @returns The assembly state. Poll until `state === \"ok\"` or `state === \"error\"`.\n * When `state === \"not_found\"` the `missingChunks` array lists what\n * still needs uploading via `uploadChunks`.\n */\n async assembleBundle(\n orgSlug: string,\n input: AssembleInput,\n ): Promise<AssembleResponse> {\n const data = await this.http\n .post(`api/0/organizations/${orgSlug}/artifactbundle/assemble/`, {\n json: input,\n })\n .json();\n return this.validate(data, assembleResponseSchema);\n }\n\n /**\n * List all source map files uploaded for a project.\n */\n async list(\n orgSlug: string,\n projectSlug: string,\n ): Promise<ListSourceMapsResponse> {\n const data = await this.http\n .get(`api/0/projects/${orgSlug}/${projectSlug}/files/source-maps/`)\n .json();\n return this.validate(data, listSourceMapsResponseSchema);\n }\n}\n","import { z } from 'zod';\nimport {\n cleanupCountsSchema,\n cleanupOptionsSchema,\n projectStorageSchema,\n sourceMapGcResultSchema,\n storageSummarySchema,\n} from '../schemas/index.js';\nimport type {\n CleanupCounts,\n CleanupOptions,\n ProjectStorage,\n SourceMapGcResult,\n StorageSummary,\n} from '../types/index.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Storage API resource (admin only).\n *\n * Surfaces how much data the instance is holding and runs retention cleanups.\n */\nexport class StorageResource extends BaseResource {\n /**\n * Get the instance-wide storage summary: row counts per data category, the\n * whole-DB size, and exact source-map weight.\n */\n async getSummary(): Promise<StorageSummary> {\n const data = await this.http.get('api/storage/summary').json();\n return this.validate(data, storageSummarySchema);\n }\n\n /**\n * Get the per-project storage breakdown (one row per project, including\n * empty ones).\n */\n async getProjects(): Promise<ProjectStorage[]> {\n const data = await this.http.get('api/storage/projects').json();\n return this.validate(data, z.array(projectStorageSchema));\n }\n\n /**\n * Dry-run: count the rows a cleanup would remove. Mutates nothing — use it to\n * confirm impact before {@link executeCleanup}.\n */\n async previewCleanup(options: CleanupOptions): Promise<CleanupCounts> {\n const json = cleanupOptionsSchema.parse(options);\n const data = await this.http\n .post('api/storage/cleanup/preview', { json })\n .json();\n return this.validate(data, cleanupCountsSchema);\n }\n\n /**\n * Execute a cleanup: delete data older than `older_than_days` (optionally\n * scoped to one project) and remove any issue left with zero events.\n */\n async executeCleanup(options: CleanupOptions): Promise<CleanupCounts> {\n const json = cleanupOptionsSchema.parse(options);\n const data = await this.http.post('api/storage/cleanup', { json }).json();\n return this.validate(data, cleanupCountsSchema);\n }\n\n /**\n * Dry-run for {@link gcSourceMaps}: count the orphaned source-map files and\n * bytes a GC would reclaim. Mutates nothing.\n */\n async previewGcSourceMaps(): Promise<SourceMapGcResult> {\n const data = await this.http\n .post('api/storage/source-maps/gc/preview')\n .json();\n return this.validate(data, sourceMapGcResultSchema);\n }\n\n /**\n * Garbage-collect orphaned source maps: files no longer referenced by any\n * upload, removed from the DB and unlinked from disk. Safe — never touches\n * referenced files.\n */\n async gcSourceMaps(): Promise<SourceMapGcResult> {\n const data = await this.http.post('api/storage/source-maps/gc').json();\n return this.validate(data, sourceMapGcResultSchema);\n }\n}\n","import { teamMemberSchema, updateUserRoleSchema } from '../schemas/index.js';\nimport type { GlobalRole, TeamMember } from '../types/index.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Team API resource\n * Manages the global user roster and their global roles (admin only).\n */\nexport class TeamResource extends BaseResource {\n /**\n * List all team members (users)\n */\n async list(): Promise<TeamMember[]> {\n const data = await this.http.get('api/team').json();\n return this.validate(data, teamMemberSchema.array());\n }\n\n /**\n * Change a user's global role\n * @param userId - ID of the user to update\n * @param role - New global role to assign\n */\n async updateRole(userId: number, role: GlobalRole): Promise<void> {\n const body = this.validate({ role }, updateUserRoleSchema);\n await this.http.patch(`api/team/${userId}/role`, { json: body });\n }\n\n /**\n * Permanently remove a user from the instance.\n * @param userId - ID of the user to delete\n */\n async remove(userId: number): Promise<void> {\n await this.http.delete(`api/team/${userId}`);\n }\n}\n","import {\n authTokenCreatedSchema,\n authTokenSchema,\n createAuthTokenSchema,\n} from '../schemas/index.js';\nimport type {\n AuthToken,\n AuthTokenCreated,\n CreateAuthToken,\n} from '../types/index.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Auth Tokens API resource\n */\nexport class TokensResource extends BaseResource {\n /**\n * List all auth tokens (masked)\n */\n async list(): Promise<AuthToken[]> {\n const data = await this.http.get('api/tokens').json();\n return this.validate(data, authTokenSchema.array());\n }\n\n /**\n * Get a single auth token by ID (full token value).\n *\n * Previously returned a masked version, but the server now returns the\n * complete token for GET /api/tokens/{id}.\n */\n async get(id: number): Promise<AuthTokenCreated> {\n const data = await this.http.get(`api/tokens/${id}`).json();\n return this.validate(data, authTokenCreatedSchema);\n }\n\n /**\n * Create a new auth token\n * Note: The full token is only returned once during creation\n */\n async create(input: CreateAuthToken): Promise<AuthTokenCreated> {\n // Validate input\n const validatedInput = this.validate(input, createAuthTokenSchema);\n\n const data = await this.http\n .post('api/tokens', { json: validatedInput })\n .json();\n\n return this.validate(data, authTokenCreatedSchema);\n }\n\n /**\n * Delete an auth token\n */\n async delete(id: number): Promise<void> {\n await this.http.delete(`api/tokens/${id}`);\n }\n}\n","import { z } from 'zod';\nimport {\n offsetPaginatedResponseSchema,\n spanSchema,\n transactionDetailSchema,\n transactionSchema,\n transactionStatsSchema,\n} from '../schemas/index.js';\nimport type {\n ListTransactionsOptions,\n OffsetPaginatedResponse,\n Span,\n Transaction,\n TransactionDetail,\n TransactionStats,\n} from '../types/index.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Transactions API resource\n */\nexport class TransactionsResource extends BaseResource {\n /**\n * List transactions for a project with offset-based pagination (newest first)\n */\n async list(\n projectId: number,\n options?: ListTransactionsOptions,\n ): Promise<OffsetPaginatedResponse<Transaction>> {\n const searchParams: Record<string, string> = {};\n\n if (options?.page) {\n searchParams.page = String(options.page);\n }\n if (options?.per_page) {\n searchParams.per_page = String(options.per_page);\n }\n if (options?.name) {\n searchParams.name = options.name;\n }\n if (options?.op) {\n searchParams.op = options.op;\n }\n if (options?.status) {\n searchParams.status = options.status;\n }\n if (options?.environment) {\n searchParams.environment = options.environment;\n }\n if (options?.release) {\n searchParams.release = options.release;\n }\n\n const data = await this.http\n .get(`api/projects/${projectId}/transactions`, {\n searchParams,\n })\n .json();\n\n return this.validate(\n data,\n offsetPaginatedResponseSchema(transactionSchema),\n );\n }\n\n /**\n * Get the indexed spans extracted from a transaction, in waterfall order.\n */\n async getSpans(projectId: number, transactionId: string): Promise<Span[]> {\n const data = await this.http\n .get(`api/projects/${projectId}/transactions/${transactionId}/spans`)\n .json();\n\n return this.validate(data, z.array(spanSchema));\n }\n\n /**\n * Get aggregate performance stats (count, p50/p95/p99 latency, failure rate)\n * grouped by transaction name + op, most frequent first, with offset-based\n * pagination — same shape as the other list endpoints.\n */\n async getStats(\n projectId: number,\n options?: { page?: number; per_page?: number },\n ): Promise<OffsetPaginatedResponse<TransactionStats>> {\n const searchParams: Record<string, string> = {};\n if (options?.page) {\n searchParams.page = String(options.page);\n }\n if (options?.per_page) {\n searchParams.per_page = String(options.per_page);\n }\n\n const data = await this.http\n .get(`api/projects/${projectId}/transactions/stats`, { searchParams })\n .json();\n\n return this.validate(\n data,\n offsetPaginatedResponseSchema(transactionStatsSchema),\n );\n }\n\n /**\n * Get aggregate stats for a single (transaction name, op) group — a direct\n * lookup that works regardless of how many groups the project has. Throws\n * NotFoundError when the group has no transactions.\n */\n async getStatForGroup(\n projectId: number,\n name: string,\n op?: string,\n ): Promise<TransactionStats> {\n const searchParams: Record<string, string> = { name };\n if (op) {\n searchParams.op = op;\n }\n\n const data = await this.http\n .get(`api/projects/${projectId}/transactions/stats/group`, {\n searchParams,\n })\n .json();\n\n return this.validate(data, transactionStatsSchema);\n }\n\n /**\n * Get a single transaction by ID with its full Sentry payload (spans,\n * contexts.trace, measurements, tags) for the performance detail view.\n */\n async get(\n projectId: number,\n transactionId: string,\n ): Promise<TransactionDetail> {\n const data = await this.http\n .get(`api/projects/${projectId}/transactions/${transactionId}`)\n .json();\n\n return this.validate(data, transactionDetailSchema);\n }\n}\n","import ky, { type HTTPError, isHTTPError, type KyInstance } from 'ky';\nimport type { ClientConfig } from '../config.js';\nimport {\n AuthenticationError,\n AuthorizationError,\n BadRequestError,\n NetworkError,\n NotFoundError,\n RateLimitError,\n RustrakError,\n ServerError,\n} from '../errors/index.js';\n\nfunction transformHttpError(error: HTTPError): RustrakError {\n const { response } = error;\n const status = response.status;\n\n let errorMessage = `HTTP ${status} error`;\n const body = error.data as { error?: string; message?: string } | null;\n if (body) {\n errorMessage = body.error || body.message || errorMessage;\n }\n\n switch (status) {\n case 400:\n return new BadRequestError(errorMessage);\n case 401:\n return new AuthenticationError(errorMessage);\n case 403:\n return new AuthorizationError(errorMessage);\n case 404:\n return new NotFoundError(errorMessage);\n case 429: {\n const retryAfter = response.headers.get('Retry-After');\n return new RateLimitError(errorMessage, retryAfter ?? undefined);\n }\n case 500:\n case 502:\n case 503:\n case 504:\n return new ServerError(errorMessage, status);\n default:\n return new RustrakError(errorMessage, { statusCode: status });\n }\n}\n\nexport function createKyInstance(config: ClientConfig): KyInstance {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n ...config.headers,\n };\n\n if (config.token) {\n headers.Authorization = `Bearer ${config.token}`;\n }\n\n return ky.create({\n prefix: config.baseUrl,\n timeout: config.timeout ?? 30000,\n credentials: 'include',\n retry: {\n limit: config.maxRetries ?? 2,\n statusCodes: [408, 500, 502, 503, 504],\n methods: ['get', 'post', 'put', 'patch', 'delete'],\n },\n headers,\n hooks: {\n beforeError: [\n ({ error }) => {\n if (error.name === 'TimeoutError') {\n throw new NetworkError('Request timed out', error);\n }\n\n if (isHTTPError(error)) {\n throw transformHttpError(error);\n }\n\n throw new NetworkError(error.message, error);\n },\n ],\n },\n });\n}\n","import type { KyInstance } from 'ky';\nimport type { ClientConfig } from './config.js';\nimport {\n AlertIntegrationsResource,\n AlertRulesResource,\n AuthResource,\n EventsResource,\n HealthResource,\n InvitationsResource,\n IssuesResource,\n LogsResource,\n MembersResource,\n ProjectsResource,\n ReleasesResource,\n SessionsResource,\n SourceMapsResource,\n StorageResource,\n TeamResource,\n TokensResource,\n TransactionsResource,\n} from './resources/index.js';\nimport { createKyInstance } from './utils/index.js';\n\n/**\n * Main Rustrak API client\n *\n * @example\n * ```typescript\n * const client = new RustrakClient({\n * baseUrl: 'http://localhost:8080',\n * token: 'your-api-token'\n * });\n *\n * // List all projects\n * const projects = await client.projects.list();\n *\n * // Get issues for a project\n * const issues = await client.issues.list(1);\n *\n * // Get events for an issue\n * const events = await client.events.list(1, 'issue-uuid');\n * ```\n */\nexport class RustrakClient {\n private readonly http: KyInstance;\n\n /**\n * Authentication API resource\n */\n public readonly auth: AuthResource;\n\n /**\n * Projects API resource\n */\n public readonly projects: ProjectsResource;\n\n /**\n * Issues API resource\n */\n public readonly issues: IssuesResource;\n\n /**\n * Events API resource\n */\n public readonly events: EventsResource;\n\n /**\n * Auth Tokens API resource\n */\n public readonly tokens: TokensResource;\n\n /**\n * Alert Integrations API resource (global credential destinations)\n */\n public readonly alertIntegrations: AlertIntegrationsResource;\n\n /**\n * Alert Rules API resource (per-project alert configuration)\n */\n public readonly alertRules: AlertRulesResource;\n\n /**\n * Source Maps API resource (sentry-cli artifact bundle upload protocol)\n */\n public readonly sourceMaps: SourceMapsResource;\n\n /**\n * Team API resource (global user roster and roles)\n */\n public readonly team: TeamResource;\n\n /**\n * Invitations API resource (pending user invitations)\n */\n public readonly invitations: InvitationsResource;\n\n /**\n * Project Members API resource (per-project membership and roles)\n */\n public readonly members: MembersResource;\n\n /**\n * Sessions API resource (release health)\n */\n public readonly sessions: SessionsResource;\n\n /**\n * Releases API resource (data scoped to a specific release)\n */\n public readonly releases: ReleasesResource;\n\n /**\n * Transactions API resource (performance monitoring)\n */\n public readonly transactions: TransactionsResource;\n\n /**\n * Logs API resource (standalone logs)\n */\n public readonly logs: LogsResource;\n\n /**\n * Storage API resource (usage + retention cleanup, admin only)\n */\n public readonly storage: StorageResource;\n\n /**\n * Health API resource (version info)\n */\n public readonly health: HealthResource;\n\n /**\n * Create a new Rustrak API client\n *\n * @param config - Client configuration\n */\n constructor(config: ClientConfig) {\n this.http = createKyInstance(config);\n\n // Initialize resources\n this.auth = new AuthResource(this.http);\n this.projects = new ProjectsResource(this.http);\n this.issues = new IssuesResource(this.http);\n this.events = new EventsResource(this.http);\n this.tokens = new TokensResource(this.http);\n this.alertIntegrations = new AlertIntegrationsResource(this.http);\n this.alertRules = new AlertRulesResource(this.http);\n this.sourceMaps = new SourceMapsResource(this.http);\n this.team = new TeamResource(this.http);\n this.invitations = new InvitationsResource(this.http);\n this.members = new MembersResource(this.http);\n this.sessions = new SessionsResource(this.http);\n this.releases = new ReleasesResource(this.http);\n this.transactions = new TransactionsResource(this.http);\n this.logs = new LogsResource(this.http);\n this.storage = new StorageResource(this.http);\n this.health = new HealthResource(this.http);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/schemas/common.ts","../src/schemas/agent.ts","../src/schemas/alert.ts","../src/schemas/event.ts","../src/schemas/team.ts","../src/schemas/invitation.ts","../src/schemas/issue.ts","../src/schemas/log.ts","../src/schemas/member.ts","../src/schemas/project.ts","../src/schemas/session.ts","../src/schemas/sourcemap.ts","../src/schemas/storage.ts","../src/schemas/token.ts","../src/schemas/transaction.ts","../src/schemas/user.ts","../src/errors/base.ts","../src/errors/http.ts","../src/errors/validation.ts","../src/resources/base.ts","../src/resources/agents.ts","../src/resources/alert-integrations.ts","../src/resources/alert-rules.ts","../src/resources/auth.ts","../src/resources/events.ts","../src/schemas/version.ts","../src/resources/health.ts","../src/resources/invitations.ts","../src/resources/issues.ts","../src/resources/logs.ts","../src/resources/members.ts","../src/resources/projects.ts","../src/resources/releases.ts","../src/resources/sessions.ts","../src/resources/sourcemaps.ts","../src/resources/spans.ts","../src/resources/storage.ts","../src/resources/team.ts","../src/resources/tokens.ts","../src/resources/transactions.ts","../src/utils/http.ts","../src/client.ts"],"names":["z","ky","isHTTPError"],"mappings":";;;;;;;;;;AAKO,IAAM,uBAAA,GAA0B,CACrC,UAAA,KAEAA,KAAA,CAAE,MAAA,CAAO;AAAA,EACP,KAAA,EAAOA,KAAA,CAAE,KAAA,CAAM,UAAU,CAAA;AAAA,EACzB,WAAA,EAAaA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,QAAA,EAAUA,MAAE,OAAA;AACd,CAAC,CAAA;AAKI,IAAM,6BAAA,GAAgC,CAC3C,UAAA,KAEAA,KAAA,CAAE,MAAA,CAAO;AAAA,EACP,KAAA,EAAOA,KAAA,CAAE,KAAA,CAAM,UAAU,CAAA;AAAA,EACzB,WAAA,EAAaA,KAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EAC5B,IAAA,EAAMA,KAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACrB,QAAA,EAAUA,KAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACzB,WAAA,EAAaA,KAAA,CAAE,MAAA,EAAO,CAAE,GAAA;AAC1B,CAAC,CAAA;AAK4BA,KAAA,CAAE,IAAA,CAAK,CAAC,KAAA,EAAO,MAAM,CAAC;AAKtBA,MAAE,IAAA,CAAK;AAAA,EACpC,cAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAC;AAKgCA,MAAE,IAAA,CAAK,CAAC,QAAQ,UAAA,EAAY,OAAA,EAAS,KAAK,CAAC;AAKrE,IAAM,cAAA,GAAiBA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAM3C,IAAM,UAAA,GAAaA,KAAA,CAAE,MAAA,EAAO,CAAE,IAAA,EAAK;AAWnC,IAAM,aAAA,GAAgBA,KAAA,CAC1B,MAAA,EAAO,CACP,KAAA;AAAA,EACC,+EAAA;AAAA,EACA;AACF,CAAA;AAK4BA,MAAE,MAAA,CAAO;AAAA,EACrC,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,EAChB,OAAA,EAASA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACtB,CAAC;;;AC1EM,IAAM,0BAAA,GAA6BA,MAAE,MAAA,CAAO;AAAA,EACjD,MAAA,EAAQ,cAAA;AAAA,EACR,KAAA,EAAOA,MAAE,MAAA;AACX,CAAC,CAAA;AAKM,IAAM,wBAAA,GAA2BA,MAAE,MAAA,CAAO;AAAA,EAC/C,MAAA,EAAQ,cAAA;AAAA,EACR,MAAA,EAAQA,MAAE,MAAA,EAAO;AAAA,EACjB,MAAA,EAAQA,MAAE,MAAA;AACZ,CAAC,CAAA;AAKM,IAAM,uBAAA,GAA0BA,MAAE,MAAA,CAAO;AAAA,EAC9C,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,EAChB,KAAA,EAAOA,MAAE,MAAA;AACX,CAAC,CAAA;AAMM,IAAM,uBAAA,GAA0BA,MAAE,MAAA,CAAO;AAAA,EAC9C,QAAA,EAAUA,MAAE,MAAA,EAAO;AAAA;AAAA,EAEnB,WAAA,EAAaA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,QAAQ,CAAA;AAAA,EAC/B,WAAA,EAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,YAAA,EAAcA,MAAE,MAAA,EAAO;AAAA,EACvB,eAAA,EAAiBA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EAChC,UAAA,EAAY;AACd,CAAC,CAAA;AClCM,IAAM,qBAAqBA,KAAAA,CAAE,IAAA,CAAK,CAAC,SAAA,EAAW,OAAA,EAAS,OAAO,CAAC,CAAA;AAQ/D,IAAM,kBAAkBA,KAAAA,CAAE,IAAA,CAAK,CAAC,WAAA,EAAa,YAAA,EAAc,QAAQ,CAAC,CAAA;AAKpE,IAAM,iBAAA,GAAoBA,MAAE,IAAA,CAAK;AAAA,EACtC,SAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAC,CAAA;AAKM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA,EAC7C,EAAA,EAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACnB,IAAA,EAAMA,MAAE,MAAA,EAAO;AAAA,EACf,aAAA,EAAe,kBAAA;AAAA,EACf,WAAA,EAAaA,MAAE,MAAA,CAAOA,KAAAA,CAAE,QAAO,EAAGA,KAAAA,CAAE,SAAS,CAAA;AAAA,EAC7C,UAAA,EAAYA,MAAE,OAAA,EAAQ;AAAA,EACtB,aAAA,EAAeA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EAC9B,eAAA,EAAiB,eAAe,QAAA,EAAS;AAAA,EACzC,oBAAA,EAAsBA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC1C,eAAA,EAAiB,eAAe,QAAA,EAAS;AAAA,EACzC,UAAA,EAAY,cAAA;AAAA,EACZ,UAAA,EAAY;AACd,CAAC,CAAA;AAQM,IAAM,4BAAA,GAA+BA,MAAE,MAAA,CAAO;AAAA,EACnD,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACtB,aAAA,EAAe,kBAAA;AAAA,EACf,WAAA,EAAaA,MAAE,MAAA,CAAOA,KAAAA,CAAE,QAAO,EAAGA,KAAAA,CAAE,SAAS,CAAA;AAAA,EAC7C,UAAA,EAAYA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;AAC1B,CAAC,CAAA;AAQM,IAAM,4BAAA,GAA+BA,MAAE,MAAA,CAAO;AAAA,EACnD,MAAMA,KAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,EAAE,QAAA,EAAS;AAAA,EACjC,WAAA,EAAaA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,IAAUA,KAAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,EAAS;AAAA,EACxD,UAAA,EAAYA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;AAC1B,CAAC,CAAA;AAQM,IAAM,2BAAA,GAA8BA,MAAE,MAAA,CAAO;AAAA,EAClD,cAAA,EAAgBA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EAC/B,gBAAA,EAAkBA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,OAAA,EAAS,CAAA,CAAE,OAAA,CAAQ,EAAE;AAChE,CAAC,CAAA;AAKM,IAAM,eAAA,GAAkBA,MAAE,MAAA,CAAO;AAAA,EACtC,EAAA,EAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACnB,UAAA,EAAYA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EAC3B,IAAA,EAAMA,MAAE,MAAA,EAAO;AAAA,EACf,UAAA,EAAY,eAAA;AAAA,EACZ,UAAA,EAAYA,MAAE,OAAA,EAAQ;AAAA,EACtB,UAAA,EAAYA,MAAE,MAAA,CAAOA,KAAAA,CAAE,QAAO,EAAGA,KAAAA,CAAE,SAAS,CAAA;AAAA,EAC5C,gBAAA,EAAkBA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACjC,iBAAA,EAAmB,eAAe,QAAA,EAAS;AAAA,EAC3C,UAAA,EAAY,cAAA;AAAA,EACZ,UAAA,EAAY,cAAA;AAAA,EACZ,UAAUA,KAAAA,CAAE,KAAA,CAAM,2BAA2B,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAA;AAAA,EACzD,iBAAiBA,KAAAA,CAAE,KAAA,CAAMA,MAAE,MAAA,EAAO,CAAE,KAAK;AAC3C,CAAC,CAAA;AAKM,IAAM,qBAAA,GAAwBA,MAAE,MAAA,CAAO;AAAA,EAC5C,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACtB,UAAA,EAAY,eAAA;AAAA,EACZ,UAAUA,KAAAA,CAAE,KAAA,CAAM,2BAA2B,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAA;AAAA,EACzD,UAAA,EAAYA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EACjC,UAAA,EAAYA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,IAAUA,KAAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,EAAS;AAAA,EACvD,gBAAA,EAAkBA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA;AAC5C,CAAC,CAAA;AAKM,IAAM,qBAAA,GAAwBA,MAAE,MAAA,CAAO;AAAA,EAC5C,MAAMA,KAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,EAAE,QAAA,EAAS;AAAA,EACjC,UAAA,EAAYA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EACjC,UAAA,EAAYA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,IAAUA,KAAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,EAAS;AAAA,EACvD,gBAAA,EAAkBA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EACnD,QAAA,EAAUA,KAAAA,CAAE,KAAA,CAAM,2BAA2B,EAAE,QAAA;AACjD,CAAC,CAAA;AAKM,IAAM,kBAAA,GAAqBA,MAAE,MAAA,CAAO;AAAA,EACzC,EAAA,EAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACnB,eAAeA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA,EAAS;AAAA,EACzC,gBAAgBA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA,EAAS;AAAA,EAC1C,UAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAA,GAAO,QAAA,EAAS;AAAA,EACrC,YAAYA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA,EAAS;AAAA,EACtC,UAAA,EAAYA,MAAE,MAAA,EAAO;AAAA,EACrB,YAAA,EAAcA,MAAE,MAAA,EAAO;AAAA,EACvB,YAAA,EAAcA,MAAE,MAAA,EAAO;AAAA,EACvB,MAAA,EAAQ,iBAAA;AAAA,EACR,aAAA,EAAeA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EAC9B,aAAA,EAAe,eAAe,QAAA,EAAS;AAAA,EACvC,aAAA,EAAeA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACnC,kBAAkBA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA,EAAS;AAAA,EAC5C,eAAA,EAAiBA,MAAE,MAAA,EAAO;AAAA,EAC1B,UAAA,EAAY,cAAA;AAAA,EACZ,OAAA,EAAS,eAAe,QAAA;AAC1B,CAAC,CAAA;AAKM,IAAM,yBAAA,GAA4BA,MAAE,MAAA,CAAO;AAAA,EAChD,OAAA,EAASA,MAAE,OAAA,EAAQ;AAAA,EACnB,OAAA,EAASA,MAAE,MAAA;AACb,CAAC,CAAA;AAKM,IAAM,yBAAA,GAA4BA,MAAE,MAAA,CAAO;AAAA,EAChD,gBAAA,EAAkBA,KAAAA,CAAE,MAAA,CAAOA,KAAAA,CAAE,MAAA,IAAUA,KAAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA;AACtD,CAAC,CAAA;ACrJM,IAAM,WAAA,GAAcA,MAAE,MAAA,CAAO;AAAA,EAClC,EAAA,EAAI,UAAA;AAAA,EACJ,QAAA,EAAU,aAAA;AAAA,EACV,QAAA,EAAU,WAAW,QAAA,EAAS;AAAA,EAC9B,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,EAChB,SAAA,EAAW,cAAA;AAAA,EACX,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,EAChB,QAAA,EAAUA,MAAE,MAAA,EAAO;AAAA,EACnB,OAAA,EAASA,MAAE,MAAA,EAAO;AAAA,EAClB,WAAA,EAAaA,MAAE,MAAA,EAAO;AAAA,EACtB,UAAA,EAAYA,MAAE,MAAA;AAChB,CAAC,CAAA;AAKM,IAAM,iBAAA,GAAoBA,MAAE,MAAA,CAAO;AAAA,EACxC,EAAA,EAAI,UAAA;AAAA,EACJ,QAAA,EAAU,aAAA;AAAA,EACV,QAAA,EAAU,WAAW,QAAA,EAAS;AAAA,EAC9B,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,EAChB,SAAA,EAAW,cAAA;AAAA,EACX,WAAA,EAAa,cAAA;AAAA,EACb,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,EAChB,QAAA,EAAUA,MAAE,MAAA,EAAO;AAAA,EACnB,OAAA,EAASA,MAAE,MAAA,EAAO;AAAA,EAClB,WAAA,EAAaA,MAAE,MAAA,EAAO;AAAA,EACtB,WAAA,EAAaA,MAAE,MAAA,EAAO;AAAA,EACtB,QAAA,EAAUA,MAAE,MAAA,EAAO;AAAA,EACnB,WAAA,EAAaA,MAAE,MAAA,EAAO;AAAA,EACtB,UAAA,EAAYA,MAAE,MAAA,EAAO;AAAA,EACrB,IAAA,EAAMA,MAAE,MAAA,CAAOA,KAAAA,CAAE,QAAO,EAAGA,KAAAA,CAAE,KAAK;AAAA;AACpC,CAAC,CAAA;AChCM,IAAM,mBAAmBA,KAAAA,CAAE,IAAA,CAAK,CAAC,OAAA,EAAS,QAAQ,CAAC,CAAA;AAKnD,IAAM,gBAAA,GAAmBA,MAAE,MAAA,CAAO;AAAA,EACvC,EAAA,EAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACnB,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,KAAA,EAAM;AAAA,EACxB,IAAA,EAAM,gBAAA;AAAA,EACN,SAAA,EAAWA,MAAE,OAAA,EAAQ;AAAA;AAAA,EAErB,UAAA,EAAYA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EACjC,UAAA,EAAY,cAAA;AAAA,EACZ,UAAA,EAAY,cAAA,CAAe,QAAA,EAAS,CAAE,QAAA;AACxC,CAAC,CAAA;AAKM,IAAM,oBAAA,GAAuBA,MAAE,MAAA,CAAO;AAAA,EAC3C,IAAA,EAAM;AACR,CAAC,CAAA;;;ACnBM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,EAAO;AAKxC,IAAM,gBAAA,GAAmBA,MAAE,MAAA,CAAO;AAAA,EACvC,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,EAChB,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,KAAA,EAAM;AAAA,EACxB,IAAA,EAAM,gBAAA;AAAA,EACN,MAAA,EAAQ,sBAAA;AAAA,EACR,UAAA,EAAY,cAAA;AAAA,EACZ,UAAA,EAAY;AACd,CAAC,CAAA;AAKM,IAAM,oBAAA,GAAuBA,MAAE,MAAA,CAAO;AAAA,EAC3C,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,KAAA,EAAM;AAAA,EACxB,IAAA,EAAM,gBAAA;AAAA,EACN,MAAA,EAAQ,sBAAA;AAAA,EACR,UAAA,EAAY;AACd,CAAC,CAAA;AAKM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA,EAC7C,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,KAAA,EAAM;AAAA,EACxB,IAAA,EAAM;AACR,CAAC,CAAA;AAKM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA,EAC7C,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACvB,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC;AAC5B,CAAC,CAAA;ACxCM,IAAM,oBAAoBA,KAAAA,CAAE,IAAA,CAAK,CAAC,YAAA,EAAc,UAAA,EAAY,SAAS,CAAC,CAAA;AAKtE,IAAM,sBAAsBA,KAAAA,CAAE,IAAA,CAAK,CAAC,KAAA,EAAO,QAAA,EAAU,MAAM,CAAC,CAAA;AAK5D,IAAM,WAAA,GAAcA,MAAE,MAAA,CAAO;AAAA,EAClC,EAAA,EAAI,UAAA;AAAA,EACJ,UAAA,EAAYA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EAC3B,QAAA,EAAUA,MAAE,MAAA,EAAO;AAAA,EACnB,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,EAChB,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,EAChB,OAAA,EAASA,MAAE,MAAA,EAAO;AAAA,EAClB,MAAA,EAAQA,MAAE,MAAA,EAAO;AAAA,EACjB,UAAA,EAAY,cAAA;AAAA,EACZ,SAAA,EAAW,cAAA;AAAA,EACX,WAAA,EAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EAC5B,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAE9B,MAAA,EAAQ,iBAAA;AAAA,EACR,SAAA,EAAWA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC/B,QAAA,EAAU,oBAAoB,QAAA,EAAS;AAAA,EACvC,aAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA,EAAS;AAAA,EACvC,aAAA,EAAeA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACnC,UAAA,EAAYA,MAAE,MAAA,EAAO;AAAA,EACrB,cAAA,EAAgBA,MAAE,MAAA,EAAO;AAAA,EACzB,aAAA,EAAeA,MAAE,MAAA,EAAO;AAAA,EACxB,YAAA,EAAcA,MAAE,MAAA,EAAO;AAAA,EACvB,cAAA,EAAgBA,MAAE,MAAA,CAAOA,KAAAA,CAAE,QAAO,EAAGA,KAAAA,CAAE,SAAS,CAAA;AAAA;AAAA;AAAA,EAGhD,iBAAA,EAAmBA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,OAAA,CAAQ,CAAC,CAAA;AAAA;AAAA,EAExD,aAAA,EAAeA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EACpC,aAAA,EAAeA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EACpC,QAAA,EAAUA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA;AAAA;AAAA,EAG/B,YAAYA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA,EAAS;AAAA,EACtC,KAAA,EAAOA,MAAE,KAAA,CAAMA,KAAAA,CAAE,QAAO,CAAE,GAAA,EAAK,CAAA,CAAE,QAAA,EAAS;AAAA;AAAA,EAE1C,WAAA,EAAaA,MAAE,OAAA,EAAQ;AAAA,EACvB,QAAA,EAAUA,MAAE,OAAA;AACd,CAAC,CAAA;AASM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA,EAC7C,MAAA,EAAQA,KAAAA,CACL,KAAA,CAAM,CAAC,iBAAA,EAAmBA,KAAAA,CAAE,OAAA,CAAQ,uBAAuB,CAAC,CAAC,CAAA,CAC7D,QAAA,EAAS;AAAA,EACZ,SAAA,EAAWA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC/B,QAAA,EAAU,oBAAoB,QAAA,EAAS;AAAA,EACvC,WAAA,EAAaA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,EAClD,eAAeA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,EAC9C,WAAA,EAAaA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAClC,QAAA,EAAUA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;AACxB,CAAC,CAAA;AAKM,IAAM,eAAA,GAAkBA,MAAE,MAAA,CAAO;AAAA,EACtC,EAAA,EAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACnB,UAAA,EAAYA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EAC3B,QAAA,EAAU,UAAA;AAAA,EACV,YAAA,EAAcA,MAAE,MAAA,EAAO;AAAA,EACvB,iBAAA,EAAmBA,MAAE,MAAA,EAAO;AAAA,EAC5B,UAAA,EAAY;AACd,CAAC,CAAA;AAKM,IAAM,mBAAA,GAAsBA,MAAE,MAAA,CAAO;AAAA,EAC1C,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,EAChB,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA;AACpB,CAAC,CAAA;AAOM,IAAM,mBAAA,GAAsBA,MAAE,MAAA,CAAO;AAAA,EAC1C,GAAA,EAAKA,MAAE,MAAA,EAAO;AAAA,EACd,IAAA,EAAMA,MAAE,MAAA,EAAO;AAAA,EACf,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,EAChB,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACtB,UAAA,EAAY,cAAA;AAAA,EACZ,SAAA,EAAW;AACb,CAAC,CAAA;AAKM,IAAM,gBAAA,GAAmBA,MAAE,MAAA,CAAO;AAAA,EACvC,GAAA,EAAKA,MAAE,MAAA,EAAO;AAAA,EACd,YAAA,EAAcA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EAC7B,UAAA,EAAYA,KAAAA,CAAE,KAAA,CAAM,mBAAmB;AACzC,CAAC,CAAA;AAKM,IAAM,qBAAA,GAAwBA,MAAE,MAAA,CAAO;AAAA,EAC5C,UAAA,EAAYA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EAC3B,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAM,gBAAgB;AAChC,CAAC,CAAA;AAKqCA,KAAAA,CAAE,IAAA,CAAK,CAAC,KAAA,EAAO,KAAK,CAAC;AAKpD,IAAM,gBAAA,GAAmBA,MAAE,MAAA,CAAO;AAAA,EACvC,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,MAAA,EAAO,EAAGA,KAAAA,CAAE,MAAA,EAAQ,CAAC,CAAC;AACjD,CAAC,CAAA;AAKM,IAAM,mBAAA,GAAsBA,MAAE,MAAA,CAAO;AAAA,EAC1C,EAAA,EAAI,UAAA;AAAA,EACJ,QAAA,EAAU,UAAA;AAAA,EACV,SAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA,EAAS;AAAA,EACnC,IAAA,EAAMA,MAAE,MAAA,EAAO;AAAA,EACf,IAAA,EAAMA,MAAE,MAAA,EAAO;AAAA,EACf,UAAA,EAAY;AACd,CAAC,CAAA;AAKM,IAAM,gBAAA,GAAmBA,MAAE,MAAA,CAAO;AAAA,EACvC,EAAA,EAAI,UAAA;AAAA,EACJ,UAAA,EAAYA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EAC3B,QAAA,EAAU,WAAW,QAAA,EAAS;AAAA,EAC9B,QAAA,EAAU,WAAW,QAAA,EAAS;AAAA,EAC9B,IAAA,EAAMA,MAAE,MAAA,EAAO;AAAA;AAAA;AAAA,EAGf,KAAA,EAAOA,KAAAA,CAAE,KAAA,CAAM,CAACA,KAAAA,CAAE,KAAA,EAAM,EAAGA,KAAAA,CAAE,OAAA,CAAQ,EAAE,CAAC,CAAC,CAAA;AAAA,EACzC,QAAA,EAAUA,MAAE,MAAA,EAAO;AAAA,EACnB,UAAA,EAAY;AACd,CAAC,CAAA;AAKM,IAAM,mBAAA,GAAsBA,MAAE,MAAA,CAAO;AAAA,EAC1C,IAAA,EAAMA,MAAE,MAAA;AACV,CAAC,CAAA;AAKM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA,EAC7C,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC1B,KAAA,EAAOA,KAAAA,CAAE,KAAA,EAAM,CAAE,QAAA,EAAS;AAAA,EAC1B,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,QAAA,EAAU,WAAW,QAAA;AACvB,CAAC,CAAA;AAKM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA,EAC7C,GAAA,EAAKA,KAAAA,CAAE,KAAA,CAAM,UAAU,CAAA;AAAA,EACvB,MAAA,EAAQA,KAAAA,CACL,KAAA,CAAM,CAAC,iBAAA,EAAmBA,KAAAA,CAAE,OAAA,CAAQ,uBAAuB,CAAC,CAAC,CAAA,CAC7D,QAAA,EAAS;AAAA,EACZ,QAAA,EAAU,oBAAoB,QAAA;AAChC,CAAC,CAAA;AAKM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA,EAC7C,GAAA,EAAKA,KAAAA,CAAE,KAAA,CAAM,UAAU;AACzB,CAAC,CAAA;AAKM,IAAM,kBAAA,GAAqBA,MAAE,MAAA,CAAO;AAAA,EACzC,OAAA,EAASA,MAAE,MAAA;AACb,CAAC,CAAA;ACpMM,IAAM,SAAA,GAAYA,MAAE,MAAA,CAAO;AAAA,EAChC,EAAA,EAAI,UAAA;AAAA,EACJ,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC7B,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA;AAAA,EAEhB,iBAAiBA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA,EAAS;AAAA,EAC3C,IAAA,EAAMA,MAAE,MAAA,EAAO;AAAA,EACf,UAAA,EAAYA,MAAE,MAAA,CAAOA,KAAAA,CAAE,QAAO,EAAGA,KAAAA,CAAE,KAAK,CAAA;AAAA,EACxC,SAAA,EAAW,cAAA;AAAA,EACX,WAAA,EAAa;AACf,CAAC,CAAA;ACfM,IAAM,oBAAoBA,KAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,QAAA,EAAU,OAAO,CAAC,CAAA;AAK9D,IAAM,mBAAA,GAAsBA,MAAE,MAAA,CAAO;AAAA,EAC1C,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACxB,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,KAAA,EAAM;AAAA,EACxB,IAAA,EAAM,iBAAA;AAAA,EACN,UAAA,EAAY;AACd,CAAC,CAAA;AAKM,IAAM,yBAAA,GAA4BA,MAAE,MAAA,CAAO;AAAA,EAChD,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACxB,IAAA,EAAM;AACR,CAAC,CAAA;AClBM,IAAM,aAAA,GAAgBA,MAAE,MAAA,CAAO;AAAA,EACpC,EAAA,EAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACnB,IAAA,EAAMA,MAAE,MAAA,EAAO;AAAA,EACf,IAAA,EAAMA,MAAE,MAAA,EAAO;AAAA,EACf,UAAA,EAAY,UAAA;AAAA,EACZ,GAAA,EAAKA,MAAE,MAAA,EAAO;AAAA,EACd,kBAAA,EAAoBA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACnC,oBAAA,EAAsBA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACrC,UAAA,EAAY,cAAA;AAAA,EACZ,UAAA,EAAY,cAAA;AAAA,EACZ,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACvB,CAAC,CAAA;AAKM,IAAM,mBAAA,GAAsBA,MAAE,MAAA,CAAO;AAAA,EAC1C,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACtB,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACnB,CAAC,CAAA;AAKM,IAAM,mBAAA,GAAsBA,MAAE,MAAA,CAAO;AAAA,EAC1C,MAAMA,KAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,EAAE,QAAA;AAC1B,CAAC,CAAA;AC7BM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA,EAC7C,OAAA,EAASA,MAAE,MAAA,EAAO;AAAA,EAClB,WAAA,EAAaA,MAAE,MAAA,EAAO;AAAA,EACtB,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACtB,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACxB,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACxB,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACzB,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACxB,wBAAA,EAA0BA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9C,qBAAA,EAAuBA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACpC,CAAC,CAAA;AAEM,IAAM,mBAAA,GAAsBA,KAAAA,CAAE,KAAA,CAAM,sBAAsB,CAAA;AAE1D,IAAM,oBAAA,GAAuBA,MAAE,MAAA,CAAO;AAAA,EAC3C,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACtB,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACxB,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACxB,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACzB,wBAAA,EAA0BA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9C,qBAAA,EAAuBA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3C,eAAA,EAAiBA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA;AAC9B,CAAC,CAAA;AAEM,IAAM,4BAAA,GAA+BA,MAAE,MAAA,CAAO;AAAA,EACnD,MAAA,EAAQ,cAAA;AAAA,EACR,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACtB,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACxB,wBAAA,EAA0BA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACvC,CAAC,CAAA;AAEM,IAAM,uBAAA,GAA0BA,KAAAA,CAAE,KAAA,CAAM,4BAA4B,CAAA;AChCpE,IAAM,2BAAA,GAA8BA,MAAE,MAAA,CAAO;AAAA,EAClD,GAAA,EAAKA,MAAE,MAAA,EAAO;AAAA,EACd,SAAA,EAAWA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EAC1B,gBAAA,EAAkBA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACjC,cAAA,EAAgBA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EAC/B,aAAA,EAAeA,MAAE,MAAA,EAAO;AAAA,EACxB,MAAA,EAAQA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,QAAQ,CAAA;AAAA,EAC1B,aAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA;AAChC,CAAC,CAAA;AAEM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA,EAC7C,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,EAChB,aAAA,EAAeA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,QAAQ,CAAA;AAAA,EACjC,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACrB,CAAC,CAAA;AAEM,IAAM,mBAAA,GAAsBA,MAAE,MAAA,CAAO;AAAA,EAC1C,OAAA,EAASA,MAAE,MAAA,EAAO;AAAA,EAClB,QAAA,EAAUA,MAAE,MAAA,EAAO;AAAA,EACnB,IAAA,EAAMA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACrB,SAAA,EAAWA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EAC1B,YAAA,EAAcA,MAAE,MAAA;AAClB,CAAC,CAAA;AAEM,IAAM,4BAAA,GAA+BA,MAAE,MAAA,CAAO;AAAA,EACnD,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAM,mBAAmB;AACnC,CAAC,CAAA;ACtBM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA,EAC7C,WAAA,EAAaA,MAAE,MAAA,EAAO;AAAA,EACtB,iBAAA,EAAmBA,MAAE,MAAA,EAAO;AAAA,EAC5B,WAAA,EAAaA,MAAE,MAAA,EAAO;AAAA,EACtB,UAAA,EAAYA,MAAE,MAAA;AAChB,CAAC,CAAA;AAMM,IAAM,oBAAA,GAAuBA,MAAE,MAAA,CAAO;AAAA,EAC3C,mBAAA,EAAqBA,MAAE,MAAA,EAAO;AAAA,EAC9B,YAAA,EAAcA,MAAE,MAAA,EAAO;AAAA,EACvB,kBAAA,EAAoBA,MAAE,MAAA,EAAO;AAAA,EAC7B,WAAA,EAAaA,MAAE,MAAA,EAAO;AAAA,EACtB,UAAA,EAAYA,MAAE,MAAA,EAAO;AAAA,EACrB,WAAA,EAAa;AACf,CAAC,CAAA;AAMM,IAAM,oBAAA,GAAuBA,MAAE,MAAA,CAAO;AAAA,EAC3C,UAAA,EAAYA,MAAE,MAAA,EAAO;AAAA,EACrB,YAAA,EAAcA,MAAE,MAAA,EAAO;AAAA,EACvB,YAAA,EAAcA,MAAE,MAAA,EAAO;AAAA,EACvB,kBAAA,EAAoBA,MAAE,MAAA,EAAO;AAAA,EAC7B,WAAA,EAAaA,MAAE,MAAA,EAAO;AAAA,EACtB,UAAA,EAAYA,MAAE,MAAA,EAAO;AAAA,EACrB,iBAAA,EAAmBA,MAAE,MAAA,EAAO;AAAA,EAC5B,eAAA,EAAiBA,MAAE,MAAA;AACrB,CAAC,CAAA;AAMM,IAAM,mBAAA,GAAsBA,MAAE,MAAA,CAAO;AAAA,EAC1C,MAAA,EAAQA,MAAE,MAAA,EAAO;AAAA,EACjB,YAAA,EAAcA,MAAE,MAAA,EAAO;AAAA,EACvB,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,EAChB,IAAA,EAAMA,MAAE,MAAA,EAAO;AAAA,EACf,cAAA,EAAgBA,MAAE,MAAA;AACpB,CAAC,CAAA;AAMM,IAAM,uBAAA,GAA0BA,MAAE,MAAA,CAAO;AAAA,EAC9C,aAAA,EAAeA,MAAE,MAAA,EAAO;AAAA,EACxB,WAAA,EAAaA,MAAE,MAAA;AACjB,CAAC,CAAA;AAcM,IAAM,oBAAA,GAAuBA,MAAE,MAAA,CAAO;AAAA,EAC3C,iBAAiBA,KAAAA,CAAE,MAAA,GAAS,GAAA,EAAI,CAAE,IAAI,CAAC,CAAA;AAAA,EACvC,YAAYA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA,EAAS;AAAA,EACtC,cAAA,EAAgBA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EACrC,oBAAA,EAAsBA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAC3C,YAAA,EAAcA,KAAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;AAC5B,CAAC,CAAA;AC1EM,IAAM,eAAA,GAAkBA,MAAE,MAAA,CAAO;AAAA,EACtC,EAAA,EAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACnB,YAAA,EAAcA,MAAE,MAAA,EAAO;AAAA,EACvB,WAAA,EAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,UAAA,EAAY,cAAA;AAAA,EACZ,YAAA,EAAc,eAAe,QAAA;AAC/B,CAAC,CAAA;AAKM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA,EAC7C,EAAA,EAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACnB,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,EAChB,WAAA,EAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,UAAA,EAAY;AACd,CAAC,CAAA;AAKM,IAAM,qBAAA,GAAwBA,MAAE,MAAA,CAAO;AAAA,EAC5C,WAAA,EAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAC1B,CAAC,CAAA;ACvBM,IAAM,iBAAA,GAAoBA,MAAE,MAAA,CAAO;AAAA,EACxC,EAAA,EAAI,UAAA;AAAA,EACJ,QAAA,EAAU,aAAA;AAAA,EACV,gBAAA,EAAkBA,MAAE,MAAA,EAAO;AAAA,EAC3B,SAAA,EAAW,cAAA;AAAA,EACX,eAAA,EAAiB,eAAe,QAAA,EAAS;AAAA,EACzC,WAAA,EAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,QAAA,EAAUA,MAAE,MAAA,EAAO;AAAA,EACnB,WAAA,EAAaA,MAAE,MAAA,EAAO;AAAA,EACtB,OAAA,EAASA,MAAE,MAAA,EAAO;AAAA,EAClB,WAAA,EAAa;AACf,CAAC,CAAA;AASM,IAAM,uBAAA,GAA0BA,MAAE,MAAA,CAAO;AAAA,EAC9C,EAAA,EAAI,UAAA;AAAA,EACJ,QAAA,EAAU,aAAA;AAAA,EACV,gBAAA,EAAkBA,MAAE,MAAA,EAAO;AAAA,EAC3B,SAAA,EAAW,cAAA;AAAA,EACX,eAAA,EAAiB,eAAe,QAAA,EAAS;AAAA,EACzC,WAAA,EAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,QAAA,EAAUA,MAAE,MAAA,EAAO;AAAA,EACnB,WAAA,EAAaA,MAAE,MAAA,EAAO;AAAA,EACtB,OAAA,EAASA,MAAE,MAAA,EAAO;AAAA,EAClB,WAAA,EAAa,cAAA;AAAA,EACb,IAAA,EAAMA,MAAE,MAAA,CAAOA,KAAAA,CAAE,QAAO,EAAGA,KAAAA,CAAE,KAAK;AAAA;AACpC,CAAC,CAAA;AAQM,IAAM,UAAA,GAAaA,MAAE,MAAA,CAAO;AAAA,EACjC,EAAA,EAAI,UAAA;AAAA;AAAA,EAEJ,cAAA,EAAgB,WAAW,QAAA,EAAS;AAAA,EACpC,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC7B,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,cAAA,EAAgBA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACpC,EAAA,EAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACxB,WAAA,EAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,MAAA,EAAQA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC5B,eAAA,EAAiB,eAAe,QAAA,EAAS;AAAA,EACzC,SAAA,EAAW,eAAe,QAAA,EAAS;AAAA,EACnC,WAAA,EAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,iBAAA,EAAmBA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACvC,UAAA,EAAYA,MAAE,OAAA,EAAQ;AAAA,EACtB,UAAA,EAAYA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAEhC,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC7B,WAAA,EAAaA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAEjC,qBAAA,EAAuBA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3C,iBAAA,EAAmBA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACvC,oBAAA,EAAsBA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC1C,qBAAA,EAAuBA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3C,gBAAA,EAAkBA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACtC,sBAAA,EAAwBA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC5C,yBAAA,EAA2BA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC/C,0BAAA,EAA4BA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAChD,yBAAA,EAA2BA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACxC,CAAC,CAAA;AAKM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA,EAC7C,gBAAA,EAAkBA,MAAE,MAAA,EAAO;AAAA,EAC3B,EAAA,EAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACxB,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACtB,MAAA,EAAQA,MAAE,MAAA,EAAO;AAAA,EACjB,MAAA,EAAQA,MAAE,MAAA,EAAO;AAAA,EACjB,MAAA,EAAQA,MAAE,MAAA,EAAO;AAAA,EACjB,YAAA,EAAcA,MAAE,MAAA;AAClB,CAAC,CAAA;ACnFM,IAAM,UAAA,GAAaA,MAAE,MAAA,CAAO;AAAA,EACjC,IAAIA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA,EAAS;AAAA,EAC9B,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,KAAA,EAAM;AAAA,EACxB,IAAA,EAAM,gBAAA;AAAA,EACN,QAAA,EAAUA,MAAE,OAAA;AACd,CAAC,CAAA;AAKM,IAAM,kBAAA,GAAqBA,MAAE,MAAA,CAAO;AAAA,EACzC,IAAA,EAAM;AACR,CAAC,CAAA;AAKgCA,MAAE,MAAA,CAAO;AAAA,EACxC,IAAA,EAAM,UAAA;AAAA,EACN,OAAA,EAASA,KAAAA,CAAE,KAAA,CAAMA,KAAAA,CAAE,QAAQ;AAC7B,CAAC;AAKM,IAAM,kBAAA,GAAqBA,MAAE,MAAA,CAAO;AAAA,EACzC,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,KAAA,EAAM;AAAA,EACxB,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC;AAC5B,CAAC,CAAA;AAKM,IAAM,qBAAA,GAAwBA,MAAE,MAAA,CAAO;AAAA,EAC5C,KAAA,EAAOA,KAAAA,CAAE,MAAA,EAAO,CAAE,KAAA,EAAM;AAAA,EACxB,QAAA,EAAUA,KAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC;AAC5B,CAAC,CAAA;;;ACvCM,IAAM,YAAA,GAAN,cAA2B,KAAA,CAAM;AAAA;AAAA;AAAA;AAAA,EAItB,SAAA;AAAA;AAAA;AAAA;AAAA,EAKA,UAAA;AAAA;AAAA;AAAA;AAAA,EAKA,KAAA;AAAA,EAEhB,WAAA,CACE,SACA,OAAA,EAKA;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAA,GAAO,KAAK,WAAA,CAAY,IAAA;AAC7B,IAAA,IAAA,CAAK,SAAA,GAAY,SAAS,SAAA,IAAa,KAAA;AACvC,IAAA,IAAA,CAAK,aAAa,OAAA,EAAS,UAAA;AAC3B,IAAA,IAAA,CAAK,QAAQ,OAAA,EAAS,KAAA;AAGtB,IAAA,IAAI,MAAM,iBAAA,EAAmB;AAC3B,MAAA,KAAA,CAAM,iBAAA,CAAkB,IAAA,EAAM,IAAA,CAAK,WAAW,CAAA;AAAA,IAChD;AAAA,EACF;AACF;;;AChCO,IAAM,YAAA,GAAN,cAA2B,YAAA,CAAa;AAAA,EAC7C,WAAA,CAAY,SAAiB,KAAA,EAAe;AAC1C,IAAA,KAAA,CAAM,OAAA,EAAS,EAAE,SAAA,EAAW,IAAA,EAAM,OAAO,CAAA;AAAA,EAC3C;AACF;AAMO,IAAM,mBAAA,GAAN,cAAkC,YAAA,CAAa;AAAA,EACpD,WAAA,CAAY,UAAU,uBAAA,EAAyB;AAC7C,IAAA,KAAA,CAAM,SAAS,EAAE,SAAA,EAAW,KAAA,EAAO,UAAA,EAAY,KAAK,CAAA;AAAA,EACtD;AACF;AAMO,IAAM,kBAAA,GAAN,cAAiC,YAAA,CAAa;AAAA,EACnD,WAAA,CAAY,UAAU,0BAAA,EAA4B;AAChD,IAAA,KAAA,CAAM,SAAS,EAAE,SAAA,EAAW,KAAA,EAAO,UAAA,EAAY,KAAK,CAAA;AAAA,EACtD;AACF;AAMO,IAAM,aAAA,GAAN,cAA4B,YAAA,CAAa;AAAA,EAC9C,YAAY,QAAA,EAAkB;AAC5B,IAAA,KAAA,CAAM,CAAA,oBAAA,EAAuB,QAAQ,CAAA,CAAA,EAAI;AAAA,MACvC,SAAA,EAAW,KAAA;AAAA,MACX,UAAA,EAAY;AAAA,KACb,CAAA;AAAA,EACH;AACF;AAMO,IAAM,cAAA,GAAN,cAA6B,YAAA,CAAa;AAAA;AAAA;AAAA;AAAA,EAI/B,UAAA;AAAA,EAEhB,WAAA,CAAY,OAAA,GAAU,qBAAA,EAAuB,UAAA,EAA8B;AACzE,IAAA,KAAA,CAAM,SAAS,EAAE,SAAA,EAAW,IAAA,EAAM,UAAA,EAAY,KAAK,CAAA;AAEnD,IAAA,IAAI,eAAe,MAAA,EAAW;AAC5B,MAAA,IAAA,CAAK,aACH,OAAO,UAAA,KAAe,WAAW,QAAA,CAAS,UAAA,EAAY,EAAE,CAAA,GAAI,UAAA;AAAA,IAChE;AAAA,EACF;AACF;AAMO,IAAM,WAAA,GAAN,cAA0B,YAAA,CAAa;AAAA,EAC5C,WAAA,CAAY,OAAA,EAAiB,UAAA,GAAa,GAAA,EAAK;AAC7C,IAAA,KAAA,CAAM,OAAA,EAAS,EAAE,SAAA,EAAW,IAAA,EAAM,YAAY,CAAA;AAAA,EAChD;AACF;AAMO,IAAM,eAAA,GAAN,cAA8B,YAAA,CAAa;AAAA,EAChD,YAAY,OAAA,EAAiB;AAC3B,IAAA,KAAA,CAAM,SAAS,EAAE,SAAA,EAAW,KAAA,EAAO,UAAA,EAAY,KAAK,CAAA;AAAA,EACtD;AACF;;;AC5EO,IAAM,eAAA,GAAN,cAA8B,YAAA,CAAa;AAAA;AAAA;AAAA;AAAA,EAIhC,gBAAA;AAAA,EAEhB,WAAA,CAAY,SAAiB,gBAAA,EAA6B;AACxD,IAAA,KAAA,CAAM,OAAA,EAAS,EAAE,SAAA,EAAW,KAAA,EAAO,CAAA;AACnC,IAAA,IAAA,CAAK,gBAAA,GAAmB,gBAAA;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA,EAKO,oBAAA,GAA+B;AACpC,IAAA,IAAI,CAAC,KAAK,gBAAA,EAAkB;AAC1B,MAAA,OAAO,IAAA,CAAK,OAAA;AAAA,IACd;AAEA,IAAA,MAAM,MAAA,GAAS,KAAK,gBAAA,CAAiB,MAAA,CAClC,IAAI,CAAC,GAAA,KAAQ,CAAA,EAAG,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA,CAAE,IAAA,CAAK,GAAG,CAAC,CAAA,EAAA,EAAK,IAAI,OAAO,CAAA,CAAE,CAAA,CAChE,IAAA,CAAK,IAAI,CAAA;AAEZ,IAAA,OAAO,CAAA,EAAG,IAAA,CAAK,OAAO,CAAA,GAAA,EAAM,MAAM,CAAA,CAAA;AAAA,EACpC;AACF;;;ACzBO,IAAe,eAAf,MAA4B;AAAA,EACd,IAAA;AAAA,EAEnB,YAAY,IAAA,EAAkB;AAC5B,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMU,QAAA,CAAY,MAAe,MAAA,EAAyB;AAC5D,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,SAAA,CAAU,IAAI,CAAA;AAEpC,IAAA,IAAI,CAAC,OAAO,OAAA,EAAS;AACnB,MAAA,MAAM,IAAI,eAAA,CAAgB,gCAAA,EAAkC,MAAA,CAAO,KAAK,CAAA;AAAA,IAC1E;AAEA,IAAA,OAAO,MAAA,CAAO,IAAA;AAAA,EAChB;AACF,CAAA;;;ACPA,SAAS,uBACP,OAAA,EACwB;AACxB,EAAA,MAAM,eAAuC,EAAC;AAC9C,EAAA,IAAI,SAAS,YAAA,EAAc;AACzB,IAAA,YAAA,CAAa,YAAA,GAAe,MAAA,CAAO,OAAA,CAAQ,YAAY,CAAA;AAAA,EACzD;AACA,EAAA,IAAI,SAAS,cAAA,EAAgB;AAC3B,IAAA,YAAA,CAAa,cAAA,GAAiB,MAAA,CAAO,OAAA,CAAQ,cAAc,CAAA;AAAA,EAC7D;AACA,EAAA,OAAO,YAAA;AACT;AAEA,SAAS,sBACP,OAAA,EACwB;AACxB,EAAA,MAAM,eAAuC,EAAC;AAC9C,EAAA,IAAI,SAAS,YAAA,EAAc;AACzB,IAAA,YAAA,CAAa,YAAA,GAAe,MAAA,CAAO,OAAA,CAAQ,YAAY,CAAA;AAAA,EACzD;AACA,EAAA,IAAI,SAAS,KAAA,EAAO;AAClB,IAAA,YAAA,CAAa,KAAA,GAAQ,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA;AAAA,EAC3C;AACA,EAAA,OAAO,YAAA;AACT;AAOO,IAAM,cAAA,GAAN,cAA6B,YAAA,CAAa;AAAA;AAAA;AAAA;AAAA,EAI/C,MAAM,OAAA,CACJ,SAAA,EACA,OAAA,EACiC;AACjC,IAAA,MAAM,OAAO,MAAM,IAAA,CAAK,KACrB,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,YAAA,CAAA,EAAgB;AAAA,MAC5C,YAAA,EAAc,uBAAuB,OAAO;AAAA,KAC7C,EACA,IAAA,EAAK;AAER,IAAA,OAAO,KAAK,QAAA,CAAS,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAM,0BAA0B,CAAC,CAAA;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAA,CACJ,SAAA,EACA,OAAA,EAC+B;AAC/B,IAAA,MAAM,OAAO,MAAM,IAAA,CAAK,KACrB,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,gBAAA,CAAA,EAAoB;AAAA,MAChD,YAAA,EAAc,uBAAuB,OAAO;AAAA,KAC7C,EACA,IAAA,EAAK;AAER,IAAA,OAAO,KAAK,QAAA,CAAS,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAM,wBAAwB,CAAC,CAAA;AAAA,EAC9D;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBAAA,CACJ,SAAA,EACA,OAAA,EAC8B;AAC9B,IAAA,MAAM,OAAO,MAAM,IAAA,CAAK,KACrB,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,oBAAA,CAAA,EAAwB;AAAA,MACpD,YAAA,EAAc,sBAAsB,OAAO;AAAA,KAC5C,EACA,IAAA,EAAK;AAER,IAAA,OAAO,KAAK,QAAA,CAAS,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAM,uBAAuB,CAAC,CAAA;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,iBAAA,CACJ,SAAA,EACA,OAAA,EAC8B;AAC9B,IAAA,MAAM,OAAO,MAAM,IAAA,CAAK,KACrB,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,qBAAA,CAAA,EAAyB;AAAA,MACrD,YAAA,EAAc,sBAAsB,OAAO;AAAA,KAC5C,EACA,IAAA,EAAK;AAER,IAAA,OAAO,KAAK,QAAA,CAAS,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAM,uBAAuB,CAAC,CAAA;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAA,CACJ,SAAA,EACA,OAAA,EAC8B;AAC9B,IAAA,MAAM,OAAO,MAAM,IAAA,CAAK,KACrB,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,aAAA,CAAA,EAAiB;AAAA,MAC7C,YAAA,EAAc,sBAAsB,OAAO;AAAA,KAC5C,EACA,IAAA,EAAK;AAER,IAAA,OAAO,KAAK,QAAA,CAAS,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAM,uBAAuB,CAAC,CAAA;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,SAAA,CACJ,SAAA,EACA,OAAA,EACqD;AACrD,IAAA,MAAM,eAAuC,EAAC;AAC9C,IAAA,IAAI,SAAS,IAAA,EAAM;AACjB,MAAA,YAAA,CAAa,IAAA,GAAO,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA;AAAA,IACzC;AACA,IAAA,IAAI,SAAS,QAAA,EAAU;AACrB,MAAA,YAAA,CAAa,QAAA,GAAW,MAAA,CAAO,OAAA,CAAQ,QAAQ,CAAA;AAAA,IACjD;AAEA,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,cAAA,CAAA,EAAkB,EAAE,YAAA,EAAc,CAAA,CAC/D,IAAA,EAAK;AAER,IAAA,OAAO,IAAA,CAAK,QAAA;AAAA,MACV,IAAA;AAAA,MACA,8BAA8B,uBAAuB;AAAA,KACvD;AAAA,EACF;AACF,CAAA;ACzIO,IAAM,yBAAA,GAAN,cAAwC,YAAA,CAAa;AAAA;AAAA;AAAA;AAAA,EAI1D,MAAM,IAAA,GAAoC;AACxC,IAAA,MAAM,OAAO,MAAM,IAAA,CAAK,KAAK,GAAA,CAAI,kBAAkB,EAAE,IAAA,EAAK;AAC1D,IAAA,OAAO,KAAK,QAAA,CAAS,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAM,sBAAsB,CAAC,CAAA;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,IAAI,EAAA,EAAuC;AAC/C,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,iBAAA,EAAoB,EAAE,CAAA,CAAE,CAAA,CAAE,IAAA,EAAK;AAChE,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,sBAAsB,CAAA;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,OAAO,KAAA,EAA0D;AACrE,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,4BAA4B,CAAA;AAExE,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,IAAA,CAAK,kBAAA,EAAoB,EAAE,IAAA,EAAM,cAAA,EAAgB,CAAA,CACjD,IAAA,EAAK;AAER,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,sBAAsB,CAAA;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,MAAA,CACJ,EAAA,EACA,KAAA,EAC2B;AAC3B,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,4BAA4B,CAAA;AAExE,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,KAAA,CAAM,CAAA,iBAAA,EAAoB,EAAE,CAAA,CAAA,EAAI,EAAE,IAAA,EAAM,cAAA,EAAgB,EACxD,IAAA,EAAK;AAER,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,sBAAsB,CAAA;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,OAAO,EAAA,EAA2B;AACtC,IAAA,MAAM,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAA,iBAAA,EAAoB,EAAE,CAAA,CAAE,CAAA;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,IAAA,CACJ,EAAA,EACA,eAAA,EAC8B;AAC9B,IAAA,MAAM,IAAA,GACJ,eAAA,KAAoB,MAAA,GAChB,IAAA,CAAK,QAAA;AAAA,MACH,EAAE,kBAAkB,eAAA,EAAgB;AAAA,MACpC;AAAA,KACF,GACA,MAAA;AAEN,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,IAAA;AAAA,MACC,oBAAoB,EAAE,CAAA,KAAA,CAAA;AAAA,MACtB,IAAA,KAAS,MAAA,GAAY,EAAE,IAAA,EAAM,MAAK,GAAI;AAAA,MAEvC,IAAA,EAAK;AAER,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,yBAAyB,CAAA;AAAA,EACtD;AACF,CAAA;AC/EO,IAAM,kBAAA,GAAN,cAAiC,YAAA,CAAa;AAAA;AAAA;AAAA;AAAA,EAInD,MAAM,KAAK,SAAA,EAAyC;AAClD,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,IAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,YAAA,CAAc,CAAA,CAC3C,IAAA,EAAK;AACR,IAAA,OAAO,KAAK,QAAA,CAAS,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAM,eAAe,CAAC,CAAA;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,GAAA,CAAI,SAAA,EAAmB,MAAA,EAAoC;AAC/D,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,aAAA,EAAgB,MAAM,CAAA,CAAE,CAAA,CACrD,IAAA,EAAK;AACR,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,eAAe,CAAA;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,MAAA,CAAO,SAAA,EAAmB,KAAA,EAA4C;AAC1E,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,qBAAqB,CAAA;AAEjE,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,IAAA,CAAK,CAAA,aAAA,EAAgB,SAAS,CAAA,YAAA,CAAA,EAAgB,EAAE,IAAA,EAAM,cAAA,EAAgB,EACtE,IAAA,EAAK;AAER,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,eAAe,CAAA;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,MAAA,CACJ,SAAA,EACA,MAAA,EACA,KAAA,EACoB;AACpB,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,qBAAqB,CAAA;AAEjE,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,MAAM,CAAA,aAAA,EAAgB,SAAS,CAAA,aAAA,EAAgB,MAAM,CAAA,CAAA,EAAI;AAAA,MACxD,IAAA,EAAM;AAAA,KACP,EACA,IAAA,EAAK;AAER,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,eAAe,CAAA;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,MAAA,CAAO,SAAA,EAAmB,MAAA,EAA+B;AAC7D,IAAA,MAAM,KAAK,IAAA,CAAK,MAAA,CAAO,gBAAgB,SAAS,CAAA,aAAA,EAAgB,MAAM,CAAA,CAAE,CAAA;AAAA,EAC1E;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAA,CACJ,SAAA,EACA,OAAA,EACyB;AACzB,IAAA,MAAM,YAAA,GAAe,IAAI,eAAA,EAAgB;AAEzC,IAAA,IAAI,OAAA,EAAS,UAAU,MAAA,EAAW;AAChC,MAAA,YAAA,CAAa,GAAA,CAAI,OAAA,EAAS,OAAA,CAAQ,KAAA,CAAM,UAAU,CAAA;AAAA,IACpD;AAEA,IAAA,MAAM,KAAA,GAAQ,aAAa,QAAA,EAAS;AACpC,IAAA,MAAM,GAAA,GAAM,QACR,CAAA,aAAA,EAAgB,SAAS,kBAAkB,KAAK,CAAA,CAAA,GAChD,gBAAgB,SAAS,CAAA,cAAA,CAAA;AAE7B,IAAA,MAAM,OAAO,MAAM,IAAA,CAAK,KAAK,GAAA,CAAI,GAAG,EAAE,IAAA,EAAK;AAC3C,IAAA,OAAO,KAAK,QAAA,CAAS,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAM,kBAAkB,CAAC,CAAA;AAAA,EACxD;AACF,CAAA;;;AC7EO,IAAM,YAAA,GAAN,cAA2B,YAAA,CAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO7C,MAAM,SAAS,WAAA,EAAoD;AAEjE,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,QAAA,CAAS,WAAA,EAAa,qBAAqB,CAAA;AAEvE,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,IAAA,CAAK,KAAK,eAAA,EAAiB;AAAA,MACrD,IAAA,EAAM;AAAA,KACP,CAAA;AAGD,IAAA,MAAM,OAAA,GAAU,QAAA,CAAS,OAAA,CAAQ,YAAA,EAAa;AAE9C,IAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,kBAAkB,CAAA;AAE3D,IAAA,OAAO;AAAA,MACL,MAAM,YAAA,CAAa,IAAA;AAAA,MACnB;AAAA,KACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,MAAM,WAAA,EAAiD;AAE3D,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,QAAA,CAAS,WAAA,EAAa,kBAAkB,CAAA;AAEpE,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,IAAA,CAAK,KAAK,YAAA,EAAc;AAAA,MAClD,IAAA,EAAM;AAAA,KACP,CAAA;AAGD,IAAA,MAAM,OAAA,GAAU,QAAA,CAAS,OAAA,CAAQ,YAAA,EAAa;AAE9C,IAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,kBAAkB,CAAA;AAE3D,IAAA,OAAO;AAAA,MACL,MAAM,YAAA,CAAa,IAAA;AAAA,MACnB;AAAA,KACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,MAAA,GAA4B;AAChC,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,IAAA,CAAK,KAAK,aAAa,CAAA;AACnD,IAAA,OAAO,QAAA,CAAS,QAAQ,YAAA,EAAa;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,cAAA,GAAgC;AACpC,IAAA,MAAM,OAAO,MAAM,IAAA,CAAK,KAAK,GAAA,CAAI,SAAS,EAAE,IAAA,EAAK;AACjD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,UAAU,CAAA;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,cAAc,KAAA,EAAwC;AAC1D,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,gBAAA,EAAmB,KAAK,CAAA,CAAE,CAAA,CAAE,IAAA,EAAK;AAClE,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,oBAAoB,CAAA;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,iBAAiB,KAAA,EAA+C;AACpE,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,sBAAsB,CAAA;AAElE,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,IAAA,CAAK,KAAK,wBAAA,EAA0B;AAAA,MAC9D,IAAA,EAAM;AAAA,KACP,CAAA;AAED,IAAA,MAAM,OAAA,GAAU,QAAA,CAAS,OAAA,CAAQ,YAAA,EAAa;AAE9C,IAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,kBAAkB,CAAA;AAE3D,IAAA,OAAO;AAAA,MACL,MAAM,YAAA,CAAa,IAAA;AAAA,MACnB;AAAA,KACF;AAAA,EACF;AACF,CAAA;;;ACjHO,IAAM,cAAA,GAAN,cAA6B,YAAA,CAAa;AAAA;AAAA;AAAA;AAAA,EAI/C,MAAM,IAAA,CACJ,SAAA,EACA,OAAA,EACA,OAAA,EACmC;AACnC,IAAA,MAAM,eAAuC,EAAC;AAE9C,IAAA,IAAI,SAAS,KAAA,EAAO;AAClB,MAAA,YAAA,CAAa,QAAQ,OAAA,CAAQ,KAAA;AAAA,IAC/B;AACA,IAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,MAAA,YAAA,CAAa,SAAS,OAAA,CAAQ,MAAA;AAAA,IAChC;AAEA,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,IAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,QAAA,EAAW,OAAO,CAAA,OAAA,CAAA,EAAW;AAAA,MACzD;AAAA,KACD,EACA,IAAA,EAAK;AAER,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,uBAAA,CAAwB,WAAW,CAAC,CAAA;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,GAAA,CACJ,SAAA,EACA,OAAA,EACA,OAAA,EACsB;AACtB,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,QAAA,EAAW,OAAO,CAAA,QAAA,EAAW,OAAO,CAAA,CAAE,EACnE,IAAA,EAAK;AAER,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,iBAAiB,CAAA;AAAA,EAC9C;AACF,CAAA;ACvDO,IAAM,mBAAA,GAAsBA,MAAE,MAAA,CAAO;AAAA,EAC1C,OAAA,EAASA,MAAE,MAAA;AACb,CAAC,CAAA;;;ACAM,IAAM,cAAA,GAAN,cAA6B,YAAA,CAAa;AAAA,EAC/C,MAAM,UAAA,GAAqC;AACzC,IAAA,MAAM,OAAO,MAAM,IAAA,CAAK,KAAK,GAAA,CAAI,gBAAgB,EAAE,IAAA,EAAK;AACxD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,mBAAmB,CAAA;AAAA,EAChD;AACF,CAAA;;;ACDO,IAAM,mBAAA,GAAN,cAAkC,YAAA,CAAa;AAAA;AAAA;AAAA;AAAA;AAAA,EAKpD,MAAM,OAAO,KAAA,EAA8C;AACzD,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,sBAAsB,CAAA;AAClE,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,IAAA,CAAK,iBAAA,EAAmB,EAAE,IAAA,EAAM,cAAA,EAAgB,CAAA,CAChD,IAAA,EAAK;AACR,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,gBAAgB,CAAA;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,IAAA,GAA8B;AAClC,IAAA,MAAM,OAAO,MAAM,IAAA,CAAK,KAAK,GAAA,CAAI,iBAAiB,EAAE,IAAA,EAAK;AACzD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,gBAAA,CAAiB,OAAO,CAAA;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,OAAO,KAAA,EAA8B;AACzC,IAAA,MAAM,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAA,gBAAA,EAAmB,KAAK,CAAA,CAAE,CAAA;AAAA,EACnD;AACF,CAAA;ACIO,IAAM,cAAA,GAAN,cAA6B,YAAA,CAAa;AAAA;AAAA;AAAA;AAAA,EAI/C,MAAM,IAAA,CACJ,SAAA,EACA,OAAA,EACyC;AACzC,IAAA,MAAM,eAAuC,EAAC;AAE9C,IAAA,IAAI,OAAA,EAAS,SAAS,MAAA,EAAW;AAC/B,MAAA,YAAA,CAAa,IAAA,GAAO,OAAA,CAAQ,IAAA,CAAK,QAAA,EAAS;AAAA,IAC5C;AACA,IAAA,IAAI,OAAA,EAAS,aAAa,MAAA,EAAW;AACnC,MAAA,YAAA,CAAa,QAAA,GAAW,OAAA,CAAQ,QAAA,CAAS,QAAA,EAAS;AAAA,IACpD;AACA,IAAA,IAAI,SAAS,IAAA,EAAM;AACjB,MAAA,YAAA,CAAa,OAAO,OAAA,CAAQ,IAAA;AAAA,IAC9B;AACA,IAAA,IAAI,SAAS,KAAA,EAAO;AAClB,MAAA,YAAA,CAAa,QAAQ,OAAA,CAAQ,KAAA;AAAA,IAC/B;AACA,IAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,MAAA,YAAA,CAAa,SAAS,OAAA,CAAQ,MAAA;AAAA,IAChC;AACA,IAAA,IAAI,SAAS,CAAA,EAAG;AACd,MAAA,YAAA,CAAa,IAAI,OAAA,CAAQ,CAAA;AAAA,IAC3B;AAEA,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,OAAA,CAAA,EAAW,EAAE,YAAA,EAAc,CAAA,CACxD,IAAA,EAAK;AAER,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,6BAAA,CAA8B,WAAW,CAAC,CAAA;AAAA,EACvE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,GAAA,CAAI,SAAA,EAAmB,OAAA,EAAiC;AAC5D,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,QAAA,EAAW,OAAO,CAAA,CAAE,CAAA,CACjD,IAAA,EAAK;AAER,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,WAAW,CAAA;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAA,CACJ,SAAA,EACA,OAAA,EACA,KAAA,EACgB;AAChB,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,sBAAsB,CAAA;AAElE,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,MAAM,CAAA,aAAA,EAAgB,SAAS,CAAA,QAAA,EAAW,OAAO,CAAA,CAAA,EAAI;AAAA,MACpD,IAAA,EAAM;AAAA,KACP,EACA,IAAA,EAAK;AAER,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,WAAW,CAAA;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBAAA,CACJ,SAAA,EACA,OAAA,EACgB;AAChB,IAAA,OAAO,IAAA,CAAK,WAAA,CAAY,SAAA,EAAW,OAAA,EAAS;AAAA,MAC1C,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,MAAA,CAAO,SAAA,EAAmB,OAAA,EAAgC;AAC9D,IAAA,MAAM,KAAK,IAAA,CAAK,MAAA,CAAO,gBAAgB,SAAS,CAAA,QAAA,EAAW,OAAO,CAAA,CAAE,CAAA;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,UAAA,CACJ,SAAA,EACA,KAAA,EAC8B;AAC9B,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,sBAAsB,CAAA;AAClE,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,OAAA,CAAA,EAAW,EAAE,IAAA,EAAM,cAAA,EAAgB,EAChE,IAAA,EAAK;AACR,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAMA,KAAAA,CAAE,MAAA,CAAO,EAAE,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,EAAG,CAAC,CAAA;AAAA,EACpE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,UAAA,CACJ,SAAA,EACA,KAAA,EAC8B;AAC9B,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,sBAAsB,CAAA;AAClE,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,MAAA,CAAO,CAAA,aAAA,EAAgB,SAAS,CAAA,OAAA,CAAA,EAAW,EAAE,IAAA,EAAM,cAAA,EAAgB,EACnE,IAAA,EAAK;AACR,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAMA,KAAAA,CAAE,MAAA,CAAO,EAAE,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,EAAG,CAAC,CAAA;AAAA,EACpE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,SAAA,CAAU,SAAA,EAAmB,OAAA,EAAuC;AACxE,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,QAAA,EAAW,OAAO,CAAA,OAAA,CAAS,CAAA,CACxD,IAAA,EAAK;AACR,IAAA,OAAO,KAAK,QAAA,CAAS,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAM,eAAe,CAAC,CAAA;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,YAAA,CACJ,SAAA,EACA,OAAA,EACA,GAAA,EAC0B;AAC1B,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,GAAA;AAAA,MACC,gBAAgB,SAAS,CAAA,QAAA,EAAW,OAAO,CAAA,MAAA,EAAS,kBAAA,CAAmB,GAAG,CAAC,CAAA;AAAA,MAE5E,IAAA,EAAK;AACR,IAAA,OAAO,KAAK,QAAA,CAAS,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAM,mBAAmB,CAAC,CAAA;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,aAAA,CACJ,SAAA,EACA,OAAA,EAC0B;AAC1B,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,QAAA,EAAW,OAAO,CAAA,WAAA,CAAa,CAAA,CAC5D,IAAA,EAAK;AACR,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,qBAAqB,CAAA;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAA,CACJ,SAAA,EACA,OAAA,EACA,SAA2B,KAAA,EACN;AACrB,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,IAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,QAAA,EAAW,OAAO,CAAA,MAAA,CAAA,EAAU;AAAA,MACxD,YAAA,EAAc,EAAE,MAAA;AAAO,KACxB,EACA,IAAA,EAAK;AACR,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,gBAAgB,CAAA;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAA,CACJ,SAAA,EACA,OAAA,EAC0B;AAC1B,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,QAAA,EAAW,OAAO,CAAA,SAAA,CAAW,CAAA,CAC1D,IAAA,EAAK;AACR,IAAA,OAAO,KAAK,QAAA,CAAS,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAM,mBAAmB,CAAC,CAAA;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,UAAA,CACJ,SAAA,EACA,OAAA,EACA,KAAA,EACwB;AACxB,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,mBAAmB,CAAA;AAC/D,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,KAAK,CAAA,aAAA,EAAgB,SAAS,CAAA,QAAA,EAAW,OAAO,CAAA,SAAA,CAAA,EAAa;AAAA,MAC5D,IAAA,EAAM;AAAA,KACP,EACA,IAAA,EAAK;AACR,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,mBAAmB,CAAA;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAA,CACJ,SAAA,EACA,OAAA,EACA,OAAA,EACqC;AACrC,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,IAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,QAAA,EAAW,OAAO,CAAA,SAAA,CAAA,EAAa;AAAA,MAC3D,IAAA,EAAM,EAAE,OAAA;AAAQ,KACjB,EACA,IAAA,EAAK;AACR,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAMA,KAAAA,CAAE,MAAA,CAAO,EAAE,aAAA,EAAeA,KAAAA,CAAE,OAAA,EAAQ,EAAG,CAAC,CAAA;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAA,CACJ,SAAA,EACA,OAAA,EACA,OAAA,EACqC;AACrC,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,IAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,QAAA,EAAW,OAAO,CAAA,aAAA,CAAA,EAAiB;AAAA,MAC/D,IAAA,EAAM,EAAE,OAAA;AAAQ,KACjB,EACA,IAAA,EAAK;AACR,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAMA,KAAAA,CAAE,MAAA,CAAO,EAAE,aAAA,EAAeA,KAAAA,CAAE,OAAA,EAAQ,EAAG,CAAC,CAAA;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAA,CACJ,SAAA,EACA,OAAA,EACgC;AAChC,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,IAAA,CAAK,CAAA,aAAA,EAAgB,SAAS,CAAA,QAAA,EAAW,OAAO,CAAA,KAAA,CAAO,CAAA,CACvD,IAAA,EAAK;AACR,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAMA,KAAAA,CAAE,MAAA,CAAO,EAAE,QAAA,EAAUA,KAAAA,CAAE,OAAA,EAAQ,EAAG,CAAC,CAAA;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAA,CACJ,SAAA,EACA,OAAA,EACuB;AACvB,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,QAAA,EAAW,OAAO,CAAA,aAAA,CAAe,CAAA,CAC9D,IAAA,EAAK;AACR,IAAA,OAAO,KAAK,QAAA,CAAS,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAM,gBAAgB,CAAC,CAAA;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBAAA,CACJ,SAAA,EACA,OAAA,EACA,KAAA,EACqB;AACrB,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,sBAAsB,CAAA;AAClE,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,KAAK,CAAA,aAAA,EAAgB,SAAS,CAAA,QAAA,EAAW,OAAO,CAAA,aAAA,CAAA,EAAiB;AAAA,MAChE,IAAA,EAAM;AAAA,KACP,EACA,IAAA,EAAK;AACR,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,gBAAgB,CAAA;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAA,CACJ,SAAA,EACA,KAAA,EACiD;AACjD,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,kBAAkB,CAAA;AAC9D,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,IAAA,CAAK,CAAA,aAAA,EAAgB,SAAS,CAAA,QAAA,CAAA,EAAY,EAAE,IAAA,EAAM,cAAA,EAAgB,EAClE,IAAA,EAAK;AACR,IAAA,OAAO,IAAA,CAAK,QAAA;AAAA,MACV,IAAA;AAAA,MACAA,KAAAA,CAAE,MAAA,CAAO,EAAE,OAAA,EAASA,KAAAA,CAAE,MAAA,EAAO,EAAG,SAAA,EAAWA,KAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,IAAO;AAAA,KAC/D;AAAA,EACF;AACF,CAAA;;;AC/TO,IAAM,YAAA,GAAN,cAA2B,YAAA,CAAa;AAAA;AAAA;AAAA;AAAA;AAAA,EAK7C,MAAM,IAAA,CACJ,SAAA,EACA,OAAA,EACuC;AACvC,IAAA,MAAM,eAAuC,EAAC;AAE9C,IAAA,IAAI,SAAS,IAAA,EAAM;AACjB,MAAA,YAAA,CAAa,IAAA,GAAO,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA;AAAA,IACzC;AACA,IAAA,IAAI,SAAS,QAAA,EAAU;AACrB,MAAA,YAAA,CAAa,QAAA,GAAW,MAAA,CAAO,OAAA,CAAQ,QAAQ,CAAA;AAAA,IACjD;AACA,IAAA,IAAI,SAAS,KAAA,EAAO;AAClB,MAAA,YAAA,CAAa,QAAQ,OAAA,CAAQ,KAAA;AAAA,IAC/B;AACA,IAAA,IAAI,SAAS,QAAA,EAAU;AACrB,MAAA,YAAA,CAAa,WAAW,OAAA,CAAQ,QAAA;AAAA,IAClC;AAEA,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,KAAA,CAAA,EAAS,EAAE,YAAA,EAAc,CAAA,CACtD,IAAA,EAAK;AAER,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,6BAAA,CAA8B,SAAS,CAAC,CAAA;AAAA,EACrE;AACF,CAAA;;;AC9BO,IAAM,eAAA,GAAN,cAA8B,YAAA,CAAa;AAAA;AAAA;AAAA;AAAA;AAAA,EAKhD,MAAM,KAAK,SAAA,EAA6C;AACtD,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,IAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,QAAA,CAAU,CAAA,CACvC,IAAA,EAAK;AACR,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,mBAAA,CAAoB,OAAO,CAAA;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,MAAA,CAAO,SAAA,EAAmB,KAAA,EAA2C;AACzE,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,yBAAyB,CAAA;AACrE,IAAA,MAAM,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,QAAA,CAAA,EAAY;AAAA,MACvD,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,MAAA,CAAO,SAAA,EAAmB,MAAA,EAA+B;AAC7D,IAAA,MAAM,KAAK,IAAA,CAAK,MAAA,CAAO,gBAAgB,SAAS,CAAA,SAAA,EAAY,MAAM,CAAA,CAAE,CAAA;AAAA,EACtE;AACF,CAAA;;;ACzBO,IAAM,gBAAA,GAAN,cAA+B,YAAA,CAAa;AAAA;AAAA;AAAA;AAAA,EAIjD,MAAM,KACJ,OAAA,EAC2C;AAC3C,IAAA,MAAM,YAAA,GAAe,IAAI,eAAA,EAAgB;AAEzC,IAAA,IAAI,OAAA,EAAS,SAAS,MAAA,EAAW;AAC/B,MAAA,YAAA,CAAa,GAAA,CAAI,MAAA,EAAQ,OAAA,CAAQ,IAAA,CAAK,UAAU,CAAA;AAAA,IAClD;AACA,IAAA,IAAI,OAAA,EAAS,aAAa,MAAA,EAAW;AACnC,MAAA,YAAA,CAAa,GAAA,CAAI,UAAA,EAAY,OAAA,CAAQ,QAAA,CAAS,UAAU,CAAA;AAAA,IAC1D;AACA,IAAA,IAAI,SAAS,KAAA,EAAO;AAClB,MAAA,YAAA,CAAa,GAAA,CAAI,OAAA,EAAS,OAAA,CAAQ,KAAK,CAAA;AAAA,IACzC;AAEA,IAAA,MAAM,KAAA,GAAQ,aAAa,QAAA,EAAS;AACpC,IAAA,MAAM,GAAA,GAAM,KAAA,GAAQ,CAAA,aAAA,EAAgB,KAAK,CAAA,CAAA,GAAK,cAAA;AAE9C,IAAA,MAAM,OAAO,MAAM,IAAA,CAAK,KAAK,GAAA,CAAI,GAAG,EAAE,IAAA,EAAK;AAC3C,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,6BAAA,CAA8B,aAAa,CAAC,CAAA;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,IAAI,EAAA,EAA8B;AACtC,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,aAAA,EAAgB,EAAE,CAAA,CAAE,CAAA,CAAE,IAAA,EAAK;AAC5D,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,aAAa,CAAA;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,OAAO,KAAA,EAAwC;AAEnD,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,mBAAmB,CAAA;AAE/D,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,IAAA,CAAK,cAAA,EAAgB,EAAE,IAAA,EAAM,cAAA,EAAgB,CAAA,CAC7C,IAAA,EAAK;AAER,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,aAAa,CAAA;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,MAAA,CAAO,EAAA,EAAY,KAAA,EAAwC;AAE/D,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,mBAAmB,CAAA;AAE/D,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,KAAA,CAAM,CAAA,aAAA,EAAgB,EAAE,CAAA,CAAA,EAAI,EAAE,IAAA,EAAM,cAAA,EAAgB,EACpD,IAAA,EAAK;AAER,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,aAAa,CAAA;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,OAAO,EAAA,EAA2B;AACtC,IAAA,MAAM,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAA,aAAA,EAAgB,EAAE,CAAA,CAAE,CAAA;AAAA,EAC7C;AACF,CAAA;AC9EO,IAAM,gBAAA,GAAN,cAA+B,YAAA,CAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQjD,MAAM,SAAA,CACJ,SAAA,EACA,OAAA,EACA,KAAA,EACkB;AAClB,IAAA,MAAM,eAAuC,EAAC;AAC9C,IAAA,IAAI,UAAU,MAAA,EAAW;AACvB,MAAA,YAAA,CAAa,KAAA,GAAQ,MAAM,QAAA,EAAS;AAAA,IACtC;AAEA,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,GAAA;AAAA,MACC,CAAA,aAAA,EAAgB,SAAS,CAAA,UAAA,EAAa,kBAAA,CAAmB,OAAO,CAAC,CAAA,WAAA,CAAA;AAAA,MACjE,EAAE,YAAA;AAAa,MAEhB,IAAA,EAAK;AAER,IAAA,OAAO,KAAK,QAAA,CAAS,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAM,WAAW,CAAC,CAAA;AAAA,EACjD;AACF,CAAA;;;ACpBO,IAAM,gBAAA,GAAN,cAA+B,YAAA,CAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQjD,MAAM,KAAA,CACJ,SAAA,EACA,MAAA,EACA,OAAA,EACwB;AACxB,IAAA,MAAM,eAAuC,EAAC;AAC9C,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,YAAA,CAAa,MAAA,GAAS,MAAA;AAAA,IACxB;AACA,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,YAAA,CAAa,OAAA,GAAU,OAAA;AAAA,IACzB;AAEA,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,eAAA,CAAA,EAAmB,EAAE,YAAA,EAAc,CAAA,CAChE,IAAA,EAAK;AAER,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,mBAAmB,CAAA;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,OAAA,CAAQ,SAAA,EAAmB,MAAA,EAA0C;AACzE,IAAA,MAAM,eAAuC,EAAC;AAC9C,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,YAAA,CAAa,MAAA,GAAS,MAAA;AAAA,IACxB;AAEA,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,iBAAA,CAAA,EAAqB,EAAE,YAAA,EAAc,CAAA,CAClE,IAAA,EAAK;AAER,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,oBAAoB,CAAA;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,UAAA,CACJ,SAAA,EACA,MAAA,EACA,QAAA,EAC4B;AAC5B,IAAA,MAAM,eAAuC,EAAC;AAC9C,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,YAAA,CAAa,MAAA,GAAS,MAAA;AAAA,IACxB;AACA,IAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,MAAA,YAAA,CAAa,QAAA,GAAW,SAAS,QAAA,EAAS;AAAA,IAC5C;AAEA,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,oBAAA,CAAA,EAAwB,EAAE,YAAA,EAAc,CAAA,CACrE,IAAA,EAAK;AAER,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,uBAAuB,CAAA;AAAA,EACpD;AACF,CAAA;;;ACpEO,IAAM,kBAAA,GAAN,cAAiC,YAAA,CAAa;AAAA;AAAA;AAAA;AAAA;AAAA,EAKnD,MAAM,yBACJ,OAAA,EACgC;AAChC,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,IAAI,CAAA,oBAAA,EAAuB,OAAO,CAAA,cAAA,CAAgB,CAAA,CAClD,IAAA,EAAK;AACR,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,2BAA2B,CAAA;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,YAAA,CACJ,OAAA,EACA,MAAA,EACA,mBAAmB,EAAA,EACJ;AACf,IAAA,IAAI,CAAC,MAAA,CAAO,SAAA,CAAU,gBAAgB,CAAA,IAAK,oBAAoB,CAAA,EAAG;AAChE,MAAA,MAAM,IAAI,MAAM,6CAA6C,CAAA;AAAA,IAC/D;AACA,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,MAAA,EAAQ,KAAK,gBAAA,EAAkB;AACxD,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,IAAI,gBAAgB,CAAA;AAClD,MAAA,MAAM,IAAA,GAAO,IAAI,QAAA,EAAS;AAC1B,MAAA,KAAA,MAAW,SAAS,KAAA,EAAO;AACzB,QAAA,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,IAAA,EAAM,KAAA,CAAM,IAAI,CAAA;AAAA,MACpC;AACA,MAAA,MAAM,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,CAAA,oBAAA,EAAuB,OAAO,CAAA,cAAA,CAAA,EAAkB;AAAA,QACnE,IAAA,EAAM;AAAA,OACP,CAAA;AAAA,IACH;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,cAAA,CACJ,OAAA,EACA,KAAA,EAC2B;AAC3B,IAAA,MAAM,OAAO,MAAM,IAAA,CAAK,KACrB,IAAA,CAAK,CAAA,oBAAA,EAAuB,OAAO,CAAA,yBAAA,CAAA,EAA6B;AAAA,MAC/D,IAAA,EAAM;AAAA,KACP,EACA,IAAA,EAAK;AACR,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,sBAAsB,CAAA;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,IAAA,CACJ,OAAA,EACA,WAAA,EACiC;AACjC,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,GAAA,CAAI,CAAA,eAAA,EAAkB,OAAO,CAAA,CAAA,EAAI,WAAW,CAAA,mBAAA,CAAqB,CAAA,CACjE,IAAA,EAAK;AACR,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,4BAA4B,CAAA;AAAA,EACzD;AACF,CAAA;;;AC5EO,IAAM,aAAA,GAAN,cAA4B,YAAA,CAAa;AAAA;AAAA;AAAA;AAAA;AAAA,EAK9C,MAAM,IAAA,CACJ,SAAA,EACA,OAAA,EACwC;AACxC,IAAA,MAAM,eAAuC,EAAC;AAE9C,IAAA,IAAI,SAAS,IAAA,EAAM;AACjB,MAAA,YAAA,CAAa,IAAA,GAAO,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA;AAAA,IACzC;AACA,IAAA,IAAI,SAAS,QAAA,EAAU;AACrB,MAAA,YAAA,CAAa,QAAA,GAAW,MAAA,CAAO,OAAA,CAAQ,QAAQ,CAAA;AAAA,IACjD;AACA,IAAA,IAAI,SAAS,EAAA,EAAI;AACf,MAAA,YAAA,CAAa,KAAK,OAAA,CAAQ,EAAA;AAAA,IAC5B;AACA,IAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,MAAA,YAAA,CAAa,SAAS,OAAA,CAAQ,MAAA;AAAA,IAChC;AACA,IAAA,IAAI,SAAS,QAAA,EAAU;AACrB,MAAA,YAAA,CAAa,WAAW,OAAA,CAAQ,QAAA;AAAA,IAClC;AACA,IAAA,IAAI,SAAS,cAAA,EAAgB;AAC3B,MAAA,YAAA,CAAa,iBAAiB,OAAA,CAAQ,cAAA;AAAA,IACxC;AAEA,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,MAAA,CAAA,EAAU,EAAE,YAAA,EAAc,CAAA,CACvD,IAAA,EAAK;AAER,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,6BAAA,CAA8B,UAAU,CAAC,CAAA;AAAA,EACtE;AACF,CAAA;AC3BO,IAAM,eAAA,GAAN,cAA8B,YAAA,CAAa;AAAA;AAAA;AAAA;AAAA;AAAA,EAKhD,MAAM,UAAA,GAAsC;AAC1C,IAAA,MAAM,OAAO,MAAM,IAAA,CAAK,KAAK,GAAA,CAAI,qBAAqB,EAAE,IAAA,EAAK;AAC7D,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,oBAAoB,CAAA;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,WAAA,GAAyC;AAC7C,IAAA,MAAM,OAAO,MAAM,IAAA,CAAK,KAAK,GAAA,CAAI,sBAAsB,EAAE,IAAA,EAAK;AAC9D,IAAA,OAAO,KAAK,QAAA,CAAS,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAM,oBAAoB,CAAC,CAAA;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAe,OAAA,EAAiD;AACpE,IAAA,MAAM,IAAA,GAAO,oBAAA,CAAqB,KAAA,CAAM,OAAO,CAAA;AAC/C,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,IAAA,CAAK,+BAA+B,EAAE,IAAA,EAAM,CAAA,CAC5C,IAAA,EAAK;AACR,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,mBAAmB,CAAA;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAe,OAAA,EAAiD;AACpE,IAAA,MAAM,IAAA,GAAO,oBAAA,CAAqB,KAAA,CAAM,OAAO,CAAA;AAC/C,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,uBAAuB,EAAE,IAAA,EAAM,CAAA,CAAE,IAAA,EAAK;AACxE,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,mBAAmB,CAAA;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,mBAAA,GAAkD;AACtD,IAAA,MAAM,OAAO,MAAM,IAAA,CAAK,KACrB,IAAA,CAAK,oCAAoC,EACzC,IAAA,EAAK;AACR,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,uBAAuB,CAAA;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,YAAA,GAA2C;AAC/C,IAAA,MAAM,OAAO,MAAM,IAAA,CAAK,KAAK,IAAA,CAAK,4BAA4B,EAAE,IAAA,EAAK;AACrE,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,uBAAuB,CAAA;AAAA,EACpD;AACF,CAAA;;;AC3EO,IAAM,YAAA,GAAN,cAA2B,YAAA,CAAa;AAAA;AAAA;AAAA;AAAA,EAI7C,MAAM,IAAA,GAA8B;AAClC,IAAA,MAAM,OAAO,MAAM,IAAA,CAAK,KAAK,GAAA,CAAI,UAAU,EAAE,IAAA,EAAK;AAClD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,gBAAA,CAAiB,OAAO,CAAA;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,UAAA,CAAW,MAAA,EAAgB,IAAA,EAAiC;AAChE,IAAA,MAAM,OAAO,IAAA,CAAK,QAAA,CAAS,EAAE,IAAA,IAAQ,oBAAoB,CAAA;AACzD,IAAA,MAAM,IAAA,CAAK,KAAK,KAAA,CAAM,CAAA,SAAA,EAAY,MAAM,CAAA,KAAA,CAAA,EAAS,EAAE,IAAA,EAAM,IAAA,EAAM,CAAA;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,OAAO,MAAA,EAA+B;AAC1C,IAAA,MAAM,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAA,SAAA,EAAY,MAAM,CAAA,CAAE,CAAA;AAAA,EAC7C;AACF,CAAA;;;ACnBO,IAAM,cAAA,GAAN,cAA6B,YAAA,CAAa;AAAA;AAAA;AAAA;AAAA,EAI/C,MAAM,IAAA,GAA6B;AACjC,IAAA,MAAM,OAAO,MAAM,IAAA,CAAK,KAAK,GAAA,CAAI,YAAY,EAAE,IAAA,EAAK;AACpD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,eAAA,CAAgB,OAAO,CAAA;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,IAAI,EAAA,EAAuC;AAC/C,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,WAAA,EAAc,EAAE,CAAA,CAAE,CAAA,CAAE,IAAA,EAAK;AAC1D,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,sBAAsB,CAAA;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,OAAO,KAAA,EAAmD;AAE9D,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,qBAAqB,CAAA;AAEjE,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,IAAA,CAAK,YAAA,EAAc,EAAE,IAAA,EAAM,cAAA,EAAgB,CAAA,CAC3C,IAAA,EAAK;AAER,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,sBAAsB,CAAA;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,OAAO,EAAA,EAA2B;AACtC,IAAA,MAAM,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,CAAA,WAAA,EAAc,EAAE,CAAA,CAAE,CAAA;AAAA,EAC3C;AACF,CAAA;ACnCO,IAAM,oBAAA,GAAN,cAAmC,YAAA,CAAa;AAAA;AAAA;AAAA;AAAA,EAIrD,MAAM,IAAA,CACJ,SAAA,EACA,OAAA,EAC+C;AAC/C,IAAA,MAAM,eAAuC,EAAC;AAE9C,IAAA,IAAI,SAAS,IAAA,EAAM;AACjB,MAAA,YAAA,CAAa,IAAA,GAAO,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA;AAAA,IACzC;AACA,IAAA,IAAI,SAAS,QAAA,EAAU;AACrB,MAAA,YAAA,CAAa,QAAA,GAAW,MAAA,CAAO,OAAA,CAAQ,QAAQ,CAAA;AAAA,IACjD;AACA,IAAA,IAAI,SAAS,IAAA,EAAM;AACjB,MAAA,YAAA,CAAa,OAAO,OAAA,CAAQ,IAAA;AAAA,IAC9B;AACA,IAAA,IAAI,SAAS,EAAA,EAAI;AACf,MAAA,YAAA,CAAa,KAAK,OAAA,CAAQ,EAAA;AAAA,IAC5B;AACA,IAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,MAAA,YAAA,CAAa,SAAS,OAAA,CAAQ,MAAA;AAAA,IAChC;AACA,IAAA,IAAI,SAAS,WAAA,EAAa;AACxB,MAAA,YAAA,CAAa,cAAc,OAAA,CAAQ,WAAA;AAAA,IACrC;AACA,IAAA,IAAI,SAAS,OAAA,EAAS;AACpB,MAAA,YAAA,CAAa,UAAU,OAAA,CAAQ,OAAA;AAAA,IACjC;AAEA,IAAA,MAAM,OAAO,MAAM,IAAA,CAAK,KACrB,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,aAAA,CAAA,EAAiB;AAAA,MAC7C;AAAA,KACD,EACA,IAAA,EAAK;AAER,IAAA,OAAO,IAAA,CAAK,QAAA;AAAA,MACV,IAAA;AAAA,MACA,8BAA8B,iBAAiB;AAAA,KACjD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAA,CAAS,SAAA,EAAmB,aAAA,EAAwC;AACxE,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,cAAA,EAAiB,aAAa,CAAA,MAAA,CAAQ,CAAA,CACnE,IAAA,EAAK;AAER,IAAA,OAAO,KAAK,QAAA,CAAS,IAAA,EAAMA,KAAAA,CAAE,KAAA,CAAM,UAAU,CAAC,CAAA;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,QAAA,CACJ,SAAA,EACA,OAAA,EACoD;AACpD,IAAA,MAAM,eAAuC,EAAC;AAC9C,IAAA,IAAI,SAAS,IAAA,EAAM;AACjB,MAAA,YAAA,CAAa,IAAA,GAAO,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA;AAAA,IACzC;AACA,IAAA,IAAI,SAAS,QAAA,EAAU;AACrB,MAAA,YAAA,CAAa,QAAA,GAAW,MAAA,CAAO,OAAA,CAAQ,QAAQ,CAAA;AAAA,IACjD;AAEA,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,mBAAA,CAAA,EAAuB,EAAE,YAAA,EAAc,CAAA,CACpE,IAAA,EAAK;AAER,IAAA,OAAO,IAAA,CAAK,QAAA;AAAA,MACV,IAAA;AAAA,MACA,8BAA8B,sBAAsB;AAAA,KACtD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,eAAA,CACJ,SAAA,EACA,IAAA,EACA,EAAA,EAC2B;AAC3B,IAAA,MAAM,YAAA,GAAuC,EAAE,IAAA,EAAK;AACpD,IAAA,IAAI,EAAA,EAAI;AACN,MAAA,YAAA,CAAa,EAAA,GAAK,EAAA;AAAA,IACpB;AAEA,IAAA,MAAM,OAAO,MAAM,IAAA,CAAK,KACrB,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,yBAAA,CAAA,EAA6B;AAAA,MACzD;AAAA,KACD,EACA,IAAA,EAAK;AAER,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,sBAAsB,CAAA;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,GAAA,CACJ,SAAA,EACA,aAAA,EAC4B;AAC5B,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA,CACrB,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,cAAA,EAAiB,aAAa,CAAA,CAAE,CAAA,CAC7D,IAAA,EAAK;AAER,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,uBAAuB,CAAA;AAAA,EACpD;AACF,CAAA;AChIA,SAAS,mBAAmB,KAAA,EAAgC;AAC1D,EAAA,MAAM,EAAE,UAAS,GAAI,KAAA;AACrB,EAAA,MAAM,SAAS,QAAA,CAAS,MAAA;AAExB,EAAA,IAAI,YAAA,GAAe,QAAQ,MAAM,CAAA,MAAA,CAAA;AACjC,EAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AACnB,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,YAAA,GAAe,IAAA,CAAK,KAAA,IAAS,IAAA,CAAK,OAAA,IAAW,YAAA;AAAA,EAC/C;AAEA,EAAA,QAAQ,MAAA;AAAQ,IACd,KAAK,GAAA;AACH,MAAA,OAAO,IAAI,gBAAgB,YAAY,CAAA;AAAA,IACzC,KAAK,GAAA;AACH,MAAA,OAAO,IAAI,oBAAoB,YAAY,CAAA;AAAA,IAC7C,KAAK,GAAA;AACH,MAAA,OAAO,IAAI,mBAAmB,YAAY,CAAA;AAAA,IAC5C,KAAK,GAAA;AACH,MAAA,OAAO,IAAI,cAAc,YAAY,CAAA;AAAA,IACvC,KAAK,GAAA,EAAK;AACR,MAAA,MAAM,UAAA,GAAa,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,aAAa,CAAA;AACrD,MAAA,OAAO,IAAI,cAAA,CAAe,YAAA,EAAc,UAAA,IAAc,MAAS,CAAA;AAAA,IACjE;AAAA,IACA,KAAK,GAAA;AAAA,IACL,KAAK,GAAA;AAAA,IACL,KAAK,GAAA;AAAA,IACL,KAAK,GAAA;AACH,MAAA,OAAO,IAAI,WAAA,CAAY,YAAA,EAAc,MAAM,CAAA;AAAA,IAC7C;AACE,MAAA,OAAO,IAAI,YAAA,CAAa,YAAA,EAAc,EAAE,UAAA,EAAY,QAAQ,CAAA;AAAA;AAElE;AAEO,SAAS,iBAAiB,MAAA,EAAkC;AACjE,EAAA,MAAM,OAAA,GAAkC;AAAA,IACtC,cAAA,EAAgB,kBAAA;AAAA,IAChB,GAAG,MAAA,CAAO;AAAA,GACZ;AAEA,EAAA,IAAI,OAAO,KAAA,EAAO;AAChB,IAAA,OAAA,CAAQ,aAAA,GAAgB,CAAA,OAAA,EAAU,MAAA,CAAO,KAAK,CAAA,CAAA;AAAA,EAChD;AAEA,EAAA,OAAOC,oBAAG,MAAA,CAAO;AAAA,IACf,QAAQ,MAAA,CAAO,OAAA;AAAA,IACf,OAAA,EAAS,OAAO,OAAA,IAAW,GAAA;AAAA,IAC3B,WAAA,EAAa,SAAA;AAAA,IACb,KAAA,EAAO;AAAA,MACL,KAAA,EAAO,OAAO,UAAA,IAAc,CAAA;AAAA,MAC5B,aAAa,CAAC,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,KAAK,GAAG,CAAA;AAAA,MACrC,SAAS,CAAC,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,SAAS,QAAQ;AAAA,KACnD;AAAA,IACA,OAAA;AAAA,IACA,KAAA,EAAO;AAAA,MACL,WAAA,EAAa;AAAA,QACX,CAAC,EAAE,KAAA,EAAM,KAAM;AACb,UAAA,IAAI,KAAA,CAAM,SAAS,cAAA,EAAgB;AACjC,YAAA,MAAM,IAAI,YAAA,CAAa,mBAAA,EAAqB,KAAK,CAAA;AAAA,UACnD;AAEA,UAAA,IAAIC,cAAA,CAAY,KAAK,CAAA,EAAG;AACtB,YAAA,MAAM,mBAAmB,KAAK,CAAA;AAAA,UAChC;AAEA,UAAA,MAAM,IAAI,YAAA,CAAa,KAAA,CAAM,OAAA,EAAS,KAAK,CAAA;AAAA,QAC7C;AAAA;AACF;AACF,GACD,CAAA;AACH;;;ACrCO,IAAM,gBAAN,MAAoB;AAAA,EACR,IAAA;AAAA;AAAA;AAAA;AAAA,EAKD,IAAA;AAAA;AAAA;AAAA;AAAA,EAKA,QAAA;AAAA;AAAA;AAAA;AAAA,EAKA,MAAA;AAAA;AAAA;AAAA;AAAA,EAKA,MAAA;AAAA;AAAA;AAAA;AAAA,EAKA,MAAA;AAAA;AAAA;AAAA;AAAA,EAKA,iBAAA;AAAA;AAAA;AAAA;AAAA,EAKA,UAAA;AAAA;AAAA;AAAA;AAAA,EAKA,UAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAA;AAAA;AAAA;AAAA;AAAA,EAKA,WAAA;AAAA;AAAA;AAAA;AAAA,EAKA,OAAA;AAAA;AAAA;AAAA;AAAA,EAKA,QAAA;AAAA;AAAA;AAAA;AAAA,EAKA,QAAA;AAAA;AAAA;AAAA;AAAA,EAKA,YAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAA;AAAA;AAAA;AAAA;AAAA,EAKA,KAAA;AAAA;AAAA;AAAA;AAAA,EAKA,MAAA;AAAA;AAAA;AAAA;AAAA,EAKA,OAAA;AAAA;AAAA;AAAA;AAAA,EAKA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOhB,YAAY,MAAA,EAAsB;AAChC,IAAA,IAAA,CAAK,IAAA,GAAO,iBAAiB,MAAM,CAAA;AAGnC,IAAA,IAAA,CAAK,IAAA,GAAO,IAAI,YAAA,CAAa,IAAA,CAAK,IAAI,CAAA;AACtC,IAAA,IAAA,CAAK,QAAA,GAAW,IAAI,gBAAA,CAAiB,IAAA,CAAK,IAAI,CAAA;AAC9C,IAAA,IAAA,CAAK,MAAA,GAAS,IAAI,cAAA,CAAe,IAAA,CAAK,IAAI,CAAA;AAC1C,IAAA,IAAA,CAAK,MAAA,GAAS,IAAI,cAAA,CAAe,IAAA,CAAK,IAAI,CAAA;AAC1C,IAAA,IAAA,CAAK,MAAA,GAAS,IAAI,cAAA,CAAe,IAAA,CAAK,IAAI,CAAA;AAC1C,IAAA,IAAA,CAAK,iBAAA,GAAoB,IAAI,yBAAA,CAA0B,IAAA,CAAK,IAAI,CAAA;AAChE,IAAA,IAAA,CAAK,UAAA,GAAa,IAAI,kBAAA,CAAmB,IAAA,CAAK,IAAI,CAAA;AAClD,IAAA,IAAA,CAAK,UAAA,GAAa,IAAI,kBAAA,CAAmB,IAAA,CAAK,IAAI,CAAA;AAClD,IAAA,IAAA,CAAK,IAAA,GAAO,IAAI,YAAA,CAAa,IAAA,CAAK,IAAI,CAAA;AACtC,IAAA,IAAA,CAAK,WAAA,GAAc,IAAI,mBAAA,CAAoB,IAAA,CAAK,IAAI,CAAA;AACpD,IAAA,IAAA,CAAK,OAAA,GAAU,IAAI,eAAA,CAAgB,IAAA,CAAK,IAAI,CAAA;AAC5C,IAAA,IAAA,CAAK,QAAA,GAAW,IAAI,gBAAA,CAAiB,IAAA,CAAK,IAAI,CAAA;AAC9C,IAAA,IAAA,CAAK,QAAA,GAAW,IAAI,gBAAA,CAAiB,IAAA,CAAK,IAAI,CAAA;AAC9C,IAAA,IAAA,CAAK,YAAA,GAAe,IAAI,oBAAA,CAAqB,IAAA,CAAK,IAAI,CAAA;AACtD,IAAA,IAAA,CAAK,IAAA,GAAO,IAAI,YAAA,CAAa,IAAA,CAAK,IAAI,CAAA;AACtC,IAAA,IAAA,CAAK,KAAA,GAAQ,IAAI,aAAA,CAAc,IAAA,CAAK,IAAI,CAAA;AACxC,IAAA,IAAA,CAAK,MAAA,GAAS,IAAI,cAAA,CAAe,IAAA,CAAK,IAAI,CAAA;AAC1C,IAAA,IAAA,CAAK,OAAA,GAAU,IAAI,eAAA,CAAgB,IAAA,CAAK,IAAI,CAAA;AAC5C,IAAA,IAAA,CAAK,MAAA,GAAS,IAAI,cAAA,CAAe,IAAA,CAAK,IAAI,CAAA;AAAA,EAC5C;AACF","file":"index.cjs","sourcesContent":["import { z } from 'zod';\n\n/**\n * Generic paginated response schema (cursor-based)\n */\nexport const paginatedResponseSchema = <T extends z.ZodTypeAny>(\n itemSchema: T,\n) =>\n z.object({\n items: z.array(itemSchema),\n next_cursor: z.string().optional(),\n has_more: z.boolean(),\n });\n\n/**\n * Generic offset-based paginated response schema\n */\nexport const offsetPaginatedResponseSchema = <T extends z.ZodTypeAny>(\n itemSchema: T,\n) =>\n z.object({\n items: z.array(itemSchema),\n total_count: z.number().int(),\n page: z.number().int(),\n per_page: z.number().int(),\n total_pages: z.number().int(),\n });\n\n/**\n * Sort order enum\n */\nexport const sortOrderSchema = z.enum(['asc', 'desc']);\n\n/**\n * Issue sort field enum\n */\nexport const issueSortSchema = z.enum([\n 'digest_order',\n 'last_seen',\n 'event_count',\n]);\n\n/**\n * Issue filter enum\n */\nexport const issueFilterSchema = z.enum(['open', 'resolved', 'muted', 'all']);\n\n/**\n * ISO 8601 datetime string\n */\nexport const dateTimeSchema = z.string().datetime();\n\n/**\n * UUID v4 string (RFC 4122). Use for server-generated ids (row PKs, issue ids)\n * which are always created with `gen_random_uuid()`.\n */\nexport const uuidSchema = z.string().uuid();\n\n/**\n * Sentry event identifier.\n *\n * Sentry event ids are 32 random hex characters — they do NOT carry RFC-4122\n * version/variant bits. The server stores them in a UUID column and returns\n * them in canonical dashed form, but a strict `uuid()` check rejects the many\n * valid ids whose version nibble falls outside 1–8. Accept any hex UUID shape\n * regardless of version/variant so real SDK payloads validate.\n */\nexport const eventIdSchema = z\n .string()\n .regex(\n /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n 'Invalid event id',\n );\n\n/**\n * API error response\n */\nexport const apiErrorSchema = z.object({\n error: z.string(),\n message: z.string().optional(),\n});\n","import { z } from 'zod';\nimport { dateTimeSchema } from './common.js';\n\n/**\n * One time-bucketed value (count or sum) — Agent Runs widget.\n */\nexport const agentTimeseriesPointSchema = z.object({\n bucket: dateTimeSchema,\n value: z.number(),\n});\n\n/**\n * avg/p95 duration for one time bucket — Duration widget.\n */\nexport const agentDurationPointSchema = z.object({\n bucket: dateTimeSchema,\n avg_ms: z.number(),\n p95_ms: z.number(),\n});\n\n/**\n * One row of a \"top N by X\" breakdown (model or tool name).\n */\nexport const genAiBreakdownRowSchema = z.object({\n label: z.string(),\n value: z.number(),\n});\n\n/**\n * One row of the Traces table — per-trace_id aggregate across all AI spans\n * sharing that trace, regardless of origin.\n */\nexport const agentTraceSummarySchema = z.object({\n trace_id: z.string(),\n /** Every distinct agent that ran in this trace, earliest first. */\n agent_names: z.array(z.string()),\n duration_ms: z.number().nullable(),\n total_tokens: z.number(),\n tool_call_count: z.number().int(),\n started_at: dateTimeSchema,\n});\n","import { z } from 'zod';\nimport { dateTimeSchema } from './common.js';\n\n/**\n * Provider type enum (replaces channel_type)\n */\nexport const providerTypeSchema = z.enum(['webhook', 'email', 'slack']);\n\n/** @deprecated Use providerTypeSchema */\nexport const channelTypeSchema = providerTypeSchema;\n\n/**\n * Alert type enum\n */\nexport const alertTypeSchema = z.enum(['new_issue', 'regression', 'unmute']);\n\n/**\n * Alert status enum\n */\nexport const alertStatusSchema = z.enum([\n 'pending',\n 'sent',\n 'failed',\n 'skipped',\n]);\n\n/**\n * Alert integration response schema (global credentials record)\n */\nexport const alertIntegrationSchema = z.object({\n id: z.number().int(),\n name: z.string(),\n provider_type: providerTypeSchema,\n credentials: z.record(z.string(), z.unknown()),\n is_enabled: z.boolean(),\n failure_count: z.number().int(),\n last_failure_at: dateTimeSchema.nullable(),\n last_failure_message: z.string().nullable(),\n last_success_at: dateTimeSchema.nullable(),\n created_at: dateTimeSchema,\n updated_at: dateTimeSchema,\n});\n\n/** @deprecated Use alertIntegrationSchema */\nexport const notificationChannelSchema = alertIntegrationSchema;\n\n/**\n * Create alert integration request schema\n */\nexport const createAlertIntegrationSchema = z.object({\n name: z.string().min(1),\n provider_type: providerTypeSchema,\n credentials: z.record(z.string(), z.unknown()),\n is_enabled: z.boolean().optional(),\n});\n\n/** @deprecated Use createAlertIntegrationSchema */\nexport const createNotificationChannelSchema = createAlertIntegrationSchema;\n\n/**\n * Update alert integration request schema\n */\nexport const updateAlertIntegrationSchema = z.object({\n name: z.string().min(1).optional(),\n credentials: z.record(z.string(), z.unknown()).optional(),\n is_enabled: z.boolean().optional(),\n});\n\n/** @deprecated Use updateAlertIntegrationSchema */\nexport const updateNotificationChannelSchema = updateAlertIntegrationSchema;\n\n/**\n * Per-rule channel routing entry schema\n */\nexport const alertRuleChannelInputSchema = z.object({\n integration_id: z.number().int(),\n routing_override: z.record(z.string(), z.unknown()).default({}),\n});\n\n/**\n * Alert rule response schema\n */\nexport const alertRuleSchema = z.object({\n id: z.number().int(),\n project_id: z.number().int(),\n name: z.string(),\n alert_type: alertTypeSchema,\n is_enabled: z.boolean(),\n conditions: z.record(z.string(), z.unknown()),\n cooldown_minutes: z.number().int(),\n last_triggered_at: dateTimeSchema.nullable(),\n created_at: dateTimeSchema,\n updated_at: dateTimeSchema,\n channels: z.array(alertRuleChannelInputSchema).default([]),\n integration_ids: z.array(z.number().int()),\n});\n\n/**\n * Create alert rule request schema\n */\nexport const createAlertRuleSchema = z.object({\n name: z.string().min(1),\n alert_type: alertTypeSchema,\n channels: z.array(alertRuleChannelInputSchema).default([]),\n is_enabled: z.boolean().optional(),\n conditions: z.record(z.string(), z.unknown()).optional(),\n cooldown_minutes: z.number().int().min(0).optional(),\n});\n\n/**\n * Update alert rule request schema\n */\nexport const updateAlertRuleSchema = z.object({\n name: z.string().min(1).optional(),\n is_enabled: z.boolean().optional(),\n conditions: z.record(z.string(), z.unknown()).optional(),\n cooldown_minutes: z.number().int().min(0).optional(),\n channels: z.array(alertRuleChannelInputSchema).optional(),\n});\n\n/**\n * Alert history entry schema\n */\nexport const alertHistorySchema = z.object({\n id: z.number().int(),\n alert_rule_id: z.number().int().nullable(),\n integration_id: z.number().int().nullable(),\n issue_id: z.string().uuid().nullable(),\n project_id: z.number().int().nullable(),\n alert_type: z.string(),\n channel_type: z.string(),\n channel_name: z.string(),\n status: alertStatusSchema,\n attempt_count: z.number().int(),\n next_retry_at: dateTimeSchema.nullable(),\n error_message: z.string().nullable(),\n http_status_code: z.number().int().nullable(),\n idempotency_key: z.string(),\n created_at: dateTimeSchema,\n sent_at: dateTimeSchema.nullable(),\n});\n\n/**\n * Test channel response schema\n */\nexport const testChannelResponseSchema = z.object({\n success: z.boolean(),\n message: z.string(),\n});\n\n/**\n * Test integration request body schema\n */\nexport const testIntegrationBodySchema = z.object({\n routing_override: z.record(z.string(), z.unknown()).optional(),\n});\n","import { z } from 'zod';\nimport { dateTimeSchema, eventIdSchema, uuidSchema } from './common.js';\n\n/**\n * Event response schema from list endpoint\n */\nexport const eventSchema = z.object({\n id: uuidSchema,\n event_id: eventIdSchema,\n issue_id: uuidSchema.nullable(),\n title: z.string(),\n timestamp: dateTimeSchema,\n level: z.string(),\n platform: z.string(),\n release: z.string(),\n environment: z.string(),\n event_type: z.string(),\n});\n\n/**\n * Event detail response schema from detail endpoint\n */\nexport const eventDetailSchema = z.object({\n id: uuidSchema,\n event_id: eventIdSchema,\n issue_id: uuidSchema.nullable(),\n title: z.string(),\n timestamp: dateTimeSchema,\n ingested_at: dateTimeSchema,\n level: z.string(),\n platform: z.string(),\n release: z.string(),\n environment: z.string(),\n server_name: z.string(),\n sdk_name: z.string(),\n sdk_version: z.string(),\n event_type: z.string(),\n data: z.record(z.string(), z.any()), // Full Sentry event JSON\n});\n","import { z } from 'zod';\nimport { dateTimeSchema } from './common.js';\n\n/**\n * Global role assignable to a user (admin has full access, member is standard).\n */\nexport const globalRoleSchema = z.enum(['admin', 'member']);\n\n/**\n * Team member schema - a user as exposed on the team roster.\n */\nexport const teamMemberSchema = z.object({\n id: z.number().int(),\n email: z.string().email(),\n role: globalRoleSchema,\n is_active: z.boolean(),\n /** True for the first-registered account, which cannot be demoted or deleted. */\n is_primary: z.boolean().optional(),\n created_at: dateTimeSchema,\n last_login: dateTimeSchema.nullable().optional(),\n});\n\n/**\n * Request body for changing a user's global role.\n */\nexport const updateUserRoleSchema = z.object({\n role: globalRoleSchema,\n});\n","import { z } from 'zod';\nimport { dateTimeSchema } from './common.js';\nimport { globalRoleSchema } from './team.js';\n\n/**\n * Status of an invitation lifecycle (server returns a free-form string;\n * kept permissive to tolerate new statuses without breaking validation).\n */\nexport const invitationStatusSchema = z.string();\n\n/**\n * Invitation schema - public-facing pending invitation.\n */\nexport const invitationSchema = z.object({\n token: z.string(),\n email: z.string().email(),\n role: globalRoleSchema,\n status: invitationStatusSchema,\n expires_at: dateTimeSchema,\n created_at: dateTimeSchema,\n});\n\n/**\n * Public-facing invitation info for the accept page (no token echoed back).\n */\nexport const invitationInfoSchema = z.object({\n email: z.string().email(),\n role: globalRoleSchema,\n status: invitationStatusSchema,\n expires_at: dateTimeSchema,\n});\n\n/**\n * Request body for creating an invitation.\n */\nexport const createInvitationSchema = z.object({\n email: z.string().email(),\n role: globalRoleSchema,\n});\n\n/**\n * Request body for accepting an invitation (public endpoint).\n */\nexport const acceptInvitationSchema = z.object({\n token: z.string().min(1),\n password: z.string().min(1),\n});\n","import { z } from 'zod';\nimport { dateTimeSchema, uuidSchema } from './common.js';\n\n/**\n * Canonical issue status values (Sentry-compatible).\n */\nexport const issueStatusSchema = z.enum(['unresolved', 'resolved', 'ignored']);\n\n/**\n * Issue priority tiers.\n */\nexport const issuePrioritySchema = z.enum(['low', 'medium', 'high']);\n\n/**\n * Issue response schema from API\n */\nexport const issueSchema = z.object({\n id: uuidSchema,\n project_id: z.number().int(),\n short_id: z.string(),\n title: z.string(),\n value: z.string(),\n culprit: z.string(),\n logger: z.string(),\n first_seen: dateTimeSchema,\n last_seen: dateTimeSchema,\n event_count: z.number().int(),\n level: z.string().nullable(),\n platform: z.string().nullable(),\n // Status model (#165)\n status: issueStatusSchema,\n substatus: z.string().nullable(),\n priority: issuePrioritySchema.nullable(),\n assigned_to: z.number().int().nullable(),\n assignee_type: z.string().nullable(),\n issue_type: z.string(),\n issue_category: z.string(),\n first_release: z.string(),\n last_release: z.string(),\n status_details: z.record(z.string(), z.unknown()),\n // Aggregate enrichment — only the single-issue GET populates this; the list\n // and PATCH endpoints return the lean response, so default to 0 when absent.\n user_report_count: z.number().int().optional().default(0),\n // Per-user fields — only present when the request carries a user session.\n is_bookmarked: z.boolean().optional(),\n is_subscribed: z.boolean().optional(),\n has_seen: z.boolean().optional(),\n // Bulk list stats — only the list endpoint populates these (computed once\n // per page); the single-issue GET and PATCH responses omit them.\n user_count: z.number().int().optional(),\n trend: z.array(z.number().int()).optional(),\n // Deprecated, derived from `status`; kept for backward compatibility.\n is_resolved: z.boolean(),\n is_muted: z.boolean(),\n});\n\n/**\n * Update issue state request schema.\n *\n * `status` (plus `substatus`/`priority`/assignment) is canonical;\n * `is_resolved`/`is_muted` remain as a deprecated compatibility shim.\n * `status` also accepts the special `resolvedInNextRelease` value.\n */\nexport const updateIssueStateSchema = z.object({\n status: z\n .union([issueStatusSchema, z.literal('resolvedInNextRelease')])\n .optional(),\n substatus: z.string().optional(),\n priority: issuePrioritySchema.optional(),\n assigned_to: z.number().int().nullable().optional(),\n assignee_type: z.string().nullable().optional(),\n is_resolved: z.boolean().optional(),\n is_muted: z.boolean().optional(),\n});\n\n/**\n * A grouping hash that maps to an issue.\n */\nexport const issueHashSchema = z.object({\n id: z.number().int(),\n project_id: z.number().int(),\n issue_id: uuidSchema,\n grouping_key: z.string(),\n grouping_key_hash: z.string(),\n created_at: dateTimeSchema,\n});\n\n/**\n * A tag value with its event count.\n */\nexport const tagValueCountSchema = z.object({\n value: z.string(),\n count: z.number().int(),\n});\n\n/**\n * A single tag value's usage within an issue — the shape `GET\n * /issues/{id}/tags/{key}` returns per entry (Sentry-compatible: a bare\n * list of these, not a `{key, values}` wrapper).\n */\nexport const issueTagValueSchema = z.object({\n key: z.string(),\n name: z.string(),\n value: z.string(),\n count: z.number().int(),\n first_seen: dateTimeSchema,\n last_seen: dateTimeSchema,\n});\n\n/**\n * A tag key with its most common values within an issue.\n */\nexport const tagSummarySchema = z.object({\n key: z.string(),\n total_values: z.number().int(),\n top_values: z.array(tagValueCountSchema),\n});\n\n/**\n * Per-issue aggregates: unique user count + top tags.\n */\nexport const issueAggregatesSchema = z.object({\n user_count: z.number().int(),\n tags: z.array(tagSummarySchema),\n});\n\n/**\n * Time window for issue stats.\n */\nexport const issueStatsWindowSchema = z.enum(['24h', '30d']);\n\n/**\n * Event-count timeseries for an issue: `[bucketStartUnix, count]` points.\n */\nexport const issueStatsSchema = z.object({\n data: z.array(z.tuple([z.number(), z.number()])),\n});\n\n/**\n * An entry in an issue's activity log (status changes, comments/notes, etc.).\n */\nexport const activityEntrySchema = z.object({\n id: uuidSchema,\n issue_id: uuidSchema,\n user_id: z.number().int().nullable(),\n type: z.string(),\n data: z.string(),\n created_at: dateTimeSchema,\n});\n\n/**\n * A user feedback report attached to an issue/event.\n */\nexport const userReportSchema = z.object({\n id: uuidSchema,\n project_id: z.number().int(),\n issue_id: uuidSchema.nullable(),\n event_id: uuidSchema.nullable(),\n name: z.string(),\n // Server stores '' for anonymous reports (column DEFAULT '' / unwrap_or_default),\n // matching real Sentry's own save_userreport(report.get(\"email\", \"\")) — accept it.\n email: z.union([z.email(), z.literal('')]),\n comments: z.string(),\n created_at: dateTimeSchema,\n});\n\n/**\n * Request to add a comment (note) to an issue.\n */\nexport const createCommentSchema = z.object({\n text: z.string(),\n});\n\n/**\n * Request to submit user feedback on an issue.\n */\nexport const createUserReportSchema = z.object({\n name: z.string().optional(),\n email: z.email().optional(),\n comments: z.string().optional(),\n event_id: uuidSchema.optional(),\n});\n\n/**\n * Request to bulk-mutate issues.\n */\nexport const bulkUpdateIssuesSchema = z.object({\n ids: z.array(uuidSchema),\n status: z\n .union([issueStatusSchema, z.literal('resolvedInNextRelease')])\n .optional(),\n priority: issuePrioritySchema.optional(),\n});\n\n/**\n * Request to bulk-delete issues.\n */\nexport const bulkDeleteIssuesSchema = z.object({\n ids: z.array(uuidSchema),\n});\n\n/**\n * Request to record a deploy (finalizes resolve-in-next-release).\n */\nexport const createDeploySchema = z.object({\n version: z.string(),\n});\n","import { z } from 'zod';\nimport { dateTimeSchema, uuidSchema } from './common.js';\n\n/**\n * Log response schema from the list endpoint (Sentry \"log\" item — OurLog).\n *\n * `attributes` keeps the OTel-style typed map as received\n * (`{\"key\":{\"value\":x,\"type\":\"string\"}}`); denormalized fields are surfaced\n * separately for filtering/sorting.\n */\nexport const logSchema = z.object({\n id: uuidSchema,\n trace_id: z.string().nullable(),\n span_id: z.string().nullable(),\n level: z.string(),\n /** OTel severity number (1=trace … 21=fatal). Null for unknown levels. */\n severity_number: z.number().int().nullable(),\n body: z.string(),\n attributes: z.record(z.string(), z.any()),\n timestamp: dateTimeSchema,\n ingested_at: dateTimeSchema,\n});\n","import { z } from 'zod';\nimport { dateTimeSchema } from './common.js';\n\n/**\n * Per-project role assignable to a member.\n */\nexport const projectRoleSchema = z.enum(['viewer', 'editor', 'admin']);\n\n/**\n * Project member schema - member row joined with the user's email.\n */\nexport const projectMemberSchema = z.object({\n user_id: z.number().int(),\n email: z.string().email(),\n role: projectRoleSchema,\n created_at: dateTimeSchema,\n});\n\n/**\n * Request body for adding or updating a project member.\n */\nexport const upsertProjectMemberSchema = z.object({\n user_id: z.number().int(),\n role: projectRoleSchema,\n});\n","import { z } from 'zod';\nimport { dateTimeSchema, uuidSchema } from './common.js';\n\n/**\n * Project response schema from API\n */\nexport const projectSchema = z.object({\n id: z.number().int(),\n name: z.string(),\n slug: z.string(),\n sentry_key: uuidSchema,\n dsn: z.string(),\n stored_event_count: z.number().int(),\n digested_event_count: z.number().int(),\n created_at: dateTimeSchema,\n updated_at: dateTimeSchema,\n platform: z.string().nullable(),\n});\n\n/**\n * Create project request schema\n */\nexport const createProjectSchema = z.object({\n name: z.string().min(1),\n slug: z.string().optional(),\n});\n\n/**\n * Update project request schema\n */\nexport const updateProjectSchema = z.object({\n name: z.string().min(1).optional(),\n});\n","import { z } from 'zod';\nimport { dateTimeSchema } from './common.js';\n\nexport const releaseHealthRowSchema = z.object({\n release: z.string(),\n environment: z.string(),\n total: z.number().int(),\n errored: z.number().int(),\n crashed: z.number().int(),\n abnormal: z.number().int(),\n healthy: z.number().int(),\n crash_free_sessions_rate: z.number().nullable(),\n crash_free_users_rate: z.number().nullable(),\n});\n\nexport const releaseHealthSchema = z.array(releaseHealthRowSchema);\n\nexport const sessionSummarySchema = z.object({\n total: z.number().int(),\n errored: z.number().int(),\n crashed: z.number().int(),\n abnormal: z.number().int(),\n crash_free_sessions_rate: z.number().nullable(),\n crash_free_users_rate: z.number().nullable(),\n active_releases: z.number().int(),\n});\n\nexport const sessionTimeseriesPointSchema = z.object({\n bucket: dateTimeSchema,\n total: z.number().int(),\n crashed: z.number().int(),\n crash_free_sessions_rate: z.number().nullable(),\n});\n\nexport const sessionTimeseriesSchema = z.array(sessionTimeseriesPointSchema);\n","import { z } from 'zod';\n\nexport const chunkUploadCapabilitySchema = z.object({\n url: z.string(),\n chunkSize: z.number().int(),\n chunksPerRequest: z.number().int(),\n maxRequestSize: z.number().int(),\n hashAlgorithm: z.string(),\n accept: z.array(z.string()),\n concurrency: z.number().int().optional(),\n});\n\nexport const assembleResponseSchema = z.object({\n state: z.string(),\n missingChunks: z.array(z.string()),\n detail: z.string().optional(),\n});\n\nexport const sourceMapFileSchema = z.object({\n debugId: z.string(),\n fileType: z.string(),\n size: z.number().int(),\n timesUsed: z.number().int(),\n dateUploaded: z.string(),\n});\n\nexport const listSourceMapsResponseSchema = z.object({\n data: z.array(sourceMapFileSchema),\n});\n","import { z } from 'zod';\n\n/**\n * Exact source-map storage weight, summed from the `size` columns of the\n * in-DB chunk table and the on-disk source_file CAS.\n */\nexport const sourceMapStorageSchema = z.object({\n chunk_bytes: z.number(),\n source_file_bytes: z.number(),\n total_bytes: z.number(),\n file_count: z.number(),\n});\n\n/**\n * Instance-wide storage summary: row counts per data category, whole-DB size\n * (best-effort, backend-reported), and exact source-map weight.\n */\nexport const storageSummarySchema = z.object({\n total_db_size_bytes: z.number(),\n events_count: z.number(),\n transactions_count: z.number(),\n spans_count: z.number(),\n logs_count: z.number(),\n source_maps: sourceMapStorageSchema,\n});\n\n/**\n * Per-project storage breakdown (one row per project, including empty ones).\n * `estimated_bytes` is the summed JSON payload length the project owns.\n */\nexport const projectStorageSchema = z.object({\n project_id: z.number(),\n project_name: z.string(),\n events_count: z.number(),\n transactions_count: z.number(),\n spans_count: z.number(),\n logs_count: z.number(),\n source_maps_count: z.number(),\n estimated_bytes: z.number(),\n});\n\n/**\n * Rows affected by a cleanup — used symmetrically for the dry-run preview\n * (\"what would be removed\") and the executed result (\"what was removed\").\n */\nexport const cleanupCountsSchema = z.object({\n events: z.number(),\n transactions: z.number(),\n spans: z.number(),\n logs: z.number(),\n issues_removed: z.number(),\n});\n\n/**\n * Outcome of a source-map garbage collection: orphaned files removed from the\n * DB and unlinked from disk, plus the exact bytes freed.\n */\nexport const sourceMapGcResultSchema = z.object({\n files_removed: z.number(),\n bytes_freed: z.number(),\n});\n\n/**\n * Request body for a cleanup (preview or execute): remove data older than\n * `older_than_days`, optionally scoped to one project (omit for all) and to\n * specific data categories. The minimum of 1 mirrors the server contract — a\n * smaller window would wipe the whole dataset.\n *\n * The `include_*` flags select which data categories the cleanup acts on. Each\n * is optional and defaults to `true` server-side, so omitting all of them keeps\n * the \"delete everything older than the cutoff\" behaviour. `include_transactions`\n * also governs the cascaded spans, and `include_events` governs the emptied\n * issues that get removed alongside their events.\n */\nexport const cleanupOptionsSchema = z.object({\n older_than_days: z.number().int().min(1),\n project_id: z.number().int().optional(),\n include_events: z.boolean().optional(),\n include_transactions: z.boolean().optional(),\n include_logs: z.boolean().optional(),\n});\n","import { z } from 'zod';\nimport { dateTimeSchema } from './common.js';\n\n/**\n * Auth token response schema from list endpoint (masked)\n */\nexport const authTokenSchema = z.object({\n id: z.number().int(),\n token_prefix: z.string(),\n description: z.string().nullable(),\n created_at: dateTimeSchema,\n last_used_at: dateTimeSchema.nullable(),\n});\n\n/**\n * Auth token created response schema (full token shown once)\n */\nexport const authTokenCreatedSchema = z.object({\n id: z.number().int(),\n token: z.string(),\n description: z.string().nullable(),\n created_at: dateTimeSchema,\n});\n\n/**\n * Create auth token request schema\n */\nexport const createAuthTokenSchema = z.object({\n description: z.string().optional(),\n});\n","import { z } from 'zod';\nimport { dateTimeSchema, eventIdSchema, uuidSchema } from './common.js';\n\n/**\n * Transaction response schema from list endpoint\n */\nexport const transactionSchema = z.object({\n id: uuidSchema,\n event_id: eventIdSchema,\n transaction_name: z.string(),\n timestamp: dateTimeSchema,\n start_timestamp: dateTimeSchema.nullable(),\n duration_ms: z.number().nullable(),\n platform: z.string(),\n environment: z.string(),\n release: z.string(),\n ingested_at: dateTimeSchema,\n});\n\n/**\n * Transaction detail schema from the detail endpoint.\n *\n * Same summary fields as {@link transactionSchema} plus the full Sentry\n * payload under `data` (spans, contexts.trace, measurements, tags, request,\n * user) used to render the span waterfall and metrics view.\n */\nexport const transactionDetailSchema = z.object({\n id: uuidSchema,\n event_id: eventIdSchema,\n transaction_name: z.string(),\n timestamp: dateTimeSchema,\n start_timestamp: dateTimeSchema.nullable(),\n duration_ms: z.number().nullable(),\n platform: z.string(),\n environment: z.string(),\n release: z.string(),\n ingested_at: dateTimeSchema,\n data: z.record(z.string(), z.any()), // Full Sentry transaction payload\n});\n\n/**\n * A span row from the shared `spans` table — covers both origins\n * (transaction-embedded AND standalone \"span\" envelope items share this\n * table and this exact response shape), including gen_ai.* denormalized\n * fields when the span is recognized as an AI span.\n */\nexport const spanSchema = z.object({\n id: uuidSchema,\n /** Parent transaction, if this span was extracted from one. `null` for a standalone span. */\n transaction_id: uuidSchema.nullable(),\n span_id: z.string().nullable(),\n trace_id: z.string().nullable(),\n parent_span_id: z.string().nullable(),\n op: z.string().nullable(),\n description: z.string().nullable(),\n status: z.string().nullable(),\n start_timestamp: dateTimeSchema.nullable(),\n timestamp: dateTimeSchema.nullable(),\n duration_ms: z.number().nullable(),\n exclusive_time_ms: z.number().nullable(),\n is_segment: z.boolean(),\n segment_id: z.string().nullable(),\n /** Only ever set for standalone spans — a transaction-embedded span has no parent row to inherit these from. */\n platform: z.string().nullable(),\n release: z.string().nullable(),\n environment: z.string().nullable(),\n /** gen_ai.* denormalized fields — all null unless recognized as an AI span. */\n gen_ai_operation_type: z.string().nullable(),\n gen_ai_agent_name: z.string().nullable(),\n gen_ai_request_model: z.string().nullable(),\n gen_ai_response_model: z.string().nullable(),\n gen_ai_tool_name: z.string().nullable(),\n gen_ai_conversation_id: z.string().nullable(),\n gen_ai_usage_input_tokens: z.number().nullable(),\n gen_ai_usage_output_tokens: z.number().nullable(),\n gen_ai_usage_total_tokens: z.number().nullable(),\n});\n\n/**\n * Aggregate performance stats for one (transaction_name, op) group.\n */\nexport const transactionStatsSchema = z.object({\n transaction_name: z.string(),\n op: z.string().nullable(),\n count: z.number().int(),\n p50_ms: z.number(),\n p95_ms: z.number(),\n p99_ms: z.number(),\n failure_rate: z.number(),\n});\n","import { z } from 'zod';\nimport { globalRoleSchema } from './team.js';\n\n/**\n * User schema - authenticated user information\n */\nexport const userSchema = z.object({\n id: z.number().int().positive(),\n email: z.string().email(),\n role: globalRoleSchema,\n is_admin: z.boolean(),\n});\n\n/**\n * Auth response schema - returned after login/register\n */\nexport const authResponseSchema = z.object({\n user: userSchema,\n});\n\n/**\n * Login result schema - includes user and session cookies for Server Actions\n */\nexport const loginResultSchema = z.object({\n user: userSchema,\n cookies: z.array(z.string()),\n});\n\n/**\n * Login request schema\n */\nexport const loginRequestSchema = z.object({\n email: z.string().email(),\n password: z.string().min(1),\n});\n\n/**\n * Register request schema\n */\nexport const registerRequestSchema = z.object({\n email: z.string().email(),\n password: z.string().min(1),\n});\n","/**\n * Base error class for all Rustrak client errors\n */\nexport class RustrakError extends Error {\n /**\n * Whether this error is safe to retry\n */\n public readonly retryable: boolean;\n\n /**\n * HTTP status code if applicable\n */\n public readonly statusCode?: number;\n\n /**\n * Original error cause\n */\n public readonly cause?: Error;\n\n constructor(\n message: string,\n options?: {\n retryable?: boolean;\n statusCode?: number;\n cause?: Error;\n },\n ) {\n super(message);\n this.name = this.constructor.name;\n this.retryable = options?.retryable ?? false;\n this.statusCode = options?.statusCode;\n this.cause = options?.cause;\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n}\n","import { RustrakError } from './base.js';\n\n/**\n * Network error (connection issues, timeouts)\n * Retryable by default\n */\nexport class NetworkError extends RustrakError {\n constructor(message: string, cause?: Error) {\n super(message, { retryable: true, cause });\n }\n}\n\n/**\n * Authentication error (401 Unauthorized)\n * Not retryable - requires new credentials\n */\nexport class AuthenticationError extends RustrakError {\n constructor(message = 'Authentication failed') {\n super(message, { retryable: false, statusCode: 401 });\n }\n}\n\n/**\n * Authorization error (403 Forbidden)\n * Not retryable - requires different permissions\n */\nexport class AuthorizationError extends RustrakError {\n constructor(message = 'Insufficient permissions') {\n super(message, { retryable: false, statusCode: 403 });\n }\n}\n\n/**\n * Not found error (404 Not Found)\n * Not retryable\n */\nexport class NotFoundError extends RustrakError {\n constructor(resource: string) {\n super(`Resource not found: ${resource}`, {\n retryable: false,\n statusCode: 404,\n });\n }\n}\n\n/**\n * Rate limit error (429 Too Many Requests)\n * Retryable after delay\n */\nexport class RateLimitError extends RustrakError {\n /**\n * Number of seconds to wait before retrying (from Retry-After header)\n */\n public readonly retryAfter?: number;\n\n constructor(message = 'Rate limit exceeded', retryAfter?: string | number) {\n super(message, { retryable: true, statusCode: 429 });\n\n if (retryAfter !== undefined) {\n this.retryAfter =\n typeof retryAfter === 'string' ? parseInt(retryAfter, 10) : retryAfter;\n }\n }\n}\n\n/**\n * Server error (500+)\n * Retryable by default\n */\nexport class ServerError extends RustrakError {\n constructor(message: string, statusCode = 500) {\n super(message, { retryable: true, statusCode });\n }\n}\n\n/**\n * Bad request error (400)\n * Not retryable - client error\n */\nexport class BadRequestError extends RustrakError {\n constructor(message: string) {\n super(message, { retryable: false, statusCode: 400 });\n }\n}\n","import type { ZodError } from 'zod';\nimport { RustrakError } from './base.js';\n\n/**\n * Validation error when API response doesn't match expected schema\n * Not retryable - indicates API contract mismatch\n */\nexport class ValidationError extends RustrakError {\n /**\n * Zod validation errors\n */\n public readonly validationErrors?: ZodError;\n\n constructor(message: string, validationErrors?: ZodError) {\n super(message, { retryable: false });\n this.validationErrors = validationErrors;\n }\n\n /**\n * Get a formatted string of validation errors\n */\n public getValidationDetails(): string {\n if (!this.validationErrors) {\n return this.message;\n }\n\n const errors = this.validationErrors.issues\n .map((err) => `${err.path.map(String).join('.')}: ${err.message}`)\n .join(', ');\n\n return `${this.message} - ${errors}`;\n }\n}\n","import type { KyInstance } from 'ky';\nimport type { ZodSchema } from 'zod';\nimport { ValidationError } from '../errors/index.js';\n\n/**\n * Base resource class with validation helper\n */\nexport abstract class BaseResource {\n protected readonly http: KyInstance;\n\n constructor(http: KyInstance) {\n this.http = http;\n }\n\n /**\n * Validate API response against Zod schema\n * @throws {ValidationError} if validation fails\n */\n protected validate<T>(data: unknown, schema: ZodSchema<T>): T {\n const result = schema.safeParse(data);\n\n if (!result.success) {\n throw new ValidationError('API response validation failed', result.error);\n }\n\n return result.data;\n }\n}\n","import { z } from 'zod';\nimport {\n agentDurationPointSchema,\n agentTimeseriesPointSchema,\n agentTraceSummarySchema,\n genAiBreakdownRowSchema,\n offsetPaginatedResponseSchema,\n} from '../schemas/index.js';\nimport type {\n AgentBreakdownOptions,\n AgentDurationPoint,\n AgentTimeseriesOptions,\n AgentTimeseriesPoint,\n AgentTraceSummary,\n AgentTracesOptions,\n GenAiBreakdownRow,\n OffsetPaginatedResponse,\n} from '../types/index.js';\nimport { BaseResource } from './base.js';\n\nfunction timeseriesSearchParams(\n options?: AgentTimeseriesOptions,\n): Record<string, string> {\n const searchParams: Record<string, string> = {};\n if (options?.period_hours) {\n searchParams.period_hours = String(options.period_hours);\n }\n if (options?.interval_hours) {\n searchParams.interval_hours = String(options.interval_hours);\n }\n return searchParams;\n}\n\nfunction breakdownSearchParams(\n options?: AgentBreakdownOptions,\n): Record<string, string> {\n const searchParams: Record<string, string> = {};\n if (options?.period_hours) {\n searchParams.period_hours = String(options.period_hours);\n }\n if (options?.limit) {\n searchParams.limit = String(options.limit);\n }\n return searchParams;\n}\n\n/**\n * AI Agent Monitoring dashboard API resource — powers the 6 dashboard\n * widgets (Agent Runs, Duration, LLM Calls by Model, Tokens Used by Model,\n * Tool Calls by Tool, Traces).\n */\nexport class AgentsResource extends BaseResource {\n /**\n * Time-bucketed count of agent-run spans (`gen_ai.operation.type:agent`).\n */\n async getRuns(\n projectId: number,\n options?: AgentTimeseriesOptions,\n ): Promise<AgentTimeseriesPoint[]> {\n const data = await this.http\n .get(`api/projects/${projectId}/agents/runs`, {\n searchParams: timeseriesSearchParams(options),\n })\n .json();\n\n return this.validate(data, z.array(agentTimeseriesPointSchema));\n }\n\n /**\n * Time-bucketed avg/p95 duration for `agent`/`ai_client` spans.\n */\n async getDuration(\n projectId: number,\n options?: AgentTimeseriesOptions,\n ): Promise<AgentDurationPoint[]> {\n const data = await this.http\n .get(`api/projects/${projectId}/agents/duration`, {\n searchParams: timeseriesSearchParams(options),\n })\n .json();\n\n return this.validate(data, z.array(agentDurationPointSchema));\n }\n\n /**\n * Top models by LLM call count (`gen_ai.operation.type:ai_client`).\n */\n async getModelsByCalls(\n projectId: number,\n options?: AgentBreakdownOptions,\n ): Promise<GenAiBreakdownRow[]> {\n const data = await this.http\n .get(`api/projects/${projectId}/agents/models/calls`, {\n searchParams: breakdownSearchParams(options),\n })\n .json();\n\n return this.validate(data, z.array(genAiBreakdownRowSchema));\n }\n\n /**\n * Top models by total tokens used (`gen_ai.operation.type:ai_client`).\n */\n async getModelsByTokens(\n projectId: number,\n options?: AgentBreakdownOptions,\n ): Promise<GenAiBreakdownRow[]> {\n const data = await this.http\n .get(`api/projects/${projectId}/agents/models/tokens`, {\n searchParams: breakdownSearchParams(options),\n })\n .json();\n\n return this.validate(data, z.array(genAiBreakdownRowSchema));\n }\n\n /**\n * Top tools by call count (`gen_ai.operation.type:tool`).\n */\n async getTools(\n projectId: number,\n options?: AgentBreakdownOptions,\n ): Promise<GenAiBreakdownRow[]> {\n const data = await this.http\n .get(`api/projects/${projectId}/agents/tools`, {\n searchParams: breakdownSearchParams(options),\n })\n .json();\n\n return this.validate(data, z.array(genAiBreakdownRowSchema));\n }\n\n /**\n * Paginated per-trace_id aggregate (duration, tokens, tool usage) across\n * all AI spans sharing that trace, regardless of origin.\n */\n async getTraces(\n projectId: number,\n options?: AgentTracesOptions,\n ): Promise<OffsetPaginatedResponse<AgentTraceSummary>> {\n const searchParams: Record<string, string> = {};\n if (options?.page) {\n searchParams.page = String(options.page);\n }\n if (options?.per_page) {\n searchParams.per_page = String(options.per_page);\n }\n\n const data = await this.http\n .get(`api/projects/${projectId}/agents/traces`, { searchParams })\n .json();\n\n return this.validate(\n data,\n offsetPaginatedResponseSchema(agentTraceSummarySchema),\n );\n }\n}\n","import { z } from 'zod';\nimport {\n alertIntegrationSchema,\n createAlertIntegrationSchema,\n testChannelResponseSchema,\n testIntegrationBodySchema,\n updateAlertIntegrationSchema,\n} from '../schemas/alert.js';\nimport type {\n AlertIntegration,\n CreateAlertIntegration,\n RoutingOverride,\n TestChannelResponse,\n UpdateAlertIntegration,\n} from '../types/alert.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Alert Integrations API resource (global credential destinations)\n */\nexport class AlertIntegrationsResource extends BaseResource {\n /**\n * List all alert integrations\n */\n async list(): Promise<AlertIntegration[]> {\n const data = await this.http.get('api/integrations').json();\n return this.validate(data, z.array(alertIntegrationSchema));\n }\n\n /**\n * Get a single alert integration by ID\n */\n async get(id: number): Promise<AlertIntegration> {\n const data = await this.http.get(`api/integrations/${id}`).json();\n return this.validate(data, alertIntegrationSchema);\n }\n\n /**\n * Create a new alert integration\n */\n async create(input: CreateAlertIntegration): Promise<AlertIntegration> {\n const validatedInput = this.validate(input, createAlertIntegrationSchema);\n\n const data = await this.http\n .post('api/integrations', { json: validatedInput })\n .json();\n\n return this.validate(data, alertIntegrationSchema);\n }\n\n /**\n * Update an existing alert integration\n */\n async update(\n id: number,\n input: UpdateAlertIntegration,\n ): Promise<AlertIntegration> {\n const validatedInput = this.validate(input, updateAlertIntegrationSchema);\n\n const data = await this.http\n .patch(`api/integrations/${id}`, { json: validatedInput })\n .json();\n\n return this.validate(data, alertIntegrationSchema);\n }\n\n /**\n * Delete an alert integration\n */\n async delete(id: number): Promise<void> {\n await this.http.delete(`api/integrations/${id}`);\n }\n\n /**\n * Send a test notification to verify integration configuration.\n * For Slack bot_token integrations, routingOverride must include `channel`.\n */\n async test(\n id: number,\n routingOverride?: RoutingOverride,\n ): Promise<TestChannelResponse> {\n const body =\n routingOverride !== undefined\n ? this.validate(\n { routing_override: routingOverride },\n testIntegrationBodySchema,\n )\n : undefined;\n\n const data = await this.http\n .post(\n `api/integrations/${id}/test`,\n body !== undefined ? { json: body } : undefined,\n )\n .json();\n\n return this.validate(data, testChannelResponseSchema);\n }\n}\n","import { z } from 'zod';\nimport {\n alertHistorySchema,\n alertRuleSchema,\n createAlertRuleSchema,\n updateAlertRuleSchema,\n} from '../schemas/alert.js';\nimport type {\n AlertHistory,\n AlertRule,\n CreateAlertRule,\n ListAlertHistoryOptions,\n UpdateAlertRule,\n} from '../types/alert.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Alert Rules API resource (per-project alert configuration)\n */\nexport class AlertRulesResource extends BaseResource {\n /**\n * List all alert rules for a project\n */\n async list(projectId: number): Promise<AlertRule[]> {\n const data = await this.http\n .get(`api/projects/${projectId}/alert-rules`)\n .json();\n return this.validate(data, z.array(alertRuleSchema));\n }\n\n /**\n * Get a single alert rule by ID\n */\n async get(projectId: number, ruleId: number): Promise<AlertRule> {\n const data = await this.http\n .get(`api/projects/${projectId}/alert-rules/${ruleId}`)\n .json();\n return this.validate(data, alertRuleSchema);\n }\n\n /**\n * Create a new alert rule for a project\n */\n async create(projectId: number, input: CreateAlertRule): Promise<AlertRule> {\n const validatedInput = this.validate(input, createAlertRuleSchema);\n\n const data = await this.http\n .post(`api/projects/${projectId}/alert-rules`, { json: validatedInput })\n .json();\n\n return this.validate(data, alertRuleSchema);\n }\n\n /**\n * Update an existing alert rule\n */\n async update(\n projectId: number,\n ruleId: number,\n input: UpdateAlertRule,\n ): Promise<AlertRule> {\n const validatedInput = this.validate(input, updateAlertRuleSchema);\n\n const data = await this.http\n .patch(`api/projects/${projectId}/alert-rules/${ruleId}`, {\n json: validatedInput,\n })\n .json();\n\n return this.validate(data, alertRuleSchema);\n }\n\n /**\n * Delete an alert rule\n */\n async delete(projectId: number, ruleId: number): Promise<void> {\n await this.http.delete(`api/projects/${projectId}/alert-rules/${ruleId}`);\n }\n\n /**\n * List alert history for a project\n */\n async listHistory(\n projectId: number,\n options?: ListAlertHistoryOptions,\n ): Promise<AlertHistory[]> {\n const searchParams = new URLSearchParams();\n\n if (options?.limit !== undefined) {\n searchParams.set('limit', options.limit.toString());\n }\n\n const query = searchParams.toString();\n const url = query\n ? `api/projects/${projectId}/alert-history?${query}`\n : `api/projects/${projectId}/alert-history`;\n\n const data = await this.http.get(url).json();\n return this.validate(data, z.array(alertHistorySchema));\n }\n}\n","import {\n acceptInvitationSchema,\n invitationInfoSchema,\n} from '../schemas/invitation.js';\nimport {\n authResponseSchema,\n loginRequestSchema,\n registerRequestSchema,\n userSchema,\n} from '../schemas/user.js';\nimport type { AcceptInvitation, InvitationInfo } from '../types/invitation.js';\nimport type {\n LoginRequest,\n LoginResult,\n RegisterRequest,\n User,\n} from '../types/user.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Authentication API resource\n * Handles user registration, login, logout, and session management\n */\nexport class AuthResource extends BaseResource {\n /**\n * Register a new user account\n * Creates a new user and automatically logs them in (sets session cookie)\n * @param credentials - Email and password for the new account\n * @returns LoginResult with user information and session cookies\n */\n async register(credentials: RegisterRequest): Promise<LoginResult> {\n // Validate input\n const validatedInput = this.validate(credentials, registerRequestSchema);\n\n const response = await this.http.post('auth/register', {\n json: validatedInput,\n });\n\n // Extract Set-Cookie headers for Server Actions\n const cookies = response.headers.getSetCookie();\n\n const data = await response.json();\n const authResponse = this.validate(data, authResponseSchema);\n\n return {\n user: authResponse.user,\n cookies,\n };\n }\n\n /**\n * Login with email and password\n * Authenticates the user and sets a session cookie\n * @param credentials - Email and password\n * @returns LoginResult with user information and session cookies\n */\n async login(credentials: LoginRequest): Promise<LoginResult> {\n // Validate input\n const validatedInput = this.validate(credentials, loginRequestSchema);\n\n const response = await this.http.post('auth/login', {\n json: validatedInput,\n });\n\n // Extract Set-Cookie headers for Server Actions\n const cookies = response.headers.getSetCookie();\n\n const data = await response.json();\n const authResponse = this.validate(data, authResponseSchema);\n\n return {\n user: authResponse.user,\n cookies,\n };\n }\n\n /**\n * Logout the current user\n * Clears the session cookie\n * @returns Array of Set-Cookie headers (typically clearing cookies)\n */\n async logout(): Promise<string[]> {\n const response = await this.http.post('auth/logout');\n return response.headers.getSetCookie();\n }\n\n /**\n * Get current authenticated user\n * Requires a valid session cookie\n * @returns User information\n */\n async getCurrentUser(): Promise<User> {\n const data = await this.http.get('auth/me').json();\n return this.validate(data, userSchema);\n }\n\n /**\n * Get the details of a pending invitation by its token (public endpoint)\n * Used by the accept-invitation page before the user has an account\n * @param token - Invitation token\n * @returns Invitation info (email, role, status, expiry)\n */\n async getInvitation(token: string): Promise<InvitationInfo> {\n const data = await this.http.get(`auth/invitation/${token}`).json();\n return this.validate(data, invitationInfoSchema);\n }\n\n /**\n * Accept a pending invitation, creating the user account and logging in\n * @param input - Invitation token and the new account's password\n * @returns LoginResult with user information and session cookies\n */\n async acceptInvitation(input: AcceptInvitation): Promise<LoginResult> {\n const validatedInput = this.validate(input, acceptInvitationSchema);\n\n const response = await this.http.post('auth/accept-invitation', {\n json: validatedInput,\n });\n\n const cookies = response.headers.getSetCookie();\n\n const data = await response.json();\n const authResponse = this.validate(data, authResponseSchema);\n\n return {\n user: authResponse.user,\n cookies,\n };\n }\n}\n","import {\n eventDetailSchema,\n eventSchema,\n paginatedResponseSchema,\n} from '../schemas/index.js';\nimport type {\n Event,\n EventDetail,\n ListEventsOptions,\n PaginatedResponse,\n} from '../types/index.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Events API resource\n */\nexport class EventsResource extends BaseResource {\n /**\n * List events for an issue with pagination\n */\n async list(\n projectId: number,\n issueId: string,\n options?: ListEventsOptions,\n ): Promise<PaginatedResponse<Event>> {\n const searchParams: Record<string, string> = {};\n\n if (options?.order) {\n searchParams.order = options.order;\n }\n if (options?.cursor) {\n searchParams.cursor = options.cursor;\n }\n\n const data = await this.http\n .get(`api/projects/${projectId}/issues/${issueId}/events`, {\n searchParams,\n })\n .json();\n\n return this.validate(data, paginatedResponseSchema(eventSchema));\n }\n\n /**\n * Get a single event by ID with full details\n */\n async get(\n projectId: number,\n issueId: string,\n eventId: string,\n ): Promise<EventDetail> {\n const data = await this.http\n .get(`api/projects/${projectId}/issues/${issueId}/events/${eventId}`)\n .json();\n\n return this.validate(data, eventDetailSchema);\n }\n}\n","import { z } from 'zod';\n\nexport const serverVersionSchema = z.object({\n version: z.string(),\n});\n\nexport type ServerVersion = z.infer<typeof serverVersionSchema>;\n","import type { ServerVersion } from '../schemas/version.js';\nimport { serverVersionSchema } from '../schemas/version.js';\nimport { BaseResource } from './base.js';\n\nexport class HealthResource extends BaseResource {\n async getVersion(): Promise<ServerVersion> {\n const data = await this.http.get('health/version').json();\n return this.validate(data, serverVersionSchema);\n }\n}\n","import { createInvitationSchema, invitationSchema } from '../schemas/index.js';\nimport type { CreateInvitation, Invitation } from '../types/index.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Invitations API resource\n * Manages pending user invitations (admin only).\n */\nexport class InvitationsResource extends BaseResource {\n /**\n * Create a new invitation\n * @param input - Email and global role for the invited user\n */\n async create(input: CreateInvitation): Promise<Invitation> {\n const validatedInput = this.validate(input, createInvitationSchema);\n const data = await this.http\n .post('api/invitations', { json: validatedInput })\n .json();\n return this.validate(data, invitationSchema);\n }\n\n /**\n * List all invitations\n */\n async list(): Promise<Invitation[]> {\n const data = await this.http.get('api/invitations').json();\n return this.validate(data, invitationSchema.array());\n }\n\n /**\n * Revoke a pending invitation\n * @param token - Invitation token to revoke\n */\n async revoke(token: string): Promise<void> {\n await this.http.delete(`api/invitations/${token}`);\n }\n}\n","import { z } from 'zod';\nimport {\n activityEntrySchema,\n bulkDeleteIssuesSchema,\n bulkUpdateIssuesSchema,\n createCommentSchema,\n createDeploySchema,\n createUserReportSchema,\n issueAggregatesSchema,\n issueHashSchema,\n issueSchema,\n issueStatsSchema,\n issueTagValueSchema,\n offsetPaginatedResponseSchema,\n updateIssueStateSchema,\n userReportSchema,\n} from '../schemas/index.js';\nimport type {\n ActivityEntry,\n BulkDeleteIssues,\n BulkUpdateIssues,\n CreateComment,\n CreateDeploy,\n CreateUserReport,\n Issue,\n IssueAggregates,\n IssueHash,\n IssueStats,\n IssueStatsWindow,\n IssueTagValue,\n ListIssuesOptions,\n OffsetPaginatedResponse,\n UpdateIssueState,\n UserReport,\n} from '../types/index.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Issues API resource\n */\nexport class IssuesResource extends BaseResource {\n /**\n * List issues for a project with offset-based pagination\n */\n async list(\n projectId: number,\n options?: ListIssuesOptions,\n ): Promise<OffsetPaginatedResponse<Issue>> {\n const searchParams: Record<string, string> = {};\n\n if (options?.page !== undefined) {\n searchParams.page = options.page.toString();\n }\n if (options?.per_page !== undefined) {\n searchParams.per_page = options.per_page.toString();\n }\n if (options?.sort) {\n searchParams.sort = options.sort;\n }\n if (options?.order) {\n searchParams.order = options.order;\n }\n if (options?.filter) {\n searchParams.filter = options.filter;\n }\n if (options?.q) {\n searchParams.q = options.q;\n }\n\n const data = await this.http\n .get(`api/projects/${projectId}/issues`, { searchParams })\n .json();\n\n return this.validate(data, offsetPaginatedResponseSchema(issueSchema));\n }\n\n /**\n * Get a single issue by ID\n */\n async get(projectId: number, issueId: string): Promise<Issue> {\n const data = await this.http\n .get(`api/projects/${projectId}/issues/${issueId}`)\n .json();\n\n return this.validate(data, issueSchema);\n }\n\n /**\n * Update issue state (status, substatus, priority, assignment, …)\n */\n async updateState(\n projectId: number,\n issueId: string,\n input: UpdateIssueState,\n ): Promise<Issue> {\n const validatedInput = this.validate(input, updateIssueStateSchema);\n\n const data = await this.http\n .patch(`api/projects/${projectId}/issues/${issueId}`, {\n json: validatedInput,\n })\n .json();\n\n return this.validate(data, issueSchema);\n }\n\n /**\n * Resolve an issue in the next release (suppresses regression until a deploy).\n */\n async resolveInNextRelease(\n projectId: number,\n issueId: string,\n ): Promise<Issue> {\n return this.updateState(projectId, issueId, {\n status: 'resolvedInNextRelease',\n });\n }\n\n /**\n * Delete an issue\n */\n async delete(projectId: number, issueId: string): Promise<void> {\n await this.http.delete(`api/projects/${projectId}/issues/${issueId}`);\n }\n\n /**\n * Bulk-mutate issues (status and/or priority).\n */\n async bulkUpdate(\n projectId: number,\n input: BulkUpdateIssues,\n ): Promise<{ updated: number }> {\n const validatedInput = this.validate(input, bulkUpdateIssuesSchema);\n const data = await this.http\n .put(`api/projects/${projectId}/issues`, { json: validatedInput })\n .json();\n return this.validate(data, z.object({ updated: z.number().int() }));\n }\n\n /**\n * Bulk-delete issues.\n */\n async bulkDelete(\n projectId: number,\n input: BulkDeleteIssues,\n ): Promise<{ deleted: number }> {\n const validatedInput = this.validate(input, bulkDeleteIssuesSchema);\n const data = await this.http\n .delete(`api/projects/${projectId}/issues`, { json: validatedInput })\n .json();\n return this.validate(data, z.object({ deleted: z.number().int() }));\n }\n\n /**\n * List the grouping hashes that map to an issue.\n */\n async getHashes(projectId: number, issueId: string): Promise<IssueHash[]> {\n const data = await this.http\n .get(`api/projects/${projectId}/issues/${issueId}/hashes`)\n .json();\n return this.validate(data, z.array(issueHashSchema));\n }\n\n /**\n * List the distinct values (with counts) for a tag key across the issue.\n * Returns a bare list, one entry per value (Sentry-compatible shape).\n */\n async getTagValues(\n projectId: number,\n issueId: string,\n key: string,\n ): Promise<IssueTagValue[]> {\n const data = await this.http\n .get(\n `api/projects/${projectId}/issues/${issueId}/tags/${encodeURIComponent(key)}`,\n )\n .json();\n return this.validate(data, z.array(issueTagValueSchema));\n }\n\n /**\n * Fetch per-issue aggregates (unique user count + top tags).\n */\n async getAggregates(\n projectId: number,\n issueId: string,\n ): Promise<IssueAggregates> {\n const data = await this.http\n .get(`api/projects/${projectId}/issues/${issueId}/aggregates`)\n .json();\n return this.validate(data, issueAggregatesSchema);\n }\n\n /**\n * Fetch a zero-filled event-count timeseries (24h or 30d).\n */\n async getStats(\n projectId: number,\n issueId: string,\n window: IssueStatsWindow = '24h',\n ): Promise<IssueStats> {\n const data = await this.http\n .get(`api/projects/${projectId}/issues/${issueId}/stats`, {\n searchParams: { window },\n })\n .json();\n return this.validate(data, issueStatsSchema);\n }\n\n /**\n * List an issue's activity log (status changes, comments/notes, …).\n */\n async getActivity(\n projectId: number,\n issueId: string,\n ): Promise<ActivityEntry[]> {\n const data = await this.http\n .get(`api/projects/${projectId}/issues/${issueId}/activity`)\n .json();\n return this.validate(data, z.array(activityEntrySchema));\n }\n\n /**\n * Add a comment (note) to an issue.\n */\n async addComment(\n projectId: number,\n issueId: string,\n input: CreateComment,\n ): Promise<ActivityEntry> {\n const validatedInput = this.validate(input, createCommentSchema);\n const data = await this.http\n .post(`api/projects/${projectId}/issues/${issueId}/comments`, {\n json: validatedInput,\n })\n .json();\n return this.validate(data, activityEntrySchema);\n }\n\n /**\n * Set or clear the current user's bookmark on an issue.\n */\n async setBookmark(\n projectId: number,\n issueId: string,\n enabled: boolean,\n ): Promise<{ is_bookmarked: boolean }> {\n const data = await this.http\n .put(`api/projects/${projectId}/issues/${issueId}/bookmark`, {\n json: { enabled },\n })\n .json();\n return this.validate(data, z.object({ is_bookmarked: z.boolean() }));\n }\n\n /**\n * Set or clear the current user's subscription to an issue.\n */\n async setSubscription(\n projectId: number,\n issueId: string,\n enabled: boolean,\n ): Promise<{ is_subscribed: boolean }> {\n const data = await this.http\n .put(`api/projects/${projectId}/issues/${issueId}/subscription`, {\n json: { enabled },\n })\n .json();\n return this.validate(data, z.object({ is_subscribed: z.boolean() }));\n }\n\n /**\n * Mark the issue as seen by the current user.\n */\n async markSeen(\n projectId: number,\n issueId: string,\n ): Promise<{ has_seen: boolean }> {\n const data = await this.http\n .post(`api/projects/${projectId}/issues/${issueId}/seen`)\n .json();\n return this.validate(data, z.object({ has_seen: z.boolean() }));\n }\n\n /**\n * List user feedback reports for an issue.\n */\n async listUserReports(\n projectId: number,\n issueId: string,\n ): Promise<UserReport[]> {\n const data = await this.http\n .get(`api/projects/${projectId}/issues/${issueId}/user-reports`)\n .json();\n return this.validate(data, z.array(userReportSchema));\n }\n\n /**\n * Attach a user feedback report to an issue.\n */\n async createUserReport(\n projectId: number,\n issueId: string,\n input: CreateUserReport,\n ): Promise<UserReport> {\n const validatedInput = this.validate(input, createUserReportSchema);\n const data = await this.http\n .post(`api/projects/${projectId}/issues/${issueId}/user-reports`, {\n json: validatedInput,\n })\n .json();\n return this.validate(data, userReportSchema);\n }\n\n /**\n * Record a deploy of a release, finalizing resolve-in-next-release issues.\n */\n async createDeploy(\n projectId: number,\n input: CreateDeploy,\n ): Promise<{ version: string; finalized: number }> {\n const validatedInput = this.validate(input, createDeploySchema);\n const data = await this.http\n .post(`api/projects/${projectId}/deploys`, { json: validatedInput })\n .json();\n return this.validate(\n data,\n z.object({ version: z.string(), finalized: z.number().int() }),\n );\n }\n}\n","import { logSchema, offsetPaginatedResponseSchema } from '../schemas/index.js';\nimport type {\n ListLogsOptions,\n Log,\n OffsetPaginatedResponse,\n} from '../types/index.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Logs API resource (standalone logs — Sentry \"log\" item type)\n */\nexport class LogsResource extends BaseResource {\n /**\n * List logs for a project with offset-based pagination (newest first by log\n * timestamp), optionally filtered by level/trace_id.\n */\n async list(\n projectId: number,\n options?: ListLogsOptions,\n ): Promise<OffsetPaginatedResponse<Log>> {\n const searchParams: Record<string, string> = {};\n\n if (options?.page) {\n searchParams.page = String(options.page);\n }\n if (options?.per_page) {\n searchParams.per_page = String(options.per_page);\n }\n if (options?.level) {\n searchParams.level = options.level;\n }\n if (options?.trace_id) {\n searchParams.trace_id = options.trace_id;\n }\n\n const data = await this.http\n .get(`api/projects/${projectId}/logs`, { searchParams })\n .json();\n\n return this.validate(data, offsetPaginatedResponseSchema(logSchema));\n }\n}\n","import {\n projectMemberSchema,\n upsertProjectMemberSchema,\n} from '../schemas/index.js';\nimport type { ProjectMember, UpsertProjectMember } from '../types/index.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Project Members API resource\n * Manages per-project membership and roles.\n */\nexport class MembersResource extends BaseResource {\n /**\n * List members of a project\n * @param projectId - ID of the project\n */\n async list(projectId: number): Promise<ProjectMember[]> {\n const data = await this.http\n .get(`api/projects/${projectId}/members`)\n .json();\n return this.validate(data, projectMemberSchema.array());\n }\n\n /**\n * Add or update a project member\n * @param projectId - ID of the project\n * @param input - User ID and per-project role\n */\n async upsert(projectId: number, input: UpsertProjectMember): Promise<void> {\n const validatedInput = this.validate(input, upsertProjectMemberSchema);\n await this.http.put(`api/projects/${projectId}/members`, {\n json: validatedInput,\n });\n }\n\n /**\n * Remove a member from a project\n * @param projectId - ID of the project\n * @param userId - ID of the user to remove\n */\n async remove(projectId: number, userId: number): Promise<void> {\n await this.http.delete(`api/projects/${projectId}/members/${userId}`);\n }\n}\n","import {\n createProjectSchema,\n offsetPaginatedResponseSchema,\n projectSchema,\n updateProjectSchema,\n} from '../schemas/index.js';\nimport type {\n CreateProject,\n ListProjectsOptions,\n OffsetPaginatedResponse,\n Project,\n UpdateProject,\n} from '../types/index.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Projects API resource\n */\nexport class ProjectsResource extends BaseResource {\n /**\n * List projects with pagination\n */\n async list(\n options?: ListProjectsOptions,\n ): Promise<OffsetPaginatedResponse<Project>> {\n const searchParams = new URLSearchParams();\n\n if (options?.page !== undefined) {\n searchParams.set('page', options.page.toString());\n }\n if (options?.per_page !== undefined) {\n searchParams.set('per_page', options.per_page.toString());\n }\n if (options?.order) {\n searchParams.set('order', options.order);\n }\n\n const query = searchParams.toString();\n const url = query ? `api/projects?${query}` : 'api/projects';\n\n const data = await this.http.get(url).json();\n return this.validate(data, offsetPaginatedResponseSchema(projectSchema));\n }\n\n /**\n * Get a single project by ID\n */\n async get(id: number): Promise<Project> {\n const data = await this.http.get(`api/projects/${id}`).json();\n return this.validate(data, projectSchema);\n }\n\n /**\n * Create a new project\n */\n async create(input: CreateProject): Promise<Project> {\n // Validate input\n const validatedInput = this.validate(input, createProjectSchema);\n\n const data = await this.http\n .post('api/projects', { json: validatedInput })\n .json();\n\n return this.validate(data, projectSchema);\n }\n\n /**\n * Update an existing project\n */\n async update(id: number, input: UpdateProject): Promise<Project> {\n // Validate input\n const validatedInput = this.validate(input, updateProjectSchema);\n\n const data = await this.http\n .patch(`api/projects/${id}`, { json: validatedInput })\n .json();\n\n return this.validate(data, projectSchema);\n }\n\n /**\n * Delete a project\n */\n async delete(id: number): Promise<void> {\n await this.http.delete(`api/projects/${id}`);\n }\n}\n","import { z } from 'zod';\nimport { issueSchema } from '../schemas/index.js';\nimport type { Issue } from '../types/index.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Releases API resource — data scoped to a specific release.\n */\nexport class ReleasesResource extends BaseResource {\n /**\n * Get issues first seen in a given release, most recently introduced first.\n *\n * @param projectId - Project ID\n * @param release - Release version\n * @param limit - Max issues to return (default: 10, max: 50)\n */\n async newIssues(\n projectId: number,\n release: string,\n limit?: number,\n ): Promise<Issue[]> {\n const searchParams: Record<string, string> = {};\n if (limit !== undefined) {\n searchParams.limit = limit.toString();\n }\n\n const data = await this.http\n .get(\n `api/projects/${projectId}/releases/${encodeURIComponent(release)}/new-issues`,\n { searchParams },\n )\n .json();\n\n return this.validate(data, z.array(issueSchema));\n }\n}\n","import {\n releaseHealthSchema,\n sessionSummarySchema,\n sessionTimeseriesSchema,\n} from '../schemas/session.js';\nimport type {\n ReleaseHealth,\n SessionSummary,\n SessionTimeseries,\n} from '../types/session.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Sessions API resource — release health stats.\n */\nexport class SessionsResource extends BaseResource {\n /**\n * Get per-release health stats for a project.\n * @param projectId - Project ID\n * @param period - Time window (e.g. '24h', '7d'). Defaults to '24h'.\n * @param release - Scope to a single release (all environments), computed\n * server-side. Omit to get every release in the project.\n */\n async stats(\n projectId: number,\n period?: string,\n release?: string,\n ): Promise<ReleaseHealth> {\n const searchParams: Record<string, string> = {};\n if (period) {\n searchParams.period = period;\n }\n if (release) {\n searchParams.release = release;\n }\n\n const data = await this.http\n .get(`api/projects/${projectId}/sessions/stats`, { searchParams })\n .json();\n\n return this.validate(data, releaseHealthSchema);\n }\n\n /**\n * Get project-wide session health, aggregated across all releases and environments.\n * @param projectId - Project ID\n * @param period - Time window (e.g. '24h', '7d'). Defaults to '24h'.\n */\n async summary(projectId: number, period?: string): Promise<SessionSummary> {\n const searchParams: Record<string, string> = {};\n if (period) {\n searchParams.period = period;\n }\n\n const data = await this.http\n .get(`api/projects/${projectId}/sessions/summary`, { searchParams })\n .json();\n\n return this.validate(data, sessionSummarySchema);\n }\n\n /**\n * Get a time-bucketed session trend for a project, aggregated across all\n * releases and environments.\n * @param projectId - Project ID\n * @param period - Time window (e.g. '24h', '7d'). Defaults to '24h'.\n * @param interval - Bucket width in hours (default: 1, max: 24).\n */\n async timeseries(\n projectId: number,\n period?: string,\n interval?: number,\n ): Promise<SessionTimeseries> {\n const searchParams: Record<string, string> = {};\n if (period) {\n searchParams.period = period;\n }\n if (interval !== undefined) {\n searchParams.interval = interval.toString();\n }\n\n const data = await this.http\n .get(`api/projects/${projectId}/sessions/timeseries`, { searchParams })\n .json();\n\n return this.validate(data, sessionTimeseriesSchema);\n }\n}\n","import {\n assembleResponseSchema,\n chunkUploadCapabilitySchema,\n listSourceMapsResponseSchema,\n} from '../schemas/sourcemap.js';\nimport type {\n AssembleInput,\n AssembleResponse,\n ChunkUploadCapability,\n ListSourceMapsResponse,\n} from '../types/sourcemap.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Source Maps API resource\n *\n * Implements the sentry-cli artifact bundle protocol for source map upload\n * and the project source map listing endpoint.\n */\nexport class SourceMapsResource extends BaseResource {\n /**\n * Get chunk upload capabilities for an organization.\n * Returns the upload URL, chunk size limits, and accepted artifact types.\n */\n async getChunkUploadCapability(\n orgSlug: string,\n ): Promise<ChunkUploadCapability> {\n const data = await this.http\n .get(`api/0/organizations/${orgSlug}/chunk-upload/`)\n .json();\n return this.validate(data, chunkUploadCapabilitySchema);\n }\n\n /**\n * Upload chunks as multipart/form-data, batching by `chunksPerRequest` (default 64).\n * Each part's field name must be the pre-computed SHA-1 hash of its content — the server\n * rejects mismatches with 400. Callers must supply the hash (also needed for assembleBundle).\n */\n async uploadChunks(\n orgSlug: string,\n chunks: { hash: string; data: Blob }[],\n chunksPerRequest = 64,\n ): Promise<void> {\n if (!Number.isInteger(chunksPerRequest) || chunksPerRequest <= 0) {\n throw new Error('chunksPerRequest must be a positive integer');\n }\n for (let i = 0; i < chunks.length; i += chunksPerRequest) {\n const batch = chunks.slice(i, i + chunksPerRequest);\n const form = new FormData();\n for (const chunk of batch) {\n form.append(chunk.hash, chunk.data);\n }\n await this.http.post(`api/0/organizations/${orgSlug}/chunk-upload/`, {\n body: form,\n });\n }\n }\n\n /**\n * Trigger assembly of a previously uploaded artifact bundle.\n *\n * @returns The assembly state. Poll until `state === \"ok\"` or `state === \"error\"`.\n * When `state === \"not_found\"` the `missingChunks` array lists what\n * still needs uploading via `uploadChunks`.\n */\n async assembleBundle(\n orgSlug: string,\n input: AssembleInput,\n ): Promise<AssembleResponse> {\n const data = await this.http\n .post(`api/0/organizations/${orgSlug}/artifactbundle/assemble/`, {\n json: input,\n })\n .json();\n return this.validate(data, assembleResponseSchema);\n }\n\n /**\n * List all source map files uploaded for a project.\n */\n async list(\n orgSlug: string,\n projectSlug: string,\n ): Promise<ListSourceMapsResponse> {\n const data = await this.http\n .get(`api/0/projects/${orgSlug}/${projectSlug}/files/source-maps/`)\n .json();\n return this.validate(data, listSourceMapsResponseSchema);\n }\n}\n","import { offsetPaginatedResponseSchema, spanSchema } from '../schemas/index.js';\nimport type {\n ListSpansOptions,\n OffsetPaginatedResponse,\n Span,\n} from '../types/index.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Spans API resource — the shared `spans` table (standalone \"span\" envelope\n * items AND transaction-embedded spans both live here and share this\n * response shape).\n */\nexport class SpansResource extends BaseResource {\n /**\n * List spans for a project with offset-based pagination (newest first),\n * optionally filtered by op/status/trace_id/operation_type.\n */\n async list(\n projectId: number,\n options?: ListSpansOptions,\n ): Promise<OffsetPaginatedResponse<Span>> {\n const searchParams: Record<string, string> = {};\n\n if (options?.page) {\n searchParams.page = String(options.page);\n }\n if (options?.per_page) {\n searchParams.per_page = String(options.per_page);\n }\n if (options?.op) {\n searchParams.op = options.op;\n }\n if (options?.status) {\n searchParams.status = options.status;\n }\n if (options?.trace_id) {\n searchParams.trace_id = options.trace_id;\n }\n if (options?.operation_type) {\n searchParams.operation_type = options.operation_type;\n }\n\n const data = await this.http\n .get(`api/projects/${projectId}/spans`, { searchParams })\n .json();\n\n return this.validate(data, offsetPaginatedResponseSchema(spanSchema));\n }\n}\n","import { z } from 'zod';\nimport {\n cleanupCountsSchema,\n cleanupOptionsSchema,\n projectStorageSchema,\n sourceMapGcResultSchema,\n storageSummarySchema,\n} from '../schemas/index.js';\nimport type {\n CleanupCounts,\n CleanupOptions,\n ProjectStorage,\n SourceMapGcResult,\n StorageSummary,\n} from '../types/index.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Storage API resource (admin only).\n *\n * Surfaces how much data the instance is holding and runs retention cleanups.\n */\nexport class StorageResource extends BaseResource {\n /**\n * Get the instance-wide storage summary: row counts per data category, the\n * whole-DB size, and exact source-map weight.\n */\n async getSummary(): Promise<StorageSummary> {\n const data = await this.http.get('api/storage/summary').json();\n return this.validate(data, storageSummarySchema);\n }\n\n /**\n * Get the per-project storage breakdown (one row per project, including\n * empty ones).\n */\n async getProjects(): Promise<ProjectStorage[]> {\n const data = await this.http.get('api/storage/projects').json();\n return this.validate(data, z.array(projectStorageSchema));\n }\n\n /**\n * Dry-run: count the rows a cleanup would remove. Mutates nothing — use it to\n * confirm impact before {@link executeCleanup}.\n */\n async previewCleanup(options: CleanupOptions): Promise<CleanupCounts> {\n const json = cleanupOptionsSchema.parse(options);\n const data = await this.http\n .post('api/storage/cleanup/preview', { json })\n .json();\n return this.validate(data, cleanupCountsSchema);\n }\n\n /**\n * Execute a cleanup: delete data older than `older_than_days` (optionally\n * scoped to one project) and remove any issue left with zero events.\n */\n async executeCleanup(options: CleanupOptions): Promise<CleanupCounts> {\n const json = cleanupOptionsSchema.parse(options);\n const data = await this.http.post('api/storage/cleanup', { json }).json();\n return this.validate(data, cleanupCountsSchema);\n }\n\n /**\n * Dry-run for {@link gcSourceMaps}: count the orphaned source-map files and\n * bytes a GC would reclaim. Mutates nothing.\n */\n async previewGcSourceMaps(): Promise<SourceMapGcResult> {\n const data = await this.http\n .post('api/storage/source-maps/gc/preview')\n .json();\n return this.validate(data, sourceMapGcResultSchema);\n }\n\n /**\n * Garbage-collect orphaned source maps: files no longer referenced by any\n * upload, removed from the DB and unlinked from disk. Safe — never touches\n * referenced files.\n */\n async gcSourceMaps(): Promise<SourceMapGcResult> {\n const data = await this.http.post('api/storage/source-maps/gc').json();\n return this.validate(data, sourceMapGcResultSchema);\n }\n}\n","import { teamMemberSchema, updateUserRoleSchema } from '../schemas/index.js';\nimport type { GlobalRole, TeamMember } from '../types/index.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Team API resource\n * Manages the global user roster and their global roles (admin only).\n */\nexport class TeamResource extends BaseResource {\n /**\n * List all team members (users)\n */\n async list(): Promise<TeamMember[]> {\n const data = await this.http.get('api/team').json();\n return this.validate(data, teamMemberSchema.array());\n }\n\n /**\n * Change a user's global role\n * @param userId - ID of the user to update\n * @param role - New global role to assign\n */\n async updateRole(userId: number, role: GlobalRole): Promise<void> {\n const body = this.validate({ role }, updateUserRoleSchema);\n await this.http.patch(`api/team/${userId}/role`, { json: body });\n }\n\n /**\n * Permanently remove a user from the instance.\n * @param userId - ID of the user to delete\n */\n async remove(userId: number): Promise<void> {\n await this.http.delete(`api/team/${userId}`);\n }\n}\n","import {\n authTokenCreatedSchema,\n authTokenSchema,\n createAuthTokenSchema,\n} from '../schemas/index.js';\nimport type {\n AuthToken,\n AuthTokenCreated,\n CreateAuthToken,\n} from '../types/index.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Auth Tokens API resource\n */\nexport class TokensResource extends BaseResource {\n /**\n * List all auth tokens (masked)\n */\n async list(): Promise<AuthToken[]> {\n const data = await this.http.get('api/tokens').json();\n return this.validate(data, authTokenSchema.array());\n }\n\n /**\n * Get a single auth token by ID (full token value).\n *\n * Previously returned a masked version, but the server now returns the\n * complete token for GET /api/tokens/{id}.\n */\n async get(id: number): Promise<AuthTokenCreated> {\n const data = await this.http.get(`api/tokens/${id}`).json();\n return this.validate(data, authTokenCreatedSchema);\n }\n\n /**\n * Create a new auth token\n * Note: The full token is only returned once during creation\n */\n async create(input: CreateAuthToken): Promise<AuthTokenCreated> {\n // Validate input\n const validatedInput = this.validate(input, createAuthTokenSchema);\n\n const data = await this.http\n .post('api/tokens', { json: validatedInput })\n .json();\n\n return this.validate(data, authTokenCreatedSchema);\n }\n\n /**\n * Delete an auth token\n */\n async delete(id: number): Promise<void> {\n await this.http.delete(`api/tokens/${id}`);\n }\n}\n","import { z } from 'zod';\nimport {\n offsetPaginatedResponseSchema,\n spanSchema,\n transactionDetailSchema,\n transactionSchema,\n transactionStatsSchema,\n} from '../schemas/index.js';\nimport type {\n ListTransactionsOptions,\n OffsetPaginatedResponse,\n Span,\n Transaction,\n TransactionDetail,\n TransactionStats,\n} from '../types/index.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Transactions API resource\n */\nexport class TransactionsResource extends BaseResource {\n /**\n * List transactions for a project with offset-based pagination (newest first)\n */\n async list(\n projectId: number,\n options?: ListTransactionsOptions,\n ): Promise<OffsetPaginatedResponse<Transaction>> {\n const searchParams: Record<string, string> = {};\n\n if (options?.page) {\n searchParams.page = String(options.page);\n }\n if (options?.per_page) {\n searchParams.per_page = String(options.per_page);\n }\n if (options?.name) {\n searchParams.name = options.name;\n }\n if (options?.op) {\n searchParams.op = options.op;\n }\n if (options?.status) {\n searchParams.status = options.status;\n }\n if (options?.environment) {\n searchParams.environment = options.environment;\n }\n if (options?.release) {\n searchParams.release = options.release;\n }\n\n const data = await this.http\n .get(`api/projects/${projectId}/transactions`, {\n searchParams,\n })\n .json();\n\n return this.validate(\n data,\n offsetPaginatedResponseSchema(transactionSchema),\n );\n }\n\n /**\n * Get the indexed spans extracted from a transaction, in waterfall order.\n */\n async getSpans(projectId: number, transactionId: string): Promise<Span[]> {\n const data = await this.http\n .get(`api/projects/${projectId}/transactions/${transactionId}/spans`)\n .json();\n\n return this.validate(data, z.array(spanSchema));\n }\n\n /**\n * Get aggregate performance stats (count, p50/p95/p99 latency, failure rate)\n * grouped by transaction name + op, most frequent first, with offset-based\n * pagination — same shape as the other list endpoints.\n */\n async getStats(\n projectId: number,\n options?: { page?: number; per_page?: number },\n ): Promise<OffsetPaginatedResponse<TransactionStats>> {\n const searchParams: Record<string, string> = {};\n if (options?.page) {\n searchParams.page = String(options.page);\n }\n if (options?.per_page) {\n searchParams.per_page = String(options.per_page);\n }\n\n const data = await this.http\n .get(`api/projects/${projectId}/transactions/stats`, { searchParams })\n .json();\n\n return this.validate(\n data,\n offsetPaginatedResponseSchema(transactionStatsSchema),\n );\n }\n\n /**\n * Get aggregate stats for a single (transaction name, op) group — a direct\n * lookup that works regardless of how many groups the project has. Throws\n * NotFoundError when the group has no transactions.\n */\n async getStatForGroup(\n projectId: number,\n name: string,\n op?: string,\n ): Promise<TransactionStats> {\n const searchParams: Record<string, string> = { name };\n if (op) {\n searchParams.op = op;\n }\n\n const data = await this.http\n .get(`api/projects/${projectId}/transactions/stats/group`, {\n searchParams,\n })\n .json();\n\n return this.validate(data, transactionStatsSchema);\n }\n\n /**\n * Get a single transaction by ID with its full Sentry payload (spans,\n * contexts.trace, measurements, tags) for the performance detail view.\n */\n async get(\n projectId: number,\n transactionId: string,\n ): Promise<TransactionDetail> {\n const data = await this.http\n .get(`api/projects/${projectId}/transactions/${transactionId}`)\n .json();\n\n return this.validate(data, transactionDetailSchema);\n }\n}\n","import ky, { type HTTPError, isHTTPError, type KyInstance } from 'ky';\nimport type { ClientConfig } from '../config.js';\nimport {\n AuthenticationError,\n AuthorizationError,\n BadRequestError,\n NetworkError,\n NotFoundError,\n RateLimitError,\n RustrakError,\n ServerError,\n} from '../errors/index.js';\n\nfunction transformHttpError(error: HTTPError): RustrakError {\n const { response } = error;\n const status = response.status;\n\n let errorMessage = `HTTP ${status} error`;\n const body = error.data as { error?: string; message?: string } | null;\n if (body) {\n errorMessage = body.error || body.message || errorMessage;\n }\n\n switch (status) {\n case 400:\n return new BadRequestError(errorMessage);\n case 401:\n return new AuthenticationError(errorMessage);\n case 403:\n return new AuthorizationError(errorMessage);\n case 404:\n return new NotFoundError(errorMessage);\n case 429: {\n const retryAfter = response.headers.get('Retry-After');\n return new RateLimitError(errorMessage, retryAfter ?? undefined);\n }\n case 500:\n case 502:\n case 503:\n case 504:\n return new ServerError(errorMessage, status);\n default:\n return new RustrakError(errorMessage, { statusCode: status });\n }\n}\n\nexport function createKyInstance(config: ClientConfig): KyInstance {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n ...config.headers,\n };\n\n if (config.token) {\n headers.Authorization = `Bearer ${config.token}`;\n }\n\n return ky.create({\n prefix: config.baseUrl,\n timeout: config.timeout ?? 30000,\n credentials: 'include',\n retry: {\n limit: config.maxRetries ?? 2,\n statusCodes: [408, 500, 502, 503, 504],\n methods: ['get', 'post', 'put', 'patch', 'delete'],\n },\n headers,\n hooks: {\n beforeError: [\n ({ error }) => {\n if (error.name === 'TimeoutError') {\n throw new NetworkError('Request timed out', error);\n }\n\n if (isHTTPError(error)) {\n throw transformHttpError(error);\n }\n\n throw new NetworkError(error.message, error);\n },\n ],\n },\n });\n}\n","import type { KyInstance } from 'ky';\nimport type { ClientConfig } from './config.js';\nimport {\n AgentsResource,\n AlertIntegrationsResource,\n AlertRulesResource,\n AuthResource,\n EventsResource,\n HealthResource,\n InvitationsResource,\n IssuesResource,\n LogsResource,\n MembersResource,\n ProjectsResource,\n ReleasesResource,\n SessionsResource,\n SourceMapsResource,\n SpansResource,\n StorageResource,\n TeamResource,\n TokensResource,\n TransactionsResource,\n} from './resources/index.js';\nimport { createKyInstance } from './utils/index.js';\n\n/**\n * Main Rustrak API client\n *\n * @example\n * ```typescript\n * const client = new RustrakClient({\n * baseUrl: 'http://localhost:8080',\n * token: 'your-api-token'\n * });\n *\n * // List all projects\n * const projects = await client.projects.list();\n *\n * // Get issues for a project\n * const issues = await client.issues.list(1);\n *\n * // Get events for an issue\n * const events = await client.events.list(1, 'issue-uuid');\n * ```\n */\nexport class RustrakClient {\n private readonly http: KyInstance;\n\n /**\n * Authentication API resource\n */\n public readonly auth: AuthResource;\n\n /**\n * Projects API resource\n */\n public readonly projects: ProjectsResource;\n\n /**\n * Issues API resource\n */\n public readonly issues: IssuesResource;\n\n /**\n * Events API resource\n */\n public readonly events: EventsResource;\n\n /**\n * Auth Tokens API resource\n */\n public readonly tokens: TokensResource;\n\n /**\n * Alert Integrations API resource (global credential destinations)\n */\n public readonly alertIntegrations: AlertIntegrationsResource;\n\n /**\n * Alert Rules API resource (per-project alert configuration)\n */\n public readonly alertRules: AlertRulesResource;\n\n /**\n * Source Maps API resource (sentry-cli artifact bundle upload protocol)\n */\n public readonly sourceMaps: SourceMapsResource;\n\n /**\n * Team API resource (global user roster and roles)\n */\n public readonly team: TeamResource;\n\n /**\n * Invitations API resource (pending user invitations)\n */\n public readonly invitations: InvitationsResource;\n\n /**\n * Project Members API resource (per-project membership and roles)\n */\n public readonly members: MembersResource;\n\n /**\n * Sessions API resource (release health)\n */\n public readonly sessions: SessionsResource;\n\n /**\n * Releases API resource (data scoped to a specific release)\n */\n public readonly releases: ReleasesResource;\n\n /**\n * Transactions API resource (performance monitoring)\n */\n public readonly transactions: TransactionsResource;\n\n /**\n * Logs API resource (standalone logs)\n */\n public readonly logs: LogsResource;\n\n /**\n * Spans API resource (standalone + transaction-embedded spans, shared table)\n */\n public readonly spans: SpansResource;\n\n /**\n * AI Agent Monitoring dashboard API resource\n */\n public readonly agents: AgentsResource;\n\n /**\n * Storage API resource (usage + retention cleanup, admin only)\n */\n public readonly storage: StorageResource;\n\n /**\n * Health API resource (version info)\n */\n public readonly health: HealthResource;\n\n /**\n * Create a new Rustrak API client\n *\n * @param config - Client configuration\n */\n constructor(config: ClientConfig) {\n this.http = createKyInstance(config);\n\n // Initialize resources\n this.auth = new AuthResource(this.http);\n this.projects = new ProjectsResource(this.http);\n this.issues = new IssuesResource(this.http);\n this.events = new EventsResource(this.http);\n this.tokens = new TokensResource(this.http);\n this.alertIntegrations = new AlertIntegrationsResource(this.http);\n this.alertRules = new AlertRulesResource(this.http);\n this.sourceMaps = new SourceMapsResource(this.http);\n this.team = new TeamResource(this.http);\n this.invitations = new InvitationsResource(this.http);\n this.members = new MembersResource(this.http);\n this.sessions = new SessionsResource(this.http);\n this.releases = new ReleasesResource(this.http);\n this.transactions = new TransactionsResource(this.http);\n this.logs = new LogsResource(this.http);\n this.spans = new SpansResource(this.http);\n this.agents = new AgentsResource(this.http);\n this.storage = new StorageResource(this.http);\n this.health = new HealthResource(this.http);\n }\n}\n"]}
|