@beepsdev/sdk 0.0.3 → 0.0.4
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 +52 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +23 -1
- package/dist/index.d.ts +23 -1
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -34,6 +34,7 @@ __export(index_exports, {
|
|
|
34
34
|
ScheduleResource: () => ScheduleResource,
|
|
35
35
|
ServerError: () => ServerError,
|
|
36
36
|
ValidationError: () => ValidationError,
|
|
37
|
+
WebhookResource: () => WebhookResource,
|
|
37
38
|
formatUTCDate: () => formatUTCDate,
|
|
38
39
|
isIsoZ: () => isIsoZ,
|
|
39
40
|
mapHttpError: () => mapHttpError,
|
|
@@ -766,6 +767,54 @@ var MemberResource = class {
|
|
|
766
767
|
}
|
|
767
768
|
};
|
|
768
769
|
|
|
770
|
+
// src/resources/webhook.ts
|
|
771
|
+
var WebhookResource = class {
|
|
772
|
+
http;
|
|
773
|
+
constructor(http) {
|
|
774
|
+
this.http = http;
|
|
775
|
+
}
|
|
776
|
+
async listByRelay(relayId) {
|
|
777
|
+
const res = await this.http.get(
|
|
778
|
+
`/relay/${relayId}/webhooks`
|
|
779
|
+
);
|
|
780
|
+
return res.webhooks;
|
|
781
|
+
}
|
|
782
|
+
async listByRelaySafe(relayId) {
|
|
783
|
+
try {
|
|
784
|
+
const data = await this.listByRelay(relayId);
|
|
785
|
+
return { data };
|
|
786
|
+
} catch (error) {
|
|
787
|
+
return { error };
|
|
788
|
+
}
|
|
789
|
+
}
|
|
790
|
+
async create(relayId, description) {
|
|
791
|
+
const res = await this.http.post(
|
|
792
|
+
`/relay/${relayId}/webhooks`,
|
|
793
|
+
{ description }
|
|
794
|
+
);
|
|
795
|
+
return res.webhook;
|
|
796
|
+
}
|
|
797
|
+
async createSafe(relayId, description) {
|
|
798
|
+
try {
|
|
799
|
+
const data = await this.create(relayId, description);
|
|
800
|
+
return { data };
|
|
801
|
+
} catch (error) {
|
|
802
|
+
return { error };
|
|
803
|
+
}
|
|
804
|
+
}
|
|
805
|
+
async delete(relayId, webhookId) {
|
|
806
|
+
await this.http.delete(`/relay/${relayId}/webhooks/${webhookId}`);
|
|
807
|
+
}
|
|
808
|
+
async deleteSafe(relayId, webhookId) {
|
|
809
|
+
try {
|
|
810
|
+
await this.delete(relayId, webhookId);
|
|
811
|
+
return { data: void 0 };
|
|
812
|
+
} catch (error) {
|
|
813
|
+
return { error };
|
|
814
|
+
}
|
|
815
|
+
}
|
|
816
|
+
};
|
|
817
|
+
|
|
769
818
|
// src/client.ts
|
|
770
819
|
var BeepsClient = class {
|
|
771
820
|
relay;
|
|
@@ -774,6 +823,7 @@ var BeepsClient = class {
|
|
|
774
823
|
alert;
|
|
775
824
|
integration;
|
|
776
825
|
member;
|
|
826
|
+
webhook;
|
|
777
827
|
constructor(config) {
|
|
778
828
|
if (!config.apiKey) {
|
|
779
829
|
throw new Error("apiKey is required");
|
|
@@ -785,6 +835,7 @@ var BeepsClient = class {
|
|
|
785
835
|
this.alert = new AlertResource(http);
|
|
786
836
|
this.integration = new IntegrationResource(http);
|
|
787
837
|
this.member = new MemberResource(http);
|
|
838
|
+
this.webhook = new WebhookResource(http);
|
|
788
839
|
}
|
|
789
840
|
};
|
|
790
841
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -803,6 +854,7 @@ var BeepsClient = class {
|
|
|
803
854
|
ScheduleResource,
|
|
804
855
|
ServerError,
|
|
805
856
|
ValidationError,
|
|
857
|
+
WebhookResource,
|
|
806
858
|
formatUTCDate,
|
|
807
859
|
isIsoZ,
|
|
808
860
|
mapHttpError,
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +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":[]}
|
|
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/resources/webhook.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 { WebhookResource } from \"./resources/webhook\";\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 { Webhook, Result } from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class WebhookResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async listByRelay(relayId: string): Promise<Webhook[]> {\n const res = await this.http.get<{ webhooks: Webhook[] }>(\n `/relay/${relayId}/webhooks`,\n );\n return res.webhooks;\n }\n\n async listByRelaySafe(relayId: string): Promise<Result<Webhook[]>> {\n try {\n const data = await this.listByRelay(relayId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async create(\n relayId: string,\n description?: string,\n ): Promise<Webhook> {\n const res = await this.http.post<{ webhook: Webhook }>(\n `/relay/${relayId}/webhooks`,\n { description },\n );\n return res.webhook;\n }\n\n async createSafe(\n relayId: string,\n description?: string,\n ): Promise<Result<Webhook>> {\n try {\n const data = await this.create(relayId, description);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async delete(relayId: string, webhookId: string): Promise<void> {\n await this.http.delete(`/relay/${relayId}/webhooks/${webhookId}`);\n }\n\n async deleteSafe(relayId: string, webhookId: string): Promise<Result<void>> {\n try {\n await this.delete(relayId, webhookId);\n return { data: undefined };\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\";\nimport { WebhookResource } from \"./resources/webhook\";\n\nexport class BeepsClient {\n relay: RelayResource;\n schedule: ScheduleResource;\n contactMethod: ContactMethodResource;\n alert: AlertResource;\n integration: IntegrationResource;\n member: MemberResource;\n webhook: WebhookResource;\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 this.webhook = new WebhookResource(http);\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/index.d.cts
CHANGED
|
@@ -88,6 +88,16 @@ type Relay = {
|
|
|
88
88
|
createdAt: string;
|
|
89
89
|
updatedAt: string;
|
|
90
90
|
};
|
|
91
|
+
type Webhook = {
|
|
92
|
+
id: string;
|
|
93
|
+
webhookKey: string;
|
|
94
|
+
relayId: string;
|
|
95
|
+
organizationId: string;
|
|
96
|
+
description?: string | null;
|
|
97
|
+
enabled: boolean;
|
|
98
|
+
createdAt: string;
|
|
99
|
+
updatedAt: string;
|
|
100
|
+
};
|
|
91
101
|
type CreateScheduleInput = {
|
|
92
102
|
name: string;
|
|
93
103
|
relayId: string;
|
|
@@ -541,6 +551,17 @@ declare class MemberResource {
|
|
|
541
551
|
listSafe(): Promise<Result<OrganizationMember[]>>;
|
|
542
552
|
}
|
|
543
553
|
|
|
554
|
+
declare class WebhookResource {
|
|
555
|
+
private http;
|
|
556
|
+
constructor(http: HttpClient);
|
|
557
|
+
listByRelay(relayId: string): Promise<Webhook[]>;
|
|
558
|
+
listByRelaySafe(relayId: string): Promise<Result<Webhook[]>>;
|
|
559
|
+
create(relayId: string, description?: string): Promise<Webhook>;
|
|
560
|
+
createSafe(relayId: string, description?: string): Promise<Result<Webhook>>;
|
|
561
|
+
delete(relayId: string, webhookId: string): Promise<void>;
|
|
562
|
+
deleteSafe(relayId: string, webhookId: string): Promise<Result<void>>;
|
|
563
|
+
}
|
|
564
|
+
|
|
544
565
|
declare class BeepsClient {
|
|
545
566
|
relay: RelayResource;
|
|
546
567
|
schedule: ScheduleResource;
|
|
@@ -548,6 +569,7 @@ declare class BeepsClient {
|
|
|
548
569
|
alert: AlertResource;
|
|
549
570
|
integration: IntegrationResource;
|
|
550
571
|
member: MemberResource;
|
|
572
|
+
webhook: WebhookResource;
|
|
551
573
|
constructor(config: BeepsClientConfig);
|
|
552
574
|
}
|
|
553
575
|
|
|
@@ -609,4 +631,4 @@ declare function isIsoZ(value: string): boolean;
|
|
|
609
631
|
*/
|
|
610
632
|
declare function normalizeDateParam(date: Date | string): string;
|
|
611
633
|
|
|
612
|
-
export { type AcknowledgeAlertInput, type AddScheduleMemberInput, type AgentConfig, type Alert, AlertResource, type AlertSeverity, AuthError, type BeepsAgentRuleConfig, BeepsClient, type BeepsClientConfig, type BeepsConfig, BeepsError, type BeepsIntegrationConfig, type BeepsRelayConfig, type BeepsRelayRuleConfig, type BeepsScheduleConfig, type BeepsScheduleMemberConfig, type BeepsScheduleNotifyRuleConfig, type BeepsUser, type BeepsWebhookRuleConfig, type ContactMethod, ContactMethodResource, type ContactMethodTransport, type CreateContactMethodInput, type CreateIntegrationInput, type CreateRelayInput, type CreateRelayRuleInput, type CreateScheduleInput, type CreateScheduleOverrideInput, type DeleteContactMethodParams, type GetAssignmentsParams, HttpError, type Integration, type IntegrationProvider, type ListContactMethodsParams, type ListRelayRulesParams, type ListScheduleOverridesParams, MemberResource, NetworkError, NotFoundError, type OrganizationMember, RateLimitError, type Relay, type RelayLintInput, type RelayLintIssue, type RelayLintResult, type RelayLintSeverity, type RelayRule, type RelayRuleConfig, type RelayRuleType, RelayRulesResource, type RelaySimulationAgentStep, type RelaySimulationAlertInput, type RelaySimulationAlertPreview, type RelaySimulationContactMethod, type RelaySimulationGroup, type RelaySimulationInput, type RelaySimulationOnCallUser, type RelaySimulationResult, type RelaySimulationScheduleStep, type RelaySimulationStep, type RelaySimulationUnknownStep, type RelaySimulationWebhookStep, type ReorderRelayRulesInput, type Result, type Schedule, type ScheduleAssignment, type ScheduleMember, type ScheduleNotifyConfig, type ScheduleOverride, ScheduleResource, ServerError, type UpdateIntegrationInput, type UpdateRelayRuleInput, type UpdateScheduleOverrideInput, ValidationError, type WebhookConfig, formatUTCDate, isIsoZ, mapHttpError, normalizeDateParam };
|
|
634
|
+
export { type AcknowledgeAlertInput, type AddScheduleMemberInput, type AgentConfig, type Alert, AlertResource, type AlertSeverity, AuthError, type BeepsAgentRuleConfig, BeepsClient, type BeepsClientConfig, type BeepsConfig, BeepsError, type BeepsIntegrationConfig, type BeepsRelayConfig, type BeepsRelayRuleConfig, type BeepsScheduleConfig, type BeepsScheduleMemberConfig, type BeepsScheduleNotifyRuleConfig, type BeepsUser, type BeepsWebhookRuleConfig, type ContactMethod, ContactMethodResource, type ContactMethodTransport, type CreateContactMethodInput, type CreateIntegrationInput, type CreateRelayInput, type CreateRelayRuleInput, type CreateScheduleInput, type CreateScheduleOverrideInput, type DeleteContactMethodParams, type GetAssignmentsParams, HttpError, type Integration, type IntegrationProvider, type ListContactMethodsParams, type ListRelayRulesParams, type ListScheduleOverridesParams, MemberResource, NetworkError, NotFoundError, type OrganizationMember, RateLimitError, type Relay, type RelayLintInput, type RelayLintIssue, type RelayLintResult, type RelayLintSeverity, type RelayRule, type RelayRuleConfig, type RelayRuleType, RelayRulesResource, type RelaySimulationAgentStep, type RelaySimulationAlertInput, type RelaySimulationAlertPreview, type RelaySimulationContactMethod, type RelaySimulationGroup, type RelaySimulationInput, type RelaySimulationOnCallUser, type RelaySimulationResult, type RelaySimulationScheduleStep, type RelaySimulationStep, type RelaySimulationUnknownStep, type RelaySimulationWebhookStep, type ReorderRelayRulesInput, type Result, type Schedule, type ScheduleAssignment, type ScheduleMember, type ScheduleNotifyConfig, type ScheduleOverride, ScheduleResource, ServerError, type UpdateIntegrationInput, type UpdateRelayRuleInput, type UpdateScheduleOverrideInput, ValidationError, type Webhook, type WebhookConfig, WebhookResource, formatUTCDate, isIsoZ, mapHttpError, normalizeDateParam };
|
package/dist/index.d.ts
CHANGED
|
@@ -88,6 +88,16 @@ type Relay = {
|
|
|
88
88
|
createdAt: string;
|
|
89
89
|
updatedAt: string;
|
|
90
90
|
};
|
|
91
|
+
type Webhook = {
|
|
92
|
+
id: string;
|
|
93
|
+
webhookKey: string;
|
|
94
|
+
relayId: string;
|
|
95
|
+
organizationId: string;
|
|
96
|
+
description?: string | null;
|
|
97
|
+
enabled: boolean;
|
|
98
|
+
createdAt: string;
|
|
99
|
+
updatedAt: string;
|
|
100
|
+
};
|
|
91
101
|
type CreateScheduleInput = {
|
|
92
102
|
name: string;
|
|
93
103
|
relayId: string;
|
|
@@ -541,6 +551,17 @@ declare class MemberResource {
|
|
|
541
551
|
listSafe(): Promise<Result<OrganizationMember[]>>;
|
|
542
552
|
}
|
|
543
553
|
|
|
554
|
+
declare class WebhookResource {
|
|
555
|
+
private http;
|
|
556
|
+
constructor(http: HttpClient);
|
|
557
|
+
listByRelay(relayId: string): Promise<Webhook[]>;
|
|
558
|
+
listByRelaySafe(relayId: string): Promise<Result<Webhook[]>>;
|
|
559
|
+
create(relayId: string, description?: string): Promise<Webhook>;
|
|
560
|
+
createSafe(relayId: string, description?: string): Promise<Result<Webhook>>;
|
|
561
|
+
delete(relayId: string, webhookId: string): Promise<void>;
|
|
562
|
+
deleteSafe(relayId: string, webhookId: string): Promise<Result<void>>;
|
|
563
|
+
}
|
|
564
|
+
|
|
544
565
|
declare class BeepsClient {
|
|
545
566
|
relay: RelayResource;
|
|
546
567
|
schedule: ScheduleResource;
|
|
@@ -548,6 +569,7 @@ declare class BeepsClient {
|
|
|
548
569
|
alert: AlertResource;
|
|
549
570
|
integration: IntegrationResource;
|
|
550
571
|
member: MemberResource;
|
|
572
|
+
webhook: WebhookResource;
|
|
551
573
|
constructor(config: BeepsClientConfig);
|
|
552
574
|
}
|
|
553
575
|
|
|
@@ -609,4 +631,4 @@ declare function isIsoZ(value: string): boolean;
|
|
|
609
631
|
*/
|
|
610
632
|
declare function normalizeDateParam(date: Date | string): string;
|
|
611
633
|
|
|
612
|
-
export { type AcknowledgeAlertInput, type AddScheduleMemberInput, type AgentConfig, type Alert, AlertResource, type AlertSeverity, AuthError, type BeepsAgentRuleConfig, BeepsClient, type BeepsClientConfig, type BeepsConfig, BeepsError, type BeepsIntegrationConfig, type BeepsRelayConfig, type BeepsRelayRuleConfig, type BeepsScheduleConfig, type BeepsScheduleMemberConfig, type BeepsScheduleNotifyRuleConfig, type BeepsUser, type BeepsWebhookRuleConfig, type ContactMethod, ContactMethodResource, type ContactMethodTransport, type CreateContactMethodInput, type CreateIntegrationInput, type CreateRelayInput, type CreateRelayRuleInput, type CreateScheduleInput, type CreateScheduleOverrideInput, type DeleteContactMethodParams, type GetAssignmentsParams, HttpError, type Integration, type IntegrationProvider, type ListContactMethodsParams, type ListRelayRulesParams, type ListScheduleOverridesParams, MemberResource, NetworkError, NotFoundError, type OrganizationMember, RateLimitError, type Relay, type RelayLintInput, type RelayLintIssue, type RelayLintResult, type RelayLintSeverity, type RelayRule, type RelayRuleConfig, type RelayRuleType, RelayRulesResource, type RelaySimulationAgentStep, type RelaySimulationAlertInput, type RelaySimulationAlertPreview, type RelaySimulationContactMethod, type RelaySimulationGroup, type RelaySimulationInput, type RelaySimulationOnCallUser, type RelaySimulationResult, type RelaySimulationScheduleStep, type RelaySimulationStep, type RelaySimulationUnknownStep, type RelaySimulationWebhookStep, type ReorderRelayRulesInput, type Result, type Schedule, type ScheduleAssignment, type ScheduleMember, type ScheduleNotifyConfig, type ScheduleOverride, ScheduleResource, ServerError, type UpdateIntegrationInput, type UpdateRelayRuleInput, type UpdateScheduleOverrideInput, ValidationError, type WebhookConfig, formatUTCDate, isIsoZ, mapHttpError, normalizeDateParam };
|
|
634
|
+
export { type AcknowledgeAlertInput, type AddScheduleMemberInput, type AgentConfig, type Alert, AlertResource, type AlertSeverity, AuthError, type BeepsAgentRuleConfig, BeepsClient, type BeepsClientConfig, type BeepsConfig, BeepsError, type BeepsIntegrationConfig, type BeepsRelayConfig, type BeepsRelayRuleConfig, type BeepsScheduleConfig, type BeepsScheduleMemberConfig, type BeepsScheduleNotifyRuleConfig, type BeepsUser, type BeepsWebhookRuleConfig, type ContactMethod, ContactMethodResource, type ContactMethodTransport, type CreateContactMethodInput, type CreateIntegrationInput, type CreateRelayInput, type CreateRelayRuleInput, type CreateScheduleInput, type CreateScheduleOverrideInput, type DeleteContactMethodParams, type GetAssignmentsParams, HttpError, type Integration, type IntegrationProvider, type ListContactMethodsParams, type ListRelayRulesParams, type ListScheduleOverridesParams, MemberResource, NetworkError, NotFoundError, type OrganizationMember, RateLimitError, type Relay, type RelayLintInput, type RelayLintIssue, type RelayLintResult, type RelayLintSeverity, type RelayRule, type RelayRuleConfig, type RelayRuleType, RelayRulesResource, type RelaySimulationAgentStep, type RelaySimulationAlertInput, type RelaySimulationAlertPreview, type RelaySimulationContactMethod, type RelaySimulationGroup, type RelaySimulationInput, type RelaySimulationOnCallUser, type RelaySimulationResult, type RelaySimulationScheduleStep, type RelaySimulationStep, type RelaySimulationUnknownStep, type RelaySimulationWebhookStep, type ReorderRelayRulesInput, type Result, type Schedule, type ScheduleAssignment, type ScheduleMember, type ScheduleNotifyConfig, type ScheduleOverride, ScheduleResource, ServerError, type UpdateIntegrationInput, type UpdateRelayRuleInput, type UpdateScheduleOverrideInput, ValidationError, type Webhook, type WebhookConfig, WebhookResource, formatUTCDate, isIsoZ, mapHttpError, normalizeDateParam };
|
package/dist/index.js
CHANGED
|
@@ -723,6 +723,54 @@ var MemberResource = class {
|
|
|
723
723
|
}
|
|
724
724
|
};
|
|
725
725
|
|
|
726
|
+
// src/resources/webhook.ts
|
|
727
|
+
var WebhookResource = class {
|
|
728
|
+
http;
|
|
729
|
+
constructor(http) {
|
|
730
|
+
this.http = http;
|
|
731
|
+
}
|
|
732
|
+
async listByRelay(relayId) {
|
|
733
|
+
const res = await this.http.get(
|
|
734
|
+
`/relay/${relayId}/webhooks`
|
|
735
|
+
);
|
|
736
|
+
return res.webhooks;
|
|
737
|
+
}
|
|
738
|
+
async listByRelaySafe(relayId) {
|
|
739
|
+
try {
|
|
740
|
+
const data = await this.listByRelay(relayId);
|
|
741
|
+
return { data };
|
|
742
|
+
} catch (error) {
|
|
743
|
+
return { error };
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
async create(relayId, description) {
|
|
747
|
+
const res = await this.http.post(
|
|
748
|
+
`/relay/${relayId}/webhooks`,
|
|
749
|
+
{ description }
|
|
750
|
+
);
|
|
751
|
+
return res.webhook;
|
|
752
|
+
}
|
|
753
|
+
async createSafe(relayId, description) {
|
|
754
|
+
try {
|
|
755
|
+
const data = await this.create(relayId, description);
|
|
756
|
+
return { data };
|
|
757
|
+
} catch (error) {
|
|
758
|
+
return { error };
|
|
759
|
+
}
|
|
760
|
+
}
|
|
761
|
+
async delete(relayId, webhookId) {
|
|
762
|
+
await this.http.delete(`/relay/${relayId}/webhooks/${webhookId}`);
|
|
763
|
+
}
|
|
764
|
+
async deleteSafe(relayId, webhookId) {
|
|
765
|
+
try {
|
|
766
|
+
await this.delete(relayId, webhookId);
|
|
767
|
+
return { data: void 0 };
|
|
768
|
+
} catch (error) {
|
|
769
|
+
return { error };
|
|
770
|
+
}
|
|
771
|
+
}
|
|
772
|
+
};
|
|
773
|
+
|
|
726
774
|
// src/client.ts
|
|
727
775
|
var BeepsClient = class {
|
|
728
776
|
relay;
|
|
@@ -731,6 +779,7 @@ var BeepsClient = class {
|
|
|
731
779
|
alert;
|
|
732
780
|
integration;
|
|
733
781
|
member;
|
|
782
|
+
webhook;
|
|
734
783
|
constructor(config) {
|
|
735
784
|
if (!config.apiKey) {
|
|
736
785
|
throw new Error("apiKey is required");
|
|
@@ -742,6 +791,7 @@ var BeepsClient = class {
|
|
|
742
791
|
this.alert = new AlertResource(http);
|
|
743
792
|
this.integration = new IntegrationResource(http);
|
|
744
793
|
this.member = new MemberResource(http);
|
|
794
|
+
this.webhook = new WebhookResource(http);
|
|
745
795
|
}
|
|
746
796
|
};
|
|
747
797
|
export {
|
|
@@ -759,6 +809,7 @@ export {
|
|
|
759
809
|
ScheduleResource,
|
|
760
810
|
ServerError,
|
|
761
811
|
ValidationError,
|
|
812
|
+
WebhookResource,
|
|
762
813
|
formatUTCDate,
|
|
763
814
|
isIsoZ,
|
|
764
815
|
mapHttpError,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../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 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":[]}
|
|
1
|
+
{"version":3,"sources":["../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/resources/webhook.ts","../src/client.ts"],"sourcesContent":["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 { Webhook, Result } from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class WebhookResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async listByRelay(relayId: string): Promise<Webhook[]> {\n const res = await this.http.get<{ webhooks: Webhook[] }>(\n `/relay/${relayId}/webhooks`,\n );\n return res.webhooks;\n }\n\n async listByRelaySafe(relayId: string): Promise<Result<Webhook[]>> {\n try {\n const data = await this.listByRelay(relayId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async create(\n relayId: string,\n description?: string,\n ): Promise<Webhook> {\n const res = await this.http.post<{ webhook: Webhook }>(\n `/relay/${relayId}/webhooks`,\n { description },\n );\n return res.webhook;\n }\n\n async createSafe(\n relayId: string,\n description?: string,\n ): Promise<Result<Webhook>> {\n try {\n const data = await this.create(relayId, description);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async delete(relayId: string, webhookId: string): Promise<void> {\n await this.http.delete(`/relay/${relayId}/webhooks/${webhookId}`);\n }\n\n async deleteSafe(relayId: string, webhookId: string): Promise<Result<void>> {\n try {\n await this.delete(relayId, webhookId);\n return { data: undefined };\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\";\nimport { WebhookResource } from \"./resources/webhook\";\n\nexport class BeepsClient {\n relay: RelayResource;\n schedule: ScheduleResource;\n contactMethod: ContactMethodResource;\n alert: AlertResource;\n integration: IntegrationResource;\n member: MemberResource;\n webhook: WebhookResource;\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 this.webhook = new WebhookResource(http);\n }\n}\n"],"mappings":"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","names":[]}
|