@rustrak/client 0.2.1 → 0.2.2
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 +54 -44
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +49 -25
- package/dist/index.d.ts +49 -25
- package/dist/index.js +54 -44
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.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-channels.ts","../src/resources/alert-rules.ts","../src/schemas/user.ts","../src/resources/auth.ts","../src/schemas/event.ts","../src/schemas/issue.ts","../src/schemas/project.ts","../src/schemas/sourcemap.ts","../src/schemas/token.ts","../src/resources/events.ts","../src/resources/issues.ts","../src/resources/projects.ts","../src/resources/sourcemaps.ts","../src/resources/tokens.ts","../src/utils/http.ts","../src/client.ts"],"names":["z"],"mappings":"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","file":"index.js","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(['digest_order', 'last_seen']);\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\n */\nexport const uuidSchema = z.string().uuid();\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 * Channel type enum\n */\nexport const channelTypeSchema = z.enum(['webhook', 'email', 'slack']);\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 * Notification channel response schema\n */\nexport const notificationChannelSchema = z.object({\n id: z.number().int(),\n name: z.string(),\n channel_type: channelTypeSchema,\n config: 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/**\n * Create notification channel request schema\n */\nexport const createNotificationChannelSchema = z.object({\n name: z.string().min(1),\n channel_type: channelTypeSchema,\n config: z.record(z.string(), z.unknown()),\n is_enabled: z.boolean().optional(),\n});\n\n/**\n * Update notification channel request schema\n */\nexport const updateNotificationChannelSchema = z.object({\n name: z.string().min(1).optional(),\n config: z.record(z.string(), z.unknown()).optional(),\n is_enabled: z.boolean().optional(),\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 channel_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 channel_ids: z.array(z.number().int()).min(1),\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 channel_ids: z.array(z.number().int()).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 channel_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 * 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 createNotificationChannelSchema,\n notificationChannelSchema,\n testChannelResponseSchema,\n updateNotificationChannelSchema,\n} from '../schemas/alert.js';\nimport type {\n CreateNotificationChannel,\n NotificationChannel,\n TestChannelResponse,\n UpdateNotificationChannel,\n} from '../types/alert.js';\nimport { BaseResource } from './base.js';\n\n/**\n * Alert Channels API resource (global notification destinations)\n */\nexport class AlertChannelsResource extends BaseResource {\n /**\n * List all notification channels\n */\n async list(): Promise<NotificationChannel[]> {\n const data = await this.http.get('api/alert-channels').json();\n return this.validate(data, z.array(notificationChannelSchema));\n }\n\n /**\n * Get a single notification channel by ID\n */\n async get(id: number): Promise<NotificationChannel> {\n const data = await this.http.get(`api/alert-channels/${id}`).json();\n return this.validate(data, notificationChannelSchema);\n }\n\n /**\n * Create a new notification channel\n */\n async create(input: CreateNotificationChannel): Promise<NotificationChannel> {\n const validatedInput = this.validate(\n input,\n createNotificationChannelSchema,\n );\n\n const data = await this.http\n .post('api/alert-channels', { json: validatedInput })\n .json();\n\n return this.validate(data, notificationChannelSchema);\n }\n\n /**\n * Update an existing notification channel\n */\n async update(\n id: number,\n input: UpdateNotificationChannel,\n ): Promise<NotificationChannel> {\n const validatedInput = this.validate(\n input,\n updateNotificationChannelSchema,\n );\n\n const data = await this.http\n .patch(`api/alert-channels/${id}`, { json: validatedInput })\n .json();\n\n return this.validate(data, notificationChannelSchema);\n }\n\n /**\n * Delete a notification channel\n */\n async delete(id: number): Promise<void> {\n await this.http.delete(`api/alert-channels/${id}`);\n }\n\n /**\n * Send a test notification to verify channel configuration\n */\n async test(id: number): Promise<TestChannelResponse> {\n const data = await this.http.post(`api/alert-channels/${id}/test`).json();\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';\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 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(8),\n});\n\n/**\n * Register request schema\n */\nexport const registerRequestSchema = z.object({\n email: z.string().email(),\n password: z.string().min(8),\n});\n","import {\n authResponseSchema,\n loginRequestSchema,\n registerRequestSchema,\n userSchema,\n} from '../schemas/user.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","import { z } from 'zod';\nimport { dateTimeSchema, 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: uuidSchema,\n issue_id: uuidSchema,\n title: z.string(),\n timestamp: dateTimeSchema,\n level: z.string(),\n platform: z.string(),\n release: z.string(),\n environment: 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: uuidSchema,\n issue_id: uuidSchema,\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 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 * 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 first_seen: dateTimeSchema,\n last_seen: dateTimeSchema,\n event_count: z.number().int(),\n level: z.string().nullable(),\n platform: z.string().nullable(),\n is_resolved: z.boolean(),\n is_muted: z.boolean(),\n});\n\n/**\n * Update issue state request schema\n */\nexport const updateIssueStateSchema = z.object({\n is_resolved: z.boolean().optional(),\n is_muted: z.boolean().optional(),\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});\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';\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';\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 {\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 {\n issueSchema,\n offsetPaginatedResponseSchema,\n updateIssueStateSchema,\n} from '../schemas/index.js';\nimport type {\n Issue,\n ListIssuesOptions,\n OffsetPaginatedResponse,\n UpdateIssueState,\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\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 (resolve, mute, etc.)\n */\n async updateState(\n projectId: number,\n issueId: string,\n input: UpdateIssueState,\n ): Promise<Issue> {\n // Validate input\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 * 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","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 {\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 {\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 (masked)\n */\n async get(id: number): Promise<AuthToken> {\n const data = await this.http.get(`api/tokens/${id}`).json();\n return this.validate(data, authTokenSchema);\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 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 AlertChannelsResource,\n AlertRulesResource,\n AuthResource,\n EventsResource,\n IssuesResource,\n ProjectsResource,\n SourceMapsResource,\n TokensResource,\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 Channels API resource (global notification destinations)\n */\n public readonly alertChannels: AlertChannelsResource;\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 * 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.alertChannels = new AlertChannelsResource(this.http);\n this.alertRules = new AlertRulesResource(this.http);\n this.sourceMaps = new SourceMapsResource(this.http);\n }\n}\n"]}
|
|
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/user.ts","../src/resources/auth.ts","../src/schemas/event.ts","../src/schemas/issue.ts","../src/schemas/project.ts","../src/schemas/sourcemap.ts","../src/schemas/token.ts","../src/resources/events.ts","../src/resources/issues.ts","../src/resources/projects.ts","../src/resources/sourcemaps.ts","../src/resources/tokens.ts","../src/utils/http.ts","../src/client.ts"],"names":["z"],"mappings":"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","file":"index.js","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(['digest_order', 'last_seen']);\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\n */\nexport const uuidSchema = z.string().uuid();\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';\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 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(8),\n});\n\n/**\n * Register request schema\n */\nexport const registerRequestSchema = z.object({\n email: z.string().email(),\n password: z.string().min(8),\n});\n","import {\n authResponseSchema,\n loginRequestSchema,\n registerRequestSchema,\n userSchema,\n} from '../schemas/user.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","import { z } from 'zod';\nimport { dateTimeSchema, 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: uuidSchema,\n issue_id: uuidSchema,\n title: z.string(),\n timestamp: dateTimeSchema,\n level: z.string(),\n platform: z.string(),\n release: z.string(),\n environment: 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: uuidSchema,\n issue_id: uuidSchema,\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 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 * 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 first_seen: dateTimeSchema,\n last_seen: dateTimeSchema,\n event_count: z.number().int(),\n level: z.string().nullable(),\n platform: z.string().nullable(),\n is_resolved: z.boolean(),\n is_muted: z.boolean(),\n});\n\n/**\n * Update issue state request schema\n */\nexport const updateIssueStateSchema = z.object({\n is_resolved: z.boolean().optional(),\n is_muted: z.boolean().optional(),\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});\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';\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';\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 {\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 {\n issueSchema,\n offsetPaginatedResponseSchema,\n updateIssueStateSchema,\n} from '../schemas/index.js';\nimport type {\n Issue,\n ListIssuesOptions,\n OffsetPaginatedResponse,\n UpdateIssueState,\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\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 (resolve, mute, etc.)\n */\n async updateState(\n projectId: number,\n issueId: string,\n input: UpdateIssueState,\n ): Promise<Issue> {\n // Validate input\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 * 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","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 {\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 {\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 (masked)\n */\n async get(id: number): Promise<AuthToken> {\n const data = await this.http.get(`api/tokens/${id}`).json();\n return this.validate(data, authTokenSchema);\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 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 IssuesResource,\n ProjectsResource,\n SourceMapsResource,\n TokensResource,\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 * 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 }\n}\n"]}
|
package/package.json
CHANGED