diff --git a/.github/workflows/update-api-spec.yml b/.github/workflows/update-api-spec.yml index f302b0a..882b76a 100644 --- a/.github/workflows/update-api-spec.yml +++ b/.github/workflows/update-api-spec.yml @@ -18,11 +18,9 @@ jobs: - uses: actions/setup-node@v4 with: node-version: "18" - - name: Generate spec - shell: bash - run: | - npm install - npm run gen + - working-directory: "./oxide-openapi-gen-ts" + run: 'npm install' + - run: ./tools/gen.sh - uses: EndBug/add-and-commit@v9 with: add: . diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index 8833aa0..b7e2bab 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -19,13 +19,16 @@ jobs: - uses: actions/setup-node@v4 with: node-version: "18" - - name: npm install + - working-directory: "./oxide-openapi-gen-ts" run: npm install - name: Generate client - run: npm run gen - - name: TypeCheck + run: "./tools/gen.sh" + - name: Typecheck + working-directory: "./oxide-openapi-gen-ts" run: npm run tsc - name: Lint - run: npx eslint . + working-directory: "./oxide-openapi-gen-ts" + run: npm run lint - name: Test - run: npm test + working-directory: "./oxide-openapi-gen-ts" + run: npm test run diff --git a/.gitignore b/.gitignore index 167e209..837c9c8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +packages/openpi-gen/node_modules node_modules dist -spec.json \ No newline at end of file +spec.json diff --git a/README.md b/README.md index f2a495e..65b8c3e 100644 --- a/README.md +++ b/README.md @@ -7,58 +7,14 @@ The generator is built specifically for use with specs generated by [Dropshot](https://github.com/oxidecomputer/dropshot). It has not been tested on any other specs and is unlikely to handle them well. -## Why a custom generator? - -We tried many existing generators, and while most worked in a basic sense, we -found it hard to make customizations, whether through CLI flags, templates, or -patching with [patch-package](https://github.com/ds300/patch-package). We -decided to prototype our own TS generator after seeing other Oxide devs do the -same for Rust ([progenitor](https://github.com/oxidecomputer/progenitor) and -[oxide.rs](https://github.com/oxidecomputer/oxide.rs)) and Go -([oxide.go](https://github.com/oxidecomputer/oxide.go)). It quickly became clear -that a special-purpose generator could be dramatically simpler than a general -one, so writing one was easier than existing generators made it look. - -## Repo guide - -The source of the generator is in [`generator`](generator/). The core logic for -looping over the spec and creating the methods is in -[`generator/client/api.ts`](generator/client/api.ts) and the mapping from -OpenAPI schemas to TS types is in -[`generator/schema/types.ts`](generator/schema/types.ts). The mapping from -OpenAPI schemas to Zod schemas is in -[`generator/schema/zod.ts`](generator/schema/zod.ts). - -The generated client can be found in [`client`](client/). The files in -[`static`](static/) are copied over to `client` as-is during generation. We -generate several distinct pieces: - -| File | Description | -| ------------------------------------------- | ------------------------------------------------------------------------------------------------------ | -| [`Api.ts`](client/Api.ts) | A [Fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)-based TS client to the Oxide API | -| [`validate.ts`](client/validate.ts) | [Zod](https://github.com/colinhacks/zod) validators for API request and response types | -| [`msw-handlers.ts`](client/msw-handlers.ts) | Helpers used to build a mock API with [Mock Service Worker](https://mswjs.io/) in the console repo | +|Package| Description| +|---|---| +| [`@oxide/openapi-gen-ts`](./oxide-openapi-gen-ts) | TypeScript OpenAPI client generator | +| [`@oxide/api`](./oxide-api) | The client generated for the Omicron commit specified in `OMICRON_VERSION` | ## Using the API client -We intend to publish the generated code on npm, but have not done so yet. In -the [Oxide web console](https://github.com/oxidecomputer/console) (the primary -consumer of the TS client) we use the client by generating it from a pinned -spec version with `tsx generator/index.ts` and versioning a full copy of the -generated code in that repo. - -The generated client uses the Fetch API, so in -order to be used in Node.js, it requires either Node.js v18 or a polyfill. - -## Generating the client - -```bash -# optional: update omicron sha in OMICRON_VERSION -npm i -npm run gen -``` - -The TypeScript client code will be written to [`client`](client/). +See the [README](./oxide-api/README.md) for the `@oxide/api` package. ## Contributing diff --git a/generator/index.ts b/generator/index.ts deleted file mode 100644 index de8c99e..0000000 --- a/generator/index.ts +++ /dev/null @@ -1,50 +0,0 @@ -/** - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, you can obtain one at https://mozilla.org/MPL/2.0/. - * - * Copyright Oxide Computer Company - */ - -import SwaggerParser from "@apidevtools/swagger-parser"; -import type { OpenAPIV3 } from "openapi-types"; - -import { copyStaticFiles, generateApi } from "./client/api"; -import { generateMSWHandlers } from "./client/msw-handlers"; -import { generateTypeTests } from "./client/type-tests"; -import { generateZodValidators } from "./client/zodValidators"; -import { resolve } from "node:path"; - -async function generate(specFile: string, destDir: string) { - // destination directory is resolved relative to CWD - const destDirAbs = resolve(process.cwd(), destDir); - - const rawSpec = await SwaggerParser.parse(specFile); - if (!("openapi" in rawSpec) || !rawSpec.openapi.startsWith("3.0")) { - throw new Error("Only OpenAPI 3.0 is currently supported"); - } - - // we're not actually changing anything from rawSpec to spec, we've - // just ruled out v2 and v3.1 - const spec = rawSpec as OpenAPIV3.Document; - - copyStaticFiles(destDirAbs); - generateApi(spec, destDirAbs); - generateZodValidators(spec, destDirAbs); - // TODO: make conditional - we only want generated for testing purpose - generateTypeTests(spec, destDirAbs); - generateMSWHandlers(spec, destDirAbs); -} - -function helpAndExit(msg: string): never { - console.log(msg); - console.log("\nUsage: gen <specFile> <destDir>"); - process.exit(1); -} - -const [specFile, destDir] = process.argv.slice(2); - -if (!specFile) helpAndExit(`Missing <specFile>`); -if (!destDir) helpAndExit(`Missing <destdir>`); - -generate(specFile, destDir); diff --git a/oxide-api/README.md b/oxide-api/README.md new file mode 100644 index 0000000..71b3bd6 --- /dev/null +++ b/oxide-api/README.md @@ -0,0 +1,61 @@ +# Oxide TypeScript SDK + +## Usage + +### Installation + +``` +npm install @oxide/api +``` + +### Getting an API token + +The easiest way to get a device token is to use the CLI. + +``` +oxide auth login --host https://my-oxide-rack.com +``` + +Then print the token: + +``` +oxide auth status --show-token +``` + +In the following example it's passed to the script through the `OXIDE_TOKEN` +environment variable on the assumption that you don't want to hard-code a token +into a script, but this can of course be done however you want. `OXIDE_TOKEN` is +not a special variable for the TypeScript SDK (it is for the CLI). + +### Example + +```ts +import { Api } from "@oxide/api" + +const api = new Api({ + host: "https://my-oxide-rack.com", + token: process.env.OXIDE_TOKEN, +}) + +const result = await api.methods.projectList({}) + +if (result.type === "success") { + console.log(result.data.items.map((p) => p.name)) +} +``` + +## How does it all work? + +### Methods + +### Request bodies + +### Responses: `ApiResult<T>` + +## Other stuff in the package + +Most likely nobody but us wants this, and we should take it out of the npm package. + +### Mock Service Worker API skeleton + +### Zod validators diff --git a/oxide-api/package-lock.json b/oxide-api/package-lock.json new file mode 100644 index 0000000..6b56065 --- /dev/null +++ b/oxide-api/package-lock.json @@ -0,0 +1,2066 @@ +{ + "name": "@oxide/api", + "version": "0.1.0-alpha.3", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@oxide/api", + "version": "0.1.0-alpha.3", + "license": "MPL-2.0", + "dependencies": { + "zod": "^3.23.5" + }, + "devDependencies": { + "tsup": "^8.0.2", + "typescript": "^5.4.5" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.17.2.tgz", + "integrity": "sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.17.2.tgz", + "integrity": "sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.17.2.tgz", + "integrity": "sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.17.2.tgz", + "integrity": "sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.17.2.tgz", + "integrity": "sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.17.2.tgz", + "integrity": "sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.17.2.tgz", + "integrity": "sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.17.2.tgz", + "integrity": "sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.17.2.tgz", + "integrity": "sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.17.2.tgz", + "integrity": "sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.17.2.tgz", + "integrity": "sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.17.2.tgz", + "integrity": "sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.17.2.tgz", + "integrity": "sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.17.2.tgz", + "integrity": "sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.17.2.tgz", + "integrity": "sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.17.2.tgz", + "integrity": "sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bundle-require": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-4.1.0.tgz", + "integrity": "sha512-FeArRFM+ziGkRViKRnSTbHZc35dgmR9yNog05Kn0+ItI59pOAISGvnnIwW1WgFZQW59IxD9QpJnUPkdIPfZuXg==", + "dev": true, + "dependencies": { + "load-tsconfig": "^0.2.3" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "esbuild": ">=0.17" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lilconfig": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", + "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/load-tsconfig": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", + "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", + "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.17.2.tgz", + "integrity": "sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.17.2", + "@rollup/rollup-android-arm64": "4.17.2", + "@rollup/rollup-darwin-arm64": "4.17.2", + "@rollup/rollup-darwin-x64": "4.17.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.17.2", + "@rollup/rollup-linux-arm-musleabihf": "4.17.2", + "@rollup/rollup-linux-arm64-gnu": "4.17.2", + "@rollup/rollup-linux-arm64-musl": "4.17.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.17.2", + "@rollup/rollup-linux-riscv64-gnu": "4.17.2", + "@rollup/rollup-linux-s390x-gnu": "4.17.2", + "@rollup/rollup-linux-x64-gnu": "4.17.2", + "@rollup/rollup-linux-x64-musl": "4.17.2", + "@rollup/rollup-win32-arm64-msvc": "4.17.2", + "@rollup/rollup-win32-ia32-msvc": "4.17.2", + "@rollup/rollup-win32-x64-msvc": "4.17.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dev": true, + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, + "node_modules/tsup": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.0.2.tgz", + "integrity": "sha512-NY8xtQXdH7hDUAZwcQdY/Vzlw9johQsaqf7iwZ6g1DOUlFYQ5/AtVAjTvihhEyeRlGo4dLRVHtrRaL35M1daqQ==", + "dev": true, + "dependencies": { + "bundle-require": "^4.0.0", + "cac": "^6.7.12", + "chokidar": "^3.5.1", + "debug": "^4.3.1", + "esbuild": "^0.19.2", + "execa": "^5.0.0", + "globby": "^11.0.3", + "joycon": "^3.0.1", + "postcss-load-config": "^4.0.1", + "resolve-from": "^5.0.0", + "rollup": "^4.0.2", + "source-map": "0.8.0-beta.0", + "sucrase": "^3.20.3", + "tree-kill": "^1.2.2" + }, + "bin": { + "tsup": "dist/cli-default.js", + "tsup-node": "dist/cli-node.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@microsoft/api-extractor": "^7.36.0", + "@swc/core": "^1", + "postcss": "^8.4.12", + "typescript": ">=4.5.0" + }, + "peerDependenciesMeta": { + "@microsoft/api-extractor": { + "optional": true + }, + "@swc/core": { + "optional": true + }, + "postcss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yaml": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz", + "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==", + "dev": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/zod": { + "version": "3.23.5", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.5.tgz", + "integrity": "sha512-fkwiq0VIQTksNNA131rDOsVJcns0pfVUjHzLrNBiF/O/Xxb5lQyEXkhZWcJ7npWsYlvs+h0jFWXXy4X46Em1JA==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/oxide-api/package.json b/oxide-api/package.json new file mode 100644 index 0000000..65901ec --- /dev/null +++ b/oxide-api/package.json @@ -0,0 +1,57 @@ +{ + "name": "@oxide/api", + "version": "0.1.0-alpha.3", + "description": "TypeScript client for the Oxide API", + "engines": { + "node": ">=18" + }, + "type": "module", + "main": "./dist/Api.js", + "exports": { + ".": { + "import": "./dist/Api.js", + "require": "./dist/Api.cjs" + }, + "./validate": { + "import": "./dist/validate.js", + "require": "./dist/validate.cjs" + } + }, + "scripts": { + "build": "tsup --dts", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/oxidecomputer/oxide.ts.git" + }, + "keywords": [ + "oxide", + "oxide.ts", + "oxide sdk" + ], + "author": "Oxide Computer Company", + "license": "MPL-2.0", + "bugs": { + "url": "https://github.com/oxidecomputer/oxide.ts/issues" + }, + "homepage": "https://github.com/oxidecomputer/oxide.ts#readme", + "devDependencies": { + "tsup": "^8.0.2", + "typescript": "^5.4.5" + }, + "tsup": { + "clean": true, + "entry": [ + "src/Api.ts", + "src/validate.ts" + ], + "format": [ + "cjs", + "esm" + ] + }, + "dependencies": { + "zod": "^3.23.5" + } +} diff --git a/client/Api.ts b/oxide-api/src/Api.ts similarity index 97% rename from client/Api.ts rename to oxide-api/src/Api.ts index 31aa560..3d6f327 100644 --- a/client/Api.ts +++ b/oxide-api/src/Api.ts @@ -4192,7 +4192,7 @@ export class Api extends HttpClient { */ deviceAuthConfirm: ( { body }: { body: DeviceAuthVerify }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/device/confirm`, @@ -4216,7 +4216,7 @@ export class Api extends HttpClient { */ probeList: ( { query = {} }: { query?: ProbeListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<ProbeInfoResultsPage>({ path: `/experimental/v1/probes`, @@ -4230,7 +4230,7 @@ export class Api extends HttpClient { */ probeCreate: ( { query, body }: { query?: ProbeCreateQueryParams; body: ProbeCreate }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Probe>({ path: `/experimental/v1/probes`, @@ -4248,7 +4248,7 @@ export class Api extends HttpClient { path, query, }: { path: ProbeViewPathParams; query?: ProbeViewQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<ProbeInfo>({ path: `/experimental/v1/probes/${path.probe}`, @@ -4265,7 +4265,7 @@ export class Api extends HttpClient { path, query, }: { path: ProbeDeletePathParams; query?: ProbeDeleteQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/experimental/v1/probes/${path.probe}`, @@ -4279,7 +4279,7 @@ export class Api extends HttpClient { */ loginSaml: ( { path }: { path: LoginSamlPathParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/login/${path.siloName}/saml/${path.providerName}`, @@ -4292,7 +4292,7 @@ export class Api extends HttpClient { */ certificateList: ( { query = {} }: { query?: CertificateListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<CertificateResultsPage>({ path: `/v1/certificates`, @@ -4306,7 +4306,7 @@ export class Api extends HttpClient { */ certificateCreate: ( { body }: { body: CertificateCreate }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Certificate>({ path: `/v1/certificates`, @@ -4320,7 +4320,7 @@ export class Api extends HttpClient { */ certificateView: ( { path }: { path: CertificateViewPathParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Certificate>({ path: `/v1/certificates/${path.certificate}`, @@ -4333,7 +4333,7 @@ export class Api extends HttpClient { */ certificateDelete: ( { path }: { path: CertificateDeletePathParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/certificates/${path.certificate}`, @@ -4346,7 +4346,7 @@ export class Api extends HttpClient { */ diskList: ( { query = {} }: { query?: DiskListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<DiskResultsPage>({ path: `/v1/disks`, @@ -4360,7 +4360,7 @@ export class Api extends HttpClient { */ diskCreate: ( { query, body }: { query?: DiskCreateQueryParams; body: DiskCreate }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Disk>({ path: `/v1/disks`, @@ -4378,7 +4378,7 @@ export class Api extends HttpClient { path, query = {}, }: { path: DiskViewPathParams; query?: DiskViewQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Disk>({ path: `/v1/disks/${path.disk}`, @@ -4395,7 +4395,7 @@ export class Api extends HttpClient { path, query = {}, }: { path: DiskDeletePathParams; query?: DiskDeleteQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/disks/${path.disk}`, @@ -4417,7 +4417,7 @@ export class Api extends HttpClient { query?: DiskBulkWriteImportQueryParams; body: ImportBlocksBulkWrite; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/disks/${path.disk}/bulk-write`, @@ -4438,7 +4438,7 @@ export class Api extends HttpClient { path: DiskBulkWriteImportStartPathParams; query?: DiskBulkWriteImportStartQueryParams; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/disks/${path.disk}/bulk-write-start`, @@ -4458,7 +4458,7 @@ export class Api extends HttpClient { path: DiskBulkWriteImportStopPathParams; query?: DiskBulkWriteImportStopQueryParams; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/disks/${path.disk}/bulk-write-stop`, @@ -4480,7 +4480,7 @@ export class Api extends HttpClient { query?: DiskFinalizeImportQueryParams; body: FinalizeDisk; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/disks/${path.disk}/finalize`, @@ -4501,7 +4501,7 @@ export class Api extends HttpClient { path: DiskMetricsListPathParams; query?: DiskMetricsListQueryParams; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<MeasurementResultsPage>({ path: `/v1/disks/${path.disk}/metrics/${path.metric}`, @@ -4515,7 +4515,7 @@ export class Api extends HttpClient { */ floatingIpList: ( { query = {} }: { query?: FloatingIpListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<FloatingIpResultsPage>({ path: `/v1/floating-ips`, @@ -4532,7 +4532,7 @@ export class Api extends HttpClient { query, body, }: { query?: FloatingIpCreateQueryParams; body: FloatingIpCreate }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<FloatingIp>({ path: `/v1/floating-ips`, @@ -4550,7 +4550,7 @@ export class Api extends HttpClient { path, query = {}, }: { path: FloatingIpViewPathParams; query?: FloatingIpViewQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<FloatingIp>({ path: `/v1/floating-ips/${path.floatingIp}`, @@ -4572,7 +4572,7 @@ export class Api extends HttpClient { query?: FloatingIpUpdateQueryParams; body: FloatingIpUpdate; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<FloatingIp>({ path: `/v1/floating-ips/${path.floatingIp}`, @@ -4593,7 +4593,7 @@ export class Api extends HttpClient { path: FloatingIpDeletePathParams; query?: FloatingIpDeleteQueryParams; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/floating-ips/${path.floatingIp}`, @@ -4615,7 +4615,7 @@ export class Api extends HttpClient { query?: FloatingIpAttachQueryParams; body: FloatingIpAttach; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<FloatingIp>({ path: `/v1/floating-ips/${path.floatingIp}/attach`, @@ -4636,7 +4636,7 @@ export class Api extends HttpClient { path: FloatingIpDetachPathParams; query?: FloatingIpDetachQueryParams; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<FloatingIp>({ path: `/v1/floating-ips/${path.floatingIp}/detach`, @@ -4650,7 +4650,7 @@ export class Api extends HttpClient { */ groupList: ( { query = {} }: { query?: GroupListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<GroupResultsPage>({ path: `/v1/groups`, @@ -4664,7 +4664,7 @@ export class Api extends HttpClient { */ groupView: ( { path }: { path: GroupViewPathParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Group>({ path: `/v1/groups/${path.groupId}`, @@ -4677,7 +4677,7 @@ export class Api extends HttpClient { */ imageList: ( { query = {} }: { query?: ImageListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<ImageResultsPage>({ path: `/v1/images`, @@ -4694,7 +4694,7 @@ export class Api extends HttpClient { query = {}, body, }: { query?: ImageCreateQueryParams; body: ImageCreate }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Image>({ path: `/v1/images`, @@ -4712,7 +4712,7 @@ export class Api extends HttpClient { path, query = {}, }: { path: ImageViewPathParams; query?: ImageViewQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Image>({ path: `/v1/images/${path.image}`, @@ -4729,7 +4729,7 @@ export class Api extends HttpClient { path, query = {}, }: { path: ImageDeletePathParams; query?: ImageDeleteQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/images/${path.image}`, @@ -4746,7 +4746,7 @@ export class Api extends HttpClient { path, query, }: { path: ImageDemotePathParams; query?: ImageDemoteQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Image>({ path: `/v1/images/${path.image}/demote`, @@ -4763,7 +4763,7 @@ export class Api extends HttpClient { path, query = {}, }: { path: ImagePromotePathParams; query?: ImagePromoteQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Image>({ path: `/v1/images/${path.image}/promote`, @@ -4777,7 +4777,7 @@ export class Api extends HttpClient { */ instanceList: ( { query = {} }: { query?: InstanceListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<InstanceResultsPage>({ path: `/v1/instances`, @@ -4794,7 +4794,7 @@ export class Api extends HttpClient { query, body, }: { query?: InstanceCreateQueryParams; body: InstanceCreate }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Instance>({ path: `/v1/instances`, @@ -4812,7 +4812,7 @@ export class Api extends HttpClient { path, query = {}, }: { path: InstanceViewPathParams; query?: InstanceViewQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Instance>({ path: `/v1/instances/${path.instance}`, @@ -4829,7 +4829,7 @@ export class Api extends HttpClient { path, query = {}, }: { path: InstanceDeletePathParams; query?: InstanceDeleteQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/instances/${path.instance}`, @@ -4849,7 +4849,7 @@ export class Api extends HttpClient { path: InstanceDiskListPathParams; query?: InstanceDiskListQueryParams; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<DiskResultsPage>({ path: `/v1/instances/${path.instance}/disks`, @@ -4871,7 +4871,7 @@ export class Api extends HttpClient { query?: InstanceDiskAttachQueryParams; body: DiskPath; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Disk>({ path: `/v1/instances/${path.instance}/disks/attach`, @@ -4894,7 +4894,7 @@ export class Api extends HttpClient { query?: InstanceDiskDetachQueryParams; body: DiskPath; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Disk>({ path: `/v1/instances/${path.instance}/disks/detach`, @@ -4915,7 +4915,7 @@ export class Api extends HttpClient { path: InstanceExternalIpListPathParams; query?: InstanceExternalIpListQueryParams; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<ExternalIpResultsPage>({ path: `/v1/instances/${path.instance}/external-ips`, @@ -4937,7 +4937,7 @@ export class Api extends HttpClient { query?: InstanceEphemeralIpAttachQueryParams; body: EphemeralIpCreate; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<ExternalIp>({ path: `/v1/instances/${path.instance}/external-ips/ephemeral`, @@ -4958,7 +4958,7 @@ export class Api extends HttpClient { path: InstanceEphemeralIpDetachPathParams; query?: InstanceEphemeralIpDetachQueryParams; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/instances/${path.instance}/external-ips/ephemeral`, @@ -4980,7 +4980,7 @@ export class Api extends HttpClient { query?: InstanceMigrateQueryParams; body: InstanceMigrate; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Instance>({ path: `/v1/instances/${path.instance}/migrate`, @@ -4998,7 +4998,7 @@ export class Api extends HttpClient { path, query = {}, }: { path: InstanceRebootPathParams; query?: InstanceRebootQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Instance>({ path: `/v1/instances/${path.instance}/reboot`, @@ -5018,7 +5018,7 @@ export class Api extends HttpClient { path: InstanceSerialConsolePathParams; query?: InstanceSerialConsoleQueryParams; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<InstanceSerialConsoleData>({ path: `/v1/instances/${path.instance}/serial-console`, @@ -5038,7 +5038,7 @@ export class Api extends HttpClient { path: InstanceSshPublicKeyListPathParams; query?: InstanceSshPublicKeyListQueryParams; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SshKeyResultsPage>({ path: `/v1/instances/${path.instance}/ssh-public-keys`, @@ -5055,7 +5055,7 @@ export class Api extends HttpClient { path, query = {}, }: { path: InstanceStartPathParams; query?: InstanceStartQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Instance>({ path: `/v1/instances/${path.instance}/start`, @@ -5072,7 +5072,7 @@ export class Api extends HttpClient { path, query = {}, }: { path: InstanceStopPathParams; query?: InstanceStopQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Instance>({ path: `/v1/instances/${path.instance}/stop`, @@ -5086,7 +5086,7 @@ export class Api extends HttpClient { */ projectIpPoolList: ( { query = {} }: { query?: ProjectIpPoolListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SiloIpPoolResultsPage>({ path: `/v1/ip-pools`, @@ -5100,7 +5100,7 @@ export class Api extends HttpClient { */ projectIpPoolView: ( { path }: { path: ProjectIpPoolViewPathParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SiloIpPool>({ path: `/v1/ip-pools/${path.pool}`, @@ -5116,7 +5116,7 @@ export class Api extends HttpClient { path, body, }: { path: LoginLocalPathParams; body: UsernamePasswordCredentials }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/login/${path.siloName}/local`, @@ -5150,7 +5150,7 @@ export class Api extends HttpClient { */ currentUserGroups: ( { query = {} }: { query?: CurrentUserGroupsQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<GroupResultsPage>({ path: `/v1/me/groups`, @@ -5164,7 +5164,7 @@ export class Api extends HttpClient { */ currentUserSshKeyList: ( { query = {} }: { query?: CurrentUserSshKeyListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SshKeyResultsPage>({ path: `/v1/me/ssh-keys`, @@ -5178,7 +5178,7 @@ export class Api extends HttpClient { */ currentUserSshKeyCreate: ( { body }: { body: SshKeyCreate }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SshKey>({ path: `/v1/me/ssh-keys`, @@ -5192,7 +5192,7 @@ export class Api extends HttpClient { */ currentUserSshKeyView: ( { path }: { path: CurrentUserSshKeyViewPathParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SshKey>({ path: `/v1/me/ssh-keys/${path.sshKey}`, @@ -5205,7 +5205,7 @@ export class Api extends HttpClient { */ currentUserSshKeyDelete: ( { path }: { path: CurrentUserSshKeyDeletePathParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/me/ssh-keys/${path.sshKey}`, @@ -5221,7 +5221,7 @@ export class Api extends HttpClient { path, query = {}, }: { path: SiloMetricPathParams; query?: SiloMetricQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<MeasurementResultsPage>({ path: `/v1/metrics/${path.metricName}`, @@ -5235,7 +5235,7 @@ export class Api extends HttpClient { */ instanceNetworkInterfaceList: ( { query = {} }: { query?: InstanceNetworkInterfaceListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<InstanceNetworkInterfaceResultsPage>({ path: `/v1/network-interfaces`, @@ -5255,7 +5255,7 @@ export class Api extends HttpClient { query?: InstanceNetworkInterfaceCreateQueryParams; body: InstanceNetworkInterfaceCreate; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<InstanceNetworkInterface>({ path: `/v1/network-interfaces`, @@ -5276,7 +5276,7 @@ export class Api extends HttpClient { path: InstanceNetworkInterfaceViewPathParams; query?: InstanceNetworkInterfaceViewQueryParams; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<InstanceNetworkInterface>({ path: `/v1/network-interfaces/${path.interface}`, @@ -5298,7 +5298,7 @@ export class Api extends HttpClient { query?: InstanceNetworkInterfaceUpdateQueryParams; body: InstanceNetworkInterfaceUpdate; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<InstanceNetworkInterface>({ path: `/v1/network-interfaces/${path.interface}`, @@ -5319,7 +5319,7 @@ export class Api extends HttpClient { path: InstanceNetworkInterfaceDeletePathParams; query?: InstanceNetworkInterfaceDeleteQueryParams; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/network-interfaces/${path.interface}`, @@ -5353,7 +5353,7 @@ export class Api extends HttpClient { */ policyUpdate: ( { body }: { body: SiloRolePolicy }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SiloRolePolicy>({ path: `/v1/policy`, @@ -5367,7 +5367,7 @@ export class Api extends HttpClient { */ projectList: ( { query = {} }: { query?: ProjectListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<ProjectResultsPage>({ path: `/v1/projects`, @@ -5381,7 +5381,7 @@ export class Api extends HttpClient { */ projectCreate: ( { body }: { body: ProjectCreate }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Project>({ path: `/v1/projects`, @@ -5395,7 +5395,7 @@ export class Api extends HttpClient { */ projectView: ( { path }: { path: ProjectViewPathParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Project>({ path: `/v1/projects/${path.project}`, @@ -5408,7 +5408,7 @@ export class Api extends HttpClient { */ projectUpdate: ( { path, body }: { path: ProjectUpdatePathParams; body: ProjectUpdate }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Project>({ path: `/v1/projects/${path.project}`, @@ -5422,7 +5422,7 @@ export class Api extends HttpClient { */ projectDelete: ( { path }: { path: ProjectDeletePathParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/projects/${path.project}`, @@ -5435,7 +5435,7 @@ export class Api extends HttpClient { */ projectPolicyView: ( { path }: { path: ProjectPolicyViewPathParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<ProjectRolePolicy>({ path: `/v1/projects/${path.project}/policy`, @@ -5451,7 +5451,7 @@ export class Api extends HttpClient { path, body, }: { path: ProjectPolicyUpdatePathParams; body: ProjectRolePolicy }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<ProjectRolePolicy>({ path: `/v1/projects/${path.project}/policy`, @@ -5465,7 +5465,7 @@ export class Api extends HttpClient { */ snapshotList: ( { query = {} }: { query?: SnapshotListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SnapshotResultsPage>({ path: `/v1/snapshots`, @@ -5482,7 +5482,7 @@ export class Api extends HttpClient { query, body, }: { query?: SnapshotCreateQueryParams; body: SnapshotCreate }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Snapshot>({ path: `/v1/snapshots`, @@ -5500,7 +5500,7 @@ export class Api extends HttpClient { path, query = {}, }: { path: SnapshotViewPathParams; query?: SnapshotViewQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Snapshot>({ path: `/v1/snapshots/${path.snapshot}`, @@ -5517,7 +5517,7 @@ export class Api extends HttpClient { path, query = {}, }: { path: SnapshotDeletePathParams; query?: SnapshotDeleteQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/snapshots/${path.snapshot}`, @@ -5531,7 +5531,7 @@ export class Api extends HttpClient { */ physicalDiskList: ( { query = {} }: { query?: PhysicalDiskListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<PhysicalDiskResultsPage>({ path: `/v1/system/hardware/disks`, @@ -5545,7 +5545,7 @@ export class Api extends HttpClient { */ rackList: ( { query = {} }: { query?: RackListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<RackResultsPage>({ path: `/v1/system/hardware/racks`, @@ -5559,7 +5559,7 @@ export class Api extends HttpClient { */ rackView: ( { path }: { path: RackViewPathParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Rack>({ path: `/v1/system/hardware/racks/${path.rackId}`, @@ -5572,7 +5572,7 @@ export class Api extends HttpClient { */ sledList: ( { query = {} }: { query?: SledListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SledResultsPage>({ path: `/v1/system/hardware/sleds`, @@ -5586,7 +5586,7 @@ export class Api extends HttpClient { */ sledAdd: ( { body }: { body: UninitializedSledId }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/system/hardware/sleds`, @@ -5600,7 +5600,7 @@ export class Api extends HttpClient { */ sledView: ( { path }: { path: SledViewPathParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Sled>({ path: `/v1/system/hardware/sleds/${path.sledId}`, @@ -5619,7 +5619,7 @@ export class Api extends HttpClient { path: SledPhysicalDiskListPathParams; query?: SledPhysicalDiskListQueryParams; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<PhysicalDiskResultsPage>({ path: `/v1/system/hardware/sleds/${path.sledId}/disks`, @@ -5639,7 +5639,7 @@ export class Api extends HttpClient { path: SledInstanceListPathParams; query?: SledInstanceListQueryParams; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SledInstanceResultsPage>({ path: `/v1/system/hardware/sleds/${path.sledId}/instances`, @@ -5659,7 +5659,7 @@ export class Api extends HttpClient { path: SledSetProvisionPolicyPathParams; body: SledProvisionPolicyParams; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SledProvisionPolicyResponse>({ path: `/v1/system/hardware/sleds/${path.sledId}/provision-policy`, @@ -5673,7 +5673,7 @@ export class Api extends HttpClient { */ sledListUninitialized: ( { query = {} }: { query?: SledListUninitializedQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<UninitializedSledResultsPage>({ path: `/v1/system/hardware/sleds-uninitialized`, @@ -5687,7 +5687,7 @@ export class Api extends HttpClient { */ networkingSwitchPortList: ( { query = {} }: { query?: NetworkingSwitchPortListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SwitchPortResultsPage>({ path: `/v1/system/hardware/switch-port`, @@ -5709,7 +5709,7 @@ export class Api extends HttpClient { query?: NetworkingSwitchPortApplySettingsQueryParams; body: SwitchPortApplySettings; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/system/hardware/switch-port/${path.port}/settings`, @@ -5730,7 +5730,7 @@ export class Api extends HttpClient { path: NetworkingSwitchPortClearSettingsPathParams; query?: NetworkingSwitchPortClearSettingsQueryParams; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/system/hardware/switch-port/${path.port}/settings`, @@ -5744,7 +5744,7 @@ export class Api extends HttpClient { */ switchList: ( { query = {} }: { query?: SwitchListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SwitchResultsPage>({ path: `/v1/system/hardware/switches`, @@ -5758,7 +5758,7 @@ export class Api extends HttpClient { */ switchView: ( { path }: { path: SwitchViewPathParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Switch>({ path: `/v1/system/hardware/switches/${path.switchId}`, @@ -5771,7 +5771,7 @@ export class Api extends HttpClient { */ siloIdentityProviderList: ( { query = {} }: { query?: SiloIdentityProviderListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<IdentityProviderResultsPage>({ path: `/v1/system/identity-providers`, @@ -5788,7 +5788,7 @@ export class Api extends HttpClient { query, body, }: { query?: LocalIdpUserCreateQueryParams; body: UserCreate }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<User>({ path: `/v1/system/identity-providers/local/users`, @@ -5809,7 +5809,7 @@ export class Api extends HttpClient { path: LocalIdpUserDeletePathParams; query?: LocalIdpUserDeleteQueryParams; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/system/identity-providers/local/users/${path.userId}`, @@ -5831,7 +5831,7 @@ export class Api extends HttpClient { query?: LocalIdpUserSetPasswordQueryParams; body: UserPassword; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/system/identity-providers/local/users/${path.userId}/set-password`, @@ -5852,7 +5852,7 @@ export class Api extends HttpClient { query?: SamlIdentityProviderCreateQueryParams; body: SamlIdentityProviderCreate; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SamlIdentityProvider>({ path: `/v1/system/identity-providers/saml`, @@ -5873,7 +5873,7 @@ export class Api extends HttpClient { path: SamlIdentityProviderViewPathParams; query?: SamlIdentityProviderViewQueryParams; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SamlIdentityProvider>({ path: `/v1/system/identity-providers/saml/${path.provider}`, @@ -5887,7 +5887,7 @@ export class Api extends HttpClient { */ ipPoolList: ( { query = {} }: { query?: IpPoolListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<IpPoolResultsPage>({ path: `/v1/system/ip-pools`, @@ -5901,7 +5901,7 @@ export class Api extends HttpClient { */ ipPoolCreate: ( { body }: { body: IpPoolCreate }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<IpPool>({ path: `/v1/system/ip-pools`, @@ -5915,7 +5915,7 @@ export class Api extends HttpClient { */ ipPoolView: ( { path }: { path: IpPoolViewPathParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<IpPool>({ path: `/v1/system/ip-pools/${path.pool}`, @@ -5928,7 +5928,7 @@ export class Api extends HttpClient { */ ipPoolUpdate: ( { path, body }: { path: IpPoolUpdatePathParams; body: IpPoolUpdate }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<IpPool>({ path: `/v1/system/ip-pools/${path.pool}`, @@ -5942,7 +5942,7 @@ export class Api extends HttpClient { */ ipPoolDelete: ( { path }: { path: IpPoolDeletePathParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/system/ip-pools/${path.pool}`, @@ -5961,7 +5961,7 @@ export class Api extends HttpClient { path: IpPoolRangeListPathParams; query?: IpPoolRangeListQueryParams; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<IpPoolRangeResultsPage>({ path: `/v1/system/ip-pools/${path.pool}/ranges`, @@ -5975,7 +5975,7 @@ export class Api extends HttpClient { */ ipPoolRangeAdd: ( { path, body }: { path: IpPoolRangeAddPathParams; body: IpRange }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<IpPoolRange>({ path: `/v1/system/ip-pools/${path.pool}/ranges/add`, @@ -5989,7 +5989,7 @@ export class Api extends HttpClient { */ ipPoolRangeRemove: ( { path, body }: { path: IpPoolRangeRemovePathParams; body: IpRange }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/system/ip-pools/${path.pool}/ranges/remove`, @@ -6006,7 +6006,7 @@ export class Api extends HttpClient { path, query = {}, }: { path: IpPoolSiloListPathParams; query?: IpPoolSiloListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<IpPoolSiloLinkResultsPage>({ path: `/v1/system/ip-pools/${path.pool}/silos`, @@ -6020,7 +6020,7 @@ export class Api extends HttpClient { */ ipPoolSiloLink: ( { path, body }: { path: IpPoolSiloLinkPathParams; body: IpPoolLinkSilo }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<IpPoolSiloLink>({ path: `/v1/system/ip-pools/${path.pool}/silos`, @@ -6037,7 +6037,7 @@ export class Api extends HttpClient { path, body, }: { path: IpPoolSiloUpdatePathParams; body: IpPoolSiloUpdate }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<IpPoolSiloLink>({ path: `/v1/system/ip-pools/${path.pool}/silos/${path.silo}`, @@ -6051,7 +6051,7 @@ export class Api extends HttpClient { */ ipPoolSiloUnlink: ( { path }: { path: IpPoolSiloUnlinkPathParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/system/ip-pools/${path.pool}/silos/${path.silo}`, @@ -6074,7 +6074,7 @@ export class Api extends HttpClient { */ ipPoolServiceRangeList: ( { query = {} }: { query?: IpPoolServiceRangeListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<IpPoolRangeResultsPage>({ path: `/v1/system/ip-pools-service/ranges`, @@ -6088,7 +6088,7 @@ export class Api extends HttpClient { */ ipPoolServiceRangeAdd: ( { body }: { body: IpRange }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<IpPoolRange>({ path: `/v1/system/ip-pools-service/ranges/add`, @@ -6102,7 +6102,7 @@ export class Api extends HttpClient { */ ipPoolServiceRangeRemove: ( { body }: { body: IpRange }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/system/ip-pools-service/ranges/remove`, @@ -6119,7 +6119,7 @@ export class Api extends HttpClient { path, query = {}, }: { path: SystemMetricPathParams; query?: SystemMetricQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<MeasurementResultsPage>({ path: `/v1/system/metrics/${path.metricName}`, @@ -6133,7 +6133,7 @@ export class Api extends HttpClient { */ networkingAddressLotList: ( { query = {} }: { query?: NetworkingAddressLotListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<AddressLotResultsPage>({ path: `/v1/system/networking/address-lot`, @@ -6147,7 +6147,7 @@ export class Api extends HttpClient { */ networkingAddressLotCreate: ( { body }: { body: AddressLotCreate }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<AddressLotCreateResponse>({ path: `/v1/system/networking/address-lot`, @@ -6161,7 +6161,7 @@ export class Api extends HttpClient { */ networkingAddressLotDelete: ( { path }: { path: NetworkingAddressLotDeletePathParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/system/networking/address-lot/${path.addressLot}`, @@ -6180,7 +6180,7 @@ export class Api extends HttpClient { path: NetworkingAddressLotBlockListPathParams; query?: NetworkingAddressLotBlockListQueryParams; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<AddressLotBlockResultsPage>({ path: `/v1/system/networking/address-lot/${path.addressLot}/blocks`, @@ -6194,7 +6194,7 @@ export class Api extends HttpClient { */ networkingBfdDisable: ( { body }: { body: BfdSessionDisable }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/system/networking/bfd-disable`, @@ -6208,7 +6208,7 @@ export class Api extends HttpClient { */ networkingBfdEnable: ( { body }: { body: BfdSessionEnable }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/system/networking/bfd-enable`, @@ -6232,7 +6232,7 @@ export class Api extends HttpClient { */ networkingBgpConfigList: ( { query = {} }: { query?: NetworkingBgpConfigListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<BgpConfigResultsPage>({ path: `/v1/system/networking/bgp`, @@ -6246,7 +6246,7 @@ export class Api extends HttpClient { */ networkingBgpConfigCreate: ( { body }: { body: BgpConfigCreate }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<BgpConfig>({ path: `/v1/system/networking/bgp`, @@ -6260,7 +6260,7 @@ export class Api extends HttpClient { */ networkingBgpConfigDelete: ( { query }: { query?: NetworkingBgpConfigDeleteQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/system/networking/bgp`, @@ -6274,7 +6274,7 @@ export class Api extends HttpClient { */ networkingBgpAnnounceSetList: ( { query }: { query?: NetworkingBgpAnnounceSetListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<BgpAnnouncement[]>({ path: `/v1/system/networking/bgp-announce`, @@ -6288,7 +6288,7 @@ export class Api extends HttpClient { */ networkingBgpAnnounceSetCreate: ( { body }: { body: BgpAnnounceSetCreate }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<BgpAnnounceSet>({ path: `/v1/system/networking/bgp-announce`, @@ -6302,7 +6302,7 @@ export class Api extends HttpClient { */ networkingBgpAnnounceSetDelete: ( { query }: { query?: NetworkingBgpAnnounceSetDeleteQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/system/networking/bgp-announce`, @@ -6316,7 +6316,7 @@ export class Api extends HttpClient { */ networkingBgpImportedRoutesIpv4: ( { query }: { query?: NetworkingBgpImportedRoutesIpv4QueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<BgpImportedRouteIpv4[]>({ path: `/v1/system/networking/bgp-routes-ipv4`, @@ -6340,7 +6340,7 @@ export class Api extends HttpClient { */ networkingLoopbackAddressList: ( { query = {} }: { query?: NetworkingLoopbackAddressListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<LoopbackAddressResultsPage>({ path: `/v1/system/networking/loopback-address`, @@ -6354,7 +6354,7 @@ export class Api extends HttpClient { */ networkingLoopbackAddressCreate: ( { body }: { body: LoopbackAddressCreate }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<LoopbackAddress>({ path: `/v1/system/networking/loopback-address`, @@ -6368,7 +6368,7 @@ export class Api extends HttpClient { */ networkingLoopbackAddressDelete: ( { path }: { path: NetworkingLoopbackAddressDeletePathParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/system/networking/loopback-address/${path.rackId}/${path.switchLocation}/${path.address}/${path.subnetMask}`, @@ -6381,7 +6381,7 @@ export class Api extends HttpClient { */ networkingSwitchPortSettingsList: ( { query = {} }: { query?: NetworkingSwitchPortSettingsListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SwitchPortSettingsResultsPage>({ path: `/v1/system/networking/switch-port-settings`, @@ -6395,7 +6395,7 @@ export class Api extends HttpClient { */ networkingSwitchPortSettingsCreate: ( { body }: { body: SwitchPortSettingsCreate }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SwitchPortSettingsView>({ path: `/v1/system/networking/switch-port-settings`, @@ -6409,7 +6409,7 @@ export class Api extends HttpClient { */ networkingSwitchPortSettingsDelete: ( { query = {} }: { query?: NetworkingSwitchPortSettingsDeleteQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/system/networking/switch-port-settings`, @@ -6423,7 +6423,7 @@ export class Api extends HttpClient { */ networkingSwitchPortSettingsView: ( { path }: { path: NetworkingSwitchPortSettingsViewPathParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SwitchPortSettingsView>({ path: `/v1/system/networking/switch-port-settings/${path.port}`, @@ -6446,7 +6446,7 @@ export class Api extends HttpClient { */ systemPolicyUpdate: ( { body }: { body: FleetRolePolicy }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<FleetRolePolicy>({ path: `/v1/system/policy`, @@ -6460,7 +6460,7 @@ export class Api extends HttpClient { */ roleList: ( { query = {} }: { query?: RoleListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<RoleResultsPage>({ path: `/v1/system/roles`, @@ -6474,7 +6474,7 @@ export class Api extends HttpClient { */ roleView: ( { path }: { path: RoleViewPathParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Role>({ path: `/v1/system/roles/${path.roleName}`, @@ -6487,7 +6487,7 @@ export class Api extends HttpClient { */ systemQuotasList: ( { query = {} }: { query?: SystemQuotasListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SiloQuotasResultsPage>({ path: `/v1/system/silo-quotas`, @@ -6501,7 +6501,7 @@ export class Api extends HttpClient { */ siloList: ( { query = {} }: { query?: SiloListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SiloResultsPage>({ path: `/v1/system/silos`, @@ -6526,7 +6526,7 @@ export class Api extends HttpClient { */ siloView: ( { path }: { path: SiloViewPathParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Silo>({ path: `/v1/system/silos/${path.silo}`, @@ -6539,7 +6539,7 @@ export class Api extends HttpClient { */ siloDelete: ( { path }: { path: SiloDeletePathParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/system/silos/${path.silo}`, @@ -6555,7 +6555,7 @@ export class Api extends HttpClient { path, query = {}, }: { path: SiloIpPoolListPathParams; query?: SiloIpPoolListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SiloIpPoolResultsPage>({ path: `/v1/system/silos/${path.silo}/ip-pools`, @@ -6569,7 +6569,7 @@ export class Api extends HttpClient { */ siloPolicyView: ( { path }: { path: SiloPolicyViewPathParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SiloRolePolicy>({ path: `/v1/system/silos/${path.silo}/policy`, @@ -6585,7 +6585,7 @@ export class Api extends HttpClient { path, body, }: { path: SiloPolicyUpdatePathParams; body: SiloRolePolicy }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SiloRolePolicy>({ path: `/v1/system/silos/${path.silo}/policy`, @@ -6599,7 +6599,7 @@ export class Api extends HttpClient { */ siloQuotasView: ( { path }: { path: SiloQuotasViewPathParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SiloQuotas>({ path: `/v1/system/silos/${path.silo}/quotas`, @@ -6615,7 +6615,7 @@ export class Api extends HttpClient { path, body, }: { path: SiloQuotasUpdatePathParams; body: SiloQuotasUpdate }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SiloQuotas>({ path: `/v1/system/silos/${path.silo}/quotas`, @@ -6629,7 +6629,7 @@ export class Api extends HttpClient { */ siloUserList: ( { query = {} }: { query?: SiloUserListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<UserResultsPage>({ path: `/v1/system/users`, @@ -6646,7 +6646,7 @@ export class Api extends HttpClient { path, query, }: { path: SiloUserViewPathParams; query?: SiloUserViewQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<User>({ path: `/v1/system/users/${path.userId}`, @@ -6660,7 +6660,7 @@ export class Api extends HttpClient { */ userBuiltinList: ( { query = {} }: { query?: UserBuiltinListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<UserBuiltinResultsPage>({ path: `/v1/system/users-builtin`, @@ -6674,7 +6674,7 @@ export class Api extends HttpClient { */ userBuiltinView: ( { path }: { path: UserBuiltinViewPathParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<UserBuiltin>({ path: `/v1/system/users-builtin/${path.user}`, @@ -6687,7 +6687,7 @@ export class Api extends HttpClient { */ siloUtilizationList: ( { query = {} }: { query?: SiloUtilizationListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SiloUtilizationResultsPage>({ path: `/v1/system/utilization/silos`, @@ -6701,7 +6701,7 @@ export class Api extends HttpClient { */ siloUtilizationView: ( { path }: { path: SiloUtilizationViewPathParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<SiloUtilization>({ path: `/v1/system/utilization/silos/${path.silo}`, @@ -6714,7 +6714,7 @@ export class Api extends HttpClient { */ userList: ( { query = {} }: { query?: UserListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<UserResultsPage>({ path: `/v1/users`, @@ -6738,7 +6738,7 @@ export class Api extends HttpClient { */ vpcFirewallRulesView: ( { query }: { query?: VpcFirewallRulesViewQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<VpcFirewallRules>({ path: `/v1/vpc-firewall-rules`, @@ -6758,7 +6758,7 @@ export class Api extends HttpClient { query?: VpcFirewallRulesUpdateQueryParams; body: VpcFirewallRuleUpdateParams; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<VpcFirewallRules>({ path: `/v1/vpc-firewall-rules`, @@ -6773,7 +6773,7 @@ export class Api extends HttpClient { */ vpcSubnetList: ( { query = {} }: { query?: VpcSubnetListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<VpcSubnetResultsPage>({ path: `/v1/vpc-subnets`, @@ -6790,7 +6790,7 @@ export class Api extends HttpClient { query, body, }: { query?: VpcSubnetCreateQueryParams; body: VpcSubnetCreate }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<VpcSubnet>({ path: `/v1/vpc-subnets`, @@ -6808,7 +6808,7 @@ export class Api extends HttpClient { path, query = {}, }: { path: VpcSubnetViewPathParams; query?: VpcSubnetViewQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<VpcSubnet>({ path: `/v1/vpc-subnets/${path.subnet}`, @@ -6830,7 +6830,7 @@ export class Api extends HttpClient { query?: VpcSubnetUpdateQueryParams; body: VpcSubnetUpdate; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<VpcSubnet>({ path: `/v1/vpc-subnets/${path.subnet}`, @@ -6851,7 +6851,7 @@ export class Api extends HttpClient { path: VpcSubnetDeletePathParams; query?: VpcSubnetDeleteQueryParams; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/vpc-subnets/${path.subnet}`, @@ -6871,7 +6871,7 @@ export class Api extends HttpClient { path: VpcSubnetListNetworkInterfacesPathParams; query?: VpcSubnetListNetworkInterfacesQueryParams; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<InstanceNetworkInterfaceResultsPage>({ path: `/v1/vpc-subnets/${path.subnet}/network-interfaces`, @@ -6885,7 +6885,7 @@ export class Api extends HttpClient { */ vpcList: ( { query = {} }: { query?: VpcListQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<VpcResultsPage>({ path: `/v1/vpcs`, @@ -6899,7 +6899,7 @@ export class Api extends HttpClient { */ vpcCreate: ( { query, body }: { query?: VpcCreateQueryParams; body: VpcCreate }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Vpc>({ path: `/v1/vpcs`, @@ -6917,7 +6917,7 @@ export class Api extends HttpClient { path, query = {}, }: { path: VpcViewPathParams; query?: VpcViewQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Vpc>({ path: `/v1/vpcs/${path.vpc}`, @@ -6939,7 +6939,7 @@ export class Api extends HttpClient { query?: VpcUpdateQueryParams; body: VpcUpdate; }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<Vpc>({ path: `/v1/vpcs/${path.vpc}`, @@ -6957,7 +6957,7 @@ export class Api extends HttpClient { path, query = {}, }: { path: VpcDeletePathParams; query?: VpcDeleteQueryParams }, - params: FetchParams = {} + params: FetchParams = {}, ) => { return this.request<void>({ path: `/v1/vpcs/${path.vpc}`, @@ -6985,7 +6985,7 @@ export class Api extends HttpClient { const protocol = secure ? "wss:" : "ws:"; const route = `/v1/instances/${path.instance}/serial-console/stream`; return new WebSocket( - protocol + "//" + host + route + toQueryString(query) + protocol + "//" + host + route + toQueryString(query), ); }, }; diff --git a/static/http-client.ts b/oxide-api/src/http-client.ts similarity index 98% rename from static/http-client.ts rename to oxide-api/src/http-client.ts index 4cf3a72..b820c3b 100644 --- a/static/http-client.ts +++ b/oxide-api/src/http-client.ts @@ -56,12 +56,12 @@ function replacer(_key: string, value: any) { function encodeQueryParam(key: string, value: unknown) { return `${encodeURIComponent(camelToSnake(key))}=${encodeURIComponent( - replacer(key, value) + replacer(key, value), )}`; } export async function handleResponse<Data>( - response: Response + response: Response, ): Promise<ApiResult<Data>> { const respText = await response.text(); @@ -176,7 +176,7 @@ export function toQueryString(rawQuery?: QueryParams): string { .map(([key, value]) => Array.isArray(value) ? value.map((item) => encodeQueryParam(key, item)).join("&") - : encodeQueryParam(key, value) + : encodeQueryParam(key, value), ) .join("&"); return qs ? "?" + qs : ""; diff --git a/client/msw-handlers.ts b/oxide-api/src/msw-handlers.ts similarity index 93% rename from client/msw-handlers.ts rename to oxide-api/src/msw-handlers.ts index f3801c1..5de6227 100644 --- a/client/msw-handlers.ts +++ b/oxide-api/src/msw-handlers.ts @@ -1204,7 +1204,7 @@ export interface MSWHandlers { function validateParams<S extends ZodSchema>( schema: S, req: Request, - pathParams: PathParams + pathParams: PathParams, ) { const rawParams = new URLSearchParams(new URL(req.url).search); const params: [string, unknown][] = []; @@ -1234,7 +1234,7 @@ const handler = ( handler: MSWHandlers[keyof MSWHandlers], paramSchema: ZodSchema | null, - bodySchema: ZodSchema | null + bodySchema: ZodSchema | null, ) => async ({ request: req, @@ -1300,323 +1300,335 @@ export function makeHandlers(handlers: MSWHandlers): HttpHandler[] { return [ http.post( "/device/auth", - handler(handlers["deviceAuthRequest"], null, null) + handler(handlers["deviceAuthRequest"], null, null), ), http.post( "/device/confirm", - handler(handlers["deviceAuthConfirm"], null, schema.DeviceAuthVerify) + handler(handlers["deviceAuthConfirm"], null, schema.DeviceAuthVerify), ), http.post( "/device/token", - handler(handlers["deviceAccessToken"], null, null) + handler(handlers["deviceAccessToken"], null, null), ), http.get( "/experimental/v1/probes", - handler(handlers["probeList"], schema.ProbeListParams, null) + handler(handlers["probeList"], schema.ProbeListParams, null), ), http.post( "/experimental/v1/probes", handler( handlers["probeCreate"], schema.ProbeCreateParams, - schema.ProbeCreate - ) + schema.ProbeCreate, + ), ), http.get( "/experimental/v1/probes/:probe", - handler(handlers["probeView"], schema.ProbeViewParams, null) + handler(handlers["probeView"], schema.ProbeViewParams, null), ), http.delete( "/experimental/v1/probes/:probe", - handler(handlers["probeDelete"], schema.ProbeDeleteParams, null) + handler(handlers["probeDelete"], schema.ProbeDeleteParams, null), ), http.post( "/login/:siloName/saml/:providerName", - handler(handlers["loginSaml"], schema.LoginSamlParams, null) + handler(handlers["loginSaml"], schema.LoginSamlParams, null), ), http.get( "/v1/certificates", - handler(handlers["certificateList"], schema.CertificateListParams, null) + handler(handlers["certificateList"], schema.CertificateListParams, null), ), http.post( "/v1/certificates", - handler(handlers["certificateCreate"], null, schema.CertificateCreate) + handler(handlers["certificateCreate"], null, schema.CertificateCreate), ), http.get( "/v1/certificates/:certificate", - handler(handlers["certificateView"], schema.CertificateViewParams, null) + handler(handlers["certificateView"], schema.CertificateViewParams, null), ), http.delete( "/v1/certificates/:certificate", handler( handlers["certificateDelete"], schema.CertificateDeleteParams, - null - ) + null, + ), ), http.get( "/v1/disks", - handler(handlers["diskList"], schema.DiskListParams, null) + handler(handlers["diskList"], schema.DiskListParams, null), ), http.post( "/v1/disks", handler( handlers["diskCreate"], schema.DiskCreateParams, - schema.DiskCreate - ) + schema.DiskCreate, + ), ), http.get( "/v1/disks/:disk", - handler(handlers["diskView"], schema.DiskViewParams, null) + handler(handlers["diskView"], schema.DiskViewParams, null), ), http.delete( "/v1/disks/:disk", - handler(handlers["diskDelete"], schema.DiskDeleteParams, null) + handler(handlers["diskDelete"], schema.DiskDeleteParams, null), ), http.post( "/v1/disks/:disk/bulk-write", handler( handlers["diskBulkWriteImport"], schema.DiskBulkWriteImportParams, - schema.ImportBlocksBulkWrite - ) + schema.ImportBlocksBulkWrite, + ), ), http.post( "/v1/disks/:disk/bulk-write-start", handler( handlers["diskBulkWriteImportStart"], schema.DiskBulkWriteImportStartParams, - null - ) + null, + ), ), http.post( "/v1/disks/:disk/bulk-write-stop", handler( handlers["diskBulkWriteImportStop"], schema.DiskBulkWriteImportStopParams, - null - ) + null, + ), ), http.post( "/v1/disks/:disk/finalize", handler( handlers["diskFinalizeImport"], schema.DiskFinalizeImportParams, - schema.FinalizeDisk - ) + schema.FinalizeDisk, + ), ), http.get( "/v1/disks/:disk/metrics/:metric", - handler(handlers["diskMetricsList"], schema.DiskMetricsListParams, null) + handler(handlers["diskMetricsList"], schema.DiskMetricsListParams, null), ), http.get( "/v1/floating-ips", - handler(handlers["floatingIpList"], schema.FloatingIpListParams, null) + handler(handlers["floatingIpList"], schema.FloatingIpListParams, null), ), http.post( "/v1/floating-ips", handler( handlers["floatingIpCreate"], schema.FloatingIpCreateParams, - schema.FloatingIpCreate - ) + schema.FloatingIpCreate, + ), ), http.get( "/v1/floating-ips/:floatingIp", - handler(handlers["floatingIpView"], schema.FloatingIpViewParams, null) + handler(handlers["floatingIpView"], schema.FloatingIpViewParams, null), ), http.put( "/v1/floating-ips/:floatingIp", handler( handlers["floatingIpUpdate"], schema.FloatingIpUpdateParams, - schema.FloatingIpUpdate - ) + schema.FloatingIpUpdate, + ), ), http.delete( "/v1/floating-ips/:floatingIp", - handler(handlers["floatingIpDelete"], schema.FloatingIpDeleteParams, null) + handler( + handlers["floatingIpDelete"], + schema.FloatingIpDeleteParams, + null, + ), ), http.post( "/v1/floating-ips/:floatingIp/attach", handler( handlers["floatingIpAttach"], schema.FloatingIpAttachParams, - schema.FloatingIpAttach - ) + schema.FloatingIpAttach, + ), ), http.post( "/v1/floating-ips/:floatingIp/detach", - handler(handlers["floatingIpDetach"], schema.FloatingIpDetachParams, null) + handler( + handlers["floatingIpDetach"], + schema.FloatingIpDetachParams, + null, + ), ), http.get( "/v1/groups", - handler(handlers["groupList"], schema.GroupListParams, null) + handler(handlers["groupList"], schema.GroupListParams, null), ), http.get( "/v1/groups/:groupId", - handler(handlers["groupView"], schema.GroupViewParams, null) + handler(handlers["groupView"], schema.GroupViewParams, null), ), http.get( "/v1/images", - handler(handlers["imageList"], schema.ImageListParams, null) + handler(handlers["imageList"], schema.ImageListParams, null), ), http.post( "/v1/images", handler( handlers["imageCreate"], schema.ImageCreateParams, - schema.ImageCreate - ) + schema.ImageCreate, + ), ), http.get( "/v1/images/:image", - handler(handlers["imageView"], schema.ImageViewParams, null) + handler(handlers["imageView"], schema.ImageViewParams, null), ), http.delete( "/v1/images/:image", - handler(handlers["imageDelete"], schema.ImageDeleteParams, null) + handler(handlers["imageDelete"], schema.ImageDeleteParams, null), ), http.post( "/v1/images/:image/demote", - handler(handlers["imageDemote"], schema.ImageDemoteParams, null) + handler(handlers["imageDemote"], schema.ImageDemoteParams, null), ), http.post( "/v1/images/:image/promote", - handler(handlers["imagePromote"], schema.ImagePromoteParams, null) + handler(handlers["imagePromote"], schema.ImagePromoteParams, null), ), http.get( "/v1/instances", - handler(handlers["instanceList"], schema.InstanceListParams, null) + handler(handlers["instanceList"], schema.InstanceListParams, null), ), http.post( "/v1/instances", handler( handlers["instanceCreate"], schema.InstanceCreateParams, - schema.InstanceCreate - ) + schema.InstanceCreate, + ), ), http.get( "/v1/instances/:instance", - handler(handlers["instanceView"], schema.InstanceViewParams, null) + handler(handlers["instanceView"], schema.InstanceViewParams, null), ), http.delete( "/v1/instances/:instance", - handler(handlers["instanceDelete"], schema.InstanceDeleteParams, null) + handler(handlers["instanceDelete"], schema.InstanceDeleteParams, null), ), http.get( "/v1/instances/:instance/disks", - handler(handlers["instanceDiskList"], schema.InstanceDiskListParams, null) + handler( + handlers["instanceDiskList"], + schema.InstanceDiskListParams, + null, + ), ), http.post( "/v1/instances/:instance/disks/attach", handler( handlers["instanceDiskAttach"], schema.InstanceDiskAttachParams, - schema.DiskPath - ) + schema.DiskPath, + ), ), http.post( "/v1/instances/:instance/disks/detach", handler( handlers["instanceDiskDetach"], schema.InstanceDiskDetachParams, - schema.DiskPath - ) + schema.DiskPath, + ), ), http.get( "/v1/instances/:instance/external-ips", handler( handlers["instanceExternalIpList"], schema.InstanceExternalIpListParams, - null - ) + null, + ), ), http.post( "/v1/instances/:instance/external-ips/ephemeral", handler( handlers["instanceEphemeralIpAttach"], schema.InstanceEphemeralIpAttachParams, - schema.EphemeralIpCreate - ) + schema.EphemeralIpCreate, + ), ), http.delete( "/v1/instances/:instance/external-ips/ephemeral", handler( handlers["instanceEphemeralIpDetach"], schema.InstanceEphemeralIpDetachParams, - null - ) + null, + ), ), http.post( "/v1/instances/:instance/migrate", handler( handlers["instanceMigrate"], schema.InstanceMigrateParams, - schema.InstanceMigrate - ) + schema.InstanceMigrate, + ), ), http.post( "/v1/instances/:instance/reboot", - handler(handlers["instanceReboot"], schema.InstanceRebootParams, null) + handler(handlers["instanceReboot"], schema.InstanceRebootParams, null), ), http.get( "/v1/instances/:instance/serial-console", handler( handlers["instanceSerialConsole"], schema.InstanceSerialConsoleParams, - null - ) + null, + ), ), http.get( "/v1/instances/:instance/serial-console/stream", handler( handlers["instanceSerialConsoleStream"], schema.InstanceSerialConsoleStreamParams, - null - ) + null, + ), ), http.get( "/v1/instances/:instance/ssh-public-keys", handler( handlers["instanceSshPublicKeyList"], schema.InstanceSshPublicKeyListParams, - null - ) + null, + ), ), http.post( "/v1/instances/:instance/start", - handler(handlers["instanceStart"], schema.InstanceStartParams, null) + handler(handlers["instanceStart"], schema.InstanceStartParams, null), ), http.post( "/v1/instances/:instance/stop", - handler(handlers["instanceStop"], schema.InstanceStopParams, null) + handler(handlers["instanceStop"], schema.InstanceStopParams, null), ), http.get( "/v1/ip-pools", handler( handlers["projectIpPoolList"], schema.ProjectIpPoolListParams, - null - ) + null, + ), ), http.get( "/v1/ip-pools/:pool", handler( handlers["projectIpPoolView"], schema.ProjectIpPoolViewParams, - null - ) + null, + ), ), http.post( "/v1/login/:siloName/local", handler( handlers["loginLocal"], schema.LoginLocalParams, - schema.UsernamePasswordCredentials - ) + schema.UsernamePasswordCredentials, + ), ), http.post("/v1/logout", handler(handlers["logout"], null, null)), http.get("/v1/me", handler(handlers["currentUserView"], null, null)), @@ -1625,706 +1637,722 @@ export function makeHandlers(handlers: MSWHandlers): HttpHandler[] { handler( handlers["currentUserGroups"], schema.CurrentUserGroupsParams, - null - ) + null, + ), ), http.get( "/v1/me/ssh-keys", handler( handlers["currentUserSshKeyList"], schema.CurrentUserSshKeyListParams, - null - ) + null, + ), ), http.post( "/v1/me/ssh-keys", - handler(handlers["currentUserSshKeyCreate"], null, schema.SshKeyCreate) + handler(handlers["currentUserSshKeyCreate"], null, schema.SshKeyCreate), ), http.get( "/v1/me/ssh-keys/:sshKey", handler( handlers["currentUserSshKeyView"], schema.CurrentUserSshKeyViewParams, - null - ) + null, + ), ), http.delete( "/v1/me/ssh-keys/:sshKey", handler( handlers["currentUserSshKeyDelete"], schema.CurrentUserSshKeyDeleteParams, - null - ) + null, + ), ), http.get( "/v1/metrics/:metricName", - handler(handlers["siloMetric"], schema.SiloMetricParams, null) + handler(handlers["siloMetric"], schema.SiloMetricParams, null), ), http.get( "/v1/network-interfaces", handler( handlers["instanceNetworkInterfaceList"], schema.InstanceNetworkInterfaceListParams, - null - ) + null, + ), ), http.post( "/v1/network-interfaces", handler( handlers["instanceNetworkInterfaceCreate"], schema.InstanceNetworkInterfaceCreateParams, - schema.InstanceNetworkInterfaceCreate - ) + schema.InstanceNetworkInterfaceCreate, + ), ), http.get( "/v1/network-interfaces/:interface", handler( handlers["instanceNetworkInterfaceView"], schema.InstanceNetworkInterfaceViewParams, - null - ) + null, + ), ), http.put( "/v1/network-interfaces/:interface", handler( handlers["instanceNetworkInterfaceUpdate"], schema.InstanceNetworkInterfaceUpdateParams, - schema.InstanceNetworkInterfaceUpdate - ) + schema.InstanceNetworkInterfaceUpdate, + ), ), http.delete( "/v1/network-interfaces/:interface", handler( handlers["instanceNetworkInterfaceDelete"], schema.InstanceNetworkInterfaceDeleteParams, - null - ) + null, + ), ), http.get("/v1/ping", handler(handlers["ping"], null, null)), http.get("/v1/policy", handler(handlers["policyView"], null, null)), http.put( "/v1/policy", - handler(handlers["policyUpdate"], null, schema.SiloRolePolicy) + handler(handlers["policyUpdate"], null, schema.SiloRolePolicy), ), http.get( "/v1/projects", - handler(handlers["projectList"], schema.ProjectListParams, null) + handler(handlers["projectList"], schema.ProjectListParams, null), ), http.post( "/v1/projects", - handler(handlers["projectCreate"], null, schema.ProjectCreate) + handler(handlers["projectCreate"], null, schema.ProjectCreate), ), http.get( "/v1/projects/:project", - handler(handlers["projectView"], schema.ProjectViewParams, null) + handler(handlers["projectView"], schema.ProjectViewParams, null), ), http.put( "/v1/projects/:project", handler( handlers["projectUpdate"], schema.ProjectUpdateParams, - schema.ProjectUpdate - ) + schema.ProjectUpdate, + ), ), http.delete( "/v1/projects/:project", - handler(handlers["projectDelete"], schema.ProjectDeleteParams, null) + handler(handlers["projectDelete"], schema.ProjectDeleteParams, null), ), http.get( "/v1/projects/:project/policy", handler( handlers["projectPolicyView"], schema.ProjectPolicyViewParams, - null - ) + null, + ), ), http.put( "/v1/projects/:project/policy", handler( handlers["projectPolicyUpdate"], schema.ProjectPolicyUpdateParams, - schema.ProjectRolePolicy - ) + schema.ProjectRolePolicy, + ), ), http.get( "/v1/snapshots", - handler(handlers["snapshotList"], schema.SnapshotListParams, null) + handler(handlers["snapshotList"], schema.SnapshotListParams, null), ), http.post( "/v1/snapshots", handler( handlers["snapshotCreate"], schema.SnapshotCreateParams, - schema.SnapshotCreate - ) + schema.SnapshotCreate, + ), ), http.get( "/v1/snapshots/:snapshot", - handler(handlers["snapshotView"], schema.SnapshotViewParams, null) + handler(handlers["snapshotView"], schema.SnapshotViewParams, null), ), http.delete( "/v1/snapshots/:snapshot", - handler(handlers["snapshotDelete"], schema.SnapshotDeleteParams, null) + handler(handlers["snapshotDelete"], schema.SnapshotDeleteParams, null), ), http.get( "/v1/system/hardware/disks", - handler(handlers["physicalDiskList"], schema.PhysicalDiskListParams, null) + handler( + handlers["physicalDiskList"], + schema.PhysicalDiskListParams, + null, + ), ), http.get( "/v1/system/hardware/racks", - handler(handlers["rackList"], schema.RackListParams, null) + handler(handlers["rackList"], schema.RackListParams, null), ), http.get( "/v1/system/hardware/racks/:rackId", - handler(handlers["rackView"], schema.RackViewParams, null) + handler(handlers["rackView"], schema.RackViewParams, null), ), http.get( "/v1/system/hardware/sleds", - handler(handlers["sledList"], schema.SledListParams, null) + handler(handlers["sledList"], schema.SledListParams, null), ), http.post( "/v1/system/hardware/sleds", - handler(handlers["sledAdd"], null, schema.UninitializedSledId) + handler(handlers["sledAdd"], null, schema.UninitializedSledId), ), http.get( "/v1/system/hardware/sleds/:sledId", - handler(handlers["sledView"], schema.SledViewParams, null) + handler(handlers["sledView"], schema.SledViewParams, null), ), http.get( "/v1/system/hardware/sleds/:sledId/disks", handler( handlers["sledPhysicalDiskList"], schema.SledPhysicalDiskListParams, - null - ) + null, + ), ), http.get( "/v1/system/hardware/sleds/:sledId/instances", - handler(handlers["sledInstanceList"], schema.SledInstanceListParams, null) + handler( + handlers["sledInstanceList"], + schema.SledInstanceListParams, + null, + ), ), http.put( "/v1/system/hardware/sleds/:sledId/provision-policy", handler( handlers["sledSetProvisionPolicy"], schema.SledSetProvisionPolicyParams, - schema.SledProvisionPolicyParams - ) + schema.SledProvisionPolicyParams, + ), ), http.get( "/v1/system/hardware/sleds-uninitialized", handler( handlers["sledListUninitialized"], schema.SledListUninitializedParams, - null - ) + null, + ), ), http.get( "/v1/system/hardware/switch-port", handler( handlers["networkingSwitchPortList"], schema.NetworkingSwitchPortListParams, - null - ) + null, + ), ), http.post( "/v1/system/hardware/switch-port/:port/settings", handler( handlers["networkingSwitchPortApplySettings"], schema.NetworkingSwitchPortApplySettingsParams, - schema.SwitchPortApplySettings - ) + schema.SwitchPortApplySettings, + ), ), http.delete( "/v1/system/hardware/switch-port/:port/settings", handler( handlers["networkingSwitchPortClearSettings"], schema.NetworkingSwitchPortClearSettingsParams, - null - ) + null, + ), ), http.get( "/v1/system/hardware/switches", - handler(handlers["switchList"], schema.SwitchListParams, null) + handler(handlers["switchList"], schema.SwitchListParams, null), ), http.get( "/v1/system/hardware/switches/:switchId", - handler(handlers["switchView"], schema.SwitchViewParams, null) + handler(handlers["switchView"], schema.SwitchViewParams, null), ), http.get( "/v1/system/identity-providers", handler( handlers["siloIdentityProviderList"], schema.SiloIdentityProviderListParams, - null - ) + null, + ), ), http.post( "/v1/system/identity-providers/local/users", handler( handlers["localIdpUserCreate"], schema.LocalIdpUserCreateParams, - schema.UserCreate - ) + schema.UserCreate, + ), ), http.delete( "/v1/system/identity-providers/local/users/:userId", handler( handlers["localIdpUserDelete"], schema.LocalIdpUserDeleteParams, - null - ) + null, + ), ), http.post( "/v1/system/identity-providers/local/users/:userId/set-password", handler( handlers["localIdpUserSetPassword"], schema.LocalIdpUserSetPasswordParams, - schema.UserPassword - ) + schema.UserPassword, + ), ), http.post( "/v1/system/identity-providers/saml", handler( handlers["samlIdentityProviderCreate"], schema.SamlIdentityProviderCreateParams, - schema.SamlIdentityProviderCreate - ) + schema.SamlIdentityProviderCreate, + ), ), http.get( "/v1/system/identity-providers/saml/:provider", handler( handlers["samlIdentityProviderView"], schema.SamlIdentityProviderViewParams, - null - ) + null, + ), ), http.get( "/v1/system/ip-pools", - handler(handlers["ipPoolList"], schema.IpPoolListParams, null) + handler(handlers["ipPoolList"], schema.IpPoolListParams, null), ), http.post( "/v1/system/ip-pools", - handler(handlers["ipPoolCreate"], null, schema.IpPoolCreate) + handler(handlers["ipPoolCreate"], null, schema.IpPoolCreate), ), http.get( "/v1/system/ip-pools/:pool", - handler(handlers["ipPoolView"], schema.IpPoolViewParams, null) + handler(handlers["ipPoolView"], schema.IpPoolViewParams, null), ), http.put( "/v1/system/ip-pools/:pool", handler( handlers["ipPoolUpdate"], schema.IpPoolUpdateParams, - schema.IpPoolUpdate - ) + schema.IpPoolUpdate, + ), ), http.delete( "/v1/system/ip-pools/:pool", - handler(handlers["ipPoolDelete"], schema.IpPoolDeleteParams, null) + handler(handlers["ipPoolDelete"], schema.IpPoolDeleteParams, null), ), http.get( "/v1/system/ip-pools/:pool/ranges", - handler(handlers["ipPoolRangeList"], schema.IpPoolRangeListParams, null) + handler(handlers["ipPoolRangeList"], schema.IpPoolRangeListParams, null), ), http.post( "/v1/system/ip-pools/:pool/ranges/add", handler( handlers["ipPoolRangeAdd"], schema.IpPoolRangeAddParams, - schema.IpRange - ) + schema.IpRange, + ), ), http.post( "/v1/system/ip-pools/:pool/ranges/remove", handler( handlers["ipPoolRangeRemove"], schema.IpPoolRangeRemoveParams, - schema.IpRange - ) + schema.IpRange, + ), ), http.get( "/v1/system/ip-pools/:pool/silos", - handler(handlers["ipPoolSiloList"], schema.IpPoolSiloListParams, null) + handler(handlers["ipPoolSiloList"], schema.IpPoolSiloListParams, null), ), http.post( "/v1/system/ip-pools/:pool/silos", handler( handlers["ipPoolSiloLink"], schema.IpPoolSiloLinkParams, - schema.IpPoolLinkSilo - ) + schema.IpPoolLinkSilo, + ), ), http.put( "/v1/system/ip-pools/:pool/silos/:silo", handler( handlers["ipPoolSiloUpdate"], schema.IpPoolSiloUpdateParams, - schema.IpPoolSiloUpdate - ) + schema.IpPoolSiloUpdate, + ), ), http.delete( "/v1/system/ip-pools/:pool/silos/:silo", - handler(handlers["ipPoolSiloUnlink"], schema.IpPoolSiloUnlinkParams, null) + handler( + handlers["ipPoolSiloUnlink"], + schema.IpPoolSiloUnlinkParams, + null, + ), ), http.get( "/v1/system/ip-pools-service", - handler(handlers["ipPoolServiceView"], null, null) + handler(handlers["ipPoolServiceView"], null, null), ), http.get( "/v1/system/ip-pools-service/ranges", handler( handlers["ipPoolServiceRangeList"], schema.IpPoolServiceRangeListParams, - null - ) + null, + ), ), http.post( "/v1/system/ip-pools-service/ranges/add", - handler(handlers["ipPoolServiceRangeAdd"], null, schema.IpRange) + handler(handlers["ipPoolServiceRangeAdd"], null, schema.IpRange), ), http.post( "/v1/system/ip-pools-service/ranges/remove", - handler(handlers["ipPoolServiceRangeRemove"], null, schema.IpRange) + handler(handlers["ipPoolServiceRangeRemove"], null, schema.IpRange), ), http.get( "/v1/system/metrics/:metricName", - handler(handlers["systemMetric"], schema.SystemMetricParams, null) + handler(handlers["systemMetric"], schema.SystemMetricParams, null), ), http.get( "/v1/system/networking/address-lot", handler( handlers["networkingAddressLotList"], schema.NetworkingAddressLotListParams, - null - ) + null, + ), ), http.post( "/v1/system/networking/address-lot", handler( handlers["networkingAddressLotCreate"], null, - schema.AddressLotCreate - ) + schema.AddressLotCreate, + ), ), http.delete( "/v1/system/networking/address-lot/:addressLot", handler( handlers["networkingAddressLotDelete"], schema.NetworkingAddressLotDeleteParams, - null - ) + null, + ), ), http.get( "/v1/system/networking/address-lot/:addressLot/blocks", handler( handlers["networkingAddressLotBlockList"], schema.NetworkingAddressLotBlockListParams, - null - ) + null, + ), ), http.post( "/v1/system/networking/bfd-disable", - handler(handlers["networkingBfdDisable"], null, schema.BfdSessionDisable) + handler(handlers["networkingBfdDisable"], null, schema.BfdSessionDisable), ), http.post( "/v1/system/networking/bfd-enable", - handler(handlers["networkingBfdEnable"], null, schema.BfdSessionEnable) + handler(handlers["networkingBfdEnable"], null, schema.BfdSessionEnable), ), http.get( "/v1/system/networking/bfd-status", - handler(handlers["networkingBfdStatus"], null, null) + handler(handlers["networkingBfdStatus"], null, null), ), http.get( "/v1/system/networking/bgp", handler( handlers["networkingBgpConfigList"], schema.NetworkingBgpConfigListParams, - null - ) + null, + ), ), http.post( "/v1/system/networking/bgp", handler( handlers["networkingBgpConfigCreate"], null, - schema.BgpConfigCreate - ) + schema.BgpConfigCreate, + ), ), http.delete( "/v1/system/networking/bgp", handler( handlers["networkingBgpConfigDelete"], schema.NetworkingBgpConfigDeleteParams, - null - ) + null, + ), ), http.get( "/v1/system/networking/bgp-announce", handler( handlers["networkingBgpAnnounceSetList"], schema.NetworkingBgpAnnounceSetListParams, - null - ) + null, + ), ), http.post( "/v1/system/networking/bgp-announce", handler( handlers["networkingBgpAnnounceSetCreate"], null, - schema.BgpAnnounceSetCreate - ) + schema.BgpAnnounceSetCreate, + ), ), http.delete( "/v1/system/networking/bgp-announce", handler( handlers["networkingBgpAnnounceSetDelete"], schema.NetworkingBgpAnnounceSetDeleteParams, - null - ) + null, + ), ), http.get( "/v1/system/networking/bgp-routes-ipv4", handler( handlers["networkingBgpImportedRoutesIpv4"], schema.NetworkingBgpImportedRoutesIpv4Params, - null - ) + null, + ), ), http.get( "/v1/system/networking/bgp-status", - handler(handlers["networkingBgpStatus"], null, null) + handler(handlers["networkingBgpStatus"], null, null), ), http.get( "/v1/system/networking/loopback-address", handler( handlers["networkingLoopbackAddressList"], schema.NetworkingLoopbackAddressListParams, - null - ) + null, + ), ), http.post( "/v1/system/networking/loopback-address", handler( handlers["networkingLoopbackAddressCreate"], null, - schema.LoopbackAddressCreate - ) + schema.LoopbackAddressCreate, + ), ), http.delete( "/v1/system/networking/loopback-address/:rackId/:switchLocation/:address/:subnetMask", handler( handlers["networkingLoopbackAddressDelete"], schema.NetworkingLoopbackAddressDeleteParams, - null - ) + null, + ), ), http.get( "/v1/system/networking/switch-port-settings", handler( handlers["networkingSwitchPortSettingsList"], schema.NetworkingSwitchPortSettingsListParams, - null - ) + null, + ), ), http.post( "/v1/system/networking/switch-port-settings", handler( handlers["networkingSwitchPortSettingsCreate"], null, - schema.SwitchPortSettingsCreate - ) + schema.SwitchPortSettingsCreate, + ), ), http.delete( "/v1/system/networking/switch-port-settings", handler( handlers["networkingSwitchPortSettingsDelete"], schema.NetworkingSwitchPortSettingsDeleteParams, - null - ) + null, + ), ), http.get( "/v1/system/networking/switch-port-settings/:port", handler( handlers["networkingSwitchPortSettingsView"], schema.NetworkingSwitchPortSettingsViewParams, - null - ) + null, + ), ), http.get( "/v1/system/policy", - handler(handlers["systemPolicyView"], null, null) + handler(handlers["systemPolicyView"], null, null), ), http.put( "/v1/system/policy", - handler(handlers["systemPolicyUpdate"], null, schema.FleetRolePolicy) + handler(handlers["systemPolicyUpdate"], null, schema.FleetRolePolicy), ), http.get( "/v1/system/roles", - handler(handlers["roleList"], schema.RoleListParams, null) + handler(handlers["roleList"], schema.RoleListParams, null), ), http.get( "/v1/system/roles/:roleName", - handler(handlers["roleView"], schema.RoleViewParams, null) + handler(handlers["roleView"], schema.RoleViewParams, null), ), http.get( "/v1/system/silo-quotas", - handler(handlers["systemQuotasList"], schema.SystemQuotasListParams, null) + handler( + handlers["systemQuotasList"], + schema.SystemQuotasListParams, + null, + ), ), http.get( "/v1/system/silos", - handler(handlers["siloList"], schema.SiloListParams, null) + handler(handlers["siloList"], schema.SiloListParams, null), ), http.post( "/v1/system/silos", - handler(handlers["siloCreate"], null, schema.SiloCreate) + handler(handlers["siloCreate"], null, schema.SiloCreate), ), http.get( "/v1/system/silos/:silo", - handler(handlers["siloView"], schema.SiloViewParams, null) + handler(handlers["siloView"], schema.SiloViewParams, null), ), http.delete( "/v1/system/silos/:silo", - handler(handlers["siloDelete"], schema.SiloDeleteParams, null) + handler(handlers["siloDelete"], schema.SiloDeleteParams, null), ), http.get( "/v1/system/silos/:silo/ip-pools", - handler(handlers["siloIpPoolList"], schema.SiloIpPoolListParams, null) + handler(handlers["siloIpPoolList"], schema.SiloIpPoolListParams, null), ), http.get( "/v1/system/silos/:silo/policy", - handler(handlers["siloPolicyView"], schema.SiloPolicyViewParams, null) + handler(handlers["siloPolicyView"], schema.SiloPolicyViewParams, null), ), http.put( "/v1/system/silos/:silo/policy", handler( handlers["siloPolicyUpdate"], schema.SiloPolicyUpdateParams, - schema.SiloRolePolicy - ) + schema.SiloRolePolicy, + ), ), http.get( "/v1/system/silos/:silo/quotas", - handler(handlers["siloQuotasView"], schema.SiloQuotasViewParams, null) + handler(handlers["siloQuotasView"], schema.SiloQuotasViewParams, null), ), http.put( "/v1/system/silos/:silo/quotas", handler( handlers["siloQuotasUpdate"], schema.SiloQuotasUpdateParams, - schema.SiloQuotasUpdate - ) + schema.SiloQuotasUpdate, + ), ), http.get( "/v1/system/users", - handler(handlers["siloUserList"], schema.SiloUserListParams, null) + handler(handlers["siloUserList"], schema.SiloUserListParams, null), ), http.get( "/v1/system/users/:userId", - handler(handlers["siloUserView"], schema.SiloUserViewParams, null) + handler(handlers["siloUserView"], schema.SiloUserViewParams, null), ), http.get( "/v1/system/users-builtin", - handler(handlers["userBuiltinList"], schema.UserBuiltinListParams, null) + handler(handlers["userBuiltinList"], schema.UserBuiltinListParams, null), ), http.get( "/v1/system/users-builtin/:user", - handler(handlers["userBuiltinView"], schema.UserBuiltinViewParams, null) + handler(handlers["userBuiltinView"], schema.UserBuiltinViewParams, null), ), http.get( "/v1/system/utilization/silos", handler( handlers["siloUtilizationList"], schema.SiloUtilizationListParams, - null - ) + null, + ), ), http.get( "/v1/system/utilization/silos/:silo", handler( handlers["siloUtilizationView"], schema.SiloUtilizationViewParams, - null - ) + null, + ), ), http.get( "/v1/users", - handler(handlers["userList"], schema.UserListParams, null) + handler(handlers["userList"], schema.UserListParams, null), ), http.get( "/v1/utilization", - handler(handlers["utilizationView"], null, null) + handler(handlers["utilizationView"], null, null), ), http.get( "/v1/vpc-firewall-rules", handler( handlers["vpcFirewallRulesView"], schema.VpcFirewallRulesViewParams, - null - ) + null, + ), ), http.put( "/v1/vpc-firewall-rules", handler( handlers["vpcFirewallRulesUpdate"], schema.VpcFirewallRulesUpdateParams, - schema.VpcFirewallRuleUpdateParams - ) + schema.VpcFirewallRuleUpdateParams, + ), ), http.get( "/v1/vpc-subnets", - handler(handlers["vpcSubnetList"], schema.VpcSubnetListParams, null) + handler(handlers["vpcSubnetList"], schema.VpcSubnetListParams, null), ), http.post( "/v1/vpc-subnets", handler( handlers["vpcSubnetCreate"], schema.VpcSubnetCreateParams, - schema.VpcSubnetCreate - ) + schema.VpcSubnetCreate, + ), ), http.get( "/v1/vpc-subnets/:subnet", - handler(handlers["vpcSubnetView"], schema.VpcSubnetViewParams, null) + handler(handlers["vpcSubnetView"], schema.VpcSubnetViewParams, null), ), http.put( "/v1/vpc-subnets/:subnet", handler( handlers["vpcSubnetUpdate"], schema.VpcSubnetUpdateParams, - schema.VpcSubnetUpdate - ) + schema.VpcSubnetUpdate, + ), ), http.delete( "/v1/vpc-subnets/:subnet", - handler(handlers["vpcSubnetDelete"], schema.VpcSubnetDeleteParams, null) + handler(handlers["vpcSubnetDelete"], schema.VpcSubnetDeleteParams, null), ), http.get( "/v1/vpc-subnets/:subnet/network-interfaces", handler( handlers["vpcSubnetListNetworkInterfaces"], schema.VpcSubnetListNetworkInterfacesParams, - null - ) + null, + ), ), http.get( "/v1/vpcs", - handler(handlers["vpcList"], schema.VpcListParams, null) + handler(handlers["vpcList"], schema.VpcListParams, null), ), http.post( "/v1/vpcs", - handler(handlers["vpcCreate"], schema.VpcCreateParams, schema.VpcCreate) + handler(handlers["vpcCreate"], schema.VpcCreateParams, schema.VpcCreate), ), http.get( "/v1/vpcs/:vpc", - handler(handlers["vpcView"], schema.VpcViewParams, null) + handler(handlers["vpcView"], schema.VpcViewParams, null), ), http.put( "/v1/vpcs/:vpc", - handler(handlers["vpcUpdate"], schema.VpcUpdateParams, schema.VpcUpdate) + handler(handlers["vpcUpdate"], schema.VpcUpdateParams, schema.VpcUpdate), ), http.delete( "/v1/vpcs/:vpc", - handler(handlers["vpcDelete"], schema.VpcDeleteParams, null) + handler(handlers["vpcDelete"], schema.VpcDeleteParams, null), ), ]; } diff --git a/client/type-test.ts b/oxide-api/src/type-test.ts similarity index 100% rename from client/type-test.ts rename to oxide-api/src/type-test.ts diff --git a/static/util.ts b/oxide-api/src/util.ts similarity index 99% rename from static/util.ts rename to oxide-api/src/util.ts index 21cf097..a4438bd 100644 --- a/static/util.ts +++ b/oxide-api/src/util.ts @@ -31,7 +31,7 @@ export const isObjectOrArray = (o: unknown) => export const mapObj = ( kf: (k: string) => string, - vf: (k: string | undefined, v: unknown) => unknown = (k, v) => v + vf: (k: string | undefined, v: unknown) => unknown = (k, v) => v, ) => (o: unknown): unknown => { if (!isObjectOrArray(o)) return o; diff --git a/client/validate.ts b/oxide-api/src/validate.ts similarity index 94% rename from client/validate.ts rename to oxide-api/src/validate.ts index e832055..bb4ad1f 100644 --- a/client/validate.ts +++ b/oxide-api/src/validate.ts @@ -24,7 +24,7 @@ const IntEnum = <T extends readonly number[]>(values: T) => /** Helper to ensure booleans provided as strings end up with the correct value */ const SafeBoolean = z.preprocess( (v) => (v === "false" ? false : v), - z.coerce.boolean() + z.coerce.boolean(), ); /** @@ -37,8 +37,8 @@ export const Ipv4Net = z.preprocess( z .string() .regex( - /^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\/([0-9]|1[0-9]|2[0-9]|3[0-2])$/ - ) + /^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\/([0-9]|1[0-9]|2[0-9]|3[0-2])$/, + ), ); /** @@ -51,13 +51,13 @@ export const Ipv6Net = z.preprocess( z .string() .regex( - /^([fF][dD])[0-9a-fA-F]{2}:(([0-9a-fA-F]{1,4}:){6}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,6}:)([0-9a-fA-F]{1,4})?\/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8])$/ - ) + /^([fF][dD])[0-9a-fA-F]{2}:(([0-9a-fA-F]{1,4}:){6}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,6}:)([0-9a-fA-F]{1,4})?\/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8])$/, + ), ); export const IpNet = z.preprocess( processResponseBody, - z.union([Ipv4Net, Ipv6Net]) + z.union([Ipv4Net, Ipv6Net]), ); /** @@ -72,13 +72,13 @@ export const Name = z.preprocess( .min(1) .max(63) .regex( - /^(?![0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$)^[a-z]([a-zA-Z0-9-]*[a-zA-Z0-9]+)?$/ - ) + /^(?![0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$)^[a-z]([a-zA-Z0-9-]*[a-zA-Z0-9]+)?$/, + ), ); export const NameOrId = z.preprocess( processResponseBody, - z.union([z.string().uuid(), Name]) + z.union([z.string().uuid(), Name]), ); /** @@ -86,7 +86,7 @@ export const NameOrId = z.preprocess( */ export const Address = z.preprocess( processResponseBody, - z.object({ address: IpNet, addressLot: NameOrId }) + z.object({ address: IpNet, addressLot: NameOrId }), ); /** @@ -94,7 +94,7 @@ export const Address = z.preprocess( */ export const AddressConfig = z.preprocess( processResponseBody, - z.object({ addresses: Address.array() }) + z.object({ addresses: Address.array() }), ); /** @@ -102,7 +102,7 @@ export const AddressConfig = z.preprocess( */ export const AddressLotKind = z.preprocess( processResponseBody, - z.enum(["infra", "pool"]) + z.enum(["infra", "pool"]), ); /** @@ -117,7 +117,7 @@ export const AddressLot = z.preprocess( name: Name, timeCreated: z.coerce.date(), timeModified: z.coerce.date(), - }) + }), ); /** @@ -129,7 +129,7 @@ export const AddressLotBlock = z.preprocess( firstAddress: z.string().ip(), id: z.string().uuid(), lastAddress: z.string().ip(), - }) + }), ); /** @@ -137,7 +137,7 @@ export const AddressLotBlock = z.preprocess( */ export const AddressLotBlockCreate = z.preprocess( processResponseBody, - z.object({ firstAddress: z.string().ip(), lastAddress: z.string().ip() }) + z.object({ firstAddress: z.string().ip(), lastAddress: z.string().ip() }), ); /** @@ -145,7 +145,7 @@ export const AddressLotBlockCreate = z.preprocess( */ export const AddressLotBlockResultsPage = z.preprocess( processResponseBody, - z.object({ items: AddressLotBlock.array(), nextPage: z.string().optional() }) + z.object({ items: AddressLotBlock.array(), nextPage: z.string().optional() }), ); /** @@ -158,7 +158,7 @@ export const AddressLotCreate = z.preprocess( description: z.string(), kind: AddressLotKind, name: Name, - }) + }), ); /** @@ -166,7 +166,7 @@ export const AddressLotCreate = z.preprocess( */ export const AddressLotCreateResponse = z.preprocess( processResponseBody, - z.object({ blocks: AddressLotBlock.array(), lot: AddressLot }) + z.object({ blocks: AddressLotBlock.array(), lot: AddressLot }), ); /** @@ -174,7 +174,7 @@ export const AddressLotCreateResponse = z.preprocess( */ export const AddressLotResultsPage = z.preprocess( processResponseBody, - z.object({ items: AddressLot.array(), nextPage: z.string().optional() }) + z.object({ items: AddressLot.array(), nextPage: z.string().optional() }), ); /** @@ -182,12 +182,12 @@ export const AddressLotResultsPage = z.preprocess( */ export const Baseboard = z.preprocess( processResponseBody, - z.object({ part: z.string(), revision: z.number(), serial: z.string() }) + z.object({ part: z.string(), revision: z.number(), serial: z.string() }), ); export const BfdMode = z.preprocess( processResponseBody, - z.enum(["single_hop", "multi_hop"]) + z.enum(["single_hop", "multi_hop"]), ); /** @@ -195,7 +195,7 @@ export const BfdMode = z.preprocess( */ export const BfdSessionDisable = z.preprocess( processResponseBody, - z.object({ remote: z.string().ip(), switch: Name }) + z.object({ remote: z.string().ip(), switch: Name }), ); /** @@ -210,12 +210,12 @@ export const BfdSessionEnable = z.preprocess( remote: z.string().ip(), requiredRx: z.number().min(0), switch: Name, - }) + }), ); export const BfdState = z.preprocess( processResponseBody, - z.enum(["admin_down", "down", "init", "up"]) + z.enum(["admin_down", "down", "init", "up"]), ); export const BfdStatus = z.preprocess( @@ -228,7 +228,7 @@ export const BfdStatus = z.preprocess( requiredRx: z.number().min(0), state: BfdState, switch: Name, - }) + }), ); /** @@ -242,7 +242,7 @@ export const BgpAnnounceSet = z.preprocess( name: Name, timeCreated: z.coerce.date(), timeModified: z.coerce.date(), - }) + }), ); /** @@ -250,7 +250,7 @@ export const BgpAnnounceSet = z.preprocess( */ export const BgpAnnouncementCreate = z.preprocess( processResponseBody, - z.object({ addressLotBlock: NameOrId, network: IpNet }) + z.object({ addressLotBlock: NameOrId, network: IpNet }), ); /** @@ -262,7 +262,7 @@ export const BgpAnnounceSetCreate = z.preprocess( announcement: BgpAnnouncementCreate.array(), description: z.string(), name: Name, - }) + }), ); /** @@ -274,7 +274,7 @@ export const BgpAnnouncement = z.preprocess( addressLotBlockId: z.string().uuid(), announceSetId: z.string().uuid(), network: IpNet, - }) + }), ); /** @@ -290,7 +290,7 @@ export const BgpConfig = z.preprocess( timeCreated: z.coerce.date(), timeModified: z.coerce.date(), vrf: z.string().optional(), - }) + }), ); /** @@ -304,7 +304,7 @@ export const BgpConfigCreate = z.preprocess( description: z.string(), name: Name, vrf: Name.optional(), - }) + }), ); /** @@ -312,7 +312,7 @@ export const BgpConfigCreate = z.preprocess( */ export const BgpConfigResultsPage = z.preprocess( processResponseBody, - z.object({ items: BgpConfig.array(), nextPage: z.string().optional() }) + z.object({ items: BgpConfig.array(), nextPage: z.string().optional() }), ); /** @@ -320,7 +320,7 @@ export const BgpConfigResultsPage = z.preprocess( */ export const SwitchLocation = z.preprocess( processResponseBody, - z.enum(["switch0", "switch1"]) + z.enum(["switch0", "switch1"]), ); /** @@ -333,7 +333,7 @@ export const BgpImportedRouteIpv4 = z.preprocess( nexthop: z.string().ip({ version: "v4" }), prefix: Ipv4Net, switch: SwitchLocation, - }) + }), ); /** @@ -351,12 +351,12 @@ export const BgpPeer = z.preprocess( idleHoldTime: z.number().min(0).max(4294967295), interfaceName: z.string(), keepalive: z.number().min(0).max(4294967295), - }) + }), ); export const BgpPeerConfig = z.preprocess( processResponseBody, - z.object({ peers: BgpPeer.array() }) + z.object({ peers: BgpPeer.array() }), ); /** @@ -372,7 +372,7 @@ export const BgpPeerState = z.preprocess( "open_confirm", "session_setup", "established", - ]) + ]), ); /** @@ -387,7 +387,7 @@ export const BgpPeerStatus = z.preprocess( state: BgpPeerState, stateDurationMillis: z.number().min(0), switch: SwitchLocation, - }) + }), ); /** @@ -401,7 +401,7 @@ export const BinRangedouble = z.preprocess( z.object({ end: z.number(), type: z.enum(["range_to"]) }), z.object({ end: z.number(), start: z.number(), type: z.enum(["range"]) }), z.object({ start: z.number(), type: z.enum(["range_from"]) }), - ]) + ]), ); /** @@ -415,7 +415,7 @@ export const BinRangefloat = z.preprocess( z.object({ end: z.number(), type: z.enum(["range_to"]) }), z.object({ end: z.number(), start: z.number(), type: z.enum(["range"]) }), z.object({ start: z.number(), type: z.enum(["range_from"]) }), - ]) + ]), ); /** @@ -439,7 +439,7 @@ export const BinRangeint16 = z.preprocess( start: z.number().min(-32767).max(32767), type: z.enum(["range_from"]), }), - ]) + ]), ); /** @@ -463,7 +463,7 @@ export const BinRangeint32 = z.preprocess( start: z.number().min(-2147483647).max(2147483647), type: z.enum(["range_from"]), }), - ]) + ]), ); /** @@ -477,7 +477,7 @@ export const BinRangeint64 = z.preprocess( z.object({ end: z.number(), type: z.enum(["range_to"]) }), z.object({ end: z.number(), start: z.number(), type: z.enum(["range"]) }), z.object({ start: z.number(), type: z.enum(["range_from"]) }), - ]) + ]), ); /** @@ -501,7 +501,7 @@ export const BinRangeint8 = z.preprocess( start: z.number().min(-127).max(127), type: z.enum(["range_from"]), }), - ]) + ]), ); /** @@ -522,7 +522,7 @@ export const BinRangeuint16 = z.preprocess( start: z.number().min(0).max(65535), type: z.enum(["range_from"]), }), - ]) + ]), ); /** @@ -546,7 +546,7 @@ export const BinRangeuint32 = z.preprocess( start: z.number().min(0).max(4294967295), type: z.enum(["range_from"]), }), - ]) + ]), ); /** @@ -564,7 +564,7 @@ export const BinRangeuint64 = z.preprocess( type: z.enum(["range"]), }), z.object({ start: z.number().min(0), type: z.enum(["range_from"]) }), - ]) + ]), ); /** @@ -585,7 +585,7 @@ export const BinRangeuint8 = z.preprocess( start: z.number().min(0).max(255), type: z.enum(["range_from"]), }), - ]) + ]), ); /** @@ -593,7 +593,7 @@ export const BinRangeuint8 = z.preprocess( */ export const Bindouble = z.preprocess( processResponseBody, - z.object({ count: z.number().min(0), range: BinRangedouble }) + z.object({ count: z.number().min(0), range: BinRangedouble }), ); /** @@ -601,7 +601,7 @@ export const Bindouble = z.preprocess( */ export const Binfloat = z.preprocess( processResponseBody, - z.object({ count: z.number().min(0), range: BinRangefloat }) + z.object({ count: z.number().min(0), range: BinRangefloat }), ); /** @@ -609,7 +609,7 @@ export const Binfloat = z.preprocess( */ export const Binint16 = z.preprocess( processResponseBody, - z.object({ count: z.number().min(0), range: BinRangeint16 }) + z.object({ count: z.number().min(0), range: BinRangeint16 }), ); /** @@ -617,7 +617,7 @@ export const Binint16 = z.preprocess( */ export const Binint32 = z.preprocess( processResponseBody, - z.object({ count: z.number().min(0), range: BinRangeint32 }) + z.object({ count: z.number().min(0), range: BinRangeint32 }), ); /** @@ -625,7 +625,7 @@ export const Binint32 = z.preprocess( */ export const Binint64 = z.preprocess( processResponseBody, - z.object({ count: z.number().min(0), range: BinRangeint64 }) + z.object({ count: z.number().min(0), range: BinRangeint64 }), ); /** @@ -633,7 +633,7 @@ export const Binint64 = z.preprocess( */ export const Binint8 = z.preprocess( processResponseBody, - z.object({ count: z.number().min(0), range: BinRangeint8 }) + z.object({ count: z.number().min(0), range: BinRangeint8 }), ); /** @@ -641,7 +641,7 @@ export const Binint8 = z.preprocess( */ export const Binuint16 = z.preprocess( processResponseBody, - z.object({ count: z.number().min(0), range: BinRangeuint16 }) + z.object({ count: z.number().min(0), range: BinRangeuint16 }), ); /** @@ -649,7 +649,7 @@ export const Binuint16 = z.preprocess( */ export const Binuint32 = z.preprocess( processResponseBody, - z.object({ count: z.number().min(0), range: BinRangeuint32 }) + z.object({ count: z.number().min(0), range: BinRangeuint32 }), ); /** @@ -657,7 +657,7 @@ export const Binuint32 = z.preprocess( */ export const Binuint64 = z.preprocess( processResponseBody, - z.object({ count: z.number().min(0), range: BinRangeuint64 }) + z.object({ count: z.number().min(0), range: BinRangeuint64 }), ); /** @@ -665,7 +665,7 @@ export const Binuint64 = z.preprocess( */ export const Binuint8 = z.preprocess( processResponseBody, - z.object({ count: z.number().min(0), range: BinRangeuint8 }) + z.object({ count: z.number().min(0), range: BinRangeuint8 }), ); /** @@ -673,7 +673,7 @@ export const Binuint8 = z.preprocess( */ export const BlockSize = z.preprocess( processResponseBody, - IntEnum([512, 2048, 4096] as const) + IntEnum([512, 2048, 4096] as const), ); /** @@ -686,7 +686,7 @@ export const ByteCount = z.preprocess(processResponseBody, z.number().min(0)); */ export const ServiceUsingCertificate = z.preprocess( processResponseBody, - z.enum(["external_api"]) + z.enum(["external_api"]), ); /** @@ -701,7 +701,7 @@ export const Certificate = z.preprocess( service: ServiceUsingCertificate, timeCreated: z.coerce.date(), timeModified: z.coerce.date(), - }) + }), ); /** @@ -715,7 +715,7 @@ export const CertificateCreate = z.preprocess( key: z.string(), name: Name, service: ServiceUsingCertificate, - }) + }), ); /** @@ -723,7 +723,7 @@ export const CertificateCreate = z.preprocess( */ export const CertificateResultsPage = z.preprocess( processResponseBody, - z.object({ items: Certificate.array(), nextPage: z.string().optional() }) + z.object({ items: Certificate.array(), nextPage: z.string().optional() }), ); /** @@ -731,7 +731,7 @@ export const CertificateResultsPage = z.preprocess( */ export const Cumulativedouble = z.preprocess( processResponseBody, - z.object({ startTime: z.coerce.date(), value: z.number() }) + z.object({ startTime: z.coerce.date(), value: z.number() }), ); /** @@ -739,7 +739,7 @@ export const Cumulativedouble = z.preprocess( */ export const Cumulativefloat = z.preprocess( processResponseBody, - z.object({ startTime: z.coerce.date(), value: z.number() }) + z.object({ startTime: z.coerce.date(), value: z.number() }), ); /** @@ -747,7 +747,7 @@ export const Cumulativefloat = z.preprocess( */ export const Cumulativeint64 = z.preprocess( processResponseBody, - z.object({ startTime: z.coerce.date(), value: z.number() }) + z.object({ startTime: z.coerce.date(), value: z.number() }), ); /** @@ -755,7 +755,7 @@ export const Cumulativeint64 = z.preprocess( */ export const Cumulativeuint64 = z.preprocess( processResponseBody, - z.object({ startTime: z.coerce.date(), value: z.number().min(0) }) + z.object({ startTime: z.coerce.date(), value: z.number().min(0) }), ); /** @@ -768,7 +768,7 @@ export const CurrentUser = z.preprocess( id: z.string().uuid(), siloId: z.string().uuid(), siloName: Name, - }) + }), ); /** @@ -784,7 +784,7 @@ export const Histogramint8 = z.preprocess( bins: Binint8.array(), nSamples: z.number().min(0), startTime: z.coerce.date(), - }) + }), ); /** @@ -800,7 +800,7 @@ export const Histogramuint8 = z.preprocess( bins: Binuint8.array(), nSamples: z.number().min(0), startTime: z.coerce.date(), - }) + }), ); /** @@ -816,7 +816,7 @@ export const Histogramint16 = z.preprocess( bins: Binint16.array(), nSamples: z.number().min(0), startTime: z.coerce.date(), - }) + }), ); /** @@ -832,7 +832,7 @@ export const Histogramuint16 = z.preprocess( bins: Binuint16.array(), nSamples: z.number().min(0), startTime: z.coerce.date(), - }) + }), ); /** @@ -848,7 +848,7 @@ export const Histogramint32 = z.preprocess( bins: Binint32.array(), nSamples: z.number().min(0), startTime: z.coerce.date(), - }) + }), ); /** @@ -864,7 +864,7 @@ export const Histogramuint32 = z.preprocess( bins: Binuint32.array(), nSamples: z.number().min(0), startTime: z.coerce.date(), - }) + }), ); /** @@ -880,7 +880,7 @@ export const Histogramint64 = z.preprocess( bins: Binint64.array(), nSamples: z.number().min(0), startTime: z.coerce.date(), - }) + }), ); /** @@ -896,7 +896,7 @@ export const Histogramuint64 = z.preprocess( bins: Binuint64.array(), nSamples: z.number().min(0), startTime: z.coerce.date(), - }) + }), ); /** @@ -912,7 +912,7 @@ export const Histogramfloat = z.preprocess( bins: Binfloat.array(), nSamples: z.number().min(0), startTime: z.coerce.date(), - }) + }), ); /** @@ -928,7 +928,7 @@ export const Histogramdouble = z.preprocess( bins: Bindouble.array(), nSamples: z.number().min(0), startTime: z.coerce.date(), - }) + }), ); /** @@ -964,12 +964,12 @@ export const DatumType = z.preprocess( "histogram_u64", "histogram_f32", "histogram_f64", - ]) + ]), ); export const MissingDatum = z.preprocess( processResponseBody, - z.object({ datumType: DatumType, startTime: z.coerce.date().optional() }) + z.object({ datumType: DatumType, startTime: z.coerce.date().optional() }), ); /** @@ -1018,12 +1018,12 @@ export const Datum = z.preprocess( z.object({ datum: Histogramfloat, type: z.enum(["histogram_f32"]) }), z.object({ datum: Histogramdouble, type: z.enum(["histogram_f64"]) }), z.object({ datum: MissingDatum, type: z.enum(["missing"]) }), - ]) + ]), ); export const DerEncodedKeyPair = z.preprocess( processResponseBody, - z.object({ privateKey: z.string(), publicCert: z.string() }) + z.object({ privateKey: z.string(), publicCert: z.string() }), ); export const DeviceAccessTokenRequest = z.preprocess( @@ -1032,22 +1032,22 @@ export const DeviceAccessTokenRequest = z.preprocess( clientId: z.string().uuid(), deviceCode: z.string(), grantType: z.string(), - }) + }), ); export const DeviceAuthRequest = z.preprocess( processResponseBody, - z.object({ clientId: z.string().uuid() }) + z.object({ clientId: z.string().uuid() }), ); export const DeviceAuthVerify = z.preprocess( processResponseBody, - z.object({ userCode: z.string() }) + z.object({ userCode: z.string() }), ); export const Digest = z.preprocess( processResponseBody, - z.object({ type: z.enum(["sha256"]), value: z.string() }) + z.object({ type: z.enum(["sha256"]), value: z.string() }), ); /** @@ -1068,7 +1068,7 @@ export const DiskState = z.preprocess( z.object({ instance: z.string().uuid(), state: z.enum(["detaching"]) }), z.object({ state: z.enum(["destroyed"]) }), z.object({ state: z.enum(["faulted"]) }), - ]) + ]), ); /** @@ -1089,7 +1089,7 @@ export const Disk = z.preprocess( state: DiskState, timeCreated: z.coerce.date(), timeModified: z.coerce.date(), - }) + }), ); /** @@ -1102,7 +1102,7 @@ export const DiskSource = z.preprocess( z.object({ snapshotId: z.string().uuid(), type: z.enum(["snapshot"]) }), z.object({ imageId: z.string().uuid(), type: z.enum(["image"]) }), z.object({ blockSize: BlockSize, type: z.enum(["importing_blocks"]) }), - ]) + ]), ); /** @@ -1115,12 +1115,12 @@ export const DiskCreate = z.preprocess( diskSource: DiskSource, name: Name, size: ByteCount, - }) + }), ); export const DiskPath = z.preprocess( processResponseBody, - z.object({ disk: NameOrId }) + z.object({ disk: NameOrId }), ); /** @@ -1128,7 +1128,7 @@ export const DiskPath = z.preprocess( */ export const DiskResultsPage = z.preprocess( processResponseBody, - z.object({ items: Disk.array(), nextPage: z.string().optional() }) + z.object({ items: Disk.array(), nextPage: z.string().optional() }), ); /** @@ -1136,7 +1136,7 @@ export const DiskResultsPage = z.preprocess( */ export const EphemeralIpCreate = z.preprocess( processResponseBody, - z.object({ pool: NameOrId.optional() }) + z.object({ pool: NameOrId.optional() }), ); /** @@ -1148,7 +1148,7 @@ export const Error = z.preprocess( errorCode: z.string().optional(), message: z.string(), requestId: z.string(), - }) + }), ); export const ExternalIp = z.preprocess( @@ -1166,7 +1166,7 @@ export const ExternalIp = z.preprocess( timeCreated: z.coerce.date(), timeModified: z.coerce.date(), }), - ]) + ]), ); /** @@ -1177,7 +1177,7 @@ export const ExternalIpCreate = z.preprocess( z.union([ z.object({ pool: NameOrId.optional(), type: z.enum(["ephemeral"]) }), z.object({ floatingIp: NameOrId, type: z.enum(["floating"]) }), - ]) + ]), ); /** @@ -1185,7 +1185,7 @@ export const ExternalIpCreate = z.preprocess( */ export const ExternalIpResultsPage = z.preprocess( processResponseBody, - z.object({ items: ExternalIp.array(), nextPage: z.string().optional() }) + z.object({ items: ExternalIp.array(), nextPage: z.string().optional() }), ); /** @@ -1193,12 +1193,12 @@ export const ExternalIpResultsPage = z.preprocess( */ export const FinalizeDisk = z.preprocess( processResponseBody, - z.object({ snapshotName: Name.optional() }) + z.object({ snapshotName: Name.optional() }), ); export const FleetRole = z.preprocess( processResponseBody, - z.enum(["admin", "collaborator", "viewer"]) + z.enum(["admin", "collaborator", "viewer"]), ); /** @@ -1206,7 +1206,7 @@ export const FleetRole = z.preprocess( */ export const IdentityType = z.preprocess( processResponseBody, - z.enum(["silo_user", "silo_group"]) + z.enum(["silo_user", "silo_group"]), ); /** @@ -1220,7 +1220,7 @@ export const FleetRoleRoleAssignment = z.preprocess( identityId: z.string().uuid(), identityType: IdentityType, roleName: FleetRole, - }) + }), ); /** @@ -1230,7 +1230,7 @@ export const FleetRoleRoleAssignment = z.preprocess( */ export const FleetRolePolicy = z.preprocess( processResponseBody, - z.object({ roleAssignments: FleetRoleRoleAssignment.array() }) + z.object({ roleAssignments: FleetRoleRoleAssignment.array() }), ); /** @@ -1247,7 +1247,7 @@ export const FloatingIp = z.preprocess( projectId: z.string().uuid(), timeCreated: z.coerce.date(), timeModified: z.coerce.date(), - }) + }), ); /** @@ -1255,7 +1255,7 @@ export const FloatingIp = z.preprocess( */ export const FloatingIpParentKind = z.preprocess( processResponseBody, - z.enum(["instance"]) + z.enum(["instance"]), ); /** @@ -1263,7 +1263,7 @@ export const FloatingIpParentKind = z.preprocess( */ export const FloatingIpAttach = z.preprocess( processResponseBody, - z.object({ kind: FloatingIpParentKind, parent: NameOrId }) + z.object({ kind: FloatingIpParentKind, parent: NameOrId }), ); /** @@ -1276,7 +1276,7 @@ export const FloatingIpCreate = z.preprocess( ip: z.string().ip().optional(), name: Name, pool: NameOrId.optional(), - }) + }), ); /** @@ -1284,7 +1284,7 @@ export const FloatingIpCreate = z.preprocess( */ export const FloatingIpResultsPage = z.preprocess( processResponseBody, - z.object({ items: FloatingIp.array(), nextPage: z.string().optional() }) + z.object({ items: FloatingIp.array(), nextPage: z.string().optional() }), ); /** @@ -1292,7 +1292,7 @@ export const FloatingIpResultsPage = z.preprocess( */ export const FloatingIpUpdate = z.preprocess( processResponseBody, - z.object({ description: z.string().optional(), name: Name.optional() }) + z.object({ description: z.string().optional(), name: Name.optional() }), ); /** @@ -1304,7 +1304,7 @@ export const Group = z.preprocess( displayName: z.string(), id: z.string().uuid(), siloId: z.string().uuid(), - }) + }), ); /** @@ -1312,7 +1312,7 @@ export const Group = z.preprocess( */ export const GroupResultsPage = z.preprocess( processResponseBody, - z.object({ items: Group.array(), nextPage: z.string().optional() }) + z.object({ items: Group.array(), nextPage: z.string().optional() }), ); /** @@ -1327,13 +1327,13 @@ export const Hostname = z.preprocess( .min(1) .max(253) .regex( - /^([a-zA-Z0-9]+[a-zA-Z0-9\-]*(?<!-))(\.[a-zA-Z0-9]+[a-zA-Z0-9\-]*(?<!-))*$/ - ) + /^([a-zA-Z0-9]+[a-zA-Z0-9\-]*(?<!-))(\.[a-zA-Z0-9]+[a-zA-Z0-9\-]*(?<!-))*$/, + ), ); export const IdentityProviderType = z.preprocess( processResponseBody, - z.enum(["saml"]) + z.enum(["saml"]), ); /** @@ -1348,7 +1348,7 @@ export const IdentityProvider = z.preprocess( providerType: IdentityProviderType, timeCreated: z.coerce.date(), timeModified: z.coerce.date(), - }) + }), ); /** @@ -1356,7 +1356,10 @@ export const IdentityProvider = z.preprocess( */ export const IdentityProviderResultsPage = z.preprocess( processResponseBody, - z.object({ items: IdentityProvider.array(), nextPage: z.string().optional() }) + z.object({ + items: IdentityProvider.array(), + nextPage: z.string().optional(), + }), ); export const IdpMetadataSource = z.preprocess( @@ -1364,7 +1367,7 @@ export const IdpMetadataSource = z.preprocess( z.union([ z.object({ type: z.enum(["url"]), url: z.string() }), z.object({ data: z.string(), type: z.enum(["base64_encoded_xml"]) }), - ]) + ]), ); /** @@ -1386,7 +1389,7 @@ export const Image = z.preprocess( timeCreated: z.coerce.date(), timeModified: z.coerce.date(), version: z.string(), - }) + }), ); /** @@ -1397,7 +1400,7 @@ export const ImageSource = z.preprocess( z.union([ z.object({ id: z.string().uuid(), type: z.enum(["snapshot"]) }), z.object({ type: z.enum(["you_can_boot_anything_as_long_as_its_alpine"]) }), - ]) + ]), ); /** @@ -1411,7 +1414,7 @@ export const ImageCreate = z.preprocess( os: z.string(), source: ImageSource, version: z.string(), - }) + }), ); /** @@ -1419,7 +1422,7 @@ export const ImageCreate = z.preprocess( */ export const ImageResultsPage = z.preprocess( processResponseBody, - z.object({ items: Image.array(), nextPage: z.string().optional() }) + z.object({ items: Image.array(), nextPage: z.string().optional() }), ); /** @@ -1427,7 +1430,7 @@ export const ImageResultsPage = z.preprocess( */ export const ImportBlocksBulkWrite = z.preprocess( processResponseBody, - z.object({ base64EncodedData: z.string(), offset: z.number().min(0) }) + z.object({ base64EncodedData: z.string(), offset: z.number().min(0) }), ); /** @@ -1435,7 +1438,7 @@ export const ImportBlocksBulkWrite = z.preprocess( */ export const InstanceCpuCount = z.preprocess( processResponseBody, - z.number().min(0).max(65535) + z.number().min(0).max(65535), ); /** @@ -1456,7 +1459,7 @@ export const InstanceState = z.preprocess( "repairing", "failed", "destroyed", - ]) + ]), ); /** @@ -1476,7 +1479,7 @@ export const Instance = z.preprocess( timeCreated: z.coerce.date(), timeModified: z.coerce.date(), timeRunStateUpdated: z.coerce.date(), - }) + }), ); /** @@ -1493,7 +1496,7 @@ export const InstanceDiskAttachment = z.preprocess( type: z.enum(["create"]), }), z.object({ name: Name, type: z.enum(["attach"]) }), - ]) + ]), ); /** @@ -1507,7 +1510,7 @@ export const InstanceNetworkInterfaceCreate = z.preprocess( name: Name, subnetName: Name, vpcName: Name, - }) + }), ); /** @@ -1522,7 +1525,7 @@ export const InstanceNetworkInterfaceAttachment = z.preprocess( }), z.object({ type: z.enum(["default"]) }), z.object({ type: z.enum(["none"]) }), - ]) + ]), ); /** @@ -1544,7 +1547,7 @@ export const InstanceCreate = z.preprocess( sshPublicKeys: NameOrId.array().optional(), start: SafeBoolean.default(true).optional(), userData: z.string().default("").optional(), - }) + }), ); /** @@ -1552,7 +1555,7 @@ export const InstanceCreate = z.preprocess( */ export const InstanceMigrate = z.preprocess( processResponseBody, - z.object({ dstSledId: z.string().uuid() }) + z.object({ dstSledId: z.string().uuid() }), ); /** @@ -1566,7 +1569,7 @@ export const MacAddr = z.preprocess( .string() .min(5) .max(17) - .regex(/^([0-9a-fA-F]{0,2}:){5}[0-9a-fA-F]{0,2}$/) + .regex(/^([0-9a-fA-F]{0,2}:){5}[0-9a-fA-F]{0,2}$/), ); /** @@ -1586,7 +1589,7 @@ export const InstanceNetworkInterface = z.preprocess( timeCreated: z.coerce.date(), timeModified: z.coerce.date(), vpcId: z.string().uuid(), - }) + }), ); /** @@ -1597,7 +1600,7 @@ export const InstanceNetworkInterfaceResultsPage = z.preprocess( z.object({ items: InstanceNetworkInterface.array(), nextPage: z.string().optional(), - }) + }), ); /** @@ -1611,7 +1614,7 @@ export const InstanceNetworkInterfaceUpdate = z.preprocess( description: z.string().optional(), name: Name.optional(), primary: SafeBoolean.default(false).optional(), - }) + }), ); /** @@ -1619,7 +1622,7 @@ export const InstanceNetworkInterfaceUpdate = z.preprocess( */ export const InstanceResultsPage = z.preprocess( processResponseBody, - z.object({ items: Instance.array(), nextPage: z.string().optional() }) + z.object({ items: Instance.array(), nextPage: z.string().optional() }), ); /** @@ -1630,12 +1633,12 @@ export const InstanceSerialConsoleData = z.preprocess( z.object({ data: z.number().min(0).max(255).array(), lastByteOffset: z.number().min(0), - }) + }), ); export const IpKind = z.preprocess( processResponseBody, - z.enum(["snat", "floating", "ephemeral"]) + z.enum(["snat", "floating", "ephemeral"]), ); /** @@ -1649,7 +1652,7 @@ export const IpPool = z.preprocess( name: Name, timeCreated: z.coerce.date(), timeModified: z.coerce.date(), - }) + }), ); /** @@ -1657,12 +1660,12 @@ export const IpPool = z.preprocess( */ export const IpPoolCreate = z.preprocess( processResponseBody, - z.object({ description: z.string(), name: Name }) + z.object({ description: z.string(), name: Name }), ); export const IpPoolLinkSilo = z.preprocess( processResponseBody, - z.object({ isDefault: SafeBoolean, silo: NameOrId }) + z.object({ isDefault: SafeBoolean, silo: NameOrId }), ); /** @@ -1675,7 +1678,7 @@ export const Ipv4Range = z.preprocess( z.object({ first: z.string().ip({ version: "v4" }), last: z.string().ip({ version: "v4" }), - }) + }), ); /** @@ -1688,12 +1691,12 @@ export const Ipv6Range = z.preprocess( z.object({ first: z.string().ip({ version: "v6" }), last: z.string().ip({ version: "v6" }), - }) + }), ); export const IpRange = z.preprocess( processResponseBody, - z.union([Ipv4Range, Ipv6Range]) + z.union([Ipv4Range, Ipv6Range]), ); export const IpPoolRange = z.preprocess( @@ -1703,7 +1706,7 @@ export const IpPoolRange = z.preprocess( ipPoolId: z.string().uuid(), range: IpRange, timeCreated: z.coerce.date(), - }) + }), ); /** @@ -1711,7 +1714,7 @@ export const IpPoolRange = z.preprocess( */ export const IpPoolRangeResultsPage = z.preprocess( processResponseBody, - z.object({ items: IpPoolRange.array(), nextPage: z.string().optional() }) + z.object({ items: IpPoolRange.array(), nextPage: z.string().optional() }), ); /** @@ -1719,7 +1722,7 @@ export const IpPoolRangeResultsPage = z.preprocess( */ export const IpPoolResultsPage = z.preprocess( processResponseBody, - z.object({ items: IpPool.array(), nextPage: z.string().optional() }) + z.object({ items: IpPool.array(), nextPage: z.string().optional() }), ); /** @@ -1731,7 +1734,7 @@ export const IpPoolSiloLink = z.preprocess( ipPoolId: z.string().uuid(), isDefault: SafeBoolean, siloId: z.string().uuid(), - }) + }), ); /** @@ -1739,12 +1742,12 @@ export const IpPoolSiloLink = z.preprocess( */ export const IpPoolSiloLinkResultsPage = z.preprocess( processResponseBody, - z.object({ items: IpPoolSiloLink.array(), nextPage: z.string().optional() }) + z.object({ items: IpPoolSiloLink.array(), nextPage: z.string().optional() }), ); export const IpPoolSiloUpdate = z.preprocess( processResponseBody, - z.object({ isDefault: SafeBoolean }) + z.object({ isDefault: SafeBoolean }), ); /** @@ -1752,7 +1755,7 @@ export const IpPoolSiloUpdate = z.preprocess( */ export const IpPoolUpdate = z.preprocess( processResponseBody, - z.object({ description: z.string().optional(), name: Name.optional() }) + z.object({ description: z.string().optional(), name: Name.optional() }), ); /** @@ -1766,7 +1769,7 @@ export const L4PortRange = z.preprocess( .string() .min(1) .max(11) - .regex(/^[0-9]{1,5}(-[0-9]{1,5})?$/) + .regex(/^[0-9]{1,5}(-[0-9]{1,5})?$/), ); /** @@ -1774,7 +1777,7 @@ export const L4PortRange = z.preprocess( */ export const LinkFec = z.preprocess( processResponseBody, - z.enum(["firecode", "none", "rs"]) + z.enum(["firecode", "none", "rs"]), ); /** @@ -1782,7 +1785,7 @@ export const LinkFec = z.preprocess( */ export const LldpServiceConfigCreate = z.preprocess( processResponseBody, - z.object({ enabled: SafeBoolean, lldpConfig: NameOrId.optional() }) + z.object({ enabled: SafeBoolean, lldpConfig: NameOrId.optional() }), ); /** @@ -1800,7 +1803,7 @@ export const LinkSpeed = z.preprocess( "speed100_g", "speed200_g", "speed400_g", - ]) + ]), ); /** @@ -1814,7 +1817,7 @@ export const LinkConfigCreate = z.preprocess( lldp: LldpServiceConfigCreate, mtu: z.number().min(0).max(65535), speed: LinkSpeed, - }) + }), ); /** @@ -1826,7 +1829,7 @@ export const LldpServiceConfig = z.preprocess( enabled: SafeBoolean, id: z.string().uuid(), lldpConfigId: z.string().uuid().optional(), - }) + }), ); /** @@ -1840,7 +1843,7 @@ export const LoopbackAddress = z.preprocess( id: z.string().uuid(), rackId: z.string().uuid(), switchLocation: z.string(), - }) + }), ); /** @@ -1855,7 +1858,7 @@ export const LoopbackAddressCreate = z.preprocess( mask: z.number().min(0).max(255), rackId: z.string().uuid(), switchLocation: Name, - }) + }), ); /** @@ -1863,7 +1866,7 @@ export const LoopbackAddressCreate = z.preprocess( */ export const LoopbackAddressResultsPage = z.preprocess( processResponseBody, - z.object({ items: LoopbackAddress.array(), nextPage: z.string().optional() }) + z.object({ items: LoopbackAddress.array(), nextPage: z.string().optional() }), ); /** @@ -1871,7 +1874,7 @@ export const LoopbackAddressResultsPage = z.preprocess( */ export const Measurement = z.preprocess( processResponseBody, - z.object({ datum: Datum, timestamp: z.coerce.date() }) + z.object({ datum: Datum, timestamp: z.coerce.date() }), ); /** @@ -1879,7 +1882,7 @@ export const Measurement = z.preprocess( */ export const MeasurementResultsPage = z.preprocess( processResponseBody, - z.object({ items: Measurement.array(), nextPage: z.string().optional() }) + z.object({ items: Measurement.array(), nextPage: z.string().optional() }), ); /** @@ -1891,7 +1894,7 @@ export const NetworkInterfaceKind = z.preprocess( z.object({ id: z.string().uuid(), type: z.enum(["instance"]) }), z.object({ id: z.string().uuid(), type: z.enum(["service"]) }), z.object({ id: z.string().uuid(), type: z.enum(["probe"]) }), - ]) + ]), ); /** @@ -1899,7 +1902,7 @@ export const NetworkInterfaceKind = z.preprocess( */ export const Vni = z.preprocess( processResponseBody, - z.number().min(0).max(4294967295) + z.number().min(0).max(4294967295), ); /** @@ -1917,7 +1920,7 @@ export const NetworkInterface = z.preprocess( slot: z.number().min(0).max(255), subnet: IpNet, vni: Vni, - }) + }), ); /** @@ -1932,7 +1935,7 @@ export const Password = z.preprocess(processResponseBody, z.string().max(512)); */ export const PhysicalDiskKind = z.preprocess( processResponseBody, - z.enum(["m2", "u2"]) + z.enum(["m2", "u2"]), ); /** @@ -1951,7 +1954,7 @@ export const PhysicalDisk = z.preprocess( timeCreated: z.coerce.date(), timeModified: z.coerce.date(), vendor: z.string(), - }) + }), ); /** @@ -1959,14 +1962,14 @@ export const PhysicalDisk = z.preprocess( */ export const PhysicalDiskResultsPage = z.preprocess( processResponseBody, - z.object({ items: PhysicalDisk.array(), nextPage: z.string().optional() }) + z.object({ items: PhysicalDisk.array(), nextPage: z.string().optional() }), ); export const PingStatus = z.preprocess(processResponseBody, z.enum(["ok"])); export const Ping = z.preprocess( processResponseBody, - z.object({ status: PingStatus }) + z.object({ status: PingStatus }), ); /** @@ -1981,7 +1984,7 @@ export const Probe = z.preprocess( sled: z.string().uuid(), timeCreated: z.coerce.date(), timeModified: z.coerce.date(), - }) + }), ); /** @@ -1994,7 +1997,7 @@ export const ProbeCreate = z.preprocess( ipPool: NameOrId.optional(), name: Name, sled: z.string().uuid(), - }) + }), ); export const ProbeExternalIp = z.preprocess( @@ -2004,7 +2007,7 @@ export const ProbeExternalIp = z.preprocess( ip: z.string().ip(), kind: IpKind, lastPort: z.number().min(0).max(65535), - }) + }), ); export const ProbeInfo = z.preprocess( @@ -2015,7 +2018,7 @@ export const ProbeInfo = z.preprocess( interface: NetworkInterface, name: Name, sled: z.string().uuid(), - }) + }), ); /** @@ -2023,7 +2026,7 @@ export const ProbeInfo = z.preprocess( */ export const ProbeInfoResultsPage = z.preprocess( processResponseBody, - z.object({ items: ProbeInfo.array(), nextPage: z.string().optional() }) + z.object({ items: ProbeInfo.array(), nextPage: z.string().optional() }), ); /** @@ -2037,7 +2040,7 @@ export const Project = z.preprocess( name: Name, timeCreated: z.coerce.date(), timeModified: z.coerce.date(), - }) + }), ); /** @@ -2045,7 +2048,7 @@ export const Project = z.preprocess( */ export const ProjectCreate = z.preprocess( processResponseBody, - z.object({ description: z.string(), name: Name }) + z.object({ description: z.string(), name: Name }), ); /** @@ -2053,12 +2056,12 @@ export const ProjectCreate = z.preprocess( */ export const ProjectResultsPage = z.preprocess( processResponseBody, - z.object({ items: Project.array(), nextPage: z.string().optional() }) + z.object({ items: Project.array(), nextPage: z.string().optional() }), ); export const ProjectRole = z.preprocess( processResponseBody, - z.enum(["admin", "collaborator", "viewer"]) + z.enum(["admin", "collaborator", "viewer"]), ); /** @@ -2072,7 +2075,7 @@ export const ProjectRoleRoleAssignment = z.preprocess( identityId: z.string().uuid(), identityType: IdentityType, roleName: ProjectRole, - }) + }), ); /** @@ -2082,7 +2085,7 @@ export const ProjectRoleRoleAssignment = z.preprocess( */ export const ProjectRolePolicy = z.preprocess( processResponseBody, - z.object({ roleAssignments: ProjectRoleRoleAssignment.array() }) + z.object({ roleAssignments: ProjectRoleRoleAssignment.array() }), ); /** @@ -2090,7 +2093,7 @@ export const ProjectRolePolicy = z.preprocess( */ export const ProjectUpdate = z.preprocess( processResponseBody, - z.object({ description: z.string().optional(), name: Name.optional() }) + z.object({ description: z.string().optional(), name: Name.optional() }), ); /** @@ -2102,7 +2105,7 @@ export const Rack = z.preprocess( id: z.string().uuid(), timeCreated: z.coerce.date(), timeModified: z.coerce.date(), - }) + }), ); /** @@ -2110,7 +2113,7 @@ export const Rack = z.preprocess( */ export const RackResultsPage = z.preprocess( processResponseBody, - z.object({ items: Rack.array(), nextPage: z.string().optional() }) + z.object({ items: Rack.array(), nextPage: z.string().optional() }), ); /** @@ -2123,7 +2126,7 @@ export const RoleName = z.preprocess( z .string() .max(63) - .regex(/[a-z-]+\.[a-z-]+/) + .regex(/[a-z-]+\.[a-z-]+/), ); /** @@ -2131,7 +2134,7 @@ export const RoleName = z.preprocess( */ export const Role = z.preprocess( processResponseBody, - z.object({ description: z.string(), name: RoleName }) + z.object({ description: z.string(), name: RoleName }), ); /** @@ -2139,7 +2142,7 @@ export const Role = z.preprocess( */ export const RoleResultsPage = z.preprocess( processResponseBody, - z.object({ items: Role.array(), nextPage: z.string().optional() }) + z.object({ items: Role.array(), nextPage: z.string().optional() }), ); /** @@ -2151,7 +2154,7 @@ export const Route = z.preprocess( dst: IpNet, gw: z.string().ip(), vid: z.number().min(0).max(65535).optional(), - }) + }), ); /** @@ -2159,7 +2162,7 @@ export const Route = z.preprocess( */ export const RouteConfig = z.preprocess( processResponseBody, - z.object({ routes: Route.array() }) + z.object({ routes: Route.array() }), ); /** @@ -2180,7 +2183,7 @@ export const SamlIdentityProvider = z.preprocess( technicalContactEmail: z.string(), timeCreated: z.coerce.date(), timeModified: z.coerce.date(), - }) + }), ); /** @@ -2199,7 +2202,7 @@ export const SamlIdentityProviderCreate = z.preprocess( sloUrl: z.string(), spClientId: z.string(), technicalContactEmail: z.string(), - }) + }), ); /** @@ -2207,7 +2210,7 @@ export const SamlIdentityProviderCreate = z.preprocess( */ export const SiloIdentityMode = z.preprocess( processResponseBody, - z.enum(["saml_jit", "local_only"]) + z.enum(["saml_jit", "local_only"]), ); /** @@ -2224,12 +2227,12 @@ export const Silo = z.preprocess( identityMode: SiloIdentityMode, mappedFleetRoles: z.record( z.string().min(1), - FleetRole.array().refine(...uniqueItems) + FleetRole.array().refine(...uniqueItems), ), name: Name, timeCreated: z.coerce.date(), timeModified: z.coerce.date(), - }) + }), ); /** @@ -2237,7 +2240,7 @@ export const Silo = z.preprocess( */ export const SiloQuotasCreate = z.preprocess( processResponseBody, - z.object({ cpus: z.number(), memory: ByteCount, storage: ByteCount }) + z.object({ cpus: z.number(), memory: ByteCount, storage: ByteCount }), ); /** @@ -2256,7 +2259,7 @@ export const SiloCreate = z.preprocess( name: Name, quotas: SiloQuotasCreate, tlsCertificates: CertificateCreate.array(), - }) + }), ); /** @@ -2271,7 +2274,7 @@ export const SiloIpPool = z.preprocess( name: Name, timeCreated: z.coerce.date(), timeModified: z.coerce.date(), - }) + }), ); /** @@ -2279,7 +2282,7 @@ export const SiloIpPool = z.preprocess( */ export const SiloIpPoolResultsPage = z.preprocess( processResponseBody, - z.object({ items: SiloIpPool.array(), nextPage: z.string().optional() }) + z.object({ items: SiloIpPool.array(), nextPage: z.string().optional() }), ); /** @@ -2292,7 +2295,7 @@ export const SiloQuotas = z.preprocess( memory: ByteCount, siloId: z.string().uuid(), storage: ByteCount, - }) + }), ); /** @@ -2300,7 +2303,7 @@ export const SiloQuotas = z.preprocess( */ export const SiloQuotasResultsPage = z.preprocess( processResponseBody, - z.object({ items: SiloQuotas.array(), nextPage: z.string().optional() }) + z.object({ items: SiloQuotas.array(), nextPage: z.string().optional() }), ); /** @@ -2312,7 +2315,7 @@ export const SiloQuotasUpdate = z.preprocess( cpus: z.number().optional(), memory: ByteCount.optional(), storage: ByteCount.optional(), - }) + }), ); /** @@ -2320,12 +2323,12 @@ export const SiloQuotasUpdate = z.preprocess( */ export const SiloResultsPage = z.preprocess( processResponseBody, - z.object({ items: Silo.array(), nextPage: z.string().optional() }) + z.object({ items: Silo.array(), nextPage: z.string().optional() }), ); export const SiloRole = z.preprocess( processResponseBody, - z.enum(["admin", "collaborator", "viewer"]) + z.enum(["admin", "collaborator", "viewer"]), ); /** @@ -2339,7 +2342,7 @@ export const SiloRoleRoleAssignment = z.preprocess( identityId: z.string().uuid(), identityType: IdentityType, roleName: SiloRole, - }) + }), ); /** @@ -2349,7 +2352,7 @@ export const SiloRoleRoleAssignment = z.preprocess( */ export const SiloRolePolicy = z.preprocess( processResponseBody, - z.object({ roleAssignments: SiloRoleRoleAssignment.array() }) + z.object({ roleAssignments: SiloRoleRoleAssignment.array() }), ); /** @@ -2357,7 +2360,7 @@ export const SiloRolePolicy = z.preprocess( */ export const VirtualResourceCounts = z.preprocess( processResponseBody, - z.object({ cpus: z.number(), memory: ByteCount, storage: ByteCount }) + z.object({ cpus: z.number(), memory: ByteCount, storage: ByteCount }), ); /** @@ -2370,7 +2373,7 @@ export const SiloUtilization = z.preprocess( provisioned: VirtualResourceCounts, siloId: z.string().uuid(), siloName: Name, - }) + }), ); /** @@ -2378,7 +2381,7 @@ export const SiloUtilization = z.preprocess( */ export const SiloUtilizationResultsPage = z.preprocess( processResponseBody, - z.object({ items: SiloUtilization.array(), nextPage: z.string().optional() }) + z.object({ items: SiloUtilization.array(), nextPage: z.string().optional() }), ); /** @@ -2388,7 +2391,7 @@ export const SiloUtilizationResultsPage = z.preprocess( */ export const SledProvisionPolicy = z.preprocess( processResponseBody, - z.enum(["provisionable", "non_provisionable"]) + z.enum(["provisionable", "non_provisionable"]), ); /** @@ -2402,7 +2405,7 @@ export const SledPolicy = z.preprocess( provisionPolicy: SledProvisionPolicy, }), z.object({ kind: z.enum(["expunged"]) }), - ]) + ]), ); /** @@ -2410,7 +2413,7 @@ export const SledPolicy = z.preprocess( */ export const SledState = z.preprocess( processResponseBody, - z.enum(["active", "decommissioned"]) + z.enum(["active", "decommissioned"]), ); /** @@ -2428,7 +2431,7 @@ export const Sled = z.preprocess( timeModified: z.coerce.date(), usableHardwareThreads: z.number().min(0).max(4294967295), usablePhysicalRam: ByteCount, - }) + }), ); /** @@ -2448,7 +2451,7 @@ export const SledInstance = z.preprocess( state: InstanceState, timeCreated: z.coerce.date(), timeModified: z.coerce.date(), - }) + }), ); /** @@ -2456,7 +2459,7 @@ export const SledInstance = z.preprocess( */ export const SledInstanceResultsPage = z.preprocess( processResponseBody, - z.object({ items: SledInstance.array(), nextPage: z.string().optional() }) + z.object({ items: SledInstance.array(), nextPage: z.string().optional() }), ); /** @@ -2464,7 +2467,7 @@ export const SledInstanceResultsPage = z.preprocess( */ export const SledProvisionPolicyParams = z.preprocess( processResponseBody, - z.object({ state: SledProvisionPolicy }) + z.object({ state: SledProvisionPolicy }), ); /** @@ -2472,7 +2475,7 @@ export const SledProvisionPolicyParams = z.preprocess( */ export const SledProvisionPolicyResponse = z.preprocess( processResponseBody, - z.object({ newState: SledProvisionPolicy, oldState: SledProvisionPolicy }) + z.object({ newState: SledProvisionPolicy, oldState: SledProvisionPolicy }), ); /** @@ -2480,12 +2483,12 @@ export const SledProvisionPolicyResponse = z.preprocess( */ export const SledResultsPage = z.preprocess( processResponseBody, - z.object({ items: Sled.array(), nextPage: z.string().optional() }) + z.object({ items: Sled.array(), nextPage: z.string().optional() }), ); export const SnapshotState = z.preprocess( processResponseBody, - z.enum(["creating", "ready", "faulted", "destroyed"]) + z.enum(["creating", "ready", "faulted", "destroyed"]), ); /** @@ -2503,7 +2506,7 @@ export const Snapshot = z.preprocess( state: SnapshotState, timeCreated: z.coerce.date(), timeModified: z.coerce.date(), - }) + }), ); /** @@ -2511,7 +2514,7 @@ export const Snapshot = z.preprocess( */ export const SnapshotCreate = z.preprocess( processResponseBody, - z.object({ description: z.string(), disk: NameOrId, name: Name }) + z.object({ description: z.string(), disk: NameOrId, name: Name }), ); /** @@ -2519,7 +2522,7 @@ export const SnapshotCreate = z.preprocess( */ export const SnapshotResultsPage = z.preprocess( processResponseBody, - z.object({ items: Snapshot.array(), nextPage: z.string().optional() }) + z.object({ items: Snapshot.array(), nextPage: z.string().optional() }), ); /** @@ -2535,7 +2538,7 @@ export const SshKey = z.preprocess( siloUserId: z.string().uuid(), timeCreated: z.coerce.date(), timeModified: z.coerce.date(), - }) + }), ); /** @@ -2543,7 +2546,7 @@ export const SshKey = z.preprocess( */ export const SshKeyCreate = z.preprocess( processResponseBody, - z.object({ description: z.string(), name: Name, publicKey: z.string() }) + z.object({ description: z.string(), name: Name, publicKey: z.string() }), ); /** @@ -2551,7 +2554,7 @@ export const SshKeyCreate = z.preprocess( */ export const SshKeyResultsPage = z.preprocess( processResponseBody, - z.object({ items: SshKey.array(), nextPage: z.string().optional() }) + z.object({ items: SshKey.array(), nextPage: z.string().optional() }), ); /** @@ -2565,7 +2568,7 @@ export const Switch = z.preprocess( rackId: z.string().uuid(), timeCreated: z.coerce.date(), timeModified: z.coerce.date(), - }) + }), ); /** @@ -2573,7 +2576,7 @@ export const Switch = z.preprocess( */ export const SwitchInterfaceKind2 = z.preprocess( processResponseBody, - z.enum(["primary", "vlan", "loopback"]) + z.enum(["primary", "vlan", "loopback"]), ); /** @@ -2587,7 +2590,7 @@ export const SwitchInterfaceConfig = z.preprocess( kind: SwitchInterfaceKind2, portSettingsId: z.string().uuid(), v6Enabled: SafeBoolean, - }) + }), ); /** @@ -2599,7 +2602,7 @@ export const SwitchInterfaceKind = z.preprocess( z.object({ type: z.enum(["primary"]) }), z.object({ type: z.enum(["vlan"]), vid: z.number().min(0).max(65535) }), z.object({ type: z.enum(["loopback"]) }), - ]) + ]), ); /** @@ -2607,7 +2610,7 @@ export const SwitchInterfaceKind = z.preprocess( */ export const SwitchInterfaceConfigCreate = z.preprocess( processResponseBody, - z.object({ kind: SwitchInterfaceKind, v6Enabled: SafeBoolean }) + z.object({ kind: SwitchInterfaceKind, v6Enabled: SafeBoolean }), ); /** @@ -2621,7 +2624,7 @@ export const SwitchPort = z.preprocess( portSettingsId: z.string().uuid().optional(), rackId: z.string().uuid(), switchLocation: z.string(), - }) + }), ); /** @@ -2634,7 +2637,7 @@ export const SwitchPortAddressConfig = z.preprocess( addressLotBlockId: z.string().uuid(), interfaceName: z.string(), portSettingsId: z.string().uuid(), - }) + }), ); /** @@ -2642,7 +2645,7 @@ export const SwitchPortAddressConfig = z.preprocess( */ export const SwitchPortApplySettings = z.preprocess( processResponseBody, - z.object({ portSettings: NameOrId }) + z.object({ portSettings: NameOrId }), ); /** @@ -2655,7 +2658,7 @@ export const SwitchPortBgpPeerConfig = z.preprocess( bgpConfigId: z.string().uuid(), interfaceName: z.string(), portSettingsId: z.string().uuid(), - }) + }), ); /** @@ -2663,7 +2666,7 @@ export const SwitchPortBgpPeerConfig = z.preprocess( */ export const SwitchPortGeometry2 = z.preprocess( processResponseBody, - z.enum(["qsfp28x1", "qsfp28x2", "sfp28x4"]) + z.enum(["qsfp28x1", "qsfp28x2", "sfp28x4"]), ); /** @@ -2671,7 +2674,10 @@ export const SwitchPortGeometry2 = z.preprocess( */ export const SwitchPortConfig = z.preprocess( processResponseBody, - z.object({ geometry: SwitchPortGeometry2, portSettingsId: z.string().uuid() }) + z.object({ + geometry: SwitchPortGeometry2, + portSettingsId: z.string().uuid(), + }), ); /** @@ -2679,7 +2685,7 @@ export const SwitchPortConfig = z.preprocess( */ export const SwitchPortGeometry = z.preprocess( processResponseBody, - z.enum(["qsfp28x1", "qsfp28x2", "sfp28x4"]) + z.enum(["qsfp28x1", "qsfp28x2", "sfp28x4"]), ); /** @@ -2687,7 +2693,7 @@ export const SwitchPortGeometry = z.preprocess( */ export const SwitchPortConfigCreate = z.preprocess( processResponseBody, - z.object({ geometry: SwitchPortGeometry }) + z.object({ geometry: SwitchPortGeometry }), ); /** @@ -2700,7 +2706,7 @@ export const SwitchPortLinkConfig = z.preprocess( lldpServiceConfigId: z.string().uuid(), mtu: z.number().min(0).max(65535), portSettingsId: z.string().uuid(), - }) + }), ); /** @@ -2708,7 +2714,7 @@ export const SwitchPortLinkConfig = z.preprocess( */ export const SwitchPortResultsPage = z.preprocess( processResponseBody, - z.object({ items: SwitchPort.array(), nextPage: z.string().optional() }) + z.object({ items: SwitchPort.array(), nextPage: z.string().optional() }), ); /** @@ -2722,7 +2728,7 @@ export const SwitchPortRouteConfig = z.preprocess( interfaceName: z.string(), portSettingsId: z.string().uuid(), vlanId: z.number().min(0).max(65535).optional(), - }) + }), ); /** @@ -2736,7 +2742,7 @@ export const SwitchPortSettings = z.preprocess( name: Name, timeCreated: z.coerce.date(), timeModified: z.coerce.date(), - }) + }), ); /** @@ -2754,7 +2760,7 @@ export const SwitchPortSettingsCreate = z.preprocess( name: Name, portConfig: SwitchPortConfigCreate, routes: z.record(z.string().min(1), RouteConfig), - }) + }), ); /** @@ -2765,7 +2771,7 @@ export const SwitchPortSettingsGroups = z.preprocess( z.object({ portSettingsGroupId: z.string().uuid(), portSettingsId: z.string().uuid(), - }) + }), ); /** @@ -2776,7 +2782,7 @@ export const SwitchPortSettingsResultsPage = z.preprocess( z.object({ items: SwitchPortSettings.array(), nextPage: z.string().optional(), - }) + }), ); /** @@ -2787,7 +2793,7 @@ export const SwitchVlanInterfaceConfig = z.preprocess( z.object({ interfaceConfigId: z.string().uuid(), vlanId: z.number().min(0).max(65535), - }) + }), ); /** @@ -2806,7 +2812,7 @@ export const SwitchPortSettingsView = z.preprocess( routes: SwitchPortRouteConfig.array(), settings: SwitchPortSettings, vlanInterfaces: SwitchVlanInterfaceConfig.array(), - }) + }), ); /** @@ -2814,7 +2820,7 @@ export const SwitchPortSettingsView = z.preprocess( */ export const SwitchResultsPage = z.preprocess( processResponseBody, - z.object({ items: Switch.array(), nextPage: z.string().optional() }) + z.object({ items: Switch.array(), nextPage: z.string().optional() }), ); /** @@ -2826,7 +2832,7 @@ export const UninitializedSled = z.preprocess( baseboard: Baseboard, cubby: z.number().min(0).max(65535), rackId: z.string().uuid(), - }) + }), ); /** @@ -2834,7 +2840,7 @@ export const UninitializedSled = z.preprocess( */ export const UninitializedSledId = z.preprocess( processResponseBody, - z.object({ part: z.string(), serial: z.string() }) + z.object({ part: z.string(), serial: z.string() }), ); /** @@ -2845,7 +2851,7 @@ export const UninitializedSledResultsPage = z.preprocess( z.object({ items: UninitializedSled.array(), nextPage: z.string().optional(), - }) + }), ); /** @@ -2857,7 +2863,7 @@ export const User = z.preprocess( displayName: z.string(), id: z.string().uuid(), siloId: z.string().uuid(), - }) + }), ); /** @@ -2873,7 +2879,7 @@ export const UserBuiltin = z.preprocess( name: Name, timeCreated: z.coerce.date(), timeModified: z.coerce.date(), - }) + }), ); /** @@ -2881,7 +2887,7 @@ export const UserBuiltin = z.preprocess( */ export const UserBuiltinResultsPage = z.preprocess( processResponseBody, - z.object({ items: UserBuiltin.array(), nextPage: z.string().optional() }) + z.object({ items: UserBuiltin.array(), nextPage: z.string().optional() }), ); /** @@ -2896,8 +2902,8 @@ export const UserId = z.preprocess( .min(1) .max(63) .regex( - /^(?![0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$)^[a-z]([a-zA-Z0-9-]*[a-zA-Z0-9]+)?$/ - ) + /^(?![0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$)^[a-z]([a-zA-Z0-9-]*[a-zA-Z0-9]+)?$/, + ), ); /** @@ -2908,7 +2914,7 @@ export const UserPassword = z.preprocess( z.union([ z.object({ mode: z.enum(["password"]), value: Password }), z.object({ mode: z.enum(["login_disallowed"]) }), - ]) + ]), ); /** @@ -2916,7 +2922,7 @@ export const UserPassword = z.preprocess( */ export const UserCreate = z.preprocess( processResponseBody, - z.object({ externalId: UserId, password: UserPassword }) + z.object({ externalId: UserId, password: UserPassword }), ); /** @@ -2924,7 +2930,7 @@ export const UserCreate = z.preprocess( */ export const UserResultsPage = z.preprocess( processResponseBody, - z.object({ items: User.array(), nextPage: z.string().optional() }) + z.object({ items: User.array(), nextPage: z.string().optional() }), ); /** @@ -2932,7 +2938,7 @@ export const UserResultsPage = z.preprocess( */ export const UsernamePasswordCredentials = z.preprocess( processResponseBody, - z.object({ password: Password, username: UserId }) + z.object({ password: Password, username: UserId }), ); /** @@ -2943,7 +2949,7 @@ export const Utilization = z.preprocess( z.object({ capacity: VirtualResourceCounts, provisioned: VirtualResourceCounts, - }) + }), ); /** @@ -2961,7 +2967,7 @@ export const Vpc = z.preprocess( systemRouterId: z.string().uuid(), timeCreated: z.coerce.date(), timeModified: z.coerce.date(), - }) + }), ); /** @@ -2974,17 +2980,17 @@ export const VpcCreate = z.preprocess( dnsName: Name, ipv6Prefix: Ipv6Net.optional(), name: Name, - }) + }), ); export const VpcFirewallRuleAction = z.preprocess( processResponseBody, - z.enum(["allow", "deny"]) + z.enum(["allow", "deny"]), ); export const VpcFirewallRuleDirection = z.preprocess( processResponseBody, - z.enum(["inbound", "outbound"]) + z.enum(["inbound", "outbound"]), ); /** @@ -2998,7 +3004,7 @@ export const VpcFirewallRuleHostFilter = z.preprocess( z.object({ type: z.enum(["instance"]), value: Name }), z.object({ type: z.enum(["ip"]), value: z.string().ip() }), z.object({ type: z.enum(["ip_net"]), value: IpNet }), - ]) + ]), ); /** @@ -3006,7 +3012,7 @@ export const VpcFirewallRuleHostFilter = z.preprocess( */ export const VpcFirewallRuleProtocol = z.preprocess( processResponseBody, - z.enum(["TCP", "UDP", "ICMP"]) + z.enum(["TCP", "UDP", "ICMP"]), ); /** @@ -3018,12 +3024,12 @@ export const VpcFirewallRuleFilter = z.preprocess( hosts: VpcFirewallRuleHostFilter.array().optional(), ports: L4PortRange.array().optional(), protocols: VpcFirewallRuleProtocol.array().optional(), - }) + }), ); export const VpcFirewallRuleStatus = z.preprocess( processResponseBody, - z.enum(["disabled", "enabled"]) + z.enum(["disabled", "enabled"]), ); /** @@ -3037,7 +3043,7 @@ export const VpcFirewallRuleTarget = z.preprocess( z.object({ type: z.enum(["instance"]), value: Name }), z.object({ type: z.enum(["ip"]), value: z.string().ip() }), z.object({ type: z.enum(["ip_net"]), value: IpNet }), - ]) + ]), ); /** @@ -3058,7 +3064,7 @@ export const VpcFirewallRule = z.preprocess( timeCreated: z.coerce.date(), timeModified: z.coerce.date(), vpcId: z.string().uuid(), - }) + }), ); /** @@ -3075,7 +3081,7 @@ export const VpcFirewallRuleUpdate = z.preprocess( priority: z.number().min(0).max(65535), status: VpcFirewallRuleStatus, targets: VpcFirewallRuleTarget.array(), - }) + }), ); /** @@ -3083,7 +3089,7 @@ export const VpcFirewallRuleUpdate = z.preprocess( */ export const VpcFirewallRuleUpdateParams = z.preprocess( processResponseBody, - z.object({ rules: VpcFirewallRuleUpdate.array() }) + z.object({ rules: VpcFirewallRuleUpdate.array() }), ); /** @@ -3091,7 +3097,7 @@ export const VpcFirewallRuleUpdateParams = z.preprocess( */ export const VpcFirewallRules = z.preprocess( processResponseBody, - z.object({ rules: VpcFirewallRule.array() }) + z.object({ rules: VpcFirewallRule.array() }), ); /** @@ -3099,7 +3105,7 @@ export const VpcFirewallRules = z.preprocess( */ export const VpcResultsPage = z.preprocess( processResponseBody, - z.object({ items: Vpc.array(), nextPage: z.string().optional() }) + z.object({ items: Vpc.array(), nextPage: z.string().optional() }), ); /** @@ -3116,7 +3122,7 @@ export const VpcSubnet = z.preprocess( timeCreated: z.coerce.date(), timeModified: z.coerce.date(), vpcId: z.string().uuid(), - }) + }), ); /** @@ -3129,7 +3135,7 @@ export const VpcSubnetCreate = z.preprocess( ipv4Block: Ipv4Net, ipv6Block: Ipv6Net.optional(), name: Name, - }) + }), ); /** @@ -3137,7 +3143,7 @@ export const VpcSubnetCreate = z.preprocess( */ export const VpcSubnetResultsPage = z.preprocess( processResponseBody, - z.object({ items: VpcSubnet.array(), nextPage: z.string().optional() }) + z.object({ items: VpcSubnet.array(), nextPage: z.string().optional() }), ); /** @@ -3145,7 +3151,7 @@ export const VpcSubnetResultsPage = z.preprocess( */ export const VpcSubnetUpdate = z.preprocess( processResponseBody, - z.object({ description: z.string().optional(), name: Name.optional() }) + z.object({ description: z.string().optional(), name: Name.optional() }), ); /** @@ -3157,7 +3163,7 @@ export const VpcUpdate = z.preprocess( description: z.string().optional(), dnsName: Name.optional(), name: Name.optional(), - }) + }), ); /** @@ -3165,12 +3171,12 @@ export const VpcUpdate = z.preprocess( */ export const NameOrIdSortMode = z.preprocess( processResponseBody, - z.enum(["name_ascending", "name_descending", "id_ascending"]) + z.enum(["name_ascending", "name_descending", "id_ascending"]), ); export const DiskMetricName = z.preprocess( processResponseBody, - z.enum(["activated", "flush", "read", "read_bytes", "write", "write_bytes"]) + z.enum(["activated", "flush", "read", "read_bytes", "write", "write_bytes"]), ); /** @@ -3178,7 +3184,7 @@ export const DiskMetricName = z.preprocess( */ export const PaginationOrder = z.preprocess( processResponseBody, - z.enum(["ascending", "descending"]) + z.enum(["ascending", "descending"]), ); /** @@ -3188,7 +3194,7 @@ export const PaginationOrder = z.preprocess( */ export const IdSortMode = z.preprocess( processResponseBody, - z.enum(["id_ascending"]) + z.enum(["id_ascending"]), ); export const SystemMetricName = z.preprocess( @@ -3197,7 +3203,7 @@ export const SystemMetricName = z.preprocess( "virtual_disk_space_provisioned", "cpus_provisioned", "ram_provisioned", - ]) + ]), ); /** @@ -3207,7 +3213,7 @@ export const SystemMetricName = z.preprocess( */ export const NameSortMode = z.preprocess( processResponseBody, - z.enum(["name_ascending"]) + z.enum(["name_ascending"]), ); export const DeviceAuthRequestParams = z.preprocess( @@ -3215,7 +3221,7 @@ export const DeviceAuthRequestParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const DeviceAuthConfirmParams = z.preprocess( @@ -3223,7 +3229,7 @@ export const DeviceAuthConfirmParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const DeviceAccessTokenParams = z.preprocess( @@ -3231,7 +3237,7 @@ export const DeviceAccessTokenParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const ProbeListParams = z.preprocess( @@ -3244,7 +3250,7 @@ export const ProbeListParams = z.preprocess( project: NameOrId.optional(), sortBy: NameOrIdSortMode.optional(), }), - }) + }), ); export const ProbeCreateParams = z.preprocess( @@ -3254,7 +3260,7 @@ export const ProbeCreateParams = z.preprocess( query: z.object({ project: NameOrId, }), - }) + }), ); export const ProbeViewParams = z.preprocess( @@ -3266,7 +3272,7 @@ export const ProbeViewParams = z.preprocess( query: z.object({ project: NameOrId, }), - }) + }), ); export const ProbeDeleteParams = z.preprocess( @@ -3278,7 +3284,7 @@ export const ProbeDeleteParams = z.preprocess( query: z.object({ project: NameOrId, }), - }) + }), ); export const LoginSamlParams = z.preprocess( @@ -3289,7 +3295,7 @@ export const LoginSamlParams = z.preprocess( siloName: Name, }), query: z.object({}), - }) + }), ); export const CertificateListParams = z.preprocess( @@ -3301,7 +3307,7 @@ export const CertificateListParams = z.preprocess( pageToken: z.string().optional(), sortBy: NameOrIdSortMode.optional(), }), - }) + }), ); export const CertificateCreateParams = z.preprocess( @@ -3309,7 +3315,7 @@ export const CertificateCreateParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const CertificateViewParams = z.preprocess( @@ -3319,7 +3325,7 @@ export const CertificateViewParams = z.preprocess( certificate: NameOrId, }), query: z.object({}), - }) + }), ); export const CertificateDeleteParams = z.preprocess( @@ -3329,7 +3335,7 @@ export const CertificateDeleteParams = z.preprocess( certificate: NameOrId, }), query: z.object({}), - }) + }), ); export const DiskListParams = z.preprocess( @@ -3342,7 +3348,7 @@ export const DiskListParams = z.preprocess( project: NameOrId.optional(), sortBy: NameOrIdSortMode.optional(), }), - }) + }), ); export const DiskCreateParams = z.preprocess( @@ -3352,7 +3358,7 @@ export const DiskCreateParams = z.preprocess( query: z.object({ project: NameOrId, }), - }) + }), ); export const DiskViewParams = z.preprocess( @@ -3364,7 +3370,7 @@ export const DiskViewParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const DiskDeleteParams = z.preprocess( @@ -3376,7 +3382,7 @@ export const DiskDeleteParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const DiskBulkWriteImportParams = z.preprocess( @@ -3388,7 +3394,7 @@ export const DiskBulkWriteImportParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const DiskBulkWriteImportStartParams = z.preprocess( @@ -3400,7 +3406,7 @@ export const DiskBulkWriteImportStartParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const DiskBulkWriteImportStopParams = z.preprocess( @@ -3412,7 +3418,7 @@ export const DiskBulkWriteImportStopParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const DiskFinalizeImportParams = z.preprocess( @@ -3424,7 +3430,7 @@ export const DiskFinalizeImportParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const DiskMetricsListParams = z.preprocess( @@ -3442,7 +3448,7 @@ export const DiskMetricsListParams = z.preprocess( startTime: z.coerce.date().optional(), project: NameOrId.optional(), }), - }) + }), ); export const FloatingIpListParams = z.preprocess( @@ -3455,7 +3461,7 @@ export const FloatingIpListParams = z.preprocess( project: NameOrId.optional(), sortBy: NameOrIdSortMode.optional(), }), - }) + }), ); export const FloatingIpCreateParams = z.preprocess( @@ -3465,7 +3471,7 @@ export const FloatingIpCreateParams = z.preprocess( query: z.object({ project: NameOrId, }), - }) + }), ); export const FloatingIpViewParams = z.preprocess( @@ -3477,7 +3483,7 @@ export const FloatingIpViewParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const FloatingIpUpdateParams = z.preprocess( @@ -3489,7 +3495,7 @@ export const FloatingIpUpdateParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const FloatingIpDeleteParams = z.preprocess( @@ -3501,7 +3507,7 @@ export const FloatingIpDeleteParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const FloatingIpAttachParams = z.preprocess( @@ -3513,7 +3519,7 @@ export const FloatingIpAttachParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const FloatingIpDetachParams = z.preprocess( @@ -3525,7 +3531,7 @@ export const FloatingIpDetachParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const GroupListParams = z.preprocess( @@ -3537,7 +3543,7 @@ export const GroupListParams = z.preprocess( pageToken: z.string().optional(), sortBy: IdSortMode.optional(), }), - }) + }), ); export const GroupViewParams = z.preprocess( @@ -3547,7 +3553,7 @@ export const GroupViewParams = z.preprocess( groupId: z.string().uuid(), }), query: z.object({}), - }) + }), ); export const ImageListParams = z.preprocess( @@ -3560,7 +3566,7 @@ export const ImageListParams = z.preprocess( project: NameOrId.optional(), sortBy: NameOrIdSortMode.optional(), }), - }) + }), ); export const ImageCreateParams = z.preprocess( @@ -3570,7 +3576,7 @@ export const ImageCreateParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const ImageViewParams = z.preprocess( @@ -3582,7 +3588,7 @@ export const ImageViewParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const ImageDeleteParams = z.preprocess( @@ -3594,7 +3600,7 @@ export const ImageDeleteParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const ImageDemoteParams = z.preprocess( @@ -3606,7 +3612,7 @@ export const ImageDemoteParams = z.preprocess( query: z.object({ project: NameOrId, }), - }) + }), ); export const ImagePromoteParams = z.preprocess( @@ -3618,7 +3624,7 @@ export const ImagePromoteParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const InstanceListParams = z.preprocess( @@ -3631,7 +3637,7 @@ export const InstanceListParams = z.preprocess( project: NameOrId.optional(), sortBy: NameOrIdSortMode.optional(), }), - }) + }), ); export const InstanceCreateParams = z.preprocess( @@ -3641,7 +3647,7 @@ export const InstanceCreateParams = z.preprocess( query: z.object({ project: NameOrId, }), - }) + }), ); export const InstanceViewParams = z.preprocess( @@ -3653,7 +3659,7 @@ export const InstanceViewParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const InstanceDeleteParams = z.preprocess( @@ -3665,7 +3671,7 @@ export const InstanceDeleteParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const InstanceDiskListParams = z.preprocess( @@ -3680,7 +3686,7 @@ export const InstanceDiskListParams = z.preprocess( project: NameOrId.optional(), sortBy: NameOrIdSortMode.optional(), }), - }) + }), ); export const InstanceDiskAttachParams = z.preprocess( @@ -3692,7 +3698,7 @@ export const InstanceDiskAttachParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const InstanceDiskDetachParams = z.preprocess( @@ -3704,7 +3710,7 @@ export const InstanceDiskDetachParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const InstanceExternalIpListParams = z.preprocess( @@ -3716,7 +3722,7 @@ export const InstanceExternalIpListParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const InstanceEphemeralIpAttachParams = z.preprocess( @@ -3728,7 +3734,7 @@ export const InstanceEphemeralIpAttachParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const InstanceEphemeralIpDetachParams = z.preprocess( @@ -3740,7 +3746,7 @@ export const InstanceEphemeralIpDetachParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const InstanceMigrateParams = z.preprocess( @@ -3752,7 +3758,7 @@ export const InstanceMigrateParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const InstanceRebootParams = z.preprocess( @@ -3764,7 +3770,7 @@ export const InstanceRebootParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const InstanceSerialConsoleParams = z.preprocess( @@ -3779,7 +3785,7 @@ export const InstanceSerialConsoleParams = z.preprocess( mostRecent: z.number().min(0).optional(), project: NameOrId.optional(), }), - }) + }), ); export const InstanceSerialConsoleStreamParams = z.preprocess( @@ -3792,7 +3798,7 @@ export const InstanceSerialConsoleStreamParams = z.preprocess( mostRecent: z.number().min(0).optional(), project: NameOrId.optional(), }), - }) + }), ); export const InstanceSshPublicKeyListParams = z.preprocess( @@ -3807,7 +3813,7 @@ export const InstanceSshPublicKeyListParams = z.preprocess( project: NameOrId.optional(), sortBy: NameOrIdSortMode.optional(), }), - }) + }), ); export const InstanceStartParams = z.preprocess( @@ -3819,7 +3825,7 @@ export const InstanceStartParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const InstanceStopParams = z.preprocess( @@ -3831,7 +3837,7 @@ export const InstanceStopParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const ProjectIpPoolListParams = z.preprocess( @@ -3843,7 +3849,7 @@ export const ProjectIpPoolListParams = z.preprocess( pageToken: z.string().optional(), sortBy: NameOrIdSortMode.optional(), }), - }) + }), ); export const ProjectIpPoolViewParams = z.preprocess( @@ -3853,7 +3859,7 @@ export const ProjectIpPoolViewParams = z.preprocess( pool: NameOrId, }), query: z.object({}), - }) + }), ); export const LoginLocalParams = z.preprocess( @@ -3863,7 +3869,7 @@ export const LoginLocalParams = z.preprocess( siloName: Name, }), query: z.object({}), - }) + }), ); export const LogoutParams = z.preprocess( @@ -3871,7 +3877,7 @@ export const LogoutParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const CurrentUserViewParams = z.preprocess( @@ -3879,7 +3885,7 @@ export const CurrentUserViewParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const CurrentUserGroupsParams = z.preprocess( @@ -3891,7 +3897,7 @@ export const CurrentUserGroupsParams = z.preprocess( pageToken: z.string().optional(), sortBy: IdSortMode.optional(), }), - }) + }), ); export const CurrentUserSshKeyListParams = z.preprocess( @@ -3903,7 +3909,7 @@ export const CurrentUserSshKeyListParams = z.preprocess( pageToken: z.string().optional(), sortBy: NameOrIdSortMode.optional(), }), - }) + }), ); export const CurrentUserSshKeyCreateParams = z.preprocess( @@ -3911,7 +3917,7 @@ export const CurrentUserSshKeyCreateParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const CurrentUserSshKeyViewParams = z.preprocess( @@ -3921,7 +3927,7 @@ export const CurrentUserSshKeyViewParams = z.preprocess( sshKey: NameOrId, }), query: z.object({}), - }) + }), ); export const CurrentUserSshKeyDeleteParams = z.preprocess( @@ -3931,7 +3937,7 @@ export const CurrentUserSshKeyDeleteParams = z.preprocess( sshKey: NameOrId, }), query: z.object({}), - }) + }), ); export const SiloMetricParams = z.preprocess( @@ -3948,7 +3954,7 @@ export const SiloMetricParams = z.preprocess( startTime: z.coerce.date().optional(), project: NameOrId.optional(), }), - }) + }), ); export const InstanceNetworkInterfaceListParams = z.preprocess( @@ -3962,7 +3968,7 @@ export const InstanceNetworkInterfaceListParams = z.preprocess( project: NameOrId.optional(), sortBy: NameOrIdSortMode.optional(), }), - }) + }), ); export const InstanceNetworkInterfaceCreateParams = z.preprocess( @@ -3973,7 +3979,7 @@ export const InstanceNetworkInterfaceCreateParams = z.preprocess( instance: NameOrId, project: NameOrId.optional(), }), - }) + }), ); export const InstanceNetworkInterfaceViewParams = z.preprocess( @@ -3986,7 +3992,7 @@ export const InstanceNetworkInterfaceViewParams = z.preprocess( instance: NameOrId.optional(), project: NameOrId.optional(), }), - }) + }), ); export const InstanceNetworkInterfaceUpdateParams = z.preprocess( @@ -3999,7 +4005,7 @@ export const InstanceNetworkInterfaceUpdateParams = z.preprocess( instance: NameOrId.optional(), project: NameOrId.optional(), }), - }) + }), ); export const InstanceNetworkInterfaceDeleteParams = z.preprocess( @@ -4012,7 +4018,7 @@ export const InstanceNetworkInterfaceDeleteParams = z.preprocess( instance: NameOrId.optional(), project: NameOrId.optional(), }), - }) + }), ); export const PingParams = z.preprocess( @@ -4020,7 +4026,7 @@ export const PingParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const PolicyViewParams = z.preprocess( @@ -4028,7 +4034,7 @@ export const PolicyViewParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const PolicyUpdateParams = z.preprocess( @@ -4036,7 +4042,7 @@ export const PolicyUpdateParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const ProjectListParams = z.preprocess( @@ -4048,7 +4054,7 @@ export const ProjectListParams = z.preprocess( pageToken: z.string().optional(), sortBy: NameOrIdSortMode.optional(), }), - }) + }), ); export const ProjectCreateParams = z.preprocess( @@ -4056,7 +4062,7 @@ export const ProjectCreateParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const ProjectViewParams = z.preprocess( @@ -4066,7 +4072,7 @@ export const ProjectViewParams = z.preprocess( project: NameOrId, }), query: z.object({}), - }) + }), ); export const ProjectUpdateParams = z.preprocess( @@ -4076,7 +4082,7 @@ export const ProjectUpdateParams = z.preprocess( project: NameOrId, }), query: z.object({}), - }) + }), ); export const ProjectDeleteParams = z.preprocess( @@ -4086,7 +4092,7 @@ export const ProjectDeleteParams = z.preprocess( project: NameOrId, }), query: z.object({}), - }) + }), ); export const ProjectPolicyViewParams = z.preprocess( @@ -4096,7 +4102,7 @@ export const ProjectPolicyViewParams = z.preprocess( project: NameOrId, }), query: z.object({}), - }) + }), ); export const ProjectPolicyUpdateParams = z.preprocess( @@ -4106,7 +4112,7 @@ export const ProjectPolicyUpdateParams = z.preprocess( project: NameOrId, }), query: z.object({}), - }) + }), ); export const SnapshotListParams = z.preprocess( @@ -4119,7 +4125,7 @@ export const SnapshotListParams = z.preprocess( project: NameOrId.optional(), sortBy: NameOrIdSortMode.optional(), }), - }) + }), ); export const SnapshotCreateParams = z.preprocess( @@ -4129,7 +4135,7 @@ export const SnapshotCreateParams = z.preprocess( query: z.object({ project: NameOrId, }), - }) + }), ); export const SnapshotViewParams = z.preprocess( @@ -4141,7 +4147,7 @@ export const SnapshotViewParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const SnapshotDeleteParams = z.preprocess( @@ -4153,7 +4159,7 @@ export const SnapshotDeleteParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const PhysicalDiskListParams = z.preprocess( @@ -4165,7 +4171,7 @@ export const PhysicalDiskListParams = z.preprocess( pageToken: z.string().optional(), sortBy: IdSortMode.optional(), }), - }) + }), ); export const RackListParams = z.preprocess( @@ -4177,7 +4183,7 @@ export const RackListParams = z.preprocess( pageToken: z.string().optional(), sortBy: IdSortMode.optional(), }), - }) + }), ); export const RackViewParams = z.preprocess( @@ -4187,7 +4193,7 @@ export const RackViewParams = z.preprocess( rackId: z.string().uuid(), }), query: z.object({}), - }) + }), ); export const SledListParams = z.preprocess( @@ -4199,7 +4205,7 @@ export const SledListParams = z.preprocess( pageToken: z.string().optional(), sortBy: IdSortMode.optional(), }), - }) + }), ); export const SledAddParams = z.preprocess( @@ -4207,7 +4213,7 @@ export const SledAddParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const SledViewParams = z.preprocess( @@ -4217,7 +4223,7 @@ export const SledViewParams = z.preprocess( sledId: z.string().uuid(), }), query: z.object({}), - }) + }), ); export const SledPhysicalDiskListParams = z.preprocess( @@ -4231,7 +4237,7 @@ export const SledPhysicalDiskListParams = z.preprocess( pageToken: z.string().optional(), sortBy: IdSortMode.optional(), }), - }) + }), ); export const SledInstanceListParams = z.preprocess( @@ -4245,7 +4251,7 @@ export const SledInstanceListParams = z.preprocess( pageToken: z.string().optional(), sortBy: IdSortMode.optional(), }), - }) + }), ); export const SledSetProvisionPolicyParams = z.preprocess( @@ -4255,7 +4261,7 @@ export const SledSetProvisionPolicyParams = z.preprocess( sledId: z.string().uuid(), }), query: z.object({}), - }) + }), ); export const SledListUninitializedParams = z.preprocess( @@ -4266,7 +4272,7 @@ export const SledListUninitializedParams = z.preprocess( limit: z.number().min(1).max(4294967295).optional(), pageToken: z.string().optional(), }), - }) + }), ); export const NetworkingSwitchPortListParams = z.preprocess( @@ -4279,7 +4285,7 @@ export const NetworkingSwitchPortListParams = z.preprocess( sortBy: IdSortMode.optional(), switchPortId: z.string().uuid().optional(), }), - }) + }), ); export const NetworkingSwitchPortApplySettingsParams = z.preprocess( @@ -4292,7 +4298,7 @@ export const NetworkingSwitchPortApplySettingsParams = z.preprocess( rackId: z.string().uuid(), switchLocation: Name, }), - }) + }), ); export const NetworkingSwitchPortClearSettingsParams = z.preprocess( @@ -4305,7 +4311,7 @@ export const NetworkingSwitchPortClearSettingsParams = z.preprocess( rackId: z.string().uuid(), switchLocation: Name, }), - }) + }), ); export const SwitchListParams = z.preprocess( @@ -4317,7 +4323,7 @@ export const SwitchListParams = z.preprocess( pageToken: z.string().optional(), sortBy: IdSortMode.optional(), }), - }) + }), ); export const SwitchViewParams = z.preprocess( @@ -4327,7 +4333,7 @@ export const SwitchViewParams = z.preprocess( switchId: z.string().uuid(), }), query: z.object({}), - }) + }), ); export const SiloIdentityProviderListParams = z.preprocess( @@ -4340,7 +4346,7 @@ export const SiloIdentityProviderListParams = z.preprocess( silo: NameOrId.optional(), sortBy: NameOrIdSortMode.optional(), }), - }) + }), ); export const LocalIdpUserCreateParams = z.preprocess( @@ -4350,7 +4356,7 @@ export const LocalIdpUserCreateParams = z.preprocess( query: z.object({ silo: NameOrId, }), - }) + }), ); export const LocalIdpUserDeleteParams = z.preprocess( @@ -4362,7 +4368,7 @@ export const LocalIdpUserDeleteParams = z.preprocess( query: z.object({ silo: NameOrId, }), - }) + }), ); export const LocalIdpUserSetPasswordParams = z.preprocess( @@ -4374,7 +4380,7 @@ export const LocalIdpUserSetPasswordParams = z.preprocess( query: z.object({ silo: NameOrId, }), - }) + }), ); export const SamlIdentityProviderCreateParams = z.preprocess( @@ -4384,7 +4390,7 @@ export const SamlIdentityProviderCreateParams = z.preprocess( query: z.object({ silo: NameOrId, }), - }) + }), ); export const SamlIdentityProviderViewParams = z.preprocess( @@ -4396,7 +4402,7 @@ export const SamlIdentityProviderViewParams = z.preprocess( query: z.object({ silo: NameOrId, }), - }) + }), ); export const IpPoolListParams = z.preprocess( @@ -4408,7 +4414,7 @@ export const IpPoolListParams = z.preprocess( pageToken: z.string().optional(), sortBy: NameOrIdSortMode.optional(), }), - }) + }), ); export const IpPoolCreateParams = z.preprocess( @@ -4416,7 +4422,7 @@ export const IpPoolCreateParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const IpPoolViewParams = z.preprocess( @@ -4426,7 +4432,7 @@ export const IpPoolViewParams = z.preprocess( pool: NameOrId, }), query: z.object({}), - }) + }), ); export const IpPoolUpdateParams = z.preprocess( @@ -4436,7 +4442,7 @@ export const IpPoolUpdateParams = z.preprocess( pool: NameOrId, }), query: z.object({}), - }) + }), ); export const IpPoolDeleteParams = z.preprocess( @@ -4446,7 +4452,7 @@ export const IpPoolDeleteParams = z.preprocess( pool: NameOrId, }), query: z.object({}), - }) + }), ); export const IpPoolRangeListParams = z.preprocess( @@ -4459,7 +4465,7 @@ export const IpPoolRangeListParams = z.preprocess( limit: z.number().min(1).max(4294967295).optional(), pageToken: z.string().optional(), }), - }) + }), ); export const IpPoolRangeAddParams = z.preprocess( @@ -4469,7 +4475,7 @@ export const IpPoolRangeAddParams = z.preprocess( pool: NameOrId, }), query: z.object({}), - }) + }), ); export const IpPoolRangeRemoveParams = z.preprocess( @@ -4479,7 +4485,7 @@ export const IpPoolRangeRemoveParams = z.preprocess( pool: NameOrId, }), query: z.object({}), - }) + }), ); export const IpPoolSiloListParams = z.preprocess( @@ -4493,7 +4499,7 @@ export const IpPoolSiloListParams = z.preprocess( pageToken: z.string().optional(), sortBy: IdSortMode.optional(), }), - }) + }), ); export const IpPoolSiloLinkParams = z.preprocess( @@ -4503,7 +4509,7 @@ export const IpPoolSiloLinkParams = z.preprocess( pool: NameOrId, }), query: z.object({}), - }) + }), ); export const IpPoolSiloUpdateParams = z.preprocess( @@ -4514,7 +4520,7 @@ export const IpPoolSiloUpdateParams = z.preprocess( silo: NameOrId, }), query: z.object({}), - }) + }), ); export const IpPoolSiloUnlinkParams = z.preprocess( @@ -4525,7 +4531,7 @@ export const IpPoolSiloUnlinkParams = z.preprocess( silo: NameOrId, }), query: z.object({}), - }) + }), ); export const IpPoolServiceViewParams = z.preprocess( @@ -4533,7 +4539,7 @@ export const IpPoolServiceViewParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const IpPoolServiceRangeListParams = z.preprocess( @@ -4544,7 +4550,7 @@ export const IpPoolServiceRangeListParams = z.preprocess( limit: z.number().min(1).max(4294967295).optional(), pageToken: z.string().optional(), }), - }) + }), ); export const IpPoolServiceRangeAddParams = z.preprocess( @@ -4552,7 +4558,7 @@ export const IpPoolServiceRangeAddParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const IpPoolServiceRangeRemoveParams = z.preprocess( @@ -4560,7 +4566,7 @@ export const IpPoolServiceRangeRemoveParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const SystemMetricParams = z.preprocess( @@ -4577,7 +4583,7 @@ export const SystemMetricParams = z.preprocess( startTime: z.coerce.date().optional(), silo: NameOrId.optional(), }), - }) + }), ); export const NetworkingAddressLotListParams = z.preprocess( @@ -4589,7 +4595,7 @@ export const NetworkingAddressLotListParams = z.preprocess( pageToken: z.string().optional(), sortBy: NameOrIdSortMode.optional(), }), - }) + }), ); export const NetworkingAddressLotCreateParams = z.preprocess( @@ -4597,7 +4603,7 @@ export const NetworkingAddressLotCreateParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const NetworkingAddressLotDeleteParams = z.preprocess( @@ -4607,7 +4613,7 @@ export const NetworkingAddressLotDeleteParams = z.preprocess( addressLot: NameOrId, }), query: z.object({}), - }) + }), ); export const NetworkingAddressLotBlockListParams = z.preprocess( @@ -4621,7 +4627,7 @@ export const NetworkingAddressLotBlockListParams = z.preprocess( pageToken: z.string().optional(), sortBy: IdSortMode.optional(), }), - }) + }), ); export const NetworkingBfdDisableParams = z.preprocess( @@ -4629,7 +4635,7 @@ export const NetworkingBfdDisableParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const NetworkingBfdEnableParams = z.preprocess( @@ -4637,7 +4643,7 @@ export const NetworkingBfdEnableParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const NetworkingBfdStatusParams = z.preprocess( @@ -4645,7 +4651,7 @@ export const NetworkingBfdStatusParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const NetworkingBgpConfigListParams = z.preprocess( @@ -4658,7 +4664,7 @@ export const NetworkingBgpConfigListParams = z.preprocess( pageToken: z.string().optional(), sortBy: NameOrIdSortMode.optional(), }), - }) + }), ); export const NetworkingBgpConfigCreateParams = z.preprocess( @@ -4666,7 +4672,7 @@ export const NetworkingBgpConfigCreateParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const NetworkingBgpConfigDeleteParams = z.preprocess( @@ -4676,7 +4682,7 @@ export const NetworkingBgpConfigDeleteParams = z.preprocess( query: z.object({ nameOrId: NameOrId, }), - }) + }), ); export const NetworkingBgpAnnounceSetListParams = z.preprocess( @@ -4686,7 +4692,7 @@ export const NetworkingBgpAnnounceSetListParams = z.preprocess( query: z.object({ nameOrId: NameOrId, }), - }) + }), ); export const NetworkingBgpAnnounceSetCreateParams = z.preprocess( @@ -4694,7 +4700,7 @@ export const NetworkingBgpAnnounceSetCreateParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const NetworkingBgpAnnounceSetDeleteParams = z.preprocess( @@ -4704,7 +4710,7 @@ export const NetworkingBgpAnnounceSetDeleteParams = z.preprocess( query: z.object({ nameOrId: NameOrId, }), - }) + }), ); export const NetworkingBgpImportedRoutesIpv4Params = z.preprocess( @@ -4714,7 +4720,7 @@ export const NetworkingBgpImportedRoutesIpv4Params = z.preprocess( query: z.object({ asn: z.number().min(0).max(4294967295), }), - }) + }), ); export const NetworkingBgpStatusParams = z.preprocess( @@ -4722,7 +4728,7 @@ export const NetworkingBgpStatusParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const NetworkingLoopbackAddressListParams = z.preprocess( @@ -4734,7 +4740,7 @@ export const NetworkingLoopbackAddressListParams = z.preprocess( pageToken: z.string().optional(), sortBy: IdSortMode.optional(), }), - }) + }), ); export const NetworkingLoopbackAddressCreateParams = z.preprocess( @@ -4742,7 +4748,7 @@ export const NetworkingLoopbackAddressCreateParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const NetworkingLoopbackAddressDeleteParams = z.preprocess( @@ -4755,7 +4761,7 @@ export const NetworkingLoopbackAddressDeleteParams = z.preprocess( switchLocation: Name, }), query: z.object({}), - }) + }), ); export const NetworkingSwitchPortSettingsListParams = z.preprocess( @@ -4768,7 +4774,7 @@ export const NetworkingSwitchPortSettingsListParams = z.preprocess( portSettings: NameOrId.optional(), sortBy: NameOrIdSortMode.optional(), }), - }) + }), ); export const NetworkingSwitchPortSettingsCreateParams = z.preprocess( @@ -4776,7 +4782,7 @@ export const NetworkingSwitchPortSettingsCreateParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const NetworkingSwitchPortSettingsDeleteParams = z.preprocess( @@ -4786,7 +4792,7 @@ export const NetworkingSwitchPortSettingsDeleteParams = z.preprocess( query: z.object({ portSettings: NameOrId.optional(), }), - }) + }), ); export const NetworkingSwitchPortSettingsViewParams = z.preprocess( @@ -4796,7 +4802,7 @@ export const NetworkingSwitchPortSettingsViewParams = z.preprocess( port: NameOrId, }), query: z.object({}), - }) + }), ); export const SystemPolicyViewParams = z.preprocess( @@ -4804,7 +4810,7 @@ export const SystemPolicyViewParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const SystemPolicyUpdateParams = z.preprocess( @@ -4812,7 +4818,7 @@ export const SystemPolicyUpdateParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const RoleListParams = z.preprocess( @@ -4823,7 +4829,7 @@ export const RoleListParams = z.preprocess( limit: z.number().min(1).max(4294967295).optional(), pageToken: z.string().optional(), }), - }) + }), ); export const RoleViewParams = z.preprocess( @@ -4833,7 +4839,7 @@ export const RoleViewParams = z.preprocess( roleName: z.string(), }), query: z.object({}), - }) + }), ); export const SystemQuotasListParams = z.preprocess( @@ -4845,7 +4851,7 @@ export const SystemQuotasListParams = z.preprocess( pageToken: z.string().optional(), sortBy: IdSortMode.optional(), }), - }) + }), ); export const SiloListParams = z.preprocess( @@ -4857,7 +4863,7 @@ export const SiloListParams = z.preprocess( pageToken: z.string().optional(), sortBy: NameOrIdSortMode.optional(), }), - }) + }), ); export const SiloCreateParams = z.preprocess( @@ -4865,7 +4871,7 @@ export const SiloCreateParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const SiloViewParams = z.preprocess( @@ -4875,7 +4881,7 @@ export const SiloViewParams = z.preprocess( silo: NameOrId, }), query: z.object({}), - }) + }), ); export const SiloDeleteParams = z.preprocess( @@ -4885,7 +4891,7 @@ export const SiloDeleteParams = z.preprocess( silo: NameOrId, }), query: z.object({}), - }) + }), ); export const SiloIpPoolListParams = z.preprocess( @@ -4899,7 +4905,7 @@ export const SiloIpPoolListParams = z.preprocess( pageToken: z.string().optional(), sortBy: NameOrIdSortMode.optional(), }), - }) + }), ); export const SiloPolicyViewParams = z.preprocess( @@ -4909,7 +4915,7 @@ export const SiloPolicyViewParams = z.preprocess( silo: NameOrId, }), query: z.object({}), - }) + }), ); export const SiloPolicyUpdateParams = z.preprocess( @@ -4919,7 +4925,7 @@ export const SiloPolicyUpdateParams = z.preprocess( silo: NameOrId, }), query: z.object({}), - }) + }), ); export const SiloQuotasViewParams = z.preprocess( @@ -4929,7 +4935,7 @@ export const SiloQuotasViewParams = z.preprocess( silo: NameOrId, }), query: z.object({}), - }) + }), ); export const SiloQuotasUpdateParams = z.preprocess( @@ -4939,7 +4945,7 @@ export const SiloQuotasUpdateParams = z.preprocess( silo: NameOrId, }), query: z.object({}), - }) + }), ); export const SiloUserListParams = z.preprocess( @@ -4952,7 +4958,7 @@ export const SiloUserListParams = z.preprocess( silo: NameOrId.optional(), sortBy: IdSortMode.optional(), }), - }) + }), ); export const SiloUserViewParams = z.preprocess( @@ -4964,7 +4970,7 @@ export const SiloUserViewParams = z.preprocess( query: z.object({ silo: NameOrId, }), - }) + }), ); export const UserBuiltinListParams = z.preprocess( @@ -4976,7 +4982,7 @@ export const UserBuiltinListParams = z.preprocess( pageToken: z.string().optional(), sortBy: NameSortMode.optional(), }), - }) + }), ); export const UserBuiltinViewParams = z.preprocess( @@ -4986,7 +4992,7 @@ export const UserBuiltinViewParams = z.preprocess( user: NameOrId, }), query: z.object({}), - }) + }), ); export const SiloUtilizationListParams = z.preprocess( @@ -4998,7 +5004,7 @@ export const SiloUtilizationListParams = z.preprocess( pageToken: z.string().optional(), sortBy: NameOrIdSortMode.optional(), }), - }) + }), ); export const SiloUtilizationViewParams = z.preprocess( @@ -5008,7 +5014,7 @@ export const SiloUtilizationViewParams = z.preprocess( silo: NameOrId, }), query: z.object({}), - }) + }), ); export const UserListParams = z.preprocess( @@ -5021,7 +5027,7 @@ export const UserListParams = z.preprocess( pageToken: z.string().optional(), sortBy: IdSortMode.optional(), }), - }) + }), ); export const UtilizationViewParams = z.preprocess( @@ -5029,7 +5035,7 @@ export const UtilizationViewParams = z.preprocess( z.object({ path: z.object({}), query: z.object({}), - }) + }), ); export const VpcFirewallRulesViewParams = z.preprocess( @@ -5040,7 +5046,7 @@ export const VpcFirewallRulesViewParams = z.preprocess( project: NameOrId.optional(), vpc: NameOrId, }), - }) + }), ); export const VpcFirewallRulesUpdateParams = z.preprocess( @@ -5051,7 +5057,7 @@ export const VpcFirewallRulesUpdateParams = z.preprocess( project: NameOrId.optional(), vpc: NameOrId, }), - }) + }), ); export const VpcSubnetListParams = z.preprocess( @@ -5065,7 +5071,7 @@ export const VpcSubnetListParams = z.preprocess( sortBy: NameOrIdSortMode.optional(), vpc: NameOrId.optional(), }), - }) + }), ); export const VpcSubnetCreateParams = z.preprocess( @@ -5076,7 +5082,7 @@ export const VpcSubnetCreateParams = z.preprocess( project: NameOrId.optional(), vpc: NameOrId, }), - }) + }), ); export const VpcSubnetViewParams = z.preprocess( @@ -5089,7 +5095,7 @@ export const VpcSubnetViewParams = z.preprocess( project: NameOrId.optional(), vpc: NameOrId.optional(), }), - }) + }), ); export const VpcSubnetUpdateParams = z.preprocess( @@ -5102,7 +5108,7 @@ export const VpcSubnetUpdateParams = z.preprocess( project: NameOrId.optional(), vpc: NameOrId.optional(), }), - }) + }), ); export const VpcSubnetDeleteParams = z.preprocess( @@ -5115,7 +5121,7 @@ export const VpcSubnetDeleteParams = z.preprocess( project: NameOrId.optional(), vpc: NameOrId.optional(), }), - }) + }), ); export const VpcSubnetListNetworkInterfacesParams = z.preprocess( @@ -5131,7 +5137,7 @@ export const VpcSubnetListNetworkInterfacesParams = z.preprocess( sortBy: NameOrIdSortMode.optional(), vpc: NameOrId.optional(), }), - }) + }), ); export const VpcListParams = z.preprocess( @@ -5144,7 +5150,7 @@ export const VpcListParams = z.preprocess( project: NameOrId.optional(), sortBy: NameOrIdSortMode.optional(), }), - }) + }), ); export const VpcCreateParams = z.preprocess( @@ -5154,7 +5160,7 @@ export const VpcCreateParams = z.preprocess( query: z.object({ project: NameOrId, }), - }) + }), ); export const VpcViewParams = z.preprocess( @@ -5166,7 +5172,7 @@ export const VpcViewParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const VpcUpdateParams = z.preprocess( @@ -5178,7 +5184,7 @@ export const VpcUpdateParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); export const VpcDeleteParams = z.preprocess( @@ -5190,5 +5196,5 @@ export const VpcDeleteParams = z.preprocess( query: z.object({ project: NameOrId.optional(), }), - }) + }), ); diff --git a/oxide-api/tsconfig.json b/oxide-api/tsconfig.json new file mode 100644 index 0000000..da15fd8 --- /dev/null +++ b/oxide-api/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "noEmit": true, + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "experimentalDecorators": true, + "lib": ["es2019", "dom", "DOM.Iterable"], + "module": "es2020", + "moduleResolution": "node", + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "target": "ES2020" + } +} diff --git a/.eslintrc.cjs b/oxide-openapi-gen-ts/.eslintrc.cjs similarity index 100% rename from .eslintrc.cjs rename to oxide-openapi-gen-ts/.eslintrc.cjs diff --git a/oxide-openapi-gen-ts/README.md b/oxide-openapi-gen-ts/README.md new file mode 100644 index 0000000..079f703 --- /dev/null +++ b/oxide-openapi-gen-ts/README.md @@ -0,0 +1,58 @@ +# @oxide/openapi-gen-ts + +This is a TypeScript OpenAPI client generator built for use with +schemas generated by [Dropshot](https://github.com/oxidecomputer/dropshot). It has +not been tested on any other specs and is unlikely to handle them well. + +## Usage + +```sh +npx @oxide/openapi-gen-ts@version <schema url or file> <output dir> +``` + +Note that fixing a version with `@0.1.0` is important because you don't want +your generated output to between runs. See the Versioning section below for +details. + +## Interesting files + +The core logic for looping over the spec and creating the methods is in +[`src/client/api.ts`](./src/client/api.ts) and the mapping from +OpenAPI schemas to TS types is in [`src/schema/types.ts`](./src/schema/types.ts). The mapping from OpenAPI schemas to Zod schemas is in +[`src/schema/zod.ts`](./src/schema/zod.ts). + +The files in [`src/client/static/`](./src/client/static/) are copied over to +the client as-is during generation. We generate several distinct pieces: + +| File | Description | +| ----------------------------------------------- | ------------------------------------------------------------------------------------------------------ | +| [`Api.ts`](../api/src/Api.ts) | A [Fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)-based TS client to the Oxide API | +| [`validate.ts`](../api/src/validate.ts) | [Zod](https://github.com/colinhacks/zod) validators for API request and response types | +| [`msw-handlers.ts`](../api/src/msw-handlers.ts) | Helpers used to build a mock API with [Mock Service Worker](https://mswjs.io/) in the console repo | + +## Why a custom generator? + +We tried many existing generators, and while most worked in a basic sense, we +found it hard to make customizations, whether through CLI flags, templates, or +patching with [patch-package](https://github.com/ds300/patch-package). We +decided to prototype our own TS generator after seeing other Oxide devs do the +same for Rust ([progenitor](https://github.com/oxidecomputer/progenitor) and +[oxide.rs](https://github.com/oxidecomputer/oxide.rs)) and Go +([oxide.go](https://github.com/oxidecomputer/oxide.go)). It quickly became clear +that a special-purpose generator could be dramatically simpler than a general +one, so writing one was easier than existing generators made it look. + +The TypeScript client code will be written to `oxide-api/src`. + +## Versioning scheme + +Generator versions on npm are semver-ish. Breaking changes to the generator's +own API (not the generated output) should be major releases. Currently, the +generator has no programmatic API and can only be used as a CLI app (e.g., +through `npx`), so we will consider the CLI to be the external API. + +| Version bump | Example changes | +| ------------ | -------------------------------------------------------------- | +| Major | Breaking changes to CLI args or flags | +| Minor | Semantic changes (i.e., modulo formatting) to generated output | +| Patch | Internal changes or non-meaningful changes to generated output | diff --git a/oxide-openapi-gen-ts/docs/releases.md b/oxide-openapi-gen-ts/docs/releases.md new file mode 100644 index 0000000..9eaa3ba --- /dev/null +++ b/oxide-openapi-gen-ts/docs/releases.md @@ -0,0 +1,25 @@ +# Releasing this library + +This is a spot for documentation not useful to the end user. + +## Publishing to npm + +This will change when we figure out automatic publishing from GH actions. + +``` +npm version <bump-type> + +# now commit and push that because we don't want to publish things that aren't +# on github + +# now build and publish +npm run build # runs tsup and outputs in dist +npm publish +``` + +## Generating the client in this repo + +```bash +# optional: update omicron sha in OMICRON_VERSION +./tools/gen.sh +``` diff --git a/package-lock.json b/oxide-openapi-gen-ts/package-lock.json similarity index 82% rename from package-lock.json rename to oxide-openapi-gen-ts/package-lock.json index fa96a92..9a9faa6 100644 --- a/package-lock.json +++ b/oxide-openapi-gen-ts/package-lock.json @@ -1,24 +1,32 @@ { - "name": "@oxide/api", - "version": "0.0.1", + "name": "@oxide/openapi-gen-ts", + "version": "0.1.13", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "@oxide/api", - "version": "0.0.1", + "name": "@oxide/openapi-gen-ts", + "version": "0.1.13", "license": "MPL-2.0", + "dependencies": { + "minimist": "^1.2.8", + "prettier": "2.7.1", + "swagger-parser": "^10.0.3", + "ts-pattern": "^4.0.5" + }, + "bin": { + "openapi-gen-ts": "dist/index.cjs" + }, "devDependencies": { + "@types/minimist": "^1.2.5", "@types/node": "^18.7.20", "@typescript-eslint/eslint-plugin": "^6.13.1", "@typescript-eslint/parser": "^6.13.1", "eslint": "^8.55.0", "msw": "^2.0.9", "openapi-types": "^12.0.2", - "prettier": "2.7.1", - "swagger-parser": "^10.0.3", - "ts-pattern": "^4.0.5", "tsafe": "^1.1.1", + "tsup": "^8.0.2", "tsx": "^4.7.1", "type-fest": "^3.1.0", "typescript": "^5.2.2", @@ -43,7 +51,6 @@ }, "node_modules/@apidevtools/json-schema-ref-parser": { "version": "9.0.9", - "dev": true, "license": "MIT", "dependencies": { "@jsdevtools/ono": "^7.1.3", @@ -54,7 +61,6 @@ }, "node_modules/@apidevtools/openapi-schemas": { "version": "2.1.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -62,12 +68,10 @@ }, "node_modules/@apidevtools/swagger-methods": { "version": "3.0.2", - "dev": true, "license": "MIT" }, "node_modules/@apidevtools/swagger-parser": { "version": "10.0.3", - "dev": true, "license": "MIT", "dependencies": { "@apidevtools/json-schema-ref-parser": "^9.0.6", @@ -565,6 +569,102 @@ "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", "dev": true }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@jest/schemas": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", @@ -577,15 +677,56 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, "node_modules/@jsdevtools/ono": { "version": "7.1.3", - "dev": true, "license": "MIT" }, "node_modules/@mswjs/cookies": { @@ -668,10 +809,20 @@ "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", "dev": true }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.13.0.tgz", - "integrity": "sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.17.2.tgz", + "integrity": "sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==", "cpu": [ "arm" ], @@ -682,9 +833,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.13.0.tgz", - "integrity": "sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.17.2.tgz", + "integrity": "sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==", "cpu": [ "arm64" ], @@ -695,9 +846,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.13.0.tgz", - "integrity": "sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.17.2.tgz", + "integrity": "sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==", "cpu": [ "arm64" ], @@ -708,9 +859,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.13.0.tgz", - "integrity": "sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.17.2.tgz", + "integrity": "sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==", "cpu": [ "x64" ], @@ -721,9 +872,22 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.13.0.tgz", - "integrity": "sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.17.2.tgz", + "integrity": "sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.17.2.tgz", + "integrity": "sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==", "cpu": [ "arm" ], @@ -734,9 +898,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.13.0.tgz", - "integrity": "sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.17.2.tgz", + "integrity": "sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==", "cpu": [ "arm64" ], @@ -747,9 +911,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.13.0.tgz", - "integrity": "sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.17.2.tgz", + "integrity": "sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==", "cpu": [ "arm64" ], @@ -759,10 +923,23 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.17.2.tgz", + "integrity": "sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.13.0.tgz", - "integrity": "sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.17.2.tgz", + "integrity": "sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==", "cpu": [ "riscv64" ], @@ -772,10 +949,23 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.17.2.tgz", + "integrity": "sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.13.0.tgz", - "integrity": "sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.17.2.tgz", + "integrity": "sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==", "cpu": [ "x64" ], @@ -786,9 +976,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.13.0.tgz", - "integrity": "sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.17.2.tgz", + "integrity": "sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==", "cpu": [ "x64" ], @@ -799,9 +989,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.13.0.tgz", - "integrity": "sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.17.2.tgz", + "integrity": "sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==", "cpu": [ "arm64" ], @@ -812,9 +1002,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.13.0.tgz", - "integrity": "sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.17.2.tgz", + "integrity": "sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==", "cpu": [ "ia32" ], @@ -825,9 +1015,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.0.tgz", - "integrity": "sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.17.2.tgz", + "integrity": "sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==", "cpu": [ "x64" ], @@ -894,7 +1084,12 @@ "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" + }, + "node_modules/@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", "dev": true }, "node_modules/@types/node": { @@ -1327,6 +1522,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, "node_modules/anymatch": { "version": "3.1.2", "dev": true, @@ -1341,7 +1542,6 @@ }, "node_modules/argparse": { "version": "2.0.1", - "dev": true, "license": "Python-2.0" }, "node_modules/array-union": { @@ -1491,6 +1691,21 @@ "optional": true, "peer": true }, + "node_modules/bundle-require": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-4.0.3.tgz", + "integrity": "sha512-2iscZ3fcthP2vka4Y7j277YJevwmsby/FpFDwjgw34Nl7dtCpt7zz/4TexmHMzY6KZEih7En9ImlbbgUNNQGtA==", + "dev": true, + "dependencies": { + "load-tsconfig": "^0.2.3" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "esbuild": ">=0.17" + } + }, "node_modules/cac": { "version": "6.7.14", "dev": true, @@ -1515,7 +1730,6 @@ }, "node_modules/call-me-maybe": { "version": "1.0.1", - "dev": true, "license": "MIT" }, "node_modules/callsites": { @@ -1699,6 +1913,15 @@ "node": ">= 0.8" } }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/concat-map": { "version": "0.0.1", "dev": true, @@ -1932,6 +2155,12 @@ "node": ">=12" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -2268,6 +2497,29 @@ "node": ">=0.10.0" } }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -2408,6 +2660,34 @@ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/form-data": { "version": "2.5.1", "dev": true, @@ -2492,6 +2772,18 @@ "node": ">=4" } }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-tsconfig": { "version": "4.7.3", "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.3.tgz", @@ -2737,6 +3029,15 @@ "node": ">= 6" } }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, "node_modules/iconv-lite": { "version": "0.6.3", "dev": true, @@ -2931,6 +3232,18 @@ "optional": true, "peer": true }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", @@ -2955,6 +3268,33 @@ "dev": true, "license": "ISC" }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/js-levenshtein": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", @@ -2972,7 +3312,6 @@ }, "node_modules/js-yaml": { "version": "4.1.0", - "dev": true, "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -3117,6 +3456,33 @@ "node": ">= 0.8.0" } }, + "node_modules/lilconfig": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", + "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/load-tsconfig": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", + "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, "node_modules/local-pkg": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", @@ -3156,12 +3522,10 @@ }, "node_modules/lodash.get": { "version": "4.4.2", - "dev": true, "license": "MIT" }, "node_modules/lodash.isequal": { "version": "4.5.0", - "dev": true, "license": "MIT" }, "node_modules/lodash.merge": { @@ -3170,6 +3534,12 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "dev": true + }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -3286,6 +3656,23 @@ "node": "*" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/mlly": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.6.1.tgz", @@ -3369,8 +3756,19 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, - "node_modules/nanoid": { - "version": "3.3.7", + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true, @@ -3422,6 +3820,18 @@ "node": ">=0.10.0" } }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/nwsapi": { "version": "2.2.2", "dev": true, @@ -3429,6 +3839,15 @@ "optional": true, "peer": true }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-inspect": { "version": "1.12.2", "dev": true, @@ -3464,8 +3883,7 @@ "node_modules/openapi-types": { "version": "12.0.2", "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.0.2.tgz", - "integrity": "sha512-GuTo7FyZjOIWVhIhQSWJVaws6A82sWIGyQogxxYBYKZ0NBdyP2CYSIgOwFfSB+UVoPExk/YzFpyYitHS8KVZtA==", - "dev": true + "integrity": "sha512-GuTo7FyZjOIWVhIhQSWJVaws6A82sWIGyQogxxYBYKZ0NBdyP2CYSIgOwFfSB+UVoPExk/YzFpyYitHS8KVZtA==" }, "node_modules/optionator": { "version": "0.8.3", @@ -3636,6 +4054,31 @@ "node": ">=8" } }, + "node_modules/path-scurry": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", + "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, "node_modules/path-to-regexp": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", @@ -3681,6 +4124,15 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/pkg-types": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", @@ -3720,6 +4172,41 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, "node_modules/prelude-ls": { "version": "1.1.2", "dev": true, @@ -3731,7 +4218,6 @@ }, "node_modules/prettier": { "version": "2.7.1", - "dev": true, "license": "MIT", "bin": { "prettier": "bin-prettier.js" @@ -3892,6 +4378,15 @@ "optional": true, "peer": true }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/resolve-pkg-maps": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", @@ -3938,6 +4433,41 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rollup": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.17.2.tgz", + "integrity": "sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.17.2", + "@rollup/rollup-android-arm64": "4.17.2", + "@rollup/rollup-darwin-arm64": "4.17.2", + "@rollup/rollup-darwin-x64": "4.17.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.17.2", + "@rollup/rollup-linux-arm-musleabihf": "4.17.2", + "@rollup/rollup-linux-arm64-gnu": "4.17.2", + "@rollup/rollup-linux-arm64-musl": "4.17.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.17.2", + "@rollup/rollup-linux-riscv64-gnu": "4.17.2", + "@rollup/rollup-linux-s390x-gnu": "4.17.2", + "@rollup/rollup-linux-x64-gnu": "4.17.2", + "@rollup/rollup-linux-x64-musl": "4.17.2", + "@rollup/rollup-win32-arm64-msvc": "4.17.2", + "@rollup/rollup-win32-ia32-msvc": "4.17.2", + "@rollup/rollup-win32-x64-msvc": "4.17.2", + "fsevents": "~2.3.2" + } + }, "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -4137,6 +4667,21 @@ "node": ">=8" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -4149,6 +4694,28 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -4173,6 +4740,74 @@ "url": "https://github.com/sponsors/antfu" } }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -4187,7 +4822,6 @@ }, "node_modules/swagger-parser": { "version": "10.0.3", - "dev": true, "license": "MIT", "dependencies": { "@apidevtools/swagger-parser": "10.0.3" @@ -4264,6 +4898,27 @@ "optional": true, "peer": true }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -4341,6 +4996,15 @@ "optional": true, "peer": true }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, "node_modules/ts-api-utils": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", @@ -4353,11 +5017,16 @@ "typescript": ">=4.2.0" } }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, "node_modules/ts-pattern": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-4.0.5.tgz", - "integrity": "sha512-Bq44KCEt7JVaNLa148mBCJkcQf4l7jtLEBDuDdeuLynWDA+1a60P4D0rMkqSM9mOKLQbIWUddE9h3XKyKwBeqA==", - "dev": true + "integrity": "sha512-Bq44KCEt7JVaNLa148mBCJkcQf4l7jtLEBDuDdeuLynWDA+1a60P4D0rMkqSM9mOKLQbIWUddE9h3XKyKwBeqA==" }, "node_modules/tsafe": { "version": "1.1.1", @@ -4371,6 +5040,93 @@ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", "dev": true }, + "node_modules/tsup": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.0.2.tgz", + "integrity": "sha512-NY8xtQXdH7hDUAZwcQdY/Vzlw9johQsaqf7iwZ6g1DOUlFYQ5/AtVAjTvihhEyeRlGo4dLRVHtrRaL35M1daqQ==", + "dev": true, + "dependencies": { + "bundle-require": "^4.0.0", + "cac": "^6.7.12", + "chokidar": "^3.5.1", + "debug": "^4.3.1", + "esbuild": "^0.19.2", + "execa": "^5.0.0", + "globby": "^11.0.3", + "joycon": "^3.0.1", + "postcss-load-config": "^4.0.1", + "resolve-from": "^5.0.0", + "rollup": "^4.0.2", + "source-map": "0.8.0-beta.0", + "sucrase": "^3.20.3", + "tree-kill": "^1.2.2" + }, + "bin": { + "tsup": "dist/cli-default.js", + "tsup-node": "dist/cli-node.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@microsoft/api-extractor": "^7.36.0", + "@swc/core": "^1", + "postcss": "^8.4.12", + "typescript": ">=4.5.0" + }, + "peerDependenciesMeta": { + "@microsoft/api-extractor": { + "optional": true + }, + "@swc/core": { + "optional": true + }, + "postcss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/tsup/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dev": true, + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tsup/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/tsup/node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "node_modules/tsup/node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, "node_modules/tsx": { "version": "4.7.1", "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.7.1.tgz", @@ -4487,7 +5243,6 @@ }, "node_modules/validator": { "version": "13.7.0", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.10" @@ -4570,38 +5325,6 @@ "url": "https://opencollective.com/vitest" } }, - "node_modules/vite/node_modules/rollup": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.13.0.tgz", - "integrity": "sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==", - "dev": true, - "dependencies": { - "@types/estree": "1.0.5" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.13.0", - "@rollup/rollup-android-arm64": "4.13.0", - "@rollup/rollup-darwin-arm64": "4.13.0", - "@rollup/rollup-darwin-x64": "4.13.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.13.0", - "@rollup/rollup-linux-arm64-gnu": "4.13.0", - "@rollup/rollup-linux-arm64-musl": "4.13.0", - "@rollup/rollup-linux-riscv64-gnu": "4.13.0", - "@rollup/rollup-linux-x64-gnu": "4.13.0", - "@rollup/rollup-linux-x64-musl": "4.13.0", - "@rollup/rollup-win32-arm64-msvc": "4.13.0", - "@rollup/rollup-win32-ia32-msvc": "4.13.0", - "@rollup/rollup-win32-x64-msvc": "4.13.0", - "fsevents": "~2.3.2" - } - }, "node_modules/vitest": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.4.0.tgz", @@ -4951,6 +5674,24 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "dev": true, @@ -5010,6 +5751,18 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "node_modules/yaml": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz", + "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==", + "dev": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/yargs": { "version": "17.6.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.0.tgz", @@ -5051,7 +5804,6 @@ }, "node_modules/z-schema": { "version": "5.0.2", - "dev": true, "license": "MIT", "dependencies": { "lodash.get": "^4.4.2", @@ -5070,7 +5822,6 @@ }, "node_modules/z-schema/node_modules/commander": { "version": "2.20.3", - "dev": true, "license": "MIT", "optional": true }, @@ -5093,7 +5844,6 @@ }, "@apidevtools/json-schema-ref-parser": { "version": "9.0.9", - "dev": true, "requires": { "@jsdevtools/ono": "^7.1.3", "@types/json-schema": "^7.0.6", @@ -5102,16 +5852,13 @@ } }, "@apidevtools/openapi-schemas": { - "version": "2.1.0", - "dev": true + "version": "2.1.0" }, "@apidevtools/swagger-methods": { - "version": "3.0.2", - "dev": true + "version": "3.0.2" }, "@apidevtools/swagger-parser": { "version": "10.0.3", - "dev": true, "requires": { "@apidevtools/json-schema-ref-parser": "^9.0.6", "@apidevtools/openapi-schemas": "^2.0.4", @@ -5370,6 +6117,71 @@ "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", "dev": true }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, "@jest/schemas": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", @@ -5379,15 +6191,47 @@ "@sinclair/typebox": "^0.27.8" } }, + "@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true + }, "@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, "@jsdevtools/ono": { - "version": "7.1.3", - "dev": true + "version": "7.1.3" }, "@mswjs/cookies": { "version": "1.1.0", @@ -5451,94 +6295,122 @@ "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", "dev": true }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true + }, "@rollup/rollup-android-arm-eabi": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.13.0.tgz", - "integrity": "sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.17.2.tgz", + "integrity": "sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==", "dev": true, "optional": true }, "@rollup/rollup-android-arm64": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.13.0.tgz", - "integrity": "sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.17.2.tgz", + "integrity": "sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==", "dev": true, "optional": true }, "@rollup/rollup-darwin-arm64": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.13.0.tgz", - "integrity": "sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.17.2.tgz", + "integrity": "sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==", "dev": true, "optional": true }, "@rollup/rollup-darwin-x64": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.13.0.tgz", - "integrity": "sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.17.2.tgz", + "integrity": "sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==", "dev": true, "optional": true }, "@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.13.0.tgz", - "integrity": "sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.17.2.tgz", + "integrity": "sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm-musleabihf": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.17.2.tgz", + "integrity": "sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==", "dev": true, "optional": true }, "@rollup/rollup-linux-arm64-gnu": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.13.0.tgz", - "integrity": "sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.17.2.tgz", + "integrity": "sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==", "dev": true, "optional": true }, "@rollup/rollup-linux-arm64-musl": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.13.0.tgz", - "integrity": "sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.17.2.tgz", + "integrity": "sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.17.2.tgz", + "integrity": "sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==", "dev": true, "optional": true }, "@rollup/rollup-linux-riscv64-gnu": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.13.0.tgz", - "integrity": "sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.17.2.tgz", + "integrity": "sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-s390x-gnu": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.17.2.tgz", + "integrity": "sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==", "dev": true, "optional": true }, "@rollup/rollup-linux-x64-gnu": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.13.0.tgz", - "integrity": "sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.17.2.tgz", + "integrity": "sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==", "dev": true, "optional": true }, "@rollup/rollup-linux-x64-musl": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.13.0.tgz", - "integrity": "sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.17.2.tgz", + "integrity": "sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==", "dev": true, "optional": true }, "@rollup/rollup-win32-arm64-msvc": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.13.0.tgz", - "integrity": "sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.17.2.tgz", + "integrity": "sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==", "dev": true, "optional": true }, "@rollup/rollup-win32-ia32-msvc": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.13.0.tgz", - "integrity": "sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.17.2.tgz", + "integrity": "sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==", "dev": true, "optional": true }, "@rollup/rollup-win32-x64-msvc": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.0.tgz", - "integrity": "sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.17.2.tgz", + "integrity": "sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==", "dev": true, "optional": true }, @@ -5593,7 +6465,12 @@ "@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" + }, + "@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", "dev": true }, "@types/node": { @@ -5874,6 +6751,12 @@ "color-convert": "^2.0.1" } }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, "anymatch": { "version": "3.1.2", "dev": true, @@ -5883,8 +6766,7 @@ } }, "argparse": { - "version": "2.0.1", - "dev": true + "version": "2.0.1" }, "array-union": { "version": "2.1.0", @@ -5983,6 +6865,15 @@ "optional": true, "peer": true }, + "bundle-require": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-4.0.3.tgz", + "integrity": "sha512-2iscZ3fcthP2vka4Y7j277YJevwmsby/FpFDwjgw34Nl7dtCpt7zz/4TexmHMzY6KZEih7En9ImlbbgUNNQGtA==", + "dev": true, + "requires": { + "load-tsconfig": "^0.2.3" + } + }, "cac": { "version": "6.7.14", "dev": true @@ -5998,8 +6889,7 @@ } }, "call-me-maybe": { - "version": "1.0.1", - "dev": true + "version": "1.0.1" }, "callsites": { "version": "3.1.0", @@ -6129,6 +7019,12 @@ "delayed-stream": "~1.0.0" } }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, "concat-map": { "version": "0.0.1", "dev": true @@ -6299,6 +7195,12 @@ "webidl-conversions": "^7.0.0" } }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -6537,6 +7439,23 @@ "version": "2.0.3", "dev": true }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, "external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -6645,6 +7564,24 @@ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "dependencies": { + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + } + } + }, "form-data": { "version": "2.5.1", "dev": true, @@ -6702,6 +7639,12 @@ "optional": true, "peer": true }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, "get-tsconfig": { "version": "4.7.3", "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.3.tgz", @@ -6878,6 +7821,12 @@ "debug": "4" } }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, "iconv-lite": { "version": "0.6.3", "dev": true, @@ -7010,6 +7959,12 @@ "optional": true, "peer": true }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, "is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", @@ -7026,6 +7981,22 @@ "version": "2.0.0", "dev": true }, + "jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, + "joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "dev": true + }, "js-levenshtein": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", @@ -7040,7 +8011,6 @@ }, "js-yaml": { "version": "4.1.0", - "dev": true, "requires": { "argparse": "^2.0.1" } @@ -7155,6 +8125,24 @@ "type-check": "~0.3.2" } }, + "lilconfig": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", + "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", + "dev": true + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "load-tsconfig": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", + "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", + "dev": true + }, "local-pkg": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", @@ -7181,12 +8169,10 @@ "dev": true }, "lodash.get": { - "version": "4.4.2", - "dev": true + "version": "4.4.2" }, "lodash.isequal": { - "version": "4.5.0", - "dev": true + "version": "4.5.0" }, "lodash.merge": { "version": "4.6.2", @@ -7194,6 +8180,12 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "dev": true + }, "log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -7273,6 +8265,17 @@ "brace-expansion": "^1.1.7" } }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + }, + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true + }, "mlly": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.6.1.tgz", @@ -7332,6 +8335,17 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, "nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", @@ -7357,12 +8371,27 @@ "version": "3.0.0", "dev": true }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, "nwsapi": { "version": "2.2.2", "dev": true, "optional": true, "peer": true }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, "object-inspect": { "version": "1.12.2", "dev": true, @@ -7386,8 +8415,7 @@ "openapi-types": { "version": "12.0.2", "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.0.2.tgz", - "integrity": "sha512-GuTo7FyZjOIWVhIhQSWJVaws6A82sWIGyQogxxYBYKZ0NBdyP2CYSIgOwFfSB+UVoPExk/YzFpyYitHS8KVZtA==", - "dev": true + "integrity": "sha512-GuTo7FyZjOIWVhIhQSWJVaws6A82sWIGyQogxxYBYKZ0NBdyP2CYSIgOwFfSB+UVoPExk/YzFpyYitHS8KVZtA==" }, "optionator": { "version": "0.8.3", @@ -7505,6 +8533,24 @@ "version": "3.1.1", "dev": true }, + "path-scurry": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", + "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "dev": true, + "requires": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true + } + } + }, "path-to-regexp": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", @@ -7535,6 +8581,12 @@ "version": "2.3.1", "dev": true }, + "pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true + }, "pkg-types": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", @@ -7557,6 +8609,16 @@ "source-map-js": "^1.1.0" } }, + "postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "requires": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + } + }, "prelude-ls": { "version": "1.1.2", "dev": true, @@ -7564,8 +8626,7 @@ "peer": true }, "prettier": { - "version": "2.7.1", - "dev": true + "version": "2.7.1" }, "pretty-format": { "version": "29.7.0", @@ -7670,6 +8731,12 @@ "optional": true, "peer": true }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, "resolve-pkg-maps": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", @@ -7699,6 +8766,32 @@ "glob": "^7.1.3" } }, + "rollup": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.17.2.tgz", + "integrity": "sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==", + "dev": true, + "requires": { + "@rollup/rollup-android-arm-eabi": "4.17.2", + "@rollup/rollup-android-arm64": "4.17.2", + "@rollup/rollup-darwin-arm64": "4.17.2", + "@rollup/rollup-darwin-x64": "4.17.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.17.2", + "@rollup/rollup-linux-arm-musleabihf": "4.17.2", + "@rollup/rollup-linux-arm64-gnu": "4.17.2", + "@rollup/rollup-linux-arm64-musl": "4.17.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.17.2", + "@rollup/rollup-linux-riscv64-gnu": "4.17.2", + "@rollup/rollup-linux-s390x-gnu": "4.17.2", + "@rollup/rollup-linux-x64-gnu": "4.17.2", + "@rollup/rollup-linux-x64-musl": "4.17.2", + "@rollup/rollup-win32-arm64-msvc": "4.17.2", + "@rollup/rollup-win32-ia32-msvc": "4.17.2", + "@rollup/rollup-win32-x64-msvc": "4.17.2", + "@types/estree": "1.0.5", + "fsevents": "~2.3.2" + } + }, "run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -7837,6 +8930,17 @@ "strip-ansi": "^6.0.1" } }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -7846,6 +8950,21 @@ "ansi-regex": "^5.0.1" } }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -7861,6 +8980,54 @@ "js-tokens": "^8.0.2" } }, + "sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + } + }, + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -7872,7 +9039,6 @@ }, "swagger-parser": { "version": "10.0.3", - "dev": true, "requires": { "@apidevtools/swagger-parser": "10.0.3" } @@ -7936,6 +9102,24 @@ } } }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -7996,6 +9180,12 @@ "optional": true, "peer": true }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true + }, "ts-api-utils": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", @@ -8003,11 +9193,16 @@ "dev": true, "requires": {} }, + "ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, "ts-pattern": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-4.0.5.tgz", - "integrity": "sha512-Bq44KCEt7JVaNLa148mBCJkcQf4l7jtLEBDuDdeuLynWDA+1a60P4D0rMkqSM9mOKLQbIWUddE9h3XKyKwBeqA==", - "dev": true + "integrity": "sha512-Bq44KCEt7JVaNLa148mBCJkcQf4l7jtLEBDuDdeuLynWDA+1a60P4D0rMkqSM9mOKLQbIWUddE9h3XKyKwBeqA==" }, "tsafe": { "version": "1.1.1", @@ -8021,6 +9216,65 @@ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", "dev": true }, + "tsup": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.0.2.tgz", + "integrity": "sha512-NY8xtQXdH7hDUAZwcQdY/Vzlw9johQsaqf7iwZ6g1DOUlFYQ5/AtVAjTvihhEyeRlGo4dLRVHtrRaL35M1daqQ==", + "dev": true, + "requires": { + "bundle-require": "^4.0.0", + "cac": "^6.7.12", + "chokidar": "^3.5.1", + "debug": "^4.3.1", + "esbuild": "^0.19.2", + "execa": "^5.0.0", + "globby": "^11.0.3", + "joycon": "^3.0.1", + "postcss-load-config": "^4.0.1", + "resolve-from": "^5.0.0", + "rollup": "^4.0.2", + "source-map": "0.8.0-beta.0", + "sucrase": "^3.20.3", + "tree-kill": "^1.2.2" + }, + "dependencies": { + "source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dev": true, + "requires": { + "whatwg-url": "^7.0.0" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, "tsx": { "version": "4.7.1", "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.7.1.tgz", @@ -8101,8 +9355,7 @@ "dev": true }, "validator": { - "version": "13.7.0", - "dev": true + "version": "13.7.0" }, "vite": { "version": "5.1.6", @@ -8114,31 +9367,6 @@ "fsevents": "~2.3.3", "postcss": "^8.4.35", "rollup": "^4.2.0" - }, - "dependencies": { - "rollup": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.13.0.tgz", - "integrity": "sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==", - "dev": true, - "requires": { - "@rollup/rollup-android-arm-eabi": "4.13.0", - "@rollup/rollup-android-arm64": "4.13.0", - "@rollup/rollup-darwin-arm64": "4.13.0", - "@rollup/rollup-darwin-x64": "4.13.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.13.0", - "@rollup/rollup-linux-arm64-gnu": "4.13.0", - "@rollup/rollup-linux-arm64-musl": "4.13.0", - "@rollup/rollup-linux-riscv64-gnu": "4.13.0", - "@rollup/rollup-linux-x64-gnu": "4.13.0", - "@rollup/rollup-linux-x64-musl": "4.13.0", - "@rollup/rollup-win32-arm64-msvc": "4.13.0", - "@rollup/rollup-win32-ia32-msvc": "4.13.0", - "@rollup/rollup-win32-x64-msvc": "4.13.0", - "@types/estree": "1.0.5", - "fsevents": "~2.3.2" - } - } } }, "vite-node": { @@ -8369,6 +9597,17 @@ "strip-ansi": "^6.0.0" } }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, "wrappy": { "version": "1.0.2", "dev": true @@ -8404,6 +9643,12 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "yaml": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz", + "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==", + "dev": true + }, "yargs": { "version": "17.6.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.0.tgz", @@ -8433,7 +9678,6 @@ }, "z-schema": { "version": "5.0.2", - "dev": true, "requires": { "commander": "^2.7.1", "lodash.get": "^4.4.2", @@ -8443,7 +9687,6 @@ "dependencies": { "commander": { "version": "2.20.3", - "dev": true, "optional": true } } diff --git a/oxide-openapi-gen-ts/package.json b/oxide-openapi-gen-ts/package.json new file mode 100644 index 0000000..46d309a --- /dev/null +++ b/oxide-openapi-gen-ts/package.json @@ -0,0 +1,75 @@ +{ + "name": "@oxide/openapi-gen-ts", + "version": "0.1.13", + "description": "OpenAPI client generator used to generate Oxide TypeScript SDK", + "keywords": [ + "oxide", + "oxide.ts", + "oxide sdk", + "OpenAPI client generator" + ], + "engines": { + "node": ">=18" + }, + "type": "module", + "main": "./dist/index.js", + "exports": { + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "bin": { + "openapi-gen-ts": "dist/index.cjs" + }, + "tsup": { + "clean": true, + "entry": [ + "src/index.ts" + ], + "format": [ + "cjs", + "esm" + ], + "shims": true + }, + "scripts": { + "build": "tsup-node && mkdir -p dist/static/ && cp src/client/static/util.ts dist/static/ && cp src/client/static/http-client.ts dist/static/", + "fmt": "prettier --write .", + "lint": "eslint .", + "pretest": "../tools/gen.sh", + "test": "vitest", + "test:ui": "vitest --ui", + "tsc": "tsc" + }, + "author": "Oxide Computer Company", + "license": "MPL-2.0", + "repository": { + "type": "git", + "url": "git+https://github.com/oxidecomputer/oxide.ts.git" + }, + "homepage": "https://github.com/oxidecomputer/oxide.ts#readme", + "optionalDependencies": { + "zod": "^3.20" + }, + "dependencies": { + "minimist": "^1.2.8", + "prettier": "2.7.1", + "swagger-parser": "^10.0.3", + "ts-pattern": "^4.0.5" + }, + "devDependencies": { + "@types/minimist": "^1.2.5", + "@types/node": "^18.7.20", + "@typescript-eslint/eslint-plugin": "^6.13.1", + "@typescript-eslint/parser": "^6.13.1", + "eslint": "^8.55.0", + "msw": "^2.0.9", + "openapi-types": "^12.0.2", + "tsafe": "^1.1.1", + "tsup": "^8.0.2", + "tsx": "^4.7.1", + "type-fest": "^3.1.0", + "typescript": "^5.2.2", + "vitest": "^1.4.0", + "zod": "3.21.1" + } +} diff --git a/generator/client/api.ts b/oxide-openapi-gen-ts/src/client/api.ts similarity index 99% rename from generator/client/api.ts rename to oxide-openapi-gen-ts/src/client/api.ts index 738ea8f..2e8377b 100644 --- a/generator/client/api.ts +++ b/oxide-openapi-gen-ts/src/client/api.ts @@ -74,8 +74,8 @@ function copyFile(sourceRelPath: string, destDirAbs: string) { } export function copyStaticFiles(destDir: string) { - copyFile("../../static/util.ts", destDir); - copyFile("../../static/http-client.ts", destDir); + copyFile("./static/util.ts", destDir); + copyFile("./static/http-client.ts", destDir); } export function generateApi(spec: OpenAPIV3.Document, destDir: string) { diff --git a/generator/client/base.ts b/oxide-openapi-gen-ts/src/client/base.ts similarity index 100% rename from generator/client/base.ts rename to oxide-openapi-gen-ts/src/client/base.ts diff --git a/generator/client/msw-handlers.ts b/oxide-openapi-gen-ts/src/client/msw-handlers.ts similarity index 100% rename from generator/client/msw-handlers.ts rename to oxide-openapi-gen-ts/src/client/msw-handlers.ts diff --git a/static/README.md b/oxide-openapi-gen-ts/src/client/static/README.md similarity index 100% rename from static/README.md rename to oxide-openapi-gen-ts/src/client/static/README.md diff --git a/static/http-client.test.ts b/oxide-openapi-gen-ts/src/client/static/http-client.test.ts similarity index 100% rename from static/http-client.test.ts rename to oxide-openapi-gen-ts/src/client/static/http-client.test.ts diff --git a/client/http-client.ts b/oxide-openapi-gen-ts/src/client/static/http-client.ts similarity index 100% rename from client/http-client.ts rename to oxide-openapi-gen-ts/src/client/static/http-client.ts diff --git a/static/util.test.ts b/oxide-openapi-gen-ts/src/client/static/util.test.ts similarity index 100% rename from static/util.test.ts rename to oxide-openapi-gen-ts/src/client/static/util.test.ts diff --git a/client/util.ts b/oxide-openapi-gen-ts/src/client/static/util.ts similarity index 100% rename from client/util.ts rename to oxide-openapi-gen-ts/src/client/static/util.ts diff --git a/generator/client/type-tests.ts b/oxide-openapi-gen-ts/src/client/type-tests.ts similarity index 100% rename from generator/client/type-tests.ts rename to oxide-openapi-gen-ts/src/client/type-tests.ts diff --git a/generator/client/zodValidators.ts b/oxide-openapi-gen-ts/src/client/zodValidators.ts similarity index 100% rename from generator/client/zodValidators.ts rename to oxide-openapi-gen-ts/src/client/zodValidators.ts diff --git a/oxide-openapi-gen-ts/src/index.ts b/oxide-openapi-gen-ts/src/index.ts new file mode 100644 index 0000000..c9e0d47 --- /dev/null +++ b/oxide-openapi-gen-ts/src/index.ts @@ -0,0 +1,106 @@ +#!/usr/bin/env node +/** + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright Oxide Computer Company + */ + +import SwaggerParser from "@apidevtools/swagger-parser"; +import type { OpenAPIV3 } from "openapi-types"; + +import { copyStaticFiles, generateApi } from "./client/api"; +import { generateMSWHandlers } from "./client/msw-handlers"; +import { generateTypeTests } from "./client/type-tests"; +import { generateZodValidators } from "./client/zodValidators"; +import { resolve } from "node:path"; +import { existsSync } from "node:fs"; +import parseArgs from "minimist"; + +function helpAndExit(msg?: string): never { + if (msg) console.log("Error: " + msg + "\n"); + console.log("Usage:"); + console.log(" gen <specFile> <destDir> [options]\n"); + console.log("Options:"); + console.log( + " --features Comma-separated list of features to generate. Default: none.", + ); + console.log(` Allowed values: ${ALL_FEATURES.join(", ")}`); + console.log(" -h, --help Show this help message and exit\n"); + console.log("Example:"); + console.log(" gen nexus-json generated-client --features zod,msw"); + process.exit(1); +} + +type Feature = "zod" | "msw" | "typetests"; +const ALL_FEATURES: Feature[] = ["zod", "msw", "typetests"]; +type Features = Record<Feature, boolean>; + +function parseFeatures(featuresArg: string | undefined) { + const features = + typeof featuresArg === "string" + ? featuresArg.split(",").map((f) => f.trim()) + : []; + + for (const feature of features) { + if (!ALL_FEATURES.includes(feature as Feature)) { + helpAndExit(`Unrecognized feature '${feature}'.`); + } + } + + const validated = features as Feature[]; + + return { + zod: validated.includes("zod"), + msw: validated.includes("msw"), + typetests: validated.includes("typetests"), + }; +} + +async function generate(specFile: string, destDir: string, features: Features) { + // destination directory is resolved relative to CWD + const destDirAbs = resolve(process.cwd(), destDir); + + if (!existsSync(destDirAbs)) { + throw new Error(`Error: destination directory does not exist. + Argument given: ${destDirAbs} + Resolved path: ${destDirAbs} +`); + } + + const rawSpec = await SwaggerParser.parse(specFile); + if (!("openapi" in rawSpec) || !rawSpec.openapi.startsWith("3.0")) { + throw new Error("Only OpenAPI 3.0 is currently supported"); + } + + // we're not actually changing anything from rawSpec to spec, we've + // just ruled out v2 and v3.1 + const spec = rawSpec as OpenAPIV3.Document; + + copyStaticFiles(destDirAbs); + generateApi(spec, destDirAbs); + if (features.typetests) generateTypeTests(spec, destDirAbs); + if (features.msw) generateMSWHandlers(spec, destDirAbs); + // msw requires zod + if (features.zod || features.msw) generateZodValidators(spec, destDirAbs); +} + +//////////////////////////////////// +// actually do the thing +//////////////////////////////////// + +const args = parseArgs(process.argv.slice(2), { + string: ["features"], + alias: { h: "help" }, +}); + +if (args.help) helpAndExit(); + +const [specFile, destDir] = args._; +if (!specFile) helpAndExit(`Missing <specFile>`); +if (!destDir) helpAndExit(`Missing <destdir>`); + +const features = parseFeatures(args.features); + +generate(specFile, destDir, features); diff --git a/generator/io.ts b/oxide-openapi-gen-ts/src/io.ts similarity index 100% rename from generator/io.ts rename to oxide-openapi-gen-ts/src/io.ts diff --git a/generator/schema/base.ts b/oxide-openapi-gen-ts/src/schema/base.ts similarity index 100% rename from generator/schema/base.ts rename to oxide-openapi-gen-ts/src/schema/base.ts diff --git a/generator/schema/types.ts b/oxide-openapi-gen-ts/src/schema/types.ts similarity index 100% rename from generator/schema/types.ts rename to oxide-openapi-gen-ts/src/schema/types.ts diff --git a/generator/schema/zod.test.ts b/oxide-openapi-gen-ts/src/schema/zod.test.ts similarity index 100% rename from generator/schema/zod.test.ts rename to oxide-openapi-gen-ts/src/schema/zod.test.ts diff --git a/generator/schema/zod.ts b/oxide-openapi-gen-ts/src/schema/zod.ts similarity index 100% rename from generator/schema/zod.ts rename to oxide-openapi-gen-ts/src/schema/zod.ts diff --git a/generator/util.test.ts b/oxide-openapi-gen-ts/src/util.test.ts similarity index 100% rename from generator/util.test.ts rename to oxide-openapi-gen-ts/src/util.test.ts diff --git a/generator/util.ts b/oxide-openapi-gen-ts/src/util.ts similarity index 100% rename from generator/util.ts rename to oxide-openapi-gen-ts/src/util.ts diff --git a/tsconfig.json b/oxide-openapi-gen-ts/tsconfig.json similarity index 98% rename from tsconfig.json rename to oxide-openapi-gen-ts/tsconfig.json index 7e49dea..4bbd77f 100644 --- a/tsconfig.json +++ b/oxide-openapi-gen-ts/tsconfig.json @@ -14,5 +14,5 @@ "strict": true, "target": "ES2020", "types": ["vite/client", "vitest/importMeta"] - }, + } } diff --git a/package.json b/package.json deleted file mode 100644 index c4b4df5..0000000 --- a/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "@oxide/api", - "version": "0.0.1", - "description": "The official JavaScript and TypeScript client SDK for interacting with the Oxide API", - "keywords": [ - "oxide", - "oxide.ts", - "oxide computer", - "oxide sdk" - ], - "engines": { - "node": ">=18" - }, - "scripts": { - "gen": "./tools/gen.sh $(cat ./OMICRON_VERSION) ./client", - "lint": "eslint .", - "postgen": "prettier --parser typescript --write ./client", - "pretest": "npm run gen", - "test": "vitest", - "test:ui": "vitest --ui", - "tsc": "tsc" - }, - "author": "", - "license": "MPL-2.0", - "optionalDependencies": { - "zod": "^3.20" - }, - "devDependencies": { - "@types/node": "^18.7.20", - "@typescript-eslint/eslint-plugin": "^6.13.1", - "@typescript-eslint/parser": "^6.13.1", - "eslint": "^8.55.0", - "msw": "^2.0.9", - "openapi-types": "^12.0.2", - "prettier": "2.7.1", - "swagger-parser": "^10.0.3", - "ts-pattern": "^4.0.5", - "tsafe": "^1.1.1", - "tsx": "^4.7.1", - "type-fest": "^3.1.0", - "typescript": "^5.2.2", - "vitest": "^1.4.0", - "zod": "3.21.1" - } -} diff --git a/tools/gen.sh b/tools/gen.sh index 63ba41d..8baf909 100755 --- a/tools/gen.sh +++ b/tools/gen.sh @@ -9,19 +9,9 @@ set -o errexit set -o pipefail -HELP="$( - cat <<EOF -usage: ./gen.sh [spec-file] [out-file] -EOF -)" - -if [[ $# != 2 ]]; then - echo "$HELP" - exit 2 -fi - -OMICRON_SHA="$1" -DEST_DIR="$2" +ROOT_DIR="$(dirname "$0")/.." +OMICRON_SHA=$(cat "$ROOT_DIR/OMICRON_VERSION") +DEST_DIR="$ROOT_DIR/oxide-api/src" SPEC_URL="https://raw.githubusercontent.com/oxidecomputer/omicron/$OMICRON_SHA/openapi/nexus.json" SPEC_FILE="./spec.json" @@ -29,4 +19,5 @@ SPEC_FILE="./spec.json" # TODO: we could get rid of this DL if a test didn't rely on it curl --fail "$SPEC_URL" -o $SPEC_FILE -tsx generator/index.ts $SPEC_FILE $DEST_DIR +npx tsx "$ROOT_DIR/oxide-openapi-gen-ts/src/index.ts" $SPEC_FILE $DEST_DIR --features zod,msw,typetests +npx prettier@3.2.5 --write --log-level error "$DEST_DIR"