@neon/sdk 0.0.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/LICENSE.md +178 -0
- package/README.md +349 -0
- package/dist/_virtual/_rolldown/runtime.js +14 -0
- package/dist/client/client/client.gen.d.ts +7 -0
- package/dist/client/client/client.gen.d.ts.map +1 -0
- package/dist/client/client/client.gen.js +176 -0
- package/dist/client/client/client.gen.js.map +1 -0
- package/dist/client/client/index.d.ts +10 -0
- package/dist/client/client/index.js +6 -0
- package/dist/client/client/types.gen.d.ts +124 -0
- package/dist/client/client/types.gen.d.ts.map +1 -0
- package/dist/client/client/types.gen.js +1 -0
- package/dist/client/client/utils.gen.d.ts +42 -0
- package/dist/client/client/utils.gen.d.ts.map +1 -0
- package/dist/client/client/utils.gen.js +179 -0
- package/dist/client/client/utils.gen.js.map +1 -0
- package/dist/client/client.gen.d.ts +18 -0
- package/dist/client/client.gen.d.ts.map +1 -0
- package/dist/client/client.gen.js +8 -0
- package/dist/client/client.gen.js.map +1 -0
- package/dist/client/core/auth.gen.d.ts +29 -0
- package/dist/client/core/auth.gen.d.ts.map +1 -0
- package/dist/client/core/auth.gen.js +12 -0
- package/dist/client/core/auth.gen.js.map +1 -0
- package/dist/client/core/bodySerializer.gen.d.ts +29 -0
- package/dist/client/core/bodySerializer.gen.d.ts.map +1 -0
- package/dist/client/core/bodySerializer.gen.js +33 -0
- package/dist/client/core/bodySerializer.gen.js.map +1 -0
- package/dist/client/core/params.gen.d.ts +46 -0
- package/dist/client/core/params.gen.d.ts.map +1 -0
- package/dist/client/core/params.gen.js +65 -0
- package/dist/client/core/params.gen.js.map +1 -0
- package/dist/client/core/pathSerializer.gen.d.ts +52 -0
- package/dist/client/core/pathSerializer.gen.d.ts.map +1 -0
- package/dist/client/core/pathSerializer.gen.js +82 -0
- package/dist/client/core/pathSerializer.gen.js.map +1 -0
- package/dist/client/core/queryKeySerializer.gen.d.ts +22 -0
- package/dist/client/core/queryKeySerializer.gen.d.ts.map +1 -0
- package/dist/client/core/queryKeySerializer.gen.js +64 -0
- package/dist/client/core/queryKeySerializer.gen.js.map +1 -0
- package/dist/client/core/serverSentEvents.gen.d.ts +88 -0
- package/dist/client/core/serverSentEvents.gen.d.ts.map +1 -0
- package/dist/client/core/serverSentEvents.gen.js +95 -0
- package/dist/client/core/serverSentEvents.gen.js.map +1 -0
- package/dist/client/core/types.gen.d.ts +80 -0
- package/dist/client/core/types.gen.d.ts.map +1 -0
- package/dist/client/core/types.gen.js +1 -0
- package/dist/client/core/utils.gen.d.ts +33 -0
- package/dist/client/core/utils.gen.d.ts.map +1 -0
- package/dist/client/core/utils.gen.js +78 -0
- package/dist/client/core/utils.gen.js.map +1 -0
- package/dist/client/index.d.ts +3 -0
- package/dist/client/index.js +2 -0
- package/dist/client/sdk.gen.d.ts +1362 -0
- package/dist/client/sdk.gen.d.ts.map +1 -0
- package/dist/client/sdk.gen.js +4315 -0
- package/dist/client/sdk.gen.js.map +1 -0
- package/dist/client/types.gen.d.ts +9938 -0
- package/dist/client/types.gen.d.ts.map +1 -0
- package/dist/client/types.gen.js +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.js +4 -0
- package/dist/neon/client.d.ts +52 -0
- package/dist/neon/client.d.ts.map +1 -0
- package/dist/neon/client.js +40 -0
- package/dist/neon/client.js.map +1 -0
- package/dist/neon/client.test-d.d.ts +1 -0
- package/dist/neon/client.test-d.js +76 -0
- package/dist/neon/client.test-d.js.map +1 -0
- package/dist/neon/config.d.ts +40 -0
- package/dist/neon/config.d.ts.map +1 -0
- package/dist/neon/config.js +23 -0
- package/dist/neon/config.js.map +1 -0
- package/dist/neon/connection.d.ts +22 -0
- package/dist/neon/connection.d.ts.map +1 -0
- package/dist/neon/connection.js +33 -0
- package/dist/neon/connection.js.map +1 -0
- package/dist/neon/context.d.ts +50 -0
- package/dist/neon/context.d.ts.map +1 -0
- package/dist/neon/context.js +59 -0
- package/dist/neon/context.js.map +1 -0
- package/dist/neon/coverage.d.ts +26 -0
- package/dist/neon/coverage.d.ts.map +1 -0
- package/dist/neon/coverage.js +229 -0
- package/dist/neon/coverage.js.map +1 -0
- package/dist/neon/errors.d.ts +78 -0
- package/dist/neon/errors.d.ts.map +1 -0
- package/dist/neon/errors.js +116 -0
- package/dist/neon/errors.js.map +1 -0
- package/dist/neon/paginate.d.ts +34 -0
- package/dist/neon/paginate.d.ts.map +1 -0
- package/dist/neon/paginate.js +51 -0
- package/dist/neon/paginate.js.map +1 -0
- package/dist/neon/resources/account.d.ts +45 -0
- package/dist/neon/resources/account.d.ts.map +1 -0
- package/dist/neon/resources/account.js +65 -0
- package/dist/neon/resources/account.js.map +1 -0
- package/dist/neon/resources/branches.d.ts +84 -0
- package/dist/neon/resources/branches.d.ts.map +1 -0
- package/dist/neon/resources/branches.js +132 -0
- package/dist/neon/resources/branches.js.map +1 -0
- package/dist/neon/resources/consumption.d.ts +22 -0
- package/dist/neon/resources/consumption.d.ts.map +1 -0
- package/dist/neon/resources/consumption.js +59 -0
- package/dist/neon/resources/consumption.js.map +1 -0
- package/dist/neon/resources/dataapi.d.ts +25 -0
- package/dist/neon/resources/dataapi.d.ts.map +1 -0
- package/dist/neon/resources/dataapi.js +59 -0
- package/dist/neon/resources/dataapi.js.map +1 -0
- package/dist/neon/resources/databases.d.ts +30 -0
- package/dist/neon/resources/databases.d.ts.map +1 -0
- package/dist/neon/resources/databases.js +68 -0
- package/dist/neon/resources/databases.js.map +1 -0
- package/dist/neon/resources/endpoints.d.ts +39 -0
- package/dist/neon/resources/endpoints.d.ts.map +1 -0
- package/dist/neon/resources/endpoints.js +89 -0
- package/dist/neon/resources/endpoints.js.map +1 -0
- package/dist/neon/resources/operations.d.ts +27 -0
- package/dist/neon/resources/operations.d.ts.map +1 -0
- package/dist/neon/resources/operations.js +50 -0
- package/dist/neon/resources/operations.js.map +1 -0
- package/dist/neon/resources/postgres.d.ts +45 -0
- package/dist/neon/resources/postgres.d.ts.map +1 -0
- package/dist/neon/resources/postgres.js +104 -0
- package/dist/neon/resources/postgres.js.map +1 -0
- package/dist/neon/resources/projects.d.ts +84 -0
- package/dist/neon/resources/projects.d.ts.map +1 -0
- package/dist/neon/resources/projects.js +111 -0
- package/dist/neon/resources/projects.js.map +1 -0
- package/dist/neon/resources/roles.d.ts +40 -0
- package/dist/neon/resources/roles.d.ts.map +1 -0
- package/dist/neon/resources/roles.js +78 -0
- package/dist/neon/resources/roles.js.map +1 -0
- package/dist/neon/resources/snapshots.d.ts +86 -0
- package/dist/neon/resources/snapshots.d.ts.map +1 -0
- package/dist/neon/resources/snapshots.js +125 -0
- package/dist/neon/resources/snapshots.js.map +1 -0
- package/dist/neon/result.d.ts +32 -0
- package/dist/neon/result.d.ts.map +1 -0
- package/dist/neon/result.js +26 -0
- package/dist/neon/result.js.map +1 -0
- package/dist/neon/retry.d.ts +17 -0
- package/dist/neon/retry.d.ts.map +1 -0
- package/dist/neon/retry.js +42 -0
- package/dist/neon/retry.js.map +1 -0
- package/dist/neon/wait.d.ts +27 -0
- package/dist/neon/wait.d.ts.map +1 -0
- package/dist/neon/wait.js +70 -0
- package/dist/neon/wait.js.map +1 -0
- package/dist/node_modules/.pnpm/@vitest_pretty-format@3.0.9/node_modules/@vitest/pretty-format/dist/index.js +879 -0
- package/dist/node_modules/.pnpm/@vitest_pretty-format@3.0.9/node_modules/@vitest/pretty-format/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/@vitest_runner@3.0.9/node_modules/@vitest/runner/dist/chunk-tasks.js +30 -0
- package/dist/node_modules/.pnpm/@vitest_runner@3.0.9/node_modules/@vitest/runner/dist/chunk-tasks.js.map +1 -0
- package/dist/node_modules/.pnpm/@vitest_runner@3.0.9/node_modules/@vitest/runner/dist/index.js +578 -0
- package/dist/node_modules/.pnpm/@vitest_runner@3.0.9/node_modules/@vitest/runner/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/@vitest_utils@3.0.9/node_modules/@vitest/utils/dist/chunk-_commonjsHelpers.js +92 -0
- package/dist/node_modules/.pnpm/@vitest_utils@3.0.9/node_modules/@vitest/utils/dist/chunk-_commonjsHelpers.js.map +1 -0
- package/dist/node_modules/.pnpm/@vitest_utils@3.0.9/node_modules/@vitest/utils/dist/helpers.js +43 -0
- package/dist/node_modules/.pnpm/@vitest_utils@3.0.9/node_modules/@vitest/utils/dist/helpers.js.map +1 -0
- package/dist/node_modules/.pnpm/@vitest_utils@3.0.9/node_modules/@vitest/utils/dist/index.js +450 -0
- package/dist/node_modules/.pnpm/@vitest_utils@3.0.9/node_modules/@vitest/utils/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/@vitest_utils@3.0.9/node_modules/@vitest/utils/dist/source-map.js +168 -0
- package/dist/node_modules/.pnpm/@vitest_utils@3.0.9/node_modules/@vitest/utils/dist/source-map.js.map +1 -0
- package/dist/node_modules/.pnpm/expect-type@1.2.1/node_modules/expect-type/dist/branding.js +10 -0
- package/dist/node_modules/.pnpm/expect-type@1.2.1/node_modules/expect-type/dist/branding.js.map +1 -0
- package/dist/node_modules/.pnpm/expect-type@1.2.1/node_modules/expect-type/dist/index.js +109 -0
- package/dist/node_modules/.pnpm/expect-type@1.2.1/node_modules/expect-type/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/expect-type@1.2.1/node_modules/expect-type/dist/messages.js +10 -0
- package/dist/node_modules/.pnpm/expect-type@1.2.1/node_modules/expect-type/dist/messages.js.map +1 -0
- package/dist/node_modules/.pnpm/expect-type@1.2.1/node_modules/expect-type/dist/overloads.js +10 -0
- package/dist/node_modules/.pnpm/expect-type@1.2.1/node_modules/expect-type/dist/overloads.js.map +1 -0
- package/dist/node_modules/.pnpm/expect-type@1.2.1/node_modules/expect-type/dist/utils.js +10 -0
- package/dist/node_modules/.pnpm/expect-type@1.2.1/node_modules/expect-type/dist/utils.js.map +1 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/arguments.js +11 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/arguments.js.map +1 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/array.js +16 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/array.js.map +1 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/bigint.js +11 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/bigint.js.map +1 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/class.js +15 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/class.js.map +1 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/date.js +13 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/date.js.map +1 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/error.js +34 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/error.js.map +1 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/function.js +12 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/function.js.map +1 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/helpers.js +122 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/helpers.js.map +1 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/html.js +39 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/html.js.map +1 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/index.js +99 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/index.js.map +1 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/map.js +25 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/map.js.map +1 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/number.js +14 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/number.js.map +1 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/object.js +21 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/object.js.map +1 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/promise.js +6 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/promise.js.map +1 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/regexp.js +12 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/regexp.js.map +1 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/set.js +18 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/set.js.map +1 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/string.js +24 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/string.js.map +1 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/symbol.js +9 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/symbol.js.map +1 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/typedarray.js +30 -0
- package/dist/node_modules/.pnpm/loupe@3.2.1/node_modules/loupe/lib/typedarray.js.map +1 -0
- package/dist/node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/chunk-BVHSVHOK.js +82 -0
- package/dist/node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/chunk-BVHSVHOK.js.map +1 -0
- package/dist/node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/node.js +7 -0
- package/dist/node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/node.js.map +1 -0
- package/dist/node_modules/.pnpm/vitest@3.0.9_@types_debug@4.1.13_@types_node@20.19.17_jiti@2.7.0_jsdom@26.1.0_lightning_fb7ae83398b95c49208c9194029bba02/node_modules/vitest/dist/index.js +8 -0
- package/dist/node_modules/.pnpm/vitest@3.0.9_@types_debug@4.1.13_@types_node@20.19.17_jiti@2.7.0_jsdom@26.1.0_lightning_fb7ae83398b95c49208c9194029bba02/node_modules/vitest/dist/index.js.map +1 -0
- package/dist/raw.d.ts +13 -0
- package/dist/raw.d.ts.map +1 -0
- package/dist/raw.js +159 -0
- package/dist/raw.js.map +1 -0
- package/package.json +58 -16
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","names":[],"sources":["../../src/neon/errors.ts"],"sourcesContent":["/**\n * Typed error hierarchy surfaced on the `error` channel of every ergonomic call (and\n * thrown when `throwOnError` is set). All are `Error` subclasses with a `kind`\n * discriminant, so the same value works whether you read it from `{ error }` or `catch`\n * it.\n */\n\nexport type NeonErrorKind =\n\t| \"api\"\n\t| \"not_found\"\n\t| \"auth\"\n\t| \"rate_limit\"\n\t| \"operation\"\n\t| \"timeout\"\n\t| \"network\"\n\t| \"client\";\n\n/** Base class for every error the ergonomic layer produces. */\nexport class NeonError extends Error {\n\treadonly kind: NeonErrorKind;\n\n\tconstructor(\n\t\tmessage: string,\n\t\tkind: NeonErrorKind,\n\t\toptions?: { cause?: unknown },\n\t) {\n\t\tsuper(message, options);\n\t\tthis.name = new.target.name;\n\t\tthis.kind = kind;\n\t}\n}\n\n/** A non-2xx HTTP response from the Neon API. */\nexport class NeonApiError extends NeonError {\n\t/** HTTP status code. */\n\treadonly status: number;\n\t/** Machine-readable Neon error code (`GeneralError.code`), when present. */\n\treadonly code?: string;\n\t/** Neon request id (`X-Request-Id` / `GeneralError.request_id`), when present. */\n\treadonly requestId?: string;\n\t/** The raw response, when one was received. */\n\treadonly response?: Response;\n\t/** The parsed error body, as returned by the API. */\n\treadonly body: unknown;\n\n\tconstructor(\n\t\tmessage: string,\n\t\tinit: {\n\t\t\tkind?: NeonErrorKind;\n\t\t\tstatus: number;\n\t\t\tcode?: string;\n\t\t\trequestId?: string;\n\t\t\tresponse?: Response;\n\t\t\tbody?: unknown;\n\t\t},\n\t) {\n\t\tsuper(message, init.kind ?? \"api\");\n\t\tthis.status = init.status;\n\t\tthis.code = init.code;\n\t\tthis.requestId = init.requestId;\n\t\tthis.response = init.response;\n\t\tthis.body = init.body;\n\t}\n}\n\n/** 404 — the resource does not exist. */\nexport class NeonNotFoundError extends NeonApiError {\n\tconstructor(\n\t\tmessage: string,\n\t\tinit: ConstructorParameters<typeof NeonApiError>[1],\n\t) {\n\t\tsuper(message, { ...init, kind: \"not_found\" });\n\t}\n}\n\n/** 401/403 — the API key is missing, invalid, or lacks permission. */\nexport class NeonAuthError extends NeonApiError {\n\tconstructor(\n\t\tmessage: string,\n\t\tinit: ConstructorParameters<typeof NeonApiError>[1],\n\t) {\n\t\tsuper(message, { ...init, kind: \"auth\" });\n\t}\n}\n\n/** 429 — rate limited (after retries, if enabled, were exhausted). */\nexport class NeonRateLimitError extends NeonApiError {\n\tconstructor(\n\t\tmessage: string,\n\t\tinit: ConstructorParameters<typeof NeonApiError>[1],\n\t) {\n\t\tsuper(message, { ...init, kind: \"rate_limit\" });\n\t}\n}\n\n/** An awaited Neon operation ended in a non-success terminal state. */\nexport class NeonOperationError extends NeonError {\n\t/** The id of the operation that failed. */\n\treadonly operationId: string;\n\t/** The terminal status reported by the API (`failed` / `error` / `cancelled`). */\n\treadonly status: string;\n\n\tconstructor(\n\t\tmessage: string,\n\t\tinit: { operationId: string; status: string },\n\t) {\n\t\tsuper(message, \"operation\");\n\t\tthis.operationId = init.operationId;\n\t\tthis.status = init.status;\n\t}\n}\n\n/** Waiting for operations to finish exceeded the configured timeout. */\nexport class NeonTimeoutError extends NeonError {\n\tconstructor(message: string) {\n\t\tsuper(message, \"timeout\");\n\t}\n}\n\n/** A transport-level failure (DNS, connection, abort) — no HTTP response received. */\nexport class NeonNetworkError extends NeonError {\n\tconstructor(message: string, options?: { cause?: unknown }) {\n\t\tsuper(message, \"network\", options);\n\t}\n}\n\ninterface ApiErrorBody {\n\tmessage?: string;\n\tcode?: string;\n\trequest_id?: string;\n}\n\nfunction readApiErrorBody(body: unknown): ApiErrorBody {\n\tif (typeof body !== \"object\" || body === null) return {};\n\tconst out: ApiErrorBody = {};\n\tif (\"message\" in body && typeof body.message === \"string\")\n\t\tout.message = body.message;\n\tif (\"code\" in body && typeof body.code === \"string\") out.code = body.code;\n\tif (\"request_id\" in body && typeof body.request_id === \"string\") {\n\t\tout.request_id = body.request_id;\n\t}\n\treturn out;\n}\n\n/**\n * Build the right {@link NeonError} subclass from a raw client result. `error` is the\n * decoded error body (Neon `GeneralError`); `response` is present unless the failure was\n * transport-level.\n */\nexport function toNeonError(\n\terror: unknown,\n\tresponse: Response | undefined,\n): NeonError {\n\tif (!response) {\n\t\treturn new NeonNetworkError(\n\t\t\t\"Network error: no response received from the Neon API.\",\n\t\t\t{ cause: error },\n\t\t);\n\t}\n\n\tconst parsed = readApiErrorBody(error);\n\tconst status = response.status;\n\tconst message =\n\t\tparsed.message ?? `Neon API request failed with status ${status}.`;\n\tconst init = {\n\t\tstatus,\n\t\tcode: parsed.code,\n\t\trequestId:\n\t\t\tparsed.request_id ??\n\t\t\tresponse.headers.get(\"x-request-id\") ??\n\t\t\tundefined,\n\t\tresponse,\n\t\tbody: error,\n\t};\n\n\tif (status === 404) return new NeonNotFoundError(message, init);\n\tif (status === 401 || status === 403)\n\t\treturn new NeonAuthError(message, init);\n\tif (status === 429) return new NeonRateLimitError(message, init);\n\treturn new NeonApiError(message, init);\n}\n"],"mappings":";;AAkBA,IAAa,YAAb,cAA+B,MAAM;CACpC;CAEA,YACC,SACA,MACA,SACC;EACD,MAAM,SAAS,OAAO;EACtB,KAAK,OAAO,IAAI,OAAO;EACvB,KAAK,OAAO;CACb;AACD;;AAGA,IAAa,eAAb,cAAkC,UAAU;;CAE3C;;CAEA;;CAEA;;CAEA;;CAEA;CAEA,YACC,SACA,MAQC;EACD,MAAM,SAAS,KAAK,QAAQ,KAAK;EACjC,KAAK,SAAS,KAAK;EACnB,KAAK,OAAO,KAAK;EACjB,KAAK,YAAY,KAAK;EACtB,KAAK,WAAW,KAAK;EACrB,KAAK,OAAO,KAAK;CAClB;AACD;;AAGA,IAAa,oBAAb,cAAuC,aAAa;CACnD,YACC,SACA,MACC;EACD,MAAM,SAAS;GAAE,GAAG;GAAM,MAAM;EAAY,CAAC;CAC9C;AACD;;AAGA,IAAa,gBAAb,cAAmC,aAAa;CAC/C,YACC,SACA,MACC;EACD,MAAM,SAAS;GAAE,GAAG;GAAM,MAAM;EAAO,CAAC;CACzC;AACD;;AAGA,IAAa,qBAAb,cAAwC,aAAa;CACpD,YACC,SACA,MACC;EACD,MAAM,SAAS;GAAE,GAAG;GAAM,MAAM;EAAa,CAAC;CAC/C;AACD;;AAGA,IAAa,qBAAb,cAAwC,UAAU;;CAEjD;;CAEA;CAEA,YACC,SACA,MACC;EACD,MAAM,SAAS,WAAW;EAC1B,KAAK,cAAc,KAAK;EACxB,KAAK,SAAS,KAAK;CACpB;AACD;;AAGA,IAAa,mBAAb,cAAsC,UAAU;CAC/C,YAAY,SAAiB;EAC5B,MAAM,SAAS,SAAS;CACzB;AACD;;AAGA,IAAa,mBAAb,cAAsC,UAAU;CAC/C,YAAY,SAAiB,SAA+B;EAC3D,MAAM,SAAS,WAAW,OAAO;CAClC;AACD;AAQA,SAAS,iBAAiB,MAA6B;CACtD,IAAI,OAAO,SAAS,YAAY,SAAS,MAAM,OAAO,CAAC;CACvD,MAAM,MAAoB,CAAC;CAC3B,IAAI,aAAa,QAAQ,OAAO,KAAK,YAAY,UAChD,IAAI,UAAU,KAAK;CACpB,IAAI,UAAU,QAAQ,OAAO,KAAK,SAAS,UAAU,IAAI,OAAO,KAAK;CACrE,IAAI,gBAAgB,QAAQ,OAAO,KAAK,eAAe,UACtD,IAAI,aAAa,KAAK;CAEvB,OAAO;AACR;;;;;;AAOA,SAAgB,YACf,OACA,UACY;CACZ,IAAI,CAAC,UACJ,OAAO,IAAI,iBACV,0DACA,EAAE,OAAO,MAAM,CAChB;CAGD,MAAM,SAAS,iBAAiB,KAAK;CACrC,MAAM,SAAS,SAAS;CACxB,MAAM,UACL,OAAO,WAAW,uCAAuC,OAAO;CACjE,MAAM,OAAO;EACZ;EACA,MAAM,OAAO;EACb,WACC,OAAO,cACP,SAAS,QAAQ,IAAI,cAAc,KACnC,KAAA;EACD;EACA,MAAM;CACP;CAEA,IAAI,WAAW,KAAK,OAAO,IAAI,kBAAkB,SAAS,IAAI;CAC9D,IAAI,WAAW,OAAO,WAAW,KAChC,OAAO,IAAI,cAAc,SAAS,IAAI;CACvC,IAAI,WAAW,KAAK,OAAO,IAAI,mBAAmB,SAAS,IAAI;CAC/D,OAAO,IAAI,aAAa,SAAS,IAAI;AACtC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { NeonResult } from "./result.js";
|
|
2
|
+
|
|
3
|
+
//#region src/neon/paginate.d.ts
|
|
4
|
+
interface Page<T> {
|
|
5
|
+
items: T[];
|
|
6
|
+
/** Cursor for the next page, when more results exist. */
|
|
7
|
+
cursor?: string;
|
|
8
|
+
}
|
|
9
|
+
interface RawResult<D> {
|
|
10
|
+
data?: D | undefined;
|
|
11
|
+
error?: unknown;
|
|
12
|
+
response?: Response | undefined;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* A lazy, cursor-paginated list. `all()` / `page()` return the `{ data, error }` envelope;
|
|
16
|
+
* the async iterator streams items lazily and throws on a page-fetch error.
|
|
17
|
+
*
|
|
18
|
+
* Note: pagination helpers always use the result envelope (the iterator is the throwing
|
|
19
|
+
* form) regardless of the client's `throwOnError` setting.
|
|
20
|
+
*/
|
|
21
|
+
interface Paginated<T> extends AsyncIterable<T> {
|
|
22
|
+
/** Fetch a single page (optionally from a cursor). */
|
|
23
|
+
page(cursor?: string): Promise<NeonResult<Page<T>>>;
|
|
24
|
+
/** Fetch and concatenate every page. */
|
|
25
|
+
all(): Promise<NeonResult<T[]>>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Build a {@link Paginated} list from a page fetcher and a page mapper. The response-body
|
|
29
|
+
* type `D` is inferred and erased from the public `Paginated<T>` return.
|
|
30
|
+
*/
|
|
31
|
+
declare function paginate<T, D>(fetchPage: (cursor: string | undefined, signal?: AbortSignal) => Promise<RawResult<D>>, mapPage: (data: D) => Page<T>, signal?: AbortSignal): Paginated<T>;
|
|
32
|
+
//#endregion
|
|
33
|
+
export { Page, Paginated, paginate };
|
|
34
|
+
//# sourceMappingURL=paginate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paginate.d.ts","names":[],"sources":["../../src/neon/paginate.ts"],"mappings":";;;UAGiB;SACT;EADS;EAMP,MAAA,CAAA,EAAA,MAAS;;UAAT,SACF,CAAA,CAAA,CAAA,CAAA;MAEI,CAAA,EAFJ,CAEI,GAAA,SAAA;EAAQ,KAAA,CAAA,EAAA,OAAA;EAUH,QAAA,CAAA,EAVL,QAUc,GAAA,SAAA;;;;;;;;;AAIlB,UAJS,SAIT,CAAA,CAAA,CAAA,SAJ8B,aAI9B,CAJ4C,CAI5C,CAAA,CAAA;;EAJ2C,IAAA,CAAA,MAAA,CAAA,EAAA,MAAA,CAAA,EAE3B,OAF2B,CAEnB,UAFmB,CAER,IAFQ,CAEH,CAFG,CAAA,CAAA,CAAA;EAiEnC;EAAQ,GAAA,EAAA,EA7DhB,OA6DgB,CA7DR,UA6DQ,CA7DG,CA6DH,EAAA,CAAA,CAAA;;;;;;AAKI,iBALZ,QAKY,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,SAAA,EAAA,CAAA,MAAA,EAAA,MAAA,GAAA,SAAA,EAAA,MAAA,CAAA,EAFjB,WAEiB,EAAA,GADtB,OACsB,CADd,SACc,CADJ,CACI,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,IAAA,EAAX,CAAW,EAAA,GAAL,IAAK,CAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAClB,WADkB,CAAA,EAEzB,SAFyB,CAEf,CAFe,CAAA"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { toNeonError } from "./errors.js";
|
|
2
|
+
import { err, ok } from "./result.js";
|
|
3
|
+
//#region src/neon/paginate.ts
|
|
4
|
+
var PaginatedList = class {
|
|
5
|
+
#fetchPage;
|
|
6
|
+
#mapPage;
|
|
7
|
+
#signal;
|
|
8
|
+
constructor(fetchPage, mapPage, signal) {
|
|
9
|
+
this.#fetchPage = fetchPage;
|
|
10
|
+
this.#mapPage = mapPage;
|
|
11
|
+
this.#signal = signal;
|
|
12
|
+
}
|
|
13
|
+
async page(cursor) {
|
|
14
|
+
const raw = await this.#fetchPage(cursor, this.#signal);
|
|
15
|
+
if (raw.error || raw.data === void 0) return err(toNeonError(raw.error, raw.response));
|
|
16
|
+
return ok(this.#mapPage(raw.data));
|
|
17
|
+
}
|
|
18
|
+
async all() {
|
|
19
|
+
const items = [];
|
|
20
|
+
let cursor;
|
|
21
|
+
while (true) {
|
|
22
|
+
const result = await this.page(cursor);
|
|
23
|
+
if (result.error) return err(result.error);
|
|
24
|
+
items.push(...result.data.items);
|
|
25
|
+
if (!result.data.cursor || result.data.items.length === 0) break;
|
|
26
|
+
cursor = result.data.cursor;
|
|
27
|
+
}
|
|
28
|
+
return ok(items);
|
|
29
|
+
}
|
|
30
|
+
async *[Symbol.asyncIterator]() {
|
|
31
|
+
let cursor;
|
|
32
|
+
while (true) {
|
|
33
|
+
const result = await this.page(cursor);
|
|
34
|
+
if (result.error) throw result.error;
|
|
35
|
+
yield* result.data.items;
|
|
36
|
+
if (!result.data.cursor || result.data.items.length === 0) break;
|
|
37
|
+
cursor = result.data.cursor;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Build a {@link Paginated} list from a page fetcher and a page mapper. The response-body
|
|
43
|
+
* type `D` is inferred and erased from the public `Paginated<T>` return.
|
|
44
|
+
*/
|
|
45
|
+
function paginate(fetchPage, mapPage, signal) {
|
|
46
|
+
return new PaginatedList(fetchPage, mapPage, signal);
|
|
47
|
+
}
|
|
48
|
+
//#endregion
|
|
49
|
+
export { paginate };
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=paginate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paginate.js","names":["#fetchPage","#mapPage","#signal"],"sources":["../../src/neon/paginate.ts"],"sourcesContent":["import { toNeonError } from \"./errors.js\";\nimport { err, type NeonResult, ok } from \"./result.js\";\n\nexport interface Page<T> {\n\titems: T[];\n\t/** Cursor for the next page, when more results exist. */\n\tcursor?: string;\n}\n\ninterface RawResult<D> {\n\tdata?: D | undefined;\n\terror?: unknown;\n\tresponse?: Response | undefined;\n}\n\n/**\n * A lazy, cursor-paginated list. `all()` / `page()` return the `{ data, error }` envelope;\n * the async iterator streams items lazily and throws on a page-fetch error.\n *\n * Note: pagination helpers always use the result envelope (the iterator is the throwing\n * form) regardless of the client's `throwOnError` setting.\n */\nexport interface Paginated<T> extends AsyncIterable<T> {\n\t/** Fetch a single page (optionally from a cursor). */\n\tpage(cursor?: string): Promise<NeonResult<Page<T>>>;\n\t/** Fetch and concatenate every page. */\n\tall(): Promise<NeonResult<T[]>>;\n}\n\nclass PaginatedList<T, D> implements Paginated<T> {\n\treadonly #fetchPage: (\n\t\tcursor: string | undefined,\n\t\tsignal?: AbortSignal,\n\t) => Promise<RawResult<D>>;\n\treadonly #mapPage: (data: D) => Page<T>;\n\treadonly #signal?: AbortSignal;\n\n\tconstructor(\n\t\tfetchPage: (\n\t\t\tcursor: string | undefined,\n\t\t\tsignal?: AbortSignal,\n\t\t) => Promise<RawResult<D>>,\n\t\tmapPage: (data: D) => Page<T>,\n\t\tsignal?: AbortSignal,\n\t) {\n\t\tthis.#fetchPage = fetchPage;\n\t\tthis.#mapPage = mapPage;\n\t\tthis.#signal = signal;\n\t}\n\n\tasync page(cursor?: string): Promise<NeonResult<Page<T>>> {\n\t\tconst raw = await this.#fetchPage(cursor, this.#signal);\n\t\tif (raw.error || raw.data === undefined) {\n\t\t\treturn err(toNeonError(raw.error, raw.response));\n\t\t}\n\t\treturn ok(this.#mapPage(raw.data));\n\t}\n\n\tasync all(): Promise<NeonResult<T[]>> {\n\t\tconst items: T[] = [];\n\t\tlet cursor: string | undefined;\n\t\twhile (true) {\n\t\t\tconst result = await this.page(cursor);\n\t\t\tif (result.error) return err(result.error);\n\t\t\titems.push(...result.data.items);\n\t\t\tif (!result.data.cursor || result.data.items.length === 0) break;\n\t\t\tcursor = result.data.cursor;\n\t\t}\n\t\treturn ok(items);\n\t}\n\n\tasync *[Symbol.asyncIterator](): AsyncIterator<T> {\n\t\tlet cursor: string | undefined;\n\t\twhile (true) {\n\t\t\tconst result = await this.page(cursor);\n\t\t\tif (result.error) throw result.error;\n\t\t\tyield* result.data.items;\n\t\t\tif (!result.data.cursor || result.data.items.length === 0) break;\n\t\t\tcursor = result.data.cursor;\n\t\t}\n\t}\n}\n\n/**\n * Build a {@link Paginated} list from a page fetcher and a page mapper. The response-body\n * type `D` is inferred and erased from the public `Paginated<T>` return.\n */\nexport function paginate<T, D>(\n\tfetchPage: (\n\t\tcursor: string | undefined,\n\t\tsignal?: AbortSignal,\n\t) => Promise<RawResult<D>>,\n\tmapPage: (data: D) => Page<T>,\n\tsignal?: AbortSignal,\n): Paginated<T> {\n\treturn new PaginatedList(fetchPage, mapPage, signal);\n}\n"],"mappings":";;;AA6BA,IAAM,gBAAN,MAAkD;CACjD;CAIA;CACA;CAEA,YACC,WAIA,SACA,QACC;EACD,KAAKA,aAAa;EAClB,KAAKC,WAAW;EAChB,KAAKC,UAAU;CAChB;CAEA,MAAM,KAAK,QAA+C;EACzD,MAAM,MAAM,MAAM,KAAKF,WAAW,QAAQ,KAAKE,OAAO;EACtD,IAAI,IAAI,SAAS,IAAI,SAAS,KAAA,GAC7B,OAAO,IAAI,YAAY,IAAI,OAAO,IAAI,QAAQ,CAAC;EAEhD,OAAO,GAAG,KAAKD,SAAS,IAAI,IAAI,CAAC;CAClC;CAEA,MAAM,MAAgC;EACrC,MAAM,QAAa,CAAC;EACpB,IAAI;EACJ,OAAO,MAAM;GACZ,MAAM,SAAS,MAAM,KAAK,KAAK,MAAM;GACrC,IAAI,OAAO,OAAO,OAAO,IAAI,OAAO,KAAK;GACzC,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK;GAC/B,IAAI,CAAC,OAAO,KAAK,UAAU,OAAO,KAAK,MAAM,WAAW,GAAG;GAC3D,SAAS,OAAO,KAAK;EACtB;EACA,OAAO,GAAG,KAAK;CAChB;CAEA,QAAQ,OAAO,iBAAmC;EACjD,IAAI;EACJ,OAAO,MAAM;GACZ,MAAM,SAAS,MAAM,KAAK,KAAK,MAAM;GACrC,IAAI,OAAO,OAAO,MAAM,OAAO;GAC/B,OAAO,OAAO,KAAK;GACnB,IAAI,CAAC,OAAO,KAAK,UAAU,OAAO,KAAK,MAAM,WAAW,GAAG;GAC3D,SAAS,OAAO,KAAK;EACtB;CACD;AACD;;;;;AAMA,SAAgB,SACf,WAIA,SACA,QACe;CACf,OAAO,IAAI,cAAc,WAAW,SAAS,MAAM;AACpD"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { ApiKeyCreateResponse, ApiKeyRevokeResponse, ApiKeysListResponseItem, CurrentUserInfoResponse, Organization, RegionResponse } from "../../client/types.gen.js";
|
|
2
|
+
import { Outcome } from "../result.js";
|
|
3
|
+
import { CallOptions, RequestContext } from "../context.js";
|
|
4
|
+
|
|
5
|
+
//#region src/neon/resources/account.d.ts
|
|
6
|
+
/** Current user / account resource. */
|
|
7
|
+
declare class User<DThrow extends boolean> {
|
|
8
|
+
#private;
|
|
9
|
+
constructor(ctx: RequestContext);
|
|
10
|
+
/** @apiCall GET /users/me */
|
|
11
|
+
me(): Promise<Outcome<CurrentUserInfoResponse, DThrow>>;
|
|
12
|
+
me<Throw extends boolean = DThrow>(opts: CallOptions<Throw>): Promise<Outcome<CurrentUserInfoResponse, Throw>>;
|
|
13
|
+
/** @apiCall GET /users/me/organizations */
|
|
14
|
+
organizations(): Promise<Outcome<Organization[], DThrow>>;
|
|
15
|
+
organizations<Throw extends boolean = DThrow>(opts: CallOptions<Throw>): Promise<Outcome<Organization[], Throw>>;
|
|
16
|
+
}
|
|
17
|
+
/** Active regions. */
|
|
18
|
+
declare class Regions<DThrow extends boolean> {
|
|
19
|
+
#private;
|
|
20
|
+
constructor(ctx: RequestContext);
|
|
21
|
+
/** @apiCall GET /regions */
|
|
22
|
+
list(): Promise<Outcome<RegionResponse[], DThrow>>;
|
|
23
|
+
list<Throw extends boolean = DThrow>(opts: CallOptions<Throw>): Promise<Outcome<RegionResponse[], Throw>>;
|
|
24
|
+
}
|
|
25
|
+
/** Account API keys. */
|
|
26
|
+
declare class ApiKeys<DThrow extends boolean> {
|
|
27
|
+
#private;
|
|
28
|
+
constructor(ctx: RequestContext);
|
|
29
|
+
/** @apiCall GET /api_keys */
|
|
30
|
+
list(): Promise<Outcome<ApiKeysListResponseItem[], DThrow>>;
|
|
31
|
+
list<Throw extends boolean = DThrow>(opts: CallOptions<Throw>): Promise<Outcome<ApiKeysListResponseItem[], Throw>>;
|
|
32
|
+
/**
|
|
33
|
+
* Create an API key. The returned `key` token is shown **once** — store it now.
|
|
34
|
+
*
|
|
35
|
+
* @apiCall POST /api_keys
|
|
36
|
+
*/
|
|
37
|
+
create(keyName: string): Promise<Outcome<ApiKeyCreateResponse, DThrow>>;
|
|
38
|
+
create<Throw extends boolean = DThrow>(keyName: string, opts: CallOptions<Throw>): Promise<Outcome<ApiKeyCreateResponse, Throw>>;
|
|
39
|
+
/** @apiCall DELETE /api_keys/{key_id} */
|
|
40
|
+
revoke(keyId: number): Promise<Outcome<ApiKeyRevokeResponse, DThrow>>;
|
|
41
|
+
revoke<Throw extends boolean = DThrow>(keyId: number, opts: CallOptions<Throw>): Promise<Outcome<ApiKeyRevokeResponse, Throw>>;
|
|
42
|
+
}
|
|
43
|
+
//#endregion
|
|
44
|
+
export { ApiKeys, Regions, User };
|
|
45
|
+
//# sourceMappingURL=account.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account.d.ts","names":[],"sources":["../../../src/neon/resources/account.ts"],"mappings":";;;;;;cAoBa;EAAA,CAAA,OAAI;EAAA,WAAA,CAAA,GAAA,EAGC,cAHD;;MAQM,EAAhB,OAAgB,CAAR,OAAQ,CAAA,uBAAA,EAAyB,MAAzB,CAAA,CAAA;KAAyB,cAAA,OAAA,GACpB,MADoB,CAAA,CAAA,IAAA,EAExC,WAFwC,CAE5B,KAF4B,CAAA,CAAA,EAG5C,OAH4C,CAGpC,OAHoC,CAG5B,uBAH4B,EAGH,KAHG,CAAA,CAAA;;eAAzC,CAAA,CAAA,EAeW,OAfX,CAemB,OAfnB,CAe2B,YAf3B,EAAA,EAe2C,MAf3C,CAAA,CAAA;eACqB,CAAA,cAAA,OAAA,GAeW,MAfX,CAAA,CAAA,IAAA,EAgBpB,WAhBoB,CAgBR,KAhBQ,CAAA,CAAA,EAiBxB,OAjBwB,CAiBhB,OAjBgB,CAiBR,YAjBQ,EAAA,EAiBQ,KAjBR,CAAA,CAAA;;;AAER,cA6BP,OA7BO,CAAA,eAAA,OAAA,CAAA,CAAA;UAAyB;aAAjC,CAAA,GAAA,EAgCM,cAhCN;;MAYsB,CAAA,CAAA,EAyBzB,OAzByB,CAyBjB,OAzBiB,CAyBT,cAzBS,EAAA,EAyBS,MAzBT,CAAA,CAAA;MAAgB,CAAA,cAAA,OAAA,GA0BpB,MA1BoB,CAAA,CAAA,IAAA,EA2B1C,WA3B0C,CA2B9B,KA3B8B,CAAA,CAAA,EA4B9C,OA5B8C,CA4BtC,OA5BsC,CA4B9B,cA5B8B,EAAA,EA4BZ,KA5BY,CAAA,CAAA;;;AACX,cAwC1B,OAxC0B,CAAA,eAAA,OAAA,CAAA,CAAA;UACnB;aAAZ,CAAA,GAAA,EA0CU,cA1CV;;MAC4B,CAAA,CAAA,EA8C3B,OA9C2B,CA8CnB,OA9CmB,CA8CX,uBA9CW,EAAA,EA8CgB,MA9ChB,CAAA,CAAA;MAAxB,CAAA,cAAA,OAAA,GA+CkB,MA/ClB,CAAA,CAAA,IAAA,EAgDJ,WAhDI,CAgDQ,KAhDR,CAAA,CAAA,EAiDR,OAjDQ,CAiDA,OAjDA,CAiDQ,uBAjDR,EAAA,EAiDmC,KAjDnC,CAAA,CAAA;;AAAD;AAcX;;;QAQyB,CAAA,OAAA,EAAA,MAAA,CAAA,EA6CC,OA7CD,CA6CS,OA7CT,CA6CiB,oBA7CjB,EA6CuC,MA7CvC,CAAA,CAAA;QAAkB,CAAA,cAAA,OAAA,GA8CX,MA9CW,CAAA,CAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAgDnC,WAhDmC,CAgDvB,KAhDuB,CAAA,CAAA,EAiDvC,OAjDuC,CAiD/B,OAjD+B,CAiDvB,oBAjDuB,EAiDD,KAjDC,CAAA,CAAA;;QAAlC,CAAA,KAAA,EAAA,MAAA,CAAA,EAmEe,OAnEf,CAmEuB,OAnEvB,CAmE+B,oBAnE/B,EAmEqD,MAnErD,CAAA,CAAA;QACqB,CAAA,cAAA,OAAA,GAmEE,MAnEF,CAAA,CAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAqEtB,WArEsB,CAqEV,KArEU,CAAA,CAAA,EAsE1B,OAtE0B,CAsElB,OAtEkB,CAsEV,oBAtEU,EAsEY,KAtEZ,CAAA,CAAA"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { createApiKey, getActiveRegions, getCurrentUserInfo, getCurrentUserOrganizations, listApiKeys, revokeApiKey } from "../../client/sdk.gen.js";
|
|
2
|
+
//#region src/neon/resources/account.ts
|
|
3
|
+
/** Current user / account resource. */
|
|
4
|
+
var User = class {
|
|
5
|
+
#ctx;
|
|
6
|
+
constructor(ctx) {
|
|
7
|
+
this.#ctx = ctx;
|
|
8
|
+
}
|
|
9
|
+
me(opts) {
|
|
10
|
+
return this.#ctx.run(opts, (client) => getCurrentUserInfo({
|
|
11
|
+
client,
|
|
12
|
+
throwOnError: false
|
|
13
|
+
}), (data) => data);
|
|
14
|
+
}
|
|
15
|
+
organizations(opts) {
|
|
16
|
+
return this.#ctx.run(opts, (client) => getCurrentUserOrganizations({
|
|
17
|
+
client,
|
|
18
|
+
throwOnError: false
|
|
19
|
+
}), (data) => data.organizations);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
/** Active regions. */
|
|
23
|
+
var Regions = class {
|
|
24
|
+
#ctx;
|
|
25
|
+
constructor(ctx) {
|
|
26
|
+
this.#ctx = ctx;
|
|
27
|
+
}
|
|
28
|
+
list(opts) {
|
|
29
|
+
return this.#ctx.run(opts, (client) => getActiveRegions({
|
|
30
|
+
client,
|
|
31
|
+
throwOnError: false
|
|
32
|
+
}), (data) => data.regions);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
/** Account API keys. */
|
|
36
|
+
var ApiKeys = class {
|
|
37
|
+
#ctx;
|
|
38
|
+
constructor(ctx) {
|
|
39
|
+
this.#ctx = ctx;
|
|
40
|
+
}
|
|
41
|
+
list(opts) {
|
|
42
|
+
return this.#ctx.run(opts, (client) => listApiKeys({
|
|
43
|
+
client,
|
|
44
|
+
throwOnError: false
|
|
45
|
+
}), (data) => data);
|
|
46
|
+
}
|
|
47
|
+
create(keyName, opts) {
|
|
48
|
+
return this.#ctx.run(opts, (client) => createApiKey({
|
|
49
|
+
client,
|
|
50
|
+
body: { key_name: keyName },
|
|
51
|
+
throwOnError: false
|
|
52
|
+
}), (data) => data);
|
|
53
|
+
}
|
|
54
|
+
revoke(keyId, opts) {
|
|
55
|
+
return this.#ctx.run(opts, (client) => revokeApiKey({
|
|
56
|
+
client,
|
|
57
|
+
path: { key_id: keyId },
|
|
58
|
+
throwOnError: false
|
|
59
|
+
}), (data) => data);
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
//#endregion
|
|
63
|
+
export { ApiKeys, Regions, User };
|
|
64
|
+
|
|
65
|
+
//# sourceMappingURL=account.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account.js","names":["#ctx"],"sources":["../../../src/neon/resources/account.ts"],"sourcesContent":["import {\n\tcreateApiKey,\n\tgetActiveRegions,\n\tgetCurrentUserInfo,\n\tgetCurrentUserOrganizations,\n\tlistApiKeys,\n\trevokeApiKey,\n} from \"../../client/sdk.gen.js\";\nimport type {\n\tApiKeyCreateResponse,\n\tApiKeyRevokeResponse,\n\tApiKeysListResponseItem,\n\tCurrentUserInfoResponse,\n\tOrganization,\n\tRegionResponse,\n} from \"../../client/types.gen.js\";\nimport type { CallOptions, RequestContext } from \"../context.js\";\nimport type { NeonResult, Outcome } from \"../result.js\";\n\n/** Current user / account resource. */\nexport class User<DThrow extends boolean> {\n\treadonly #ctx: RequestContext;\n\n\tconstructor(ctx: RequestContext) {\n\t\tthis.#ctx = ctx;\n\t}\n\n\t/** @apiCall GET /users/me */\n\tme(): Promise<Outcome<CurrentUserInfoResponse, DThrow>>;\n\tme<Throw extends boolean = DThrow>(\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<CurrentUserInfoResponse, Throw>>;\n\tme(\n\t\topts?: CallOptions,\n\t): Promise<CurrentUserInfoResponse | NeonResult<CurrentUserInfoResponse>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client) => getCurrentUserInfo({ client, throwOnError: false }),\n\t\t\t(data) => data,\n\t\t);\n\t}\n\n\t/** @apiCall GET /users/me/organizations */\n\torganizations(): Promise<Outcome<Organization[], DThrow>>;\n\torganizations<Throw extends boolean = DThrow>(\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<Organization[], Throw>>;\n\torganizations(\n\t\topts?: CallOptions,\n\t): Promise<Organization[] | NeonResult<Organization[]>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client) =>\n\t\t\t\tgetCurrentUserOrganizations({ client, throwOnError: false }),\n\t\t\t(data) => data.organizations,\n\t\t);\n\t}\n}\n\n/** Active regions. */\nexport class Regions<DThrow extends boolean> {\n\treadonly #ctx: RequestContext;\n\n\tconstructor(ctx: RequestContext) {\n\t\tthis.#ctx = ctx;\n\t}\n\n\t/** @apiCall GET /regions */\n\tlist(): Promise<Outcome<RegionResponse[], DThrow>>;\n\tlist<Throw extends boolean = DThrow>(\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<RegionResponse[], Throw>>;\n\tlist(\n\t\topts?: CallOptions,\n\t): Promise<RegionResponse[] | NeonResult<RegionResponse[]>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client) => getActiveRegions({ client, throwOnError: false }),\n\t\t\t(data) => data.regions,\n\t\t);\n\t}\n}\n\n/** Account API keys. */\nexport class ApiKeys<DThrow extends boolean> {\n\treadonly #ctx: RequestContext;\n\n\tconstructor(ctx: RequestContext) {\n\t\tthis.#ctx = ctx;\n\t}\n\n\t/** @apiCall GET /api_keys */\n\tlist(): Promise<Outcome<ApiKeysListResponseItem[], DThrow>>;\n\tlist<Throw extends boolean = DThrow>(\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<ApiKeysListResponseItem[], Throw>>;\n\tlist(\n\t\topts?: CallOptions,\n\t): Promise<\n\t\tApiKeysListResponseItem[] | NeonResult<ApiKeysListResponseItem[]>\n\t> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client) => listApiKeys({ client, throwOnError: false }),\n\t\t\t(data) => data,\n\t\t);\n\t}\n\n\t/**\n\t * Create an API key. The returned `key` token is shown **once** — store it now.\n\t *\n\t * @apiCall POST /api_keys\n\t */\n\tcreate(keyName: string): Promise<Outcome<ApiKeyCreateResponse, DThrow>>;\n\tcreate<Throw extends boolean = DThrow>(\n\t\tkeyName: string,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<ApiKeyCreateResponse, Throw>>;\n\tcreate(\n\t\tkeyName: string,\n\t\topts?: CallOptions,\n\t): Promise<ApiKeyCreateResponse | NeonResult<ApiKeyCreateResponse>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client) =>\n\t\t\t\tcreateApiKey({\n\t\t\t\t\tclient,\n\t\t\t\t\tbody: { key_name: keyName },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t}),\n\t\t\t(data) => data,\n\t\t);\n\t}\n\n\t/** @apiCall DELETE /api_keys/{key_id} */\n\trevoke(keyId: number): Promise<Outcome<ApiKeyRevokeResponse, DThrow>>;\n\trevoke<Throw extends boolean = DThrow>(\n\t\tkeyId: number,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<ApiKeyRevokeResponse, Throw>>;\n\trevoke(\n\t\tkeyId: number,\n\t\topts?: CallOptions,\n\t): Promise<ApiKeyRevokeResponse | NeonResult<ApiKeyRevokeResponse>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client) =>\n\t\t\t\trevokeApiKey({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { key_id: keyId },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t}),\n\t\t\t(data) => data,\n\t\t);\n\t}\n}\n"],"mappings":";;;AAoBA,IAAa,OAAb,MAA0C;CACzC;CAEA,YAAY,KAAqB;EAChC,KAAKA,OAAO;CACb;CAOA,GACC,MACyE;EACzE,OAAO,KAAKA,KAAK,IAChB,OACC,WAAW,mBAAmB;GAAE;GAAQ,cAAc;EAAM,CAAC,IAC7D,SAAS,IACX;CACD;CAOA,cACC,MACuD;EACvD,OAAO,KAAKA,KAAK,IAChB,OACC,WACA,4BAA4B;GAAE;GAAQ,cAAc;EAAM,CAAC,IAC3D,SAAS,KAAK,aAChB;CACD;AACD;;AAGA,IAAa,UAAb,MAA6C;CAC5C;CAEA,YAAY,KAAqB;EAChC,KAAKA,OAAO;CACb;CAOA,KACC,MAC2D;EAC3D,OAAO,KAAKA,KAAK,IAChB,OACC,WAAW,iBAAiB;GAAE;GAAQ,cAAc;EAAM,CAAC,IAC3D,SAAS,KAAK,OAChB;CACD;AACD;;AAGA,IAAa,UAAb,MAA6C;CAC5C;CAEA,YAAY,KAAqB;EAChC,KAAKA,OAAO;CACb;CAOA,KACC,MAGC;EACD,OAAO,KAAKA,KAAK,IAChB,OACC,WAAW,YAAY;GAAE;GAAQ,cAAc;EAAM,CAAC,IACtD,SAAS,IACX;CACD;CAYA,OACC,SACA,MACmE;EACnE,OAAO,KAAKA,KAAK,IAChB,OACC,WACA,aAAa;GACZ;GACA,MAAM,EAAE,UAAU,QAAQ;GAC1B,cAAc;EACf,CAAC,IACD,SAAS,IACX;CACD;CAQA,OACC,OACA,MACmE;EACnE,OAAO,KAAKA,KAAK,IAChB,OACC,WACA,aAAa;GACZ;GACA,MAAM,EAAE,QAAQ,MAAM;GACtB,cAAc;EACf,CAAC,IACD,SAAS,IACX;CACD;AACD"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { Branch, BranchCreateRequest, BranchUpdateRequest, Endpoint, ListProjectBranchesData } from "../../client/types.gen.js";
|
|
2
|
+
import { Outcome } from "../result.js";
|
|
3
|
+
import { CallOptions, RequestContext } from "../context.js";
|
|
4
|
+
import { Paginated } from "../paginate.js";
|
|
5
|
+
|
|
6
|
+
//#region src/neon/resources/branches.d.ts
|
|
7
|
+
type ListQuery = Omit<NonNullable<ListProjectBranchesData["query"]>, "cursor">;
|
|
8
|
+
type CreateInput = NonNullable<BranchCreateRequest["branch"]>;
|
|
9
|
+
type UpdateInput = BranchUpdateRequest["branch"];
|
|
10
|
+
/** Per-call options for the connect/compute workflows. */
|
|
11
|
+
interface WorkflowOptions<Throw extends boolean> extends CallOptions<Throw> {
|
|
12
|
+
/** Return a pooled connection string (default `true`). */
|
|
13
|
+
pooled?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/** Input for {@link Branches.createWithCompute}. */
|
|
16
|
+
interface CreateWithComputeInput {
|
|
17
|
+
name?: string;
|
|
18
|
+
/** Parent branch id. Defaults to the project's default branch. */
|
|
19
|
+
parentId?: string;
|
|
20
|
+
/** Autoscaling settings for the branch's read-write endpoint. */
|
|
21
|
+
compute?: {
|
|
22
|
+
minCu?: number;
|
|
23
|
+
maxCu?: number;
|
|
24
|
+
suspendTimeoutSeconds?: number;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/** A branch with its read-write endpoint and a ready-to-use connection string. */
|
|
28
|
+
interface BranchWithCompute {
|
|
29
|
+
branch: Branch;
|
|
30
|
+
endpoint: Endpoint;
|
|
31
|
+
connectionString: string;
|
|
32
|
+
}
|
|
33
|
+
/** Branch resource — one API call per CRUD method, plus the `createWithCompute` workflow. */
|
|
34
|
+
declare class Branches<DThrow extends boolean> {
|
|
35
|
+
#private;
|
|
36
|
+
constructor(ctx: RequestContext);
|
|
37
|
+
/** @apiCall GET /projects/{project_id}/branches (cursor-paginated) */
|
|
38
|
+
list(projectId: string, query?: ListQuery): Paginated<Branch>;
|
|
39
|
+
/** @apiCall GET /projects/{project_id}/branches/{branch_id} */
|
|
40
|
+
get(projectId: string, branchId: string): Promise<Outcome<Branch, DThrow>>;
|
|
41
|
+
get<Throw extends boolean = DThrow>(projectId: string, branchId: string, opts: CallOptions<Throw>): Promise<Outcome<Branch, Throw>>;
|
|
42
|
+
/** @apiCall POST /projects/{project_id}/branches */
|
|
43
|
+
create(projectId: string, input?: CreateInput): Promise<Outcome<Branch, DThrow>>;
|
|
44
|
+
create<Throw extends boolean = DThrow>(projectId: string, input: CreateInput | undefined, opts: CallOptions<Throw>): Promise<Outcome<Branch, Throw>>;
|
|
45
|
+
/** @apiCall PATCH /projects/{project_id}/branches/{branch_id} */
|
|
46
|
+
update(projectId: string, branchId: string, input: UpdateInput): Promise<Outcome<Branch, DThrow>>;
|
|
47
|
+
update<Throw extends boolean = DThrow>(projectId: string, branchId: string, input: UpdateInput, opts: CallOptions<Throw>): Promise<Outcome<Branch, Throw>>;
|
|
48
|
+
/** @apiCall DELETE /projects/{project_id}/branches/{branch_id} */
|
|
49
|
+
delete(projectId: string, branchId: string): Promise<Outcome<void, DThrow>>;
|
|
50
|
+
delete<Throw extends boolean = DThrow>(projectId: string, branchId: string, opts: CallOptions<Throw>): Promise<Outcome<void, Throw>>;
|
|
51
|
+
/**
|
|
52
|
+
* Create a branch **with a read-write endpoint** and return a ready-to-use connection
|
|
53
|
+
* string. One API call (Neon creates the endpoint inline) plus readiness polling.
|
|
54
|
+
*
|
|
55
|
+
* @workflow createProjectBranch (with endpoint) + waitForReadiness
|
|
56
|
+
*/
|
|
57
|
+
createWithCompute(projectId: string, input: CreateWithComputeInput): Promise<Outcome<BranchWithCompute, DThrow>>;
|
|
58
|
+
createWithCompute<Throw extends boolean = DThrow>(projectId: string, input: CreateWithComputeInput, opts: WorkflowOptions<Throw>): Promise<Outcome<BranchWithCompute, Throw>>;
|
|
59
|
+
/**
|
|
60
|
+
* Resolve the project's default branch (by the `default` flag — not by name).
|
|
61
|
+
* Returns a `client`-kind {@link NeonError} when no default branch is found.
|
|
62
|
+
*/
|
|
63
|
+
getDefault(projectId: string): Promise<Outcome<Branch, DThrow>>;
|
|
64
|
+
getDefault<Throw extends boolean = DThrow>(projectId: string, opts: CallOptions<Throw>): Promise<Outcome<Branch, Throw>>;
|
|
65
|
+
/** @apiCall POST /projects/{project_id}/branches/{branch_id}/set_as_default */
|
|
66
|
+
setDefault(projectId: string, branchId: string): Promise<Outcome<Branch, DThrow>>;
|
|
67
|
+
setDefault<Throw extends boolean = DThrow>(projectId: string, branchId: string, opts: CallOptions<Throw>): Promise<Outcome<Branch, Throw>>;
|
|
68
|
+
/**
|
|
69
|
+
* Complete (commit) a restore previously started with `snapshots.restore({ finalize: false })`:
|
|
70
|
+
* moves computes onto the restored branch and renames the replaced one. This is **only**
|
|
71
|
+
* the second step — it does not restore anything itself.
|
|
72
|
+
*
|
|
73
|
+
* @apiCall POST /projects/{project_id}/branches/{branch_id}/restore/finalize
|
|
74
|
+
*/
|
|
75
|
+
finalizeRestore(projectId: string, branchId: string, input?: {
|
|
76
|
+
name?: string;
|
|
77
|
+
}): Promise<Outcome<void, DThrow>>;
|
|
78
|
+
finalizeRestore<Throw extends boolean = DThrow>(projectId: string, branchId: string, input: {
|
|
79
|
+
name?: string;
|
|
80
|
+
} | undefined, opts: CallOptions<Throw>): Promise<Outcome<void, Throw>>;
|
|
81
|
+
}
|
|
82
|
+
//#endregion
|
|
83
|
+
export { BranchWithCompute, Branches, CreateWithComputeInput };
|
|
84
|
+
//# sourceMappingURL=branches.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branches.d.ts","names":[],"sources":["../../../src/neon/resources/branches.ts"],"mappings":"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"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { NeonError } from "../errors.js";
|
|
2
|
+
import { err, finalize, ok } from "../result.js";
|
|
3
|
+
import { createProjectBranch, deleteProjectBranch, finalizeRestoreBranch, getProjectBranch, listProjectBranches, setDefaultProjectBranch, updateProjectBranch } from "../../client/sdk.gen.js";
|
|
4
|
+
import { withConnectionString } from "../connection.js";
|
|
5
|
+
import { paginate } from "../paginate.js";
|
|
6
|
+
//#region src/neon/resources/branches.ts
|
|
7
|
+
/** Branch resource — one API call per CRUD method, plus the `createWithCompute` workflow. */
|
|
8
|
+
var Branches = class {
|
|
9
|
+
#ctx;
|
|
10
|
+
constructor(ctx) {
|
|
11
|
+
this.#ctx = ctx;
|
|
12
|
+
}
|
|
13
|
+
/** @apiCall GET /projects/{project_id}/branches (cursor-paginated) */
|
|
14
|
+
list(projectId, query) {
|
|
15
|
+
return paginate((cursor, signal) => listProjectBranches({
|
|
16
|
+
client: this.#ctx.client,
|
|
17
|
+
path: { project_id: projectId },
|
|
18
|
+
query: {
|
|
19
|
+
...query,
|
|
20
|
+
cursor
|
|
21
|
+
},
|
|
22
|
+
throwOnError: false,
|
|
23
|
+
signal
|
|
24
|
+
}), (data) => ({
|
|
25
|
+
items: data?.branches ?? [],
|
|
26
|
+
cursor: data?.pagination?.next
|
|
27
|
+
}));
|
|
28
|
+
}
|
|
29
|
+
get(projectId, branchId, opts) {
|
|
30
|
+
return this.#ctx.run(opts, (client) => getProjectBranch({
|
|
31
|
+
client,
|
|
32
|
+
path: {
|
|
33
|
+
project_id: projectId,
|
|
34
|
+
branch_id: branchId
|
|
35
|
+
},
|
|
36
|
+
throwOnError: false
|
|
37
|
+
}), (data) => data.branch);
|
|
38
|
+
}
|
|
39
|
+
create(projectId, input, opts) {
|
|
40
|
+
return this.#ctx.run(opts, (client) => createProjectBranch({
|
|
41
|
+
client,
|
|
42
|
+
path: { project_id: projectId },
|
|
43
|
+
body: { branch: input },
|
|
44
|
+
throwOnError: false
|
|
45
|
+
}), (data) => data.branch);
|
|
46
|
+
}
|
|
47
|
+
update(projectId, branchId, input, opts) {
|
|
48
|
+
return this.#ctx.run(opts, (client) => updateProjectBranch({
|
|
49
|
+
client,
|
|
50
|
+
path: {
|
|
51
|
+
project_id: projectId,
|
|
52
|
+
branch_id: branchId
|
|
53
|
+
},
|
|
54
|
+
body: { branch: input },
|
|
55
|
+
throwOnError: false
|
|
56
|
+
}), (data) => data.branch);
|
|
57
|
+
}
|
|
58
|
+
delete(projectId, branchId, opts) {
|
|
59
|
+
return this.#ctx.runVoid(opts, (client) => deleteProjectBranch({
|
|
60
|
+
client,
|
|
61
|
+
path: {
|
|
62
|
+
project_id: projectId,
|
|
63
|
+
branch_id: branchId
|
|
64
|
+
},
|
|
65
|
+
throwOnError: false
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
async createWithCompute(projectId, input, opts) {
|
|
69
|
+
const shouldThrow = opts?.throwOnError ?? this.#ctx.defaults.throwOnError;
|
|
70
|
+
return finalize(withConnectionString(await this.#ctx.execute({
|
|
71
|
+
...opts,
|
|
72
|
+
waitForReadiness: opts?.waitForReadiness ?? true
|
|
73
|
+
}, (client) => createProjectBranch({
|
|
74
|
+
client,
|
|
75
|
+
path: { project_id: projectId },
|
|
76
|
+
body: {
|
|
77
|
+
branch: {
|
|
78
|
+
name: input.name,
|
|
79
|
+
parent_id: input.parentId
|
|
80
|
+
},
|
|
81
|
+
endpoints: [{
|
|
82
|
+
type: "read_write",
|
|
83
|
+
autoscaling_limit_min_cu: input.compute?.minCu,
|
|
84
|
+
autoscaling_limit_max_cu: input.compute?.maxCu,
|
|
85
|
+
suspend_timeout_seconds: input.compute?.suspendTimeoutSeconds
|
|
86
|
+
}]
|
|
87
|
+
},
|
|
88
|
+
throwOnError: false
|
|
89
|
+
}), (data) => data), (data) => data.connection_uris, (data, connectionString) => ({
|
|
90
|
+
branch: data.branch,
|
|
91
|
+
endpoint: data.endpoints[0],
|
|
92
|
+
connectionString
|
|
93
|
+
}), opts?.pooled ?? true), shouldThrow);
|
|
94
|
+
}
|
|
95
|
+
async getDefault(projectId, opts) {
|
|
96
|
+
const shouldThrow = opts?.throwOnError ?? this.#ctx.defaults.throwOnError;
|
|
97
|
+
const result = await this.#ctx.execute(opts, (client) => listProjectBranches({
|
|
98
|
+
client,
|
|
99
|
+
path: { project_id: projectId },
|
|
100
|
+
throwOnError: false
|
|
101
|
+
}), (data) => data.branches);
|
|
102
|
+
if (result.error) return finalize(err(result.error), shouldThrow);
|
|
103
|
+
const branch = result.data.find((candidate) => candidate.default);
|
|
104
|
+
if (!branch) return finalize(err(new NeonError("No default branch found for the project.", "client")), shouldThrow);
|
|
105
|
+
return finalize(ok(branch), shouldThrow);
|
|
106
|
+
}
|
|
107
|
+
setDefault(projectId, branchId, opts) {
|
|
108
|
+
return this.#ctx.run(opts, (client) => setDefaultProjectBranch({
|
|
109
|
+
client,
|
|
110
|
+
path: {
|
|
111
|
+
project_id: projectId,
|
|
112
|
+
branch_id: branchId
|
|
113
|
+
},
|
|
114
|
+
throwOnError: false
|
|
115
|
+
}), (data) => data.branch);
|
|
116
|
+
}
|
|
117
|
+
finalizeRestore(projectId, branchId, input, opts) {
|
|
118
|
+
return this.#ctx.run(opts, (client) => finalizeRestoreBranch({
|
|
119
|
+
client,
|
|
120
|
+
path: {
|
|
121
|
+
project_id: projectId,
|
|
122
|
+
branch_id: branchId
|
|
123
|
+
},
|
|
124
|
+
body: { name: input?.name },
|
|
125
|
+
throwOnError: false
|
|
126
|
+
}), () => void 0);
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
//#endregion
|
|
130
|
+
export { Branches };
|
|
131
|
+
|
|
132
|
+
//# sourceMappingURL=branches.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branches.js","names":["#ctx"],"sources":["../../../src/neon/resources/branches.ts"],"sourcesContent":["import {\n\tcreateProjectBranch,\n\tdeleteProjectBranch,\n\tfinalizeRestoreBranch,\n\tgetProjectBranch,\n\tlistProjectBranches,\n\tsetDefaultProjectBranch,\n\tupdateProjectBranch,\n} from \"../../client/sdk.gen.js\";\nimport type {\n\tBranch,\n\tBranchCreateRequest,\n\tBranchUpdateRequest,\n\tEndpoint,\n\tListProjectBranchesData,\n} from \"../../client/types.gen.js\";\nimport { withConnectionString } from \"../connection.js\";\nimport type { CallOptions, RequestContext } from \"../context.js\";\nimport { NeonError } from \"../errors.js\";\nimport { type Paginated, paginate } from \"../paginate.js\";\nimport { err, finalize, type NeonResult, type Outcome, ok } from \"../result.js\";\n\ntype ListQuery = Omit<NonNullable<ListProjectBranchesData[\"query\"]>, \"cursor\">;\ntype CreateInput = NonNullable<BranchCreateRequest[\"branch\"]>;\ntype UpdateInput = BranchUpdateRequest[\"branch\"];\n\n/** Per-call options for the connect/compute workflows. */\ninterface WorkflowOptions<Throw extends boolean> extends CallOptions<Throw> {\n\t/** Return a pooled connection string (default `true`). */\n\tpooled?: boolean;\n}\n\n/** Input for {@link Branches.createWithCompute}. */\nexport interface CreateWithComputeInput {\n\tname?: string;\n\t/** Parent branch id. Defaults to the project's default branch. */\n\tparentId?: string;\n\t/** Autoscaling settings for the branch's read-write endpoint. */\n\tcompute?: {\n\t\tminCu?: number;\n\t\tmaxCu?: number;\n\t\tsuspendTimeoutSeconds?: number;\n\t};\n}\n\n/** A branch with its read-write endpoint and a ready-to-use connection string. */\nexport interface BranchWithCompute {\n\tbranch: Branch;\n\tendpoint: Endpoint;\n\tconnectionString: string;\n}\n\n/** Branch resource — one API call per CRUD method, plus the `createWithCompute` workflow. */\nexport class Branches<DThrow extends boolean> {\n\treadonly #ctx: RequestContext;\n\n\tconstructor(ctx: RequestContext) {\n\t\tthis.#ctx = ctx;\n\t}\n\n\t/** @apiCall GET /projects/{project_id}/branches (cursor-paginated) */\n\tlist(projectId: string, query?: ListQuery): Paginated<Branch> {\n\t\treturn paginate(\n\t\t\t(cursor, signal) =>\n\t\t\t\tlistProjectBranches({\n\t\t\t\t\tclient: this.#ctx.client,\n\t\t\t\t\tpath: { project_id: projectId },\n\t\t\t\t\tquery: { ...query, cursor },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => ({\n\t\t\t\titems: data?.branches ?? [],\n\t\t\t\tcursor: data?.pagination?.next,\n\t\t\t}),\n\t\t);\n\t}\n\n\t/** @apiCall GET /projects/{project_id}/branches/{branch_id} */\n\tget(projectId: string, branchId: string): Promise<Outcome<Branch, DThrow>>;\n\tget<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<Branch, Throw>>;\n\tget(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\topts?: CallOptions,\n\t): Promise<Branch | NeonResult<Branch>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client) =>\n\t\t\t\tgetProjectBranch({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId, branch_id: branchId },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t}),\n\t\t\t(data) => data.branch,\n\t\t);\n\t}\n\n\t/** @apiCall POST /projects/{project_id}/branches */\n\tcreate(\n\t\tprojectId: string,\n\t\tinput?: CreateInput,\n\t): Promise<Outcome<Branch, DThrow>>;\n\tcreate<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\tinput: CreateInput | undefined,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<Branch, Throw>>;\n\tcreate(\n\t\tprojectId: string,\n\t\tinput?: CreateInput,\n\t\topts?: CallOptions,\n\t): Promise<Branch | NeonResult<Branch>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client) =>\n\t\t\t\tcreateProjectBranch({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId },\n\t\t\t\t\tbody: { branch: input },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t}),\n\t\t\t(data) => data.branch,\n\t\t);\n\t}\n\n\t/** @apiCall PATCH /projects/{project_id}/branches/{branch_id} */\n\tupdate(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\tinput: UpdateInput,\n\t): Promise<Outcome<Branch, DThrow>>;\n\tupdate<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\tinput: UpdateInput,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<Branch, Throw>>;\n\tupdate(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\tinput: UpdateInput,\n\t\topts?: CallOptions,\n\t): Promise<Branch | NeonResult<Branch>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client) =>\n\t\t\t\tupdateProjectBranch({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId, branch_id: branchId },\n\t\t\t\t\tbody: { branch: input },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t}),\n\t\t\t(data) => data.branch,\n\t\t);\n\t}\n\n\t/** @apiCall DELETE /projects/{project_id}/branches/{branch_id} */\n\tdelete(projectId: string, branchId: string): Promise<Outcome<void, DThrow>>;\n\tdelete<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<void, Throw>>;\n\tdelete(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\topts?: CallOptions,\n\t): Promise<void | NeonResult<void>> {\n\t\treturn this.#ctx.runVoid(opts, (client) =>\n\t\t\tdeleteProjectBranch({\n\t\t\t\tclient,\n\t\t\t\tpath: { project_id: projectId, branch_id: branchId },\n\t\t\t\tthrowOnError: false,\n\t\t\t}),\n\t\t);\n\t}\n\n\t/**\n\t * Create a branch **with a read-write endpoint** and return a ready-to-use connection\n\t * string. One API call (Neon creates the endpoint inline) plus readiness polling.\n\t *\n\t * @workflow createProjectBranch (with endpoint) + waitForReadiness\n\t */\n\tcreateWithCompute(\n\t\tprojectId: string,\n\t\tinput: CreateWithComputeInput,\n\t): Promise<Outcome<BranchWithCompute, DThrow>>;\n\tcreateWithCompute<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\tinput: CreateWithComputeInput,\n\t\topts: WorkflowOptions<Throw>,\n\t): Promise<Outcome<BranchWithCompute, Throw>>;\n\tasync createWithCompute(\n\t\tprojectId: string,\n\t\tinput: CreateWithComputeInput,\n\t\topts?: WorkflowOptions<boolean>,\n\t): Promise<BranchWithCompute | NeonResult<BranchWithCompute>> {\n\t\tconst shouldThrow =\n\t\t\topts?.throwOnError ?? this.#ctx.defaults.throwOnError;\n\t\tconst result = await this.#ctx.execute(\n\t\t\t{ ...opts, waitForReadiness: opts?.waitForReadiness ?? true },\n\t\t\t(client) =>\n\t\t\t\tcreateProjectBranch({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId },\n\t\t\t\t\tbody: {\n\t\t\t\t\t\tbranch: { name: input.name, parent_id: input.parentId },\n\t\t\t\t\t\tendpoints: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"read_write\",\n\t\t\t\t\t\t\t\tautoscaling_limit_min_cu: input.compute?.minCu,\n\t\t\t\t\t\t\t\tautoscaling_limit_max_cu: input.compute?.maxCu,\n\t\t\t\t\t\t\t\tsuspend_timeout_seconds:\n\t\t\t\t\t\t\t\t\tinput.compute?.suspendTimeoutSeconds,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t}),\n\t\t\t(data) => data,\n\t\t);\n\t\tconst out = withConnectionString(\n\t\t\tresult,\n\t\t\t(data) => data.connection_uris,\n\t\t\t(data, connectionString) => ({\n\t\t\t\tbranch: data.branch,\n\t\t\t\tendpoint: data.endpoints[0],\n\t\t\t\tconnectionString,\n\t\t\t}),\n\t\t\topts?.pooled ?? true,\n\t\t);\n\t\treturn finalize(out, shouldThrow);\n\t}\n\n\t/**\n\t * Resolve the project's default branch (by the `default` flag — not by name).\n\t * Returns a `client`-kind {@link NeonError} when no default branch is found.\n\t */\n\tgetDefault(projectId: string): Promise<Outcome<Branch, DThrow>>;\n\tgetDefault<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<Branch, Throw>>;\n\tasync getDefault(\n\t\tprojectId: string,\n\t\topts?: CallOptions,\n\t): Promise<Branch | NeonResult<Branch>> {\n\t\tconst shouldThrow =\n\t\t\topts?.throwOnError ?? this.#ctx.defaults.throwOnError;\n\t\tconst result = await this.#ctx.execute(\n\t\t\topts,\n\t\t\t(client) =>\n\t\t\t\tlistProjectBranches({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t}),\n\t\t\t(data) => data.branches,\n\t\t);\n\t\tif (result.error)\n\t\t\treturn finalize(err<Branch>(result.error), shouldThrow);\n\t\tconst branch = result.data.find((candidate) => candidate.default);\n\t\tif (!branch) {\n\t\t\treturn finalize(\n\t\t\t\terr<Branch>(\n\t\t\t\t\tnew NeonError(\n\t\t\t\t\t\t\"No default branch found for the project.\",\n\t\t\t\t\t\t\"client\",\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t\tshouldThrow,\n\t\t\t);\n\t\t}\n\t\treturn finalize(ok(branch), shouldThrow);\n\t}\n\n\t/** @apiCall POST /projects/{project_id}/branches/{branch_id}/set_as_default */\n\tsetDefault(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t): Promise<Outcome<Branch, DThrow>>;\n\tsetDefault<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<Branch, Throw>>;\n\tsetDefault(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\topts?: CallOptions,\n\t): Promise<Branch | NeonResult<Branch>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client) =>\n\t\t\t\tsetDefaultProjectBranch({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId, branch_id: branchId },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t}),\n\t\t\t(data) => data.branch,\n\t\t);\n\t}\n\n\t/**\n\t * Complete (commit) a restore previously started with `snapshots.restore({ finalize: false })`:\n\t * moves computes onto the restored branch and renames the replaced one. This is **only**\n\t * the second step — it does not restore anything itself.\n\t *\n\t * @apiCall POST /projects/{project_id}/branches/{branch_id}/restore/finalize\n\t */\n\tfinalizeRestore(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\tinput?: { name?: string },\n\t): Promise<Outcome<void, DThrow>>;\n\tfinalizeRestore<Throw extends boolean = DThrow>(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\tinput: { name?: string } | undefined,\n\t\topts: CallOptions<Throw>,\n\t): Promise<Outcome<void, Throw>>;\n\tfinalizeRestore(\n\t\tprojectId: string,\n\t\tbranchId: string,\n\t\tinput?: { name?: string },\n\t\topts?: CallOptions,\n\t): Promise<void | NeonResult<void>> {\n\t\treturn this.#ctx.run(\n\t\t\topts,\n\t\t\t(client) =>\n\t\t\t\tfinalizeRestoreBranch({\n\t\t\t\t\tclient,\n\t\t\t\t\tpath: { project_id: projectId, branch_id: branchId },\n\t\t\t\t\tbody: { name: input?.name },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t}),\n\t\t\t() => undefined,\n\t\t);\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ConsumptionHistoryPerBranchV2, ConsumptionHistoryPerProject, ConsumptionHistoryPerProjectV2, GetConsumptionHistoryPerBranchV2Data, GetConsumptionHistoryPerProjectData, GetConsumptionHistoryPerProjectV2Data } from "../../client/types.gen.js";
|
|
2
|
+
import { RequestContext } from "../context.js";
|
|
3
|
+
import { Paginated } from "../paginate.js";
|
|
4
|
+
|
|
5
|
+
//#region src/neon/resources/consumption.d.ts
|
|
6
|
+
type PerProjectQuery = Omit<GetConsumptionHistoryPerProjectData["query"], "cursor">;
|
|
7
|
+
type PerProjectV2Query = Omit<GetConsumptionHistoryPerProjectV2Data["query"], "cursor">;
|
|
8
|
+
type PerBranchV2Query = Omit<GetConsumptionHistoryPerBranchV2Data["query"], "cursor">;
|
|
9
|
+
/** Consumption history (cursor-paginated). */
|
|
10
|
+
declare class Consumption {
|
|
11
|
+
#private;
|
|
12
|
+
constructor(ctx: RequestContext);
|
|
13
|
+
/** @apiCall GET /consumption_history/projects */
|
|
14
|
+
perProject(query: PerProjectQuery): Paginated<ConsumptionHistoryPerProject>;
|
|
15
|
+
/** @apiCall GET /consumption_history/v2/projects */
|
|
16
|
+
perProjectV2(query: PerProjectV2Query): Paginated<ConsumptionHistoryPerProjectV2>;
|
|
17
|
+
/** @apiCall GET /consumption_history/v2/branches */
|
|
18
|
+
perBranchV2(query: PerBranchV2Query): Paginated<ConsumptionHistoryPerBranchV2>;
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
export { Consumption };
|
|
22
|
+
//# sourceMappingURL=consumption.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consumption.d.ts","names":[],"sources":["../../../src/neon/resources/consumption.ts"],"mappings":";;;;;KAgBK,eAAA,GAAkB,KACtB;KAGI,iBAAA,GAAoB,KACxB;AAPyD,KAUrD,gBAAA,GAAmB,IARJ,CASnB,oCATmB,CAAA,OAAA,CAAA,EAAA,QAAA,CAAA;;AACnB,cAaY,WAAA,CAbZ;UADsB;EAAI,WAAA,CAAA,GAAA,EAiBT,cAjBS;EAItB;EAAiB,UAAA,CAAA,KAAA,EAmBb,eAnBa,CAAA,EAoBlB,SApBkB,CAoBR,4BApBQ,CAAA;;cAAG,CAAA,KAAA,EAsChB,iBAtCgB,CAAA,EAuCrB,SAvCqB,CAuCX,8BAvCW,CAAA;EAAI;EAIxB,WAAA,CAAA,KAAA,EAqDI,gBArDY,CAAA,EAsDjB,SAtDiB,CAsDP,6BAtDO,CAAA"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { getConsumptionHistoryPerBranchV2, getConsumptionHistoryPerProject, getConsumptionHistoryPerProjectV2 } from "../../client/sdk.gen.js";
|
|
2
|
+
import { paginate } from "../paginate.js";
|
|
3
|
+
//#region src/neon/resources/consumption.ts
|
|
4
|
+
/** Consumption history (cursor-paginated). */
|
|
5
|
+
var Consumption = class {
|
|
6
|
+
#ctx;
|
|
7
|
+
constructor(ctx) {
|
|
8
|
+
this.#ctx = ctx;
|
|
9
|
+
}
|
|
10
|
+
/** @apiCall GET /consumption_history/projects */
|
|
11
|
+
perProject(query) {
|
|
12
|
+
return paginate((cursor, signal) => getConsumptionHistoryPerProject({
|
|
13
|
+
client: this.#ctx.client,
|
|
14
|
+
query: {
|
|
15
|
+
...query,
|
|
16
|
+
cursor
|
|
17
|
+
},
|
|
18
|
+
throwOnError: false,
|
|
19
|
+
signal
|
|
20
|
+
}), (data) => ({
|
|
21
|
+
items: data?.projects ?? [],
|
|
22
|
+
cursor: data?.pagination?.cursor
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
25
|
+
/** @apiCall GET /consumption_history/v2/projects */
|
|
26
|
+
perProjectV2(query) {
|
|
27
|
+
return paginate((cursor, signal) => getConsumptionHistoryPerProjectV2({
|
|
28
|
+
client: this.#ctx.client,
|
|
29
|
+
query: {
|
|
30
|
+
...query,
|
|
31
|
+
cursor
|
|
32
|
+
},
|
|
33
|
+
throwOnError: false,
|
|
34
|
+
signal
|
|
35
|
+
}), (data) => ({
|
|
36
|
+
items: data?.projects ?? [],
|
|
37
|
+
cursor: data?.pagination?.cursor
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
40
|
+
/** @apiCall GET /consumption_history/v2/branches */
|
|
41
|
+
perBranchV2(query) {
|
|
42
|
+
return paginate((cursor, signal) => getConsumptionHistoryPerBranchV2({
|
|
43
|
+
client: this.#ctx.client,
|
|
44
|
+
query: {
|
|
45
|
+
...query,
|
|
46
|
+
cursor
|
|
47
|
+
},
|
|
48
|
+
throwOnError: false,
|
|
49
|
+
signal
|
|
50
|
+
}), (data) => ({
|
|
51
|
+
items: data?.branches ?? [],
|
|
52
|
+
cursor: data?.pagination?.cursor
|
|
53
|
+
}));
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
//#endregion
|
|
57
|
+
export { Consumption };
|
|
58
|
+
|
|
59
|
+
//# sourceMappingURL=consumption.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consumption.js","names":["#ctx"],"sources":["../../../src/neon/resources/consumption.ts"],"sourcesContent":["import {\n\tgetConsumptionHistoryPerBranchV2,\n\tgetConsumptionHistoryPerProject,\n\tgetConsumptionHistoryPerProjectV2,\n} from \"../../client/sdk.gen.js\";\nimport type {\n\tConsumptionHistoryPerBranchV2,\n\tConsumptionHistoryPerProject,\n\tConsumptionHistoryPerProjectV2,\n\tGetConsumptionHistoryPerBranchV2Data,\n\tGetConsumptionHistoryPerProjectData,\n\tGetConsumptionHistoryPerProjectV2Data,\n} from \"../../client/types.gen.js\";\nimport type { RequestContext } from \"../context.js\";\nimport { type Paginated, paginate } from \"../paginate.js\";\n\ntype PerProjectQuery = Omit<\n\tGetConsumptionHistoryPerProjectData[\"query\"],\n\t\"cursor\"\n>;\ntype PerProjectV2Query = Omit<\n\tGetConsumptionHistoryPerProjectV2Data[\"query\"],\n\t\"cursor\"\n>;\ntype PerBranchV2Query = Omit<\n\tGetConsumptionHistoryPerBranchV2Data[\"query\"],\n\t\"cursor\"\n>;\n\n/** Consumption history (cursor-paginated). */\nexport class Consumption {\n\treadonly #ctx: RequestContext;\n\n\tconstructor(ctx: RequestContext) {\n\t\tthis.#ctx = ctx;\n\t}\n\n\t/** @apiCall GET /consumption_history/projects */\n\tperProject(\n\t\tquery: PerProjectQuery,\n\t): Paginated<ConsumptionHistoryPerProject> {\n\t\treturn paginate(\n\t\t\t(cursor, signal) =>\n\t\t\t\tgetConsumptionHistoryPerProject({\n\t\t\t\t\tclient: this.#ctx.client,\n\t\t\t\t\tquery: { ...query, cursor },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => ({\n\t\t\t\titems: data?.projects ?? [],\n\t\t\t\tcursor: data?.pagination?.cursor,\n\t\t\t}),\n\t\t);\n\t}\n\n\t/** @apiCall GET /consumption_history/v2/projects */\n\tperProjectV2(\n\t\tquery: PerProjectV2Query,\n\t): Paginated<ConsumptionHistoryPerProjectV2> {\n\t\treturn paginate(\n\t\t\t(cursor, signal) =>\n\t\t\t\tgetConsumptionHistoryPerProjectV2({\n\t\t\t\t\tclient: this.#ctx.client,\n\t\t\t\t\tquery: { ...query, cursor },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => ({\n\t\t\t\titems: data?.projects ?? [],\n\t\t\t\tcursor: data?.pagination?.cursor,\n\t\t\t}),\n\t\t);\n\t}\n\n\t/** @apiCall GET /consumption_history/v2/branches */\n\tperBranchV2(\n\t\tquery: PerBranchV2Query,\n\t): Paginated<ConsumptionHistoryPerBranchV2> {\n\t\treturn paginate(\n\t\t\t(cursor, signal) =>\n\t\t\t\tgetConsumptionHistoryPerBranchV2({\n\t\t\t\t\tclient: this.#ctx.client,\n\t\t\t\t\tquery: { ...query, cursor },\n\t\t\t\t\tthrowOnError: false,\n\t\t\t\t\tsignal,\n\t\t\t\t}),\n\t\t\t(data) => ({\n\t\t\t\titems: data?.branches ?? [],\n\t\t\t\tcursor: data?.pagination?.cursor,\n\t\t\t}),\n\t\t);\n\t}\n}\n"],"mappings":";;;;AA8BA,IAAa,cAAb,MAAyB;CACxB;CAEA,YAAY,KAAqB;EAChC,KAAKA,OAAO;CACb;;CAGA,WACC,OAC0C;EAC1C,OAAO,UACL,QAAQ,WACR,gCAAgC;GAC/B,QAAQ,KAAKA,KAAK;GAClB,OAAO;IAAE,GAAG;IAAO;GAAO;GAC1B,cAAc;GACd;EACD,CAAC,IACD,UAAU;GACV,OAAO,MAAM,YAAY,CAAC;GAC1B,QAAQ,MAAM,YAAY;EAC3B,EACD;CACD;;CAGA,aACC,OAC4C;EAC5C,OAAO,UACL,QAAQ,WACR,kCAAkC;GACjC,QAAQ,KAAKA,KAAK;GAClB,OAAO;IAAE,GAAG;IAAO;GAAO;GAC1B,cAAc;GACd;EACD,CAAC,IACD,UAAU;GACV,OAAO,MAAM,YAAY,CAAC;GAC1B,QAAQ,MAAM,YAAY;EAC3B,EACD;CACD;;CAGA,YACC,OAC2C;EAC3C,OAAO,UACL,QAAQ,WACR,iCAAiC;GAChC,QAAQ,KAAKA,KAAK;GAClB,OAAO;IAAE,GAAG;IAAO;GAAO;GAC1B,cAAc;GACd;EACD,CAAC,IACD,UAAU;GACV,OAAO,MAAM,YAAY,CAAC;GAC1B,QAAQ,MAAM,YAAY;EAC3B,EACD;CACD;AACD"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { DataApiCreateRequest, DataApiCreateResponse, DataApiReponse, DataApiUpdateRequest } from "../../client/types.gen.js";
|
|
2
|
+
import { Outcome } from "../result.js";
|
|
3
|
+
import { CallOptions, RequestContext } from "../context.js";
|
|
4
|
+
|
|
5
|
+
//#region src/neon/resources/dataapi.d.ts
|
|
6
|
+
/** Neon Data API resource (branch + database scoped). */
|
|
7
|
+
declare class DataApi<DThrow extends boolean> {
|
|
8
|
+
#private;
|
|
9
|
+
constructor(ctx: RequestContext);
|
|
10
|
+
/** @apiCall GET /projects/{project_id}/branches/{branch_id}/data-api/{database_name} */
|
|
11
|
+
get(projectId: string, branchId: string, databaseName: string): Promise<Outcome<DataApiReponse, DThrow>>;
|
|
12
|
+
get<Throw extends boolean = DThrow>(projectId: string, branchId: string, databaseName: string, opts: CallOptions<Throw>): Promise<Outcome<DataApiReponse, Throw>>;
|
|
13
|
+
/** @apiCall POST /projects/{project_id}/branches/{branch_id}/data-api/{database_name} */
|
|
14
|
+
create(projectId: string, branchId: string, databaseName: string, input?: DataApiCreateRequest): Promise<Outcome<DataApiCreateResponse, DThrow>>;
|
|
15
|
+
create<Throw extends boolean = DThrow>(projectId: string, branchId: string, databaseName: string, input: DataApiCreateRequest | undefined, opts: CallOptions<Throw>): Promise<Outcome<DataApiCreateResponse, Throw>>;
|
|
16
|
+
/** @apiCall PATCH /projects/{project_id}/branches/{branch_id}/data-api/{database_name} */
|
|
17
|
+
update(projectId: string, branchId: string, databaseName: string, input?: DataApiUpdateRequest): Promise<Outcome<void, DThrow>>;
|
|
18
|
+
update<Throw extends boolean = DThrow>(projectId: string, branchId: string, databaseName: string, input: DataApiUpdateRequest | undefined, opts: CallOptions<Throw>): Promise<Outcome<void, Throw>>;
|
|
19
|
+
/** @apiCall DELETE /projects/{project_id}/branches/{branch_id}/data-api/{database_name} */
|
|
20
|
+
delete(projectId: string, branchId: string, databaseName: string): Promise<Outcome<void, DThrow>>;
|
|
21
|
+
delete<Throw extends boolean = DThrow>(projectId: string, branchId: string, databaseName: string, opts: CallOptions<Throw>): Promise<Outcome<void, Throw>>;
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { DataApi };
|
|
25
|
+
//# sourceMappingURL=dataapi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataapi.d.ts","names":[],"sources":["../../../src/neon/resources/dataapi.ts"],"mappings":";;;;;;cAgBa;EAAA,CAAA,OAAA;EAAO,WAAA,CAAA,GAAA,EAGF,cAHE;;KAYA,CAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAhB,OAAgB,CAAR,OAAQ,CAAA,cAAA,EAAgB,MAAhB,CAAA,CAAA;KAAgB,CAAA,cAAA,OAAA,GACP,MADO,CAAA,CAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,EAAA,IAAA,EAK5B,WAL4B,CAKhB,KALgB,CAAA,CAAA,EAMhC,OANgC,CAMxB,OANwB,CAMhB,cANgB,EAMA,KANA,CAAA,CAAA;;QAAhC,CAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAkCM,oBAlCN,CAAA,EAmCA,OAnCA,CAmCQ,OAnCR,CAmCgB,qBAnChB,EAmCuC,MAnCvC,CAAA,CAAA;QACyB,CAAA,cAAA,OAAA,GAmCG,MAnCH,CAAA,CAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAuCpB,oBAvCoB,GAAA,SAAA,EAAA,IAAA,EAwCrB,WAxCqB,CAwCT,KAxCS,CAAA,CAAA,EAyCzB,OAzCyB,CAyCjB,OAzCiB,CAyCT,qBAzCS,EAyCc,KAzCd,CAAA,CAAA;;QAIrB,CAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAmEE,oBAnEF,CAAA,EAoEJ,OApEI,CAoEI,OApEJ,CAAA,IAAA,EAoEkB,MApElB,CAAA,CAAA;QACY,CAAA,cAAA,OAAA,GAoEY,MApEZ,CAAA,CAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAwEX,oBAxEW,GAAA,SAAA,EAAA,IAAA,EAyEZ,WAzEY,CAyEA,KAzEA,CAAA,CAAA,EA0EhB,OA1EgB,CA0ER,OA1EQ,CAAA,IAAA,EA0EM,KA1EN,CAAA,CAAA;;QAAR,CAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAwGR,OAxGQ,CAwGA,OAxGA,CAAA,IAAA,EAwGc,MAxGd,CAAA,CAAA;QAAR,CAAA,cAAA,OAAA,GAyG4B,MAzG5B,CAAA,CAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,EAAA,IAAA,EA6GI,WA7GJ,CA6GgB,KA7GhB,CAAA,CAAA,EA8GA,OA9GA,CA8GQ,OA9GR,CAAA,IAAA,EA8GsB,KA9GtB,CAAA,CAAA"}
|