@beepsdev/sdk 0.0.3

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/version.ts","../src/errors.ts","../src/http.ts","../src/resources/relay-rules.ts","../src/resources/relay.ts","../src/utils/date.ts","../src/resources/schedule.ts","../src/resources/contact-method.ts","../src/resources/alert.ts","../src/resources/integration.ts","../src/resources/member.ts","../src/client.ts"],"sourcesContent":["export { BeepsClient } from \"./client\";\nexport * from \"./types\";\nexport * from \"./errors\";\nexport { ScheduleResource } from \"./resources/schedule\";\nexport { RelayRulesResource } from \"./resources/relay-rules\";\nexport { ContactMethodResource } from \"./resources/contact-method\";\nexport { AlertResource } from \"./resources/alert\";\nexport { MemberResource } from \"./resources/member\";\nexport { formatUTCDate, isIsoZ, normalizeDateParam } from \"./utils/date\";\n","export const SDK_VERSION = \"0.0.1\";\n","export class BeepsError extends Error {\n code?: string;\n status?: number;\n requestId?: string;\n retryable?: boolean;\n cause?: unknown;\n\n constructor(\n message: string,\n options?: {\n code?: string;\n status?: number;\n requestId?: string;\n retryable?: boolean;\n cause?: unknown;\n },\n ) {\n super(message);\n this.name = \"BeepsError\";\n this.code = options?.code;\n this.status = options?.status;\n this.requestId = options?.requestId;\n this.retryable = options?.retryable ?? false;\n this.cause = options?.cause;\n }\n\n toString() {\n const parts = [\n `BeepsError`,\n this.code ? `Code=${this.code}` : null,\n this.status ? `status=${this.status}` : null,\n this.requestId ? `requestId=${this.requestId}` : null,\n this.retryable ? `retryable=true` : null,\n ].filter(Boolean);\n return `${parts.join(\" \")}: ${this.message}`;\n }\n}\n\nexport class AuthError extends BeepsError {\n constructor(\n message = \"Unauthorized\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts, status: opts?.status ?? 401 });\n this.name = \"AuthError\";\n }\n}\n\nexport class ValidationError extends BeepsError {\n details?: unknown;\n constructor(\n message = \"Validation error\",\n opts?: ConstructorParameters<typeof BeepsError>[1] & { details?: unknown },\n ) {\n super(message, { ...opts, status: opts?.status ?? 400 });\n this.name = \"ValidationError\";\n this.details = opts?.details;\n }\n}\n\nexport class NotFoundError extends BeepsError {\n constructor(\n message = \"Not found\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts, status: opts?.status ?? 404 });\n this.name = \"NotFoundError\";\n }\n}\n\nexport class RateLimitError extends BeepsError {\n constructor(\n message = \"Rate limited\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts, status: opts?.status ?? 429, retryable: true });\n this.name = \"RateLimitError\";\n }\n}\n\nexport class ServerError extends BeepsError {\n constructor(\n message = \"Server error\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts, status: opts?.status ?? 500, retryable: true });\n this.name = \"ServerError\";\n }\n}\n\nexport class NetworkError extends BeepsError {\n constructor(\n message = \"Network error\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts });\n this.name = \"NetworkError\";\n }\n}\n\nexport class HttpError extends BeepsError {\n constructor(\n message = \"HTTP error\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts });\n this.name = \"HttpError\";\n }\n}\n\nexport function mapHttpError(\n status: number,\n message: string,\n requestId?: string,\n) {\n if (status === 401 || status === 403)\n return new AuthError(message, { status, requestId });\n if (status === 400)\n return new ValidationError(message, { status, requestId });\n if (status === 404) return new NotFoundError(message, { status, requestId });\n if (status === 429) return new RateLimitError(message, { status, requestId });\n if (status >= 500) return new ServerError(message, { status, requestId });\n return new HttpError(message, { status, requestId });\n}\n","import { SDK_VERSION } from \"./version\";\nimport { BeepsError, NetworkError, mapHttpError } from \"./errors\";\nimport type { BeepsClientConfig } from \"./types\";\n\ntype FetcherConfig = Required<Pick<BeepsClientConfig, \"apiKey\">> &\n Omit<BeepsClientConfig, \"apiKey\"> & {\n baseURL: string;\n timeoutMs: number;\n retries: { attempts: number; backoffMs: number };\n };\n\nexport class HttpClient {\n private cfg: FetcherConfig;\n private _fetch: typeof fetch;\n\n constructor(config: BeepsClientConfig) {\n const baseURL = config.baseURL ?? \"https://api.beeps.dev/v0\";\n const timeoutMs = config.timeoutMs ?? 10_000;\n const retries = config.retries ?? { attempts: 2, backoffMs: 300 };\n this.cfg = { ...config, baseURL, timeoutMs, retries } as FetcherConfig;\n this._fetch = config.fetch ?? fetch;\n }\n\n async post<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>(\"POST\", path, body);\n }\n async get<T>(path: string): Promise<T> {\n return this.request<T>(\"GET\", path);\n }\n async put<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>(\"PUT\", path, body);\n }\n async patch<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>(\"PATCH\", path, body);\n }\n async delete<T>(path: string): Promise<T> {\n return this.request<T>(\"DELETE\", path);\n }\n\n private async request<T>(\n method: string,\n path: string,\n body?: unknown,\n ): Promise<T> {\n const url =\n this.cfg.baseURL.replace(/\\/+$/, \"\") + \"/\" + path.replace(/^\\/+/, \"\");\n const controller = new AbortController();\n const id = setTimeout(() => controller.abort(), this.cfg.timeoutMs);\n try {\n let attempt = 0;\n while (true) {\n try {\n const res = await this._fetch(url, {\n method,\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-Key\": this.cfg.apiKey,\n \"User-Agent\": `beepsdev-sdk/${SDK_VERSION}`,\n },\n body: body !== undefined ? JSON.stringify(body) : undefined,\n signal: controller.signal,\n });\n\n const requestId = res.headers.get(\"x-request-id\") ?? undefined;\n const isJson = (res.headers.get(\"content-type\") || \"\").includes(\n \"application/json\",\n );\n const payload = (isJson\n ? await res.json().catch(() => ({}))\n : {}) as Record<string, unknown>;\n\n if (res.ok) {\n return payload as T;\n }\n\n const msg =\n typeof payload.error === \"string\"\n ? payload.error\n : typeof payload.message === \"string\"\n ? payload.message\n : \"Request failed\";\n\n const err = mapHttpError(res.status, msg, requestId);\n if (\n this.shouldRetry(res.status) &&\n attempt < this.cfg.retries.attempts\n ) {\n attempt++;\n await this.sleep(this.jitterBackoff(attempt));\n continue;\n }\n throw err;\n } catch (e) {\n if (e instanceof BeepsError) {\n throw e;\n }\n if (e instanceof Error && e.name === \"AbortError\") {\n throw new NetworkError(\"Request timed out\", { cause: e });\n }\n if (e instanceof TypeError) {\n if (attempt < this.cfg.retries.attempts) {\n attempt++;\n await this.sleep(this.jitterBackoff(attempt));\n continue;\n }\n throw new NetworkError(\"Network error\", { cause: e });\n }\n throw e;\n }\n }\n } finally {\n clearTimeout(id);\n }\n }\n\n private shouldRetry(status: number) {\n if (status === 429) return true;\n if (status >= 500 && status !== 501 && status !== 505) return true;\n return false;\n }\n\n private jitterBackoff(attempt: number) {\n const base = this.cfg.retries.backoffMs * Math.pow(2, attempt - 1);\n const jitter = Math.random() * 100;\n return base + jitter;\n }\n\n private sleep(ms: number) {\n return new Promise((r) => setTimeout(r, ms));\n }\n}\n","import type {\n CreateRelayRuleInput,\n UpdateRelayRuleInput,\n RelayRule,\n ListRelayRulesParams,\n ReorderRelayRulesInput,\n Result,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class RelayRulesResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(relayId: string, params?: ListRelayRulesParams): Promise<RelayRule[]> {\n const qs = new URLSearchParams();\n if (params?.enabled !== undefined) {\n qs.set(\"enabled\", params.enabled.toString());\n }\n if (params?.ruleType) {\n qs.set(\"ruleType\", params.ruleType);\n }\n const path = qs.toString()\n ? `/relay/${relayId}/rules?${qs.toString()}`\n : `/relay/${relayId}/rules`;\n const res = await this.http.get<{ rules: RelayRule[] }>(path);\n return res.rules;\n }\n\n async create(relayId: string, input: CreateRelayRuleInput): Promise<RelayRule> {\n const res = await this.http.post<{ rule: RelayRule }>(`/relay/${relayId}/rules`, input);\n return res.rule;\n }\n\n async get(relayId: string, ruleId: string): Promise<RelayRule> {\n const res = await this.http.get<{ rule: RelayRule }>(`/relay/${relayId}/rules/${ruleId}`);\n return res.rule;\n }\n\n async update(relayId: string, ruleId: string, input: UpdateRelayRuleInput): Promise<RelayRule> {\n const res = await this.http.put<{ rule: RelayRule }>(`/relay/${relayId}/rules/${ruleId}`, input);\n return res.rule;\n }\n\n async delete(relayId: string, ruleId: string): Promise<{ success: boolean }> {\n const res = await this.http.delete<{ success: boolean }>(`/relay/${relayId}/rules/${ruleId}`);\n return res;\n }\n\n async reorder(relayId: string, input: ReorderRelayRulesInput): Promise<RelayRule[]> {\n const res = await this.http.put<{ rules: RelayRule[] }>(`/relay/${relayId}/rules/reorder`, input);\n return res.rules;\n }\n\n // Safe versions that return Result<T> instead of throwing\n async listSafe(relayId: string, params?: ListRelayRulesParams): Promise<Result<RelayRule[]>> {\n try {\n const data = await this.list(relayId, params);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async createSafe(relayId: string, input: CreateRelayRuleInput): Promise<Result<RelayRule>> {\n try {\n const data = await this.create(relayId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getSafe(relayId: string, ruleId: string): Promise<Result<RelayRule>> {\n try {\n const data = await this.get(relayId, ruleId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async updateSafe(relayId: string, ruleId: string, input: UpdateRelayRuleInput): Promise<Result<RelayRule>> {\n try {\n const data = await this.update(relayId, ruleId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async deleteSafe(relayId: string, ruleId: string): Promise<Result<{ success: boolean }>> {\n try {\n const data = await this.delete(relayId, ruleId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async reorderSafe(relayId: string, input: ReorderRelayRulesInput): Promise<Result<RelayRule[]>> {\n try {\n const data = await this.reorder(relayId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}","import type {\n CreateRelayInput,\n Relay,\n RelayLintInput,\n RelayLintResult,\n RelaySimulationInput,\n RelaySimulationResult,\n Result,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\nimport { RelayRulesResource } from \"./relay-rules\";\n\nexport class RelayResource {\n private http: HttpClient;\n rules: RelayRulesResource;\n\n constructor(http: HttpClient) {\n this.http = http;\n this.rules = new RelayRulesResource(http);\n }\n\n async create(input: CreateRelayInput): Promise<Relay> {\n const res = await this.http.post<{ relay: Relay }>(\"/relay\", input);\n return res.relay;\n }\n\n async list(): Promise<Relay[]> {\n const res = await this.http.get<{ relays: Relay[] }>(\"/relay\");\n return res.relays;\n }\n\n async lint(relayId: string, input: RelayLintInput = {}): Promise<RelayLintResult> {\n const res = await this.http.post<RelayLintResult>(\n `/relay/${relayId}/lint`,\n input,\n );\n return res;\n }\n\n async simulate(\n relayId: string,\n input: RelaySimulationInput,\n ): Promise<RelaySimulationResult> {\n const res = await this.http.post<RelaySimulationResult>(\n `/relay/${relayId}/simulate`,\n input,\n );\n return res;\n }\n\n async createSafe(input: CreateRelayInput): Promise<Result<Relay>> {\n try {\n const data = await this.create(input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async lintSafe(\n relayId: string,\n input: RelayLintInput = {},\n ): Promise<Result<RelayLintResult>> {\n try {\n const data = await this.lint(relayId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async simulateSafe(\n relayId: string,\n input: RelaySimulationInput,\n ): Promise<Result<RelaySimulationResult>> {\n try {\n const data = await this.simulate(relayId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","/**\n * Formats a Date object as an ISO 8601 timestamp with Z suffix (UTC).\n * Example: \"2024-01-29T00:00:00.000Z\"\n */\nexport function formatUTCDate(date: Date): string {\n return date.toISOString();\n}\n\n/**\n * Validates that a string is a valid ISO 8601 timestamp with Z suffix.\n * Returns true if the string ends with \"Z\" and can be parsed as a valid date.\n */\nexport function isIsoZ(value: string): boolean {\n return value.endsWith(\"Z\") && !isNaN(Date.parse(value));\n}\n\n/**\n * Validates and normalizes a date parameter to an ISO 8601 string with Z suffix.\n * Accepts either a Date object or a Z-suffixed ISO string.\n * Throws an error if the input is invalid.\n */\nexport function normalizeDateParam(date: Date | string): string {\n if (date instanceof Date) {\n return formatUTCDate(date);\n }\n \n if (typeof date === \"string\") {\n if (!isIsoZ(date)) {\n throw new Error(\n `Invalid date format. Date must be a valid ISO 8601 timestamp with Z suffix (e.g., \"2024-01-29T00:00:00.000Z\"). Received: \"${date}\"`\n );\n }\n return date;\n }\n \n throw new Error(\n `Invalid date type. Expected Date object or ISO 8601 string with Z suffix, received: ${typeof date}`\n );\n}\n","import type {\n CreateScheduleInput,\n Schedule,\n AddScheduleMemberInput,\n ScheduleMember,\n ScheduleAssignment,\n GetAssignmentsParams,\n BeepsUser,\n Result,\n CreateScheduleOverrideInput,\n UpdateScheduleOverrideInput,\n ListScheduleOverridesParams,\n ScheduleOverride,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\nimport { normalizeDateParam } from \"../utils/date\";\n\nexport class ScheduleResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async create(input: CreateScheduleInput): Promise<Schedule> {\n const res = await this.http.post<{ schedule: Schedule }>(\"/schedule\", input);\n return res.schedule;\n }\n\n async list(): Promise<Schedule[]> {\n const res = await this.http.get<{ schedules: Schedule[] }>(\"/schedule\");\n return res.schedules;\n }\n\n async addMember(scheduleId: string, input: AddScheduleMemberInput): Promise<ScheduleMember> {\n const res = await this.http.post<{ member: ScheduleMember }>(\n `/schedule/${scheduleId}/members`,\n input,\n );\n return res.member;\n }\n\n async listMembers(scheduleId: string): Promise<ScheduleMember[]> {\n const res = await this.http.get<{ members: ScheduleMember[] }>(\n `/schedule/${scheduleId}/members`,\n );\n return res.members;\n }\n\n async listMembersSafe(scheduleId: string): Promise<Result<ScheduleMember[]>> {\n try {\n const data = await this.listMembers(scheduleId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async removeMember(scheduleId: string, userId: string): Promise<ScheduleMember> {\n const res = await this.http.delete<{ member: ScheduleMember }>(\n `/schedule/${scheduleId}/members/${userId}`,\n );\n return res.member;\n }\n\n async getAssignments(\n scheduleId: string,\n params?: GetAssignmentsParams,\n ): Promise<ScheduleAssignment[]> {\n const qs = new URLSearchParams();\n \n if (params) {\n if (params.type === \"until\") {\n qs.set(\"type\", \"until\");\n const normalizedDate = normalizeDateParam(params.date);\n qs.set(\"date\", normalizedDate);\n } else if (params.type === \"days\") {\n qs.set(\"type\", \"days\");\n qs.set(\"count\", String(params.count));\n } else {\n if (params.type) {\n qs.set(\"type\", params.type);\n }\n if (params.count !== undefined) {\n qs.set(\"count\", String(params.count));\n }\n }\n }\n \n const path = qs.toString()\n ? `/schedule/${scheduleId}/assignments?${qs.toString()}`\n : `/schedule/${scheduleId}/assignments`;\n const res = await this.http.get<{ assignments: ScheduleAssignment[] }>(path);\n return res.assignments;\n }\n\n async getOnCall(scheduleId: string): Promise<BeepsUser> {\n const res = await this.http.get<{ onCall: BeepsUser }>(\n `/schedule/${scheduleId}/on-call`\n );\n return res.onCall;\n }\n\n async getOnCallSafe(scheduleId: string): Promise<Result<BeepsUser>> {\n try {\n const data = await this.getOnCall(scheduleId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async createOverride(\n scheduleId: string,\n input: CreateScheduleOverrideInput,\n ): Promise<ScheduleOverride> {\n const body = {\n userId: input.userId,\n startAt: normalizeDateParam(input.startAt),\n endAt: normalizeDateParam(input.endAt),\n reason: input.reason,\n };\n const res = await this.http.post<{ override: ScheduleOverride }>(\n `/schedule/${scheduleId}/overrides`,\n body,\n );\n return res.override;\n }\n\n async listOverrides(\n scheduleId: string,\n params?: ListScheduleOverridesParams,\n ): Promise<ScheduleOverride[]> {\n const qs = new URLSearchParams();\n \n if (params) {\n if (params.startAt) {\n qs.set(\"startAt\", normalizeDateParam(params.startAt));\n }\n if (params.endAt) {\n qs.set(\"endAt\", normalizeDateParam(params.endAt));\n }\n }\n \n const path = qs.toString()\n ? `/schedule/${scheduleId}/overrides?${qs.toString()}`\n : `/schedule/${scheduleId}/overrides`;\n const res = await this.http.get<{ overrides: ScheduleOverride[] }>(path);\n return res.overrides;\n }\n\n async cancelOverride(\n scheduleId: string,\n overrideId: string,\n ): Promise<ScheduleOverride> {\n const res = await this.http.delete<{ override: ScheduleOverride }>(\n `/schedule/${scheduleId}/overrides/${overrideId}`,\n );\n return res.override;\n }\n\n async updateOverride(\n scheduleId: string,\n overrideId: string,\n input: UpdateScheduleOverrideInput,\n ): Promise<ScheduleOverride> {\n const body: Record<string, string | undefined> = {};\n \n if (input.startAt !== undefined) {\n body.startAt = normalizeDateParam(input.startAt);\n }\n if (input.endAt !== undefined) {\n body.endAt = normalizeDateParam(input.endAt);\n }\n if (input.reason !== undefined) {\n body.reason = input.reason;\n }\n \n const res = await this.http.patch<{ override: ScheduleOverride }>(\n `/schedule/${scheduleId}/overrides/${overrideId}`,\n body,\n );\n return res.override;\n }\n}\n","import type {\n CreateContactMethodInput,\n ContactMethod,\n ListContactMethodsParams,\n DeleteContactMethodParams,\n Result,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class ContactMethodResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(params: ListContactMethodsParams): Promise<ContactMethod[]> {\n const qs = new URLSearchParams();\n qs.set(\"userId\", params.userId);\n const res = await this.http.get<{ contactMethods: ContactMethod[] }>(\n `/contact-methods?${qs.toString()}`\n );\n return res.contactMethods;\n }\n\n async create(input: CreateContactMethodInput): Promise<ContactMethod> {\n const res = await this.http.post<{ contactMethod: ContactMethod }>(\n \"/contact-methods\",\n input\n );\n return res.contactMethod;\n }\n\n async delete(\n id: string,\n params: DeleteContactMethodParams\n ): Promise<{ success: boolean }> {\n const qs = new URLSearchParams();\n qs.set(\"userId\", params.userId);\n const res = await this.http.delete<{ success: boolean }>(\n `/contact-methods/${id}?${qs.toString()}`\n );\n return res;\n }\n\n async listSafe(\n params: ListContactMethodsParams\n ): Promise<Result<ContactMethod[]>> {\n try {\n const data = await this.list(params);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async createSafe(\n input: CreateContactMethodInput\n ): Promise<Result<ContactMethod>> {\n try {\n const data = await this.create(input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async deleteSafe(\n id: string,\n params: DeleteContactMethodParams\n ): Promise<Result<{ success: boolean }>> {\n try {\n const data = await this.delete(id, params);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type {\n Alert,\n AcknowledgeAlertInput,\n Result,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class AlertResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(): Promise<Alert[]> {\n const res = await this.http.get<{ alerts: Alert[] }>(\"/alerts\");\n return res.alerts;\n }\n\n async listActive(): Promise<Alert[]> {\n const res = await this.http.get<{ alerts: Alert[] }>(\"/alerts/active\");\n return res.alerts;\n }\n\n async listResolved(): Promise<Alert[]> {\n const res = await this.http.get<{ alerts: Alert[] }>(\"/alerts/resolved\");\n return res.alerts;\n }\n\n async get(alertId: string): Promise<Alert> {\n const res = await this.http.get<{ alert: Alert }>(`/alerts/${alertId}`);\n return res.alert;\n }\n\n async acknowledge(alertId: string, input?: AcknowledgeAlertInput): Promise<Alert> {\n const res = await this.http.post<{ alert: Alert }>(\n `/alerts/${alertId}/acknowledge`,\n input || {}\n );\n return res.alert;\n }\n\n async resolve(alertId: string): Promise<Alert> {\n const res = await this.http.post<{ alert: Alert }>(\n `/alerts/${alertId}/resolve`,\n {}\n );\n return res.alert;\n }\n\n async assign(alertId: string, userId: string): Promise<Alert> {\n const res = await this.http.post<{ alert: Alert }>(\n `/alerts/${alertId}/assign`,\n { userId }\n );\n return res.alert;\n }\n\n async listSafe(): Promise<Result<Alert[]>> {\n try {\n const data = await this.list();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async listActiveSafe(): Promise<Result<Alert[]>> {\n try {\n const data = await this.listActive();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async listResolvedSafe(): Promise<Result<Alert[]>> {\n try {\n const data = await this.listResolved();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getSafe(alertId: string): Promise<Result<Alert>> {\n try {\n const data = await this.get(alertId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async acknowledgeSafe(\n alertId: string,\n input?: AcknowledgeAlertInput\n ): Promise<Result<Alert>> {\n try {\n const data = await this.acknowledge(alertId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async resolveSafe(alertId: string): Promise<Result<Alert>> {\n try {\n const data = await this.resolve(alertId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async assignSafe(alertId: string, userId: string): Promise<Result<Alert>> {\n try {\n const data = await this.assign(alertId, userId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type {\n CreateIntegrationInput,\n UpdateIntegrationInput,\n Integration,\n Result,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class IntegrationResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(): Promise<Integration[]> {\n const res = await this.http.get<{ integrations: Integration[] }>(\"/integrations\");\n return res.integrations;\n }\n\n async create(input: CreateIntegrationInput): Promise<Integration> {\n const res = await this.http.post<{ integration: Integration }>(\"/integrations\", input);\n return res.integration;\n }\n\n async get(integrationId: string): Promise<Integration> {\n const res = await this.http.get<{ integration: Integration }>(`/integrations/${integrationId}`);\n return res.integration;\n }\n\n async update(integrationId: string, input: UpdateIntegrationInput): Promise<Integration> {\n const res = await this.http.put<{ integration: Integration }>(`/integrations/${integrationId}`, input);\n return res.integration;\n }\n\n async delete(integrationId: string): Promise<{ success: boolean }> {\n const res = await this.http.delete<{ success: boolean }>(`/integrations/${integrationId}`);\n return res;\n }\n\n async listSafe(): Promise<Result<Integration[]>> {\n try {\n const data = await this.list();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async createSafe(input: CreateIntegrationInput): Promise<Result<Integration>> {\n try {\n const data = await this.create(input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getSafe(integrationId: string): Promise<Result<Integration>> {\n try {\n const data = await this.get(integrationId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async updateSafe(integrationId: string, input: UpdateIntegrationInput): Promise<Result<Integration>> {\n try {\n const data = await this.update(integrationId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async deleteSafe(integrationId: string): Promise<Result<{ success: boolean }>> {\n try {\n const data = await this.delete(integrationId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type { OrganizationMember, Result } from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class MemberResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(): Promise<OrganizationMember[]> {\n const res = await this.http.get<{ members: OrganizationMember[] }>(\"/members\");\n return res.members;\n }\n\n async listSafe(): Promise<Result<OrganizationMember[]>> {\n try {\n const data = await this.list();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type { BeepsClientConfig } from \"./types\";\nimport { HttpClient } from \"./http\";\nimport { RelayResource } from \"./resources/relay\";\nimport { ScheduleResource } from \"./resources/schedule\";\nimport { ContactMethodResource } from \"./resources/contact-method\";\nimport { AlertResource } from \"./resources/alert\";\nimport { IntegrationResource } from \"./resources/integration\";\nimport { MemberResource } from \"./resources/member\";\n\nexport class BeepsClient {\n relay: RelayResource;\n schedule: ScheduleResource;\n contactMethod: ContactMethodResource;\n alert: AlertResource;\n integration: IntegrationResource;\n member: MemberResource;\n\n constructor(config: BeepsClientConfig) {\n if (!config.apiKey) {\n throw new Error(\"apiKey is required\");\n }\n const http = new HttpClient(config);\n this.relay = new RelayResource(http);\n this.schedule = new ScheduleResource(http);\n this.contactMethod = new ContactMethodResource(http);\n this.alert = new AlertResource(http);\n this.integration = new IntegrationResource(http);\n this.member = new MemberResource(http);\n }\n}\n"],"mappings":"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","names":[]}