@pantechdynamic/sdk 0.1.0 → 0.2.0
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/CHANGELOG.md +19 -0
- package/README.md +28 -4
- package/dist/index.cjs +147 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1819 -156
- package/dist/index.d.ts +1819 -156
- package/dist/index.js +147 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/errors.ts","../src/pagination.ts","../src/resource.ts","../src/util.ts","../src/resources/billing.ts","../src/resources/catalog.ts","../src/wait.ts","../src/orders.ts","../src/resources/databases.ts","../src/resources/instances.ts","../src/resources/kubernetes.ts","../src/resources/load-balancers.ts","../src/resources/me.ts","../src/resources/networks.ts","../src/resources/operations.ts","../src/resources/public-ips.ts","../src/resources/security-groups.ts","../src/resources/snapshots.ts","../src/resources/ssh-keys.ts","../src/resources/usage.ts","../src/resources/volumes.ts","../src/resources/webhooks.ts","../src/version.ts","../src/client.ts","../src/webhooks.ts"],"names":["path","orderId","operationId","value"],"mappings":"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","file":"index.js","sourcesContent":["// Errors thrown by the SDK. Every one is a PantechError, so one `instanceof`\n// check catches them all; branch on `code`, never on the message.\n\n/** One invalid field of a `422 VALIDATION_FAILED`. */\nexport interface FieldError {\n /** The request field, e.g. `plan_slug`. */\n field: string;\n /** A stable code for the field's problem, e.g. `REQUIRED`. */\n code: string;\n /** What the field must be. */\n message: string;\n}\n\nexport interface PantechErrorInit {\n status?: number;\n code?: string;\n title?: string;\n detail?: string;\n requestId?: string;\n errors?: FieldError[];\n type?: string;\n headers?: Headers;\n cause?: unknown;\n}\n\n/** The base class of every error the SDK throws. */\nexport class PantechError extends Error {\n override name = \"PantechError\";\n /** The HTTP status, when the API answered. */\n readonly status: number | undefined;\n /** The problem's stable code, e.g. `INSUFFICIENT_CREDIT`. */\n readonly code: string | undefined;\n /** A short summary of the problem class. */\n readonly title: string | undefined;\n /** What went wrong and what to do next, in plain language. Safe to show to your users. */\n readonly detail: string | undefined;\n /** The request's id. Quote it to support. */\n readonly requestId: string | undefined;\n /** The invalid fields of a `422 VALIDATION_FAILED`; empty otherwise. */\n readonly errors: FieldError[];\n /** A URI naming the problem class. */\n readonly type: string | undefined;\n /** The response headers, when the API answered. */\n readonly headers: Headers | undefined;\n\n constructor(message: string, init: PantechErrorInit = {}) {\n super(message, init.cause === undefined ? undefined : { cause: init.cause });\n this.status = init.status;\n this.code = init.code;\n this.title = init.title;\n this.detail = init.detail;\n this.requestId = init.requestId;\n this.errors = init.errors ?? [];\n this.type = init.type;\n this.headers = init.headers;\n }\n}\n\n/** `400`: the request was malformed, e.g. a missing header or a bad filter. */\nexport class BadRequestError extends PantechError {\n override name = \"BadRequestError\";\n}\n/** `401`: the API key is missing, wrong, expired or revoked. */\nexport class AuthenticationError extends PantechError {\n override name = \"AuthenticationError\";\n}\n/** `402`: the change costs more than the organization can pay, e.g. `INSUFFICIENT_CREDIT`. */\nexport class PaymentRequiredError extends PantechError {\n override name = \"PaymentRequiredError\";\n}\n/** `403`: the key may not do this, e.g. `INSUFFICIENT_SCOPE` or `AI_APPS_DISABLED`. */\nexport class PermissionDeniedError extends PantechError {\n override name = \"PermissionDeniedError\";\n}\n/** `404`: no such resource in your organization. */\nexport class NotFoundError extends PantechError {\n override name = \"NotFoundError\";\n}\n/** `409`: the resource is in a state that does not allow this, or a name is taken. */\nexport class ConflictError extends PantechError {\n override name = \"ConflictError\";\n}\n/** `422 VALIDATION_FAILED`: see `errors` for each invalid field. */\nexport class ValidationError extends PantechError {\n override name = \"ValidationError\";\n}\n/** `429`: a rate limit was hit and the retries ran out. */\nexport class RateLimitError extends PantechError {\n override name = \"RateLimitError\";\n /** Seconds the API asked to wait (`Retry-After`), when it said. */\n readonly retryAfterSeconds: number | undefined;\n constructor(message: string, init: PantechErrorInit & { retryAfterSeconds?: number } = {}) {\n super(message, init);\n this.retryAfterSeconds = init.retryAfterSeconds;\n }\n}\n/** `5xx`: something failed on the API's side and the retries ran out. */\nexport class InternalServerError extends PantechError {\n override name = \"InternalServerError\";\n}\n\n/** The API could not be reached, or the connection dropped. */\nexport class APIConnectionError extends PantechError {\n override name = \"APIConnectionError\";\n}\n/** The API did not answer within the timeout. */\nexport class APITimeoutError extends APIConnectionError {\n override name = \"APITimeoutError\";\n}\n\n/** An operation the SDK waited for finished with `status: failed`. */\nexport class OperationFailedError extends PantechError {\n override name = \"OperationFailedError\";\n /** The failed operation, as `GET /operations/{id}` returned it. */\n readonly operation: unknown;\n constructor(message: string, operation: unknown, init: PantechErrorInit = {}) {\n super(message, init);\n this.operation = operation;\n }\n}\n/** An instance or database order the SDK waited for ended `failed` or `payment_failed`. */\nexport class OrderFailedError extends PantechError {\n override name = \"OrderFailedError\";\n /** The failed order. */\n readonly order: unknown;\n constructor(message: string, order: unknown, init: PantechErrorInit = {}) {\n super(message, init);\n this.order = order;\n }\n}\n/** Waiting for an operation or order took longer than `timeoutMs`. */\nexport class WaitTimeoutError extends PantechError {\n override name = \"WaitTimeoutError\";\n}\n/** A webhook delivery's `Pantech-Signature` did not verify. */\nexport class WebhookVerificationError extends PantechError {\n override name = \"WebhookVerificationError\";\n}\n\n/** True when `err` is a PantechError, and, if `code` is given, carries that code. */\nexport function isPantechError(err: unknown, code?: string): err is PantechError {\n return err instanceof PantechError && (code === undefined || err.code === code);\n}\n\nconst STATUS_TEXT: Record<number, string> = {\n 400: \"Bad request\",\n 401: \"Unauthorized\",\n 402: \"Payment required\",\n 403: \"Forbidden\",\n 404: \"Not found\",\n 405: \"Method not allowed\",\n 409: \"Conflict\",\n 413: \"Request too large\",\n 415: \"Unsupported media type\",\n 422: \"Validation failed\",\n 429: \"Too many requests\",\n 500: \"Internal server error\",\n 502: \"Bad gateway\",\n 503: \"Service unavailable\",\n 504: \"Gateway timeout\",\n};\n\ninterface ProblemBody {\n type?: unknown;\n title?: unknown;\n code?: unknown;\n detail?: unknown;\n request_id?: unknown;\n errors?: unknown;\n}\n\nconst str = (v: unknown): string | undefined => (typeof v === \"string\" && v !== \"\" ? v : undefined);\n\nfunction fieldErrors(v: unknown): FieldError[] {\n if (!Array.isArray(v)) return [];\n return v\n .filter((e): e is Record<string, unknown> => typeof e === \"object\" && e !== null)\n .map((e) => ({ field: String(e.field ?? \"\"), code: String(e.code ?? \"\"), message: String(e.message ?? \"\") }));\n}\n\n/**\n * Builds the error for a non-2xx response from its problem document. A body\n * that is not one (a proxy's HTML error page, say) is never shown: the status\n * says what happened.\n */\nexport function errorFromResponse(\n status: number,\n headers: Headers,\n bodyText: string,\n retryAfterSeconds?: number,\n): PantechError {\n let problem: ProblemBody | undefined;\n try {\n const parsed: unknown = JSON.parse(bodyText);\n if (typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed)) problem = parsed as ProblemBody;\n } catch {\n problem = undefined;\n }\n const code = str(problem?.code);\n const title = str(problem?.title);\n let detail = str(problem?.detail);\n const errors = fieldErrors(problem?.errors);\n const requestId = str(problem?.request_id) ?? headers.get(\"x-request-id\") ?? undefined;\n const isProblem = code !== undefined || detail !== undefined || title !== undefined || errors.length > 0;\n\n if (!isProblem) {\n const text = STATUS_TEXT[status] ?? `HTTP ${status}`;\n detail =\n status >= 500\n ? `The Pantech API is temporarily unavailable (${status} ${text}). Try again in a moment.`\n : `The Pantech API refused the request (${status} ${text}).`;\n }\n\n let message = detail ?? title ?? STATUS_TEXT[status] ?? `HTTP ${status}`;\n const tags = [code, requestId ? `request ${requestId}` : undefined].filter(Boolean);\n if (tags.length > 0) message += ` (${tags.join(\", \")})`;\n\n const init: PantechErrorInit = {\n status,\n code,\n title,\n detail,\n requestId,\n errors,\n type: str(problem?.type),\n headers,\n };\n switch (true) {\n case status === 400:\n return new BadRequestError(message, init);\n case status === 401:\n return new AuthenticationError(message, init);\n case status === 402:\n return new PaymentRequiredError(message, init);\n case status === 403:\n return new PermissionDeniedError(message, init);\n case status === 404:\n return new NotFoundError(message, init);\n case status === 409:\n return new ConflictError(message, init);\n case status === 422:\n return new ValidationError(message, init);\n case status === 429:\n return new RateLimitError(message, { ...init, retryAfterSeconds });\n case status >= 500:\n return new InternalServerError(message, init);\n default:\n return new PantechError(message, init);\n }\n}\n","// Cursor pagination: lists return `{ data, next_cursor }`; pass `next_cursor`\n// back as `cursor` until it is null.\n\n/** One page of a list. */\nexport interface Page<T> {\n data: T[];\n next_cursor?: string | null;\n}\n\n/**\n * Yields every item of every page, fetching the next page only when the\n * caller gets that far. Stops at a null cursor, or at a cursor already seen.\n */\nexport async function* paginate<T>(\n fetchPage: (cursor: string | undefined) => Promise<Page<T>>,\n startCursor?: string | null,\n): AsyncGenerator<T, void, undefined> {\n let cursor = startCursor ?? undefined;\n const seen = new Set<string>();\n for (;;) {\n const page = await fetchPage(cursor);\n for (const item of page.data ?? []) yield item;\n const next = page.next_cursor;\n if (!next || seen.has(next)) return;\n seen.add(next);\n cursor = next;\n }\n}\n","import type { APIRequest, HTTPMethod, Pantech, RequestOptions } from \"./client.js\";\nimport { type Page, paginate } from \"./pagination.js\";\n\ntype Extra = Pick<APIRequest, \"noRetry\" | \"responseType\">;\n\n/** The base of every resource: a thin, typed layer over Pantech.request. */\nexport abstract class APIResource {\n protected readonly _client: Pantech;\n\n constructor(client: Pantech) {\n this._client = client;\n }\n\n protected _request<T>(\n method: HTTPMethod,\n path: string,\n init: { query?: object; body?: unknown } & Extra = {},\n options?: RequestOptions,\n ): Promise<T> {\n return this._client.request<T>({ method, path, ...init }, options);\n }\n\n protected _get<T>(path: string, query?: object, options?: RequestOptions): Promise<T> {\n return this._request<T>(\"GET\", path, { query }, options);\n }\n\n protected _post<T>(path: string, body?: unknown, options?: RequestOptions, extra?: Extra): Promise<T> {\n return this._request<T>(\"POST\", path, { body, ...extra }, options);\n }\n\n protected _put<T>(path: string, body: unknown, options?: RequestOptions): Promise<T> {\n return this._request<T>(\"PUT\", path, { body }, options);\n }\n\n protected _patch<T>(path: string, body: unknown, options?: RequestOptions): Promise<T> {\n return this._request<T>(\"PATCH\", path, { body }, options);\n }\n\n protected _delete<T>(path: string, options?: RequestOptions, extra?: Extra): Promise<T> {\n return this._request<T>(\"DELETE\", path, extra, options);\n }\n\n /** Every item of a list, following `next_cursor` page by page. */\n protected _listAll<T>(\n path: string,\n params: object | undefined,\n options?: RequestOptions,\n ): AsyncGenerator<T, void, undefined> {\n return paginate<T>((cursor) => this._get<Page<T>>(path, { ...params, cursor }, options));\n }\n}\n","// Small runtime helpers with no dependencies, safe on every runtime.\n\nimport { PantechError } from \"./errors.js\";\n\n/** A random UUIDv4, from Web Crypto where the runtime has it. */\nexport function uuid(): string {\n const c = (globalThis as { crypto?: Crypto }).crypto;\n if (typeof c?.randomUUID === \"function\") return c.randomUUID();\n const b = new Uint8Array(16);\n if (typeof c?.getRandomValues === \"function\") {\n c.getRandomValues(b);\n } else {\n // Node.js 18 has no global Web Crypto. An Idempotency-Key only needs to\n // be unique per change, not secret.\n for (let i = 0; i < 16; i++) b[i] = Math.floor(Math.random() * 256);\n }\n b[6] = ((b[6] as number) & 0x0f) | 0x40;\n b[8] = ((b[8] as number) & 0x3f) | 0x80;\n const h = Array.from(b, (x) => x.toString(16).padStart(2, \"0\")).join(\"\");\n return `${h.slice(0, 8)}-${h.slice(8, 12)}-${h.slice(12, 16)}-${h.slice(16, 20)}-${h.slice(20)}`;\n}\n\n/** Reads an environment variable where the runtime has `process.env`; undefined elsewhere. */\nexport function readEnv(name: string): string | undefined {\n try {\n const proc = (globalThis as { process?: { env?: Record<string, string | undefined> } }).process;\n const value = proc?.env?.[name]?.trim();\n return value ? value : undefined;\n } catch {\n // Deno without --allow-env throws on access.\n return undefined;\n }\n}\n\n/** Resolves after `ms`, or rejects with the signal's reason when it aborts first. */\nexport function sleep(ms: number, signal?: AbortSignal): Promise<void> {\n return new Promise((resolve, reject) => {\n if (signal?.aborted) {\n reject(signal.reason);\n return;\n }\n const onAbort = () => {\n clearTimeout(timer);\n reject(signal?.reason);\n };\n const timer = setTimeout(() => {\n signal?.removeEventListener(\"abort\", onAbort);\n resolve();\n }, ms);\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n });\n}\n\n/**\n * Builds a path from a template, percent-encoding each id. An empty id is\n * refused, so `delete(\"\")` can never reach a different endpoint.\n */\nexport function path(strings: TemplateStringsArray, ...ids: string[]): string {\n let out = strings[0] ?? \"\";\n ids.forEach((id, i) => {\n if (typeof id !== \"string\" || id === \"\") {\n throw new PantechError(\"A resource id is required, and it must be a non-empty string.\");\n }\n out += encodeURIComponent(id) + (strings[i + 1] ?? \"\");\n });\n return out;\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { APIResource } from \"../resource.js\";\nimport type { BodyOf as B, ItemOf as I, ListParams as L, ListAllParams as LA, ResponseOf as R } from \"../types.js\";\nimport { path } from \"../util.js\";\n\n/** Your credit, and whether it covers your next invoice. */\nexport class Billing extends APIResource {\n readonly credit: Credit = new Credit(this._client);\n readonly receipts: Receipts = new Receipts(this._client);\n}\n\nexport class Credit extends APIResource {\n readonly purchases: CreditPurchases = new CreditPurchases(this._client);\n\n /** Your credit balance and whether it covers the next invoice. */\n get(options?: RequestOptions): Promise<R<\"getCredit\">> {\n return this._get(\"/billing/credit\", undefined, options);\n }\n}\n\nexport class CreditPurchases extends APIResource {\n /** Creates a payment link that adds credit: send its `checkout_url` to whoever pays. */\n create(body: B<\"createCreditPurchase\">, options?: RequestOptions): Promise<R<\"createCreditPurchase\">> {\n return this._post(\"/billing/credit/purchases\", body, options);\n }\n\n get(purchaseId: string, options?: RequestOptions): Promise<R<\"getCreditPurchase\">> {\n return this._get(path`/billing/credit/purchases/${purchaseId}`, undefined, options);\n }\n}\n\nexport class Receipts extends APIResource {\n list(params: L<\"listReceipts\"> = {}, options?: RequestOptions): Promise<R<\"listReceipts\">> {\n return this._get(\"/billing/receipts\", params, options);\n }\n\n listAll(params: LA<\"listReceipts\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listReceipts\">> {\n return this._listAll(\"/billing/receipts\", params, options);\n }\n\n get(receiptId: string, options?: RequestOptions): Promise<R<\"getReceipt\">> {\n return this._get(path`/billing/receipts/${receiptId}`, undefined, options);\n }\n\n /** The receipt as a PDF document. */\n getPdf(receiptId: string, options?: RequestOptions): Promise<ArrayBuffer> {\n return this._request(\"GET\", path`/billing/receipts/${receiptId}/pdf`, { responseType: \"arrayBuffer\" }, options);\n }\n}\n","// What you can buy, and what it costs.\n\nimport type { RequestOptions } from \"../client.js\";\nimport { APIResource } from \"../resource.js\";\nimport type {\n BodyOf as B,\n ItemOf as I,\n ListParams as L,\n ListAllParams as LA,\n QueryOf as Q,\n ResponseOf as R,\n} from \"../types.js\";\nimport { path } from \"../util.js\";\n\nexport class Regions extends APIResource {\n list(params: L<\"listRegions\"> = {}, options?: RequestOptions): Promise<R<\"listRegions\">> {\n return this._get(\"/regions\", params, options);\n }\n\n listAll(params: LA<\"listRegions\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listRegions\">> {\n return this._listAll(\"/regions\", params, options);\n }\n}\n\nexport class Plans extends APIResource {\n list(params: L<\"listPlans\"> = {}, options?: RequestOptions): Promise<R<\"listPlans\">> {\n return this._get(\"/plans\", params, options);\n }\n\n listAll(params: LA<\"listPlans\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listPlans\">> {\n return this._listAll(\"/plans\", params, options);\n }\n}\n\nexport class Images extends APIResource {\n list(params: L<\"listImages\"> = {}, options?: RequestOptions): Promise<R<\"listImages\">> {\n return this._get(\"/images\", params, options);\n }\n\n listAll(params: LA<\"listImages\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listImages\">> {\n return this._listAll(\"/images\", params, options);\n }\n}\n\nexport class DiskOfferings extends APIResource {\n list(params: L<\"listDiskOfferings\"> = {}, options?: RequestOptions): Promise<R<\"listDiskOfferings\">> {\n return this._get(\"/disk-offerings\", params, options);\n }\n\n listAll(params: LA<\"listDiskOfferings\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listDiskOfferings\">> {\n return this._listAll(\"/disk-offerings\", params, options);\n }\n\n /** What a volume of this offering costs. */\n quote(slug: string, params: Q<\"quoteDiskOffering\"> = {}, options?: RequestOptions): Promise<R<\"quoteDiskOffering\">> {\n return this._get(path`/disk-offerings/${slug}/quote`, params, options);\n }\n}\n\nexport class DatabaseEngines extends APIResource {\n list(params: L<\"listDatabaseEngines\"> = {}, options?: RequestOptions): Promise<R<\"listDatabaseEngines\">> {\n return this._get(\"/database-engines\", params, options);\n }\n\n listAll(params: LA<\"listDatabaseEngines\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listDatabaseEngines\">> {\n return this._listAll(\"/database-engines\", params, options);\n }\n}\n\nexport class KubernetesVersions extends APIResource {\n /** The Kubernetes versions a new cluster can run, and the zones that offer high availability. */\n list(params: Q<\"listKubernetesVersions\"> = {}, options?: RequestOptions): Promise<R<\"listKubernetesVersions\">> {\n return this._get(\"/kubernetes-versions\", params, options);\n }\n}\n\nexport class Pricing extends APIResource {\n /** Prices a set of instances, volumes and other resources. Changes nothing. */\n estimate(body: B<\"estimatePricing\">, options?: RequestOptions): Promise<R<\"estimatePricing\">> {\n return this._post(\"/pricing/estimate\", body, options);\n }\n}\n","// Polling for asynchronous changes: operations, and instance and database orders.\n\nimport { WaitTimeoutError } from \"./errors.js\";\nimport { sleep } from \"./util.js\";\n\nexport interface WaitOptions<T = unknown> {\n /** Give up after this many milliseconds. Default 20 minutes. */\n timeoutMs?: number;\n /** Milliseconds between polls. Default 2000. */\n pollIntervalMs?: number;\n /** Stops waiting (and the request in flight). */\n signal?: AbortSignal;\n /** Called with each state read while waiting. */\n onUpdate?: (value: T) => void;\n}\n\nexport const DEFAULT_WAIT_TIMEOUT_MS = 20 * 60_000;\nexport const DEFAULT_POLL_INTERVAL_MS = 2_000;\n\n/**\n * Calls `read` until `done` returns true (resolve) or throws (fail), or the\n * deadline passes.\n */\nexport async function poll<T>(\n read: () => Promise<T>,\n done: (value: T) => boolean,\n what: string,\n options: WaitOptions<T> = {},\n): Promise<T> {\n const timeoutMs = options.timeoutMs ?? DEFAULT_WAIT_TIMEOUT_MS;\n const interval = Math.max(0, options.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS);\n const deadline = Date.now() + timeoutMs;\n for (;;) {\n const value = await read();\n options.onUpdate?.(value);\n if (done(value)) return value;\n if (Date.now() + interval > deadline) {\n throw new WaitTimeoutError(\n `${what} did not finish within ${Math.round(timeoutMs / 1000)} seconds. It may still finish: check it again later.`,\n );\n }\n await sleep(interval, options.signal);\n }\n}\n","// Waiting for an instance or database order: paid, then provisioned, then\n// (by default) its create operation finished.\n\nimport type { Pantech } from \"./client.js\";\nimport { OrderFailedError } from \"./errors.js\";\nimport { DEFAULT_WAIT_TIMEOUT_MS, poll, type WaitOptions } from \"./wait.js\";\n\nexport interface OrderWaitOptions<T> extends WaitOptions<T> {\n /**\n * Also wait for the order's create operation once it is provisioned, so\n * the instance or database is ready to use. Default true.\n */\n waitForOperation?: boolean;\n}\n\ninterface OrderLike {\n status: string;\n operation_id?: string | null;\n failure_code?: string | null;\n}\n\n/** An order id, or the `202` body of a create that carries one. */\nexport type OrderRef = string | { order_id: string };\n\nexport const orderId = (ref: OrderRef): string => (typeof ref === \"string\" ? ref : ref.order_id);\n\nexport async function waitForOrder<T extends OrderLike>(\n client: Pantech,\n read: (signal?: AbortSignal) => Promise<T>,\n what: string,\n options: OrderWaitOptions<T> = {},\n): Promise<T> {\n const started = Date.now();\n const timeoutMs = options.timeoutMs ?? DEFAULT_WAIT_TIMEOUT_MS;\n const order = await poll(\n () => read(options.signal),\n (o) => {\n if (o.status === \"failed\" || o.status === \"payment_failed\") {\n const code = o.failure_code ?? o.status;\n throw new OrderFailedError(\n `${what} ${o.status === \"payment_failed\" ? \"could not be paid\" : \"failed\"} (${code}). Any payment taken is returned to your credit.`,\n o,\n { code },\n );\n }\n return o.status === \"provisioned\";\n },\n what,\n options,\n );\n if (options.waitForOperation !== false && order.operation_id) {\n await client.operations.wait(order.operation_id, {\n timeoutMs: Math.max(0, timeoutMs - (Date.now() - started)),\n pollIntervalMs: options.pollIntervalMs,\n signal: options.signal,\n });\n }\n return order;\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { type OrderRef, type OrderWaitOptions, orderId, waitForOrder } from \"../orders.js\";\nimport { APIResource } from \"../resource.js\";\nimport type { BodyOf as B, ItemOf as I, ListParams as L, ListAllParams as LA, ResponseOf as R } from \"../types.js\";\nimport { path } from \"../util.js\";\n\n/** Managed PostgreSQL, MySQL and MariaDB databases. */\nexport class Databases extends APIResource {\n /** Snapshots of a database. */\n readonly snapshots: DatabaseSnapshots = new DatabaseSnapshots(this._client);\n\n list(params: L<\"listDatabases\"> = {}, options?: RequestOptions): Promise<R<\"listDatabases\">> {\n return this._get(\"/databases\", params, options);\n }\n\n listAll(params: LA<\"listDatabases\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listDatabases\">> {\n return this._listAll(\"/databases\", params, options);\n }\n\n /**\n * Orders a database. A generated admin password is in this response only;\n * follow the order with `client.databaseOrders.wait(order)`.\n */\n create(body: B<\"createDatabase\">, options?: RequestOptions): Promise<R<\"createDatabase\">> {\n return this._post(\"/databases\", body, options);\n }\n\n get(databaseId: string, options?: RequestOptions): Promise<R<\"getDatabase\">> {\n return this._get(path`/databases/${databaseId}`, undefined, options);\n }\n\n delete(databaseId: string, options?: RequestOptions): Promise<R<\"deleteDatabase\">> {\n return this._delete(path`/databases/${databaseId}`, options);\n }\n\n /** Replaces the CIDRs allowed to connect. */\n replaceAccessRules(\n databaseId: string,\n body: B<\"replaceDatabaseAccessRules\">,\n options?: RequestOptions,\n ): Promise<R<\"replaceDatabaseAccessRules\">> {\n return this._put(path`/databases/${databaseId}/access-rules`, body, options);\n }\n\n /** Replaces the attached security groups. */\n setSecurityGroups(\n databaseId: string,\n body: B<\"setDatabaseSecurityGroups\">,\n options?: RequestOptions,\n ): Promise<R<\"setDatabaseSecurityGroups\">> {\n return this._put(path`/databases/${databaseId}/security-groups`, body, options);\n }\n\n changePassword(\n databaseId: string,\n body: B<\"changeDatabasePassword\">,\n options?: RequestOptions,\n ): Promise<R<\"changeDatabasePassword\">> {\n return this._put(path`/databases/${databaseId}/password`, body, options);\n }\n\n /** Generates a new admin password, returned in this response only. */\n resetPassword(databaseId: string, options?: RequestOptions): Promise<R<\"resetDatabasePassword\">> {\n return this._post(path`/databases/${databaseId}/reset-password`, undefined, options);\n }\n\n start(databaseId: string, options?: RequestOptions): Promise<R<\"startDatabase\">> {\n return this._post(path`/databases/${databaseId}/start`, undefined, options);\n }\n\n stop(databaseId: string, options?: RequestOptions): Promise<R<\"stopDatabase\">> {\n return this._post(path`/databases/${databaseId}/stop`, undefined, options);\n }\n\n resizeStorage(\n databaseId: string,\n body: B<\"resizeDatabaseStorage\">,\n options?: RequestOptions,\n ): Promise<R<\"resizeDatabaseStorage\">> {\n return this._post(path`/databases/${databaseId}/resize-storage`, body, options);\n }\n}\n\nexport class DatabaseSnapshots extends APIResource {\n list(\n databaseId: string,\n params: L<\"listDatabaseSnapshots\"> = {},\n options?: RequestOptions,\n ): Promise<R<\"listDatabaseSnapshots\">> {\n return this._get(path`/databases/${databaseId}/snapshots`, params, options);\n }\n\n listAll(\n databaseId: string,\n params: LA<\"listDatabaseSnapshots\"> = {},\n options?: RequestOptions,\n ): AsyncGenerator<I<\"listDatabaseSnapshots\">> {\n return this._listAll(path`/databases/${databaseId}/snapshots`, params, options);\n }\n\n create(\n databaseId: string,\n body: B<\"createDatabaseSnapshot\">,\n options?: RequestOptions,\n ): Promise<R<\"createDatabaseSnapshot\">> {\n return this._post(path`/databases/${databaseId}/snapshots`, body, options);\n }\n\n get(databaseId: string, snapshotId: string, options?: RequestOptions): Promise<R<\"getDatabaseSnapshot\">> {\n return this._get(path`/databases/${databaseId}/snapshots/${snapshotId}`, undefined, options);\n }\n\n delete(databaseId: string, snapshotId: string, options?: RequestOptions): Promise<R<\"deleteDatabaseSnapshot\">> {\n return this._delete(path`/databases/${databaseId}/snapshots/${snapshotId}`, options);\n }\n}\n\n/** How a new database is paid for and provisioned. */\nexport class DatabaseOrders extends APIResource {\n list(params: L<\"listDatabaseOrders\"> = {}, options?: RequestOptions): Promise<R<\"listDatabaseOrders\">> {\n return this._get(\"/database-orders\", params, options);\n }\n\n listAll(params: LA<\"listDatabaseOrders\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listDatabaseOrders\">> {\n return this._listAll(\"/database-orders\", params, options);\n }\n\n get(orderId: string, options?: RequestOptions): Promise<R<\"getDatabaseOrder\">> {\n return this._get(path`/database-orders/${orderId}`, undefined, options);\n }\n\n /**\n * Polls the order until it is provisioned and (by default) the database's\n * create operation has finished. Rejects with OrderFailedError or\n * OperationFailedError. Accepts an id or the body `databases.create` returned.\n */\n wait(ref: OrderRef, options: OrderWaitOptions<R<\"getDatabaseOrder\">> = {}): Promise<R<\"getDatabaseOrder\">> {\n const id = orderId(ref);\n return waitForOrder(this._client, (signal) => this.get(id, { signal }), `Database order ${id}`, options);\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { type OrderRef, type OrderWaitOptions, orderId, waitForOrder } from \"../orders.js\";\nimport { APIResource } from \"../resource.js\";\nimport type {\n BodyOf as B,\n ItemOf as I,\n ListParams as L,\n ListAllParams as LA,\n QueryOf as Q,\n ResponseOf as R,\n} from \"../types.js\";\nimport { path } from \"../util.js\";\n\n/** Virtual machines: create, power, change, delete. */\nexport class Instances extends APIResource {\n /** Snapshots of an instance's root disk. */\n readonly snapshots: InstanceSnapshots = new InstanceSnapshots(this._client);\n /** Short-lived SSH access grants through the browser terminal relay. */\n readonly sshAccess: InstanceSshAccess = new InstanceSshAccess(this._client);\n\n /** One page of your instances. */\n list(params: L<\"listInstances\"> = {}, options?: RequestOptions): Promise<R<\"listInstances\">> {\n return this._get(\"/instances\", params, options);\n }\n\n /** Every instance: `for await (const vm of client.instances.listAll())`. */\n listAll(params: LA<\"listInstances\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listInstances\">> {\n return this._listAll(\"/instances\", params, options);\n }\n\n /**\n * Orders an instance. The initial payment is taken first, then it is\n * provisioned: follow the order with `client.instanceOrders.wait(order)`.\n */\n create(body: B<\"createInstance\">, options?: RequestOptions): Promise<R<\"createInstance\">> {\n return this._post(\"/instances\", body, options);\n }\n\n get(instanceId: string, options?: RequestOptions): Promise<R<\"getInstance\">> {\n return this._get(path`/instances/${instanceId}`, undefined, options);\n }\n\n delete(instanceId: string, options?: RequestOptions): Promise<R<\"deleteInstance\">> {\n return this._delete(path`/instances/${instanceId}`, options);\n }\n\n start(instanceId: string, options?: RequestOptions): Promise<R<\"startInstance\">> {\n return this._post(path`/instances/${instanceId}/start`, undefined, options);\n }\n\n stop(instanceId: string, options?: RequestOptions): Promise<R<\"stopInstance\">> {\n return this._post(path`/instances/${instanceId}/stop`, undefined, options);\n }\n\n reboot(instanceId: string, options?: RequestOptions): Promise<R<\"rebootInstance\">> {\n return this._post(path`/instances/${instanceId}/reboot`, undefined, options);\n }\n\n /** Reinstalls the root disk from an image. Everything on it is lost. */\n rebuild(instanceId: string, body: B<\"rebuildInstance\">, options?: RequestOptions): Promise<R<\"rebuildInstance\">> {\n return this._post(path`/instances/${instanceId}/rebuild`, body, options);\n }\n\n rename(instanceId: string, body: B<\"renameInstance\">, options?: RequestOptions): Promise<R<\"renameInstance\">> {\n return this._post(path`/instances/${instanceId}/rename`, body, options);\n }\n\n /** Moves the instance to a bigger plan. */\n resize(instanceId: string, body: B<\"resizeInstance\">, options?: RequestOptions): Promise<R<\"resizeInstance\">> {\n return this._post(path`/instances/${instanceId}/resize`, body, options);\n }\n\n changeSshKey(\n instanceId: string,\n body: B<\"changeInstanceSSHKey\">,\n options?: RequestOptions,\n ): Promise<R<\"changeInstanceSSHKey\">> {\n return this._post(path`/instances/${instanceId}/change-ssh-key`, body, options);\n }\n\n /** Restores the root disk from a snapshot. Changes since then are lost. */\n restore(instanceId: string, body: B<\"restoreInstance\">, options?: RequestOptions): Promise<R<\"restoreInstance\">> {\n return this._post(path`/instances/${instanceId}/restore`, body, options);\n }\n\n changeSecurityGroup(\n instanceId: string,\n body: B<\"changeInstanceSecurityGroup\">,\n options?: RequestOptions,\n ): Promise<R<\"changeInstanceSecurityGroup\">> {\n return this._put(path`/instances/${instanceId}/security-group`, body, options);\n }\n\n attachPrivateNetwork(instanceId: string, options?: RequestOptions): Promise<R<\"attachInstancePrivateNetwork\">> {\n return this._post(path`/instances/${instanceId}/private-network`, undefined, options);\n }\n\n detachPrivateNetwork(instanceId: string, options?: RequestOptions): Promise<R<\"detachInstancePrivateNetwork\">> {\n return this._delete(path`/instances/${instanceId}/private-network`, options);\n }\n\n /** A short-lived URL to the instance's console. Sent once: the API does not replay it. */\n openConsole(instanceId: string, options?: RequestOptions): Promise<R<\"openInstanceConsole\">> {\n return this._post(path`/instances/${instanceId}/console`, undefined, options, { noRetry: true });\n }\n\n /** Issues a credential that unlocks the instance's encrypted volumes. Sent once: the API does not replay it. */\n issueVolumeKeyCredential(instanceId: string, options?: RequestOptions): Promise<R<\"issueVolumeKeyCredential\">> {\n return this._post(path`/instances/${instanceId}/volume-key-credential`, undefined, options, { noRetry: true });\n }\n\n metrics(\n instanceId: string,\n params: Q<\"getInstanceMetrics\"> = {},\n options?: RequestOptions,\n ): Promise<R<\"getInstanceMetrics\">> {\n return this._get(path`/instances/${instanceId}/metrics`, params, options);\n }\n\n usage(instanceId: string, options?: RequestOptions): Promise<R<\"getInstanceUsage\">> {\n return this._get(path`/instances/${instanceId}/usage`, undefined, options);\n }\n\n /** One page of the volumes attached to the instance. */\n listVolumes(\n instanceId: string,\n params: L<\"listInstanceVolumes\"> = {},\n options?: RequestOptions,\n ): Promise<R<\"listInstanceVolumes\">> {\n return this._get(path`/instances/${instanceId}/volumes`, params, options);\n }\n\n listAllVolumes(\n instanceId: string,\n params: LA<\"listInstanceVolumes\"> = {},\n options?: RequestOptions,\n ): AsyncGenerator<I<\"listInstanceVolumes\">> {\n return this._listAll(path`/instances/${instanceId}/volumes`, params, options);\n }\n\n getSnapshotSchedule(instanceId: string, options?: RequestOptions): Promise<R<\"getInstanceSnapshotSchedule\">> {\n return this._get(path`/instances/${instanceId}/snapshot-schedule`, undefined, options);\n }\n\n setSnapshotSchedule(\n instanceId: string,\n body: B<\"putInstanceSnapshotSchedule\">,\n options?: RequestOptions,\n ): Promise<R<\"putInstanceSnapshotSchedule\">> {\n return this._put(path`/instances/${instanceId}/snapshot-schedule`, body, options);\n }\n}\n\nexport class InstanceSnapshots extends APIResource {\n list(\n instanceId: string,\n params: L<\"listInstanceSnapshots\"> = {},\n options?: RequestOptions,\n ): Promise<R<\"listInstanceSnapshots\">> {\n return this._get(path`/instances/${instanceId}/snapshots`, params, options);\n }\n\n listAll(\n instanceId: string,\n params: LA<\"listInstanceSnapshots\"> = {},\n options?: RequestOptions,\n ): AsyncGenerator<I<\"listInstanceSnapshots\">> {\n return this._listAll(path`/instances/${instanceId}/snapshots`, params, options);\n }\n\n create(\n instanceId: string,\n body: B<\"createInstanceSnapshot\">,\n options?: RequestOptions,\n ): Promise<R<\"createInstanceSnapshot\">> {\n return this._post(path`/instances/${instanceId}/snapshots`, body, options);\n }\n}\n\nexport class InstanceSshAccess extends APIResource {\n open(instanceId: string, options?: RequestOptions): Promise<R<\"openSSHAccess\">> {\n return this._post(path`/instances/${instanceId}/ssh-access`, undefined, options);\n }\n\n get(instanceId: string, grantId: string, options?: RequestOptions): Promise<R<\"getSSHAccess\">> {\n return this._get(path`/instances/${instanceId}/ssh-access/${grantId}`, undefined, options);\n }\n\n revoke(instanceId: string, grantId: string, options?: RequestOptions): Promise<R<\"revokeSSHAccess\">> {\n return this._delete(path`/instances/${instanceId}/ssh-access/${grantId}`, options);\n }\n}\n\n/** How a new instance is paid for and provisioned. */\nexport class InstanceOrders extends APIResource {\n list(params: L<\"listInstanceOrders\"> = {}, options?: RequestOptions): Promise<R<\"listInstanceOrders\">> {\n return this._get(\"/instance-orders\", params, options);\n }\n\n listAll(params: LA<\"listInstanceOrders\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listInstanceOrders\">> {\n return this._listAll(\"/instance-orders\", params, options);\n }\n\n get(orderId: string, options?: RequestOptions): Promise<R<\"getInstanceOrder\">> {\n return this._get(path`/instance-orders/${orderId}`, undefined, options);\n }\n\n /**\n * Polls the order until it is provisioned and (by default) the instance's\n * create operation has finished. Rejects with OrderFailedError when the\n * order fails or cannot be paid, and OperationFailedError when the create\n * fails. Accepts an id or the body `instances.create` returned.\n */\n wait(ref: OrderRef, options: OrderWaitOptions<R<\"getInstanceOrder\">> = {}): Promise<R<\"getInstanceOrder\">> {\n const id = orderId(ref);\n return waitForOrder(this._client, (signal) => this.get(id, { signal }), `Instance order ${id}`, options);\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { APIResource } from \"../resource.js\";\nimport type { BodyOf as B, ItemOf as I, ListParams as L, ListAllParams as LA, ResponseOf as R } from \"../types.js\";\nimport { path } from \"../util.js\";\n\n/** Managed Kubernetes clusters whose nodes are VMs in your account. */\nexport class Kubernetes extends APIResource {\n /** A cluster's node pools. */\n readonly nodePools: KubernetesNodePools = new KubernetesNodePools(this._client);\n /** A cluster's add-ons. */\n readonly addons: KubernetesAddons = new KubernetesAddons(this._client);\n\n list(params: L<\"listKubernetesClusters\"> = {}, options?: RequestOptions): Promise<R<\"listKubernetesClusters\">> {\n return this._get(\"/kubernetes-clusters\", params, options);\n }\n\n listAll(\n params: LA<\"listKubernetesClusters\"> = {},\n options?: RequestOptions,\n ): AsyncGenerator<I<\"listKubernetesClusters\">> {\n return this._listAll(\"/kubernetes-clusters\", params, options);\n }\n\n create(body: B<\"createKubernetesCluster\">, options?: RequestOptions): Promise<R<\"createKubernetesCluster\">> {\n return this._post(\"/kubernetes-clusters\", body, options);\n }\n\n get(clusterId: string, options?: RequestOptions): Promise<R<\"getKubernetesCluster\">> {\n return this._get(path`/kubernetes-clusters/${clusterId}`, undefined, options);\n }\n\n /** Changes the cluster's size (`PATCH`). */\n update(\n clusterId: string,\n body: B<\"scaleKubernetesCluster\">,\n options?: RequestOptions,\n ): Promise<R<\"scaleKubernetesCluster\">> {\n return this._patch(path`/kubernetes-clusters/${clusterId}`, body, options);\n }\n\n delete(clusterId: string, options?: RequestOptions): Promise<R<\"deleteKubernetesCluster\">> {\n return this._delete(path`/kubernetes-clusters/${clusterId}`, options);\n }\n\n /** Upgrades the cluster to a newer Kubernetes version. */\n upgrade(\n clusterId: string,\n body: B<\"upgradeKubernetesCluster\">,\n options?: RequestOptions,\n ): Promise<R<\"upgradeKubernetesCluster\">> {\n return this._post(path`/kubernetes-clusters/${clusterId}/upgrade`, body, options);\n }\n\n /** Moves every node to another plan. */\n resizePlan(\n clusterId: string,\n body: B<\"resizeKubernetesClusterPlan\">,\n options?: RequestOptions,\n ): Promise<R<\"resizeKubernetesClusterPlan\">> {\n return this._post(path`/kubernetes-clusters/${clusterId}/resize-plan`, body, options);\n }\n\n /** Changes the cluster's networking. */\n upgradeNetwork(\n clusterId: string,\n body: B<\"upgradeKubernetesClusterNetwork\">,\n options?: RequestOptions,\n ): Promise<R<\"upgradeKubernetesClusterNetwork\">> {\n return this._post(path`/kubernetes-clusters/${clusterId}/upgrade-network`, body, options);\n }\n\n start(clusterId: string, options?: RequestOptions): Promise<R<\"startKubernetesCluster\">> {\n return this._post(path`/kubernetes-clusters/${clusterId}/start`, undefined, options);\n }\n\n stop(clusterId: string, options?: RequestOptions): Promise<R<\"stopKubernetesCluster\">> {\n return this._post(path`/kubernetes-clusters/${clusterId}/stop`, undefined, options);\n }\n\n /** The cluster's kubeconfig. It holds credentials: store it securely. */\n getKubeconfig(clusterId: string, options?: RequestOptions): Promise<R<\"getKubernetesKubeconfig\">> {\n return this._post(path`/kubernetes-clusters/${clusterId}/kubeconfig`, undefined, options);\n }\n\n listNodes(clusterId: string, options?: RequestOptions): Promise<R<\"listKubernetesClusterNodes\">> {\n return this._get(path`/kubernetes-clusters/${clusterId}/nodes`, undefined, options);\n }\n\n getWorkloads(clusterId: string, options?: RequestOptions): Promise<R<\"getKubernetesWorkloads\">> {\n return this._get(path`/kubernetes-clusters/${clusterId}/workloads`, undefined, options);\n }\n\n applyManifest(\n clusterId: string,\n body: B<\"applyKubernetesManifest\">,\n options?: RequestOptions,\n ): Promise<R<\"applyKubernetesManifest\">> {\n return this._post(path`/kubernetes-clusters/${clusterId}/apply-manifest`, body, options);\n }\n\n getLiveManifests(clusterId: string, options?: RequestOptions): Promise<R<\"getKubernetesLiveManifests\">> {\n return this._get(path`/kubernetes-clusters/${clusterId}/live-manifests`, undefined, options);\n }\n\n exposeService(\n clusterId: string,\n body: B<\"exposeKubernetesService\">,\n options?: RequestOptions,\n ): Promise<R<\"exposeKubernetesService\">> {\n return this._post(path`/kubernetes-clusters/${clusterId}/expose-service`, body, options);\n }\n\n syncRouting(clusterId: string, options?: RequestOptions): Promise<R<\"syncKubernetesRouting\">> {\n return this._post(path`/kubernetes-clusters/${clusterId}/sync-routing`, undefined, options);\n }\n\n /** Sets whether the cluster's API endpoint is private, public or both. */\n configureEndpointAccess(\n clusterId: string,\n body: B<\"configureKubernetesEndpointAccess\">,\n options?: RequestOptions,\n ): Promise<R<\"configureKubernetesEndpointAccess\">> {\n return this._post(path`/kubernetes-clusters/${clusterId}/endpoint-access`, body, options);\n }\n}\n\nexport class KubernetesNodePools extends APIResource {\n list(\n clusterId: string,\n params: L<\"listKubernetesNodePools\"> = {},\n options?: RequestOptions,\n ): Promise<R<\"listKubernetesNodePools\">> {\n return this._get(path`/kubernetes-clusters/${clusterId}/node-pools`, params, options);\n }\n\n listAll(\n clusterId: string,\n params: LA<\"listKubernetesNodePools\"> = {},\n options?: RequestOptions,\n ): AsyncGenerator<I<\"listKubernetesNodePools\">> {\n return this._listAll(path`/kubernetes-clusters/${clusterId}/node-pools`, params, options);\n }\n\n create(\n clusterId: string,\n body: B<\"createKubernetesNodePool\">,\n options?: RequestOptions,\n ): Promise<R<\"createKubernetesNodePool\">> {\n return this._post(path`/kubernetes-clusters/${clusterId}/node-pools`, body, options);\n }\n\n /** Sets the pool's whole size: a missing `autoscaling_enabled` turns autoscaling off. */\n scale(\n clusterId: string,\n poolId: string,\n body: B<\"scaleKubernetesNodePool\">,\n options?: RequestOptions,\n ): Promise<R<\"scaleKubernetesNodePool\">> {\n return this._patch(path`/kubernetes-clusters/${clusterId}/node-pools/${poolId}`, body, options);\n }\n\n delete(clusterId: string, poolId: string, options?: RequestOptions): Promise<R<\"deleteKubernetesNodePool\">> {\n return this._delete(path`/kubernetes-clusters/${clusterId}/node-pools/${poolId}`, options);\n }\n}\n\nexport class KubernetesAddons extends APIResource {\n list(\n clusterId: string,\n params: L<\"listKubernetesAddons\"> = {},\n options?: RequestOptions,\n ): Promise<R<\"listKubernetesAddons\">> {\n return this._get(path`/kubernetes-clusters/${clusterId}/addons`, params, options);\n }\n\n listAll(\n clusterId: string,\n params: LA<\"listKubernetesAddons\"> = {},\n options?: RequestOptions,\n ): AsyncGenerator<I<\"listKubernetesAddons\">> {\n return this._listAll(path`/kubernetes-clusters/${clusterId}/addons`, params, options);\n }\n\n /** Turns an add-on on or off. */\n toggle(\n clusterId: string,\n addonName: string,\n body: B<\"toggleKubernetesAddon\">,\n options?: RequestOptions,\n ): Promise<R<\"toggleKubernetesAddon\">> {\n return this._post(path`/kubernetes-clusters/${clusterId}/addons/${addonName}/toggle`, body, options);\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { APIResource } from \"../resource.js\";\nimport type { BodyOf as B, ItemOf as I, ListParams as L, ListAllParams as LA, ResponseOf as R } from \"../types.js\";\nimport { path } from \"../util.js\";\n\n/** Spread traffic on one public port across several instances in a private network. */\nexport class LoadBalancers extends APIResource {\n list(params: L<\"listLoadBalancers\"> = {}, options?: RequestOptions): Promise<R<\"listLoadBalancers\">> {\n return this._get(\"/load-balancers\", params, options);\n }\n\n listAll(params: LA<\"listLoadBalancers\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listLoadBalancers\">> {\n return this._listAll(\"/load-balancers\", params, options);\n }\n\n create(body: B<\"createLoadBalancer\">, options?: RequestOptions): Promise<R<\"createLoadBalancer\">> {\n return this._post(\"/load-balancers\", body, options);\n }\n\n get(loadBalancerId: string, options?: RequestOptions): Promise<R<\"getLoadBalancer\">> {\n return this._get(path`/load-balancers/${loadBalancerId}`, undefined, options);\n }\n\n update(\n loadBalancerId: string,\n body: B<\"updateLoadBalancer\">,\n options?: RequestOptions,\n ): Promise<R<\"updateLoadBalancer\">> {\n return this._patch(path`/load-balancers/${loadBalancerId}`, body, options);\n }\n\n delete(loadBalancerId: string, options?: RequestOptions): Promise<R<\"deleteLoadBalancer\">> {\n return this._delete(path`/load-balancers/${loadBalancerId}`, options);\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport type { Me } from \"../models.js\";\nimport { APIResource } from \"../resource.js\";\n\nexport class MeResource extends APIResource {\n /** The organization and project the key acts in, its scopes, kind and expiry. */\n get(options?: RequestOptions): Promise<Me> {\n return this._get(\"/me\", undefined, options);\n }\n\n /**\n * Revokes the API key making the call. Every later call with it is a\n * `401`. Sent once: a retry would find the key gone.\n */\n revoke(options?: RequestOptions): Promise<void> {\n return this._delete(\"/me\", options, { noRetry: true });\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { APIResource } from \"../resource.js\";\nimport type { BodyOf as B, ItemOf as I, ListParams as L, ListAllParams as LA, ResponseOf as R } from \"../types.js\";\nimport { path } from \"../util.js\";\n\n/** VPC networks. */\nexport class Networks extends APIResource {\n /** A network's subnets: `client.networks.subnets.list(networkId)`. */\n readonly subnets: Subnets = new Subnets(this._client);\n /** A subnet's firewall rules: `client.networks.firewallRules.list(subnetId)`. */\n readonly firewallRules: FirewallRules = new FirewallRules(this._client);\n\n list(params: L<\"listNetworks\"> = {}, options?: RequestOptions): Promise<R<\"listNetworks\">> {\n return this._get(\"/networks\", params, options);\n }\n\n listAll(params: LA<\"listNetworks\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listNetworks\">> {\n return this._listAll(\"/networks\", params, options);\n }\n\n create(body: B<\"createNetwork\">, options?: RequestOptions): Promise<R<\"createNetwork\">> {\n return this._post(\"/networks\", body, options);\n }\n\n /** What a network costs a month. */\n quote(options?: RequestOptions): Promise<R<\"quoteNetwork\">> {\n return this._get(\"/networks/quote\", undefined, options);\n }\n\n get(networkId: string, options?: RequestOptions): Promise<R<\"getNetwork\">> {\n return this._get(path`/networks/${networkId}`, undefined, options);\n }\n\n delete(networkId: string, options?: RequestOptions): Promise<R<\"deleteNetwork\">> {\n return this._delete(path`/networks/${networkId}`, options);\n }\n}\n\nexport class Subnets extends APIResource {\n /** One page of a network's subnets. */\n list(networkId: string, params: L<\"listSubnets\"> = {}, options?: RequestOptions): Promise<R<\"listSubnets\">> {\n return this._get(path`/networks/${networkId}/subnets`, params, options);\n }\n\n listAll(\n networkId: string,\n params: LA<\"listSubnets\"> = {},\n options?: RequestOptions,\n ): AsyncGenerator<I<\"listSubnets\">> {\n return this._listAll(path`/networks/${networkId}/subnets`, params, options);\n }\n\n create(networkId: string, body: B<\"createSubnet\">, options?: RequestOptions): Promise<R<\"createSubnet\">> {\n return this._post(path`/networks/${networkId}/subnets`, body, options);\n }\n\n get(subnetId: string, options?: RequestOptions): Promise<R<\"getSubnet\">> {\n return this._get(path`/subnets/${subnetId}`, undefined, options);\n }\n\n delete(subnetId: string, options?: RequestOptions): Promise<R<\"deleteSubnet\">> {\n return this._delete(path`/subnets/${subnetId}`, options);\n }\n}\n\nexport class FirewallRules extends APIResource {\n /** A subnet's rules, plus the `system_rules` every subnet has. */\n list(\n subnetId: string,\n params: L<\"listFirewallRules\"> = {},\n options?: RequestOptions,\n ): Promise<R<\"listFirewallRules\">> {\n return this._get(path`/subnets/${subnetId}/firewall-rules`, params, options);\n }\n\n listAll(\n subnetId: string,\n params: LA<\"listFirewallRules\"> = {},\n options?: RequestOptions,\n ): AsyncGenerator<I<\"listFirewallRules\">> {\n return this._listAll(path`/subnets/${subnetId}/firewall-rules`, params, options);\n }\n\n create(subnetId: string, body: B<\"createFirewallRule\">, options?: RequestOptions): Promise<R<\"createFirewallRule\">> {\n return this._post(path`/subnets/${subnetId}/firewall-rules`, body, options);\n }\n\n get(subnetId: string, ruleId: string, options?: RequestOptions): Promise<R<\"getFirewallRule\">> {\n return this._get(path`/subnets/${subnetId}/firewall-rules/${ruleId}`, undefined, options);\n }\n\n delete(ruleId: string, options?: RequestOptions): Promise<R<\"deleteFirewallRule\">> {\n return this._delete(path`/firewall-rules/${ruleId}`, options);\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { OperationFailedError, PantechError } from \"../errors.js\";\nimport type { Operation } from \"../models.js\";\nimport { APIResource } from \"../resource.js\";\nimport { path } from \"../util.js\";\nimport { poll, type WaitOptions } from \"../wait.js\";\n\n/** An operation id, or a `202 Accepted` body that carries one. */\nexport type OperationRef = string | { operation_id?: string | null };\n\nfunction operationId(ref: OperationRef): string {\n const id = typeof ref === \"string\" ? ref : ref.operation_id;\n if (!id) throw new PantechError(\"There is no operation to wait for: the response carried no operation_id.\");\n return id;\n}\n\n/** The error for an operation that ended `failed`. */\nexport function operationFailed(op: Operation): OperationFailedError {\n const reason = op.failure?.reason ?? \"The operation failed.\";\n const code = op.failure?.code;\n return new OperationFailedError(code ? `${reason} (${code})` : reason, op, { code, detail: reason });\n}\n\nexport class Operations extends APIResource {\n /** An operation's current state. */\n get(operationId: string, options?: RequestOptions): Promise<Operation> {\n return this._get(path`/operations/${operationId}`, undefined, options);\n }\n\n /**\n * Polls the operation until it succeeds (resolves with it) or fails\n * (rejects with OperationFailedError). Accepts an id or the `202` body of\n * any write: `await client.operations.wait(await client.instances.stop(id))`.\n */\n wait(ref: OperationRef, options: WaitOptions<Operation> = {}): Promise<Operation> {\n const id = operationId(ref);\n return poll(\n () => this.get(id, { signal: options.signal }),\n (op) => {\n if (op.status === \"failed\") throw operationFailed(op);\n return op.status === \"succeeded\";\n },\n `Operation ${id}`,\n options,\n );\n }\n\n /**\n * Streams the operation's changes (Server-Sent Events) until it succeeds\n * or fails, yielding the Operation each time it changes. A stream the API\n * ends early (after 15 minutes, say) rejects with its code; poll with\n * `wait` instead.\n */\n async *stream(operationId: string, options: RequestOptions = {}): AsyncGenerator<Operation, void, undefined> {\n const res = await this._request<Response>(\n \"GET\",\n path`/operations/${operationId}/events`,\n { responseType: \"response\" },\n { ...options, headers: { ...options.headers, Accept: \"text/event-stream\" } },\n );\n if (!res.body) return;\n for await (const event of readEvents(res.body)) {\n if (event.event === \"error\") {\n let body: { code?: string; detail?: string; request_id?: string } = {};\n try {\n body = JSON.parse(event.data);\n } catch {\n body = {};\n }\n const detail = body.detail ?? \"The operation stream ended before the operation finished.\";\n throw new PantechError(body.code ? `${detail} (${body.code})` : detail, {\n code: body.code,\n detail,\n requestId: body.request_id,\n });\n }\n if (event.event !== \"operation\" || !event.data) continue;\n const op = JSON.parse(event.data) as Operation;\n yield op;\n if (op.status === \"succeeded\" || op.status === \"failed\") return;\n }\n }\n}\n\ninterface ServerSentEvent {\n event: string;\n data: string;\n}\n\n/** Parses a text/event-stream body into events; comments (keepalives) are skipped. */\nasync function* readEvents(body: ReadableStream<Uint8Array>): AsyncGenerator<ServerSentEvent> {\n const reader = body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n let event = \"message\";\n let data: string[] = [];\n try {\n for (;;) {\n const { value, done } = await reader.read();\n buffer += done ? decoder.decode() : decoder.decode(value, { stream: true });\n const lines = buffer.split(/\\r\\n|\\r|\\n/);\n buffer = done ? \"\" : (lines.pop() ?? \"\");\n for (const line of lines) {\n if (line === \"\") {\n if (data.length > 0) yield { event, data: data.join(\"\\n\") };\n event = \"message\";\n data = [];\n } else if (!line.startsWith(\":\")) {\n const colon = line.indexOf(\":\");\n const field = colon === -1 ? line : line.slice(0, colon);\n const value = colon === -1 ? \"\" : line.slice(colon + 1).replace(/^ /, \"\");\n if (field === \"event\") event = value;\n else if (field === \"data\") data.push(value);\n }\n }\n if (done) {\n if (data.length > 0) yield { event, data: data.join(\"\\n\") };\n return;\n }\n }\n } finally {\n reader.releaseLock();\n await body.cancel().catch(() => undefined);\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { APIResource } from \"../resource.js\";\nimport type { BodyOf as B, ItemOf as I, ListParams as L, ListAllParams as LA, ResponseOf as R } from \"../types.js\";\nimport { path } from \"../util.js\";\n\n/** Public addresses for VPC instances. */\nexport class PublicIps extends APIResource {\n /** An address's port forwarding rules. */\n readonly portForwardingRules: PortForwardingRules = new PortForwardingRules(this._client);\n\n list(params: L<\"listPublicIPs\"> = {}, options?: RequestOptions): Promise<R<\"listPublicIPs\">> {\n return this._get(\"/public-ips\", params, options);\n }\n\n listAll(params: LA<\"listPublicIPs\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listPublicIPs\">> {\n return this._listAll(\"/public-ips\", params, options);\n }\n\n create(body: B<\"createPublicIP\">, options?: RequestOptions): Promise<R<\"createPublicIP\">> {\n return this._post(\"/public-ips\", body, options);\n }\n\n /** What a public IP costs a month. */\n quote(options?: RequestOptions): Promise<R<\"quotePublicIP\">> {\n return this._get(\"/public-ips/quote\", undefined, options);\n }\n\n get(publicIpId: string, options?: RequestOptions): Promise<R<\"getPublicIP\">> {\n return this._get(path`/public-ips/${publicIpId}`, undefined, options);\n }\n\n delete(publicIpId: string, options?: RequestOptions): Promise<R<\"deletePublicIP\">> {\n return this._delete(path`/public-ips/${publicIpId}`, options);\n }\n\n attach(publicIpId: string, body: B<\"attachPublicIP\">, options?: RequestOptions): Promise<R<\"attachPublicIP\">> {\n return this._post(path`/public-ips/${publicIpId}/attach`, body, options);\n }\n\n detach(publicIpId: string, options?: RequestOptions): Promise<R<\"detachPublicIP\">> {\n return this._post(path`/public-ips/${publicIpId}/detach`, undefined, options);\n }\n}\n\nexport class PortForwardingRules extends APIResource {\n list(\n publicIpId: string,\n params: L<\"listPortForwardingRules\"> = {},\n options?: RequestOptions,\n ): Promise<R<\"listPortForwardingRules\">> {\n return this._get(path`/public-ips/${publicIpId}/port-forwarding-rules`, params, options);\n }\n\n listAll(\n publicIpId: string,\n params: LA<\"listPortForwardingRules\"> = {},\n options?: RequestOptions,\n ): AsyncGenerator<I<\"listPortForwardingRules\">> {\n return this._listAll(path`/public-ips/${publicIpId}/port-forwarding-rules`, params, options);\n }\n\n create(\n publicIpId: string,\n body: B<\"createPortForwardingRule\">,\n options?: RequestOptions,\n ): Promise<R<\"createPortForwardingRule\">> {\n return this._post(path`/public-ips/${publicIpId}/port-forwarding-rules`, body, options);\n }\n\n get(publicIpId: string, ruleId: string, options?: RequestOptions): Promise<R<\"getPortForwardingRule\">> {\n return this._get(path`/public-ips/${publicIpId}/port-forwarding-rules/${ruleId}`, undefined, options);\n }\n\n delete(ruleId: string, options?: RequestOptions): Promise<R<\"deletePortForwardingRule\">> {\n return this._delete(path`/port-forwarding-rules/${ruleId}`, options);\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { APIResource } from \"../resource.js\";\nimport type { BodyOf as B, ItemOf as I, ListParams as L, ListAllParams as LA, ResponseOf as R } from \"../types.js\";\nimport { path } from \"../util.js\";\n\n/** Reusable firewalls for standard instances. */\nexport class SecurityGroups extends APIResource {\n list(params: L<\"listSecurityGroups\"> = {}, options?: RequestOptions): Promise<R<\"listSecurityGroups\">> {\n return this._get(\"/security-groups\", params, options);\n }\n\n listAll(params: LA<\"listSecurityGroups\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listSecurityGroups\">> {\n return this._listAll(\"/security-groups\", params, options);\n }\n\n create(body: B<\"createSecurityGroup\">, options?: RequestOptions): Promise<R<\"createSecurityGroup\">> {\n return this._post(\"/security-groups\", body, options);\n }\n\n get(securityGroupId: string, options?: RequestOptions): Promise<R<\"getSecurityGroup\">> {\n return this._get(path`/security-groups/${securityGroupId}`, undefined, options);\n }\n\n delete(securityGroupId: string, options?: RequestOptions): Promise<R<\"deleteSecurityGroup\">> {\n return this._delete(path`/security-groups/${securityGroupId}`, options);\n }\n\n /** Replaces every rule of the group. */\n replaceRules(\n securityGroupId: string,\n body: B<\"replaceSecurityGroupRules\">,\n options?: RequestOptions,\n ): Promise<R<\"replaceSecurityGroupRules\">> {\n return this._put(path`/security-groups/${securityGroupId}/rules`, body, options);\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { APIResource } from \"../resource.js\";\nimport type {\n BodyOf as B,\n ItemOf as I,\n ListParams as L,\n ListAllParams as LA,\n QueryOf as Q,\n ResponseOf as R,\n} from \"../types.js\";\nimport { path } from \"../util.js\";\n\n/** Point-in-time copies of root disks and volumes. */\nexport class Snapshots extends APIResource {\n list(params: L<\"listSnapshots\"> = {}, options?: RequestOptions): Promise<R<\"listSnapshots\">> {\n return this._get(\"/snapshots\", params, options);\n }\n\n listAll(params: LA<\"listSnapshots\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listSnapshots\">> {\n return this._listAll(\"/snapshots\", params, options);\n }\n\n /** What a snapshot of `size_gb` costs. */\n quote(params: Q<\"quoteSnapshot\">, options?: RequestOptions): Promise<R<\"quoteSnapshot\">> {\n return this._get(\"/snapshots/quote\", params, options);\n }\n\n get(snapshotId: string, options?: RequestOptions): Promise<R<\"getSnapshot\">> {\n return this._get(path`/snapshots/${snapshotId}`, undefined, options);\n }\n\n delete(snapshotId: string, options?: RequestOptions): Promise<R<\"deleteSnapshot\">> {\n return this._delete(path`/snapshots/${snapshotId}`, options);\n }\n\n /** Restores the snapshot into a new volume. */\n restore(snapshotId: string, body: B<\"restoreSnapshot\">, options?: RequestOptions): Promise<R<\"restoreSnapshot\">> {\n return this._post(path`/snapshots/${snapshotId}/restore`, body, options);\n }\n\n usage(snapshotId: string, options?: RequestOptions): Promise<R<\"getSnapshotUsage\">> {\n return this._get(path`/snapshots/${snapshotId}/usage`, undefined, options);\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { APIResource } from \"../resource.js\";\nimport type { BodyOf as B, ItemOf as I, ListParams as L, ListAllParams as LA, ResponseOf as R } from \"../types.js\";\nimport { path } from \"../util.js\";\n\n/**\n * Keys installed on new instances. Create and delete are sent once: the API\n * does not replay them by Idempotency-Key, so a retry after a lost answer\n * would act twice (or lose a generated private key).\n */\nexport class SshKeys extends APIResource {\n list(params: L<\"listSSHKeys\"> = {}, options?: RequestOptions): Promise<R<\"listSSHKeys\">> {\n return this._get(\"/ssh-keys\", params, options);\n }\n\n listAll(params: LA<\"listSSHKeys\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listSSHKeys\">> {\n return this._listAll(\"/ssh-keys\", params, options);\n }\n\n /**\n * Adds your public key, or generates a key pair and returns the private\n * key in this response only. If the call fails without an answer, list\n * your keys before trying again.\n */\n create(body: B<\"createSSHKey\">, options?: RequestOptions): Promise<R<\"createSSHKey\">> {\n return this._post(\"/ssh-keys\", body, options, { noRetry: true });\n }\n\n get(sshKeyId: string, options?: RequestOptions): Promise<R<\"getSSHKey\">> {\n return this._get(path`/ssh-keys/${sshKeyId}`, undefined, options);\n }\n\n /** Deletes the key. A repeat after it is gone is a `404`: treat that as done. */\n delete(sshKeyId: string, options?: RequestOptions): Promise<void> {\n return this._delete(path`/ssh-keys/${sshKeyId}`, options, { noRetry: true });\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { APIResource } from \"../resource.js\";\nimport type { QueryOf as Q, ResponseOf as R } from \"../types.js\";\n\n/** What has been used, and what it cost. */\nexport class Usage extends APIResource {\n /** The organization's usage this period. */\n get(options?: RequestOptions): Promise<R<\"getUsage\">> {\n return this._get(\"/usage\", undefined, options);\n }\n\n /** Usage broken down per resource. */\n byResource(params: Q<\"getUsageByResource\"> = {}, options?: RequestOptions): Promise<R<\"getUsageByResource\">> {\n return this._get(\"/usage/by-resource\", params, options);\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { APIResource } from \"../resource.js\";\nimport type { BodyOf as B, ItemOf as I, ListParams as L, ListAllParams as LA, ResponseOf as R } from \"../types.js\";\nimport { path } from \"../util.js\";\n\n/** Data disks. */\nexport class Volumes extends APIResource {\n /** Snapshots of a volume. */\n readonly snapshots: VolumeSnapshots = new VolumeSnapshots(this._client);\n\n list(params: L<\"listVolumes\"> = {}, options?: RequestOptions): Promise<R<\"listVolumes\">> {\n return this._get(\"/volumes\", params, options);\n }\n\n listAll(params: LA<\"listVolumes\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listVolumes\">> {\n return this._listAll(\"/volumes\", params, options);\n }\n\n create(body: B<\"createVolume\">, options?: RequestOptions): Promise<R<\"createVolume\">> {\n return this._post(\"/volumes\", body, options);\n }\n\n get(volumeId: string, options?: RequestOptions): Promise<R<\"getVolume\">> {\n return this._get(path`/volumes/${volumeId}`, undefined, options);\n }\n\n delete(volumeId: string, options?: RequestOptions): Promise<R<\"deleteVolume\">> {\n return this._delete(path`/volumes/${volumeId}`, options);\n }\n\n attach(volumeId: string, body: B<\"attachVolume\">, options?: RequestOptions): Promise<R<\"attachVolume\">> {\n return this._post(path`/volumes/${volumeId}/attach`, body, options);\n }\n\n detach(volumeId: string, options?: RequestOptions): Promise<R<\"detachVolume\">> {\n return this._post(path`/volumes/${volumeId}/detach`, undefined, options);\n }\n\n /** Grows a detached volume. */\n resize(volumeId: string, body: B<\"resizeVolume\">, options?: RequestOptions): Promise<R<\"resizeVolume\">> {\n return this._post(path`/volumes/${volumeId}/resize`, body, options);\n }\n\n usage(volumeId: string, options?: RequestOptions): Promise<R<\"getVolumeUsage\">> {\n return this._get(path`/volumes/${volumeId}/usage`, undefined, options);\n }\n\n getSnapshotSchedule(volumeId: string, options?: RequestOptions): Promise<R<\"getVolumeSnapshotSchedule\">> {\n return this._get(path`/volumes/${volumeId}/snapshot-schedule`, undefined, options);\n }\n\n setSnapshotSchedule(\n volumeId: string,\n body: B<\"putVolumeSnapshotSchedule\">,\n options?: RequestOptions,\n ): Promise<R<\"putVolumeSnapshotSchedule\">> {\n return this._put(path`/volumes/${volumeId}/snapshot-schedule`, body, options);\n }\n}\n\nexport class VolumeSnapshots extends APIResource {\n list(\n volumeId: string,\n params: L<\"listVolumeSnapshots\"> = {},\n options?: RequestOptions,\n ): Promise<R<\"listVolumeSnapshots\">> {\n return this._get(path`/volumes/${volumeId}/snapshots`, params, options);\n }\n\n listAll(\n volumeId: string,\n params: LA<\"listVolumeSnapshots\"> = {},\n options?: RequestOptions,\n ): AsyncGenerator<I<\"listVolumeSnapshots\">> {\n return this._listAll(path`/volumes/${volumeId}/snapshots`, params, options);\n }\n\n create(\n volumeId: string,\n body: B<\"createVolumeSnapshot\">,\n options?: RequestOptions,\n ): Promise<R<\"createVolumeSnapshot\">> {\n return this._post(path`/volumes/${volumeId}/snapshots`, body, options);\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { APIResource } from \"../resource.js\";\nimport type { BodyOf as B, ItemOf as I, ListParams as L, ListAllParams as LA, ResponseOf as R } from \"../types.js\";\nimport { path } from \"../util.js\";\n\n/**\n * Events sent to your own URL. Delete, test and secret rotation are sent\n * once: the API does not replay them by Idempotency-Key.\n */\nexport class Webhooks extends APIResource {\n /** A webhook's delivery log. */\n readonly deliveries: WebhookDeliveries = new WebhookDeliveries(this._client);\n\n list(params: L<\"listWebhooks\"> = {}, options?: RequestOptions): Promise<R<\"listWebhooks\">> {\n return this._get(\"/webhooks\", params, options);\n }\n\n listAll(params: LA<\"listWebhooks\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listWebhooks\">> {\n return this._listAll(\"/webhooks\", params, options);\n }\n\n /** Every event type a webhook can subscribe to. */\n listEventTypes(\n params: L<\"listWebhookEventTypes\"> = {},\n options?: RequestOptions,\n ): Promise<R<\"listWebhookEventTypes\">> {\n return this._get(\"/webhook-event-types\", params, options);\n }\n\n /** Creates a webhook. Its signing `secret` is in this response only. */\n create(body: B<\"createWebhook\">, options?: RequestOptions): Promise<R<\"createWebhook\">> {\n return this._post(\"/webhooks\", body, options);\n }\n\n get(webhookId: string, options?: RequestOptions): Promise<R<\"getWebhook\">> {\n return this._get(path`/webhooks/${webhookId}`, undefined, options);\n }\n\n update(webhookId: string, body: B<\"updateWebhook\">, options?: RequestOptions): Promise<R<\"updateWebhook\">> {\n return this._patch(path`/webhooks/${webhookId}`, body, options);\n }\n\n /** Deletes the webhook. A repeat after it is gone is a `404`: treat that as done. */\n delete(webhookId: string, options?: RequestOptions): Promise<void> {\n return this._delete(path`/webhooks/${webhookId}`, options, { noRetry: true });\n }\n\n /** Sends a test event. Each call sends another. */\n test(webhookId: string, options?: RequestOptions): Promise<R<\"testWebhook\">> {\n return this._post(path`/webhooks/${webhookId}/test`, undefined, options, { noRetry: true });\n }\n\n /** Issues a new signing secret, in this response only. The previous one keeps signing for 24 hours. */\n rotateSecret(webhookId: string, options?: RequestOptions): Promise<R<\"rotateWebhookSecret\">> {\n return this._post(path`/webhooks/${webhookId}/rotate-secret`, undefined, options, { noRetry: true });\n }\n}\n\nexport class WebhookDeliveries extends APIResource {\n list(\n webhookId: string,\n params: L<\"listWebhookDeliveries\"> = {},\n options?: RequestOptions,\n ): Promise<R<\"listWebhookDeliveries\">> {\n return this._get(path`/webhooks/${webhookId}/deliveries`, params, options);\n }\n\n listAll(\n webhookId: string,\n params: LA<\"listWebhookDeliveries\"> = {},\n options?: RequestOptions,\n ): AsyncGenerator<I<\"listWebhookDeliveries\">> {\n return this._listAll(path`/webhooks/${webhookId}/deliveries`, params, options);\n }\n\n get(webhookId: string, deliveryId: string, options?: RequestOptions): Promise<R<\"getWebhookDelivery\">> {\n return this._get(path`/webhooks/${webhookId}/deliveries/${deliveryId}`, undefined, options);\n }\n\n /** Sends the delivery again. Each call sends another. */\n redeliver(webhookId: string, deliveryId: string, options?: RequestOptions): Promise<R<\"redeliverWebhook\">> {\n return this._post(path`/webhooks/${webhookId}/deliveries/${deliveryId}/redeliver`, undefined, options, {\n noRetry: true,\n });\n }\n}\n","/** The SDK's version, sent in `User-Agent: pantech-js/<version>`. Kept in step with package.json. */\nexport const VERSION = \"0.1.0\";\n","// The client: auth, an Idempotency-Key on every write, timeouts, and retries\n// the way the API's conventions ask. Every resource method goes through\n// Pantech.request.\n\nimport { APIConnectionError, APITimeoutError, errorFromResponse, PantechError } from \"./errors.js\";\nimport { Billing } from \"./resources/billing.js\";\nimport {\n DatabaseEngines,\n DiskOfferings,\n Images,\n KubernetesVersions,\n Plans,\n Pricing,\n Regions,\n} from \"./resources/catalog.js\";\nimport { DatabaseOrders, Databases } from \"./resources/databases.js\";\nimport { InstanceOrders, Instances } from \"./resources/instances.js\";\nimport { Kubernetes } from \"./resources/kubernetes.js\";\nimport { LoadBalancers } from \"./resources/load-balancers.js\";\nimport { MeResource } from \"./resources/me.js\";\nimport { Networks } from \"./resources/networks.js\";\nimport { Operations } from \"./resources/operations.js\";\nimport { PublicIps } from \"./resources/public-ips.js\";\nimport { SecurityGroups } from \"./resources/security-groups.js\";\nimport { Snapshots } from \"./resources/snapshots.js\";\nimport { SshKeys } from \"./resources/ssh-keys.js\";\nimport { Usage } from \"./resources/usage.js\";\nimport { Volumes } from \"./resources/volumes.js\";\nimport { Webhooks } from \"./resources/webhooks.js\";\nimport { readEnv, sleep, uuid } from \"./util.js\";\nimport { VERSION } from \"./version.js\";\n\nexport const DEFAULT_BASE_URL = \"https://api.pantechdynamics.com/public/v1\";\nconst DEFAULT_TIMEOUT_MS = 60_000;\nconst DEFAULT_MAX_RETRIES = 3;\nconst MAX_RETRY_AFTER_MS = 60_000;\n\ntype Fetch = (input: string, init: RequestInit) => Promise<Response>;\n\nexport interface ClientOptions {\n /** A Pantech API key (`PAN_…`). Defaults to the `PANTECH_API_KEY` environment variable. */\n apiKey?: string;\n /**\n * The API's base URL, including `/public/v1`. Defaults to the\n * `PANTECH_API_URL` environment variable, else production.\n */\n baseURL?: string;\n /** How many times a failed request is retried. Default 3. */\n maxRetries?: number;\n /** Milliseconds to wait for each attempt before giving up on it. Default 60000. */\n timeout?: number;\n /** A fetch implementation. Defaults to the global `fetch`. */\n fetch?: Fetch;\n /** Headers sent with every request. */\n defaultHeaders?: Record<string, string>;\n /** Replaces the `User-Agent` header (`pantech-js/<version>`). Ignored by browsers. */\n userAgent?: string;\n}\n\n/** Per-call options, accepted as the last argument of every method. */\nexport interface RequestOptions {\n /** Cancels the call, including any retries and waits. */\n signal?: AbortSignal;\n /** Overrides the client's per-attempt timeout, in milliseconds. */\n timeout?: number;\n /** Overrides the client's retry count. */\n maxRetries?: number;\n /**\n * The `Idempotency-Key` for a write. One is generated when left out. Reuse\n * a key only to retry the very same change.\n */\n idempotencyKey?: string;\n /** Extra headers for this call. */\n headers?: Record<string, string>;\n}\n\nexport type HTTPMethod = \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n\n/** A low-level request, for endpoints you want to call directly. */\nexport interface APIRequest {\n method: HTTPMethod;\n /** Relative to the base URL, e.g. `/instances`. */\n path: string;\n /** Query parameters; undefined and null values are left out, arrays repeat. */\n query?: object;\n /** Sent as JSON. */\n body?: unknown;\n /**\n * Sends a write once. For endpoints the API does not replay by\n * Idempotency-Key, where a retry after a lost answer would act twice. A\n * `429` is still retried: it is refused before anything runs.\n */\n noRetry?: boolean;\n /** How to read a successful response. Default `json`. */\n responseType?: \"json\" | \"arrayBuffer\" | \"response\";\n}\n\nconst RETRY_STATUSES = new Set([429, 500, 502, 503, 504]);\n\n/** The Pantech Dynamics public API client. */\nexport class Pantech {\n readonly baseURL: string;\n readonly maxRetries: number;\n readonly timeout: number;\n // Private fields are invisible to console.log and JSON.stringify, so the\n // key cannot leak through a logged client.\n readonly #apiKey: string;\n readonly #fetch: Fetch;\n readonly #headers: Record<string, string>;\n\n /** `GET` and `DELETE /me`: the API key making the call. */\n readonly me: MeResource;\n /** Credit, credit purchases and receipts. */\n readonly billing: Billing;\n readonly regions: Regions;\n readonly plans: Plans;\n readonly images: Images;\n readonly diskOfferings: DiskOfferings;\n readonly databaseEngines: DatabaseEngines;\n readonly kubernetesVersions: KubernetesVersions;\n readonly pricing: Pricing;\n readonly usage: Usage;\n readonly instances: Instances;\n readonly instanceOrders: InstanceOrders;\n /** VPC networks, with their subnets and firewall rules. */\n readonly networks: Networks;\n /** Public IPs, with their port forwarding rules. */\n readonly publicIps: PublicIps;\n readonly loadBalancers: LoadBalancers;\n /** Managed Kubernetes clusters, with node pools and add-ons. */\n readonly kubernetes: Kubernetes;\n readonly securityGroups: SecurityGroups;\n readonly volumes: Volumes;\n readonly snapshots: Snapshots;\n readonly databases: Databases;\n readonly databaseOrders: DatabaseOrders;\n readonly sshKeys: SshKeys;\n readonly webhooks: Webhooks;\n readonly operations: Operations;\n\n constructor(options: ClientOptions = {}) {\n const apiKey = options.apiKey ?? readEnv(\"PANTECH_API_KEY\");\n if (!apiKey) {\n throw new PantechError(\n \"No Pantech API key. Pass `apiKey` or set PANTECH_API_KEY. Create a key in the console under Organization › API keys.\",\n );\n }\n this.#apiKey = apiKey;\n this.baseURL = (options.baseURL ?? readEnv(\"PANTECH_API_URL\") ?? DEFAULT_BASE_URL).replace(/\\/+$/, \"\");\n this.maxRetries = options.maxRetries ?? DEFAULT_MAX_RETRIES;\n this.timeout = options.timeout ?? DEFAULT_TIMEOUT_MS;\n // Looked up per call, so a fetch replaced after construction is used.\n this.#fetch = options.fetch ?? ((input, init) => globalThis.fetch(input, init));\n this.#headers = {\n ...options.defaultHeaders,\n \"User-Agent\": options.userAgent ?? `pantech-js/${VERSION}`,\n };\n\n this.me = new MeResource(this);\n this.billing = new Billing(this);\n this.regions = new Regions(this);\n this.plans = new Plans(this);\n this.images = new Images(this);\n this.diskOfferings = new DiskOfferings(this);\n this.databaseEngines = new DatabaseEngines(this);\n this.kubernetesVersions = new KubernetesVersions(this);\n this.pricing = new Pricing(this);\n this.usage = new Usage(this);\n this.operations = new Operations(this);\n this.instances = new Instances(this);\n this.instanceOrders = new InstanceOrders(this);\n this.networks = new Networks(this);\n this.publicIps = new PublicIps(this);\n this.loadBalancers = new LoadBalancers(this);\n this.kubernetes = new Kubernetes(this);\n this.securityGroups = new SecurityGroups(this);\n this.volumes = new Volumes(this);\n this.snapshots = new Snapshots(this);\n this.databases = new Databases(this);\n this.databaseOrders = new DatabaseOrders(this);\n this.sshKeys = new SshKeys(this);\n this.webhooks = new Webhooks(this);\n }\n\n /**\n * Sends one request and returns its decoded body (undefined for an empty\n * one). A write carries an Idempotency-Key, reused by every retry, so a\n * change cannot happen twice.\n */\n async request<T = unknown>(req: APIRequest, options: RequestOptions = {}): Promise<T> {\n const url = this.baseURL + req.path + queryString(req.query);\n const isWrite = req.method !== \"GET\";\n const headers: Record<string, string> = {\n ...this.#headers,\n Accept: req.responseType === \"arrayBuffer\" ? \"*/*\" : \"application/json\",\n ...options.headers,\n Authorization: `Bearer ${this.#apiKey}`,\n };\n let payload: string | undefined;\n if (req.body !== undefined) {\n payload = JSON.stringify(req.body);\n headers[\"Content-Type\"] = \"application/json\";\n }\n if (isWrite) headers[\"Idempotency-Key\"] = options.idempotencyKey ?? uuid();\n\n const maxRetries = options.maxRetries ?? this.maxRetries;\n const timeout = options.timeout ?? this.timeout;\n const signal = options.signal;\n\n for (let attempt = 0; ; attempt++) {\n const canRetry = attempt < maxRetries;\n const attemptSignal = linkSignal(signal, timeout);\n let res: Response;\n try {\n res = await this.#fetch(url, { method: req.method, headers, body: payload, signal: attemptSignal.signal });\n } catch (err) {\n attemptSignal.done();\n if (signal?.aborted) throw signal.reason;\n const error = connectionError(err, attemptSignal.timedOut(), isWrite);\n if (canRetry && !req.noRetry) {\n await sleep(backoff(attempt), signal);\n continue;\n }\n throw error;\n }\n\n if (res.ok) {\n try {\n return (await readBody(res, req.responseType)) as T;\n } catch (err) {\n if (signal?.aborted) throw signal.reason;\n if (err instanceof PantechError) throw err;\n throw connectionError(err, attemptSignal.timedOut(), isWrite);\n } finally {\n if (req.responseType !== \"response\") attemptSignal.done();\n else attemptSignal.stopTimer();\n }\n }\n\n let text = \"\";\n try {\n text = await res.text();\n } catch {\n text = \"\";\n } finally {\n attemptSignal.done();\n }\n const retryAfter = parseRetryAfter(res.headers.get(\"retry-after\"));\n if (canRetry && RETRY_STATUSES.has(res.status) && (!req.noRetry || res.status === 429)) {\n await sleep(retryAfter !== undefined ? Math.min(retryAfter, MAX_RETRY_AFTER_MS) : backoff(attempt), signal);\n continue;\n }\n throw errorFromResponse(\n res.status,\n res.headers,\n text,\n retryAfter === undefined ? undefined : Math.ceil(retryAfter / 1000),\n );\n }\n }\n}\n\nfunction queryString(query: object | undefined): string {\n if (!query) return \"\";\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(query)) {\n if (value === undefined || value === null) continue;\n for (const v of Array.isArray(value) ? value : [value]) params.append(key, String(v));\n }\n const s = params.toString();\n return s ? `?${s}` : \"\";\n}\n\nasync function readBody(res: Response, type: APIRequest[\"responseType\"]): Promise<unknown> {\n if (type === \"response\") return res;\n if (type === \"arrayBuffer\") return res.arrayBuffer();\n const text = await res.text();\n if (res.status === 204 || text === \"\") return undefined;\n try {\n return JSON.parse(text);\n } catch (cause) {\n throw new PantechError(\"The Pantech API sent a response that is not valid JSON.\", {\n status: res.status,\n requestId: res.headers.get(\"x-request-id\") ?? undefined,\n headers: res.headers,\n cause,\n });\n }\n}\n\n/** 0.5 s, 1 s, 2 s, 4 s… up to 8 s, less up to a quarter at random so clients spread out. */\nfunction backoff(attempt: number): number {\n const base = Math.min(500 * 2 ** attempt, 8_000);\n return base * (1 - Math.random() * 0.25);\n}\n\n/** `Retry-After` in milliseconds: seconds, or an HTTP date. */\nfunction parseRetryAfter(value: string | null): number | undefined {\n if (!value) return undefined;\n const seconds = Number(value);\n if (Number.isFinite(seconds) && seconds >= 0) return seconds * 1000;\n const date = Date.parse(value);\n if (!Number.isNaN(date)) return Math.max(0, date - Date.now());\n return undefined;\n}\n\nfunction connectionError(cause: unknown, timedOut: boolean, isWrite: boolean): APIConnectionError {\n const maybeApplied = isWrite\n ? \" The change may still have gone through: check before trying again, and retry with the same idempotencyKey.\"\n : \" Try again in a moment.\";\n if (timedOut) return new APITimeoutError(`The Pantech API did not answer in time.${maybeApplied}`, { cause });\n return new APIConnectionError(\n isWrite\n ? `The connection to the Pantech API failed.${maybeApplied}`\n : \"Could not reach the Pantech API. Check the network connection and try again.\",\n { cause },\n );\n}\n\n/** An AbortSignal that fires on the caller's signal or after `timeout` ms. */\nfunction linkSignal(parent: AbortSignal | undefined, timeout: number) {\n const controller = new AbortController();\n let timedOut = false;\n const onAbort = () => controller.abort(parent?.reason);\n if (parent?.aborted) controller.abort(parent.reason);\n else parent?.addEventListener(\"abort\", onAbort, { once: true });\n const timer =\n timeout > 0 && Number.isFinite(timeout)\n ? setTimeout(() => {\n timedOut = true;\n controller.abort(new APITimeoutError(\"The Pantech API did not answer in time.\"));\n }, timeout)\n : undefined;\n return {\n signal: controller.signal,\n timedOut: () => timedOut,\n /** For a streamed body: the timeout covers the headers only. */\n stopTimer: () => clearTimeout(timer),\n done: () => {\n clearTimeout(timer);\n parent?.removeEventListener(\"abort\", onAbort);\n },\n };\n}\n","// Verifying webhook deliveries. Each request carries\n// Pantech-Signature: t=<unix seconds>,v1=<hex HMAC-SHA256(secret, \"<t>.<raw body>\")>\n// with two v1 values for 24 hours after a secret rotation. Uses Web Crypto,\n// so it runs on Node.js, Bun, Deno and edge runtimes alike.\n\nimport { PantechError, WebhookVerificationError } from \"./errors.js\";\n\n/** The header a delivery's signature arrives in. */\nexport const WEBHOOK_SIGNATURE_HEADER = \"Pantech-Signature\";\n\n/** Five minutes, the API's own window. */\nexport const DEFAULT_WEBHOOK_TOLERANCE_SECONDS = 300;\n\nexport type WebhookBody = string | Uint8Array | ArrayBuffer;\n\nexport interface VerifyWebhookOptions {\n /** The webhook's signing secret (`whsec_…`). */\n secret: string;\n /** The `Pantech-Signature` header's value. */\n header: string | null | undefined;\n /** The raw request body, exactly as received: not parsed and re-serialised JSON. */\n body: WebhookBody;\n /** Reject a timestamp further than this from now. Default 300; 0 turns the check off. */\n toleranceSeconds?: number;\n /** The current time in unix seconds, for tests. */\n now?: number;\n}\n\nconst encoder = new TextEncoder();\n\nfunction bytes(body: WebhookBody): Uint8Array {\n if (typeof body === \"string\") return encoder.encode(body);\n return body instanceof Uint8Array ? body : new Uint8Array(body);\n}\n\nfunction subtle(): SubtleCrypto {\n const s = (globalThis as { crypto?: Crypto }).crypto?.subtle;\n if (!s) {\n throw new PantechError(\n \"Web Crypto is not available in this runtime. On Node.js 18 start node with --experimental-global-webcrypto, or use Node.js 20 or later.\",\n );\n }\n return s;\n}\n\nasync function hmacHex(secret: string, timestamp: string, body: Uint8Array): Promise<string> {\n const s = subtle();\n const key = await s.importKey(\"raw\", encoder.encode(secret), { name: \"HMAC\", hash: \"SHA-256\" }, false, [\"sign\"]);\n const prefix = encoder.encode(`${timestamp}.`);\n const message = new Uint8Array(prefix.length + body.length);\n message.set(prefix, 0);\n message.set(body, prefix.length);\n const mac = new Uint8Array(await s.sign(\"HMAC\", key, message));\n return Array.from(mac, (b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\n/** Compares two strings in time that depends only on their length. */\nfunction timingSafeEqual(a: string, b: string): boolean {\n if (a.length !== b.length) return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++) diff |= a.charCodeAt(i) ^ b.charCodeAt(i);\n return diff === 0;\n}\n\n/**\n * Checks a delivery's `Pantech-Signature`. Resolves when it is valid;\n * rejects with WebhookVerificationError when the header is missing or\n * malformed, the timestamp is outside the tolerance, or no `v1` matches.\n */\nexport async function verifyWebhook(options: VerifyWebhookOptions): Promise<void> {\n const { secret, header } = options;\n if (!secret) throw new WebhookVerificationError(\"No webhook secret was given to verify the signature with.\");\n if (!header) throw new WebhookVerificationError(`The ${WEBHOOK_SIGNATURE_HEADER} header is missing.`);\n\n let timestamp: string | undefined;\n const signatures: string[] = [];\n for (const part of header.split(\",\")) {\n const eq = part.indexOf(\"=\");\n if (eq === -1) continue;\n const key = part.slice(0, eq).trim();\n const value = part.slice(eq + 1).trim();\n if (key === \"t\") timestamp = value;\n else if (key === \"v1\" && value) signatures.push(value.toLowerCase());\n }\n if (!timestamp || !/^\\d+$/.test(timestamp) || signatures.length === 0) {\n throw new WebhookVerificationError(`The ${WEBHOOK_SIGNATURE_HEADER} header is malformed.`);\n }\n\n const tolerance = options.toleranceSeconds ?? DEFAULT_WEBHOOK_TOLERANCE_SECONDS;\n const now = options.now ?? Math.floor(Date.now() / 1000);\n if (tolerance > 0 && Math.abs(now - Number(timestamp)) > tolerance) {\n throw new WebhookVerificationError(\n `The webhook's timestamp is more than ${tolerance} seconds from now. Check the server's clock, or this may be a replayed delivery.`,\n );\n }\n\n const expected = await hmacHex(secret, timestamp, bytes(options.body));\n let matched = false;\n for (const signature of signatures) {\n if (timingSafeEqual(expected, signature)) matched = true;\n }\n if (!matched) {\n throw new WebhookVerificationError(\n \"The webhook signature does not match. Check the secret, and pass the raw body.\",\n );\n }\n}\n\n/**\n * Signs a body the way the API does, returning a `Pantech-Signature`\n * value. For testing your own webhook receiver.\n */\nexport async function signWebhook(options: { secret: string; body: WebhookBody; timestamp?: number }): Promise<string> {\n const t = String(options.timestamp ?? Math.floor(Date.now() / 1000));\n return `t=${t},v1=${await hmacHex(options.secret, t, bytes(options.body))}`;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/pagination.ts","../src/resource.ts","../src/util.ts","../src/resources/billing.ts","../src/resources/catalog.ts","../src/wait.ts","../src/orders.ts","../src/resources/databases.ts","../src/resources/instances.ts","../src/resources/kubernetes.ts","../src/resources/load-balancers.ts","../src/resources/me.ts","../src/resources/migrate.ts","../src/resources/networks.ts","../src/resources/operations.ts","../src/resources/public-ips.ts","../src/resources/security-groups.ts","../src/resources/snapshots.ts","../src/resources/ssh-keys.ts","../src/resources/usage.ts","../src/resources/volumes.ts","../src/resources/webhooks.ts","../src/version.ts","../src/client.ts","../src/webhooks.ts"],"names":["path","orderId","operationId","value"],"mappings":"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","file":"index.js","sourcesContent":["// Errors thrown by the SDK. Every one is a PantechError, so one `instanceof`\n// check catches them all; branch on `code`, never on the message.\n\n/** One invalid field of a `422 VALIDATION_FAILED`. */\nexport interface FieldError {\n /** The request field, e.g. `plan_slug`. */\n field: string;\n /** A stable code for the field's problem, e.g. `REQUIRED`. */\n code: string;\n /** What the field must be. */\n message: string;\n}\n\nexport interface PantechErrorInit {\n status?: number;\n code?: string;\n title?: string;\n detail?: string;\n requestId?: string;\n errors?: FieldError[];\n type?: string;\n headers?: Headers;\n cause?: unknown;\n}\n\n/** The base class of every error the SDK throws. */\nexport class PantechError extends Error {\n override name = \"PantechError\";\n /** The HTTP status, when the API answered. */\n readonly status: number | undefined;\n /** The problem's stable code, e.g. `INSUFFICIENT_CREDIT`. */\n readonly code: string | undefined;\n /** A short summary of the problem class. */\n readonly title: string | undefined;\n /** What went wrong and what to do next, in plain language. Safe to show to your users. */\n readonly detail: string | undefined;\n /** The request's id. Quote it to support. */\n readonly requestId: string | undefined;\n /** The invalid fields of a `422 VALIDATION_FAILED`; empty otherwise. */\n readonly errors: FieldError[];\n /** A URI naming the problem class. */\n readonly type: string | undefined;\n /** The response headers, when the API answered. */\n readonly headers: Headers | undefined;\n\n constructor(message: string, init: PantechErrorInit = {}) {\n super(message, init.cause === undefined ? undefined : { cause: init.cause });\n this.status = init.status;\n this.code = init.code;\n this.title = init.title;\n this.detail = init.detail;\n this.requestId = init.requestId;\n this.errors = init.errors ?? [];\n this.type = init.type;\n this.headers = init.headers;\n }\n}\n\n/** `400`: the request was malformed, e.g. a missing header or a bad filter. */\nexport class BadRequestError extends PantechError {\n override name = \"BadRequestError\";\n}\n/** `401`: the API key is missing, wrong, expired or revoked. */\nexport class AuthenticationError extends PantechError {\n override name = \"AuthenticationError\";\n}\n/** `402`: the change costs more than the organization can pay, e.g. `INSUFFICIENT_CREDIT`. */\nexport class PaymentRequiredError extends PantechError {\n override name = \"PaymentRequiredError\";\n}\n/** `403`: the key may not do this, e.g. `INSUFFICIENT_SCOPE` or `AI_APPS_DISABLED`. */\nexport class PermissionDeniedError extends PantechError {\n override name = \"PermissionDeniedError\";\n}\n/** `404`: no such resource in your organization. */\nexport class NotFoundError extends PantechError {\n override name = \"NotFoundError\";\n}\n/** `409`: the resource is in a state that does not allow this, or a name is taken. */\nexport class ConflictError extends PantechError {\n override name = \"ConflictError\";\n}\n/** `422 VALIDATION_FAILED`: see `errors` for each invalid field. */\nexport class ValidationError extends PantechError {\n override name = \"ValidationError\";\n}\n/** `429`: a rate limit was hit and the retries ran out. */\nexport class RateLimitError extends PantechError {\n override name = \"RateLimitError\";\n /** Seconds the API asked to wait (`Retry-After`), when it said. */\n readonly retryAfterSeconds: number | undefined;\n constructor(message: string, init: PantechErrorInit & { retryAfterSeconds?: number } = {}) {\n super(message, init);\n this.retryAfterSeconds = init.retryAfterSeconds;\n }\n}\n/** `5xx`: something failed on the API's side and the retries ran out. */\nexport class InternalServerError extends PantechError {\n override name = \"InternalServerError\";\n}\n\n/** The API could not be reached, or the connection dropped. */\nexport class APIConnectionError extends PantechError {\n override name = \"APIConnectionError\";\n}\n/** The API did not answer within the timeout. */\nexport class APITimeoutError extends APIConnectionError {\n override name = \"APITimeoutError\";\n}\n\n/** An operation the SDK waited for finished with `status: failed`. */\nexport class OperationFailedError extends PantechError {\n override name = \"OperationFailedError\";\n /** The failed operation, as `GET /operations/{id}` returned it. */\n readonly operation: unknown;\n constructor(message: string, operation: unknown, init: PantechErrorInit = {}) {\n super(message, init);\n this.operation = operation;\n }\n}\n/** An instance or database order the SDK waited for ended `failed` or `payment_failed`. */\nexport class OrderFailedError extends PantechError {\n override name = \"OrderFailedError\";\n /** The failed order. */\n readonly order: unknown;\n constructor(message: string, order: unknown, init: PantechErrorInit = {}) {\n super(message, init);\n this.order = order;\n }\n}\n/** Waiting for an operation or order took longer than `timeoutMs`. */\n/** A cloud connection's check or a scan ended `failed`. `code` is stable; `detail` says what to do. */\nexport class CloudFailedError extends PantechError {\n override name = \"CloudFailedError\";\n /** `connection` or `scan`. */\n readonly kind: \"connection\" | \"scan\";\n /** The failed connection or scan, as the API returned it. */\n readonly resource: unknown;\n constructor(message: string, kind: \"connection\" | \"scan\", resource: unknown, init: PantechErrorInit = {}) {\n super(message, init);\n this.kind = kind;\n this.resource = resource;\n }\n}\nexport class WaitTimeoutError extends PantechError {\n override name = \"WaitTimeoutError\";\n}\n/** A webhook delivery's `Pantech-Signature` did not verify. */\nexport class WebhookVerificationError extends PantechError {\n override name = \"WebhookVerificationError\";\n}\n\n/** True when `err` is a PantechError, and, if `code` is given, carries that code. */\nexport function isPantechError(err: unknown, code?: string): err is PantechError {\n return err instanceof PantechError && (code === undefined || err.code === code);\n}\n\nconst STATUS_TEXT: Record<number, string> = {\n 400: \"Bad request\",\n 401: \"Unauthorized\",\n 402: \"Payment required\",\n 403: \"Forbidden\",\n 404: \"Not found\",\n 405: \"Method not allowed\",\n 409: \"Conflict\",\n 413: \"Request too large\",\n 415: \"Unsupported media type\",\n 422: \"Validation failed\",\n 429: \"Too many requests\",\n 500: \"Internal server error\",\n 502: \"Bad gateway\",\n 503: \"Service unavailable\",\n 504: \"Gateway timeout\",\n};\n\ninterface ProblemBody {\n type?: unknown;\n title?: unknown;\n code?: unknown;\n detail?: unknown;\n request_id?: unknown;\n errors?: unknown;\n}\n\nconst str = (v: unknown): string | undefined => (typeof v === \"string\" && v !== \"\" ? v : undefined);\n\nfunction fieldErrors(v: unknown): FieldError[] {\n if (!Array.isArray(v)) return [];\n return v\n .filter((e): e is Record<string, unknown> => typeof e === \"object\" && e !== null)\n .map((e) => ({ field: String(e.field ?? \"\"), code: String(e.code ?? \"\"), message: String(e.message ?? \"\") }));\n}\n\n/**\n * Builds the error for a non-2xx response from its problem document. A body\n * that is not one (a proxy's HTML error page, say) is never shown: the status\n * says what happened.\n */\nexport function errorFromResponse(\n status: number,\n headers: Headers,\n bodyText: string,\n retryAfterSeconds?: number,\n): PantechError {\n let problem: ProblemBody | undefined;\n try {\n const parsed: unknown = JSON.parse(bodyText);\n if (typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed)) problem = parsed as ProblemBody;\n } catch {\n problem = undefined;\n }\n const code = str(problem?.code);\n const title = str(problem?.title);\n let detail = str(problem?.detail);\n const errors = fieldErrors(problem?.errors);\n const requestId = str(problem?.request_id) ?? headers.get(\"x-request-id\") ?? undefined;\n const isProblem = code !== undefined || detail !== undefined || title !== undefined || errors.length > 0;\n\n if (!isProblem) {\n const text = STATUS_TEXT[status] ?? `HTTP ${status}`;\n detail =\n status >= 500\n ? `The Pantech API is temporarily unavailable (${status} ${text}). Try again in a moment.`\n : `The Pantech API refused the request (${status} ${text}).`;\n }\n\n let message = detail ?? title ?? STATUS_TEXT[status] ?? `HTTP ${status}`;\n const tags = [code, requestId ? `request ${requestId}` : undefined].filter(Boolean);\n if (tags.length > 0) message += ` (${tags.join(\", \")})`;\n\n const init: PantechErrorInit = {\n status,\n code,\n title,\n detail,\n requestId,\n errors,\n type: str(problem?.type),\n headers,\n };\n switch (true) {\n case status === 400:\n return new BadRequestError(message, init);\n case status === 401:\n return new AuthenticationError(message, init);\n case status === 402:\n return new PaymentRequiredError(message, init);\n case status === 403:\n return new PermissionDeniedError(message, init);\n case status === 404:\n return new NotFoundError(message, init);\n case status === 409:\n return new ConflictError(message, init);\n case status === 422:\n return new ValidationError(message, init);\n case status === 429:\n return new RateLimitError(message, { ...init, retryAfterSeconds });\n case status >= 500:\n return new InternalServerError(message, init);\n default:\n return new PantechError(message, init);\n }\n}\n","// Cursor pagination: lists return `{ data, next_cursor }`; pass `next_cursor`\n// back as `cursor` until it is null.\n\n/** One page of a list. */\nexport interface Page<T> {\n data: T[];\n next_cursor?: string | null;\n}\n\n/**\n * Yields every item of every page, fetching the next page only when the\n * caller gets that far. Stops at a null cursor, or at a cursor already seen.\n */\nexport async function* paginate<T>(\n fetchPage: (cursor: string | undefined) => Promise<Page<T>>,\n startCursor?: string | null,\n): AsyncGenerator<T, void, undefined> {\n let cursor = startCursor ?? undefined;\n const seen = new Set<string>();\n for (;;) {\n const page = await fetchPage(cursor);\n for (const item of page.data ?? []) yield item;\n const next = page.next_cursor;\n if (!next || seen.has(next)) return;\n seen.add(next);\n cursor = next;\n }\n}\n","import type { APIRequest, HTTPMethod, Pantech, RequestOptions } from \"./client.js\";\nimport { type Page, paginate } from \"./pagination.js\";\n\ntype Extra = Pick<APIRequest, \"noRetry\" | \"responseType\">;\n\n/** The base of every resource: a thin, typed layer over Pantech.request. */\nexport abstract class APIResource {\n protected readonly _client: Pantech;\n\n constructor(client: Pantech) {\n this._client = client;\n }\n\n protected _request<T>(\n method: HTTPMethod,\n path: string,\n init: { query?: object; body?: unknown } & Extra = {},\n options?: RequestOptions,\n ): Promise<T> {\n return this._client.request<T>({ method, path, ...init }, options);\n }\n\n protected _get<T>(path: string, query?: object, options?: RequestOptions): Promise<T> {\n return this._request<T>(\"GET\", path, { query }, options);\n }\n\n protected _post<T>(path: string, body?: unknown, options?: RequestOptions, extra?: Extra): Promise<T> {\n return this._request<T>(\"POST\", path, { body, ...extra }, options);\n }\n\n protected _put<T>(path: string, body: unknown, options?: RequestOptions): Promise<T> {\n return this._request<T>(\"PUT\", path, { body }, options);\n }\n\n protected _patch<T>(path: string, body: unknown, options?: RequestOptions): Promise<T> {\n return this._request<T>(\"PATCH\", path, { body }, options);\n }\n\n protected _delete<T>(path: string, options?: RequestOptions, extra?: Extra): Promise<T> {\n return this._request<T>(\"DELETE\", path, extra, options);\n }\n\n /** Every item of a list, following `next_cursor` page by page. */\n protected _listAll<T>(\n path: string,\n params: object | undefined,\n options?: RequestOptions,\n ): AsyncGenerator<T, void, undefined> {\n return paginate<T>((cursor) => this._get<Page<T>>(path, { ...params, cursor }, options));\n }\n}\n","// Small runtime helpers with no dependencies, safe on every runtime.\n\nimport { PantechError } from \"./errors.js\";\n\n/** A random UUIDv4, from Web Crypto where the runtime has it. */\nexport function uuid(): string {\n const c = (globalThis as { crypto?: Crypto }).crypto;\n if (typeof c?.randomUUID === \"function\") return c.randomUUID();\n const b = new Uint8Array(16);\n if (typeof c?.getRandomValues === \"function\") {\n c.getRandomValues(b);\n } else {\n // Node.js 18 has no global Web Crypto. An Idempotency-Key only needs to\n // be unique per change, not secret.\n for (let i = 0; i < 16; i++) b[i] = Math.floor(Math.random() * 256);\n }\n b[6] = ((b[6] as number) & 0x0f) | 0x40;\n b[8] = ((b[8] as number) & 0x3f) | 0x80;\n const h = Array.from(b, (x) => x.toString(16).padStart(2, \"0\")).join(\"\");\n return `${h.slice(0, 8)}-${h.slice(8, 12)}-${h.slice(12, 16)}-${h.slice(16, 20)}-${h.slice(20)}`;\n}\n\n/** Reads an environment variable where the runtime has `process.env`; undefined elsewhere. */\nexport function readEnv(name: string): string | undefined {\n try {\n const proc = (globalThis as { process?: { env?: Record<string, string | undefined> } }).process;\n const value = proc?.env?.[name]?.trim();\n return value ? value : undefined;\n } catch {\n // Deno without --allow-env throws on access.\n return undefined;\n }\n}\n\n/** Resolves after `ms`, or rejects with the signal's reason when it aborts first. */\nexport function sleep(ms: number, signal?: AbortSignal): Promise<void> {\n return new Promise((resolve, reject) => {\n if (signal?.aborted) {\n reject(signal.reason);\n return;\n }\n const onAbort = () => {\n clearTimeout(timer);\n reject(signal?.reason);\n };\n const timer = setTimeout(() => {\n signal?.removeEventListener(\"abort\", onAbort);\n resolve();\n }, ms);\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n });\n}\n\n/**\n * Builds a path from a template, percent-encoding each id. An empty id is\n * refused, so `delete(\"\")` can never reach a different endpoint.\n */\nexport function path(strings: TemplateStringsArray, ...ids: string[]): string {\n let out = strings[0] ?? \"\";\n ids.forEach((id, i) => {\n if (typeof id !== \"string\" || id === \"\") {\n throw new PantechError(\"A resource id is required, and it must be a non-empty string.\");\n }\n out += encodeURIComponent(id) + (strings[i + 1] ?? \"\");\n });\n return out;\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { APIResource } from \"../resource.js\";\nimport type { BodyOf as B, ItemOf as I, ListParams as L, ListAllParams as LA, ResponseOf as R } from \"../types.js\";\nimport { path } from \"../util.js\";\n\n/** Your credit, and whether it covers your next invoice. */\nexport class Billing extends APIResource {\n readonly credit: Credit = new Credit(this._client);\n readonly receipts: Receipts = new Receipts(this._client);\n}\n\nexport class Credit extends APIResource {\n readonly purchases: CreditPurchases = new CreditPurchases(this._client);\n\n /** Your credit balance and whether it covers the next invoice. */\n get(options?: RequestOptions): Promise<R<\"getCredit\">> {\n return this._get(\"/billing/credit\", undefined, options);\n }\n}\n\nexport class CreditPurchases extends APIResource {\n /** Creates a payment link that adds credit: send its `checkout_url` to whoever pays. */\n create(body: B<\"createCreditPurchase\">, options?: RequestOptions): Promise<R<\"createCreditPurchase\">> {\n return this._post(\"/billing/credit/purchases\", body, options);\n }\n\n get(purchaseId: string, options?: RequestOptions): Promise<R<\"getCreditPurchase\">> {\n return this._get(path`/billing/credit/purchases/${purchaseId}`, undefined, options);\n }\n}\n\nexport class Receipts extends APIResource {\n list(params: L<\"listReceipts\"> = {}, options?: RequestOptions): Promise<R<\"listReceipts\">> {\n return this._get(\"/billing/receipts\", params, options);\n }\n\n listAll(params: LA<\"listReceipts\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listReceipts\">> {\n return this._listAll(\"/billing/receipts\", params, options);\n }\n\n get(receiptId: string, options?: RequestOptions): Promise<R<\"getReceipt\">> {\n return this._get(path`/billing/receipts/${receiptId}`, undefined, options);\n }\n\n /** The receipt as a PDF document. */\n getPdf(receiptId: string, options?: RequestOptions): Promise<ArrayBuffer> {\n return this._request(\"GET\", path`/billing/receipts/${receiptId}/pdf`, { responseType: \"arrayBuffer\" }, options);\n }\n}\n","// What you can buy, and what it costs.\n\nimport type { RequestOptions } from \"../client.js\";\nimport { APIResource } from \"../resource.js\";\nimport type {\n BodyOf as B,\n ItemOf as I,\n ListParams as L,\n ListAllParams as LA,\n QueryOf as Q,\n ResponseOf as R,\n} from \"../types.js\";\nimport { path } from \"../util.js\";\n\nexport class Regions extends APIResource {\n list(params: L<\"listRegions\"> = {}, options?: RequestOptions): Promise<R<\"listRegions\">> {\n return this._get(\"/regions\", params, options);\n }\n\n listAll(params: LA<\"listRegions\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listRegions\">> {\n return this._listAll(\"/regions\", params, options);\n }\n}\n\nexport class Plans extends APIResource {\n list(params: L<\"listPlans\"> = {}, options?: RequestOptions): Promise<R<\"listPlans\">> {\n return this._get(\"/plans\", params, options);\n }\n\n listAll(params: LA<\"listPlans\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listPlans\">> {\n return this._listAll(\"/plans\", params, options);\n }\n}\n\nexport class Images extends APIResource {\n list(params: L<\"listImages\"> = {}, options?: RequestOptions): Promise<R<\"listImages\">> {\n return this._get(\"/images\", params, options);\n }\n\n listAll(params: LA<\"listImages\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listImages\">> {\n return this._listAll(\"/images\", params, options);\n }\n}\n\nexport class DiskOfferings extends APIResource {\n list(params: L<\"listDiskOfferings\"> = {}, options?: RequestOptions): Promise<R<\"listDiskOfferings\">> {\n return this._get(\"/disk-offerings\", params, options);\n }\n\n listAll(params: LA<\"listDiskOfferings\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listDiskOfferings\">> {\n return this._listAll(\"/disk-offerings\", params, options);\n }\n\n /** What a volume of this offering costs. */\n quote(slug: string, params: Q<\"quoteDiskOffering\"> = {}, options?: RequestOptions): Promise<R<\"quoteDiskOffering\">> {\n return this._get(path`/disk-offerings/${slug}/quote`, params, options);\n }\n}\n\nexport class DatabaseEngines extends APIResource {\n list(params: L<\"listDatabaseEngines\"> = {}, options?: RequestOptions): Promise<R<\"listDatabaseEngines\">> {\n return this._get(\"/database-engines\", params, options);\n }\n\n listAll(params: LA<\"listDatabaseEngines\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listDatabaseEngines\">> {\n return this._listAll(\"/database-engines\", params, options);\n }\n}\n\nexport class KubernetesVersions extends APIResource {\n /** The Kubernetes versions a new cluster can run, and the zones that offer high availability. */\n list(params: Q<\"listKubernetesVersions\"> = {}, options?: RequestOptions): Promise<R<\"listKubernetesVersions\">> {\n return this._get(\"/kubernetes-versions\", params, options);\n }\n}\n\nexport class Pricing extends APIResource {\n /** Prices a set of instances, volumes and other resources. Changes nothing. */\n estimate(body: B<\"estimatePricing\">, options?: RequestOptions): Promise<R<\"estimatePricing\">> {\n return this._post(\"/pricing/estimate\", body, options);\n }\n}\n","// Polling for asynchronous changes: operations, and instance and database orders.\n\nimport { WaitTimeoutError } from \"./errors.js\";\nimport { sleep } from \"./util.js\";\n\nexport interface WaitOptions<T = unknown> {\n /** Give up after this many milliseconds. Default 20 minutes. */\n timeoutMs?: number;\n /** Milliseconds between polls. Default 2000. */\n pollIntervalMs?: number;\n /** Stops waiting (and the request in flight). */\n signal?: AbortSignal;\n /** Called with each state read while waiting. */\n onUpdate?: (value: T) => void;\n}\n\nexport const DEFAULT_WAIT_TIMEOUT_MS = 20 * 60_000;\nexport const DEFAULT_POLL_INTERVAL_MS = 2_000;\n\n/**\n * Calls `read` until `done` returns true (resolve) or throws (fail), or the\n * deadline passes.\n */\nexport async function poll<T>(\n read: () => Promise<T>,\n done: (value: T) => boolean,\n what: string,\n options: WaitOptions<T> = {},\n): Promise<T> {\n const timeoutMs = options.timeoutMs ?? DEFAULT_WAIT_TIMEOUT_MS;\n const interval = Math.max(0, options.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS);\n const deadline = Date.now() + timeoutMs;\n for (;;) {\n const value = await read();\n options.onUpdate?.(value);\n if (done(value)) return value;\n if (Date.now() + interval > deadline) {\n throw new WaitTimeoutError(\n `${what} did not finish within ${Math.round(timeoutMs / 1000)} seconds. It may still finish: check it again later.`,\n );\n }\n await sleep(interval, options.signal);\n }\n}\n","// Waiting for an instance or database order: paid, then provisioned, then\n// (by default) its create operation finished.\n\nimport type { Pantech } from \"./client.js\";\nimport { OrderFailedError } from \"./errors.js\";\nimport { DEFAULT_WAIT_TIMEOUT_MS, poll, type WaitOptions } from \"./wait.js\";\n\nexport interface OrderWaitOptions<T> extends WaitOptions<T> {\n /**\n * Also wait for the order's create operation once it is provisioned, so\n * the instance or database is ready to use. Default true.\n */\n waitForOperation?: boolean;\n}\n\ninterface OrderLike {\n status: string;\n operation_id?: string | null;\n failure_code?: string | null;\n}\n\n/** An order id, or the `202` body of a create that carries one. */\nexport type OrderRef = string | { order_id: string };\n\nexport const orderId = (ref: OrderRef): string => (typeof ref === \"string\" ? ref : ref.order_id);\n\nexport async function waitForOrder<T extends OrderLike>(\n client: Pantech,\n read: (signal?: AbortSignal) => Promise<T>,\n what: string,\n options: OrderWaitOptions<T> = {},\n): Promise<T> {\n const started = Date.now();\n const timeoutMs = options.timeoutMs ?? DEFAULT_WAIT_TIMEOUT_MS;\n const order = await poll(\n () => read(options.signal),\n (o) => {\n if (o.status === \"failed\" || o.status === \"payment_failed\") {\n const code = o.failure_code ?? o.status;\n throw new OrderFailedError(\n `${what} ${o.status === \"payment_failed\" ? \"could not be paid\" : \"failed\"} (${code}). Any payment taken is returned to your credit.`,\n o,\n { code },\n );\n }\n return o.status === \"provisioned\";\n },\n what,\n options,\n );\n if (options.waitForOperation !== false && order.operation_id) {\n await client.operations.wait(order.operation_id, {\n timeoutMs: Math.max(0, timeoutMs - (Date.now() - started)),\n pollIntervalMs: options.pollIntervalMs,\n signal: options.signal,\n });\n }\n return order;\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { type OrderRef, type OrderWaitOptions, orderId, waitForOrder } from \"../orders.js\";\nimport { APIResource } from \"../resource.js\";\nimport type { BodyOf as B, ItemOf as I, ListParams as L, ListAllParams as LA, ResponseOf as R } from \"../types.js\";\nimport { path } from \"../util.js\";\n\n/** Managed PostgreSQL, MySQL and MariaDB databases. */\nexport class Databases extends APIResource {\n /** Snapshots of a database. */\n readonly snapshots: DatabaseSnapshots = new DatabaseSnapshots(this._client);\n\n list(params: L<\"listDatabases\"> = {}, options?: RequestOptions): Promise<R<\"listDatabases\">> {\n return this._get(\"/databases\", params, options);\n }\n\n listAll(params: LA<\"listDatabases\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listDatabases\">> {\n return this._listAll(\"/databases\", params, options);\n }\n\n /**\n * Orders a database. A generated admin password is in this response only;\n * follow the order with `client.databaseOrders.wait(order)`.\n */\n create(body: B<\"createDatabase\">, options?: RequestOptions): Promise<R<\"createDatabase\">> {\n return this._post(\"/databases\", body, options);\n }\n\n get(databaseId: string, options?: RequestOptions): Promise<R<\"getDatabase\">> {\n return this._get(path`/databases/${databaseId}`, undefined, options);\n }\n\n delete(databaseId: string, options?: RequestOptions): Promise<R<\"deleteDatabase\">> {\n return this._delete(path`/databases/${databaseId}`, options);\n }\n\n /** Replaces the CIDRs allowed to connect. */\n replaceAccessRules(\n databaseId: string,\n body: B<\"replaceDatabaseAccessRules\">,\n options?: RequestOptions,\n ): Promise<R<\"replaceDatabaseAccessRules\">> {\n return this._put(path`/databases/${databaseId}/access-rules`, body, options);\n }\n\n /** Replaces the attached security groups. */\n setSecurityGroups(\n databaseId: string,\n body: B<\"setDatabaseSecurityGroups\">,\n options?: RequestOptions,\n ): Promise<R<\"setDatabaseSecurityGroups\">> {\n return this._put(path`/databases/${databaseId}/security-groups`, body, options);\n }\n\n changePassword(\n databaseId: string,\n body: B<\"changeDatabasePassword\">,\n options?: RequestOptions,\n ): Promise<R<\"changeDatabasePassword\">> {\n return this._put(path`/databases/${databaseId}/password`, body, options);\n }\n\n /** Generates a new admin password, returned in this response only. */\n resetPassword(databaseId: string, options?: RequestOptions): Promise<R<\"resetDatabasePassword\">> {\n return this._post(path`/databases/${databaseId}/reset-password`, undefined, options);\n }\n\n start(databaseId: string, options?: RequestOptions): Promise<R<\"startDatabase\">> {\n return this._post(path`/databases/${databaseId}/start`, undefined, options);\n }\n\n stop(databaseId: string, options?: RequestOptions): Promise<R<\"stopDatabase\">> {\n return this._post(path`/databases/${databaseId}/stop`, undefined, options);\n }\n\n resizeStorage(\n databaseId: string,\n body: B<\"resizeDatabaseStorage\">,\n options?: RequestOptions,\n ): Promise<R<\"resizeDatabaseStorage\">> {\n return this._post(path`/databases/${databaseId}/resize-storage`, body, options);\n }\n}\n\nexport class DatabaseSnapshots extends APIResource {\n list(\n databaseId: string,\n params: L<\"listDatabaseSnapshots\"> = {},\n options?: RequestOptions,\n ): Promise<R<\"listDatabaseSnapshots\">> {\n return this._get(path`/databases/${databaseId}/snapshots`, params, options);\n }\n\n listAll(\n databaseId: string,\n params: LA<\"listDatabaseSnapshots\"> = {},\n options?: RequestOptions,\n ): AsyncGenerator<I<\"listDatabaseSnapshots\">> {\n return this._listAll(path`/databases/${databaseId}/snapshots`, params, options);\n }\n\n create(\n databaseId: string,\n body: B<\"createDatabaseSnapshot\">,\n options?: RequestOptions,\n ): Promise<R<\"createDatabaseSnapshot\">> {\n return this._post(path`/databases/${databaseId}/snapshots`, body, options);\n }\n\n get(databaseId: string, snapshotId: string, options?: RequestOptions): Promise<R<\"getDatabaseSnapshot\">> {\n return this._get(path`/databases/${databaseId}/snapshots/${snapshotId}`, undefined, options);\n }\n\n delete(databaseId: string, snapshotId: string, options?: RequestOptions): Promise<R<\"deleteDatabaseSnapshot\">> {\n return this._delete(path`/databases/${databaseId}/snapshots/${snapshotId}`, options);\n }\n}\n\n/** How a new database is paid for and provisioned. */\nexport class DatabaseOrders extends APIResource {\n list(params: L<\"listDatabaseOrders\"> = {}, options?: RequestOptions): Promise<R<\"listDatabaseOrders\">> {\n return this._get(\"/database-orders\", params, options);\n }\n\n listAll(params: LA<\"listDatabaseOrders\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listDatabaseOrders\">> {\n return this._listAll(\"/database-orders\", params, options);\n }\n\n get(orderId: string, options?: RequestOptions): Promise<R<\"getDatabaseOrder\">> {\n return this._get(path`/database-orders/${orderId}`, undefined, options);\n }\n\n /**\n * Polls the order until it is provisioned and (by default) the database's\n * create operation has finished. Rejects with OrderFailedError or\n * OperationFailedError. Accepts an id or the body `databases.create` returned.\n */\n wait(ref: OrderRef, options: OrderWaitOptions<R<\"getDatabaseOrder\">> = {}): Promise<R<\"getDatabaseOrder\">> {\n const id = orderId(ref);\n return waitForOrder(this._client, (signal) => this.get(id, { signal }), `Database order ${id}`, options);\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { type OrderRef, type OrderWaitOptions, orderId, waitForOrder } from \"../orders.js\";\nimport { APIResource } from \"../resource.js\";\nimport type {\n BodyOf as B,\n ItemOf as I,\n ListParams as L,\n ListAllParams as LA,\n QueryOf as Q,\n ResponseOf as R,\n} from \"../types.js\";\nimport { path } from \"../util.js\";\n\n/** Virtual machines: create, power, change, delete. */\nexport class Instances extends APIResource {\n /** Snapshots of an instance's root disk. */\n readonly snapshots: InstanceSnapshots = new InstanceSnapshots(this._client);\n /** Short-lived SSH access grants through the browser terminal relay. */\n readonly sshAccess: InstanceSshAccess = new InstanceSshAccess(this._client);\n\n /** One page of your instances. */\n list(params: L<\"listInstances\"> = {}, options?: RequestOptions): Promise<R<\"listInstances\">> {\n return this._get(\"/instances\", params, options);\n }\n\n /** Every instance: `for await (const vm of client.instances.listAll())`. */\n listAll(params: LA<\"listInstances\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listInstances\">> {\n return this._listAll(\"/instances\", params, options);\n }\n\n /**\n * Orders an instance. The initial payment is taken first, then it is\n * provisioned: follow the order with `client.instanceOrders.wait(order)`.\n */\n create(body: B<\"createInstance\">, options?: RequestOptions): Promise<R<\"createInstance\">> {\n return this._post(\"/instances\", body, options);\n }\n\n get(instanceId: string, options?: RequestOptions): Promise<R<\"getInstance\">> {\n return this._get(path`/instances/${instanceId}`, undefined, options);\n }\n\n delete(instanceId: string, options?: RequestOptions): Promise<R<\"deleteInstance\">> {\n return this._delete(path`/instances/${instanceId}`, options);\n }\n\n start(instanceId: string, options?: RequestOptions): Promise<R<\"startInstance\">> {\n return this._post(path`/instances/${instanceId}/start`, undefined, options);\n }\n\n stop(instanceId: string, options?: RequestOptions): Promise<R<\"stopInstance\">> {\n return this._post(path`/instances/${instanceId}/stop`, undefined, options);\n }\n\n reboot(instanceId: string, options?: RequestOptions): Promise<R<\"rebootInstance\">> {\n return this._post(path`/instances/${instanceId}/reboot`, undefined, options);\n }\n\n /** Reinstalls the root disk from an image. Everything on it is lost. */\n rebuild(instanceId: string, body: B<\"rebuildInstance\">, options?: RequestOptions): Promise<R<\"rebuildInstance\">> {\n return this._post(path`/instances/${instanceId}/rebuild`, body, options);\n }\n\n rename(instanceId: string, body: B<\"renameInstance\">, options?: RequestOptions): Promise<R<\"renameInstance\">> {\n return this._post(path`/instances/${instanceId}/rename`, body, options);\n }\n\n /** Moves the instance to a bigger plan. */\n resize(instanceId: string, body: B<\"resizeInstance\">, options?: RequestOptions): Promise<R<\"resizeInstance\">> {\n return this._post(path`/instances/${instanceId}/resize`, body, options);\n }\n\n changeSshKey(\n instanceId: string,\n body: B<\"changeInstanceSSHKey\">,\n options?: RequestOptions,\n ): Promise<R<\"changeInstanceSSHKey\">> {\n return this._post(path`/instances/${instanceId}/change-ssh-key`, body, options);\n }\n\n /** Restores the root disk from a snapshot. Changes since then are lost. */\n restore(instanceId: string, body: B<\"restoreInstance\">, options?: RequestOptions): Promise<R<\"restoreInstance\">> {\n return this._post(path`/instances/${instanceId}/restore`, body, options);\n }\n\n changeSecurityGroup(\n instanceId: string,\n body: B<\"changeInstanceSecurityGroup\">,\n options?: RequestOptions,\n ): Promise<R<\"changeInstanceSecurityGroup\">> {\n return this._put(path`/instances/${instanceId}/security-group`, body, options);\n }\n\n attachPrivateNetwork(instanceId: string, options?: RequestOptions): Promise<R<\"attachInstancePrivateNetwork\">> {\n return this._post(path`/instances/${instanceId}/private-network`, undefined, options);\n }\n\n detachPrivateNetwork(instanceId: string, options?: RequestOptions): Promise<R<\"detachInstancePrivateNetwork\">> {\n return this._delete(path`/instances/${instanceId}/private-network`, options);\n }\n\n /** A short-lived URL to the instance's console. Sent once: the API does not replay it. */\n openConsole(instanceId: string, options?: RequestOptions): Promise<R<\"openInstanceConsole\">> {\n return this._post(path`/instances/${instanceId}/console`, undefined, options, { noRetry: true });\n }\n\n /** Issues a credential that unlocks the instance's encrypted volumes. Sent once: the API does not replay it. */\n issueVolumeKeyCredential(instanceId: string, options?: RequestOptions): Promise<R<\"issueVolumeKeyCredential\">> {\n return this._post(path`/instances/${instanceId}/volume-key-credential`, undefined, options, { noRetry: true });\n }\n\n metrics(\n instanceId: string,\n params: Q<\"getInstanceMetrics\"> = {},\n options?: RequestOptions,\n ): Promise<R<\"getInstanceMetrics\">> {\n return this._get(path`/instances/${instanceId}/metrics`, params, options);\n }\n\n usage(instanceId: string, options?: RequestOptions): Promise<R<\"getInstanceUsage\">> {\n return this._get(path`/instances/${instanceId}/usage`, undefined, options);\n }\n\n /** One page of the volumes attached to the instance. */\n listVolumes(\n instanceId: string,\n params: L<\"listInstanceVolumes\"> = {},\n options?: RequestOptions,\n ): Promise<R<\"listInstanceVolumes\">> {\n return this._get(path`/instances/${instanceId}/volumes`, params, options);\n }\n\n listAllVolumes(\n instanceId: string,\n params: LA<\"listInstanceVolumes\"> = {},\n options?: RequestOptions,\n ): AsyncGenerator<I<\"listInstanceVolumes\">> {\n return this._listAll(path`/instances/${instanceId}/volumes`, params, options);\n }\n\n getSnapshotSchedule(instanceId: string, options?: RequestOptions): Promise<R<\"getInstanceSnapshotSchedule\">> {\n return this._get(path`/instances/${instanceId}/snapshot-schedule`, undefined, options);\n }\n\n setSnapshotSchedule(\n instanceId: string,\n body: B<\"putInstanceSnapshotSchedule\">,\n options?: RequestOptions,\n ): Promise<R<\"putInstanceSnapshotSchedule\">> {\n return this._put(path`/instances/${instanceId}/snapshot-schedule`, body, options);\n }\n}\n\nexport class InstanceSnapshots extends APIResource {\n list(\n instanceId: string,\n params: L<\"listInstanceSnapshots\"> = {},\n options?: RequestOptions,\n ): Promise<R<\"listInstanceSnapshots\">> {\n return this._get(path`/instances/${instanceId}/snapshots`, params, options);\n }\n\n listAll(\n instanceId: string,\n params: LA<\"listInstanceSnapshots\"> = {},\n options?: RequestOptions,\n ): AsyncGenerator<I<\"listInstanceSnapshots\">> {\n return this._listAll(path`/instances/${instanceId}/snapshots`, params, options);\n }\n\n create(\n instanceId: string,\n body: B<\"createInstanceSnapshot\">,\n options?: RequestOptions,\n ): Promise<R<\"createInstanceSnapshot\">> {\n return this._post(path`/instances/${instanceId}/snapshots`, body, options);\n }\n}\n\nexport class InstanceSshAccess extends APIResource {\n open(instanceId: string, options?: RequestOptions): Promise<R<\"openSSHAccess\">> {\n return this._post(path`/instances/${instanceId}/ssh-access`, undefined, options);\n }\n\n get(instanceId: string, grantId: string, options?: RequestOptions): Promise<R<\"getSSHAccess\">> {\n return this._get(path`/instances/${instanceId}/ssh-access/${grantId}`, undefined, options);\n }\n\n revoke(instanceId: string, grantId: string, options?: RequestOptions): Promise<R<\"revokeSSHAccess\">> {\n return this._delete(path`/instances/${instanceId}/ssh-access/${grantId}`, options);\n }\n}\n\n/** How a new instance is paid for and provisioned. */\nexport class InstanceOrders extends APIResource {\n list(params: L<\"listInstanceOrders\"> = {}, options?: RequestOptions): Promise<R<\"listInstanceOrders\">> {\n return this._get(\"/instance-orders\", params, options);\n }\n\n listAll(params: LA<\"listInstanceOrders\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listInstanceOrders\">> {\n return this._listAll(\"/instance-orders\", params, options);\n }\n\n get(orderId: string, options?: RequestOptions): Promise<R<\"getInstanceOrder\">> {\n return this._get(path`/instance-orders/${orderId}`, undefined, options);\n }\n\n /**\n * Polls the order until it is provisioned and (by default) the instance's\n * create operation has finished. Rejects with OrderFailedError when the\n * order fails or cannot be paid, and OperationFailedError when the create\n * fails. Accepts an id or the body `instances.create` returned.\n */\n wait(ref: OrderRef, options: OrderWaitOptions<R<\"getInstanceOrder\">> = {}): Promise<R<\"getInstanceOrder\">> {\n const id = orderId(ref);\n return waitForOrder(this._client, (signal) => this.get(id, { signal }), `Instance order ${id}`, options);\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { APIResource } from \"../resource.js\";\nimport type { BodyOf as B, ItemOf as I, ListParams as L, ListAllParams as LA, ResponseOf as R } from \"../types.js\";\nimport { path } from \"../util.js\";\n\n/** Managed Kubernetes clusters whose nodes are VMs in your account. */\nexport class Kubernetes extends APIResource {\n /** A cluster's node pools. */\n readonly nodePools: KubernetesNodePools = new KubernetesNodePools(this._client);\n /** A cluster's add-ons. */\n readonly addons: KubernetesAddons = new KubernetesAddons(this._client);\n\n list(params: L<\"listKubernetesClusters\"> = {}, options?: RequestOptions): Promise<R<\"listKubernetesClusters\">> {\n return this._get(\"/kubernetes-clusters\", params, options);\n }\n\n listAll(\n params: LA<\"listKubernetesClusters\"> = {},\n options?: RequestOptions,\n ): AsyncGenerator<I<\"listKubernetesClusters\">> {\n return this._listAll(\"/kubernetes-clusters\", params, options);\n }\n\n create(body: B<\"createKubernetesCluster\">, options?: RequestOptions): Promise<R<\"createKubernetesCluster\">> {\n return this._post(\"/kubernetes-clusters\", body, options);\n }\n\n get(clusterId: string, options?: RequestOptions): Promise<R<\"getKubernetesCluster\">> {\n return this._get(path`/kubernetes-clusters/${clusterId}`, undefined, options);\n }\n\n /** Changes the cluster's size (`PATCH`). */\n update(\n clusterId: string,\n body: B<\"scaleKubernetesCluster\">,\n options?: RequestOptions,\n ): Promise<R<\"scaleKubernetesCluster\">> {\n return this._patch(path`/kubernetes-clusters/${clusterId}`, body, options);\n }\n\n delete(clusterId: string, options?: RequestOptions): Promise<R<\"deleteKubernetesCluster\">> {\n return this._delete(path`/kubernetes-clusters/${clusterId}`, options);\n }\n\n /** Upgrades the cluster to a newer Kubernetes version. */\n upgrade(\n clusterId: string,\n body: B<\"upgradeKubernetesCluster\">,\n options?: RequestOptions,\n ): Promise<R<\"upgradeKubernetesCluster\">> {\n return this._post(path`/kubernetes-clusters/${clusterId}/upgrade`, body, options);\n }\n\n /** Moves every node to another plan. */\n resizePlan(\n clusterId: string,\n body: B<\"resizeKubernetesClusterPlan\">,\n options?: RequestOptions,\n ): Promise<R<\"resizeKubernetesClusterPlan\">> {\n return this._post(path`/kubernetes-clusters/${clusterId}/resize-plan`, body, options);\n }\n\n /** Changes the cluster's networking. */\n upgradeNetwork(\n clusterId: string,\n body: B<\"upgradeKubernetesClusterNetwork\">,\n options?: RequestOptions,\n ): Promise<R<\"upgradeKubernetesClusterNetwork\">> {\n return this._post(path`/kubernetes-clusters/${clusterId}/upgrade-network`, body, options);\n }\n\n start(clusterId: string, options?: RequestOptions): Promise<R<\"startKubernetesCluster\">> {\n return this._post(path`/kubernetes-clusters/${clusterId}/start`, undefined, options);\n }\n\n stop(clusterId: string, options?: RequestOptions): Promise<R<\"stopKubernetesCluster\">> {\n return this._post(path`/kubernetes-clusters/${clusterId}/stop`, undefined, options);\n }\n\n /** The cluster's kubeconfig. It holds credentials: store it securely. */\n getKubeconfig(clusterId: string, options?: RequestOptions): Promise<R<\"getKubernetesKubeconfig\">> {\n return this._post(path`/kubernetes-clusters/${clusterId}/kubeconfig`, undefined, options);\n }\n\n listNodes(clusterId: string, options?: RequestOptions): Promise<R<\"listKubernetesClusterNodes\">> {\n return this._get(path`/kubernetes-clusters/${clusterId}/nodes`, undefined, options);\n }\n\n getWorkloads(clusterId: string, options?: RequestOptions): Promise<R<\"getKubernetesWorkloads\">> {\n return this._get(path`/kubernetes-clusters/${clusterId}/workloads`, undefined, options);\n }\n\n applyManifest(\n clusterId: string,\n body: B<\"applyKubernetesManifest\">,\n options?: RequestOptions,\n ): Promise<R<\"applyKubernetesManifest\">> {\n return this._post(path`/kubernetes-clusters/${clusterId}/apply-manifest`, body, options);\n }\n\n getLiveManifests(clusterId: string, options?: RequestOptions): Promise<R<\"getKubernetesLiveManifests\">> {\n return this._get(path`/kubernetes-clusters/${clusterId}/live-manifests`, undefined, options);\n }\n\n exposeService(\n clusterId: string,\n body: B<\"exposeKubernetesService\">,\n options?: RequestOptions,\n ): Promise<R<\"exposeKubernetesService\">> {\n return this._post(path`/kubernetes-clusters/${clusterId}/expose-service`, body, options);\n }\n\n syncRouting(clusterId: string, options?: RequestOptions): Promise<R<\"syncKubernetesRouting\">> {\n return this._post(path`/kubernetes-clusters/${clusterId}/sync-routing`, undefined, options);\n }\n\n /** Sets whether the cluster's API endpoint is private, public or both. */\n configureEndpointAccess(\n clusterId: string,\n body: B<\"configureKubernetesEndpointAccess\">,\n options?: RequestOptions,\n ): Promise<R<\"configureKubernetesEndpointAccess\">> {\n return this._post(path`/kubernetes-clusters/${clusterId}/endpoint-access`, body, options);\n }\n}\n\nexport class KubernetesNodePools extends APIResource {\n list(\n clusterId: string,\n params: L<\"listKubernetesNodePools\"> = {},\n options?: RequestOptions,\n ): Promise<R<\"listKubernetesNodePools\">> {\n return this._get(path`/kubernetes-clusters/${clusterId}/node-pools`, params, options);\n }\n\n listAll(\n clusterId: string,\n params: LA<\"listKubernetesNodePools\"> = {},\n options?: RequestOptions,\n ): AsyncGenerator<I<\"listKubernetesNodePools\">> {\n return this._listAll(path`/kubernetes-clusters/${clusterId}/node-pools`, params, options);\n }\n\n create(\n clusterId: string,\n body: B<\"createKubernetesNodePool\">,\n options?: RequestOptions,\n ): Promise<R<\"createKubernetesNodePool\">> {\n return this._post(path`/kubernetes-clusters/${clusterId}/node-pools`, body, options);\n }\n\n /** Sets the pool's whole size: a missing `autoscaling_enabled` turns autoscaling off. */\n scale(\n clusterId: string,\n poolId: string,\n body: B<\"scaleKubernetesNodePool\">,\n options?: RequestOptions,\n ): Promise<R<\"scaleKubernetesNodePool\">> {\n return this._patch(path`/kubernetes-clusters/${clusterId}/node-pools/${poolId}`, body, options);\n }\n\n delete(clusterId: string, poolId: string, options?: RequestOptions): Promise<R<\"deleteKubernetesNodePool\">> {\n return this._delete(path`/kubernetes-clusters/${clusterId}/node-pools/${poolId}`, options);\n }\n}\n\nexport class KubernetesAddons extends APIResource {\n list(\n clusterId: string,\n params: L<\"listKubernetesAddons\"> = {},\n options?: RequestOptions,\n ): Promise<R<\"listKubernetesAddons\">> {\n return this._get(path`/kubernetes-clusters/${clusterId}/addons`, params, options);\n }\n\n listAll(\n clusterId: string,\n params: LA<\"listKubernetesAddons\"> = {},\n options?: RequestOptions,\n ): AsyncGenerator<I<\"listKubernetesAddons\">> {\n return this._listAll(path`/kubernetes-clusters/${clusterId}/addons`, params, options);\n }\n\n /** Turns an add-on on or off. */\n toggle(\n clusterId: string,\n addonName: string,\n body: B<\"toggleKubernetesAddon\">,\n options?: RequestOptions,\n ): Promise<R<\"toggleKubernetesAddon\">> {\n return this._post(path`/kubernetes-clusters/${clusterId}/addons/${addonName}/toggle`, body, options);\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { APIResource } from \"../resource.js\";\nimport type { BodyOf as B, ItemOf as I, ListParams as L, ListAllParams as LA, ResponseOf as R } from \"../types.js\";\nimport { path } from \"../util.js\";\n\n/** Spread traffic on one public port across several instances in a private network. */\nexport class LoadBalancers extends APIResource {\n list(params: L<\"listLoadBalancers\"> = {}, options?: RequestOptions): Promise<R<\"listLoadBalancers\">> {\n return this._get(\"/load-balancers\", params, options);\n }\n\n listAll(params: LA<\"listLoadBalancers\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listLoadBalancers\">> {\n return this._listAll(\"/load-balancers\", params, options);\n }\n\n create(body: B<\"createLoadBalancer\">, options?: RequestOptions): Promise<R<\"createLoadBalancer\">> {\n return this._post(\"/load-balancers\", body, options);\n }\n\n get(loadBalancerId: string, options?: RequestOptions): Promise<R<\"getLoadBalancer\">> {\n return this._get(path`/load-balancers/${loadBalancerId}`, undefined, options);\n }\n\n update(\n loadBalancerId: string,\n body: B<\"updateLoadBalancer\">,\n options?: RequestOptions,\n ): Promise<R<\"updateLoadBalancer\">> {\n return this._patch(path`/load-balancers/${loadBalancerId}`, body, options);\n }\n\n delete(loadBalancerId: string, options?: RequestOptions): Promise<R<\"deleteLoadBalancer\">> {\n return this._delete(path`/load-balancers/${loadBalancerId}`, options);\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport type { Me } from \"../models.js\";\nimport { APIResource } from \"../resource.js\";\n\nexport class MeResource extends APIResource {\n /** The organization and project the key acts in, its scopes, kind and expiry. */\n get(options?: RequestOptions): Promise<Me> {\n return this._get(\"/me\", undefined, options);\n }\n\n /**\n * Revokes the API key making the call. Every later call with it is a\n * `401`. Sent once: a retry would find the key gone.\n */\n revoke(options?: RequestOptions): Promise<void> {\n return this._delete(\"/me\", options, { noRetry: true });\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { CloudFailedError } from \"../errors.js\";\nimport type { CloudConnection, CloudFailure, CloudScan } from \"../models.js\";\nimport { APIResource } from \"../resource.js\";\nimport type {\n BodyOf as B,\n ItemOf as I,\n ListParams as L,\n ListAllParams as LA,\n QueryOf as Q,\n ResponseOf as R,\n} from \"../types.js\";\nimport { path } from \"../util.js\";\nimport { poll, type WaitOptions } from \"../wait.js\";\n\nconst CONNECTION_WAIT_MS = 10 * 60_000;\nconst SCAN_WAIT_MS = 30 * 60_000;\n\nfunction cloudFailed(kind: \"connection\" | \"scan\", id: string, failure: CloudFailure, resource: unknown) {\n const detail = failure?.message ?? `The ${kind} failed.`;\n const code = failure?.code;\n return new CloudFailedError(\n code ? `Cloud ${kind} ${id} failed: ${detail} (${code})` : `Cloud ${kind} ${id} failed: ${detail}`,\n kind,\n resource,\n { code, detail },\n );\n}\n\n/**\n * Move from another cloud: connect an AWS account through a read-only role\n * (no access keys are shared), scan what runs there, and plan the move to\n * Pantech with a price comparison and a Terraform export.\n */\nexport class Migrate extends APIResource {\n /** Connections to AWS accounts through a read-only role only Pantech can assume. */\n readonly connections: CloudConnections = new CloudConnections(this._client);\n /** Reads of everything a connection's role can see. */\n readonly scans: CloudScans = new CloudScans(this._client);\n /** Plans to move what a scan found to Pantech. Nothing is created until you apply the Terraform. */\n readonly migrations: Migrations = new Migrations(this._client);\n}\n\nexport class CloudConnections extends APIResource {\n list(params: L<\"listCloudConnections\"> = {}, options?: RequestOptions): Promise<R<\"listCloudConnections\">> {\n return this._get(\"/cloud-connections\", params, options);\n }\n\n listAll(\n params: LA<\"listCloudConnections\"> = {},\n options?: RequestOptions,\n ): AsyncGenerator<I<\"listCloudConnections\">> {\n return this._listAll(\"/cloud-connections\", params, options);\n }\n\n /**\n * Starts a connection. Its `setup` holds the CloudFormation template (and,\n * when offered, a one-click `quick_create_url`) that creates the read-only\n * role in your AWS account; send the stack's `RoleArn` output with `update`.\n */\n create(body: B<\"createCloudConnection\">, options?: RequestOptions): Promise<R<\"createCloudConnection\">> {\n return this._post(\"/cloud-connections\", body, options);\n }\n\n get(connectionId: string, options?: RequestOptions): Promise<R<\"getCloudConnection\">> {\n return this._get(path`/cloud-connections/${connectionId}`, undefined, options);\n }\n\n /** Renames the connection, sets its `role_arn`, or retries a failed check (`retry: true`). */\n update(\n connectionId: string,\n body: B<\"updateCloudConnection\">,\n options?: RequestOptions,\n ): Promise<R<\"updateCloudConnection\">> {\n return this._patch(path`/cloud-connections/${connectionId}`, body, options);\n }\n\n /** Removes the connection and its scans; plans made from it stay. Delete the stack in AWS to revoke the role there. */\n delete(connectionId: string, options?: RequestOptions): Promise<void> {\n return this._delete(path`/cloud-connections/${connectionId}`, options);\n }\n\n /**\n * Polls the connection until it is `connected` (resolves with it) or its\n * check fails (rejects with CloudFailedError). Set the role ARN with\n * `update` first. Default timeout 10 minutes, polling every 5 seconds.\n */\n wait(connectionId: string, options: WaitOptions<CloudConnection> = {}): Promise<CloudConnection> {\n return poll(\n () => this.get(connectionId, { signal: options.signal }),\n (c) => {\n if (c.status === \"failed\") throw cloudFailed(\"connection\", c.id, c.failure, c);\n return c.status === \"connected\";\n },\n `Cloud connection ${connectionId}`,\n { timeoutMs: CONNECTION_WAIT_MS, pollIntervalMs: 5_000, ...options },\n );\n }\n}\n\nexport class CloudScans extends APIResource {\n /** A connection's scans, newest first, without their inventories. */\n list(connectionId: string, params: L<\"listCloudScans\"> = {}, options?: RequestOptions): Promise<R<\"listCloudScans\">> {\n return this._get(path`/cloud-connections/${connectionId}/scans`, params, options);\n }\n\n listAll(\n connectionId: string,\n params: LA<\"listCloudScans\"> = {},\n options?: RequestOptions,\n ): AsyncGenerator<I<\"listCloudScans\">> {\n return this._listAll(path`/cloud-connections/${connectionId}/scans`, params, options);\n }\n\n /** Queues a scan of a connected account. Follow it with `wait`. */\n start(connectionId: string, options?: RequestOptions): Promise<R<\"startCloudScan\">> {\n return this._post(path`/cloud-connections/${connectionId}/scans`, undefined, options);\n }\n\n /** A scan's status and counts. Pass `{ include: \"inventory\" }` for everything it found. */\n get(scanId: string, params: Q<\"getCloudScan\"> = {}, options?: RequestOptions): Promise<R<\"getCloudScan\">> {\n return this._get(path`/cloud-scans/${scanId}`, params, options);\n }\n\n /**\n * Polls the scan until it `succeeded` (resolves with it, without its\n * inventory) or failed (rejects with CloudFailedError). Default timeout 30\n * minutes, polling every 10 seconds.\n */\n wait(scanId: string, options: WaitOptions<CloudScan> = {}): Promise<CloudScan> {\n return poll(\n () => this.get(scanId, {}, { signal: options.signal }),\n (s) => {\n if (s.status === \"failed\") throw cloudFailed(\"scan\", s.id, s.failure, s);\n return s.status === \"succeeded\";\n },\n `Cloud scan ${scanId}`,\n { timeoutMs: SCAN_WAIT_MS, pollIntervalMs: 10_000, ...options },\n );\n }\n}\n\nexport class Migrations extends APIResource {\n /** Your migration plans, newest first, without their items or estimate. */\n list(params: L<\"listMigrations\"> = {}, options?: RequestOptions): Promise<R<\"listMigrations\">> {\n return this._get(\"/migrations\", params, options);\n }\n\n listAll(params: LA<\"listMigrations\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listMigrations\">> {\n return this._listAll(\"/migrations\", params, options);\n }\n\n /** Builds a plan, with a price comparison, from a scan that succeeded. Nothing is created on Pantech. */\n create(body: B<\"createMigration\">, options?: RequestOptions): Promise<R<\"createMigration\">> {\n return this._post(\"/migrations\", body, options);\n }\n\n /** A plan with every item, and a price comparison computed now. */\n get(migrationId: string, options?: RequestOptions): Promise<R<\"getMigration\">> {\n return this._get(path`/migrations/${migrationId}`, undefined, options);\n }\n\n rename(migrationId: string, body: B<\"renameMigration\">, options?: RequestOptions): Promise<R<\"renameMigration\">> {\n return this._patch(path`/migrations/${migrationId}`, body, options);\n }\n\n /** Deletes the plan. Nothing on Pantech or in the other cloud is touched. */\n delete(migrationId: string, options?: RequestOptions): Promise<void> {\n return this._delete(path`/migrations/${migrationId}`, options);\n }\n\n /** Changes one item, named by its `key`: exclude it, or change its plan, size, range, role or email. */\n updateItem(\n migrationId: string,\n body: B<\"updateMigrationItem\">,\n options?: RequestOptions,\n ): Promise<R<\"updateMigrationItem\">> {\n return this._patch(path`/migrations/${migrationId}/items`, body, options);\n }\n\n /** The plan's planned items as Terraform: `main.tf` and `variables.tf`. */\n exportTerraform(migrationId: string, options?: RequestOptions): Promise<R<\"exportMigrationTerraform\">> {\n return this._get(path`/migrations/${migrationId}/terraform`, undefined, options);\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { APIResource } from \"../resource.js\";\nimport type { BodyOf as B, ItemOf as I, ListParams as L, ListAllParams as LA, ResponseOf as R } from \"../types.js\";\nimport { path } from \"../util.js\";\n\n/** VPC networks. */\nexport class Networks extends APIResource {\n /** A network's subnets: `client.networks.subnets.list(networkId)`. */\n readonly subnets: Subnets = new Subnets(this._client);\n /** A subnet's firewall rules: `client.networks.firewallRules.list(subnetId)`. */\n readonly firewallRules: FirewallRules = new FirewallRules(this._client);\n\n list(params: L<\"listNetworks\"> = {}, options?: RequestOptions): Promise<R<\"listNetworks\">> {\n return this._get(\"/networks\", params, options);\n }\n\n listAll(params: LA<\"listNetworks\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listNetworks\">> {\n return this._listAll(\"/networks\", params, options);\n }\n\n create(body: B<\"createNetwork\">, options?: RequestOptions): Promise<R<\"createNetwork\">> {\n return this._post(\"/networks\", body, options);\n }\n\n /** What a network costs a month. */\n quote(options?: RequestOptions): Promise<R<\"quoteNetwork\">> {\n return this._get(\"/networks/quote\", undefined, options);\n }\n\n get(networkId: string, options?: RequestOptions): Promise<R<\"getNetwork\">> {\n return this._get(path`/networks/${networkId}`, undefined, options);\n }\n\n delete(networkId: string, options?: RequestOptions): Promise<R<\"deleteNetwork\">> {\n return this._delete(path`/networks/${networkId}`, options);\n }\n}\n\nexport class Subnets extends APIResource {\n /** One page of a network's subnets. */\n list(networkId: string, params: L<\"listSubnets\"> = {}, options?: RequestOptions): Promise<R<\"listSubnets\">> {\n return this._get(path`/networks/${networkId}/subnets`, params, options);\n }\n\n listAll(\n networkId: string,\n params: LA<\"listSubnets\"> = {},\n options?: RequestOptions,\n ): AsyncGenerator<I<\"listSubnets\">> {\n return this._listAll(path`/networks/${networkId}/subnets`, params, options);\n }\n\n create(networkId: string, body: B<\"createSubnet\">, options?: RequestOptions): Promise<R<\"createSubnet\">> {\n return this._post(path`/networks/${networkId}/subnets`, body, options);\n }\n\n get(subnetId: string, options?: RequestOptions): Promise<R<\"getSubnet\">> {\n return this._get(path`/subnets/${subnetId}`, undefined, options);\n }\n\n delete(subnetId: string, options?: RequestOptions): Promise<R<\"deleteSubnet\">> {\n return this._delete(path`/subnets/${subnetId}`, options);\n }\n}\n\nexport class FirewallRules extends APIResource {\n /** A subnet's rules, plus the `system_rules` every subnet has. */\n list(\n subnetId: string,\n params: L<\"listFirewallRules\"> = {},\n options?: RequestOptions,\n ): Promise<R<\"listFirewallRules\">> {\n return this._get(path`/subnets/${subnetId}/firewall-rules`, params, options);\n }\n\n listAll(\n subnetId: string,\n params: LA<\"listFirewallRules\"> = {},\n options?: RequestOptions,\n ): AsyncGenerator<I<\"listFirewallRules\">> {\n return this._listAll(path`/subnets/${subnetId}/firewall-rules`, params, options);\n }\n\n create(subnetId: string, body: B<\"createFirewallRule\">, options?: RequestOptions): Promise<R<\"createFirewallRule\">> {\n return this._post(path`/subnets/${subnetId}/firewall-rules`, body, options);\n }\n\n get(subnetId: string, ruleId: string, options?: RequestOptions): Promise<R<\"getFirewallRule\">> {\n return this._get(path`/subnets/${subnetId}/firewall-rules/${ruleId}`, undefined, options);\n }\n\n delete(ruleId: string, options?: RequestOptions): Promise<R<\"deleteFirewallRule\">> {\n return this._delete(path`/firewall-rules/${ruleId}`, options);\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { OperationFailedError, PantechError } from \"../errors.js\";\nimport type { Operation } from \"../models.js\";\nimport { APIResource } from \"../resource.js\";\nimport { path } from \"../util.js\";\nimport { poll, type WaitOptions } from \"../wait.js\";\n\n/** An operation id, or a `202 Accepted` body that carries one. */\nexport type OperationRef = string | { operation_id?: string | null };\n\nfunction operationId(ref: OperationRef): string {\n const id = typeof ref === \"string\" ? ref : ref.operation_id;\n if (!id) throw new PantechError(\"There is no operation to wait for: the response carried no operation_id.\");\n return id;\n}\n\n/** The error for an operation that ended `failed`. */\nexport function operationFailed(op: Operation): OperationFailedError {\n const reason = op.failure?.reason ?? \"The operation failed.\";\n const code = op.failure?.code;\n return new OperationFailedError(code ? `${reason} (${code})` : reason, op, { code, detail: reason });\n}\n\nexport class Operations extends APIResource {\n /** An operation's current state. */\n get(operationId: string, options?: RequestOptions): Promise<Operation> {\n return this._get(path`/operations/${operationId}`, undefined, options);\n }\n\n /**\n * Polls the operation until it succeeds (resolves with it) or fails\n * (rejects with OperationFailedError). Accepts an id or the `202` body of\n * any write: `await client.operations.wait(await client.instances.stop(id))`.\n */\n wait(ref: OperationRef, options: WaitOptions<Operation> = {}): Promise<Operation> {\n const id = operationId(ref);\n return poll(\n () => this.get(id, { signal: options.signal }),\n (op) => {\n if (op.status === \"failed\") throw operationFailed(op);\n return op.status === \"succeeded\";\n },\n `Operation ${id}`,\n options,\n );\n }\n\n /**\n * Streams the operation's changes (Server-Sent Events) until it succeeds\n * or fails, yielding the Operation each time it changes. A stream the API\n * ends early (after 15 minutes, say) rejects with its code; poll with\n * `wait` instead.\n */\n async *stream(operationId: string, options: RequestOptions = {}): AsyncGenerator<Operation, void, undefined> {\n const res = await this._request<Response>(\n \"GET\",\n path`/operations/${operationId}/events`,\n { responseType: \"response\" },\n { ...options, headers: { ...options.headers, Accept: \"text/event-stream\" } },\n );\n if (!res.body) return;\n for await (const event of readEvents(res.body)) {\n if (event.event === \"error\") {\n let body: { code?: string; detail?: string; request_id?: string } = {};\n try {\n body = JSON.parse(event.data);\n } catch {\n body = {};\n }\n const detail = body.detail ?? \"The operation stream ended before the operation finished.\";\n throw new PantechError(body.code ? `${detail} (${body.code})` : detail, {\n code: body.code,\n detail,\n requestId: body.request_id,\n });\n }\n if (event.event !== \"operation\" || !event.data) continue;\n const op = JSON.parse(event.data) as Operation;\n yield op;\n if (op.status === \"succeeded\" || op.status === \"failed\") return;\n }\n }\n}\n\ninterface ServerSentEvent {\n event: string;\n data: string;\n}\n\n/** Parses a text/event-stream body into events; comments (keepalives) are skipped. */\nasync function* readEvents(body: ReadableStream<Uint8Array>): AsyncGenerator<ServerSentEvent> {\n const reader = body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n let event = \"message\";\n let data: string[] = [];\n try {\n for (;;) {\n const { value, done } = await reader.read();\n buffer += done ? decoder.decode() : decoder.decode(value, { stream: true });\n const lines = buffer.split(/\\r\\n|\\r|\\n/);\n buffer = done ? \"\" : (lines.pop() ?? \"\");\n for (const line of lines) {\n if (line === \"\") {\n if (data.length > 0) yield { event, data: data.join(\"\\n\") };\n event = \"message\";\n data = [];\n } else if (!line.startsWith(\":\")) {\n const colon = line.indexOf(\":\");\n const field = colon === -1 ? line : line.slice(0, colon);\n const value = colon === -1 ? \"\" : line.slice(colon + 1).replace(/^ /, \"\");\n if (field === \"event\") event = value;\n else if (field === \"data\") data.push(value);\n }\n }\n if (done) {\n if (data.length > 0) yield { event, data: data.join(\"\\n\") };\n return;\n }\n }\n } finally {\n reader.releaseLock();\n await body.cancel().catch(() => undefined);\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { APIResource } from \"../resource.js\";\nimport type { BodyOf as B, ItemOf as I, ListParams as L, ListAllParams as LA, ResponseOf as R } from \"../types.js\";\nimport { path } from \"../util.js\";\n\n/** Public addresses for VPC instances. */\nexport class PublicIps extends APIResource {\n /** An address's port forwarding rules. */\n readonly portForwardingRules: PortForwardingRules = new PortForwardingRules(this._client);\n\n list(params: L<\"listPublicIPs\"> = {}, options?: RequestOptions): Promise<R<\"listPublicIPs\">> {\n return this._get(\"/public-ips\", params, options);\n }\n\n listAll(params: LA<\"listPublicIPs\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listPublicIPs\">> {\n return this._listAll(\"/public-ips\", params, options);\n }\n\n create(body: B<\"createPublicIP\">, options?: RequestOptions): Promise<R<\"createPublicIP\">> {\n return this._post(\"/public-ips\", body, options);\n }\n\n /** What a public IP costs a month. */\n quote(options?: RequestOptions): Promise<R<\"quotePublicIP\">> {\n return this._get(\"/public-ips/quote\", undefined, options);\n }\n\n get(publicIpId: string, options?: RequestOptions): Promise<R<\"getPublicIP\">> {\n return this._get(path`/public-ips/${publicIpId}`, undefined, options);\n }\n\n delete(publicIpId: string, options?: RequestOptions): Promise<R<\"deletePublicIP\">> {\n return this._delete(path`/public-ips/${publicIpId}`, options);\n }\n\n attach(publicIpId: string, body: B<\"attachPublicIP\">, options?: RequestOptions): Promise<R<\"attachPublicIP\">> {\n return this._post(path`/public-ips/${publicIpId}/attach`, body, options);\n }\n\n detach(publicIpId: string, options?: RequestOptions): Promise<R<\"detachPublicIP\">> {\n return this._post(path`/public-ips/${publicIpId}/detach`, undefined, options);\n }\n}\n\nexport class PortForwardingRules extends APIResource {\n list(\n publicIpId: string,\n params: L<\"listPortForwardingRules\"> = {},\n options?: RequestOptions,\n ): Promise<R<\"listPortForwardingRules\">> {\n return this._get(path`/public-ips/${publicIpId}/port-forwarding-rules`, params, options);\n }\n\n listAll(\n publicIpId: string,\n params: LA<\"listPortForwardingRules\"> = {},\n options?: RequestOptions,\n ): AsyncGenerator<I<\"listPortForwardingRules\">> {\n return this._listAll(path`/public-ips/${publicIpId}/port-forwarding-rules`, params, options);\n }\n\n create(\n publicIpId: string,\n body: B<\"createPortForwardingRule\">,\n options?: RequestOptions,\n ): Promise<R<\"createPortForwardingRule\">> {\n return this._post(path`/public-ips/${publicIpId}/port-forwarding-rules`, body, options);\n }\n\n get(publicIpId: string, ruleId: string, options?: RequestOptions): Promise<R<\"getPortForwardingRule\">> {\n return this._get(path`/public-ips/${publicIpId}/port-forwarding-rules/${ruleId}`, undefined, options);\n }\n\n delete(ruleId: string, options?: RequestOptions): Promise<R<\"deletePortForwardingRule\">> {\n return this._delete(path`/port-forwarding-rules/${ruleId}`, options);\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { APIResource } from \"../resource.js\";\nimport type { BodyOf as B, ItemOf as I, ListParams as L, ListAllParams as LA, ResponseOf as R } from \"../types.js\";\nimport { path } from \"../util.js\";\n\n/** Reusable firewalls for standard instances. */\nexport class SecurityGroups extends APIResource {\n list(params: L<\"listSecurityGroups\"> = {}, options?: RequestOptions): Promise<R<\"listSecurityGroups\">> {\n return this._get(\"/security-groups\", params, options);\n }\n\n listAll(params: LA<\"listSecurityGroups\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listSecurityGroups\">> {\n return this._listAll(\"/security-groups\", params, options);\n }\n\n create(body: B<\"createSecurityGroup\">, options?: RequestOptions): Promise<R<\"createSecurityGroup\">> {\n return this._post(\"/security-groups\", body, options);\n }\n\n get(securityGroupId: string, options?: RequestOptions): Promise<R<\"getSecurityGroup\">> {\n return this._get(path`/security-groups/${securityGroupId}`, undefined, options);\n }\n\n delete(securityGroupId: string, options?: RequestOptions): Promise<R<\"deleteSecurityGroup\">> {\n return this._delete(path`/security-groups/${securityGroupId}`, options);\n }\n\n /** Replaces every rule of the group. */\n replaceRules(\n securityGroupId: string,\n body: B<\"replaceSecurityGroupRules\">,\n options?: RequestOptions,\n ): Promise<R<\"replaceSecurityGroupRules\">> {\n return this._put(path`/security-groups/${securityGroupId}/rules`, body, options);\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { APIResource } from \"../resource.js\";\nimport type {\n BodyOf as B,\n ItemOf as I,\n ListParams as L,\n ListAllParams as LA,\n QueryOf as Q,\n ResponseOf as R,\n} from \"../types.js\";\nimport { path } from \"../util.js\";\n\n/** Point-in-time copies of root disks and volumes. */\nexport class Snapshots extends APIResource {\n list(params: L<\"listSnapshots\"> = {}, options?: RequestOptions): Promise<R<\"listSnapshots\">> {\n return this._get(\"/snapshots\", params, options);\n }\n\n listAll(params: LA<\"listSnapshots\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listSnapshots\">> {\n return this._listAll(\"/snapshots\", params, options);\n }\n\n /** What a snapshot of `size_gb` costs. */\n quote(params: Q<\"quoteSnapshot\">, options?: RequestOptions): Promise<R<\"quoteSnapshot\">> {\n return this._get(\"/snapshots/quote\", params, options);\n }\n\n get(snapshotId: string, options?: RequestOptions): Promise<R<\"getSnapshot\">> {\n return this._get(path`/snapshots/${snapshotId}`, undefined, options);\n }\n\n delete(snapshotId: string, options?: RequestOptions): Promise<R<\"deleteSnapshot\">> {\n return this._delete(path`/snapshots/${snapshotId}`, options);\n }\n\n /** Restores the snapshot into a new volume. */\n restore(snapshotId: string, body: B<\"restoreSnapshot\">, options?: RequestOptions): Promise<R<\"restoreSnapshot\">> {\n return this._post(path`/snapshots/${snapshotId}/restore`, body, options);\n }\n\n usage(snapshotId: string, options?: RequestOptions): Promise<R<\"getSnapshotUsage\">> {\n return this._get(path`/snapshots/${snapshotId}/usage`, undefined, options);\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { APIResource } from \"../resource.js\";\nimport type { BodyOf as B, ItemOf as I, ListParams as L, ListAllParams as LA, ResponseOf as R } from \"../types.js\";\nimport { path } from \"../util.js\";\n\n/**\n * Keys installed on new instances. Create and delete are sent once: the API\n * does not replay them by Idempotency-Key, so a retry after a lost answer\n * would act twice (or lose a generated private key).\n */\nexport class SshKeys extends APIResource {\n list(params: L<\"listSSHKeys\"> = {}, options?: RequestOptions): Promise<R<\"listSSHKeys\">> {\n return this._get(\"/ssh-keys\", params, options);\n }\n\n listAll(params: LA<\"listSSHKeys\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listSSHKeys\">> {\n return this._listAll(\"/ssh-keys\", params, options);\n }\n\n /**\n * Adds your public key, or generates a key pair and returns the private\n * key in this response only. If the call fails without an answer, list\n * your keys before trying again.\n */\n create(body: B<\"createSSHKey\">, options?: RequestOptions): Promise<R<\"createSSHKey\">> {\n return this._post(\"/ssh-keys\", body, options, { noRetry: true });\n }\n\n get(sshKeyId: string, options?: RequestOptions): Promise<R<\"getSSHKey\">> {\n return this._get(path`/ssh-keys/${sshKeyId}`, undefined, options);\n }\n\n /** Deletes the key. A repeat after it is gone is a `404`: treat that as done. */\n delete(sshKeyId: string, options?: RequestOptions): Promise<void> {\n return this._delete(path`/ssh-keys/${sshKeyId}`, options, { noRetry: true });\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { APIResource } from \"../resource.js\";\nimport type { QueryOf as Q, ResponseOf as R } from \"../types.js\";\n\n/** What has been used, and what it cost. */\nexport class Usage extends APIResource {\n /** The organization's usage this period. */\n get(options?: RequestOptions): Promise<R<\"getUsage\">> {\n return this._get(\"/usage\", undefined, options);\n }\n\n /** Usage broken down per resource. */\n byResource(params: Q<\"getUsageByResource\"> = {}, options?: RequestOptions): Promise<R<\"getUsageByResource\">> {\n return this._get(\"/usage/by-resource\", params, options);\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { APIResource } from \"../resource.js\";\nimport type { BodyOf as B, ItemOf as I, ListParams as L, ListAllParams as LA, ResponseOf as R } from \"../types.js\";\nimport { path } from \"../util.js\";\n\n/** Data disks. */\nexport class Volumes extends APIResource {\n /** Snapshots of a volume. */\n readonly snapshots: VolumeSnapshots = new VolumeSnapshots(this._client);\n\n list(params: L<\"listVolumes\"> = {}, options?: RequestOptions): Promise<R<\"listVolumes\">> {\n return this._get(\"/volumes\", params, options);\n }\n\n listAll(params: LA<\"listVolumes\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listVolumes\">> {\n return this._listAll(\"/volumes\", params, options);\n }\n\n create(body: B<\"createVolume\">, options?: RequestOptions): Promise<R<\"createVolume\">> {\n return this._post(\"/volumes\", body, options);\n }\n\n get(volumeId: string, options?: RequestOptions): Promise<R<\"getVolume\">> {\n return this._get(path`/volumes/${volumeId}`, undefined, options);\n }\n\n delete(volumeId: string, options?: RequestOptions): Promise<R<\"deleteVolume\">> {\n return this._delete(path`/volumes/${volumeId}`, options);\n }\n\n attach(volumeId: string, body: B<\"attachVolume\">, options?: RequestOptions): Promise<R<\"attachVolume\">> {\n return this._post(path`/volumes/${volumeId}/attach`, body, options);\n }\n\n detach(volumeId: string, options?: RequestOptions): Promise<R<\"detachVolume\">> {\n return this._post(path`/volumes/${volumeId}/detach`, undefined, options);\n }\n\n /** Grows a detached volume. */\n resize(volumeId: string, body: B<\"resizeVolume\">, options?: RequestOptions): Promise<R<\"resizeVolume\">> {\n return this._post(path`/volumes/${volumeId}/resize`, body, options);\n }\n\n usage(volumeId: string, options?: RequestOptions): Promise<R<\"getVolumeUsage\">> {\n return this._get(path`/volumes/${volumeId}/usage`, undefined, options);\n }\n\n getSnapshotSchedule(volumeId: string, options?: RequestOptions): Promise<R<\"getVolumeSnapshotSchedule\">> {\n return this._get(path`/volumes/${volumeId}/snapshot-schedule`, undefined, options);\n }\n\n setSnapshotSchedule(\n volumeId: string,\n body: B<\"putVolumeSnapshotSchedule\">,\n options?: RequestOptions,\n ): Promise<R<\"putVolumeSnapshotSchedule\">> {\n return this._put(path`/volumes/${volumeId}/snapshot-schedule`, body, options);\n }\n}\n\nexport class VolumeSnapshots extends APIResource {\n list(\n volumeId: string,\n params: L<\"listVolumeSnapshots\"> = {},\n options?: RequestOptions,\n ): Promise<R<\"listVolumeSnapshots\">> {\n return this._get(path`/volumes/${volumeId}/snapshots`, params, options);\n }\n\n listAll(\n volumeId: string,\n params: LA<\"listVolumeSnapshots\"> = {},\n options?: RequestOptions,\n ): AsyncGenerator<I<\"listVolumeSnapshots\">> {\n return this._listAll(path`/volumes/${volumeId}/snapshots`, params, options);\n }\n\n create(\n volumeId: string,\n body: B<\"createVolumeSnapshot\">,\n options?: RequestOptions,\n ): Promise<R<\"createVolumeSnapshot\">> {\n return this._post(path`/volumes/${volumeId}/snapshots`, body, options);\n }\n}\n","import type { RequestOptions } from \"../client.js\";\nimport { APIResource } from \"../resource.js\";\nimport type { BodyOf as B, ItemOf as I, ListParams as L, ListAllParams as LA, ResponseOf as R } from \"../types.js\";\nimport { path } from \"../util.js\";\n\n/**\n * Events sent to your own URL. Delete, test and secret rotation are sent\n * once: the API does not replay them by Idempotency-Key.\n */\nexport class Webhooks extends APIResource {\n /** A webhook's delivery log. */\n readonly deliveries: WebhookDeliveries = new WebhookDeliveries(this._client);\n\n list(params: L<\"listWebhooks\"> = {}, options?: RequestOptions): Promise<R<\"listWebhooks\">> {\n return this._get(\"/webhooks\", params, options);\n }\n\n listAll(params: LA<\"listWebhooks\"> = {}, options?: RequestOptions): AsyncGenerator<I<\"listWebhooks\">> {\n return this._listAll(\"/webhooks\", params, options);\n }\n\n /** Every event type a webhook can subscribe to. */\n listEventTypes(\n params: L<\"listWebhookEventTypes\"> = {},\n options?: RequestOptions,\n ): Promise<R<\"listWebhookEventTypes\">> {\n return this._get(\"/webhook-event-types\", params, options);\n }\n\n /** Creates a webhook. Its signing `secret` is in this response only. */\n create(body: B<\"createWebhook\">, options?: RequestOptions): Promise<R<\"createWebhook\">> {\n return this._post(\"/webhooks\", body, options);\n }\n\n get(webhookId: string, options?: RequestOptions): Promise<R<\"getWebhook\">> {\n return this._get(path`/webhooks/${webhookId}`, undefined, options);\n }\n\n update(webhookId: string, body: B<\"updateWebhook\">, options?: RequestOptions): Promise<R<\"updateWebhook\">> {\n return this._patch(path`/webhooks/${webhookId}`, body, options);\n }\n\n /** Deletes the webhook. A repeat after it is gone is a `404`: treat that as done. */\n delete(webhookId: string, options?: RequestOptions): Promise<void> {\n return this._delete(path`/webhooks/${webhookId}`, options, { noRetry: true });\n }\n\n /** Sends a test event. Each call sends another. */\n test(webhookId: string, options?: RequestOptions): Promise<R<\"testWebhook\">> {\n return this._post(path`/webhooks/${webhookId}/test`, undefined, options, { noRetry: true });\n }\n\n /** Issues a new signing secret, in this response only. The previous one keeps signing for 24 hours. */\n rotateSecret(webhookId: string, options?: RequestOptions): Promise<R<\"rotateWebhookSecret\">> {\n return this._post(path`/webhooks/${webhookId}/rotate-secret`, undefined, options, { noRetry: true });\n }\n}\n\nexport class WebhookDeliveries extends APIResource {\n list(\n webhookId: string,\n params: L<\"listWebhookDeliveries\"> = {},\n options?: RequestOptions,\n ): Promise<R<\"listWebhookDeliveries\">> {\n return this._get(path`/webhooks/${webhookId}/deliveries`, params, options);\n }\n\n listAll(\n webhookId: string,\n params: LA<\"listWebhookDeliveries\"> = {},\n options?: RequestOptions,\n ): AsyncGenerator<I<\"listWebhookDeliveries\">> {\n return this._listAll(path`/webhooks/${webhookId}/deliveries`, params, options);\n }\n\n get(webhookId: string, deliveryId: string, options?: RequestOptions): Promise<R<\"getWebhookDelivery\">> {\n return this._get(path`/webhooks/${webhookId}/deliveries/${deliveryId}`, undefined, options);\n }\n\n /** Sends the delivery again. Each call sends another. */\n redeliver(webhookId: string, deliveryId: string, options?: RequestOptions): Promise<R<\"redeliverWebhook\">> {\n return this._post(path`/webhooks/${webhookId}/deliveries/${deliveryId}/redeliver`, undefined, options, {\n noRetry: true,\n });\n }\n}\n","/** The SDK's version, sent in `User-Agent: pantech-js/<version>`. Kept in step with package.json. */\nexport const VERSION = \"0.2.0\";\n","// The client: auth, an Idempotency-Key on every write, timeouts, and retries\n// the way the API's conventions ask. Every resource method goes through\n// Pantech.request.\n\nimport { APIConnectionError, APITimeoutError, errorFromResponse, PantechError } from \"./errors.js\";\nimport { Billing } from \"./resources/billing.js\";\nimport {\n DatabaseEngines,\n DiskOfferings,\n Images,\n KubernetesVersions,\n Plans,\n Pricing,\n Regions,\n} from \"./resources/catalog.js\";\nimport { DatabaseOrders, Databases } from \"./resources/databases.js\";\nimport { InstanceOrders, Instances } from \"./resources/instances.js\";\nimport { Kubernetes } from \"./resources/kubernetes.js\";\nimport { LoadBalancers } from \"./resources/load-balancers.js\";\nimport { MeResource } from \"./resources/me.js\";\nimport { Migrate } from \"./resources/migrate.js\";\nimport { Networks } from \"./resources/networks.js\";\nimport { Operations } from \"./resources/operations.js\";\nimport { PublicIps } from \"./resources/public-ips.js\";\nimport { SecurityGroups } from \"./resources/security-groups.js\";\nimport { Snapshots } from \"./resources/snapshots.js\";\nimport { SshKeys } from \"./resources/ssh-keys.js\";\nimport { Usage } from \"./resources/usage.js\";\nimport { Volumes } from \"./resources/volumes.js\";\nimport { Webhooks } from \"./resources/webhooks.js\";\nimport { readEnv, sleep, uuid } from \"./util.js\";\nimport { VERSION } from \"./version.js\";\n\nexport const DEFAULT_BASE_URL = \"https://api.pantechdynamics.com/public/v1\";\nconst DEFAULT_TIMEOUT_MS = 60_000;\nconst DEFAULT_MAX_RETRIES = 3;\nconst MAX_RETRY_AFTER_MS = 60_000;\n\ntype Fetch = (input: string, init: RequestInit) => Promise<Response>;\n\nexport interface ClientOptions {\n /** A Pantech API key (`PAN_…`). Defaults to the `PANTECH_API_KEY` environment variable. */\n apiKey?: string;\n /**\n * The API's base URL, including `/public/v1`. Defaults to the\n * `PANTECH_API_URL` environment variable, else production.\n */\n baseURL?: string;\n /** How many times a failed request is retried. Default 3. */\n maxRetries?: number;\n /** Milliseconds to wait for each attempt before giving up on it. Default 60000. */\n timeout?: number;\n /** A fetch implementation. Defaults to the global `fetch`. */\n fetch?: Fetch;\n /** Headers sent with every request. */\n defaultHeaders?: Record<string, string>;\n /** Replaces the `User-Agent` header (`pantech-js/<version>`). Ignored by browsers. */\n userAgent?: string;\n}\n\n/** Per-call options, accepted as the last argument of every method. */\nexport interface RequestOptions {\n /** Cancels the call, including any retries and waits. */\n signal?: AbortSignal;\n /** Overrides the client's per-attempt timeout, in milliseconds. */\n timeout?: number;\n /** Overrides the client's retry count. */\n maxRetries?: number;\n /**\n * The `Idempotency-Key` for a write. One is generated when left out. Reuse\n * a key only to retry the very same change.\n */\n idempotencyKey?: string;\n /** Extra headers for this call. */\n headers?: Record<string, string>;\n}\n\nexport type HTTPMethod = \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n\n/** A low-level request, for endpoints you want to call directly. */\nexport interface APIRequest {\n method: HTTPMethod;\n /** Relative to the base URL, e.g. `/instances`. */\n path: string;\n /** Query parameters; undefined and null values are left out, arrays repeat. */\n query?: object;\n /** Sent as JSON. */\n body?: unknown;\n /**\n * Sends a write once. For endpoints the API does not replay by\n * Idempotency-Key, where a retry after a lost answer would act twice. A\n * `429` is still retried: it is refused before anything runs.\n */\n noRetry?: boolean;\n /** How to read a successful response. Default `json`. */\n responseType?: \"json\" | \"arrayBuffer\" | \"response\";\n}\n\nconst RETRY_STATUSES = new Set([429, 500, 502, 503, 504]);\n\n/** The Pantech Dynamics public API client. */\nexport class Pantech {\n readonly baseURL: string;\n readonly maxRetries: number;\n readonly timeout: number;\n // Private fields are invisible to console.log and JSON.stringify, so the\n // key cannot leak through a logged client.\n readonly #apiKey: string;\n readonly #fetch: Fetch;\n readonly #headers: Record<string, string>;\n\n /** `GET` and `DELETE /me`: the API key making the call. */\n readonly me: MeResource;\n /** Credit, credit purchases and receipts. */\n readonly billing: Billing;\n readonly regions: Regions;\n readonly plans: Plans;\n readonly images: Images;\n readonly diskOfferings: DiskOfferings;\n readonly databaseEngines: DatabaseEngines;\n readonly kubernetesVersions: KubernetesVersions;\n readonly pricing: Pricing;\n readonly usage: Usage;\n readonly instances: Instances;\n readonly instanceOrders: InstanceOrders;\n /** VPC networks, with their subnets and firewall rules. */\n readonly networks: Networks;\n /** Public IPs, with their port forwarding rules. */\n readonly publicIps: PublicIps;\n readonly loadBalancers: LoadBalancers;\n /** Managed Kubernetes clusters, with node pools and add-ons. */\n readonly kubernetes: Kubernetes;\n readonly securityGroups: SecurityGroups;\n readonly volumes: Volumes;\n readonly snapshots: Snapshots;\n readonly databases: Databases;\n readonly databaseOrders: DatabaseOrders;\n readonly sshKeys: SshKeys;\n readonly webhooks: Webhooks;\n /** Move from another cloud: connections, scans and migration plans. */\n readonly migrate: Migrate;\n readonly operations: Operations;\n\n constructor(options: ClientOptions = {}) {\n const apiKey = options.apiKey ?? readEnv(\"PANTECH_API_KEY\");\n if (!apiKey) {\n throw new PantechError(\n \"No Pantech API key. Pass `apiKey` or set PANTECH_API_KEY. Create a key in the console under Organization › API keys.\",\n );\n }\n this.#apiKey = apiKey;\n this.baseURL = (options.baseURL ?? readEnv(\"PANTECH_API_URL\") ?? DEFAULT_BASE_URL).replace(/\\/+$/, \"\");\n this.maxRetries = options.maxRetries ?? DEFAULT_MAX_RETRIES;\n this.timeout = options.timeout ?? DEFAULT_TIMEOUT_MS;\n // Looked up per call, so a fetch replaced after construction is used.\n this.#fetch = options.fetch ?? ((input, init) => globalThis.fetch(input, init));\n this.#headers = {\n ...options.defaultHeaders,\n \"User-Agent\": options.userAgent ?? `pantech-js/${VERSION}`,\n };\n\n this.me = new MeResource(this);\n this.billing = new Billing(this);\n this.regions = new Regions(this);\n this.plans = new Plans(this);\n this.images = new Images(this);\n this.diskOfferings = new DiskOfferings(this);\n this.databaseEngines = new DatabaseEngines(this);\n this.kubernetesVersions = new KubernetesVersions(this);\n this.pricing = new Pricing(this);\n this.usage = new Usage(this);\n this.operations = new Operations(this);\n this.instances = new Instances(this);\n this.instanceOrders = new InstanceOrders(this);\n this.networks = new Networks(this);\n this.publicIps = new PublicIps(this);\n this.loadBalancers = new LoadBalancers(this);\n this.kubernetes = new Kubernetes(this);\n this.securityGroups = new SecurityGroups(this);\n this.volumes = new Volumes(this);\n this.snapshots = new Snapshots(this);\n this.databases = new Databases(this);\n this.databaseOrders = new DatabaseOrders(this);\n this.sshKeys = new SshKeys(this);\n this.webhooks = new Webhooks(this);\n this.migrate = new Migrate(this);\n }\n\n /**\n * Sends one request and returns its decoded body (undefined for an empty\n * one). A write carries an Idempotency-Key, reused by every retry, so a\n * change cannot happen twice.\n */\n async request<T = unknown>(req: APIRequest, options: RequestOptions = {}): Promise<T> {\n const url = this.baseURL + req.path + queryString(req.query);\n const isWrite = req.method !== \"GET\";\n const headers: Record<string, string> = {\n ...this.#headers,\n Accept: req.responseType === \"arrayBuffer\" ? \"*/*\" : \"application/json\",\n ...options.headers,\n Authorization: `Bearer ${this.#apiKey}`,\n };\n let payload: string | undefined;\n if (req.body !== undefined) {\n payload = JSON.stringify(req.body);\n headers[\"Content-Type\"] = \"application/json\";\n }\n if (isWrite) headers[\"Idempotency-Key\"] = options.idempotencyKey ?? uuid();\n\n const maxRetries = options.maxRetries ?? this.maxRetries;\n const timeout = options.timeout ?? this.timeout;\n const signal = options.signal;\n\n for (let attempt = 0; ; attempt++) {\n const canRetry = attempt < maxRetries;\n const attemptSignal = linkSignal(signal, timeout);\n let res: Response;\n try {\n res = await this.#fetch(url, { method: req.method, headers, body: payload, signal: attemptSignal.signal });\n } catch (err) {\n attemptSignal.done();\n if (signal?.aborted) throw signal.reason;\n const error = connectionError(err, attemptSignal.timedOut(), isWrite);\n if (canRetry && !req.noRetry) {\n await sleep(backoff(attempt), signal);\n continue;\n }\n throw error;\n }\n\n if (res.ok) {\n try {\n return (await readBody(res, req.responseType)) as T;\n } catch (err) {\n if (signal?.aborted) throw signal.reason;\n if (err instanceof PantechError) throw err;\n throw connectionError(err, attemptSignal.timedOut(), isWrite);\n } finally {\n if (req.responseType !== \"response\") attemptSignal.done();\n else attemptSignal.stopTimer();\n }\n }\n\n let text = \"\";\n try {\n text = await res.text();\n } catch {\n text = \"\";\n } finally {\n attemptSignal.done();\n }\n const retryAfter = parseRetryAfter(res.headers.get(\"retry-after\"));\n if (canRetry && RETRY_STATUSES.has(res.status) && (!req.noRetry || res.status === 429)) {\n await sleep(retryAfter !== undefined ? Math.min(retryAfter, MAX_RETRY_AFTER_MS) : backoff(attempt), signal);\n continue;\n }\n throw errorFromResponse(\n res.status,\n res.headers,\n text,\n retryAfter === undefined ? undefined : Math.ceil(retryAfter / 1000),\n );\n }\n }\n}\n\nfunction queryString(query: object | undefined): string {\n if (!query) return \"\";\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(query)) {\n if (value === undefined || value === null) continue;\n for (const v of Array.isArray(value) ? value : [value]) params.append(key, String(v));\n }\n const s = params.toString();\n return s ? `?${s}` : \"\";\n}\n\nasync function readBody(res: Response, type: APIRequest[\"responseType\"]): Promise<unknown> {\n if (type === \"response\") return res;\n if (type === \"arrayBuffer\") return res.arrayBuffer();\n const text = await res.text();\n if (res.status === 204 || text === \"\") return undefined;\n try {\n return JSON.parse(text);\n } catch (cause) {\n throw new PantechError(\"The Pantech API sent a response that is not valid JSON.\", {\n status: res.status,\n requestId: res.headers.get(\"x-request-id\") ?? undefined,\n headers: res.headers,\n cause,\n });\n }\n}\n\n/** 0.5 s, 1 s, 2 s, 4 s… up to 8 s, less up to a quarter at random so clients spread out. */\nfunction backoff(attempt: number): number {\n const base = Math.min(500 * 2 ** attempt, 8_000);\n return base * (1 - Math.random() * 0.25);\n}\n\n/** `Retry-After` in milliseconds: seconds, or an HTTP date. */\nfunction parseRetryAfter(value: string | null): number | undefined {\n if (!value) return undefined;\n const seconds = Number(value);\n if (Number.isFinite(seconds) && seconds >= 0) return seconds * 1000;\n const date = Date.parse(value);\n if (!Number.isNaN(date)) return Math.max(0, date - Date.now());\n return undefined;\n}\n\nfunction connectionError(cause: unknown, timedOut: boolean, isWrite: boolean): APIConnectionError {\n const maybeApplied = isWrite\n ? \" The change may still have gone through: check before trying again, and retry with the same idempotencyKey.\"\n : \" Try again in a moment.\";\n if (timedOut) return new APITimeoutError(`The Pantech API did not answer in time.${maybeApplied}`, { cause });\n return new APIConnectionError(\n isWrite\n ? `The connection to the Pantech API failed.${maybeApplied}`\n : \"Could not reach the Pantech API. Check the network connection and try again.\",\n { cause },\n );\n}\n\n/** An AbortSignal that fires on the caller's signal or after `timeout` ms. */\nfunction linkSignal(parent: AbortSignal | undefined, timeout: number) {\n const controller = new AbortController();\n let timedOut = false;\n const onAbort = () => controller.abort(parent?.reason);\n if (parent?.aborted) controller.abort(parent.reason);\n else parent?.addEventListener(\"abort\", onAbort, { once: true });\n const timer =\n timeout > 0 && Number.isFinite(timeout)\n ? setTimeout(() => {\n timedOut = true;\n controller.abort(new APITimeoutError(\"The Pantech API did not answer in time.\"));\n }, timeout)\n : undefined;\n return {\n signal: controller.signal,\n timedOut: () => timedOut,\n /** For a streamed body: the timeout covers the headers only. */\n stopTimer: () => clearTimeout(timer),\n done: () => {\n clearTimeout(timer);\n parent?.removeEventListener(\"abort\", onAbort);\n },\n };\n}\n","// Verifying webhook deliveries. Each request carries\n// Pantech-Signature: t=<unix seconds>,v1=<hex HMAC-SHA256(secret, \"<t>.<raw body>\")>\n// with two v1 values for 24 hours after a secret rotation. Uses Web Crypto,\n// so it runs on Node.js, Bun, Deno and edge runtimes alike.\n\nimport { PantechError, WebhookVerificationError } from \"./errors.js\";\n\n/** The header a delivery's signature arrives in. */\nexport const WEBHOOK_SIGNATURE_HEADER = \"Pantech-Signature\";\n\n/** Five minutes, the API's own window. */\nexport const DEFAULT_WEBHOOK_TOLERANCE_SECONDS = 300;\n\nexport type WebhookBody = string | Uint8Array | ArrayBuffer;\n\nexport interface VerifyWebhookOptions {\n /** The webhook's signing secret (`whsec_…`). */\n secret: string;\n /** The `Pantech-Signature` header's value. */\n header: string | null | undefined;\n /** The raw request body, exactly as received: not parsed and re-serialised JSON. */\n body: WebhookBody;\n /** Reject a timestamp further than this from now. Default 300; 0 turns the check off. */\n toleranceSeconds?: number;\n /** The current time in unix seconds, for tests. */\n now?: number;\n}\n\nconst encoder = new TextEncoder();\n\nfunction bytes(body: WebhookBody): Uint8Array {\n if (typeof body === \"string\") return encoder.encode(body);\n return body instanceof Uint8Array ? body : new Uint8Array(body);\n}\n\nfunction subtle(): SubtleCrypto {\n const s = (globalThis as { crypto?: Crypto }).crypto?.subtle;\n if (!s) {\n throw new PantechError(\n \"Web Crypto is not available in this runtime. On Node.js 18 start node with --experimental-global-webcrypto, or use Node.js 20 or later.\",\n );\n }\n return s;\n}\n\nasync function hmacHex(secret: string, timestamp: string, body: Uint8Array): Promise<string> {\n const s = subtle();\n const key = await s.importKey(\"raw\", encoder.encode(secret), { name: \"HMAC\", hash: \"SHA-256\" }, false, [\"sign\"]);\n const prefix = encoder.encode(`${timestamp}.`);\n const message = new Uint8Array(prefix.length + body.length);\n message.set(prefix, 0);\n message.set(body, prefix.length);\n const mac = new Uint8Array(await s.sign(\"HMAC\", key, message));\n return Array.from(mac, (b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\n/** Compares two strings in time that depends only on their length. */\nfunction timingSafeEqual(a: string, b: string): boolean {\n if (a.length !== b.length) return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++) diff |= a.charCodeAt(i) ^ b.charCodeAt(i);\n return diff === 0;\n}\n\n/**\n * Checks a delivery's `Pantech-Signature`. Resolves when it is valid;\n * rejects with WebhookVerificationError when the header is missing or\n * malformed, the timestamp is outside the tolerance, or no `v1` matches.\n */\nexport async function verifyWebhook(options: VerifyWebhookOptions): Promise<void> {\n const { secret, header } = options;\n if (!secret) throw new WebhookVerificationError(\"No webhook secret was given to verify the signature with.\");\n if (!header) throw new WebhookVerificationError(`The ${WEBHOOK_SIGNATURE_HEADER} header is missing.`);\n\n let timestamp: string | undefined;\n const signatures: string[] = [];\n for (const part of header.split(\",\")) {\n const eq = part.indexOf(\"=\");\n if (eq === -1) continue;\n const key = part.slice(0, eq).trim();\n const value = part.slice(eq + 1).trim();\n if (key === \"t\") timestamp = value;\n else if (key === \"v1\" && value) signatures.push(value.toLowerCase());\n }\n if (!timestamp || !/^\\d+$/.test(timestamp) || signatures.length === 0) {\n throw new WebhookVerificationError(`The ${WEBHOOK_SIGNATURE_HEADER} header is malformed.`);\n }\n\n const tolerance = options.toleranceSeconds ?? DEFAULT_WEBHOOK_TOLERANCE_SECONDS;\n const now = options.now ?? Math.floor(Date.now() / 1000);\n if (tolerance > 0 && Math.abs(now - Number(timestamp)) > tolerance) {\n throw new WebhookVerificationError(\n `The webhook's timestamp is more than ${tolerance} seconds from now. Check the server's clock, or this may be a replayed delivery.`,\n );\n }\n\n const expected = await hmacHex(secret, timestamp, bytes(options.body));\n let matched = false;\n for (const signature of signatures) {\n if (timingSafeEqual(expected, signature)) matched = true;\n }\n if (!matched) {\n throw new WebhookVerificationError(\n \"The webhook signature does not match. Check the secret, and pass the raw body.\",\n );\n }\n}\n\n/**\n * Signs a body the way the API does, returning a `Pantech-Signature`\n * value. For testing your own webhook receiver.\n */\nexport async function signWebhook(options: { secret: string; body: WebhookBody; timestamp?: number }): Promise<string> {\n const t = String(options.timestamp ?? Math.floor(Date.now() / 1000));\n return `t=${t},v1=${await hmacHex(options.secret, t, bytes(options.body))}`;\n}\n"]}
|