diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 1cb788112..160b4276d 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -57,10 +57,7 @@ jobs: strategy: fail-fast: false matrix: - # Node.js v16 does not provide all necessary fetch types by default, so - # we cannot run tests for @connectrpc/connect-web. - # v16 is tested in a separate job below. - node-version: [22.7.0, 20.17.0, 18.20.4] + node-version: [22.7.0, 20.17.0, 18.20.4, 18.14.1] name: "test on Node.js ${{ matrix.node-version }}" steps: - uses: actions/checkout@v4 @@ -75,23 +72,3 @@ jobs: restore-keys: ${{ runner.os }}/test - run: npm ci - run: npx turbo run test - test16: - runs-on: ubuntu-22.04 - strategy: - fail-fast: false - matrix: - node-version: [16.20.2] - name: "test on Node.js ${{ matrix.node-version }}" - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version-file: .nvmrc - cache: "npm" - - uses: actions/cache@v4 - with: - path: .turbo - key: ${{ runner.os }}/test/${{ github.sha }} - restore-keys: ${{ runner.os }}/test - - run: npm ci - - run: npx turbo run test --filter '!@connectrpc/connect-web' diff --git a/.github/workflows/conformance-express.yaml b/.github/workflows/conformance-express.yaml index 1ffd8f0f8..48b1e6892 100644 --- a/.github/workflows/conformance-express.yaml +++ b/.github/workflows/conformance-express.yaml @@ -21,7 +21,7 @@ jobs: strategy: fail-fast: false matrix: - node-version: [22.7.0, 20.17.0, 18.20.4, 16.20.2] + node-version: [22.7.0, 20.17.0, 18.20.4, 18.14.1] name: "Node.js ${{ matrix.node-version }}" timeout-minutes: 10 steps: diff --git a/.github/workflows/conformance-fastify.yaml b/.github/workflows/conformance-fastify.yaml index 7c4ae2fae..150cdfa46 100644 --- a/.github/workflows/conformance-fastify.yaml +++ b/.github/workflows/conformance-fastify.yaml @@ -21,7 +21,7 @@ jobs: strategy: fail-fast: false matrix: - node-version: [22.7.0, 20.17.0, 18.20.4, 16.20.2] + node-version: [22.7.0, 20.17.0, 18.20.4, 18.14.1] name: "Node.js ${{ matrix.node-version }}" timeout-minutes: 10 steps: diff --git a/.github/workflows/conformance-node.yaml b/.github/workflows/conformance-node.yaml index 90d32c286..657611086 100644 --- a/.github/workflows/conformance-node.yaml +++ b/.github/workflows/conformance-node.yaml @@ -21,7 +21,7 @@ jobs: strategy: fail-fast: false matrix: - node-version: [22.7.0, 20.17.0, 18.20.4, 16.20.2] + node-version: [22.7.0, 20.17.0, 18.20.4, 18.14.1] side: [client, server] name: "Node.js ${{ matrix.node-version }} ${{ matrix.side }}" timeout-minutes: 10 diff --git a/.github/workflows/conformance-web.yaml b/.github/workflows/conformance-web.yaml index 2d1562c45..c4d3f4a6b 100644 --- a/.github/workflows/conformance-web.yaml +++ b/.github/workflows/conformance-web.yaml @@ -46,8 +46,7 @@ jobs: runs-on: ubuntu-22.04 strategy: matrix: - # Node.js v16 does not provide all necessary fetch types by default - node-version: [22.7.0, 20.17.0, 18.20.4, 18.16.0] + node-version: [22.7.0, 20.17.0, 18.20.4, 18.14.1] client: [promise, callback] name: "Node.js ${{ matrix.node-version }} ${{ matrix.client }}" timeout-minutes: 10 diff --git a/.gitignore b/.gitignore index efd07e81e..560db3f60 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ .wrangler node_modules /packages/*/dist +/packages/typescript-compat/*/dist /packages/connect-web/conformance/logs/* /packages/connect-web/logs/bstack* packages/connect-web/local.log diff --git a/README.md b/README.md index 7487521ee..30c261011 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,11 @@ +> [!IMPORTANT] +> You are looking at the release candidate for version 2. For the current stable version, see the branch [v1](https://github.com/connectrpc/connect-es/tree/v1). + # Connect for ECMAScript -[![License](https://img.shields.io/github/license/connectrpc/connect-es?color=blue)](./LICENSE) [![Build](https://github.com/connectrpc/connect-es/actions/workflows/ci.yaml/badge.svg?branch=main)](https://github.com/connectrpc/connect-es/actions/workflows/ci.yaml) [![NPM Version](https://img.shields.io/npm/v/@connectrpc/connect/latest?color=green&label=%40connectrpc%2Fconnect)](https://www.npmjs.com/package/@connectrpc/connect) [![NPM Version](https://img.shields.io/npm/v/@connectrpc/protoc-gen-connect-es/latest?color=green&label=%40connectrpc%2Fprotoc-gen-connect-es)](https://www.npmjs.com/package/@connectrpc/protoc-gen-connect-es) +[![License](https://img.shields.io/github/license/connectrpc/connect-es?color=blue)](./LICENSE) [![Build](https://github.com/connectrpc/connect-es/actions/workflows/ci.yaml/badge.svg?branch=main)](https://github.com/connectrpc/connect-es/actions/workflows/ci.yaml) [![NPM Version](https://img.shields.io/npm/v/@connectrpc/connect/latest?color=green&label=%40connectrpc%2Fconnect)](https://www.npmjs.com/package/@connectrpc/connect) Connect is a family of libraries for building type-safe APIs with different languages and platforms. [@connectrpc/connect](https://www.npmjs.com/package/@connectrpc/connect) brings them to TypeScript, @@ -62,7 +65,7 @@ to spin up a service in Node.js, and call it from the web, and from a gRPC clien in your terminal. You can serve your Connect RPCs with vanilla Node.js, or use our [server plugins](https://connectrpc.com/docs/node/server-plugins) -for **Fastify**, **Next.js**, and **Express**. We support Node.js v16 and later with +for **Fastify**, **Next.js**, and **Express**. We support Node.js v18.14.1 and later with the builtin `http` and `http2` modules. ## Other platforms @@ -77,8 +80,6 @@ be more than happy to chat! - [@connectrpc/connect](https://www.npmjs.com/package/@connectrpc/connect): RPC clients and servers for your schema ([source code](packages/connect)). -- [@connectrpc/protoc-gen-connect-es](https://www.npmjs.com/package/@connectrpc/protoc-gen-connect-es): - Code generator plugin for the services in your schema ([source code](packages/protoc-gen-connect-es)). - [@connectrpc/connect-web](https://www.npmjs.com/package/@connectrpc/connect-web): Adapters for web browsers, and any other platform that has the fetch API on board. - [@connectrpc/connect-node](https://www.npmjs.com/package/@connectrpc/connect-node): @@ -90,7 +91,7 @@ be more than happy to chat! - [@connectrpc/connect-express](https://www.npmjs.com/package/@connectrpc/connect-express): Adds your services to an [Express](https://expressjs.com/) server. -The libraries and the generated code are compatible with ES2017 and TypeScript 4.1. +The libraries and the generated code are compatible with ES2017 and TypeScript 4.9.5. ## Ecosystem @@ -110,10 +111,6 @@ The libraries and the generated code are compatible with ES2017 and TypeScript 4 gRPC-Web and Connect interoperability tests - [Buf Studio](https://buf.build/studio): web UI for ad-hoc RPCs -## Status: Stable - -All packages are stable and have reached a major version release. - ## Legal Offered under the [Apache 2 license](/LICENSE). diff --git a/package-lock.json b/package-lock.json index be34427c3..7e2e04ce7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,7 +7,6 @@ "name": "connect-es", "workspaces": [ "packages/connect", - "packages/protoc-gen-connect-es", "packages/connect-web", "packages/connect-node", "packages/connect-fastify", @@ -17,7 +16,8 @@ "packages/example", "packages/connect-migrate", "packages/connect-conformance", - "packages/connect-cloudflare" + "packages/connect-cloudflare", + "packages/typescript-compat/*" ], "devDependencies": { "@arethetypeswrong/cli": "^0.15.3", @@ -31,14 +31,12 @@ "prettier": "^3.3.3", "turbo": "^2.1.0", "typescript": "5.5.4" - }, - "engines": { - "node": ">=16", - "npm": ">=8" } }, "node_modules/@ampproject/remapping": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -50,10 +48,14 @@ }, "node_modules/@andrewbranch/untar.js": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@andrewbranch/untar.js/-/untar.js-1.0.3.tgz", + "integrity": "sha512-Jh15/qVmrLGhkKJBdXlK1+9tY4lZruYjsgkDFj08ZmDiWVBLJcqkok7Z0/R0In+i1rScBpJlSvrTS2Lm41Pbnw==", "dev": true }, "node_modules/@arethetypeswrong/cli": { - "version": "0.15.3", + "version": "0.15.4", + "resolved": "https://registry.npmjs.org/@arethetypeswrong/cli/-/cli-0.15.4.tgz", + "integrity": "sha512-YDbImAi1MGkouT7f2yAECpUMFhhA1J0EaXzIqoC5GGtK0xDgauLtcsZezm8tNq7d3wOFXH7OnY+IORYcG212rw==", "dev": true, "license": "MIT", "dependencies": { @@ -62,7 +64,7 @@ "cli-table3": "^0.6.3", "commander": "^10.0.1", "marked": "^9.1.2", - "marked-terminal": "^6.0.0", + "marked-terminal": "^7.1.0", "semver": "^7.5.4" }, "bin": { @@ -74,6 +76,8 @@ }, "node_modules/@arethetypeswrong/core": { "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@arethetypeswrong/core/-/core-0.15.1.tgz", + "integrity": "sha512-FYp6GBAgsNz81BkfItRz8RLZO03w5+BaeiPma1uCfmxTnxbtuMrI/dbzGiOk8VghO108uFI0oJo0OkewdSHw7g==", "dev": true, "license": "MIT", "dependencies": { @@ -90,6 +94,8 @@ }, "node_modules/@arethetypeswrong/core/node_modules/typescript": { "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -101,11 +107,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz", + "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==", + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.24.7", + "@babel/highlight": "^7.25.7", "picocolors": "^1.0.0" }, "engines": { @@ -113,28 +120,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", - "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.8.tgz", + "integrity": "sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", - "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.8.tgz", + "integrity": "sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==", + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helpers": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7", + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helpers": "^7.25.7", + "@babel/parser": "^7.25.8", + "@babel/template": "^7.25.7", + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.8", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -151,6 +160,8 @@ }, "node_modules/@babel/core/node_modules/json5": { "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "license": "MIT", "bin": { "json5": "lib/cli.js" @@ -161,44 +172,49 @@ }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", - "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz", + "integrity": "sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.7", + "@babel/types": "^7.25.7", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz", + "integrity": "sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.7" + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", - "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz", + "integrity": "sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==", + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.24.7", - "@babel/helper-validator-option": "^7.24.7", - "browserslist": "^4.22.2", + "@babel/compat-data": "^7.25.7", + "@babel/helper-validator-option": "^7.25.7", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -210,23 +226,23 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz", - "integrity": "sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-member-expression-to-functions": "^7.24.7", - "@babel/helper-optimise-call-expression": "^7.24.7", - "@babel/helper-replace-supers": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.7.tgz", + "integrity": "sha512-bD4WQhbkx80mAyj/WCm4ZHcF4rDxkoLFO6ph8/5/mQ3z4vAzltQXAmbc7GvVJx5H+lk5Mi5EmbTeox5nMGCsbw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.7", + "@babel/helper-member-expression-to-functions": "^7.25.7", + "@babel/helper-optimise-call-expression": "^7.25.7", + "@babel/helper-replace-supers": "^7.25.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7", + "@babel/traverse": "^7.25.7", "semver": "^6.3.1" }, "engines": { @@ -240,78 +256,47 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", - "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", - "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", - "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", - "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz", - "integrity": "sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.7.tgz", + "integrity": "sha512-O31Ssjd5K6lPbTX9AAYpSKrZmLeagt9uwschJd+Ixo6QiRyfpvgtVQp8qrDR9UNFjZ8+DO34ZkdrN+BnPXemeA==", + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz", + "integrity": "sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==", + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", - "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz", + "integrity": "sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==", + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7" + "@babel/helper-module-imports": "^7.25.7", + "@babel/helper-simple-access": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", + "@babel/traverse": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -321,32 +306,35 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", - "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.7.tgz", + "integrity": "sha512-VAwcwuYhv/AT+Vfr28c9y6SHzTan1ryqrydSTFGjU0uDJHw3uZ+PduI8plCLkRsDnqK2DMEDmwrOQRsK/Ykjng==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.7" + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", - "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz", + "integrity": "sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", - "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.7.tgz", + "integrity": "sha512-iy8JhqlUW9PtZkd4pHM96v6BdJ66Ba9yWSE4z0W4TvSZwLBPkyDsiIU3ENe4SmrzRBs76F7rQXTy1lYC49n6Lw==", + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-member-expression-to-functions": "^7.24.7", - "@babel/helper-optimise-call-expression": "^7.24.7" + "@babel/helper-member-expression-to-functions": "^7.25.7", + "@babel/helper-optimise-call-expression": "^7.25.7", + "@babel/traverse": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -356,82 +344,78 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz", + "integrity": "sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==", + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", - "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", - "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.7.tgz", + "integrity": "sha512-pPbNbchZBkPMD50K0p3JGcFMNLVUCuU/ABybm/PGNj4JiHrpmNyqqCphBk4i19xXtNV0JhldQJJtbSW5aUvbyA==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", - "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", + "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", + "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", - "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz", + "integrity": "sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", - "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.7.tgz", + "integrity": "sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==", + "license": "MIT", "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/template": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz", + "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==", + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", + "@babel/helper-validator-identifier": "^7.25.7", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -444,6 +428,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -455,6 +440,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -468,6 +454,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", "dependencies": { "color-name": "1.1.3" } @@ -475,12 +462,14 @@ "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -489,6 +478,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", "engines": { "node": ">=4" } @@ -497,6 +487,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -505,9 +496,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", - "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz", + "integrity": "sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.8" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -516,11 +511,12 @@ } }, "node_modules/@babel/plugin-syntax-flow": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz", - "integrity": "sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.25.7.tgz", + "integrity": "sha512-fyoj6/YdVtlv2ROig/J0fP7hh/wNO1MJGm1NR70Pg7jbkF+jOUL9joorqaCOQh06Y+LfgTagHzC8KqZ3MF782w==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -530,11 +526,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", - "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.7.tgz", + "integrity": "sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -543,34 +540,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", - "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.7.tgz", + "integrity": "sha512-rR+5FDjpCHqqZN2bzZm18bVYGaejGq5ZkpVCJLXor/+zlSrSoc4KWcHI0URVWjl/68Dyr1uwZUz/1njycEAv9g==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -580,12 +556,13 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", - "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.7.tgz", + "integrity": "sha512-mhyfEW4gufjIqYFo9krXHJ3ElbFLIze5IDp+wQTxoPd+mwFb1NxatNAwmv8Q8Iuxv7Zc+q8EkiMQwc9IhyGf4g==", + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-class-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -595,12 +572,13 @@ } }, "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.7.tgz", - "integrity": "sha512-cjRKJ7FobOH2eakx7Ja+KpJRj8+y+/SiB3ooYm/n2UJfxu0oEaOoxOinitkJcPqv9KxS0kxTGPUaR7L2XcXDXA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.7.tgz", + "integrity": "sha512-q8Td2PPc6/6I73g96SreSUCKEcwMXCwcXSIAVTyTTN6CpJe0dMj8coxu1fg1T9vfBLi6Rsi6a4ECcFBbKabS5w==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-flow": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/plugin-syntax-flow": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -610,13 +588,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz", - "integrity": "sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.7.tgz", + "integrity": "sha512-L9Gcahi0kKFYXvweO6n0wc3ZG1ChpSFdgG+eV1WYZ3/dGbJK7vvk91FgGgak8YwRgrCuihF8tE/Xg07EkL5COg==", + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-simple-access": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -626,12 +605,12 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", - "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.8.tgz", + "integrity": "sha512-Z7WJJWdQc8yCWgAmjI3hyC+5PXIubH9yRKzkl9ZEG647O9szl9zvmKLzpbItlijBnVhTUf1cpyWBsZ3+2wjWPQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -641,13 +620,13 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.7.tgz", - "integrity": "sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.8.tgz", + "integrity": "sha512-q05Bk7gXOxpTHoQ8RSzGSh/LHVB9JEIkKnk3myAWwZHnYiTGYtbdrYkIsS8Xyh4ltKf7GNUSgzs/6P2bJtBAQg==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -657,12 +636,13 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", - "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.7.tgz", + "integrity": "sha512-KY0hh2FluNxMLwOCHbxVOKfdB5sjWG4M183885FmaqWWiGMhRZq4DQRKH6mHdEucbJnyDyYiZNwNG424RymJjA==", + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-class-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -672,14 +652,16 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.7.tgz", - "integrity": "sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.7.tgz", + "integrity": "sha512-VKlgy2vBzj8AmEzunocMun2fF06bsSWV+FvVXohtL6FGve/+L217qhHxRTVGHEDO/YR8IANcjzgJsd04J8ge5Q==", + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-typescript": "^7.24.7" + "@babel/helper-annotate-as-pure": "^7.25.7", + "@babel/helper-create-class-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7", + "@babel/plugin-syntax-typescript": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -689,13 +671,14 @@ } }, "node_modules/@babel/preset-flow": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.7.tgz", - "integrity": "sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.25.7.tgz", + "integrity": "sha512-q2x3g0YHzo/Ohsr51KOYS/BtZMsvkzVd8qEyhZAyTatYdobfgXCuyppTqTuIhdq5kR/P3nyyVvZ6H5dMc4PnCQ==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-validator-option": "^7.24.7", - "@babel/plugin-transform-flow-strip-types": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-validator-option": "^7.25.7", + "@babel/plugin-transform-flow-strip-types": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -705,15 +688,16 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz", - "integrity": "sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.25.7.tgz", + "integrity": "sha512-rkkpaXJZOFN45Fb+Gki0c+KMIglk4+zZXOoMJuyEK8y8Kkc8Jd3BDmP7qPsz0zQMJj+UD7EprF+AqAXcILnexw==", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-validator-option": "^7.24.7", - "@babel/plugin-syntax-jsx": "^7.24.7", - "@babel/plugin-transform-modules-commonjs": "^7.24.7", - "@babel/plugin-transform-typescript": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-validator-option": "^7.25.7", + "@babel/plugin-syntax-jsx": "^7.25.7", + "@babel/plugin-transform-modules-commonjs": "^7.25.7", + "@babel/plugin-transform-typescript": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -723,7 +707,9 @@ } }, "node_modules/@babel/register": { - "version": "7.24.6", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.25.7.tgz", + "integrity": "sha512-qHTd2Rhn/rKhSUwdY6+n98FmwXN+N+zxSVx3zWqRe9INyvTpv+aQ5gDV2+43ACd3VtMBzPPljbb0gZb8u5ma6Q==", "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", @@ -740,31 +726,30 @@ } }, "node_modules/@babel/template": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", - "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz", + "integrity": "sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==", + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/code-frame": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz", + "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/template": "^7.25.7", + "@babel/types": "^7.25.7", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -776,17 +761,19 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz", + "integrity": "sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==", + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", + "@babel/helper-string-parser": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -819,10 +806,11 @@ } }, "node_modules/@bufbuild/buf": { - "version": "1.39.0", - "resolved": "https://registry.npmjs.org/@bufbuild/buf/-/buf-1.39.0.tgz", - "integrity": "sha512-lm7xb9pc7X04rRjCQ69o9byAAZ7/dsUQGoH+iJ9uBSXQWiwQ1Ts8gneBnuUVsAH2vdW73NFBpmNQGE9XtFauVQ==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@bufbuild/buf/-/buf-1.45.0.tgz", + "integrity": "sha512-6VgwZDwBXWWrA8e8B0efKs3px6rbJRZVBpFt7wBAHU+SgcXONF2rVNA60S8F6/ixaW1EHkUhkIeVyCHs+wV1Bw==", "hasInstallScript": true, + "license": "Apache-2.0", "bin": { "buf": "bin/buf", "protoc-gen-buf-breaking": "bin/protoc-gen-buf-breaking", @@ -832,21 +820,22 @@ "node": ">=12" }, "optionalDependencies": { - "@bufbuild/buf-darwin-arm64": "1.39.0", - "@bufbuild/buf-darwin-x64": "1.39.0", - "@bufbuild/buf-linux-aarch64": "1.39.0", - "@bufbuild/buf-linux-x64": "1.39.0", - "@bufbuild/buf-win32-arm64": "1.39.0", - "@bufbuild/buf-win32-x64": "1.39.0" + "@bufbuild/buf-darwin-arm64": "1.45.0", + "@bufbuild/buf-darwin-x64": "1.45.0", + "@bufbuild/buf-linux-aarch64": "1.45.0", + "@bufbuild/buf-linux-x64": "1.45.0", + "@bufbuild/buf-win32-arm64": "1.45.0", + "@bufbuild/buf-win32-x64": "1.45.0" } }, "node_modules/@bufbuild/buf-darwin-arm64": { - "version": "1.39.0", - "resolved": "https://registry.npmjs.org/@bufbuild/buf-darwin-arm64/-/buf-darwin-arm64-1.39.0.tgz", - "integrity": "sha512-Ptl0uAGssLxQTzoZhGwv1FFTbzUfcstIpEwMhN+XrwiuqsSxOg9eq/n3yXoci5VJsHokjDUHnWkR3y+j5P/5KA==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-darwin-arm64/-/buf-darwin-arm64-1.45.0.tgz", + "integrity": "sha512-yl0+fSnEAtGPUjvyC9a5UmzSc0izqeiL8il2ml1LmX3YbmOAQZ1Wn0TceCtDVFCuO/jtiZBj8/zYm3VAovwQqQ==", "cpu": [ "arm64" ], + "license": "Apache-2.0", "optional": true, "os": [ "darwin" @@ -856,12 +845,13 @@ } }, "node_modules/@bufbuild/buf-darwin-x64": { - "version": "1.39.0", - "resolved": "https://registry.npmjs.org/@bufbuild/buf-darwin-x64/-/buf-darwin-x64-1.39.0.tgz", - "integrity": "sha512-XNCuy9sjQwVJ4NIZqxaTIyzUtlyquSkp/Uuoh5W5thJ3nzZ5RSgvXKF5iXHhZmesrfRGApktwoCx5Am8runsfQ==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-darwin-x64/-/buf-darwin-x64-1.45.0.tgz", + "integrity": "sha512-T4yNFZrOhxRkpSn8RgW2S6JPcmD58JYb7OqU+BNVpqK3zy3Zm2C3gIyIpVB5GWkyohhyZANLj3M4Xet9HW4cqA==", "cpu": [ "x64" ], + "license": "Apache-2.0", "optional": true, "os": [ "darwin" @@ -871,12 +861,13 @@ } }, "node_modules/@bufbuild/buf-linux-aarch64": { - "version": "1.39.0", - "resolved": "https://registry.npmjs.org/@bufbuild/buf-linux-aarch64/-/buf-linux-aarch64-1.39.0.tgz", - "integrity": "sha512-Am+hrw94awp/eY027ROXwRQBuwAzOpQ/4zI4dgmgsyhzeWZ8w1LWC8z2SSr8T2cqd0cm52KxtoWMW+B3b2qzbw==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-linux-aarch64/-/buf-linux-aarch64-1.45.0.tgz", + "integrity": "sha512-n3PkFXp6MiHmxMBMq60t38Ca7hyk0Yo1Un3Xg4PxljSrDNHZSoxT8+NY3eOI+jHnAwKebrAT72XAh/vkeKrC5g==", "cpu": [ "arm64" ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" @@ -886,12 +877,13 @@ } }, "node_modules/@bufbuild/buf-linux-x64": { - "version": "1.39.0", - "resolved": "https://registry.npmjs.org/@bufbuild/buf-linux-x64/-/buf-linux-x64-1.39.0.tgz", - "integrity": "sha512-JXVkHoMrTvmpseqdoQPJJ6MRV7/vlloYtvXHHACEzVytYjljOYCNoVET/E5gLBco/edeXFMNc40cCi1KgL3rSw==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-linux-x64/-/buf-linux-x64-1.45.0.tgz", + "integrity": "sha512-Bm5Zgv4CgJ8rursPLejhvfELMxtuFxMLR1ZXY2G6T7jLi5mxa/4CWmqEmQ67zyOoEXw7FvND2yBivGO+464wtw==", "cpu": [ "x64" ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" @@ -901,12 +893,13 @@ } }, "node_modules/@bufbuild/buf-win32-arm64": { - "version": "1.39.0", - "resolved": "https://registry.npmjs.org/@bufbuild/buf-win32-arm64/-/buf-win32-arm64-1.39.0.tgz", - "integrity": "sha512-akdGW02mo04wbLfjNMBQqxC4mPQ/L/vTU8/o79I67GSxyFYt7bKifvYIYhAA39C2gibHyB7ZLmoeRPbaU8wbYA==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-win32-arm64/-/buf-win32-arm64-1.45.0.tgz", + "integrity": "sha512-tuW+vaYaCQpl9y3dk4uuVSAyqs7opydejxJmqoQdt4AOswvKORasVkD5s9two+eScU165kSzkI2BN3Hd6r+P0g==", "cpu": [ "arm64" ], + "license": "Apache-2.0", "optional": true, "os": [ "win32" @@ -916,12 +909,13 @@ } }, "node_modules/@bufbuild/buf-win32-x64": { - "version": "1.39.0", - "resolved": "https://registry.npmjs.org/@bufbuild/buf-win32-x64/-/buf-win32-x64-1.39.0.tgz", - "integrity": "sha512-jos08UMg9iUZsGjPrNpLXP+FNk6q6GizO+bjee/GcI0kSijIzXYMg14goQr0TKlvqs/+IRAM5vZIokQBYlAENQ==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-win32-x64/-/buf-win32-x64-1.45.0.tgz", + "integrity": "sha512-ifTHY7pKrKd+8ogMksHmvVYJrHLm/OveyLXsMT1ts00nb1pPJzuCDKrEhg5T7k0oJhGBhpejlpizZ3It0pLmsg==", "cpu": [ "x64" ], + "license": "Apache-2.0", "optional": true, "os": [ "win32" @@ -932,6 +926,8 @@ }, "node_modules/@bufbuild/license-header": { "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@bufbuild/license-header/-/license-header-0.0.4.tgz", + "integrity": "sha512-wOOrMjfLdDAO/BAKzCs/bvMPz61X3+qYC9nUbYxJYLVPFAlXus8aw2jNktyHEvLToCjOhn5EcpyaCpMzPHyHIQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -942,15 +938,19 @@ } }, "node_modules/@bufbuild/protobuf": { - "version": "1.10.0", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.2.0.tgz", + "integrity": "sha512-+imAQkHf7U/Rwvu0wk1XWgsP3WnpCWmK7B48f0XqSNzgk64+grljTKC7pnO/xBiEMUziF7vKRfbBnOQhg126qQ==", "license": "(Apache-2.0 AND BSD-3-Clause)" }, "node_modules/@bufbuild/protoc-gen-es": { - "version": "1.10.0", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@bufbuild/protoc-gen-es/-/protoc-gen-es-2.2.0.tgz", + "integrity": "sha512-PmUTtbJJfgcabTsoF59W0bsAr7xO5aGcMe69G8vOq0ogYV1aWmvFKhHKHDtn295pOLhTXmfrDSUNi/OTHuDdpw==", "license": "Apache-2.0", "dependencies": { - "@bufbuild/protobuf": "^1.10.0", - "@bufbuild/protoplugin": "1.10.0" + "@bufbuild/protobuf": "^2.2.0", + "@bufbuild/protoplugin": "2.2.0" }, "bin": { "protoc-gen-es": "bin/protoc-gen-es" @@ -959,7 +959,7 @@ "node": ">=14" }, "peerDependencies": { - "@bufbuild/protobuf": "1.10.0" + "@bufbuild/protobuf": "2.2.0" }, "peerDependenciesMeta": { "@bufbuild/protobuf": { @@ -968,23 +968,27 @@ } }, "node_modules/@bufbuild/protoplugin": { - "version": "1.10.0", - "license": "(Apache-2.0 AND BSD-3-Clause)", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@bufbuild/protoplugin/-/protoplugin-2.2.0.tgz", + "integrity": "sha512-ijsCHuhtXbfTiffoBRve2uCPR7gy6cwJsMe8z5bYQtczGiZVVfiyAze55gk1J/1ruqkr40oZ9BwKAGOzz69f0g==", + "license": "Apache-2.0", "dependencies": { - "@bufbuild/protobuf": "1.10.0", - "@typescript/vfs": "^1.4.0", - "typescript": "4.5.2" + "@bufbuild/protobuf": "2.2.0", + "@typescript/vfs": "^1.5.2", + "typescript": "5.4.5" } }, "node_modules/@bufbuild/protoplugin/node_modules/typescript": { - "version": "4.5.2", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/@cloudflare/kv-asset-handler": { @@ -992,6 +996,7 @@ "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.3.4.tgz", "integrity": "sha512-YLPHc8yASwjNkmcDMQMY35yiWjoKAKnhUbPRszBRS0YgH+IXtsMp61j+yTcnCE3oO2DgP0U3iejLC8FTtKDC8Q==", "dev": true, + "license": "MIT OR Apache-2.0", "dependencies": { "mime": "^3.0.0" }, @@ -1004,6 +1009,7 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", "dev": true, + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -1012,13 +1018,14 @@ } }, "node_modules/@cloudflare/workerd-darwin-64": { - "version": "1.20240821.1", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20240821.1.tgz", - "integrity": "sha512-CDBpfZKrSy4YrIdqS84z67r3Tzal2pOhjCsIb63IuCnvVes59/ft1qhczBzk9EffeOE2iTCrA4YBT7Sbn7USew==", + "version": "1.20241004.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20241004.0.tgz", + "integrity": "sha512-c2afR486NXDRcPm7RaTSRDnffFklPCXde/IeNVhEhBJ8O+pQhBOdDcGIy8zXPwMu0CYga0iHNZmpbsl+ZcHttA==", "cpu": [ "x64" ], "dev": true, + "license": "Apache-2.0", "optional": true, "os": [ "darwin" @@ -1028,13 +1035,14 @@ } }, "node_modules/@cloudflare/workerd-darwin-arm64": { - "version": "1.20240821.1", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20240821.1.tgz", - "integrity": "sha512-Q+9RedvNbPcEt/dKni1oN94OxbvuNAeJkgHmrLFTGF8zu21wzOhVkQeRNxcYxrMa9mfStc457NAg13OVCj2kHQ==", + "version": "1.20241004.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20241004.0.tgz", + "integrity": "sha512-siD9fexv5lr2IpBczWV7OPgJvHj8/fJUrRAYCMcBURkfiwssK91coQeZlN1NdQ85aYELVgxDFoG+p86OS+ZzLw==", "cpu": [ "arm64" ], "dev": true, + "license": "Apache-2.0", "optional": true, "os": [ "darwin" @@ -1044,13 +1052,14 @@ } }, "node_modules/@cloudflare/workerd-linux-64": { - "version": "1.20240821.1", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20240821.1.tgz", - "integrity": "sha512-j6z3KsPtawrscoLuP985LbqFrmsJL6q1mvSXOXTqXGODAHIzGBipHARdOjms3UQqovzvqB2lQaQsZtLBwCZxtA==", + "version": "1.20241004.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20241004.0.tgz", + "integrity": "sha512-EtKGXO5fzRgX6UhDDLhjjEsB1QtliHb12zavZ/S0C8hKPz76II7MQ3Lls9kfB62fbdMP8L6vcqWPObEUcw6GSw==", "cpu": [ "x64" ], "dev": true, + "license": "Apache-2.0", "optional": true, "os": [ "linux" @@ -1060,13 +1069,14 @@ } }, "node_modules/@cloudflare/workerd-linux-arm64": { - "version": "1.20240821.1", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20240821.1.tgz", - "integrity": "sha512-I9bHgZOxJQW0CV5gTdilyxzTG7ILzbTirehQWgfPx9X77E/7eIbR9sboOMgyeC69W4he0SKtpx0sYZuTJu4ERw==", + "version": "1.20241004.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20241004.0.tgz", + "integrity": "sha512-XO7VBE1YaFf/o9tKO1PqDqaxkU2eAR2DLX7R0+R8p+q92sUDXyoxo48T3yJDfxWndnKJ6hSJfvKanw3Mq9Tisw==", "cpu": [ "arm64" ], "dev": true, + "license": "Apache-2.0", "optional": true, "os": [ "linux" @@ -1076,13 +1086,14 @@ } }, "node_modules/@cloudflare/workerd-windows-64": { - "version": "1.20240821.1", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20240821.1.tgz", - "integrity": "sha512-keC97QPArs6LWbPejQM7/Y8Jy8QqyaZow4/ZdsGo+QjlOLiZRDpAenfZx3CBUoWwEeFwQTl2FLO+8hV1SWFFYw==", + "version": "1.20241004.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20241004.0.tgz", + "integrity": "sha512-o+TmCYGq58jNUDbG73xOvd648XvJ2TicI++2BBoySklJXG6f4But5AwA8TxQgmeujR3vpBjPZKexEzcZSUOTtA==", "cpu": [ "x64" ], "dev": true, + "license": "Apache-2.0", "optional": true, "os": [ "win32" @@ -1092,22 +1103,43 @@ } }, "node_modules/@cloudflare/workers-shared": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@cloudflare/workers-shared/-/workers-shared-0.4.1.tgz", - "integrity": "sha512-nYh4r8JwOOjYIdH2zub++CmIKlkYFlpxI1nBHimoiHcytJXD/b7ldJ21TtfzUZMCgI78mxVlymMHA/ReaOxKlA==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workers-shared/-/workers-shared-0.6.0.tgz", + "integrity": "sha512-rfUCvb3hx4AsvdUZsxgk9lmgEnQehqV3jdtXLP/Xr0+P56n11T/0nXNMzmn7Nnv+IJFOV6X9NmFhuMz4sBPw7w==", "dev": true, + "license": "MIT OR Apache-2.0", + "dependencies": { + "mime": "^3.0.0", + "zod": "^3.22.3" + }, "engines": { "node": ">=16.7.0" } }, + "node_modules/@cloudflare/workers-shared/node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/@cloudflare/workers-types": { - "version": "4.20240821.1", - "resolved": "https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-4.20240821.1.tgz", - "integrity": "sha512-icAkbnAqgVl6ef9lgLTom8na+kj2RBw2ViPAQ586hbdj0xZcnrjK7P46Eu08OU9D/lNDgN2sKU/sxhe2iK/gIg==", - "dev": true + "version": "4.20241011.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-4.20241011.0.tgz", + "integrity": "sha512-emwBnuFB/2lS1z6NXAeBqrSL8Xwnr7YpgdLuchOmgu/igqBsLLNPBb4Qmgh3neFWUe9wbzQyx030836YF3c3Xw==", + "dev": true, + "license": "MIT OR Apache-2.0" }, "node_modules/@colors/colors": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, "license": "MIT", "optional": true, @@ -1159,15 +1191,12 @@ "resolved": "packages/example", "link": true }, - "node_modules/@connectrpc/protoc-gen-connect-es": { - "resolved": "packages/protoc-gen-connect-es", - "link": true - }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "0.3.9" }, @@ -1180,6 +1209,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -1187,6 +1217,8 @@ }, "node_modules/@esbuild-plugins/node-globals-polyfill": { "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.2.3.tgz", + "integrity": "sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==", "dev": true, "license": "ISC", "peerDependencies": { @@ -1195,6 +1227,8 @@ }, "node_modules/@esbuild-plugins/node-modules-polyfill": { "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-modules-polyfill/-/node-modules-polyfill-0.2.2.tgz", + "integrity": "sha512-LXV7QsWJxRuMYvKbiznh+U1ilIop3g2TeKRzUxOG5X3YITc8JyyTa90BmLwqqv0YnX4v32CSlG+vsziZp9dMvA==", "dev": true, "license": "ISC", "dependencies": { @@ -1206,67 +1240,73 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", - "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", "cpu": [ "ppc64" ], + "license": "MIT", "optional": true, "os": [ "aix" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/android-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", - "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", + "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" ], + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", - "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", + "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" ], + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/android-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", - "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=18" + "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" ], @@ -1280,198 +1320,211 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", - "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", + "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" ], + "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", - "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", + "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" ], + "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", - "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", - "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", + "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" ], + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", - "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", + "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" ], + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", - "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", "cpu": [ "ia32" ], + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", - "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", "cpu": [ "loong64" ], + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", - "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", + "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" ], + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", - "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", + "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" ], + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", - "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", "cpu": [ "riscv64" ], + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", - "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", "cpu": [ "s390x" ], + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", - "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", - "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", + "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" ], + "license": "MIT", "optional": true, "os": [ "netbsd" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/openbsd-arm64": { @@ -1481,6 +1534,7 @@ "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -1490,82 +1544,89 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", - "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", + "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" ], + "license": "MIT", "optional": true, "os": [ "openbsd" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", - "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", + "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" ], + "license": "MIT", "optional": true, "os": [ "sunos" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", - "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", - "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", + "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" ], + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", - "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, "license": "MIT", "dependencies": { @@ -1579,7 +1640,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.1", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", + "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", "dev": true, "license": "MIT", "engines": { @@ -1588,6 +1651,8 @@ }, "node_modules/@eslint/eslintrc": { "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1610,6 +1675,8 @@ }, "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "license": "MIT", "dependencies": { @@ -1619,6 +1686,8 @@ }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -1629,7 +1698,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.57.0", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, "license": "MIT", "engines": { @@ -1637,7 +1708,9 @@ } }, "node_modules/@fastify/ajv-compiler": { - "version": "3.5.0", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.6.0.tgz", + "integrity": "sha512-LwdXQJjmMD+GwLOkP7TVC68qa+pSSogeWWmznRJ/coyTcfe9qA05AHFSe1eZFwK6q+xVRpChnvFUkf1iYaSZsQ==", "license": "MIT", "peer": true, "dependencies": { @@ -1647,12 +1720,14 @@ } }, "node_modules/@fastify/ajv-compiler/node_modules/ajv": { - "version": "8.15.0", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "license": "MIT", "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", - "fast-uri": "^2.3.0", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" }, @@ -1661,13 +1736,25 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/@fastify/ajv-compiler/node_modules/ajv/node_modules/fast-uri": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.2.tgz", + "integrity": "sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==", + "license": "MIT", + "peer": true + }, "node_modules/@fastify/ajv-compiler/node_modules/json-schema-traverse": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "license": "MIT", "peer": true }, "node_modules/@fastify/busboy": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "dev": true, "license": "MIT", "engines": { "node": ">=14" @@ -1675,11 +1762,15 @@ }, "node_modules/@fastify/error": { "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@fastify/error/-/error-3.4.1.tgz", + "integrity": "sha512-wWSvph+29GR783IhmvdwWnN4bUxTD01Vm5Xad4i7i1VuAOItLvbPAb69sb0IQ2N57yprvhNIwAP5B6xfKTmjmQ==", "license": "MIT", "peer": true }, "node_modules/@fastify/fast-json-stringify-compiler": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.3.0.tgz", + "integrity": "sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==", "license": "MIT", "peer": true, "dependencies": { @@ -1688,6 +1779,8 @@ }, "node_modules/@fastify/merge-json-schemas": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.1.1.tgz", + "integrity": "sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==", "license": "MIT", "peer": true, "dependencies": { @@ -1695,11 +1788,14 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", "dev": true, "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", + "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", "minimatch": "^3.0.5" }, @@ -1709,6 +1805,8 @@ }, "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "license": "MIT", "dependencies": { @@ -1718,6 +1816,8 @@ }, "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -1729,6 +1829,8 @@ }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1741,19 +1843,22 @@ }, "node_modules/@humanwhocodes/object-schema": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", "dev": true, "license": "BSD-3-Clause" }, "node_modules/@inquirer/checkbox": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-2.5.0.tgz", - "integrity": "sha512-sMgdETOfi2dUHT8r7TT1BTKOwNvdDGFDXYWtQ2J69SvlYNntk9I/gJe7r5yvMwwsuKnYbuRs3pNhx4tgNck5aA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-3.0.1.tgz", + "integrity": "sha512-0hm2nrToWUdD6/UHnel/UKGdk1//ke5zGUpHIvk5ZWmaKezlGxZkOJXNSWsdxO/rEqTkbB3lNC2J6nBElV2aAQ==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/figures": "^1.0.5", - "@inquirer/type": "^1.5.3", + "@inquirer/core": "^9.2.1", + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", "ansi-escapes": "^4.3.2", "yoctocolors-cjs": "^2.1.2" }, @@ -1791,33 +1896,32 @@ } }, "node_modules/@inquirer/confirm": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.2.0.tgz", - "integrity": "sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-4.0.1.tgz", + "integrity": "sha512-46yL28o2NJ9doViqOy0VDcoTzng7rAb6yPQKU7VDLqkmbCaH4JqK4yk4XqlzNWy9PVC5pG1ZUXPBQv+VqnYs2w==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3" + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0" }, "engines": { "node": ">=18" } }, "node_modules/@inquirer/core": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.1.0.tgz", - "integrity": "sha512-RZVfH//2ytTjmaBIzeKT1zefcQZzuruwkpTwwbe/i2jTl4o9M+iML5ChULzz6iw1Ok8iUBBsRCjY2IEbD8Ft4w==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz", + "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/figures": "^1.0.5", - "@inquirer/type": "^1.5.3", + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", "@types/mute-stream": "^0.0.4", - "@types/node": "^22.5.2", + "@types/node": "^22.5.5", "@types/wrap-ansi": "^3.0.0", "ansi-escapes": "^4.3.2", - "cli-spinners": "^2.9.2", "cli-width": "^4.1.0", "mute-stream": "^1.0.0", "signal-exit": "^4.1.0", @@ -1829,16 +1933,6 @@ "node": ">=18" } }, - "node_modules/@inquirer/core/node_modules/@types/node": { - "version": "22.5.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz", - "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" - } - }, "node_modules/@inquirer/core/node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -1855,19 +1949,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@inquirer/core/node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@inquirer/core/node_modules/type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", @@ -1881,13 +1962,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@inquirer/core/node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "dev": true, - "license": "MIT" - }, "node_modules/@inquirer/core/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -1904,14 +1978,14 @@ } }, "node_modules/@inquirer/editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-2.2.0.tgz", - "integrity": "sha512-9KHOpJ+dIL5SZli8lJ6xdaYLPPzB8xB9GZItg39MBybzhxA16vxmszmQFrRwbOA918WA2rvu8xhDEg/p6LXKbw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-3.0.1.tgz", + "integrity": "sha512-VA96GPFaSOVudjKFraokEEmUQg/Lub6OXvbIEZU1SDCmBzRkHGhxoFAVaF30nyiB4m5cEbDgiI2QRacXZ2hw9Q==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3", + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0", "external-editor": "^3.1.0" }, "engines": { @@ -1919,14 +1993,14 @@ } }, "node_modules/@inquirer/expand": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-2.3.0.tgz", - "integrity": "sha512-qnJsUcOGCSG1e5DTOErmv2BPQqrtT6uzqn1vI/aYGiPKq+FgslGZmtdnXbhuI7IlT7OByDoEEqdnhUnVR2hhLw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-3.0.1.tgz", + "integrity": "sha512-ToG8d6RIbnVpbdPdiN7BCxZGiHOTomOX94C2FaT5KOHupV40tKEDozp12res6cMIfRKrXLJyexAZhWVHgbALSQ==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3", + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0", "yoctocolors-cjs": "^2.1.2" }, "engines": { @@ -1934,9 +2008,9 @@ } }, "node_modules/@inquirer/figures": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.5.tgz", - "integrity": "sha512-79hP/VWdZ2UVc9bFGJnoQ/lQMpL74mGgzSYX1xUqCVk7/v73vJCMw1VuyWN1jGkZ9B3z7THAbySqGbCNefcjfA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.7.tgz", + "integrity": "sha512-m+Trk77mp54Zma6xLkLuY+mvanPxlE4A7yNKs2HBiyZ4UkVs28Mv5c/pgWrHeInx+USHeX/WEPzjrWrcJiQgjw==", "dev": true, "license": "MIT", "engines": { @@ -1944,42 +2018,42 @@ } }, "node_modules/@inquirer/input": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-2.3.0.tgz", - "integrity": "sha512-XfnpCStx2xgh1LIRqPXrTNEEByqQWoxsWYzNRSEUxJ5c6EQlhMogJ3vHKu8aXuTacebtaZzMAHwEL0kAflKOBw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-3.0.1.tgz", + "integrity": "sha512-BDuPBmpvi8eMCxqC5iacloWqv+5tQSJlUafYWUe31ow1BVXjW2a5qe3dh4X/Z25Wp22RwvcaLCc2siHobEOfzg==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3" + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0" }, "engines": { "node": ">=18" } }, "node_modules/@inquirer/number": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-1.1.0.tgz", - "integrity": "sha512-ilUnia/GZUtfSZy3YEErXLJ2Sljo/mf9fiKc08n18DdwdmDbOzRcTv65H1jjDvlsAuvdFXf4Sa/aL7iw/NanVA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-2.0.1.tgz", + "integrity": "sha512-QpR8jPhRjSmlr/mD2cw3IR8HRO7lSVOnqUvQa8scv1Lsr3xoAMMworcYW3J13z3ppjBFBD2ef1Ci6AE5Qn8goQ==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3" + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0" }, "engines": { "node": ">=18" } }, "node_modules/@inquirer/password": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-2.2.0.tgz", - "integrity": "sha512-5otqIpgsPYIshqhgtEwSspBQE40etouR8VIxzpJkv9i0dVHIpyhiivbkH9/dGiMLdyamT54YRdGJLfl8TFnLHg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-3.0.1.tgz", + "integrity": "sha512-haoeEPUisD1NeE2IanLOiFr4wcTXGWrBOyAyPZi1FfLJuXOzNmxCJPgUrGYKVh+Y8hfGJenIfz5Wb/DkE9KkMQ==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3", + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0", "ansi-escapes": "^4.3.2" }, "engines": { @@ -2016,36 +2090,36 @@ } }, "node_modules/@inquirer/prompts": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-5.5.0.tgz", - "integrity": "sha512-BHDeL0catgHdcHbSFFUddNzvx/imzJMft+tWDPwTm3hfu8/tApk1HrooNngB2Mb4qY+KaRWF+iZqoVUPeslEog==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-6.0.1.tgz", + "integrity": "sha512-yl43JD/86CIj3Mz5mvvLJqAOfIup7ncxfJ0Btnl0/v5TouVUyeEdcpknfgc+yMevS/48oH9WAkkw93m7otLb/A==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/checkbox": "^2.5.0", - "@inquirer/confirm": "^3.2.0", - "@inquirer/editor": "^2.2.0", - "@inquirer/expand": "^2.3.0", - "@inquirer/input": "^2.3.0", - "@inquirer/number": "^1.1.0", - "@inquirer/password": "^2.2.0", - "@inquirer/rawlist": "^2.3.0", - "@inquirer/search": "^1.1.0", - "@inquirer/select": "^2.5.0" + "@inquirer/checkbox": "^3.0.1", + "@inquirer/confirm": "^4.0.1", + "@inquirer/editor": "^3.0.1", + "@inquirer/expand": "^3.0.1", + "@inquirer/input": "^3.0.1", + "@inquirer/number": "^2.0.1", + "@inquirer/password": "^3.0.1", + "@inquirer/rawlist": "^3.0.1", + "@inquirer/search": "^2.0.1", + "@inquirer/select": "^3.0.1" }, "engines": { "node": ">=18" } }, "node_modules/@inquirer/rawlist": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-2.3.0.tgz", - "integrity": "sha512-zzfNuINhFF7OLAtGHfhwOW2TlYJyli7lOUoJUXw/uyklcwalV6WRXBXtFIicN8rTRK1XTiPWB4UY+YuW8dsnLQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-3.0.1.tgz", + "integrity": "sha512-VgRtFIwZInUzTiPLSfDXK5jLrnpkuSOh1ctfaoygKAdPqjcjKYmGh6sCY1pb0aGnCGsmhUxoqLDUAU0ud+lGXQ==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3", + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0", "yoctocolors-cjs": "^2.1.2" }, "engines": { @@ -2053,15 +2127,15 @@ } }, "node_modules/@inquirer/search": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-1.1.0.tgz", - "integrity": "sha512-h+/5LSj51dx7hp5xOn4QFnUaKeARwUCLs6mIhtkJ0JYPBLmEYjdHSYh7I6GrLg9LwpJ3xeX0FZgAG1q0QdCpVQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-2.0.1.tgz", + "integrity": "sha512-r5hBKZk3g5MkIzLVoSgE4evypGqtOannnB3PKTG9NRZxyFRKcfzrdxXXPcoJQsxJPzvdSU2Rn7pB7lw0GCmGAg==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/figures": "^1.0.5", - "@inquirer/type": "^1.5.3", + "@inquirer/core": "^9.2.1", + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", "yoctocolors-cjs": "^2.1.2" }, "engines": { @@ -2069,15 +2143,15 @@ } }, "node_modules/@inquirer/select": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-2.5.0.tgz", - "integrity": "sha512-YmDobTItPP3WcEI86GvPo+T2sRHkxxOq/kXmsBjHS5BVXUgvgZ5AfJjkvQvZr03T81NnI3KrrRuMzeuYUQRFOA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-3.0.1.tgz", + "integrity": "sha512-lUDGUxPhdWMkN/fHy1Lk7pF3nK1fh/gqeyWXmctefhxLYxlDsc7vsPBEpxrfVGDsVdyYJsiJoD4bJ1b623cV1Q==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/figures": "^1.0.5", - "@inquirer/type": "^1.5.3", + "@inquirer/core": "^9.2.1", + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", "ansi-escapes": "^4.3.2", "yoctocolors-cjs": "^2.1.2" }, @@ -2115,9 +2189,9 @@ } }, "node_modules/@inquirer/type": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.5.3.tgz", - "integrity": "sha512-xUQ14WQGR/HK5ei+2CvgcwoH9fQ4PgPGmVFSN0pc1+fVyDL3MREhyAY7nxEErSu6CkllBM3D7e3e+kOvtu+eIg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz", + "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==", "dev": true, "license": "MIT", "dependencies": { @@ -2129,6 +2203,8 @@ }, "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, "license": "ISC", "dependencies": { @@ -2144,7 +2220,9 @@ } }, "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, "license": "MIT", "engines": { @@ -2156,6 +2234,8 @@ }, "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, "license": "MIT", "engines": { @@ -2167,11 +2247,15 @@ }, "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, "license": "MIT" }, "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, "license": "MIT", "dependencies": { @@ -2188,6 +2272,8 @@ }, "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, "license": "MIT", "dependencies": { @@ -2202,6 +2288,8 @@ }, "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, "license": "MIT", "dependencies": { @@ -2262,6 +2350,8 @@ }, "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==", "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", @@ -2274,6 +2364,8 @@ }, "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==", "license": "MIT", "engines": { "node": ">=6.0.0" @@ -2281,6 +2373,8 @@ }, "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==", "license": "MIT", "engines": { "node": ">=6.0.0" @@ -2294,6 +2388,8 @@ }, "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==", "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -2301,18 +2397,20 @@ } }, "node_modules/@next/env": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.5.tgz", - "integrity": "sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.15.tgz", + "integrity": "sha512-S1qaj25Wru2dUpcIZMjxeMVSwkt8BK4dmWHHiBuRstcIyOsMapqT4A4jSB6onvqeygkSSmOkyny9VVx8JIGamQ==", + "license": "MIT", "peer": true }, "node_modules/@next/swc-darwin-arm64": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.5.tgz", - "integrity": "sha512-/9zVxJ+K9lrzSGli1///ujyRfon/ZneeZ+v4ptpiPoOU+GKZnm8Wj8ELWU1Pm7GHltYRBklmXMTUqM/DqQ99FQ==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.15.tgz", + "integrity": "sha512-Rvh7KU9hOUBnZ9TJ28n2Oa7dD9cvDBKua9IKx7cfQQ0GoYUwg9ig31O2oMwH3wm+pE3IkAQ67ZobPfEgurPZIA==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -2323,12 +2421,13 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.5.tgz", - "integrity": "sha512-vXHOPCwfDe9qLDuq7U1OYM2wUY+KQ4Ex6ozwsKxp26BlJ6XXbHleOUldenM67JRyBfVjv371oneEvYd3H2gNSA==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.15.tgz", + "integrity": "sha512-5TGyjFcf8ampZP3e+FyCax5zFVHi+Oe7sZyaKOngsqyaNEpOgkKB3sqmymkZfowy3ufGA/tUgDPPxpQx931lHg==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -2339,12 +2438,13 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.5.tgz", - "integrity": "sha512-vlhB8wI+lj8q1ExFW8lbWutA4M2ZazQNvMWuEDqZcuJJc78iUnLdPPunBPX8rC4IgT6lIx/adB+Cwrl99MzNaA==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.15.tgz", + "integrity": "sha512-3Bwv4oc08ONiQ3FiOLKT72Q+ndEMyLNsc/D3qnLMbtUYTQAmkx9E/JRu0DBpHxNddBmNT5hxz1mYBphJ3mfrrw==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -2355,12 +2455,13 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.5.tgz", - "integrity": "sha512-NpDB9NUR2t0hXzJJwQSGu1IAOYybsfeB+LxpGsXrRIb7QOrYmidJz3shzY8cM6+rO4Aojuef0N/PEaX18pi9OA==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.15.tgz", + "integrity": "sha512-k5xf/tg1FBv/M4CMd8S+JL3uV9BnnRmoe7F+GWC3DxkTCD9aewFRH1s5rJ1zkzDa+Do4zyN8qD0N8c84Hu96FQ==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -2371,12 +2472,13 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.5.tgz", - "integrity": "sha512-8XFikMSxWleYNryWIjiCX+gU201YS+erTUidKdyOVYi5qUQo/gRxv/3N1oZFCgqpesN6FPeqGM72Zve+nReVXQ==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.15.tgz", + "integrity": "sha512-kE6q38hbrRbKEkkVn62reLXhThLRh6/TvgSP56GkFNhU22TbIrQDEMrO7j0IcQHcew2wfykq8lZyHFabz0oBrA==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -2387,12 +2489,13 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.5.tgz", - "integrity": "sha512-6QLwi7RaYiQDcRDSU/os40r5o06b5ue7Jsk5JgdRBGGp8l37RZEh9JsLSM8QF0YDsgcosSeHjglgqi25+m04IQ==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.15.tgz", + "integrity": "sha512-PZ5YE9ouy/IdO7QVJeIcyLn/Rc4ml9M2G4y3kCM9MNf1YKvFY4heg3pVa/jQbMro+tP6yc4G2o9LjAz1zxD7tQ==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -2403,12 +2506,13 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.5.tgz", - "integrity": "sha512-1GpG2VhbspO+aYoMOQPQiqc/tG3LzmsdBH0LhnDS3JrtDx2QmzXe0B6mSZZiN3Bq7IOMXxv1nlsjzoS1+9mzZw==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.15.tgz", + "integrity": "sha512-2raR16703kBvYEQD9HNLyb0/394yfqzmIeyp2nDzcPV4yPjqNUG3ohX6jX00WryXz6s1FXpVhsCo3i+g4RUX+g==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -2419,12 +2523,13 @@ } }, "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.5.tgz", - "integrity": "sha512-Igh9ZlxwvCDsu6438FXlQTHlRno4gFpJzqPjSIBZooD22tKeI4fE/YMRoHVJHmrQ2P5YL1DoZ0qaOKkbeFWeMg==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.15.tgz", + "integrity": "sha512-fyTE8cklgkyR1p03kJa5zXEaZ9El+kDNM5A+66+8evQS5e/6v0Gk28LqA0Jet8gKSOyP+OTm/tJHzMlGdQerdQ==", "cpu": [ "ia32" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -2435,12 +2540,13 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.5.tgz", - "integrity": "sha512-tEQ7oinq1/CjSG9uSTerca3v4AZ+dFa+4Yu6ihaG8Ud8ddqLQgFGcnwYls13H5X5CPDPZJdYxyeMui6muOLd4g==", + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.15.tgz", + "integrity": "sha512-SzqGbsLsP9OwKNUG9nekShTwhj6JSB9ZLMWQ8g1gG6hdE5gQLncbnbymrwy2yVmH9nikSLYRYxYMFu78Ggp7/g==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -2452,6 +2558,8 @@ }, "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==", "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", @@ -2463,6 +2571,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==", "license": "MIT", "engines": { "node": ">= 8" @@ -2470,6 +2580,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==", "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", @@ -2479,6 +2591,16 @@ "node": ">= 8" } }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.4.0" + } + }, "node_modules/@open-draft/until": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-1.0.3.tgz", @@ -2487,9 +2609,9 @@ "license": "MIT" }, "node_modules/@percy/appium-app": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@percy/appium-app/-/appium-app-2.0.7.tgz", - "integrity": "sha512-mFk9Ez6hyiBMT8hmED1oCvB5jGk98smhPZXBmx36J3+axz0siYUXqwtye8omWgX++keHowA0y7urDrdu+Ad8lg==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@percy/appium-app/-/appium-app-2.0.8.tgz", + "integrity": "sha512-meG7ijg5tXsyf92UeVyUb76gOICHiWFjjYmhnXbb3xlwfYAmZ4XWMvv7vhXFQ0vQKCasUEwrYo1bcZ40qzCrqg==", "dev": true, "license": "MIT", "dependencies": { @@ -2501,9 +2623,9 @@ } }, "node_modules/@percy/sdk-utils": { - "version": "1.29.3", - "resolved": "https://registry.npmjs.org/@percy/sdk-utils/-/sdk-utils-1.29.3.tgz", - "integrity": "sha512-ITUZinf+50O/Izs/X3HaRxnZvLv4Fw8lV2mSqVD/500au6bApUNeMHnoaAHOC57FgyUOUaYldiAAXNtE/zANtw==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@percy/sdk-utils/-/sdk-utils-1.30.0.tgz", + "integrity": "sha512-GPEexJ0gxiFXqjFpL8EtILZo/arrwdz96oyZMsCeRu9bVSQ8ZvptFlwO8hYKtXvZcY7CJfGnUyOcza8CYPxM3g==", "dev": true, "license": "MIT", "engines": { @@ -2511,13 +2633,13 @@ } }, "node_modules/@percy/selenium-webdriver": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@percy/selenium-webdriver/-/selenium-webdriver-2.0.5.tgz", - "integrity": "sha512-bNj52xQm02dY872loFa+8OwyuGcdYHYvCKflmSEsF9EDRiSDj0Wr+XP+DDIgDAl9xXschA7OOdXCLTWV4zEQWA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@percy/selenium-webdriver/-/selenium-webdriver-2.1.0.tgz", + "integrity": "sha512-CkPe22AJV2ATVDIWLY8PSPDSKx081dS+COgydfdRHXnc5mRw/8YGRcMJw4uvRR4r4u8b9ET2KtPVg0Q56vuSEg==", "dev": true, "license": "MIT", "dependencies": { - "@percy/sdk-utils": "^1.28.0", + "@percy/sdk-utils": "^1.29.5-beta.0", "node-request-interceptor": "^0.6.3" }, "engines": { @@ -2526,6 +2648,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, "license": "MIT", "optional": true, @@ -2534,9 +2658,9 @@ } }, "node_modules/@promptbook/utils": { - "version": "0.58.0", - "resolved": "https://registry.npmjs.org/@promptbook/utils/-/utils-0.58.0.tgz", - "integrity": "sha512-TglWndmjikWN+OGg9eNOUaMTM7RHr8uFCtgxfWULT1BUjcohywdijf54vS1U4mZ1tBLdHD4/fIrIHtmHzPUIZQ==", + "version": "0.70.0-1", + "resolved": "https://registry.npmjs.org/@promptbook/utils/-/utils-0.70.0-1.tgz", + "integrity": "sha512-qd2lLRRN+sE6UuNMi2tEeUUeb4zmXnxY5EMdfHVXNE+bqBDpUC7/aEfXgA3jnUXEr+xFjQ8PTFQgWvBMaKvw0g==", "dev": true, "funding": [ { @@ -2548,48 +2672,85 @@ "url": "https://github.com/webgptorg/promptbook/blob/main/README.md#%EF%B8%8F-contributing" } ], + "license": "CC-BY-4.0", "dependencies": { - "spacetrim": "0.11.36" + "spacetrim": "0.11.39" } }, "node_modules/@puppeteer/browsers": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.9.1.tgz", - "integrity": "sha512-PuvK6xZzGhKPvlx3fpfdM2kYY3P/hB1URtK8wA7XUJ6prn6pp22zvJHu48th0SGcHL9SutbPHrFuQgfXTFobWA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.4.0.tgz", + "integrity": "sha512-x8J1csfIygOwf6D6qUAZ0ASk3z63zPb7wkNeHRerCMh82qWKUrOgkuP005AJC8lDL6/evtXETGEJVcwykKT4/g==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "debug": "4.3.4", - "extract-zip": "2.0.1", - "progress": "2.0.3", - "proxy-agent": "6.3.1", - "tar-fs": "3.0.4", - "unbzip2-stream": "1.4.3", - "yargs": "17.7.2" + "debug": "^4.3.6", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.4.0", + "semver": "^7.6.3", + "tar-fs": "^3.0.6", + "unbzip2-stream": "^1.4.3", + "yargs": "^17.7.2" }, "bin": { "browsers": "lib/cjs/main-cli.js" }, "engines": { - "node": ">=16.3.0" + "node": ">=18" } }, - "node_modules/@puppeteer/browsers/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@puppeteer/browsers/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "license": "ISC", "dependencies": { - "ms": "2.1.2" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=6.0" + "node": ">=12" + } + }, + "node_modules/@puppeteer/browsers/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "engines": { + "node": ">=12" + } + }, + "node_modules/@puppeteer/browsers/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" } }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, "node_modules/@sec-ant/readable-stream": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", @@ -2606,6 +2767,8 @@ }, "node_modules/@sindresorhus/is": { "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "dev": true, "license": "MIT", "engines": { @@ -2632,12 +2795,14 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "license": "Apache-2.0", "peer": true }, "node_modules/@swc/helpers": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", + "license": "Apache-2.0", "peer": true, "dependencies": { "@swc/counter": "^0.1.3", @@ -2649,6 +2814,7 @@ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", "dev": true, + "license": "MIT", "dependencies": { "defer-to-connect": "^2.0.1" }, @@ -2658,11 +2824,15 @@ }, "node_modules/@tootallnate/quickjs-emscripten": { "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", "dev": true, "license": "MIT" }, "node_modules/@types/body-parser": { "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dev": true, "license": "MIT", "dependencies": { @@ -2674,12 +2844,15 @@ "version": "1.3.4", "resolved": "https://registry.npmjs.org/@types/brotli/-/brotli-1.3.4.tgz", "integrity": "sha512-cKYjgaS2DMdCKF7R0F5cgx1nfBYObN2ihIuPGQ4/dlIY6RpV7OWNwe9L8V4tTVKL2eZqOkNM9FM/rgTvLf4oXw==", + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/connect": { "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, "license": "MIT", "dependencies": { @@ -2688,6 +2861,8 @@ }, "node_modules/@types/debug": { "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2696,6 +2871,8 @@ }, "node_modules/@types/express": { "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2706,7 +2883,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.19.3", + "version": "4.19.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", + "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", "dev": true, "license": "MIT", "dependencies": { @@ -2727,10 +2906,13 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/http-errors": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", "dev": true, "license": "MIT" }, @@ -2763,11 +2945,15 @@ }, "node_modules/@types/jasmine": { "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-5.1.4.tgz", + "integrity": "sha512-px7OMFO/ncXxixDe1zR13V1iycqWae0MxTaw62RpFlksUi5QuNWgQJFkTQjIOvrmutJbI7Fp2Y2N1F6D2R4G6w==", "dev": true, "license": "MIT" }, "node_modules/@types/jscodeshift": { "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@types/jscodeshift/-/jscodeshift-0.11.11.tgz", + "integrity": "sha512-d7CAfFGOupj5qCDqMODXxNz2/NwCv/Lha78ZFbnr6qpk3K98iSB8I+ig9ERE2+EeYML352VMRsjPyOpeA+04eQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2777,16 +2963,22 @@ }, "node_modules/@types/json5": { "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true, "license": "MIT" }, "node_modules/@types/mime": { "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "dev": true, "license": "MIT" }, "node_modules/@types/ms": { "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", "dev": true, "license": "MIT" }, @@ -2801,14 +2993,18 @@ } }, "node_modules/@types/node": { - "version": "20.14.1", + "version": "22.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", + "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.19.2" } }, "node_modules/@types/node-forge": { "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2823,22 +3019,30 @@ "license": "MIT" }, "node_modules/@types/qs": { - "version": "6.9.15", + "version": "6.9.16", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz", + "integrity": "sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==", "dev": true, "license": "MIT" }, "node_modules/@types/range-parser": { "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", "dev": true, "license": "MIT" }, "node_modules/@types/semver": { "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "dev": true, "license": "MIT" }, "node_modules/@types/send": { "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dev": true, "license": "MIT", "dependencies": { @@ -2848,6 +3052,8 @@ }, "node_modules/@types/serve-static": { "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "dev": true, "license": "MIT", "dependencies": { @@ -2872,6 +3078,8 @@ }, "node_modules/@types/tar-stream": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/tar-stream/-/tar-stream-3.1.3.tgz", + "integrity": "sha512-Zbnx4wpkWBMBSu5CytMbrT5ZpMiF55qgM+EpHzR4yIDu7mv52cej8hTkOc6K+LzpkOAbxwn/m7j3iO+/l42YkQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2889,7 +3097,8 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/@types/which/-/which-2.0.2.tgz", "integrity": "sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/wrap-ansi": { "version": "3.0.0", @@ -2899,10 +3108,11 @@ "license": "MIT" }, "node_modules/@types/ws": { - "version": "8.5.10", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", - "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -2926,6 +3136,8 @@ }, "node_modules/@types/yauzl": { "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", "dev": true, "license": "MIT", "optional": true, @@ -2934,15 +3146,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.14.1", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", + "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.14.1", - "@typescript-eslint/type-utils": "7.14.1", - "@typescript-eslint/utils": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/type-utils": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -2966,14 +3180,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.14.1", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "7.14.1", - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/typescript-estree": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", "debug": "^4.3.4" }, "engines": { @@ -2993,12 +3209,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.14.1", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1" + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -3009,12 +3227,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.14.1", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "7.14.1", - "@typescript-eslint/utils": "7.14.1", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -3035,7 +3255,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.14.1", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", "dev": true, "license": "MIT", "engines": { @@ -3047,12 +3269,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.14.1", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -3074,14 +3298,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.14.1", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.14.1", - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/typescript-estree": "7.14.1" + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -3095,11 +3321,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.14.1", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.14.1", + "@typescript-eslint/types": "7.18.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -3111,21 +3339,28 @@ } }, "node_modules/@typescript/vfs": { - "version": "1.5.2", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@typescript/vfs/-/vfs-1.6.0.tgz", + "integrity": "sha512-hvJUjNVeBMp77qPINuUvYXj4FyWeeMMKZkxEATEU3hqBAQ7qdTBCUFT7Sp0Zu0faeEtFf+ldXxMEDr/bk73ISg==", "license": "MIT", "dependencies": { "debug": "^4.1.1" + }, + "peerDependencies": { + "typescript": "*" } }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "dev": true, "license": "ISC" }, "node_modules/@vitest/pretty-format": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.0.tgz", - "integrity": "sha512-7sxf2F3DNYatgmzXXcTh6cq+/fxwB47RIQqZJFoSH883wnVAoccSRT6g+dTKemUBo8Q5N4OYYj1EBXLuRKvp3Q==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.3.tgz", + "integrity": "sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3136,34 +3371,24 @@ } }, "node_modules/@vitest/snapshot": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.0.tgz", - "integrity": "sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.3.tgz", + "integrity": "sha512-qWC2mWc7VAXmjAkEKxrScWHWFyCQx/cmiZtuGqMi+WwqQJ2iURsVY4ZfAK6dVo6K2smKRU6l3BPwqEBvhnpQGg==", "dev": true, "license": "MIT", "dependencies": { - "magic-string": "^0.30.5", - "pathe": "^1.1.1", - "pretty-format": "^29.7.0" + "@vitest/pretty-format": "2.1.3", + "magic-string": "^0.30.11", + "pathe": "^1.1.2" }, "funding": { "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/snapshot/node_modules/magic-string": { - "version": "0.30.11", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", - "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, "node_modules/@wdio/browserstack-service": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/@wdio/browserstack-service/-/browserstack-service-9.0.9.tgz", - "integrity": "sha512-lp3j0OPIB3iO1ZvQ+jRikFqzhACalxOks2D85ws6OAzH41yPmOL8hB6DNSW/EFc/hT974tdj+wTtBZRk6cK5mg==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@wdio/browserstack-service/-/browserstack-service-9.2.1.tgz", + "integrity": "sha512-Vc6ysnaZ4R+YCsPN6PpJRuRVAMu3t3PUR/73gU6jT4UP3Pa45M9gi5ftAniGJlK0nDdkadFeBLGeYVNFVXRLww==", "dev": true, "license": "MIT", "dependencies": { @@ -3171,9 +3396,9 @@ "@percy/appium-app": "^2.0.1", "@percy/selenium-webdriver": "^2.0.3", "@types/gitconfiglocal": "^2.0.1", - "@wdio/logger": "9.0.8", - "@wdio/reporter": "9.0.8", - "@wdio/types": "9.0.8", + "@wdio/logger": "9.1.3", + "@wdio/reporter": "9.1.3", + "@wdio/types": "9.1.3", "browserstack-local": "^1.5.1", "chalk": "^5.3.0", "csv-writer": "^1.6.0", @@ -3181,7 +3406,7 @@ "git-repo-info": "^2.1.1", "gitconfiglocal": "^2.1.0", "uuid": "^10.0.0", - "webdriverio": "9.0.9", + "webdriverio": "9.2.1", "winston-transport": "^4.5.0", "yauzl": "^3.0.0" }, @@ -3198,6 +3423,8 @@ "integrity": "sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==", "dev": true, "license": "Apache-2.0", + "optional": true, + "peer": true, "dependencies": { "debug": "^4.3.5", "extract-zip": "^2.0.1", @@ -3215,133 +3442,14 @@ "node": ">=18" } }, - "node_modules/@wdio/browserstack-service/node_modules/@wdio/config": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.0.8.tgz", - "integrity": "sha512-37L+hd+A1Nyehd/pgfTrLC6w+Ngbu0CIoFh9Vv6v8Cgu5Hih0TLofvlg+J1BNbcTd5eQ2tFKZBDeFMhQaIiTpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@wdio/logger": "9.0.8", - "@wdio/types": "9.0.8", - "@wdio/utils": "9.0.8", - "decamelize": "^6.0.0", - "deepmerge-ts": "^7.0.3", - "glob": "^10.2.2", - "import-meta-resolve": "^4.0.0" - }, - "engines": { - "node": ">=18.20.0" - } - }, - "node_modules/@wdio/browserstack-service/node_modules/@wdio/logger": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.0.8.tgz", - "integrity": "sha512-uIyYIDBwLczmsp9JE5hN3ME8Xg+9WNBfSNXD69ICHrY9WPTzFf94UeTuavK7kwSKF3ro2eJbmNZItYOfnoovnw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^5.1.2", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18.20.0" - } - }, - "node_modules/@wdio/browserstack-service/node_modules/@wdio/protocols": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.0.8.tgz", - "integrity": "sha512-xRH54byFf623/w/KW62xkf/C2mGyigSfMm+UT3tNEAd5ZA9X2VAWQWQBPzdcrsck7Fxk4zlQX8Kb34RSs7Cy4Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@wdio/browserstack-service/node_modules/@wdio/repl": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.0.8.tgz", - "integrity": "sha512-3iubjl4JX5zD21aFxZwQghqC3lgu+mSs8c3NaiYYNCC+IT5cI/8QuKlgh9s59bu+N3gG988jqMJeCYlKuUv/iw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "^20.1.0" - }, - "engines": { - "node": ">=18.20.0" - } - }, - "node_modules/@wdio/browserstack-service/node_modules/@wdio/types": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.0.8.tgz", - "integrity": "sha512-pmz2iRWddTanrv8JC7v3wUGm17KRv2WyyJhQfklMSANn9V1ep6pw1RJG2WJnKq4NojMvH1nVv1sMZxXrYPhpYw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "^20.1.0" - }, - "engines": { - "node": ">=18.20.0" - } - }, - "node_modules/@wdio/browserstack-service/node_modules/@wdio/utils": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.0.8.tgz", - "integrity": "sha512-p3EgOdkhCvMxJFd3WTtSChqYFQu2mz69/5tOsljDaL+4QYwnRR7O8M9wFsL3/9XMVcHdnC4Ija2VRxQ/lb+hHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@puppeteer/browsers": "^2.2.0", - "@wdio/logger": "9.0.8", - "@wdio/types": "9.0.8", - "decamelize": "^6.0.0", - "deepmerge-ts": "^7.0.3", - "edgedriver": "^5.6.1", - "geckodriver": "^4.3.3", - "get-port": "^7.0.0", - "import-meta-resolve": "^4.0.0", - "locate-app": "^2.2.24", - "safaridriver": "^0.1.2", - "split2": "^4.2.0", - "wait-port": "^1.1.0" - }, - "engines": { - "node": ">=18.20.0" - } - }, - "node_modules/@wdio/browserstack-service/node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "node_modules/@wdio/browserstack-service/node_modules/@types/node": { + "version": "20.16.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.11.tgz", + "integrity": "sha512-y+cTCACu92FyA5fgQSAI8A1H429g7aSK2HsO7K4XYUWc4dY5IUz55JSDIYT6/VsOLfGy8vmvQYC2hfb0iF16Uw==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@wdio/browserstack-service/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@wdio/browserstack-service/node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" + "undici-types": "~6.19.2" } }, "node_modules/@wdio/browserstack-service/node_modules/chalk": { @@ -3374,14 +3482,21 @@ "devtools-protocol": "*" } }, - "node_modules/@wdio/browserstack-service/node_modules/deepmerge-ts": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.0.tgz", - "integrity": "sha512-q6bNsfNBtgr8ZOQqmZbl94MmYWm+QcDNIkqCxVWiw1vKvf+y/N2dZQKdnDXn4c5Ygt/y63tDof6OCN+2YwWVEg==", + "node_modules/@wdio/browserstack-service/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, - "license": "BSD-3-Clause", + "license": "ISC", + "optional": true, + "peer": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, "engines": { - "node": ">=16.0.0" + "node": ">=12" } }, "node_modules/@wdio/browserstack-service/node_modules/devtools-protocol": { @@ -3393,80 +3508,6 @@ "optional": true, "peer": true }, - "node_modules/@wdio/browserstack-service/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@wdio/browserstack-service/node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@wdio/browserstack-service/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/@wdio/browserstack-service/node_modules/mitt": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/@wdio/browserstack-service/node_modules/proxy-agent": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", - "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "http-proxy-agent": "^7.0.1", - "https-proxy-agent": "^7.0.3", - "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.0.1", - "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.2" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/@wdio/browserstack-service/node_modules/puppeteer-core": { "version": "22.15.0", "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.15.0.tgz", @@ -3486,80 +3527,28 @@ "node": ">=18" } }, - "node_modules/@wdio/browserstack-service/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, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@wdio/browserstack-service/node_modules/tar-fs": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", - "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - }, - "optionalDependencies": { - "bare-fs": "^2.1.1", - "bare-path": "^2.1.0" - } - }, - "node_modules/@wdio/browserstack-service/node_modules/webdriver": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.0.8.tgz", - "integrity": "sha512-UnV0ANriSTUgypGk0pz8lApeQuHt+72WEDQG5hFwkkSvggtKLyWdT7+PQkNoXvDajTmiLIqUOq8XPI/Pm71rtw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "^20.1.0", - "@types/ws": "^8.5.3", - "@wdio/config": "9.0.8", - "@wdio/logger": "9.0.8", - "@wdio/protocols": "9.0.8", - "@wdio/types": "9.0.8", - "@wdio/utils": "9.0.8", - "deepmerge-ts": "^7.0.3", - "ws": "^8.8.0" - }, - "engines": { - "node": ">=18.20.0" - } - }, "node_modules/@wdio/browserstack-service/node_modules/webdriverio": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.0.9.tgz", - "integrity": "sha512-IwvKzhcJ9NjOL55xwj27uTTKkfxsg77dmAfqoKFSP5dQ70JzU+NgxiALEjjWQDybtt1yGIkHk7wjjxjboMU1uw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.2.1.tgz", + "integrity": "sha512-AI7xzqTmFiU7oAx4fpEF1U1MA7smhCPVDeM0gxPqG5qWepzib3WDX2SsRtcmhdVW+vLJ3m4bf8rAXxZ2M1msWA==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "^20.11.30", "@types/sinonjs__fake-timers": "^8.1.5", - "@wdio/config": "9.0.8", - "@wdio/logger": "9.0.8", - "@wdio/protocols": "9.0.8", + "@wdio/config": "9.1.3", + "@wdio/logger": "9.1.3", + "@wdio/protocols": "9.2.0", "@wdio/repl": "9.0.8", - "@wdio/types": "9.0.8", - "@wdio/utils": "9.0.8", + "@wdio/types": "9.1.3", + "@wdio/utils": "9.1.3", "archiver": "^7.0.1", "aria-query": "^5.3.0", "cheerio": "^1.0.0-rc.12", "css-shorthand-properties": "^1.1.1", "css-value": "^0.0.1", "grapheme-splitter": "^1.0.4", - "htmlfy": "^0.2.1", + "htmlfy": "^0.3.0", "import-meta-resolve": "^4.0.0", "is-plain-obj": "^4.1.0", "jszip": "^3.10.1", @@ -3571,7 +3560,7 @@ "rgb2hex": "0.2.5", "serialize-error": "^11.0.3", "urlpattern-polyfill": "^10.0.0", - "webdriver": "9.0.8" + "webdriver": "9.2.0" }, "engines": { "node": ">=18.20.0" @@ -3585,73 +3574,70 @@ } } }, - "node_modules/@wdio/browserstack-service/node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "node_modules/@wdio/browserstack-service/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "license": "MIT", - "engines": { - "node": ">=10.0.0" + "optional": true, + "peer": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "engines": { + "node": ">=12" } }, - "node_modules/@wdio/browserstack-service/node_modules/yauzl": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.1.3.tgz", - "integrity": "sha512-JCCdmlJJWv7L0q/KylOekyRaUrdEoUxWkWVcgorosTROCFWiS9p2NNPE9Yb91ak7b1N5SxAZEliWpspbZccivw==", + "node_modules/@wdio/browserstack-service/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, - "license": "MIT", - "dependencies": { - "buffer-crc32": "~0.2.3", - "pend": "~1.2.0" - }, + "license": "ISC", + "optional": true, + "peer": true, "engines": { "node": ">=12" } }, "node_modules/@wdio/cli": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-9.0.9.tgz", - "integrity": "sha512-/sY0pMpLhsnhWpWovG81F/PqYmC7EluskrUhQ8/7BW1XDcNkUminCsd685HgAqPE3nX6Npx1oRhCbNDL/7Z7pw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-9.2.1.tgz", + "integrity": "sha512-lGz/JBkSQh4qH9sDFbNrPHfQNxrDtbm2tb3NgzMNXk88G2dq9AzoYriRgfXO7rKETc+nFreuEdULV+MMhRHk/A==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "^20.1.1", - "@vitest/snapshot": "^1.2.1", - "@wdio/config": "9.0.8", - "@wdio/globals": "9.0.9", - "@wdio/logger": "9.0.8", - "@wdio/protocols": "9.0.8", - "@wdio/types": "9.0.8", - "@wdio/utils": "9.0.8", + "@vitest/snapshot": "^2.1.1", + "@wdio/config": "9.1.3", + "@wdio/globals": "9.2.1", + "@wdio/logger": "9.1.3", + "@wdio/protocols": "9.2.0", + "@wdio/types": "9.1.3", + "@wdio/utils": "9.1.3", "async-exit-hook": "^2.0.1", "chalk": "^5.2.0", - "chokidar": "^3.5.3", + "chokidar": "^4.0.0", "cli-spinners": "^3.0.0", "dotenv": "^16.3.1", "ejs": "^3.1.9", "execa": "^9.2.0", "import-meta-resolve": "^4.0.0", - "inquirer": "^10.1.8", + "inquirer": "^11.0.1", "lodash.flattendeep": "^4.4.0", "lodash.pickby": "^4.6.0", "lodash.union": "^4.6.0", "read-pkg-up": "^10.0.0", "recursive-readdir": "^2.2.3", "tsx": "^4.7.2", - "webdriverio": "9.0.9", + "webdriverio": "9.2.1", "yargs": "^17.7.2" }, "bin": { @@ -3662,13 +3648,15 @@ } }, "node_modules/@wdio/cli/node_modules/@puppeteer/browsers": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.4.0.tgz", - "integrity": "sha512-x8J1csfIygOwf6D6qUAZ0ASk3z63zPb7wkNeHRerCMh82qWKUrOgkuP005AJC8lDL6/evtXETGEJVcwykKT4/g==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.3.0.tgz", + "integrity": "sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==", "dev": true, "license": "Apache-2.0", + "optional": true, + "peer": true, "dependencies": { - "debug": "^4.3.6", + "debug": "^4.3.5", "extract-zip": "^2.0.1", "progress": "^2.0.3", "proxy-agent": "^6.4.0", @@ -3684,175 +3672,185 @@ "node": ">=18" } }, - "node_modules/@wdio/cli/node_modules/@wdio/config": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.0.8.tgz", - "integrity": "sha512-37L+hd+A1Nyehd/pgfTrLC6w+Ngbu0CIoFh9Vv6v8Cgu5Hih0TLofvlg+J1BNbcTd5eQ2tFKZBDeFMhQaIiTpg==", + "node_modules/@wdio/cli/node_modules/@types/node": { + "version": "20.16.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.11.tgz", + "integrity": "sha512-y+cTCACu92FyA5fgQSAI8A1H429g7aSK2HsO7K4XYUWc4dY5IUz55JSDIYT6/VsOLfGy8vmvQYC2hfb0iF16Uw==", "dev": true, "license": "MIT", "dependencies": { - "@wdio/logger": "9.0.8", - "@wdio/types": "9.0.8", - "@wdio/utils": "9.0.8", - "decamelize": "^6.0.0", - "deepmerge-ts": "^7.0.3", - "glob": "^10.2.2", - "import-meta-resolve": "^4.0.0" - }, - "engines": { - "node": ">=18.20.0" + "undici-types": "~6.19.2" } }, - "node_modules/@wdio/cli/node_modules/@wdio/logger": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.0.8.tgz", - "integrity": "sha512-uIyYIDBwLczmsp9JE5hN3ME8Xg+9WNBfSNXD69ICHrY9WPTzFf94UeTuavK7kwSKF3ro2eJbmNZItYOfnoovnw==", + "node_modules/@wdio/cli/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, "license": "MIT", - "dependencies": { - "chalk": "^5.1.2", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^7.1.0" - }, "engines": { - "node": ">=18.20.0" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@wdio/cli/node_modules/@wdio/protocols": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.0.8.tgz", - "integrity": "sha512-xRH54byFf623/w/KW62xkf/C2mGyigSfMm+UT3tNEAd5ZA9X2VAWQWQBPzdcrsck7Fxk4zlQX8Kb34RSs7Cy4Q==", + "node_modules/@wdio/cli/node_modules/chromium-bidi": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.6.3.tgz", + "integrity": "sha512-qXlsCmpCZJAnoTYI83Iu6EdYQpMYdVkCfq08KDh2pmlVqK5t5IA9mGs4/LwCwp4fqisSOMXZxP3HIh8w8aRn0A==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "optional": true, + "peer": true, + "dependencies": { + "mitt": "3.0.1", + "urlpattern-polyfill": "10.0.0", + "zod": "3.23.8" + }, + "peerDependencies": { + "devtools-protocol": "*" + } }, - "node_modules/@wdio/cli/node_modules/@wdio/repl": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.0.8.tgz", - "integrity": "sha512-3iubjl4JX5zD21aFxZwQghqC3lgu+mSs8c3NaiYYNCC+IT5cI/8QuKlgh9s59bu+N3gG988jqMJeCYlKuUv/iw==", + "node_modules/@wdio/cli/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@types/node": "^20.1.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=18.20.0" + "node": ">=12" } }, - "node_modules/@wdio/cli/node_modules/@wdio/types": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.0.8.tgz", - "integrity": "sha512-pmz2iRWddTanrv8JC7v3wUGm17KRv2WyyJhQfklMSANn9V1ep6pw1RJG2WJnKq4NojMvH1nVv1sMZxXrYPhpYw==", + "node_modules/@wdio/cli/node_modules/devtools-protocol": { + "version": "0.0.1312386", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1312386.tgz", + "integrity": "sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", + "optional": true, + "peer": true + }, + "node_modules/@wdio/cli/node_modules/puppeteer-core": { + "version": "22.15.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.15.0.tgz", + "integrity": "sha512-cHArnywCiAAVXa3t4GGL2vttNxh7GqXtIYGym99egkNJ3oG//wL9LkvO4WE8W1TJe95t1F1ocu9X4xWaGsOKOA==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "peer": true, "dependencies": { - "@types/node": "^20.1.0" + "@puppeteer/browsers": "2.3.0", + "chromium-bidi": "0.6.3", + "debug": "^4.3.6", + "devtools-protocol": "0.0.1312386", + "ws": "^8.18.0" }, "engines": { - "node": ">=18.20.0" + "node": ">=18" } }, - "node_modules/@wdio/cli/node_modules/@wdio/utils": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.0.8.tgz", - "integrity": "sha512-p3EgOdkhCvMxJFd3WTtSChqYFQu2mz69/5tOsljDaL+4QYwnRR7O8M9wFsL3/9XMVcHdnC4Ija2VRxQ/lb+hHQ==", + "node_modules/@wdio/cli/node_modules/webdriverio": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.2.1.tgz", + "integrity": "sha512-AI7xzqTmFiU7oAx4fpEF1U1MA7smhCPVDeM0gxPqG5qWepzib3WDX2SsRtcmhdVW+vLJ3m4bf8rAXxZ2M1msWA==", "dev": true, "license": "MIT", "dependencies": { - "@puppeteer/browsers": "^2.2.0", - "@wdio/logger": "9.0.8", - "@wdio/types": "9.0.8", - "decamelize": "^6.0.0", - "deepmerge-ts": "^7.0.3", - "edgedriver": "^5.6.1", - "geckodriver": "^4.3.3", - "get-port": "^7.0.0", + "@types/node": "^20.11.30", + "@types/sinonjs__fake-timers": "^8.1.5", + "@wdio/config": "9.1.3", + "@wdio/logger": "9.1.3", + "@wdio/protocols": "9.2.0", + "@wdio/repl": "9.0.8", + "@wdio/types": "9.1.3", + "@wdio/utils": "9.1.3", + "archiver": "^7.0.1", + "aria-query": "^5.3.0", + "cheerio": "^1.0.0-rc.12", + "css-shorthand-properties": "^1.1.1", + "css-value": "^0.0.1", + "grapheme-splitter": "^1.0.4", + "htmlfy": "^0.3.0", "import-meta-resolve": "^4.0.0", - "locate-app": "^2.2.24", - "safaridriver": "^0.1.2", - "split2": "^4.2.0", - "wait-port": "^1.1.0" + "is-plain-obj": "^4.1.0", + "jszip": "^3.10.1", + "lodash.clonedeep": "^4.5.0", + "lodash.zip": "^4.2.0", + "minimatch": "^9.0.3", + "query-selector-shadow-dom": "^1.0.1", + "resq": "^1.11.0", + "rgb2hex": "0.2.5", + "serialize-error": "^11.0.3", + "urlpattern-polyfill": "^10.0.0", + "webdriver": "9.2.0" }, "engines": { "node": ">=18.20.0" + }, + "peerDependencies": { + "puppeteer-core": "^22.3.0" + }, + "peerDependenciesMeta": { + "puppeteer-core": { + "optional": true + } } }, - "node_modules/@wdio/cli/node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "node_modules/@wdio/cli/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.3.4" + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">= 14" + "node": ">=12" } }, - "node_modules/@wdio/cli/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "node_modules/@wdio/cli/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@wdio/cli/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "node_modules/@wdio/config": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.1.3.tgz", + "integrity": "sha512-fozjb5Jl26QqQoZ2lJc8uZwzK2iKKmIfNIdNvx5JmQt78ybShiPuWWgu/EcHYDvAiZwH76K59R1Gp4lNmmEDew==", "dev": true, "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@wdio/cli/node_modules/chromium-bidi": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.6.3.tgz", - "integrity": "sha512-qXlsCmpCZJAnoTYI83Iu6EdYQpMYdVkCfq08KDh2pmlVqK5t5IA9mGs4/LwCwp4fqisSOMXZxP3HIh8w8aRn0A==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "peer": true, "dependencies": { - "mitt": "3.0.1", - "urlpattern-polyfill": "10.0.0", - "zod": "3.23.8" + "@wdio/logger": "9.1.3", + "@wdio/types": "9.1.3", + "@wdio/utils": "9.1.3", + "decamelize": "^6.0.0", + "deepmerge-ts": "^7.0.3", + "glob": "^10.2.2", + "import-meta-resolve": "^4.0.0" }, - "peerDependencies": { - "devtools-protocol": "*" - } - }, - "node_modules/@wdio/cli/node_modules/deepmerge-ts": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.0.tgz", - "integrity": "sha512-q6bNsfNBtgr8ZOQqmZbl94MmYWm+QcDNIkqCxVWiw1vKvf+y/N2dZQKdnDXn4c5Ygt/y63tDof6OCN+2YwWVEg==", - "dev": true, - "license": "BSD-3-Clause", "engines": { - "node": ">=16.0.0" + "node": ">=18.20.0" } }, - "node_modules/@wdio/cli/node_modules/devtools-protocol": { - "version": "0.0.1312386", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1312386.tgz", - "integrity": "sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "peer": true - }, - "node_modules/@wdio/cli/node_modules/glob": { + "node_modules/@wdio/config/node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", @@ -3873,84 +3871,26 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@wdio/cli/node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "node_modules/@wdio/globals": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-9.2.1.tgz", + "integrity": "sha512-svPSPbV9ZxunmkJVmcCw5A7vzGBYpO1kPmBK9LLZFfVhXiwps0EOl+j6KtqwbQ0cTvC6PEHzm/bwmX4DEzBAzA==", "dev": true, "license": "MIT", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@wdio/cli/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "license": "ISC", "engines": { - "node": ">=12" + "node": ">=18.20.0" + }, + "optionalDependencies": { + "expect-webdriverio": "^5.0.1", + "webdriverio": "9.2.1" } }, - "node_modules/@wdio/cli/node_modules/mitt": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "node_modules/@wdio/globals/node_modules/@puppeteer/browsers": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.3.0.tgz", + "integrity": "sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/@wdio/cli/node_modules/proxy-agent": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", - "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "http-proxy-agent": "^7.0.1", - "https-proxy-agent": "^7.0.3", - "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.0.1", - "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.2" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@wdio/cli/node_modules/puppeteer-core": { - "version": "22.15.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.15.0.tgz", - "integrity": "sha512-cHArnywCiAAVXa3t4GGL2vttNxh7GqXtIYGym99egkNJ3oG//wL9LkvO4WE8W1TJe95t1F1ocu9X4xWaGsOKOA==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "peer": true, - "dependencies": { - "@puppeteer/browsers": "2.3.0", - "chromium-bidi": "0.6.3", - "debug": "^4.3.6", - "devtools-protocol": "0.0.1312386", - "ws": "^8.18.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@wdio/cli/node_modules/puppeteer-core/node_modules/@puppeteer/browsers": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.3.0.tgz", - "integrity": "sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==", - "dev": true, - "license": "Apache-2.0", + "license": "Apache-2.0", "optional": true, "peer": true, "dependencies": { @@ -3970,80 +3910,135 @@ "node": ">=18" } }, - "node_modules/@wdio/cli/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==", + "node_modules/@wdio/globals/node_modules/@types/node": { + "version": "20.16.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.11.tgz", + "integrity": "sha512-y+cTCACu92FyA5fgQSAI8A1H429g7aSK2HsO7K4XYUWc4dY5IUz55JSDIYT6/VsOLfGy8vmvQYC2hfb0iF16Uw==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "ansi-regex": "^6.0.1" + "undici-types": "~6.19.2" + } + }, + "node_modules/@wdio/globals/node_modules/chromium-bidi": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.6.3.tgz", + "integrity": "sha512-qXlsCmpCZJAnoTYI83Iu6EdYQpMYdVkCfq08KDh2pmlVqK5t5IA9mGs4/LwCwp4fqisSOMXZxP3HIh8w8aRn0A==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "peer": true, + "dependencies": { + "mitt": "3.0.1", + "urlpattern-polyfill": "10.0.0", + "zod": "3.23.8" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, + "node_modules/@wdio/globals/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "optional": true, + "peer": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@wdio/cli/node_modules/tar-fs": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", - "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", + "node_modules/@wdio/globals/node_modules/devtools-protocol": { + "version": "0.0.1312386", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1312386.tgz", + "integrity": "sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "peer": true + }, + "node_modules/@wdio/globals/node_modules/expect-webdriverio": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-5.0.3.tgz", + "integrity": "sha512-0RHsFZX1856qCWZsXcvacFZpdZc7UAVD9wAglzf3KMWO1AoXt5EorjsNp1H9StGysxhJuVXJxRWKeXnD4LKtjQ==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "pump": "^3.0.0", - "tar-stream": "^3.1.5" + "@vitest/snapshot": "^2.0.5", + "expect": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "lodash.isequal": "^4.5.0" }, - "optionalDependencies": { - "bare-fs": "^2.1.1", - "bare-path": "^2.1.0" + "engines": { + "node": ">=18 || >=20 || >=22" + }, + "peerDependencies": { + "@wdio/globals": "^9.0.0", + "@wdio/logger": "^9.0.0", + "webdriverio": "^9.0.0" + }, + "peerDependenciesMeta": { + "@wdio/globals": { + "optional": false + }, + "@wdio/logger": { + "optional": false + }, + "webdriverio": { + "optional": false + } } }, - "node_modules/@wdio/cli/node_modules/webdriver": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.0.8.tgz", - "integrity": "sha512-UnV0ANriSTUgypGk0pz8lApeQuHt+72WEDQG5hFwkkSvggtKLyWdT7+PQkNoXvDajTmiLIqUOq8XPI/Pm71rtw==", + "node_modules/@wdio/globals/node_modules/puppeteer-core": { + "version": "22.15.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.15.0.tgz", + "integrity": "sha512-cHArnywCiAAVXa3t4GGL2vttNxh7GqXtIYGym99egkNJ3oG//wL9LkvO4WE8W1TJe95t1F1ocu9X4xWaGsOKOA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "optional": true, + "peer": true, "dependencies": { - "@types/node": "^20.1.0", - "@types/ws": "^8.5.3", - "@wdio/config": "9.0.8", - "@wdio/logger": "9.0.8", - "@wdio/protocols": "9.0.8", - "@wdio/types": "9.0.8", - "@wdio/utils": "9.0.8", - "deepmerge-ts": "^7.0.3", - "ws": "^8.8.0" + "@puppeteer/browsers": "2.3.0", + "chromium-bidi": "0.6.3", + "debug": "^4.3.6", + "devtools-protocol": "0.0.1312386", + "ws": "^8.18.0" }, "engines": { - "node": ">=18.20.0" + "node": ">=18" } }, - "node_modules/@wdio/cli/node_modules/webdriverio": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.0.9.tgz", - "integrity": "sha512-IwvKzhcJ9NjOL55xwj27uTTKkfxsg77dmAfqoKFSP5dQ70JzU+NgxiALEjjWQDybtt1yGIkHk7wjjxjboMU1uw==", + "node_modules/@wdio/globals/node_modules/webdriverio": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.2.1.tgz", + "integrity": "sha512-AI7xzqTmFiU7oAx4fpEF1U1MA7smhCPVDeM0gxPqG5qWepzib3WDX2SsRtcmhdVW+vLJ3m4bf8rAXxZ2M1msWA==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { "@types/node": "^20.11.30", "@types/sinonjs__fake-timers": "^8.1.5", - "@wdio/config": "9.0.8", - "@wdio/logger": "9.0.8", - "@wdio/protocols": "9.0.8", + "@wdio/config": "9.1.3", + "@wdio/logger": "9.1.3", + "@wdio/protocols": "9.2.0", "@wdio/repl": "9.0.8", - "@wdio/types": "9.0.8", - "@wdio/utils": "9.0.8", + "@wdio/types": "9.1.3", + "@wdio/utils": "9.1.3", "archiver": "^7.0.1", "aria-query": "^5.3.0", "cheerio": "^1.0.0-rc.12", "css-shorthand-properties": "^1.1.1", "css-value": "^0.0.1", "grapheme-splitter": "^1.0.4", - "htmlfy": "^0.2.1", + "htmlfy": "^0.3.0", "import-meta-resolve": "^4.0.0", "is-plain-obj": "^4.1.0", "jszip": "^3.10.1", @@ -4055,7 +4050,7 @@ "rgb2hex": "0.2.5", "serialize-error": "^11.0.3", "urlpattern-polyfill": "^10.0.0", - "webdriver": "9.0.8" + "webdriver": "9.2.0" }, "engines": { "node": ">=18.20.0" @@ -4069,90 +4064,66 @@ } } }, - "node_modules/@wdio/cli/node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "node_modules/@wdio/globals/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/@wdio/config": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.39.0.tgz", - "integrity": "sha512-yNuGPMPibY91s936gnJCHWlStvIyDrwLwGfLC/NCdTin4F7HL4Gp5iJnHWkJFty1/DfFi8jjoIUBNLM8HEez+A==", - "dev": true, + "optional": true, + "peer": true, "dependencies": { - "@wdio/logger": "8.38.0", - "@wdio/types": "8.39.0", - "@wdio/utils": "8.39.0", - "decamelize": "^6.0.0", - "deepmerge-ts": "^5.0.0", - "glob": "^10.2.2", - "import-meta-resolve": "^4.0.0" + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, "engines": { - "node": "^16.13 || >=18" + "node": ">=12" } }, - "node_modules/@wdio/config/node_modules/glob": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", - "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", + "node_modules/@wdio/globals/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, + "license": "ISC", + "optional": true, + "peer": true, "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=12" } }, - "node_modules/@wdio/globals": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-9.0.9.tgz", - "integrity": "sha512-Lmzf82NoNK+i+Z6slt/Ueu0iOfHMLMNxxWnvoC+en3g8A1xj2JxAinC4ymrc0iFC3uvG0SxMWlpVmGTk78wp2Q==", + "node_modules/@wdio/jasmine-framework": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@wdio/jasmine-framework/-/jasmine-framework-9.2.1.tgz", + "integrity": "sha512-I6qih7nbGlU/5NskyknYRd1fMSwKaentBuZVrMIjHIg+OB0d8C9FF/pxlipJVPK1fuFADvxEoJIkOF4uB7I1ZA==", "dev": true, "license": "MIT", + "dependencies": { + "@types/node": "^20.1.0", + "@wdio/globals": "9.2.1", + "@wdio/logger": "9.1.3", + "@wdio/types": "9.1.3", + "@wdio/utils": "9.1.3", + "expect-webdriverio": "^5.0.1", + "jasmine": "^5.0.0" + }, "engines": { "node": ">=18.20.0" - }, - "optionalDependencies": { - "expect-webdriverio": "^5.0.1", - "webdriverio": "9.0.9" } }, - "node_modules/@wdio/globals/node_modules/@puppeteer/browsers": { + "node_modules/@wdio/jasmine-framework/node_modules/@puppeteer/browsers": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.3.0.tgz", "integrity": "sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==", "dev": true, "license": "Apache-2.0", "optional": true, + "peer": true, "dependencies": { "debug": "^4.3.5", "extract-zip": "^2.0.1", @@ -4170,192 +4141,51 @@ "node": ">=18" } }, - "node_modules/@wdio/globals/node_modules/@vitest/snapshot": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.0.tgz", - "integrity": "sha512-x69CygGMzt9VCO283K2/FYQ+nBrOj66OTKpsPykjCR4Ac3lLV+m85hj9reaIGmjBSsKzVvbxWmjWE3kF5ha3uQ==", + "node_modules/@wdio/jasmine-framework/node_modules/@types/node": { + "version": "20.16.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.11.tgz", + "integrity": "sha512-y+cTCACu92FyA5fgQSAI8A1H429g7aSK2HsO7K4XYUWc4dY5IUz55JSDIYT6/VsOLfGy8vmvQYC2hfb0iF16Uw==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "@vitest/pretty-format": "2.1.0", - "magic-string": "^0.30.11", - "pathe": "^1.1.2" - }, - "funding": { - "url": "https://opencollective.com/vitest" + "undici-types": "~6.19.2" } }, - "node_modules/@wdio/globals/node_modules/@wdio/config": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.0.8.tgz", - "integrity": "sha512-37L+hd+A1Nyehd/pgfTrLC6w+Ngbu0CIoFh9Vv6v8Cgu5Hih0TLofvlg+J1BNbcTd5eQ2tFKZBDeFMhQaIiTpg==", + "node_modules/@wdio/jasmine-framework/node_modules/chromium-bidi": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.6.3.tgz", + "integrity": "sha512-qXlsCmpCZJAnoTYI83Iu6EdYQpMYdVkCfq08KDh2pmlVqK5t5IA9mGs4/LwCwp4fqisSOMXZxP3HIh8w8aRn0A==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "optional": true, + "peer": true, "dependencies": { - "@wdio/logger": "9.0.8", - "@wdio/types": "9.0.8", - "@wdio/utils": "9.0.8", - "decamelize": "^6.0.0", - "deepmerge-ts": "^7.0.3", - "glob": "^10.2.2", - "import-meta-resolve": "^4.0.0" + "mitt": "3.0.1", + "urlpattern-polyfill": "10.0.0", + "zod": "3.23.8" }, - "engines": { - "node": ">=18.20.0" + "peerDependencies": { + "devtools-protocol": "*" } }, - "node_modules/@wdio/globals/node_modules/@wdio/logger": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.0.8.tgz", - "integrity": "sha512-uIyYIDBwLczmsp9JE5hN3ME8Xg+9WNBfSNXD69ICHrY9WPTzFf94UeTuavK7kwSKF3ro2eJbmNZItYOfnoovnw==", + "node_modules/@wdio/jasmine-framework/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, - "license": "MIT", + "license": "ISC", "optional": true, + "peer": true, "dependencies": { - "chalk": "^5.1.2", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18.20.0" - } - }, - "node_modules/@wdio/globals/node_modules/@wdio/protocols": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.0.8.tgz", - "integrity": "sha512-xRH54byFf623/w/KW62xkf/C2mGyigSfMm+UT3tNEAd5ZA9X2VAWQWQBPzdcrsck7Fxk4zlQX8Kb34RSs7Cy4Q==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/@wdio/globals/node_modules/@wdio/repl": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.0.8.tgz", - "integrity": "sha512-3iubjl4JX5zD21aFxZwQghqC3lgu+mSs8c3NaiYYNCC+IT5cI/8QuKlgh9s59bu+N3gG988jqMJeCYlKuUv/iw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@types/node": "^20.1.0" - }, - "engines": { - "node": ">=18.20.0" - } - }, - "node_modules/@wdio/globals/node_modules/@wdio/types": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.0.8.tgz", - "integrity": "sha512-pmz2iRWddTanrv8JC7v3wUGm17KRv2WyyJhQfklMSANn9V1ep6pw1RJG2WJnKq4NojMvH1nVv1sMZxXrYPhpYw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@types/node": "^20.1.0" - }, - "engines": { - "node": ">=18.20.0" - } - }, - "node_modules/@wdio/globals/node_modules/@wdio/utils": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.0.8.tgz", - "integrity": "sha512-p3EgOdkhCvMxJFd3WTtSChqYFQu2mz69/5tOsljDaL+4QYwnRR7O8M9wFsL3/9XMVcHdnC4Ija2VRxQ/lb+hHQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@puppeteer/browsers": "^2.2.0", - "@wdio/logger": "9.0.8", - "@wdio/types": "9.0.8", - "decamelize": "^6.0.0", - "deepmerge-ts": "^7.0.3", - "edgedriver": "^5.6.1", - "geckodriver": "^4.3.3", - "get-port": "^7.0.0", - "import-meta-resolve": "^4.0.0", - "locate-app": "^2.2.24", - "safaridriver": "^0.1.2", - "split2": "^4.2.0", - "wait-port": "^1.1.0" - }, - "engines": { - "node": ">=18.20.0" - } - }, - "node_modules/@wdio/globals/node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "debug": "^4.3.4" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@wdio/globals/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "optional": true, "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@wdio/globals/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@wdio/globals/node_modules/chromium-bidi": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.6.3.tgz", - "integrity": "sha512-qXlsCmpCZJAnoTYI83Iu6EdYQpMYdVkCfq08KDh2pmlVqK5t5IA9mGs4/LwCwp4fqisSOMXZxP3HIh8w8aRn0A==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "peer": true, - "dependencies": { - "mitt": "3.0.1", - "urlpattern-polyfill": "10.0.0", - "zod": "3.23.8" - }, - "peerDependencies": { - "devtools-protocol": "*" - } - }, - "node_modules/@wdio/globals/node_modules/deepmerge-ts": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.0.tgz", - "integrity": "sha512-q6bNsfNBtgr8ZOQqmZbl94MmYWm+QcDNIkqCxVWiw1vKvf+y/N2dZQKdnDXn4c5Ygt/y63tDof6OCN+2YwWVEg==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": ">=16.0.0" } }, - "node_modules/@wdio/globals/node_modules/devtools-protocol": { + "node_modules/@wdio/jasmine-framework/node_modules/devtools-protocol": { "version": "0.0.1312386", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1312386.tgz", "integrity": "sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==", @@ -4364,13 +4194,12 @@ "optional": true, "peer": true }, - "node_modules/@wdio/globals/node_modules/expect-webdriverio": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-5.0.2.tgz", - "integrity": "sha512-vkUwoUvURH25pRClX1I5oCIObju8cT9kN5jQH4RN5QxKXK7hdowYd8dbDXD5JKOE/OutdYx67YtCl8vpZq/uSg==", + "node_modules/@wdio/jasmine-framework/node_modules/expect-webdriverio": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-5.0.3.tgz", + "integrity": "sha512-0RHsFZX1856qCWZsXcvacFZpdZc7UAVD9wAglzf3KMWO1AoXt5EorjsNp1H9StGysxhJuVXJxRWKeXnD4LKtjQ==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { "@vitest/snapshot": "^2.0.5", "expect": "^29.7.0", @@ -4397,96 +4226,7 @@ } } }, - "node_modules/@wdio/globals/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@wdio/globals/node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@wdio/globals/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "license": "ISC", - "optional": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@wdio/globals/node_modules/magic-string": { - "version": "0.30.11", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", - "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, - "node_modules/@wdio/globals/node_modules/mitt": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/@wdio/globals/node_modules/proxy-agent": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", - "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "http-proxy-agent": "^7.0.1", - "https-proxy-agent": "^7.0.3", - "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.0.1", - "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.2" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@wdio/globals/node_modules/puppeteer-core": { + "node_modules/@wdio/jasmine-framework/node_modules/puppeteer-core": { "version": "22.15.0", "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.15.0.tgz", "integrity": "sha512-cHArnywCiAAVXa3t4GGL2vttNxh7GqXtIYGym99egkNJ3oG//wL9LkvO4WE8W1TJe95t1F1ocu9X4xWaGsOKOA==", @@ -4505,84 +4245,29 @@ "node": ">=18" } }, - "node_modules/@wdio/globals/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, - "license": "MIT", - "optional": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@wdio/globals/node_modules/tar-fs": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", - "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - }, - "optionalDependencies": { - "bare-fs": "^2.1.1", - "bare-path": "^2.1.0" - } - }, - "node_modules/@wdio/globals/node_modules/webdriver": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.0.8.tgz", - "integrity": "sha512-UnV0ANriSTUgypGk0pz8lApeQuHt+72WEDQG5hFwkkSvggtKLyWdT7+PQkNoXvDajTmiLIqUOq8XPI/Pm71rtw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@types/node": "^20.1.0", - "@types/ws": "^8.5.3", - "@wdio/config": "9.0.8", - "@wdio/logger": "9.0.8", - "@wdio/protocols": "9.0.8", - "@wdio/types": "9.0.8", - "@wdio/utils": "9.0.8", - "deepmerge-ts": "^7.0.3", - "ws": "^8.8.0" - }, - "engines": { - "node": ">=18.20.0" - } - }, - "node_modules/@wdio/globals/node_modules/webdriverio": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.0.9.tgz", - "integrity": "sha512-IwvKzhcJ9NjOL55xwj27uTTKkfxsg77dmAfqoKFSP5dQ70JzU+NgxiALEjjWQDybtt1yGIkHk7wjjxjboMU1uw==", + "node_modules/@wdio/jasmine-framework/node_modules/webdriverio": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.2.1.tgz", + "integrity": "sha512-AI7xzqTmFiU7oAx4fpEF1U1MA7smhCPVDeM0gxPqG5qWepzib3WDX2SsRtcmhdVW+vLJ3m4bf8rAXxZ2M1msWA==", "dev": true, "license": "MIT", - "optional": true, + "peer": true, "dependencies": { "@types/node": "^20.11.30", "@types/sinonjs__fake-timers": "^8.1.5", - "@wdio/config": "9.0.8", - "@wdio/logger": "9.0.8", - "@wdio/protocols": "9.0.8", + "@wdio/config": "9.1.3", + "@wdio/logger": "9.1.3", + "@wdio/protocols": "9.2.0", "@wdio/repl": "9.0.8", - "@wdio/types": "9.0.8", - "@wdio/utils": "9.0.8", + "@wdio/types": "9.1.3", + "@wdio/utils": "9.1.3", "archiver": "^7.0.1", "aria-query": "^5.3.0", "cheerio": "^1.0.0-rc.12", "css-shorthand-properties": "^1.1.1", "css-value": "^0.0.1", "grapheme-splitter": "^1.0.4", - "htmlfy": "^0.2.1", + "htmlfy": "^0.3.0", "import-meta-resolve": "^4.0.0", "is-plain-obj": "^4.1.0", "jszip": "^3.10.1", @@ -4594,7 +4279,7 @@ "rgb2hex": "0.2.5", "serialize-error": "^11.0.3", "urlpattern-polyfill": "^10.0.0", - "webdriver": "9.0.8" + "webdriver": "9.2.0" }, "engines": { "node": ">=18.20.0" @@ -4608,137 +4293,140 @@ } } }, - "node_modules/@wdio/globals/node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "node_modules/@wdio/jasmine-framework/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "license": "MIT", "optional": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" + "peer": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "engines": { + "node": ">=12" } }, - "node_modules/@wdio/jasmine-framework": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/@wdio/jasmine-framework/-/jasmine-framework-9.0.9.tgz", - "integrity": "sha512-QZ+xB46yJxUmKuHXvQS9lKl4PpXT4hJ2aUoswO4sPflkBAZEl6z/xMrc3QLsP1j2OuytjkpxcUbEcZW/8TtgWA==", + "node_modules/@wdio/jasmine-framework/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "optional": true, + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wdio/local-runner": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-9.2.1.tgz", + "integrity": "sha512-E8C1r9GWlN9wyY9MeNtEC+fQaHm09PG9VvtZCBZcdG2pk68JOg/xdVyYb5b7FepwlQ9Rw8r0J1GR1DHzjih08g==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "^20.1.0", - "@wdio/globals": "9.0.9", - "@wdio/logger": "9.0.8", - "@wdio/types": "9.0.8", - "@wdio/utils": "9.0.8", - "expect-webdriverio": "^5.0.1", - "jasmine": "^5.0.0" + "@wdio/logger": "9.1.3", + "@wdio/repl": "9.0.8", + "@wdio/runner": "9.2.1", + "@wdio/types": "9.1.3", + "async-exit-hook": "^2.0.1", + "split2": "^4.1.0", + "stream-buffers": "^3.0.2" }, "engines": { "node": ">=18.20.0" } }, - "node_modules/@wdio/jasmine-framework/node_modules/@puppeteer/browsers": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.4.0.tgz", - "integrity": "sha512-x8J1csfIygOwf6D6qUAZ0ASk3z63zPb7wkNeHRerCMh82qWKUrOgkuP005AJC8lDL6/evtXETGEJVcwykKT4/g==", + "node_modules/@wdio/local-runner/node_modules/@types/node": { + "version": "20.16.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.11.tgz", + "integrity": "sha512-y+cTCACu92FyA5fgQSAI8A1H429g7aSK2HsO7K4XYUWc4dY5IUz55JSDIYT6/VsOLfGy8vmvQYC2hfb0iF16Uw==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "debug": "^4.3.6", - "extract-zip": "^2.0.1", - "progress": "^2.0.3", - "proxy-agent": "^6.4.0", - "semver": "^7.6.3", - "tar-fs": "^3.0.6", - "unbzip2-stream": "^1.4.3", - "yargs": "^17.7.2" - }, - "bin": { - "browsers": "lib/cjs/main-cli.js" + "undici-types": "~6.19.2" + } + }, + "node_modules/@wdio/logger": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.1.3.tgz", + "integrity": "sha512-cumRMK/gE1uedBUw3WmWXOQ7HtB6DR8EyKQioUz2P0IJtRRpglMBdZV7Svr3b++WWawOuzZHMfbTkJQmaVt8Gw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.1.2", + "loglevel": "^1.6.0", + "loglevel-plugin-prefix": "^0.8.4", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=18" + "node": ">=18.20.0" } }, - "node_modules/@wdio/jasmine-framework/node_modules/@vitest/snapshot": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.0.tgz", - "integrity": "sha512-x69CygGMzt9VCO283K2/FYQ+nBrOj66OTKpsPykjCR4Ac3lLV+m85hj9reaIGmjBSsKzVvbxWmjWE3kF5ha3uQ==", + "node_modules/@wdio/logger/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "2.1.0", - "magic-string": "^0.30.11", - "pathe": "^1.1.2" + "engines": { + "node": ">=12" }, "funding": { - "url": "https://opencollective.com/vitest" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@wdio/jasmine-framework/node_modules/@wdio/config": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.0.8.tgz", - "integrity": "sha512-37L+hd+A1Nyehd/pgfTrLC6w+Ngbu0CIoFh9Vv6v8Cgu5Hih0TLofvlg+J1BNbcTd5eQ2tFKZBDeFMhQaIiTpg==", + "node_modules/@wdio/logger/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@wdio/logger": "9.0.8", - "@wdio/types": "9.0.8", - "@wdio/utils": "9.0.8", - "decamelize": "^6.0.0", - "deepmerge-ts": "^7.0.3", - "glob": "^10.2.2", - "import-meta-resolve": "^4.0.0" - }, "engines": { - "node": ">=18.20.0" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@wdio/jasmine-framework/node_modules/@wdio/logger": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.0.8.tgz", - "integrity": "sha512-uIyYIDBwLczmsp9JE5hN3ME8Xg+9WNBfSNXD69ICHrY9WPTzFf94UeTuavK7kwSKF3ro2eJbmNZItYOfnoovnw==", + "node_modules/@wdio/logger/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, "license": "MIT", "dependencies": { - "chalk": "^5.1.2", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^7.1.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=18.20.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@wdio/jasmine-framework/node_modules/@wdio/protocols": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.0.8.tgz", - "integrity": "sha512-xRH54byFf623/w/KW62xkf/C2mGyigSfMm+UT3tNEAd5ZA9X2VAWQWQBPzdcrsck7Fxk4zlQX8Kb34RSs7Cy4Q==", + "node_modules/@wdio/protocols": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.2.0.tgz", + "integrity": "sha512-lSdKCwLtqMxSIW+cl8au21GlNkvmLNGgyuGYdV/lFdWflmMYH1zusruM6Km6Kpv2VUlWySjjGknYhe7XVTOeMw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, - "node_modules/@wdio/jasmine-framework/node_modules/@wdio/repl": { + "node_modules/@wdio/repl": { "version": "9.0.8", "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.0.8.tgz", "integrity": "sha512-3iubjl4JX5zD21aFxZwQghqC3lgu+mSs8c3NaiYYNCC+IT5cI/8QuKlgh9s59bu+N3gG988jqMJeCYlKuUv/iw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "^20.1.0" }, @@ -4746,84 +4434,101 @@ "node": ">=18.20.0" } }, - "node_modules/@wdio/jasmine-framework/node_modules/@wdio/types": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.0.8.tgz", - "integrity": "sha512-pmz2iRWddTanrv8JC7v3wUGm17KRv2WyyJhQfklMSANn9V1ep6pw1RJG2WJnKq4NojMvH1nVv1sMZxXrYPhpYw==", + "node_modules/@wdio/repl/node_modules/@types/node": { + "version": "20.16.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.11.tgz", + "integrity": "sha512-y+cTCACu92FyA5fgQSAI8A1H429g7aSK2HsO7K4XYUWc4dY5IUz55JSDIYT6/VsOLfGy8vmvQYC2hfb0iF16Uw==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "^20.1.0" - }, - "engines": { - "node": ">=18.20.0" + "undici-types": "~6.19.2" } }, - "node_modules/@wdio/jasmine-framework/node_modules/@wdio/utils": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.0.8.tgz", - "integrity": "sha512-p3EgOdkhCvMxJFd3WTtSChqYFQu2mz69/5tOsljDaL+4QYwnRR7O8M9wFsL3/9XMVcHdnC4Ija2VRxQ/lb+hHQ==", + "node_modules/@wdio/reporter": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-9.1.3.tgz", + "integrity": "sha512-j8i2Rs2JkcLdvdP6eysMNKgUnApi/ESwRYtscQvQIOYvzy2xOEJRe6VOeoUjLgKNN4VGo165H04bbxMR0oacUw==", "dev": true, "license": "MIT", "dependencies": { - "@puppeteer/browsers": "^2.2.0", - "@wdio/logger": "9.0.8", - "@wdio/types": "9.0.8", - "decamelize": "^6.0.0", - "deepmerge-ts": "^7.0.3", - "edgedriver": "^5.6.1", - "geckodriver": "^4.3.3", - "get-port": "^7.0.0", - "import-meta-resolve": "^4.0.0", - "locate-app": "^2.2.24", - "safaridriver": "^0.1.2", - "split2": "^4.2.0", - "wait-port": "^1.1.0" + "@types/node": "^20.1.0", + "@wdio/logger": "9.1.3", + "@wdio/types": "9.1.3", + "diff": "^7.0.0", + "object-inspect": "^1.12.0" }, "engines": { "node": ">=18.20.0" } }, - "node_modules/@wdio/jasmine-framework/node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "node_modules/@wdio/reporter/node_modules/@types/node": { + "version": "20.16.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.11.tgz", + "integrity": "sha512-y+cTCACu92FyA5fgQSAI8A1H429g7aSK2HsO7K4XYUWc4dY5IUz55JSDIYT6/VsOLfGy8vmvQYC2hfb0iF16Uw==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" + "undici-types": "~6.19.2" } }, - "node_modules/@wdio/jasmine-framework/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "node_modules/@wdio/runner": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-9.2.1.tgz", + "integrity": "sha512-PO/c1mV5BCtHyv7QzuFFixL/C/aoq0vd2+P8XhlNj90nSwNaI0/gjojlxKRBjb2rvBONwV/PcBzt4r4wrydafg==", "dev": true, "license": "MIT", + "dependencies": { + "@types/node": "^20.11.28", + "@wdio/config": "9.1.3", + "@wdio/globals": "9.2.1", + "@wdio/logger": "9.1.3", + "@wdio/types": "9.1.3", + "@wdio/utils": "9.1.3", + "deepmerge-ts": "^7.0.3", + "expect-webdriverio": "^5.0.1", + "webdriver": "9.2.0", + "webdriverio": "9.2.1" + }, "engines": { - "node": ">=12" + "node": ">=18.20.0" + } + }, + "node_modules/@wdio/runner/node_modules/@puppeteer/browsers": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.3.0.tgz", + "integrity": "sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "peer": true, + "dependencies": { + "debug": "^4.3.5", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.4.0", + "semver": "^7.6.3", + "tar-fs": "^3.0.6", + "unbzip2-stream": "^1.4.3", + "yargs": "^17.7.2" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=18" } }, - "node_modules/@wdio/jasmine-framework/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "node_modules/@wdio/runner/node_modules/@types/node": { + "version": "20.16.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.11.tgz", + "integrity": "sha512-y+cTCACu92FyA5fgQSAI8A1H429g7aSK2HsO7K4XYUWc4dY5IUz55JSDIYT6/VsOLfGy8vmvQYC2hfb0iF16Uw==", "dev": true, "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "dependencies": { + "undici-types": "~6.19.2" } }, - "node_modules/@wdio/jasmine-framework/node_modules/chromium-bidi": { + "node_modules/@wdio/runner/node_modules/chromium-bidi": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.6.3.tgz", "integrity": "sha512-qXlsCmpCZJAnoTYI83Iu6EdYQpMYdVkCfq08KDh2pmlVqK5t5IA9mGs4/LwCwp4fqisSOMXZxP3HIh8w8aRn0A==", @@ -4840,17 +4545,24 @@ "devtools-protocol": "*" } }, - "node_modules/@wdio/jasmine-framework/node_modules/deepmerge-ts": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.0.tgz", - "integrity": "sha512-q6bNsfNBtgr8ZOQqmZbl94MmYWm+QcDNIkqCxVWiw1vKvf+y/N2dZQKdnDXn4c5Ygt/y63tDof6OCN+2YwWVEg==", + "node_modules/@wdio/runner/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, - "license": "BSD-3-Clause", + "license": "ISC", + "optional": true, + "peer": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, "engines": { - "node": ">=16.0.0" + "node": ">=12" } }, - "node_modules/@wdio/jasmine-framework/node_modules/devtools-protocol": { + "node_modules/@wdio/runner/node_modules/devtools-protocol": { "version": "0.0.1312386", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1312386.tgz", "integrity": "sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==", @@ -4859,10 +4571,10 @@ "optional": true, "peer": true }, - "node_modules/@wdio/jasmine-framework/node_modules/expect-webdriverio": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-5.0.2.tgz", - "integrity": "sha512-vkUwoUvURH25pRClX1I5oCIObju8cT9kN5jQH4RN5QxKXK7hdowYd8dbDXD5JKOE/OutdYx67YtCl8vpZq/uSg==", + "node_modules/@wdio/runner/node_modules/expect-webdriverio": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-5.0.3.tgz", + "integrity": "sha512-0RHsFZX1856qCWZsXcvacFZpdZc7UAVD9wAglzf3KMWO1AoXt5EorjsNp1H9StGysxhJuVXJxRWKeXnD4LKtjQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4891,211 +4603,47 @@ } } }, - "node_modules/@wdio/jasmine-framework/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "node_modules/@wdio/runner/node_modules/puppeteer-core": { + "version": "22.15.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.15.0.tgz", + "integrity": "sha512-cHArnywCiAAVXa3t4GGL2vttNxh7GqXtIYGym99egkNJ3oG//wL9LkvO4WE8W1TJe95t1F1ocu9X4xWaGsOKOA==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", + "optional": true, "peer": true, "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "@puppeteer/browsers": "2.3.0", + "chromium-bidi": "0.6.3", + "debug": "^4.3.6", + "devtools-protocol": "0.0.1312386", + "ws": "^8.18.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=18" } }, - "node_modules/@wdio/jasmine-framework/node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "node_modules/@wdio/runner/node_modules/webdriverio": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.2.1.tgz", + "integrity": "sha512-AI7xzqTmFiU7oAx4fpEF1U1MA7smhCPVDeM0gxPqG5qWepzib3WDX2SsRtcmhdVW+vLJ3m4bf8rAXxZ2M1msWA==", "dev": true, "license": "MIT", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@wdio/jasmine-framework/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/@wdio/jasmine-framework/node_modules/magic-string": { - "version": "0.30.11", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", - "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, - "node_modules/@wdio/jasmine-framework/node_modules/mitt": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/@wdio/jasmine-framework/node_modules/proxy-agent": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", - "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "http-proxy-agent": "^7.0.1", - "https-proxy-agent": "^7.0.3", - "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.0.1", - "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.2" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@wdio/jasmine-framework/node_modules/puppeteer-core": { - "version": "22.15.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.15.0.tgz", - "integrity": "sha512-cHArnywCiAAVXa3t4GGL2vttNxh7GqXtIYGym99egkNJ3oG//wL9LkvO4WE8W1TJe95t1F1ocu9X4xWaGsOKOA==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "peer": true, - "dependencies": { - "@puppeteer/browsers": "2.3.0", - "chromium-bidi": "0.6.3", - "debug": "^4.3.6", - "devtools-protocol": "0.0.1312386", - "ws": "^8.18.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@wdio/jasmine-framework/node_modules/puppeteer-core/node_modules/@puppeteer/browsers": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.3.0.tgz", - "integrity": "sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "peer": true, - "dependencies": { - "debug": "^4.3.5", - "extract-zip": "^2.0.1", - "progress": "^2.0.3", - "proxy-agent": "^6.4.0", - "semver": "^7.6.3", - "tar-fs": "^3.0.6", - "unbzip2-stream": "^1.4.3", - "yargs": "^17.7.2" - }, - "bin": { - "browsers": "lib/cjs/main-cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@wdio/jasmine-framework/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, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@wdio/jasmine-framework/node_modules/tar-fs": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", - "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - }, - "optionalDependencies": { - "bare-fs": "^2.1.1", - "bare-path": "^2.1.0" - } - }, - "node_modules/@wdio/jasmine-framework/node_modules/webdriver": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.0.8.tgz", - "integrity": "sha512-UnV0ANriSTUgypGk0pz8lApeQuHt+72WEDQG5hFwkkSvggtKLyWdT7+PQkNoXvDajTmiLIqUOq8XPI/Pm71rtw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/node": "^20.1.0", - "@types/ws": "^8.5.3", - "@wdio/config": "9.0.8", - "@wdio/logger": "9.0.8", - "@wdio/protocols": "9.0.8", - "@wdio/types": "9.0.8", - "@wdio/utils": "9.0.8", - "deepmerge-ts": "^7.0.3", - "ws": "^8.8.0" - }, - "engines": { - "node": ">=18.20.0" - } - }, - "node_modules/@wdio/jasmine-framework/node_modules/webdriverio": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.0.9.tgz", - "integrity": "sha512-IwvKzhcJ9NjOL55xwj27uTTKkfxsg77dmAfqoKFSP5dQ70JzU+NgxiALEjjWQDybtt1yGIkHk7wjjxjboMU1uw==", - "dev": true, - "license": "MIT", - "peer": true, "dependencies": { "@types/node": "^20.11.30", "@types/sinonjs__fake-timers": "^8.1.5", - "@wdio/config": "9.0.8", - "@wdio/logger": "9.0.8", - "@wdio/protocols": "9.0.8", + "@wdio/config": "9.1.3", + "@wdio/logger": "9.1.3", + "@wdio/protocols": "9.2.0", "@wdio/repl": "9.0.8", - "@wdio/types": "9.0.8", - "@wdio/utils": "9.0.8", + "@wdio/types": "9.1.3", + "@wdio/utils": "9.1.3", "archiver": "^7.0.1", "aria-query": "^5.3.0", "cheerio": "^1.0.0-rc.12", "css-shorthand-properties": "^1.1.1", "css-value": "^0.0.1", "grapheme-splitter": "^1.0.4", - "htmlfy": "^0.2.1", + "htmlfy": "^0.3.0", "import-meta-resolve": "^4.0.0", "is-plain-obj": "^4.1.0", "jszip": "^3.10.1", @@ -5107,7 +4655,7 @@ "rgb2hex": "0.2.5", "serialize-error": "^11.0.3", "urlpattern-polyfill": "^10.0.0", - "webdriver": "9.0.8" + "webdriver": "9.2.0" }, "engines": { "node": ">=18.20.0" @@ -5121,1374 +4669,1361 @@ } } }, - "node_modules/@wdio/jasmine-framework/node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "node_modules/@wdio/runner/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "license": "MIT", + "optional": true, "peer": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "engines": { + "node": ">=12" } }, - "node_modules/@wdio/local-runner": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-9.0.9.tgz", - "integrity": "sha512-cqhCqHHO9PnH51+buvXd0ck3FB0HCnqPQLe/SLZuGI5tzywK1X7wFKlcAHkmqCPyu3xdV2mh8QZTEL4k8ayzsw==", + "node_modules/@wdio/runner/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "^20.1.0", - "@wdio/logger": "9.0.8", - "@wdio/repl": "9.0.8", - "@wdio/runner": "9.0.9", - "@wdio/types": "9.0.8", - "async-exit-hook": "^2.0.1", - "split2": "^4.1.0", - "stream-buffers": "^3.0.2" - }, + "license": "ISC", + "optional": true, + "peer": true, "engines": { - "node": ">=18.20.0" + "node": ">=12" } }, - "node_modules/@wdio/local-runner/node_modules/@wdio/logger": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.0.8.tgz", - "integrity": "sha512-uIyYIDBwLczmsp9JE5hN3ME8Xg+9WNBfSNXD69ICHrY9WPTzFf94UeTuavK7kwSKF3ro2eJbmNZItYOfnoovnw==", + "node_modules/@wdio/types": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.1.3.tgz", + "integrity": "sha512-oQrzLQBqn/+HXSJJo01NEfeKhzwuDdic7L8PDNxv5ySKezvmLDYVboQfoSDRtpAdfAZCcxuU9L4Jw7iTf6WV3g==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^5.1.2", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^7.1.0" + "@types/node": "^20.1.0" }, "engines": { "node": ">=18.20.0" } }, - "node_modules/@wdio/local-runner/node_modules/@wdio/repl": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.0.8.tgz", - "integrity": "sha512-3iubjl4JX5zD21aFxZwQghqC3lgu+mSs8c3NaiYYNCC+IT5cI/8QuKlgh9s59bu+N3gG988jqMJeCYlKuUv/iw==", + "node_modules/@wdio/types/node_modules/@types/node": { + "version": "20.16.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.11.tgz", + "integrity": "sha512-y+cTCACu92FyA5fgQSAI8A1H429g7aSK2HsO7K4XYUWc4dY5IUz55JSDIYT6/VsOLfGy8vmvQYC2hfb0iF16Uw==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "^20.1.0" - }, - "engines": { - "node": ">=18.20.0" + "undici-types": "~6.19.2" } }, - "node_modules/@wdio/local-runner/node_modules/@wdio/types": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.0.8.tgz", - "integrity": "sha512-pmz2iRWddTanrv8JC7v3wUGm17KRv2WyyJhQfklMSANn9V1ep6pw1RJG2WJnKq4NojMvH1nVv1sMZxXrYPhpYw==", + "node_modules/@wdio/utils": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.1.3.tgz", + "integrity": "sha512-dYeOzq9MTh8jYRZhzo/DYyn+cKrhw7h0/5hgyXkbyk/wHwF/uLjhATPmfaCr9+MARSEdiF7wwU8iRy/V0jfsLg==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "^20.1.0" + "@puppeteer/browsers": "^2.2.0", + "@wdio/logger": "9.1.3", + "@wdio/types": "9.1.3", + "decamelize": "^6.0.0", + "deepmerge-ts": "^7.0.3", + "edgedriver": "^5.6.1", + "geckodriver": "^4.3.3", + "get-port": "^7.0.0", + "import-meta-resolve": "^4.0.0", + "locate-app": "^2.2.24", + "safaridriver": "^0.1.2", + "split2": "^4.2.0", + "wait-port": "^1.1.0" }, "engines": { "node": ">=18.20.0" } }, - "node_modules/@wdio/local-runner/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "node_modules/@zip.js/zip.js": { + "version": "2.7.52", + "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.7.52.tgz", + "integrity": "sha512-+5g7FQswvrCHwYKNMd/KFxZSObctLSsQOgqBSi0LzwHo3li9Eh1w5cF5ndjQw9Zbr3ajVnd2+XyiX85gAetx1Q==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "bun": ">=0.7.0", + "deno": ">=1.0.0", + "node": ">=16.5.0" } }, - "node_modules/@wdio/local-runner/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "dependencies": { + "event-target-shim": "^5.0.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "engines": { + "node": ">=6.5" } }, - "node_modules/@wdio/local-runner/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==", + "node_modules/abstract-logging": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz", + "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==", + "license": "MIT", + "peer": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@wdio/logger": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.38.0.tgz", - "integrity": "sha512-kcHL86RmNbcQP+Gq/vQUGlArfU6IIcbbnNp32rRIraitomZow+iEoc519rdQmSVusDozMS5DZthkgDdxK+vz6Q==", - "dev": true, - "dependencies": { - "chalk": "^5.1.2", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^7.1.0" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { - "node": "^16.13 || >=18" + "node": ">= 0.6" } }, - "node_modules/@wdio/logger/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==", + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, - "engines": { - "node": ">=12" + "license": "MIT", + "bin": { + "acorn": "bin/acorn" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "engines": { + "node": ">=0.4.0" } }, - "node_modules/@wdio/logger/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@wdio/logger/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==", + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "acorn": "^8.11.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=0.4.0" } }, - "node_modules/@wdio/protocols": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.38.0.tgz", - "integrity": "sha512-7BPi7aXwUtnXZPeWJRmnCNFjyDvGrXlBmN9D4Pi58nILkyjVRQKEY9/qv/pcdyB0cvmIvw++Kl/1Lg+RxG++UA==", - "dev": true - }, - "node_modules/@wdio/repl": { - "version": "8.24.12", + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "^20.1.0" + "debug": "4" }, "engines": { - "node": "^16.13 || >=18" + "node": ">= 6.0.0" } }, - "node_modules/@wdio/reporter": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-9.0.8.tgz", - "integrity": "sha512-2T2XmCL31bLVkHN0UvHagg4KkkUHwzbXnHm1wjlWtd90BdVZ3lJyMhDh3TkKsyyDxPaZZJEhyDp9g/COwuF/bw==", + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "^20.1.0", - "@wdio/logger": "9.0.8", - "@wdio/types": "9.0.8", - "diff": "^5.0.0", - "object-inspect": "^1.12.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=18.20.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@wdio/reporter/node_modules/@wdio/logger": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.0.8.tgz", - "integrity": "sha512-uIyYIDBwLczmsp9JE5hN3ME8Xg+9WNBfSNXD69ICHrY9WPTzFf94UeTuavK7kwSKF3ro2eJbmNZItYOfnoovnw==", - "dev": true, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "license": "MIT", + "peer": true, "dependencies": { - "chalk": "^5.1.2", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^7.1.0" + "ajv": "^8.0.0" }, - "engines": { - "node": ">=18.20.0" + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/@wdio/reporter/node_modules/@wdio/types": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.0.8.tgz", - "integrity": "sha512-pmz2iRWddTanrv8JC7v3wUGm17KRv2WyyJhQfklMSANn9V1ep6pw1RJG2WJnKq4NojMvH1nVv1sMZxXrYPhpYw==", - "dev": true, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "license": "MIT", + "peer": true, "dependencies": { - "@types/node": "^20.1.0" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, - "engines": { - "node": ">=18.20.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@wdio/reporter/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "node_modules/ajv-formats/node_modules/fast-uri": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.2.tgz", + "integrity": "sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==", + "license": "MIT", + "peer": true + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT", + "peer": true + }, + "node_modules/ansi-escapes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", "dev": true, "license": "MIT", + "dependencies": { + "environment": "^1.0.0" + }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@wdio/reporter/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "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, "license": "MIT", "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=8" } }, - "node_modules/@wdio/reporter/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==", + "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, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@wdio/runner": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-9.0.9.tgz", - "integrity": "sha512-DIyFSt/mF7EVyFvgKztVAzf7lfunXsMxfYm3Hqjxgh0IQXJfjvOFKmT+R/T61tTHyzHHsx0JBQTu12WqHkNQtA==", + "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, - "license": "MIT", + "license": "MIT" + }, + "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, + "license": "ISC", "dependencies": { - "@types/node": "^20.11.28", - "@wdio/config": "9.0.8", - "@wdio/globals": "9.0.9", - "@wdio/logger": "9.0.8", - "@wdio/types": "9.0.8", - "@wdio/utils": "9.0.8", - "deepmerge-ts": "^7.0.3", - "expect-webdriverio": "^5.0.1", - "gaze": "^1.1.3", - "webdriver": "9.0.8", - "webdriverio": "9.0.9" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=18.20.0" + "node": ">= 8" } }, - "node_modules/@wdio/runner/node_modules/@puppeteer/browsers": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.4.0.tgz", - "integrity": "sha512-x8J1csfIygOwf6D6qUAZ0ASk3z63zPb7wkNeHRerCMh82qWKUrOgkuP005AJC8lDL6/evtXETGEJVcwykKT4/g==", + "node_modules/archiver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", + "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "debug": "^4.3.6", - "extract-zip": "^2.0.1", - "progress": "^2.0.3", - "proxy-agent": "^6.4.0", - "semver": "^7.6.3", - "tar-fs": "^3.0.6", - "unbzip2-stream": "^1.4.3", - "yargs": "^17.7.2" - }, - "bin": { - "browsers": "lib/cjs/main-cli.js" + "archiver-utils": "^5.0.2", + "async": "^3.2.4", + "buffer-crc32": "^1.0.0", + "readable-stream": "^4.0.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^3.0.0", + "zip-stream": "^6.0.1" }, "engines": { - "node": ">=18" + "node": ">= 14" } }, - "node_modules/@wdio/runner/node_modules/@vitest/snapshot": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.0.tgz", - "integrity": "sha512-x69CygGMzt9VCO283K2/FYQ+nBrOj66OTKpsPykjCR4Ac3lLV+m85hj9reaIGmjBSsKzVvbxWmjWE3kF5ha3uQ==", + "node_modules/archiver-utils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", + "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.0", - "magic-string": "^0.30.11", - "pathe": "^1.1.2" + "glob": "^10.0.0", + "graceful-fs": "^4.2.0", + "is-stream": "^2.0.1", + "lazystream": "^1.0.0", + "lodash": "^4.17.15", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": ">= 14" } }, - "node_modules/@wdio/runner/node_modules/@wdio/config": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.0.8.tgz", - "integrity": "sha512-37L+hd+A1Nyehd/pgfTrLC6w+Ngbu0CIoFh9Vv6v8Cgu5Hih0TLofvlg+J1BNbcTd5eQ2tFKZBDeFMhQaIiTpg==", + "node_modules/archiver-utils/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@wdio/logger": "9.0.8", - "@wdio/types": "9.0.8", - "@wdio/utils": "9.0.8", - "decamelize": "^6.0.0", - "deepmerge-ts": "^7.0.3", - "glob": "^10.2.2", - "import-meta-resolve": "^4.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": ">=18.20.0" + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@wdio/runner/node_modules/@wdio/logger": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.0.8.tgz", - "integrity": "sha512-uIyYIDBwLczmsp9JE5hN3ME8Xg+9WNBfSNXD69ICHrY9WPTzFf94UeTuavK7kwSKF3ro2eJbmNZItYOfnoovnw==", + "node_modules/archiver-utils/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, "license": "MIT", - "dependencies": { - "chalk": "^5.1.2", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^7.1.0" - }, "engines": { - "node": ">=18.20.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@wdio/runner/node_modules/@wdio/protocols": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.0.8.tgz", - "integrity": "sha512-xRH54byFf623/w/KW62xkf/C2mGyigSfMm+UT3tNEAd5ZA9X2VAWQWQBPzdcrsck7Fxk4zlQX8Kb34RSs7Cy4Q==", + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, - "license": "MIT" + "license": "Python-2.0" }, - "node_modules/@wdio/runner/node_modules/@wdio/repl": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.0.8.tgz", - "integrity": "sha512-3iubjl4JX5zD21aFxZwQghqC3lgu+mSs8c3NaiYYNCC+IT5cI/8QuKlgh9s59bu+N3gG988jqMJeCYlKuUv/iw==", + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "^20.1.0" - }, + "license": "Apache-2.0", "engines": { - "node": ">=18.20.0" + "node": ">= 0.4" } }, - "node_modules/@wdio/runner/node_modules/@wdio/types": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.0.8.tgz", - "integrity": "sha512-pmz2iRWddTanrv8JC7v3wUGm17KRv2WyyJhQfklMSANn9V1ep6pw1RJG2WJnKq4NojMvH1nVv1sMZxXrYPhpYw==", + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "^20.1.0" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" }, "engines": { - "node": ">=18.20.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@wdio/runner/node_modules/@wdio/utils": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.0.8.tgz", - "integrity": "sha512-p3EgOdkhCvMxJFd3WTtSChqYFQu2mz69/5tOsljDaL+4QYwnRR7O8M9wFsL3/9XMVcHdnC4Ija2VRxQ/lb+hHQ==", + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "license": "MIT", "dependencies": { - "@puppeteer/browsers": "^2.2.0", - "@wdio/logger": "9.0.8", - "@wdio/types": "9.0.8", - "decamelize": "^6.0.0", - "deepmerge-ts": "^7.0.3", - "edgedriver": "^5.6.1", - "geckodriver": "^4.3.3", - "get-port": "^7.0.0", - "import-meta-resolve": "^4.0.0", - "locate-app": "^2.2.24", - "safaridriver": "^0.1.2", - "split2": "^4.2.0", - "wait-port": "^1.1.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" }, "engines": { - "node": ">=18.20.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@wdio/runner/node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "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, "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, "engines": { - "node": ">= 14" + "node": ">=8" } }, - "node_modules/@wdio/runner/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, "engines": { - "node": ">=12" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@wdio/runner/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@wdio/runner/node_modules/chromium-bidi": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.6.3.tgz", - "integrity": "sha512-qXlsCmpCZJAnoTYI83Iu6EdYQpMYdVkCfq08KDh2pmlVqK5t5IA9mGs4/LwCwp4fqisSOMXZxP3HIh8w8aRn0A==", + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, - "license": "Apache-2.0", - "optional": true, - "peer": true, + "license": "MIT", "dependencies": { - "mitt": "3.0.1", - "urlpattern-polyfill": "10.0.0", - "zod": "3.23.8" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" }, - "peerDependencies": { - "devtools-protocol": "*" - } - }, - "node_modules/@wdio/runner/node_modules/deepmerge-ts": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.0.tgz", - "integrity": "sha512-q6bNsfNBtgr8ZOQqmZbl94MmYWm+QcDNIkqCxVWiw1vKvf+y/N2dZQKdnDXn4c5Ygt/y63tDof6OCN+2YwWVEg==", - "dev": true, - "license": "BSD-3-Clause", "engines": { - "node": ">=16.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@wdio/runner/node_modules/devtools-protocol": { - "version": "0.0.1312386", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1312386.tgz", - "integrity": "sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "peer": true - }, - "node_modules/@wdio/runner/node_modules/expect-webdriverio": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-5.0.2.tgz", - "integrity": "sha512-vkUwoUvURH25pRClX1I5oCIObju8cT9kN5jQH4RN5QxKXK7hdowYd8dbDXD5JKOE/OutdYx67YtCl8vpZq/uSg==", + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/snapshot": "^2.0.5", - "expect": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "lodash.isequal": "^4.5.0" + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" }, "engines": { - "node": ">=18 || >=20 || >=22" - }, - "peerDependencies": { - "@wdio/globals": "^9.0.0", - "@wdio/logger": "^9.0.0", - "webdriverio": "^9.0.0" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "@wdio/globals": { - "optional": false - }, - "@wdio/logger": { - "optional": false - }, - "webdriverio": { - "optional": false - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@wdio/runner/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "node_modules/as-table": { + "version": "1.0.55", + "resolved": "https://registry.npmjs.org/as-table/-/as-table-1.0.55.tgz", + "integrity": "sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "printable-characters": "^1.0.42" } }, - "node_modules/@wdio/runner/node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "node_modules/ast-types": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", + "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" + "tslib": "^2.0.1" }, "engines": { - "node": ">= 14" + "node": ">=4" } }, - "node_modules/@wdio/runner/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } + "license": "MIT" }, - "node_modules/@wdio/runner/node_modules/magic-string": { - "version": "0.30.11", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", - "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "node_modules/async-exit-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", "dev": true, "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" + "engines": { + "node": ">=0.12.0" } }, - "node_modules/@wdio/runner/node_modules/mitt": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true, + "license": "MIT" + }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", "license": "MIT", - "optional": true, - "peer": true + "peer": true, + "engines": { + "node": ">=8.0.0" + } }, - "node_modules/@wdio/runner/node_modules/proxy-agent": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", - "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "http-proxy-agent": "^7.0.1", - "https-proxy-agent": "^7.0.3", - "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.0.1", - "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.2" + "possible-typed-array-names": "^1.0.0" }, "engines": { - "node": ">= 14" - } - }, - "node_modules/@wdio/runner/node_modules/puppeteer-core": { - "version": "22.15.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.15.0.tgz", - "integrity": "sha512-cHArnywCiAAVXa3t4GGL2vttNxh7GqXtIYGym99egkNJ3oG//wL9LkvO4WE8W1TJe95t1F1ocu9X4xWaGsOKOA==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "peer": true, - "dependencies": { - "@puppeteer/browsers": "2.3.0", - "chromium-bidi": "0.6.3", - "debug": "^4.3.6", - "devtools-protocol": "0.0.1312386", - "ws": "^8.18.0" + "node": ">= 0.4" }, - "engines": { - "node": ">=18" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@wdio/runner/node_modules/puppeteer-core/node_modules/@puppeteer/browsers": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.3.0.tgz", - "integrity": "sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==", - "dev": true, - "license": "Apache-2.0", - "optional": true, + "node_modules/avvio": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/avvio/-/avvio-8.4.0.tgz", + "integrity": "sha512-CDSwaxINFy59iNwhYnkvALBwZiTydGkOecZyPkqBpABYR1KqGEsET0VOOYDwtleZSUIdeY36DC2bSZ24CO1igA==", + "license": "MIT", "peer": true, "dependencies": { - "debug": "^4.3.5", - "extract-zip": "^2.0.1", - "progress": "^2.0.3", - "proxy-agent": "^6.4.0", - "semver": "^7.6.3", - "tar-fs": "^3.0.6", - "unbzip2-stream": "^1.4.3", - "yargs": "^17.7.2" - }, - "bin": { - "browsers": "lib/cjs/main-cli.js" - }, - "engines": { - "node": ">=18" + "@fastify/error": "^3.3.0", + "fastq": "^1.17.1" } }, - "node_modules/@wdio/runner/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==", + "node_modules/axios": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, - "node_modules/@wdio/runner/node_modules/tar-fs": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", - "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", + "node_modules/b4a": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", + "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", + "license": "Apache-2.0" + }, + "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==", + "license": "MIT" + }, + "node_modules/bare-events": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz", + "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==", + "license": "Apache-2.0", + "optional": true + }, + "node_modules/bare-fs": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.5.tgz", + "integrity": "sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - }, - "optionalDependencies": { - "bare-fs": "^2.1.1", - "bare-path": "^2.1.0" + "bare-events": "^2.0.0", + "bare-path": "^2.0.0", + "bare-stream": "^2.0.0" } }, - "node_modules/@wdio/runner/node_modules/webdriver": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.0.8.tgz", - "integrity": "sha512-UnV0ANriSTUgypGk0pz8lApeQuHt+72WEDQG5hFwkkSvggtKLyWdT7+PQkNoXvDajTmiLIqUOq8XPI/Pm71rtw==", + "node_modules/bare-os": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.4.tgz", + "integrity": "sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "optional": true + }, + "node_modules/bare-path": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz", + "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==", + "dev": true, + "license": "Apache-2.0", + "optional": true, "dependencies": { - "@types/node": "^20.1.0", - "@types/ws": "^8.5.3", - "@wdio/config": "9.0.8", - "@wdio/logger": "9.0.8", - "@wdio/protocols": "9.0.8", - "@wdio/types": "9.0.8", - "@wdio/utils": "9.0.8", - "deepmerge-ts": "^7.0.3", - "ws": "^8.8.0" - }, - "engines": { - "node": ">=18.20.0" + "bare-os": "^2.1.0" } }, - "node_modules/@wdio/runner/node_modules/webdriverio": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.0.9.tgz", - "integrity": "sha512-IwvKzhcJ9NjOL55xwj27uTTKkfxsg77dmAfqoKFSP5dQ70JzU+NgxiALEjjWQDybtt1yGIkHk7wjjxjboMU1uw==", + "node_modules/bare-stream": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.3.0.tgz", + "integrity": "sha512-pVRWciewGUeCyKEuRxwv06M079r+fRjAQjBEK2P6OYGrO43O+Z0LrPZZEjlc4mB6C2RpZ9AxJ1s7NLEtOHO6eA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "@types/node": "^20.11.30", - "@types/sinonjs__fake-timers": "^8.1.5", - "@wdio/config": "9.0.8", - "@wdio/logger": "9.0.8", - "@wdio/protocols": "9.0.8", - "@wdio/repl": "9.0.8", - "@wdio/types": "9.0.8", - "@wdio/utils": "9.0.8", - "archiver": "^7.0.1", - "aria-query": "^5.3.0", - "cheerio": "^1.0.0-rc.12", - "css-shorthand-properties": "^1.1.1", - "css-value": "^0.0.1", - "grapheme-splitter": "^1.0.4", - "htmlfy": "^0.2.1", - "import-meta-resolve": "^4.0.0", - "is-plain-obj": "^4.1.0", - "jszip": "^3.10.1", - "lodash.clonedeep": "^4.5.0", - "lodash.zip": "^4.2.0", - "minimatch": "^9.0.3", - "query-selector-shadow-dom": "^1.0.1", - "resq": "^1.11.0", - "rgb2hex": "0.2.5", - "serialize-error": "^11.0.3", - "urlpattern-polyfill": "^10.0.0", - "webdriver": "9.0.8" - }, - "engines": { - "node": ">=18.20.0" - }, - "peerDependencies": { - "puppeteer-core": "^22.3.0" - }, - "peerDependenciesMeta": { - "puppeteer-core": { - "optional": true - } + "b4a": "^1.6.6", + "streamx": "^2.20.0" } }, - "node_modules/@wdio/runner/node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "utf-8-validate": { - "optional": true + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" } - } + ], + "license": "MIT" }, - "node_modules/@wdio/types": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.39.0.tgz", - "integrity": "sha512-86lcYROTapOJuFd9ouomFDfzDnv3Kn+jE0RmqfvN9frZAeLVJ5IKjX9M6HjplsyTZhjGO1uCaehmzx+HJus33Q==", + "node_modules/basic-ftp": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", "dev": true, - "dependencies": { - "@types/node": "^20.1.0" - }, + "license": "MIT", "engines": { - "node": "^16.13 || >=18" + "node": ">=10.0.0" } }, - "node_modules/@wdio/utils": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.39.0.tgz", - "integrity": "sha512-jY+n6jlGeK+9Tx8T659PKLwMQTGpLW5H78CSEWgZLbjbVSr2LfGR8Lx0CRktNXxAtqEVZPj16Pi74OtAhvhE6Q==", + "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, - "dependencies": { - "@puppeteer/browsers": "^1.6.0", - "@wdio/logger": "8.38.0", - "@wdio/types": "8.39.0", - "decamelize": "^6.0.0", - "deepmerge-ts": "^5.1.0", - "edgedriver": "^5.5.0", - "geckodriver": "^4.3.1", - "get-port": "^7.0.0", - "import-meta-resolve": "^4.0.0", - "locate-app": "^2.1.0", - "safaridriver": "^0.1.0", - "split2": "^4.2.0", - "wait-port": "^1.0.4" - }, + "license": "MIT", "engines": { - "node": "^16.13 || >=18" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@zip.js/zip.js": { - "version": "2.7.52", - "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.7.52.tgz", - "integrity": "sha512-+5g7FQswvrCHwYKNMd/KFxZSObctLSsQOgqBSi0LzwHo3li9Eh1w5cF5ndjQw9Zbr3ajVnd2+XyiX85gAetx1Q==", + "node_modules/blake3-wasm": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/blake3-wasm/-/blake3-wasm-2.1.5.tgz", + "integrity": "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==", "dev": true, - "license": "BSD-3-Clause", - "engines": { - "bun": ">=0.7.0", - "deno": ">=1.0.0", - "node": ">=16.5.0" - } + "license": "MIT" }, - "node_modules/abort-controller": { - "version": "3.0.0", + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "dev": true, "license": "MIT", "dependencies": { - "event-target-shim": "^5.0.0" + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "engines": { - "node": ">=6.5" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/abstract-logging": { - "version": "2.0.1", - "license": "MIT", - "peer": true - }, - "node_modules/accepts": { - "version": "1.3.8", + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "license": "MIT", "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" + "ms": "2.0.0" } }, - "node_modules/acorn": { - "version": "8.11.3", + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } + "license": "MIT" }, - "node_modules/acorn-jsx": { - "version": "5.3.2", + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } + "license": "ISC" }, - "node_modules/acorn-walk": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", - "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "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, + "license": "MIT", "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" + "balanced-match": "^1.0.0" } }, - "node_modules/agent-base": { - "version": "6.0.2", - "dev": true, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "license": "MIT", "dependencies": { - "debug": "4" + "fill-range": "^7.1.1" }, "engines": { - "node": ">= 6.0.0" + "node": ">=8" } }, - "node_modules/ajv": { - "version": "6.12.6", - "dev": true, + "node_modules/brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "base64-js": "^1.1.2" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", + "node_modules/browserslist": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", + "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", - "peer": true, "dependencies": { - "ajv": "^8.0.0" + "caniuse-lite": "^1.0.30001663", + "electron-to-chromium": "^1.5.28", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" }, - "peerDependencies": { - "ajv": "^8.0.0" + "bin": { + "browserslist": "cli.js" }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.15.0", + "node_modules/browserstack-local": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/browserstack-local/-/browserstack-local-1.5.5.tgz", + "integrity": "sha512-jKne7yosrMcptj3hqxp36TP9k0ZW2sCqhyurX24rUL4G3eT7OLgv+CSQN8iq5dtkv5IK+g+v8fWvsiC/S9KxMg==", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^2.3.0", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "agent-base": "^6.0.2", + "https-proxy-agent": "^5.0.1", + "is-running": "^2.1.0", + "ps-tree": "=1.2.0", + "temp-fs": "^0.9.9" } }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "license": "MIT", - "peer": true - }, - "node_modules/ansi-escapes": { - "version": "6.2.1", - "dev": true, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", + "node_modules/buffer-crc32": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", + "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=8.0.0" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "streamsearch": "^1.1.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=10.16.0" } }, - "node_modules/ansicolors": { - "version": "0.3.2", + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 0.8" + } }, - "node_modules/anymatch": { - "version": "3.1.3", + "node_modules/cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, + "license": "MIT", "engines": { - "node": ">= 8" + "node": ">=14.16" } }, - "node_modules/archiver": { - "version": "7.0.1", + "node_modules/cacheable-request": { + "version": "10.2.14", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", + "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", "dev": true, "license": "MIT", "dependencies": { - "archiver-utils": "^5.0.2", - "async": "^3.2.4", - "buffer-crc32": "^1.0.0", - "readable-stream": "^4.0.0", - "readdir-glob": "^1.1.2", - "tar-stream": "^3.0.0", - "zip-stream": "^6.0.1" + "@types/http-cache-semantics": "^4.0.2", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.3", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" }, "engines": { - "node": ">= 14" + "node": ">=14.16" } }, - "node_modules/archiver-utils": { - "version": "5.0.2", + "node_modules/cacheable-request/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, "license": "MIT", - "dependencies": { - "glob": "^10.0.0", - "graceful-fs": "^4.2.0", - "is-stream": "^2.0.1", - "lazystream": "^1.0.0", - "lodash": "^4.17.15", - "normalize-path": "^3.0.0", - "readable-stream": "^4.0.0" - }, "engines": { - "node": ">= 14" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/archiver-utils/node_modules/glob": { - "version": "10.4.1", + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/argparse": { - "version": "2.0.1", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "license": "Python-2.0" + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/aria-query": { - "version": "5.3.0", + "node_modules/caniuse-lite": { + "version": "1.0.30001668", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001668.tgz", + "integrity": "sha512-nWLrdxqCdblixUO+27JtGJJE/txpJlyUy5YN1u53wLZkP0emYCo5zgS6QYft7VUYR42LGgi/S5hdLZTrnyIddw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/capnp-ts": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/capnp-ts/-/capnp-ts-0.7.0.tgz", + "integrity": "sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "dequal": "^2.0.3" + "debug": "^4.3.1", + "tslib": "^2.2.0" } }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.1", + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/array-flatten": { - "version": "1.1.1", + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true, "license": "MIT" }, - "node_modules/array-includes": { - "version": "3.1.8", + "node_modules/cheerio": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz", + "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "encoding-sniffer": "^0.2.0", + "htmlparser2": "^9.1.0", + "parse5": "^7.1.2", + "parse5-htmlparser2-tree-adapter": "^7.0.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^6.19.5", + "whatwg-mimetype": "^4.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=18.17" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" } }, - "node_modules/array-union": { + "node_modules/cheerio-select": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.5", + "node_modules/cheerio/node_modules/parse5": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.0.tgz", + "integrity": "sha512-ZkDsAOcxsUMZ4Lz5fVciOehNcJ+Gb8gTzcA4yl3wnc273BAybYWrQ+Ks/OjCjSEpjvQkDSeZbybK9qj2VHHdGA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" + "entities": "^4.5.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", + "node_modules/cheerio/node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "domhandler": "^5.0.3", + "parse5": "^7.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", + "node_modules/cheerio/node_modules/undici": { + "version": "6.20.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.20.1.tgz", + "integrity": "sha512-AjQF1QsmqfJys+LXfGTNum+qw4S88CojRInG/6t31W/1fk6G59s92bnAvGz5Cmur+kQv2SURXEvvudLmbrE8QA==", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=18.17" } }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", + "node_modules/chokidar": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", + "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", "dev": true, "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" + "readdirp": "^4.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">= 14.16.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/as-table": { - "version": "1.0.55", - "resolved": "https://registry.npmjs.org/as-table/-/as-table-1.0.55.tgz", - "integrity": "sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==", + "node_modules/chromium-bidi": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.5.8.tgz", + "integrity": "sha512-blqh+1cEQbHBKmok3rVJkBlBxt9beKBgOsxbFgs7UJcoVbbeZ+K7+6liAsjgpc8l1Xd55cQUy14fXZdGSb4zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "printable-characters": "^1.0.42" + "mitt": "3.0.1", + "urlpattern-polyfill": "10.0.0" + }, + "peerDependencies": { + "devtools-protocol": "*" } }, - "node_modules/ast-types": { - "version": "0.14.2", + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "license": "MIT", - "dependencies": { - "tslib": "^2.0.1" - }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/async": { - "version": "3.2.5", - "dev": true, - "license": "MIT" - }, - "node_modules/async-exit-hook": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", - "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", + "node_modules/cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "bin": { + "highlight": "bin/highlight" + }, "engines": { - "node": ">=0.12.0" + "node": ">=8.0.0", + "npm": ">=5.0.0" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "node_modules/cli-spinners": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-3.2.0.tgz", + "integrity": "sha512-pXftdQloMZzjCr3pCTIRniDcys6dDzgpgVhAHHk6TKBDbRuP1MkuetTF5KSv4YUutbOPa7+7ZrAJ2kVtbMqyXA==", "dev": true, - "license": "MIT" - }, - "node_modules/atomic-sleep": { - "version": "1.0.0", "license": "MIT", - "peer": true, "engines": { - "node": ">=8.0.0" + "node": ">=18.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", "dev": true, "license": "MIT", "dependencies": { - "possible-typed-array-names": "^1.0.0" + "string-width": "^4.2.0" }, "engines": { - "node": ">= 0.4" + "node": "10.* || >= 12.*" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optionalDependencies": { + "@colors/colors": "1.5.0" } }, - "node_modules/avvio": { - "version": "8.3.2", - "license": "MIT", - "peer": true, - "dependencies": { - "@fastify/error": "^3.3.0", - "fastq": "^1.17.1" + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 12" } }, - "node_modules/axios": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", - "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", - "dev": true, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } + "peer": true }, - "node_modules/b4a": { - "version": "1.6.6", - "license": "Apache-2.0" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "license": "MIT" + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } }, - "node_modules/bare-events": { - "version": "2.3.1", - "license": "Apache-2.0", - "optional": true + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } }, - "node_modules/bare-fs": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.1.tgz", - "integrity": "sha512-W/Hfxc/6VehXlsgFtbB5B4xFcsCl+pAh30cYhoFyXErf6oGrwjh8SwiPAdHgpmWonKuYpZgGywN0SXt7dgsADA==", + "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, - "optional": true, + "license": "MIT", "dependencies": { - "bare-events": "^2.0.0", - "bare-path": "^2.0.0", - "bare-stream": "^2.0.0" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/bare-os": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.0.tgz", - "integrity": "sha512-v8DTT08AS/G0F9xrhyLtepoo9EJBJ85FRSMbu1pQUlAf6A8T0tEEQGMVObWeqpjhSPXsE0VGlluFBJu2fdoTNg==", + "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, - "optional": true + "license": "MIT" }, - "node_modules/bare-path": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz", - "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==", + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { - "bare-os": "^2.1.0" + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "node_modules/bare-stream": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.1.3.tgz", - "integrity": "sha512-tiDAH9H/kP+tvNO5sczyn9ZAA7utrSMobyDchsnyyXBuUe2FSQWbxhtuHB8jwpHYYevVo2UJpcmvvjrbHboUUQ==", + "node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, - "optional": true, - "dependencies": { - "streamx": "^2.18.0" + "license": "MIT", + "engines": { + "node": ">=14" } }, - "node_modules/base64-js": { - "version": "1.5.1", - "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/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "license": "MIT" }, - "node_modules/basic-ftp": { - "version": "5.0.5", + "node_modules/compress-commons": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", + "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", "dev": true, "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "crc32-stream": "^6.0.0", + "is-stream": "^2.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, "engines": { - "node": ">=10.0.0" + "node": ">= 14" } }, - "node_modules/binary-extensions": { - "version": "2.3.0", + "node_modules/compress-commons/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, "license": "MIT", "engines": { @@ -6498,235 +6033,243 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/blake3-wasm": { - "version": "2.1.5", - "dev": true, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "license": "MIT" }, - "node_modules/body-parser": { - "version": "1.20.2", + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" + "safe-buffer": "5.2.1" }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">= 0.6" } }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, "license": "MIT", - "dependencies": { - "ms": "2.0.0" + "engines": { + "node": ">= 0.6" } }, - "node_modules/body-parser/node_modules/ms": { + "node_modules/convert-source-map": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "dev": true, "license": "MIT" }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/brace-expansion": { - "version": "2.0.1", + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" } }, - "node_modules/braces": { - "version": "3.0.3", + "node_modules/crc32-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", + "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", + "dev": true, "license": "MIT", "dependencies": { - "fill-range": "^7.1.1" + "crc-32": "^1.2.0", + "readable-stream": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">= 14" } }, - "node_modules/brotli": { - "version": "1.3.3", + "node_modules/cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "dev": true, "license": "MIT", "dependencies": { - "base64-js": "^1.1.2" + "node-fetch": "^2.6.12" } }, - "node_modules/browserslist": { - "version": "4.23.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", - "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/cross-fetch/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001629", - "electron-to-chromium": "^1.4.796", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.16" - }, - "bin": { - "browserslist": "cli.js" + "whatwg-url": "^5.0.0" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "node_modules/browserstack-local": { - "version": "1.5.5", + "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, "license": "MIT", "dependencies": { - "agent-base": "^6.0.2", - "https-proxy-agent": "^5.0.1", - "is-running": "^2.1.0", - "ps-tree": "=1.2.0", - "temp-fs": "^0.9.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/browserstack-local/node_modules/https-proxy-agent": { - "version": "5.0.1", + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "agent-base": "6", - "debug": "4" + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" }, - "engines": { - "node": ">= 6" + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/buffer": { - "version": "6.0.3", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/buffer-crc32": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/buffer-from": { + "node_modules/css-shorthand-properties": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/css-shorthand-properties/-/css-shorthand-properties-1.1.2.tgz", + "integrity": "sha512-C2AugXIpRGQTxaCW0N7n5jD/p5irUmCrwl03TrnMFBHDbdq44CFWR2zO7rK9xPN4Eo3pUxC4vQzQgbIpzrD1PQ==", + "dev": true, "license": "MIT" }, - "node_modules/busboy": { - "version": "1.6.0", - "peer": true, - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } + "node_modules/css-value": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/css-value/-/css-value-0.0.1.tgz", + "integrity": "sha512-FUV3xaJ63buRLgHrLQVlVgQnQdR4yqdLGaDu7g8CQcWjInDfM9plBTPI9FRfpahju1UBSaMckeb2/46ApS/V1Q==", + "dev": true }, - "node_modules/bytes": { - "version": "3.1.2", + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "engines": { - "node": ">= 0.8" + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/cacheable-lookup": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", - "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "node_modules/csv-writer": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/csv-writer/-/csv-writer-1.6.0.tgz", + "integrity": "sha512-NOx7YDFWEsM/fTRAJjRpPp8t+MKRVvniAg9wQlUKx20MFrPs73WLJhFf5iteqrxNYnsy924K3Iroh3yNHeYd2g==", + "dev": true, + "license": "MIT" + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "dev": true, + "license": "MIT", "engines": { - "node": ">=14.16" + "node": ">= 12" } }, - "node_modules/cacheable-request": { - "version": "10.2.14", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", - "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/http-cache-semantics": "^4.0.2", - "get-stream": "^6.0.1", - "http-cache-semantics": "^4.1.1", - "keyv": "^4.5.3", - "mimic-response": "^4.0.0", - "normalize-url": "^8.0.0", - "responselike": "^3.0.0" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" }, "engines": { - "node": ">=14.16" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/cacheable-request/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==", + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/call-bind": { - "version": "1.0.7", + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", "dev": true, "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0", + "call-bind": "^1.0.6", "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "is-data-view": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -6735,635 +6278,647 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/callsites": { - "version": "3.1.0", - "dev": true, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001639", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001639.tgz", - "integrity": "sha512-eFHflNTBIlFwP2AIKaYuBQN/apnUoKNhBdza8ZnW/h2di4LCZ4xFqYlxUxo+LQ76KFI1PGcC1QDxMbxTZpSCAg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true } - ] - }, - "node_modules/capnp-ts": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/capnp-ts/-/capnp-ts-0.7.0.tgz", - "integrity": "sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==", - "dev": true, - "dependencies": { - "debug": "^4.3.1", - "tslib": "^2.2.0" } }, - "node_modules/cardinal": { - "version": "2.1.1", + "node_modules/decamelize": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", + "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", "dev": true, "license": "MIT", - "dependencies": { - "ansicolors": "~0.3.2", - "redeyed": "~2.1.0" + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "bin": { - "cdl": "bin/cdl.js" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/chalk": { - "version": "4.1.2", + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "mimic-response": "^3.1.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/char-regex": { - "version": "1.0.2", + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", "dev": true, "license": "MIT", "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, "license": "MIT" }, - "node_modules/cheerio": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz", - "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==", + "node_modules/deepmerge-ts": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.3.tgz", + "integrity": "sha512-qCSH6I0INPxd9Y1VtAiLpnYvz5O//6rCfJXKk0z66Up9/VOSr+1yS8XSKA5IWRxjocFGlzPyaZYe+jxq7OOLtQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", "dev": true, "license": "MIT", - "dependencies": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.1.0", - "encoding-sniffer": "^0.2.0", - "htmlparser2": "^9.1.0", - "parse5": "^7.1.2", - "parse5-htmlparser2-tree-adapter": "^7.0.0", - "parse5-parser-stream": "^7.1.2", - "undici": "^6.19.5", - "whatwg-mimetype": "^4.0.0" - }, "engines": { - "node": ">=18.17" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + "node": ">=10" } }, - "node_modules/cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/fb55" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/cheerio/node_modules/undici": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz", - "integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.17" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "license": "MIT", "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" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { - "node": ">= 8.10.0" + "node": ">= 0.4" }, "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", + "node_modules/defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", "dev": true, - "license": "ISC", + "license": "MIT" + }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dev": true, + "license": "MIT", "dependencies": { - "is-glob": "^4.0.1" + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, - "node_modules/chromium-bidi": { - "version": "0.4.16", + "node_modules/degenerator/node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "mitt": "3.0.0" + "tslib": "^2.0.1" }, - "peerDependencies": { - "devtools-protocol": "*" + "engines": { + "node": ">=4" } }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.4.0" } }, - "node_modules/cli-spinners": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-3.2.0.tgz", - "integrity": "sha512-pXftdQloMZzjCr3pCTIRniDcys6dDzgpgVhAHHk6TKBDbRuP1MkuetTF5KSv4YUutbOPa7+7ZrAJ2kVtbMqyXA==", + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, "license": "MIT", "engines": { - "node": ">=18.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8" } }, - "node_modules/cli-table3": { - "version": "0.6.5", + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true, "license": "MIT", - "dependencies": { - "string-width": "^4.2.0" - }, "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "node_modules/devtools-protocol": { + "version": "0.0.1359167", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1359167.tgz", + "integrity": "sha512-f/9PeTaSH3weS/WAwrQb5/s9R3KMOeTGe+Jkhg5952yInub7iDPjdlzRdrDgpLZfxHbTrBuG9aUkAMM+ocVkXQ==", "dev": true, - "license": "ISC", + "license": "BSD-3-Clause" + }, + "node_modules/diff": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", + "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", + "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">= 12" + "node": ">=0.3.1" } }, - "node_modules/client-only": { - "version": "0.0.1", + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, "license": "MIT", - "peer": true + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/cliui": { - "version": "8.0.1", + "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, - "license": "ISC", + "license": "MIT", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "path-type": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/clone-deep": { - "version": "4.0.1", - "license": "MIT", + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" + "esutils": "^2.0.2" }, "engines": { - "node": ">=6" + "node": ">=6.0.0" } }, - "node_modules/color-convert": { - "version": "2.0.1", + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" }, - "engines": { - "node": ">=7.0.0" + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/color-name": { - "version": "1.1.4", + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true, - "license": "MIT" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "delayed-stream": "~1.0.0" + "domelementtype": "^2.3.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/commander": { - "version": "10.0.1", + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/commondir": { - "version": "1.0.1", - "license": "MIT" - }, - "node_modules/compress-commons": { - "version": "6.0.2", + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "dev": true, - "license": "MIT", - "dependencies": { - "crc-32": "^1.2.0", - "crc32-stream": "^6.0.0", - "is-stream": "^2.0.1", - "normalize-path": "^3.0.0", - "readable-stream": "^4.0.0" - }, + "license": "BSD-2-Clause", "engines": { - "node": ">= 14" + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" } }, - "node_modules/concat-map": { - "version": "0.0.1", + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true, "license": "MIT" }, - "node_modules/content-disposition": { - "version": "0.5.4", + "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, + "license": "MIT" + }, + "node_modules/edge-paths": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/edge-paths/-/edge-paths-3.0.5.tgz", + "integrity": "sha512-sB7vSrDnFa4ezWQk9nZ/n0FdpdUuC6R1EOrlU3DL+bovcNFK28rqu2emmAUjujYEJTWIgQGqgVVWUZXMnc8iWg==", "dev": true, "license": "MIT", "dependencies": { - "safe-buffer": "5.2.1" + "@types/which": "^2.0.1", + "which": "^2.0.2" }, "engines": { - "node": ">= 0.6" + "node": ">=14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/shirshak55" } }, - "node_modules/content-type": { - "version": "1.0.5", - "dev": true, + "node_modules/edgedriver": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/edgedriver/-/edgedriver-5.6.1.tgz", + "integrity": "sha512-3Ve9cd5ziLByUdigw6zovVeWJjVs8QHVmqOB0sJ0WNeVPcwf4p18GnxMmVvlFmYRloUwf5suNuorea4QzwBIOA==", + "dev": true, + "hasInstallScript": true, "license": "MIT", - "engines": { - "node": ">= 0.6" + "dependencies": { + "@wdio/logger": "^8.38.0", + "@zip.js/zip.js": "^2.7.48", + "decamelize": "^6.0.0", + "edge-paths": "^3.0.5", + "fast-xml-parser": "^4.4.1", + "node-fetch": "^3.3.2", + "which": "^4.0.0" + }, + "bin": { + "edgedriver": "bin/edgedriver.js" } }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "license": "MIT" - }, - "node_modules/cookie": { - "version": "0.6.0", + "node_modules/edgedriver/node_modules/@wdio/logger": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.38.0.tgz", + "integrity": "sha512-kcHL86RmNbcQP+Gq/vQUGlArfU6IIcbbnNp32rRIraitomZow+iEoc519rdQmSVusDozMS5DZthkgDdxK+vz6Q==", + "dev": true, "license": "MIT", + "dependencies": { + "chalk": "^5.1.2", + "loglevel": "^1.6.0", + "loglevel-plugin-prefix": "^0.8.4", + "strip-ansi": "^7.1.0" + }, "engines": { - "node": ">= 0.6" + "node": "^16.13 || >=18" } }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/crc-32": { - "version": "1.2.2", + "node_modules/edgedriver/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, - "license": "Apache-2.0", - "bin": { - "crc32": "bin/crc32.njs" - }, + "license": "MIT", "engines": { - "node": ">=0.8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/crc32-stream": { - "version": "6.0.0", + "node_modules/edgedriver/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, "license": "MIT", - "dependencies": { - "crc-32": "^1.2.0", - "readable-stream": "^4.0.0" - }, "engines": { - "node": ">= 14" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/cross-fetch": { - "version": "4.0.0", + "node_modules/edgedriver/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, - "license": "MIT", - "dependencies": { - "node-fetch": "^2.6.12" + "license": "ISC", + "engines": { + "node": ">=16" } }, - "node_modules/cross-fetch/node_modules/node-fetch": { - "version": "2.7.0", + "node_modules/edgedriver/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, "license": "MIT", "dependencies": { - "whatwg-url": "^5.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" + "node": ">=12" }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", + "node_modules/edgedriver/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" }, "engines": { - "node": ">= 8" + "node": "^16.13.0 || >=18.0.0" } }, - "node_modules/css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT" + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" + "jake": "^10.8.5" }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/css-shorthand-properties": { - "version": "1.1.1", - "dev": true - }, - "node_modules/css-value": { - "version": "0.0.1", - "dev": true + "node_modules/electron-to-chromium": { + "version": "1.5.38", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.38.tgz", + "integrity": "sha512-VbeVexmZ1IFh+5EfrYz1I0HTzHVIlJa112UEWhciPyeOcKJGeTv6N8WnG4wsQB81DGCaVEGhpSb6o6a8WYFXXg==", + "license": "ISC" }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "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, - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } + "license": "MIT" }, - "node_modules/csv-writer": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/csv-writer/-/csv-writer-1.6.0.tgz", - "integrity": "sha512-NOx7YDFWEsM/fTRAJjRpPp8t+MKRVvniAg9wQlUKx20MFrPs73WLJhFf5iteqrxNYnsy924K3Iroh3yNHeYd2g==", + "node_modules/emojilib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", "dev": true, "license": "MIT" }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 12" + "node": ">= 0.8" } }, - "node_modules/data-view-buffer": { - "version": "1.0.1", + "node_modules/encoding-sniffer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz", + "integrity": "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" } }, - "node_modules/data-view-byte-length": { - "version": "1.0.1", + "node_modules/encoding-sniffer/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/data-view-byte-offset": { - "version": "1.0.0", + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "once": "^1.4.0" } }, - "node_modules/date-fns": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", - "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", + "node_modules/enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/kossnocorp" - } - }, - "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "license": "MIT", "dependencies": { - "ms": "^2.1.3" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=10.13.0" } }, - "node_modules/debug/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/decamelize": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", - "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, - "dependencies": { - "mimic-response": "^3.1.0" - }, + "license": "BSD-2-Clause", "engines": { - "node": ">=10" + "node": ">=0.12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/deepmerge-ts": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-5.1.0.tgz", - "integrity": "sha512-eS8dRJOckyo9maw9Tu5O5RUi/4inFLrnoLkBe3cPfDMx3WZioXtmOew4TXQaxq7Rhl4xjDtR7c6x8nNTxOvbFw==", - "dev": true, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, - "engines": { - "node": ">=10" + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" } }, - "node_modules/define-data-property": { - "version": "1.1.4", + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", "dev": true, "license": "MIT", "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", "es-define-property": "^1.0.0", "es-errors": "^1.3.0", - "gopd": "^1.0.1" + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -7372,1767 +6927,1687 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/define-properties": { - "version": "1.2.1", + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "dev": true, "license": "MIT", "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/defu": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", - "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", - "dev": true + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } }, - "node_modules/degenerator": { - "version": "5.0.1", + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", "dev": true, "license": "MIT", "dependencies": { - "ast-types": "^0.13.4", - "escodegen": "^2.1.0", - "esprima": "^4.0.1" + "es-errors": "^1.3.0" }, "engines": { - "node": ">= 14" + "node": ">= 0.4" } }, - "node_modules/degenerator/node_modules/ast-types": { - "version": "0.13.4", + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.0.1" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">= 0.4" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.4.0" + "dependencies": { + "hasown": "^2.0.0" } }, - "node_modules/depd": { - "version": "2.0.0", + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, "engines": { - "node": ">= 0.8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/dequal": { - "version": "2.0.3", - "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==", + "hasInstallScript": true, "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, "engines": { - "node": ">=6" + "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/destroy": { - "version": "1.2.0", - "dev": true, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "license": "MIT", "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">=6" } }, - "node_modules/devtools-protocol": { - "version": "0.0.1302984", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } + "license": "MIT" }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dir-glob": { - "version": "3.0.1", + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "path-type": "^4.0.0" + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" }, "engines": { - "node": ">=8" + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" } }, - "node_modules/doctrine": { - "version": "3.0.0", + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "esutils": "^2.0.2" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=6.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "node_modules/eslint-compat-utils": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", "dev": true, "license": "MIT", "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" + "semver": "^7.5.4" }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "eslint": ">=6.0.0" } }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "ms": "^2.1.1" } }, - "node_modules/domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "node_modules/eslint-import-resolver-typescript": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.3.tgz", + "integrity": "sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==", "dev": true, - "license": "BSD-2-Clause", + "license": "ISC", "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.3.5", + "enhanced-resolve": "^5.15.0", + "eslint-module-utils": "^2.8.1", + "fast-glob": "^3.3.2", + "get-tsconfig": "^4.7.5", + "is-bun-module": "^1.0.2", + "is-glob": "^4.0.3" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } } }, - "node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "node_modules/eslint-module-utils": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, "engines": { - "node": ">=12" + "node": ">=4" }, - "funding": { - "url": "https://dotenvx.com" + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/duplexer": { - "version": "0.1.2", + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", + "node_modules/eslint-plugin-es-x": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", + "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", "dev": true, - "license": "MIT" + "funding": [ + "https://github.com/sponsors/ota-meshi", + "https://opencollective.com/eslint" + ], + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.11.0", + "eslint-compat-utils": "^0.5.1" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": ">=8" + } }, - "node_modules/edge-paths": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/edge-paths/-/edge-paths-3.0.5.tgz", - "integrity": "sha512-sB7vSrDnFa4ezWQk9nZ/n0FdpdUuC6R1EOrlU3DL+bovcNFK28rqu2emmAUjujYEJTWIgQGqgVVWUZXMnc8iWg==", + "node_modules/eslint-plugin-import": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", "dev": true, + "license": "MIT", "dependencies": { - "@types/which": "^2.0.1", - "which": "^2.0.2" + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=4" }, - "funding": { - "url": "https://github.com/sponsors/shirshak55" + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, - "node_modules/edgedriver": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/edgedriver/-/edgedriver-5.6.1.tgz", - "integrity": "sha512-3Ve9cd5ziLByUdigw6zovVeWJjVs8QHVmqOB0sJ0WNeVPcwf4p18GnxMmVvlFmYRloUwf5suNuorea4QzwBIOA==", + "node_modules/eslint-plugin-import/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "hasInstallScript": true, "license": "MIT", "dependencies": { - "@wdio/logger": "^8.38.0", - "@zip.js/zip.js": "^2.7.48", - "decamelize": "^6.0.0", - "edge-paths": "^3.0.5", - "fast-xml-parser": "^4.4.1", - "node-fetch": "^3.3.2", - "which": "^4.0.0" - }, - "bin": { - "edgedriver": "bin/edgedriver.js" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/edgedriver/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "engines": { - "node": ">=16" + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" } }, - "node_modules/edgedriver/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" + "esutils": "^2.0.2" }, "engines": { - "node": "^16.13.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/ee-first": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "Apache-2.0", + "license": "ISC", "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/electron-to-chromium": { - "version": "1.4.816", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.816.tgz", - "integrity": "sha512-EKH5X5oqC6hLmiS7/vYtZHZFTNdhsYG5NVPRN6Yn0kQHNBlT59+xSM8HBy66P5fxWpKgZbPqb+diC64ng295Jw==" - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/emojilib": { - "version": "2.4.0", + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "MIT" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } }, - "node_modules/encodeurl": { - "version": "1.0.2", + "node_modules/eslint-plugin-n": { + "version": "17.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.11.1.tgz", + "integrity": "sha512-93IUD82N6tIEgjztVI/l3ElHtC2wTa9boJHrD8iN+NyDxjxz/daZUZKfkedjBZNdg6EqDk4irybUsiPwDqXAEA==", "dev": true, "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "enhanced-resolve": "^5.17.0", + "eslint-plugin-es-x": "^7.5.0", + "get-tsconfig": "^4.7.0", + "globals": "^15.8.0", + "ignore": "^5.2.4", + "minimatch": "^9.0.5", + "semver": "^7.5.3" + }, "engines": { - "node": ">= 0.8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": ">=8.23.0" } }, - "node_modules/encoding-sniffer": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz", - "integrity": "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==", + "node_modules/eslint-plugin-n/node_modules/globals": { + "version": "15.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.11.0.tgz", + "integrity": "sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==", "dev": true, "license": "MIT", - "dependencies": { - "iconv-lite": "^0.6.3", - "whatwg-encoding": "^3.1.1" + "engines": { + "node": ">=18" }, "funding": { - "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/encoding-sniffer/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "license": "MIT", "dependencies": { - "once": "^1.4.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/enhanced-resolve": { - "version": "5.17.0", + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=10.13.0" + "node": "*" } }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, "engines": { - "node": ">=0.12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://opencollective.com/eslint" } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" } }, - "node_modules/es-abstract": { - "version": "1.23.3", + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" + "estraverse": "^5.1.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10" } }, - "node_modules/es-define-property": { - "version": "1.0.0", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "get-intrinsic": "^1.2.4" + "estraverse": "^5.2.0" }, "engines": { - "node": ">= 0.4" + "node": ">=4.0" } }, - "node_modules/es-errors": { - "version": "1.3.0", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "engines": { - "node": ">= 0.4" + "node": ">=4.0" } }, - "node_modules/es-object-atoms": { - "version": "1.0.0", + "node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } + "license": "MIT" }, - "node_modules/es-set-tostringtag": { + "node_modules/esutils": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" - }, + "license": "BSD-2-Clause", "engines": { - "node": ">= 0.4" + "node": ">=0.10.0" } }, - "node_modules/es-shim-unscopables": { - "version": "1.0.2", + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, "license": "MIT", - "dependencies": { - "hasown": "^2.0.0" - } + "engines": { + "node": ">= 0.6" + } }, - "node_modules/es-to-primitive": { - "version": "1.2.1", + "node_modules/event-stream": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "integrity": "sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==", "dev": true, "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", + "pause-stream": "0.0.11", + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" } }, - "node_modules/esbuild": { - "version": "0.19.12", - "hasInstallScript": true, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "license": "MIT", - "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/esbuild/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" - ], - "optional": true, - "os": [ - "aix" - ], "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/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" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/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" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/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" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/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" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/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" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/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" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/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" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/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" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/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" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/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" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/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" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/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" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/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" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/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" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/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" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/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" - ], - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/esbuild/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" - ], - "optional": true, - "os": [ - "openbsd" - ], + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=0.8.x" } }, - "node_modules/esbuild/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" - ], - "optional": true, - "os": [ - "sunos" - ], + "node_modules/execa": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.4.0.tgz", + "integrity": "sha512-yKHlle2YGxZE842MERVIplWwNH5VYmqqcPFgtnlU//K8gxuFFXu0pwd/CrfXTumFpeEiufsP7+opT/bPJa1yVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.3", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.0", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.0.0" + }, "engines": { - "node": ">=12" + "node": "^18.19.0 || >=20.5.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/esbuild/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" - ], - "optional": true, - "os": [ - "win32" - ], + "node_modules/exit-hook": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-2.2.1.tgz", + "integrity": "sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esbuild/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" - ], - "optional": true, - "os": [ - "win32" - ], + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, "engines": { - "node": ">=12" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/esbuild/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" - ], - "optional": true, - "os": [ - "win32" - ], + "node_modules/express": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.10", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, "engines": { - "node": ">=12" + "node": ">= 0.10.0" } }, - "node_modules/escalade": { - "version": "3.1.2", + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/escape-html": { - "version": "1.0.3", + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, "license": "MIT" }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, "license": "MIT", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, "engines": { - "node": ">=10" + "node": ">=4" + } + }, + "node_modules/external-editor/node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=0.6.0" } }, - "node_modules/escodegen": { - "version": "2.1.0", + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" }, "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" + "extract-zip": "cli.js" }, "engines": { - "node": ">=6.0" + "node": ">= 10.17.0" }, "optionalDependencies": { - "source-map": "~0.6.1" + "@types/yauzl": "^2.9.1" } }, - "node_modules/eslint": { - "version": "8.57.0", + "node_modules/extract-zip/node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": "*" } }, - "node_modules/eslint-compat-utils": { - "version": "0.5.1", + "node_modules/extract-zip/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "license": "MIT", "dependencies": { - "semver": "^7.5.4" + "pump": "^3.0.0" }, "engines": { - "node": ">=12" + "node": ">=8" }, - "peerDependencies": { - "eslint": ">=6.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", + "node_modules/extract-zip/node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" } }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "dev": true, + "node_modules/fast-content-type-parse": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-1.1.0.tgz", + "integrity": "sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==", "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } + "peer": true }, - "node_modules/eslint-import-resolver-typescript": { - "version": "3.6.1", - "dev": true, - "license": "ISC", + "node_modules/fast-decode-uri-component": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz", + "integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==", + "license": "MIT", + "peer": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "license": "MIT" + }, + "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==", + "license": "MIT", "dependencies": { - "debug": "^4.3.4", - "enhanced-resolve": "^5.12.0", - "eslint-module-utils": "^2.7.4", - "fast-glob": "^3.3.1", - "get-tsconfig": "^4.5.0", - "is-core-module": "^2.11.0", - "is-glob": "^4.0.3" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*" + "@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/eslint-module-utils": { - "version": "2.8.1", - "dev": true, - "license": "MIT", + "node_modules/fast-glob/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==", + "license": "ISC", "dependencies": { - "debug": "^3.2.7" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } + "node": ">= 6" } }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stringify": { + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.16.1.tgz", + "integrity": "sha512-KAdnLvy1yu/XrRtP+LJnxbBGrhN+xXu+gt3EUvZhYGKCr3lFHq/7UFJHHFgmJKoqlh6B40bZLEv7w46B0mqn1g==", "license": "MIT", + "peer": true, "dependencies": { - "ms": "^2.1.1" + "@fastify/merge-json-schemas": "^0.1.0", + "ajv": "^8.10.0", + "ajv-formats": "^3.0.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^2.1.0", + "json-schema-ref-resolver": "^1.0.1", + "rfdc": "^1.2.0" } }, - "node_modules/eslint-plugin-es-x": { - "version": "7.6.0", - "dev": true, + "node_modules/fast-json-stringify/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "license": "MIT", + "peer": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.1.2", - "@eslint-community/regexpp": "^4.6.0", - "eslint-compat-utils": "^0.5.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, "funding": { - "url": "https://github.com/sponsors/ota-meshi" - }, - "peerDependencies": { - "eslint": ">=8" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "dev": true, + "node_modules/fast-json-stringify/node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "license": "MIT", + "peer": true, "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", - "semver": "^6.3.1", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" + "ajv": "^8.0.0" }, "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/eslint-plugin-import/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, + "node_modules/fast-json-stringify/node_modules/ajv/node_modules/fast-uri": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.2.tgz", + "integrity": "sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==", "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } + "peer": true }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", + "node_modules/fast-json-stringify/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT", + "peer": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true, + "license": "MIT" + }, + "node_modules/fast-querystring": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz", + "integrity": "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==", "license": "MIT", + "peer": true, "dependencies": { - "ms": "^2.1.1" + "fast-decode-uri-component": "^1.0.1" } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, + "node_modules/fast-redact": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", + "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", + "license": "MIT", + "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", + "node_modules/fast-uri": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.4.0.tgz", + "integrity": "sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA==", + "license": "MIT", + "peer": true + }, + "node_modules/fast-xml-parser": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz", + "integrity": "sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==", "dev": true, - "license": "ISC", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "strnum": "^1.0.5" }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", "bin": { - "semver": "bin/semver.js" + "fxparser": "src/cli/cli.js" } }, - "node_modules/eslint-plugin-n": { - "version": "17.10.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.10.1.tgz", - "integrity": "sha512-hm/q37W6efDptJXdwirsm6A257iY6ZNtpoSG0wEzFzjJ3AhL7OhEIhdSR2e4OdYfHO5EDeqlCfFrjf9q208IPw==", - "dev": true, + "node_modules/fastify": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.28.1.tgz", + "integrity": "sha512-kFWUtpNr4i7t5vY2EJPCN2KgMVpuqfU4NjnJNCgiNB900oiDeYqaNDRcAfeBbOF5hGixixxcKnOU4KN9z6QncQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "peer": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "enhanced-resolve": "^5.17.0", - "eslint-plugin-es-x": "^7.5.0", - "get-tsconfig": "^4.7.0", - "globals": "^15.8.0", - "ignore": "^5.2.4", - "minimatch": "^9.0.5", - "semver": "^7.5.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": ">=8.23.0" + "@fastify/ajv-compiler": "^3.5.0", + "@fastify/error": "^3.4.0", + "@fastify/fast-json-stringify-compiler": "^4.3.0", + "abstract-logging": "^2.0.1", + "avvio": "^8.3.0", + "fast-content-type-parse": "^1.1.0", + "fast-json-stringify": "^5.8.0", + "find-my-way": "^8.0.0", + "light-my-request": "^5.11.0", + "pino": "^9.0.0", + "process-warning": "^3.0.0", + "proxy-addr": "^2.0.7", + "rfdc": "^1.3.0", + "secure-json-parse": "^2.7.0", + "semver": "^7.5.4", + "toad-cache": "^3.3.0" } }, - "node_modules/eslint-plugin-n/node_modules/globals": { - "version": "15.9.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.9.0.tgz", - "integrity": "sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==", - "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" } }, - "node_modules/eslint-scope": { - "version": "7.2.2", + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "pend": "~1.2.0" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } + "license": "MIT" }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.11", + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" } }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", + "node_modules/fetch-blob/node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "license": "MIT", "engines": { - "node": "*" + "node": ">= 8" } }, - "node_modules/espree": { - "version": "9.6.1", + "node_modules/fflate": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "license": "MIT" + }, + "node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "is-unicode-supported": "^2.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=18" }, "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esquery": { - "version": "1.5.0", + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "estraverse": "^5.1.0" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">=0.10" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/esrecurse": { - "version": "4.3.0", + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, - "license": "BSD-2-Clause", + "license": "Apache-2.0", "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" + "minimatch": "^5.0.1" } }, - "node_modules/estraverse": { - "version": "5.3.0", + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, - "license": "BSD-2-Clause", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">=4.0" + "node": ">=10" } }, - "node_modules/estree-walker": { - "version": "0.6.1", - "dev": true, - "license": "MIT" - }, - "node_modules/esutils": { - "version": "2.0.3", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/etag": { - "version": "1.8.1", + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dev": true, "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, - "node_modules/event-stream": { - "version": "3.3.4", + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "license": "MIT", "dependencies": { - "duplexer": "~0.1.1", - "from": "~0", - "map-stream": "~0.1.0", - "pause-stream": "0.0.11", - "split": "0.3", - "stream-combiner": "~0.0.4", - "through": "~2.3.1" + "ms": "2.0.0" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "license": "MIT", - "engines": { - "node": ">=6" - } + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" }, - "node_modules/events": { - "version": "3.3.0", + "node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, "engines": { - "node": ">=0.8.x" + "node": ">=6" } }, - "node_modules/execa": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.3.1.tgz", - "integrity": "sha512-gdhefCCNy/8tpH/2+ajP9IQc14vXchNdd0weyzSJEFURhRMGncQ+zKFxwjAufIewPEJm9BPOaJnvg2UtlH2gPQ==", - "dev": true, + "node_modules/find-my-way": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-8.2.2.tgz", + "integrity": "sha512-Dobi7gcTEq8yszimcfp/R7+owiT4WncAJ7VTTgFH1jYJ5GaG1FbhjwDG820hptN0QDFvzVY3RfCzdInvGPGzjA==", "license": "MIT", + "peer": true, "dependencies": { - "@sindresorhus/merge-streams": "^4.0.0", - "cross-spawn": "^7.0.3", - "figures": "^6.1.0", - "get-stream": "^9.0.0", - "human-signals": "^8.0.0", - "is-plain-obj": "^4.1.0", - "is-stream": "^4.0.1", - "npm-run-path": "^5.2.0", - "pretty-ms": "^9.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^4.0.0", - "yoctocolors": "^2.0.0" + "fast-deep-equal": "^3.1.3", + "fast-querystring": "^1.0.0", + "safe-regex2": "^3.1.0" }, "engines": { - "node": "^18.19.0 || >=20.5.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=14" } }, - "node_modules/execa/node_modules/get-stream": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", - "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "license": "MIT", "dependencies": { - "@sec-ant/readable-stream": "^0.4.1", - "is-stream": "^4.0.1" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=18" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/execa/node_modules/is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=18" + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/exit-hook": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-2.2.1.tgz", - "integrity": "sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==", - "dev": true, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true, + "license": "ISC" + }, + "node_modules/flow-parser": { + "version": "0.248.1", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.248.1.tgz", + "integrity": "sha512-fkCfVPelbTzSVp+jVwSvEyc+I4WG8MNhRG/EWSZZTlgHAMEdhXJaFEbfErXxMktboMhVGchvEFhWxkzNGM1m2A==", "license": "MIT", - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.4.0" } }, - "node_modules/express": { - "version": "4.19.2", + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.6.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", "engines": { - "node": ">= 0.10.0" + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "is-callable": "^1.1.3" } }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dev": true, - "license": "MIT" + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", "dev": true, "license": "MIT", "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=4" + "node": ">= 6" } }, - "node_modules/external-editor/node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "node_modules/form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.17" + } + }, + "node_modules/formdata-node": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-5.0.1.tgz", + "integrity": "sha512-8xnIjMYGKPj+rY2BTbAmpqVpi8der/2FT4d9f7J32FlsCpO5EzZPq3C/N56zdv8KweHzVF6TGijsS1JT6r1H2g==", "dev": true, "license": "MIT", "dependencies": { - "os-tmpdir": "~1.0.2" + "node-domexception": "1.0.0", + "web-streams-polyfill": "4.0.0-beta.3" }, "engines": { - "node": ">=0.6.0" + "node": ">= 14.17" } }, - "node_modules/extract-zip": { - "version": "2.0.1", + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" + "fetch-blob": "^3.1.2" }, "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" + "node": ">=12.20.0" } }, - "node_modules/fast-content-type-parse": { - "version": "1.1.0", + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "license": "MIT", - "peer": true + "engines": { + "node": ">= 0.6" + } }, - "node_modules/fast-decode-uri-component": { - "version": "1.0.1", + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, "license": "MIT", - "peer": true - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "license": "MIT" + "engines": { + "node": ">= 0.6" + } }, - "node_modules/fast-fifo": { - "version": "1.3.2", + "node_modules/from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==", + "dev": true, "license": "MIT" }, - "node_modules/fast-glob": { - "version": "3.3.2", + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, "license": "MIT", "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" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=8.6.0" + "node": ">=14.14" } }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 6" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "license": "MIT" - }, - "node_modules/fast-json-stringify": { - "version": "5.16.0", "license": "MIT", - "peer": true, - "dependencies": { - "@fastify/merge-json-schemas": "^0.1.0", - "ajv": "^8.10.0", - "ajv-formats": "^3.0.1", - "fast-deep-equal": "^3.1.3", - "fast-uri": "^2.1.0", - "json-schema-ref-resolver": "^1.0.1", - "rfdc": "^1.2.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fast-json-stringify/node_modules/ajv": { - "version": "8.15.0", + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^2.3.0", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fast-json-stringify/node_modules/ajv-formats": { - "version": "3.0.1", + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, "license": "MIT", - "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/geckodriver": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-4.5.1.tgz", + "integrity": "sha512-lGCRqPMuzbRNDWJOQcUqhNqPvNsIFu6yzXF8J/6K3WCYFd2r5ckbeF7h1cxsnjA7YLSEiWzERCt6/gjZ3tW0ug==", + "dev": true, + "hasInstallScript": true, + "license": "MPL-2.0", "dependencies": { - "ajv": "^8.0.0" + "@wdio/logger": "^9.0.0", + "@zip.js/zip.js": "^2.7.48", + "decamelize": "^6.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "node-fetch": "^3.3.2", + "tar-fs": "^3.0.6", + "which": "^4.0.0" }, - "peerDependencies": { - "ajv": "^8.0.0" + "bin": { + "geckodriver": "bin/geckodriver.js" }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } + "engines": { + "node": "^16.13 || >=18 || >=20" } }, - "node_modules/fast-json-stringify/node_modules/json-schema-traverse": { - "version": "1.0.0", + "node_modules/geckodriver/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, "license": "MIT", - "peer": true + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", + "node_modules/geckodriver/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", "dev": true, - "license": "MIT" - }, - "node_modules/fast-querystring": { - "version": "1.1.2", "license": "MIT", - "peer": true, "dependencies": { - "fast-decode-uri-component": "^1.0.1" + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" } }, - "node_modules/fast-redact": { - "version": "3.5.0", - "license": "MIT", - "peer": true, + "node_modules/geckodriver/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=6" + "node": ">=16" } }, - "node_modules/fast-uri": { - "version": "2.3.0", - "license": "MIT", - "peer": true - }, - "node_modules/fast-xml-parser": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz", - "integrity": "sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==", + "node_modules/geckodriver/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - }, - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - } - ], - "license": "MIT", + "license": "ISC", "dependencies": { - "strnum": "^1.0.5" + "isexe": "^3.1.1" }, "bin": { - "fxparser": "src/cli/cli.js" + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" } }, - "node_modules/fastify": { - "version": "4.27.0", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "license": "MIT", - "peer": true, - "dependencies": { - "@fastify/ajv-compiler": "^3.5.0", - "@fastify/error": "^3.4.0", - "@fastify/fast-json-stringify-compiler": "^4.3.0", - "abstract-logging": "^2.0.1", - "avvio": "^8.3.0", - "fast-content-type-parse": "^1.1.0", - "fast-json-stringify": "^5.8.0", - "find-my-way": "^8.0.0", - "light-my-request": "^5.11.0", - "pino": "^9.0.0", - "process-warning": "^3.0.0", - "proxy-addr": "^2.0.7", - "rfdc": "^1.3.0", - "secure-json-parse": "^2.7.0", - "semver": "^7.5.4", - "toad-cache": "^3.3.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/fastq": { - "version": "1.17.1", + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" + "engines": { + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/fd-slicer": { - "version": "1.1.0", + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "license": "MIT", "dependencies": { - "pend": "~1.2.0" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fecha": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", - "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", + "node_modules/get-port": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.1.0.tgz", + "integrity": "sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "node_modules/get-source": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/get-source/-/get-source-2.0.12.tgz", + "integrity": "sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], + "license": "Unlicense", "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" + "data-uri-to-buffer": "^2.0.0", + "source-map": "^0.6.1" } }, - "node_modules/fflate": { - "version": "0.8.2", + "node_modules/get-source/node_modules/data-uri-to-buffer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.2.tgz", + "integrity": "sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==", + "dev": true, "license": "MIT" }, - "node_modules/figures": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", - "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "dev": true, "license": "MIT", "dependencies": { - "is-unicode-supported": "^2.0.0" + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" }, "engines": { "node": ">=18" @@ -9141,356 +8616,492 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/file-entry-cache": { - "version": "6.0.1", + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dev": true, - "license": "Apache-2.0", + "node_modules/get-tsconfig": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", + "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", + "license": "MIT", "dependencies": { - "minimatch": "^5.0.1" + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/get-uri": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", + "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4", + "fs-extra": "^11.2.0" }, "engines": { - "node": ">=10" + "node": ">= 14" } }, - "node_modules/fill-range": { - "version": "7.1.1", + "node_modules/get-uri/node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "dev": true, "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, "engines": { - "node": ">=8" + "node": ">= 14" } }, - "node_modules/finalhandler": { - "version": "1.2.0", + "node_modules/git-repo-info": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/git-repo-info/-/git-repo-info-2.1.1.tgz", + "integrity": "sha512-8aCohiDo4jwjOwma4FmYFd3i97urZulL8XL24nIPxuE+GZnfsAyy/g2Shqx6OjUiFKUXZM+Yy+KHnOmmA3FVcg==", "dev": true, "license": "MIT", + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/gitconfiglocal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-2.1.0.tgz", + "integrity": "sha512-qoerOEliJn3z+Zyn1HW2F6eoYJqKwS6MgC9cztTLUB/xLWX8gD/6T60pKn4+t/d6tP7JlybI7Z3z+I572CR/Vg==", + "dev": true, + "license": "BSD", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" + "ini": "^1.3.2" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">= 0.8" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "ms": "2.0.0" + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true, - "license": "MIT" + "license": "BSD-2-Clause" }, - "node_modules/find-cache-dir": { - "version": "2.1.0", + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "license": "MIT", "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "engines": { - "node": ">=6" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/find-my-way": { - "version": "8.2.0", - "license": "MIT", - "peer": true, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-querystring": "^1.0.0", - "safe-regex2": "^3.1.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=14" + "node": "*" } }, - "node_modules/find-up": { - "version": "5.0.0", + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "type-fest": "^0.20.2" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/flat-cache": { - "version": "3.2.0", + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "license": "MIT", "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.3.1", - "dev": true, - "license": "ISC" - }, - "node_modules/flow-parser": { - "version": "0.237.2", - "license": "MIT", - "engines": { - "node": ">=0.4.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/follow-redirects": { - "version": "1.15.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, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], "license": "MIT", + "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": ">=4.0" + "node": ">=10" }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/for-each": { - "version": "0.3.3", + "node_modules/google-protobuf": { + "version": "3.21.4", + "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.4.tgz", + "integrity": "sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ==", + "license": "(BSD-3-Clause AND Apache-2.0)" + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, "license": "MIT", "dependencies": { - "is-callable": "^1.1.3" + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/foreground-child": { - "version": "3.1.1", + "node_modules/got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" }, "engines": { - "node": ">=14" + "node": ">=14.16" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sindresorhus/got?sponsor=1" } }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "node_modules/got/node_modules/@sindresorhus/is": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", "dev": true, "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, "engines": { - "node": ">= 6" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, - "node_modules/form-data-encoder": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", - "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "node_modules/got/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, + "license": "MIT", "engines": { - "node": ">= 14.17" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/formdata-node": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-5.0.1.tgz", - "integrity": "sha512-8xnIjMYGKPj+rY2BTbAmpqVpi8der/2FT4d9f7J32FlsCpO5EzZPq3C/N56zdv8KweHzVF6TGijsS1JT6r1H2g==", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/grpc-web": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/grpc-web/-/grpc-web-1.5.0.tgz", + "integrity": "sha512-y1tS3BBIoiVSzKTDF3Hm7E8hV2n7YY7pO0Uo7depfWJqKzWE+SKr0jvHNIJsJJYILQlpYShpi/DRJJMbosgDMQ==", + "license": "Apache-2.0" + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, "license": "MIT", - "dependencies": { - "node-domexception": "1.0.0", - "web-streams-polyfill": "4.0.0-beta.3" - }, - "engines": { - "node": ">= 14.17" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/formdata-node/node_modules/web-streams-polyfill": { - "version": "4.0.0-beta.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", - "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { - "node": ">= 14" + "node": ">=8" } }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, + "license": "MIT", "dependencies": { - "fetch-blob": "^3.1.2" + "es-define-property": "^1.0.0" }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "license": "MIT", - "engines": { - "node": ">= 0.6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fresh": { - "version": "0.5.2", + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/from": { - "version": "0.1.7", + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, - "license": "MIT" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } - }, - "node_modules/function-bind": { - "version": "1.1.2", + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/function.prototype.name": { - "version": "1.1.6", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" + "function-bind": "^1.1.2" }, "engines": { "node": ">= 0.4" + } + }, + "node_modules/headers-utils": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/headers-utils/-/headers-utils-1.2.5.tgz", + "integrity": "sha512-DAzV5P/pk3wTU/8TLZN+zFTDv4Xa1QDTU8pRvovPetcOMbmqq8CwsAvZBLPZHH6usxyy31zMp7I4aCYb6XIf6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/functions-have-names": { - "version": "1.2.3", + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/htmlfy": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.3.2.tgz", + "integrity": "sha512-FsxzfpeDYRqn1emox9VpxMPfGjADoUmmup8D604q497R0VNxiXs4ZZTN2QzkaMA5C9aHGUoe1iQRVSm+HK9xuA==", "dev": true, + "license": "MIT" + }, + "node_modules/htmlparser2": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", + "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "entities": "^4.5.0" } }, - "node_modules/gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "license": "MIT", "dependencies": { - "globule": "^1.0.0" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">= 4.0.0" + "node": ">= 0.8" } }, - "node_modules/geckodriver": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-4.4.1.tgz", - "integrity": "sha512-nnAdIrwLkMcDu4BitWXF23pEMeZZ0Cj7HaWWFdSpeedBP9z6ft150JYiGO2mwzw6UiR823Znk1JeIf07RyzloA==", + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, - "hasInstallScript": true, + "license": "MIT", "dependencies": { - "@wdio/logger": "^8.28.0", - "@zip.js/zip.js": "^2.7.44", - "decamelize": "^6.0.0", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.4", - "node-fetch": "^3.3.2", - "tar-fs": "^3.0.6", - "which": "^4.0.0" - }, - "bin": { - "geckodriver": "bin/geckodriver.js" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": "^16.13 || >=18 || >=20" + "node": ">= 14" } }, - "node_modules/geckodriver/node_modules/agent-base": { + "node_modules/http-proxy-agent/node_modules/agent-base": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.3.4" }, @@ -9498,124 +9109,183 @@ "node": ">= 14" } }, - "node_modules/geckodriver/node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "node_modules/http2-wrapper": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", "dev": true, + "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" }, "engines": { - "node": ">= 14" + "node": ">=10.19.0" } }, - "node_modules/geckodriver/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, "engines": { - "node": ">=16" + "node": ">= 6" } }, - "node_modules/geckodriver/node_modules/tar-fs": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", - "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", + "node_modules/human-signals": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", + "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", "dev": true, - "dependencies": { - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - }, - "optionalDependencies": { - "bare-fs": "^2.1.1", - "bare-path": "^2.1.0" + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" } }, - "node_modules/geckodriver/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "license": "MIT", "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": "^16.13.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": ">= 4" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } + "license": "MIT" }, - "node_modules/get-intrinsic": { - "version": "1.2.4", + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-port": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.1.0.tgz", - "integrity": "sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==", + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "ISC" }, - "node_modules/get-source": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/get-source/-/get-source-2.0.12.tgz", - "integrity": "sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==", + "node_modules/inquirer": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-11.1.0.tgz", + "integrity": "sha512-CmLAZT65GG/v30c+D2Fk8+ceP6pxD6RL+hIUOWAltCmeyEqWYwqu9v76q03OvjyZ3AB0C1Ala2stn1z/rMqGEw==", "dev": true, + "license": "MIT", "dependencies": { - "data-uri-to-buffer": "^2.0.0", - "source-map": "^0.6.1" + "@inquirer/core": "^9.2.1", + "@inquirer/prompts": "^6.0.1", + "@inquirer/type": "^2.0.0", + "@types/mute-stream": "^0.0.4", + "ansi-escapes": "^4.3.2", + "mute-stream": "^1.0.0", + "run-async": "^3.0.0", + "rxjs": "^7.8.1" + }, + "engines": { + "node": ">=18" } }, - "node_modules/get-source/node_modules/data-uri-to-buffer": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.2.tgz", - "integrity": "sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==", - "dev": true - }, - "node_modules/get-stream": { - "version": "5.2.0", + "node_modules/inquirer/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "license": "MIT", "dependencies": { - "pump": "^3.0.0" + "type-fest": "^0.21.3" }, "engines": { "node": ">=8" @@ -9624,180 +9294,155 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-symbol-description": { - "version": "1.0.2", + "node_modules/inquirer/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - }, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-tsconfig": { - "version": "4.7.5", + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, "license": "MIT", "dependencies": { - "resolve-pkg-maps": "^1.0.0" + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + "engines": { + "node": ">= 0.4" } }, - "node_modules/get-uri": { - "version": "6.0.3", + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", "dev": true, "license": "MIT", "dependencies": { - "basic-ftp": "^5.0.2", - "data-uri-to-buffer": "^6.0.2", - "debug": "^4.3.4", - "fs-extra": "^11.2.0" + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" }, "engines": { - "node": ">= 14" + "node": ">= 12" } }, - "node_modules/get-uri/node_modules/data-uri-to-buffer": { - "version": "6.0.2", - "dev": true, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "license": "MIT", "engines": { - "node": ">= 14" + "node": ">= 0.10" } }, - "node_modules/get-uri/node_modules/fs-extra": { - "version": "11.2.0", + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" }, "engines": { - "node": ">=14.14" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-uri/node_modules/jsonfile": { - "version": "6.1.0", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, "license": "MIT", "dependencies": { - "universalify": "^2.0.0" + "has-bigints": "^1.0.1" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-uri/node_modules/universalify": { - "version": "2.0.1", + "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, "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=8" } }, - "node_modules/git-repo-info": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/git-repo-info/-/git-repo-info-2.1.1.tgz", - "integrity": "sha512-8aCohiDo4jwjOwma4FmYFd3i97urZulL8XL24nIPxuE+GZnfsAyy/g2Shqx6OjUiFKUXZM+Yy+KHnOmmA3FVcg==", + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/gitconfiglocal": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-2.1.0.tgz", - "integrity": "sha512-qoerOEliJn3z+Zyn1HW2F6eoYJqKwS6MgC9cztTLUB/xLWX8gD/6T60pKn4+t/d6tP7JlybI7Z3z+I572CR/Vg==", - "dev": true, - "license": "BSD", - "dependencies": { - "ini": "^1.3.2" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": "*" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/glob-parent": { - "version": "6.0.2", + "node_modules/is-bun-module": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.2.1.tgz", + "integrity": "sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==", "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.11", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "semver": "^7.6.3" } }, - "node_modules/globals": { - "version": "13.24.0", + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globalthis": { - "version": "1.0.4", + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dev": true, "license": "MIT", "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -9806,200 +9451,175 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globby": { - "version": "11.1.0", + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", "dev": true, "license": "MIT", "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" + "is-typed-array": "^1.1.13" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globule": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz", - "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==", + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, "license": "MIT", "dependencies": { - "glob": "~7.1.1", - "lodash": "^4.17.21", - "minimatch": "~3.0.2" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globule/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/globule/node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "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, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, + "license": "MIT", "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=8" } }, - "node_modules/globule/node_modules/minimatch": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", - "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", - "dev": true, - "license": "ISC", + "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==", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "is-extglob": "^2.1.1" }, "engines": { - "node": "*" + "node": ">=0.10.0" } }, - "node_modules/google-protobuf": { - "version": "3.21.4", - "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.4.tgz", - "integrity": "sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ==" - }, - "node_modules/gopd": { - "version": "1.0.1", + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3" + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/got": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", - "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "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==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, + "license": "MIT", "dependencies": { - "@sindresorhus/is": "^5.2.0", - "@szmarczak/http-timer": "^5.0.1", - "cacheable-lookup": "^7.0.0", - "cacheable-request": "^10.2.8", - "decompress-response": "^6.0.0", - "form-data-encoder": "^2.1.2", - "get-stream": "^6.0.1", - "http2-wrapper": "^2.1.10", - "lowercase-keys": "^3.0.0", - "p-cancelable": "^3.0.0", - "responselike": "^3.0.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=14.16" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/got/node_modules/@sindresorhus/is": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", - "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" + "node": ">=8" } }, - "node_modules/got/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==", + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "license": "ISC" - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "dev": true, - "license": "MIT" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/grpc-web": { - "version": "1.5.0", - "license": "Apache-2.0" - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "dev": true, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-proto": { + "node_modules/is-running": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-running/-/is-running-2.1.0.tgz", + "integrity": "sha512-mjJd3PujZMl7j+D395WTIO5tU5RIDBfVSRtRR4VOJou3H66E38UjbjvDGh3slJzPuolsb+yQFqwHNNdyp5jg3w==", + "dev": true, + "license": "BSD" + }, + "node_modules/is-shared-array-buffer": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7" + }, "engines": { "node": ">= 0.4" }, @@ -10007,23 +9627,27 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-symbols": { - "version": "1.0.3", + "node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-tostringtag": { - "version": "1.0.2", + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, "license": "MIT", "dependencies": { - "has-symbols": "^1.0.3" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -10032,1989 +9656,2259 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hasown": { - "version": "2.0.2", + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, "license": "MIT", "dependencies": { - "function-bind": "^1.1.2" + "has-symbols": "^1.0.2" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/headers-utils": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/headers-utils/-/headers-utils-1.2.5.tgz", - "integrity": "sha512-DAzV5P/pk3wTU/8TLZN+zFTDv4Xa1QDTU8pRvovPetcOMbmqq8CwsAvZBLPZHH6usxyy31zMp7I4aCYb6XIf6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/hosted-git-info": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", - "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "lru-cache": "^10.0.1" + "which-typed-array": "^1.1.14" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/htmlfy": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.2.1.tgz", - "integrity": "sha512-HoomFHQ3av1uhq+7FxJTq4Ns0clAD+tGbQNrSd0WFY3UAjjUk6G3LaWEqdgmIXYkY4pexZiyZ3ykZJhQlM0J5A==", - "dev": true, - "license": "MIT" - }, - "node_modules/htmlparser2": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", - "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", + "node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.1.0", - "entities": "^4.5.0" + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "node_modules/http-errors": { - "version": "2.0.0", + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, "license": "MIT", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "call-bind": "^1.0.2" }, - "engines": { - "node": ">= 0.8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, "engines": { - "node": ">= 14" + "node": ">=0.10.0" } }, - "node_modules/http-proxy-agent/node_modules/agent-base": { - "version": "7.1.1", + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "debug": "^4.3.4" + "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">= 14" + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/http2-wrapper": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", - "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.2.0" + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" }, "engines": { - "node": ">=10.19.0" + "node": ">=10" } }, - "node_modules/human-signals": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", - "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", + "node_modules/jake/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", + "node_modules/jake/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.3.1", + "node_modules/jasmine": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-5.4.0.tgz", + "integrity": "sha512-E2u4ylX5tgGYvbynImU6EUBKKrSVB1L72FEPjGh4M55ov1VsxR26RA2JU91L9YSPFgcjo4mCLyKn/QXvEYGBkA==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 4" + "dependencies": { + "glob": "^10.2.2", + "jasmine-core": "~5.4.0" + }, + "bin": { + "jasmine": "bin/jasmine.js" } }, - "node_modules/immediate": { - "version": "3.0.6", + "node_modules/jasmine-core": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.4.0.tgz", + "integrity": "sha512-T4fio3W++llLd7LGSGsioriDHgWyhoL6YTu4k37uwJLF7DzOzspz7mNxRoM3cQdLWtL/ebazQpIf/yZGJx/gzg==", "dev": true, "license": "MIT" }, - "node_modules/import-fresh": { - "version": "3.3.0", + "node_modules/jasmine/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": ">=6" + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/import-meta-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", - "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.8.19" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/inflight": { - "version": "1.0.6", - "license": "ISC", + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "license": "MIT", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true, - "license": "ISC" - }, - "node_modules/inquirer": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-10.2.2.tgz", - "integrity": "sha512-tyao/4Vo36XnUItZ7DnUXX4f1jVao2mSrleV/5IPtW/XAEA26hRVsbc68nuTEKWcr5vMP/1mVoT2O7u8H4v1Vg==", + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/prompts": "^5.5.0", - "@inquirer/type": "^1.5.3", - "@types/mute-stream": "^0.0.4", - "ansi-escapes": "^4.3.2", - "mute-stream": "^1.0.0", - "run-async": "^3.0.0", - "rxjs": "^7.8.1" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": ">=18" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/inquirer/node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, "license": "MIT", "dependencies": { - "type-fest": "^0.21.3" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/inquirer/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT" + }, + "node_modules/jscodeshift": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-17.0.0.tgz", + "integrity": "sha512-Af+MFsNwLSVO+t4kKjJdJKh6iNbNHfDfFGdyltJ2wUFN3furgbvHguJmB85iou+fY7wbHgI8eiEKpp6doGgtKg==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/plugin-transform-class-properties": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/preset-flow": "^7.24.7", + "@babel/preset-typescript": "^7.24.7", + "@babel/register": "^7.24.6", + "flow-parser": "0.*", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.7", + "neo-async": "^2.5.0", + "picocolors": "^1.0.1", + "recast": "^0.23.9", + "temp": "^0.9.4", + "write-file-atomic": "^5.0.1" + }, + "bin": { + "jscodeshift": "bin/jscodeshift.js" + }, "engines": { - "node": ">=10" + "node": ">=16" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/preset-env": "^7.1.6" + }, + "peerDependenciesMeta": { + "@babel/preset-env": { + "optional": true + } } }, - "node_modules/internal-slot": { - "version": "1.0.7", - "dev": true, + "node_modules/jscodeshift/node_modules/ast-types": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", + "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" + "tslib": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=4" } }, - "node_modules/ip-address": { - "version": "9.0.5", - "dev": true, + "node_modules/jscodeshift/node_modules/recast": { + "version": "0.23.9", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz", + "integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==", "license": "MIT", "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" + "ast-types": "^0.16.1", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tiny-invariant": "^1.3.3", + "tslib": "^2.0.1" }, "engines": { - "node": ">= 12" + "node": ">= 4" } }, - "node_modules/ipaddr.js": { - "version": "1.9.1", + "node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, "engines": { - "node": ">= 0.10" + "node": ">=6" } }, - "node_modules/is-array-buffer": { - "version": "3.0.4", + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "node_modules/json-schema-ref-resolver": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-1.0.1.tgz", + "integrity": "sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==", + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "license": "MIT" }, - "node_modules/is-bigint": { - "version": "1.0.4", + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "license": "MIT", "dependencies": { - "has-bigints": "^1.0.1" + "minimist": "^1.2.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "license": "MIT", "dependencies": { - "binary-extensions": "^2.0.0" + "universalify": "^2.0.0" }, - "engines": { - "node": ">=8" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", "dev": true, - "license": "MIT", + "license": "(MIT OR GPL-3.0-or-later)", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" } }, - "node_modules/is-callable": { - "version": "1.2.7", + "node_modules/jszip/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, - "node_modules/is-core-module": { - "version": "2.13.1", + "node_modules/jszip/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "license": "MIT", "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/is-data-view": { - "version": "1.0.1", + "node_modules/jszip/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, - "license": "MIT", - "dependencies": { - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, - "node_modules/is-date-object": { - "version": "1.0.5", + "node_modules/jszip/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "safe-buffer": "~5.1.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "json-buffer": "3.0.1" } }, - "node_modules/is-glob": { - "version": "4.0.3", + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/is-negative-zero": { - "version": "2.0.3", + "node_modules/ky": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/ky/-/ky-0.33.3.tgz", + "integrity": "sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=14.16" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "license": "MIT", - "engines": { - "node": ">=0.12.0" + "url": "https://github.com/sindresorhus/ky?sponsor=1" } }, - "node_modules/is-number-object": { - "version": "1.0.7", + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "readable-stream": "^2.0.5" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.6.3" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", + "node_modules/lazystream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/is-plain-obj": { - "version": "4.1.0", + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "license": "MIT", "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "safe-buffer": "~5.1.0" } }, - "node_modules/is-regex": { - "version": "1.1.4", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8.0" } }, - "node_modules/is-running": { - "version": "2.1.0", - "dev": true, - "license": "BSD" - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.3", + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "immediate": "~3.0.5" } }, - "node_modules/is-stream": { - "version": "2.0.1", + "node_modules/light-my-request": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.14.0.tgz", + "integrity": "sha512-aORPWntbpH5esaYpGOOmri0OHDOe3wC5M2MQxZ9dvMLZm6DnaAn0kJlcbU9hwsQgLzmZyReKwFwwPkR+nHu5kA==", + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "cookie": "^0.7.0", + "process-warning": "^3.0.0", + "set-cookie-parser": "^2.4.1" + } + }, + "node_modules/lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/is-string": { - "version": "1.0.7", + "node_modules/locate-app": { + "version": "2.4.43", + "resolved": "https://registry.npmjs.org/locate-app/-/locate-app-2.4.43.tgz", + "integrity": "sha512-BX6NEdECUGcDQw8aqqg02qLyF9rF8V+dAfyAnBzL2AofIlIvf4Q6EGXnzVWpWot9uBE+x/o8CjXHo7Zlegu91Q==", "dev": true, - "license": "MIT", + "funding": [ + { + "type": "individual", + "url": "https://buymeacoffee.com/hejny" + }, + { + "type": "github", + "url": "https://github.com/hejny/locate-app/blob/main/README.md#%EF%B8%8F-contributing" + } + ], + "license": "Apache-2.0", "dependencies": { - "has-tostringtag": "^1.0.0" - }, + "@promptbook/utils": "0.70.0-1", + "type-fest": "2.13.0", + "userhome": "1.0.0" + } + }, + "node_modules/locate-app/node_modules/type-fest": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.13.0.tgz", + "integrity": "sha512-lPfAm42MxE4/456+QyIaaVBAwgpJb6xZ8PRu09utnhPdWwcyj9vgy6Sq0Z5yNbJ21EdxB5dRU/Qg8bsyAMtlcw==", + "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">= 0.4" + "node": ">=12.20" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-symbol": { - "version": "1.0.4", + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "p-locate": "^5.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-typed-array": { - "version": "1.1.13", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.pickby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", + "integrity": "sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.zip": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", + "integrity": "sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==", + "dev": true, + "license": "MIT" + }, + "node_modules/logform": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.1.tgz", + "integrity": "sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA==", "dev": true, "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.14" + "@colors/colors": "1.6.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 12.0.0" } }, - "node_modules/is-unicode-supported": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", - "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "node_modules/logform/node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.1.90" } }, - "node_modules/is-weakref": { - "version": "1.0.2", + "node_modules/loglevel": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", + "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2" + "engines": { + "node": ">= 0.6.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" } }, - "node_modules/isarray": { - "version": "2.0.5", + "node_modules/loglevel-plugin-prefix": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", + "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", "dev": true, "license": "MIT" }, - "node_modules/isexe": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/isobject": { - "version": "3.0.1", + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "peer": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" } }, - "node_modules/jackspeak": { - "version": "3.2.3", + "node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, + "license": "MIT", "engines": { - "node": ">=14" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jake": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", - "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", - "dev": true, - "license": "Apache-2.0", + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" + "yallist": "^3.0.2" } }, - "node_modules/jake/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/magic-string": { + "version": "0.30.12", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", + "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@jridgewell/sourcemap-codec": "^1.5.0" } }, - "node_modules/jake/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "pify": "^4.0.1", + "semver": "^5.6.0" }, "engines": { - "node": "*" + "node": ">=6" } }, - "node_modules/jasmine": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-5.2.0.tgz", - "integrity": "sha512-il+noV96N1BGU9/FMmc8QtAMxC8lPnXUiAvgb0o9MDZATRdxglTQe9wo6UdL049ropQL6MopDYwDlludKR6wJQ==", - "dev": true, - "dependencies": { - "glob": "^10.2.2", - "jasmine-core": "~5.2.0" - }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", "bin": { - "jasmine": "bin/jasmine.js" + "semver": "bin/semver" } }, - "node_modules/jasmine-core": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.2.0.tgz", - "integrity": "sha512-tSAtdrvWybZkQmmaIoDgnvHG8ORUNw5kEVlO5CvrXj02Jjr9TZrmjFq7FUiOUzJiOP2wLGYT6PgrQgQF4R1xiw==", + "node_modules/map-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==", "dev": true }, - "node_modules/jasmine/node_modules/glob": { - "version": "10.4.1", + "node_modules/marked": { + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/marked/-/marked-9.1.6.tgz", + "integrity": "sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==", "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "path-scurry": "^1.11.1" - }, + "license": "MIT", "bin": { - "glob": "dist/esm/bin.mjs" + "marked": "bin/marked.js" }, "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 16" } }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "node_modules/marked-terminal": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-7.1.0.tgz", + "integrity": "sha512-+pvwa14KZL74MVXjYdPR3nSInhGhNvPce/3mqLVZT2oUvt654sL1XImFuLZ1pkA866IYZ3ikDTOFUIC7XzpZZg==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "ansi-escapes": "^7.0.0", + "chalk": "^5.3.0", + "cli-highlight": "^2.1.11", + "cli-table3": "^0.6.5", + "node-emoji": "^2.1.3", + "supports-hyperlinks": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=16.0.0" + }, + "peerDependencies": { + "marked": ">=1 <14" } }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "node_modules/marked-terminal/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.6" } }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 8" } }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.6" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "dev": true, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=8.6" } }, - "node_modules/jsbn": { - "version": "1.1.0", + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, - "license": "MIT" - }, - "node_modules/jscodeshift": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-17.0.0.tgz", - "integrity": "sha512-Af+MFsNwLSVO+t4kKjJdJKh6iNbNHfDfFGdyltJ2wUFN3furgbvHguJmB85iou+fY7wbHgI8eiEKpp6doGgtKg==", - "dependencies": { - "@babel/core": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/plugin-transform-class-properties": "^7.24.7", - "@babel/plugin-transform-modules-commonjs": "^7.24.7", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.7", - "@babel/plugin-transform-private-methods": "^7.24.7", - "@babel/preset-flow": "^7.24.7", - "@babel/preset-typescript": "^7.24.7", - "@babel/register": "^7.24.6", - "flow-parser": "0.*", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.7", - "neo-async": "^2.5.0", - "picocolors": "^1.0.1", - "recast": "^0.23.9", - "temp": "^0.9.4", - "write-file-atomic": "^5.0.1" - }, + "license": "MIT", "bin": { - "jscodeshift": "bin/jscodeshift.js" + "mime": "cli.js" }, "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@babel/preset-env": "^7.1.6" - }, - "peerDependenciesMeta": { - "@babel/preset-env": { - "optional": true - } + "node": ">=4" } }, - "node_modules/jscodeshift/node_modules/ast-types": { - "version": "0.16.1", + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, "license": "MIT", - "dependencies": { - "tslib": "^2.0.1" - }, "engines": { - "node": ">=4" + "node": ">= 0.6" } }, - "node_modules/jscodeshift/node_modules/recast": { - "version": "0.23.9", + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "license": "MIT", "dependencies": { - "ast-types": "^0.16.1", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tiny-invariant": "^1.3.3", - "tslib": "^2.0.1" + "mime-db": "1.52.0" }, "engines": { - "node": ">= 4" + "node": ">= 0.6" } }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "node_modules/mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/miniflare": { + "version": "3.20241004.0", + "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-3.20241004.0.tgz", + "integrity": "sha512-QSSmCR2V1AJnnpYwlyLXobKLSGiY1FlAiZYULMdGgOUThV7HJeSysDxsmPmrH+D4GQbmUERnmDdB6M6Rrz7uPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "0.8.1", + "acorn": "^8.8.0", + "acorn-walk": "^8.2.0", + "capnp-ts": "^0.7.0", + "exit-hook": "^2.2.1", + "glob-to-regexp": "^0.4.1", + "stoppable": "^1.1.0", + "undici": "^5.28.4", + "workerd": "1.20241004.0", + "ws": "^8.17.1", + "youch": "^3.2.2", + "zod": "^3.22.3" + }, "bin": { - "jsesc": "bin/jsesc" + "miniflare": "bootstrap.js" }, "engines": { - "node": ">=4" + "node": ">=16.13" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-even-better-errors": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", - "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/json-schema-ref-resolver": { - "version": "1.0.1", + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "license": "MIT", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, - "license": "MIT" + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", "dev": true, "license": "MIT" }, - "node_modules/json5": { - "version": "1.0.2", - "dev": true, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "license": "MIT", "dependencies": { - "minimist": "^1.2.0" + "minimist": "^1.2.6" }, "bin": { - "json5": "lib/cli.js" + "mkdirp": "bin/cmd.js" } }, - "node_modules/jszip": { - "version": "3.10.1", + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "dev": true, - "license": "(MIT OR GPL-3.0-or-later)", - "dependencies": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } + "license": "MIT" }, - "node_modules/jszip/node_modules/isarray": { - "version": "1.0.0", - "dev": true, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, - "node_modules/jszip/node_modules/readable-stream": { - "version": "2.3.8", + "node_modules/mustache": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", "dev": true, "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "bin": { + "mustache": "bin/mustache" } }, - "node_modules/jszip/node_modules/safe-buffer": { - "version": "5.1.2", + "node_modules/mute-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", "dev": true, - "license": "MIT" + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, - "node_modules/jszip/node_modules/string_decoder": { - "version": "1.1.1", + "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, "license": "MIT", "dependencies": { - "safe-buffer": "~5.1.0" + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" } }, - "node_modules/keyv": { - "version": "4.5.4", - "dev": true, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/kind-of": { - "version": "6.0.3", + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/ky": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/ky/-/ky-0.33.3.tgz", - "integrity": "sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw==", + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT" + }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/ky?sponsor=1" + "node": ">= 0.4.0" } }, - "node_modules/lazystream": { - "version": "1.0.1", - "dev": true, + "node_modules/next": { + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.15.tgz", + "integrity": "sha512-h9ctmOokpoDphRvMGnwOJAedT6zKhwqyZML9mDtspgf4Rh3Pn7UTYKqePNoDvhsWBAO5GoPNYshnAUGIazVGmw==", "license": "MIT", + "peer": true, "dependencies": { - "readable-stream": "^2.0.5" + "@next/env": "14.2.15", + "@swc/helpers": "0.5.5", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "graceful-fs": "^4.2.11", + "postcss": "8.4.31", + "styled-jsx": "5.1.1" + }, + "bin": { + "next": "dist/bin/next" }, "engines": { - "node": ">= 0.6.3" + "node": ">=18.17.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "14.2.15", + "@next/swc-darwin-x64": "14.2.15", + "@next/swc-linux-arm64-gnu": "14.2.15", + "@next/swc-linux-arm64-musl": "14.2.15", + "@next/swc-linux-x64-gnu": "14.2.15", + "@next/swc-linux-x64-musl": "14.2.15", + "@next/swc-win32-arm64-msvc": "14.2.15", + "@next/swc-win32-ia32-msvc": "14.2.15", + "@next/swc-win32-x64-msvc": "14.2.15" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.41.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "sass": { + "optional": true + } } }, - "node_modules/lazystream/node_modules/isarray": { + "node_modules/node-domexception": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", "dev": true, - "license": "MIT" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } }, - "node_modules/lazystream/node_modules/readable-stream": { - "version": "2.3.8", + "node_modules/node-emoji": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz", + "integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==", "dev": true, "license": "MIT", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "@sindresorhus/is": "^4.6.0", + "char-regex": "^1.0.2", + "emojilib": "^2.4.0", + "skin-tone": "^2.0.0" + }, + "engines": { + "node": ">=18" } }, - "node_modules/lazystream/node_modules/safe-buffer": { - "version": "5.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/lazystream/node_modules/string_decoder": { - "version": "1.1.1", + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", "dev": true, "license": "MIT", "dependencies": { - "safe-buffer": "~5.1.0" + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" } }, - "node_modules/levn": { - "version": "0.4.1", + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, + "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { - "node": ">= 0.8.0" + "node": ">= 6.13.0" } }, - "node_modules/lie": { - "version": "3.3.0", + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "license": "MIT" + }, + "node_modules/node-request-interceptor": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/node-request-interceptor/-/node-request-interceptor-0.6.3.tgz", + "integrity": "sha512-8I2V7H2Ch0NvW7qWcjmS0/9Lhr0T6x7RD6PDirhvWEkUQvy83x8BA4haYMr09r/rig7hcgYSjYh6cd4U7G1vLA==", "dev": true, "license": "MIT", "dependencies": { - "immediate": "~3.0.5" + "@open-draft/until": "^1.0.3", + "debug": "^4.3.0", + "headers-utils": "^1.2.0", + "strict-event-emitter": "^0.1.0" } }, - "node_modules/light-my-request": { - "version": "5.13.0", - "license": "BSD-3-Clause", - "peer": true, + "node_modules/normalize-package-data": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "cookie": "^0.6.0", - "process-warning": "^3.0.0", - "set-cookie-parser": "^2.4.1" + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/lines-and-columns": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", - "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "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, "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/locate-app": { - "version": "2.4.21", - "resolved": "https://registry.npmjs.org/locate-app/-/locate-app-2.4.21.tgz", - "integrity": "sha512-ySSBwlUnVKoLgw39q8YaNtvklhaTMoVqBf2+CuY3hkOFuWubHAJ6NJuTjv+jfTV1FuOgKsigRdsYUIeVgKHvNA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://buymeacoffee.com/hejny" - }, - { - "type": "github", - "url": "https://github.com/hejny/locate-app/blob/main/README.md#%EF%B8%8F-contributing" - } - ], - "dependencies": { - "@promptbook/utils": "0.58.0", - "type-fest": "2.13.0", - "userhome": "1.0.0" + "node": ">=0.10.0" } }, - "node_modules/locate-app/node_modules/type-fest": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.13.0.tgz", - "integrity": "sha512-lPfAm42MxE4/456+QyIaaVBAwgpJb6xZ8PRu09utnhPdWwcyj9vgy6Sq0Z5yNbJ21EdxB5dRU/Qg8bsyAMtlcw==", + "node_modules/normalize-url": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", + "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", "dev": true, + "license": "MIT", "engines": { - "node": ">=12.20" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/locate-path": { + "node_modules/npm-run-path": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^5.0.0" + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash": { - "version": "4.17.21", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/lodash.pickby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", - "integrity": "sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q==", + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, - "license": "MIT" + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } }, - "node_modules/lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", + "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, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/lodash.zip": { - "version": "4.2.0", + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/logform": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.1.tgz", - "integrity": "sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA==", + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, "license": "MIT", - "dependencies": { - "@colors/colors": "1.6.0", - "@types/triple-beam": "^1.3.2", - "fecha": "^4.2.0", - "ms": "^2.1.1", - "safe-stable-stringify": "^2.3.1", - "triple-beam": "^1.3.0" - }, "engines": { - "node": ">= 12.0.0" + "node": ">= 0.4" } }, - "node_modules/logform/node_modules/@colors/colors": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", - "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, "engines": { - "node": ">=0.1.90" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/loglevel": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.1.tgz", - "integrity": "sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==", + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, "engines": { - "node": ">= 0.6.0" + "node": ">= 0.4" }, "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/loglevel-plugin-prefix": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", - "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", - "dev": true - }, - "node_modules/loose-envify": { - "version": "1.4.0", + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" }, - "bin": { - "loose-envify": "cli.js" + "engines": { + "node": ">= 0.4" } }, - "node_modules/lowercase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", - "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dependencies": { - "yallist": "^3.0.2" + "node_modules/ohash": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.4.tgz", + "integrity": "sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==", + "dev": true, + "license": "MIT" + }, + "node_modules/on-exit-leak-free": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/magic-string": { - "version": "0.25.9", + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, "license": "MIT", "dependencies": { - "sourcemap-codec": "^1.4.8" + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" } }, - "node_modules/make-dir": { - "version": "2.1.0", + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, "license": "MIT", "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { - "node": ">=6" + "node": ">= 0.8.0" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "5.7.2", - "license": "ISC", - "bin": { - "semver": "bin/semver" + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/map-stream": { - "version": "0.1.0", - "dev": true - }, - "node_modules/marked": { - "version": "9.1.6", + "node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", "dev": true, "license": "MIT", - "bin": { - "marked": "bin/marked.js" - }, "engines": { - "node": ">= 16" + "node": ">=12.20" } }, - "node_modules/marked-terminal": { - "version": "6.2.0", + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "license": "MIT", "dependencies": { - "ansi-escapes": "^6.2.0", - "cardinal": "^2.1.1", - "chalk": "^5.3.0", - "cli-table3": "^0.6.3", - "node-emoji": "^2.1.3", - "supports-hyperlinks": "^3.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=10" }, - "peerDependencies": { - "marked": ">=1 <12" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/marked-terminal/node_modules/chalk": { - "version": "5.3.0", + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/media-typer": { - "version": "0.3.0", - "dev": true, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=6" } }, - "node_modules/merge-descriptors": { - "version": "1.0.1", + "node_modules/pac-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz", + "integrity": "sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==", "dev": true, - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", "license": "MIT", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.5", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.4" + }, "engines": { - "node": ">= 8" + "node": ">= 14" } }, - "node_modules/methods": { - "version": "1.1.2", + "node_modules/pac-proxy-agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, "engines": { - "node": ">= 0.6" + "node": ">= 14" } }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "node_modules/pac-proxy-agent/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dev": true, + "license": "MIT", "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" + "agent-base": "^7.0.2", + "debug": "4" }, "engines": { - "node": ">=8.6" + "node": ">= 14" } }, - "node_modules/mime-db": { - "version": "1.52.0", + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", "dev": true, "license": "MIT", + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, "engines": { - "node": ">= 0.6" + "node": ">= 14" } }, - "node_modules/mime-types": { - "version": "2.1.35", + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true, + "license": "(MIT AND Zlib)" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "callsites": "^3.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">=6" } }, - "node_modules/mimic-response": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", - "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "node_modules/parse-json": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" + }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/miniflare": { - "version": "3.20240821.0", - "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-3.20240821.0.tgz", - "integrity": "sha512-4BhLGpssQxM/O6TZmJ10GkT3wBJK6emFkZ3V87/HyvQmVt8zMxEBvyw5uv6kdtp+7F54Nw6IKFJjPUL8rFVQrQ==", + "node_modules/parse-json/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "0.8.1", - "acorn": "^8.8.0", - "acorn-walk": "^8.2.0", - "capnp-ts": "^0.7.0", - "exit-hook": "^2.2.1", - "glob-to-regexp": "^0.4.1", - "stoppable": "^1.1.0", - "undici": "^5.28.4", - "workerd": "1.20240821.1", - "ws": "^8.17.1", - "youch": "^3.2.2", - "zod": "^3.22.3" - }, - "bin": { - "miniflare": "bootstrap.js" - }, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=16.13" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/miniflare/node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" + "node": ">=18" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true, + "license": "MIT" + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" + "parse5": "^7.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/minimist": { - "version": "1.2.8", + "node_modules/parse5-parser-stream/node_modules/parse5": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.0.tgz", + "integrity": "sha512-ZkDsAOcxsUMZ4Lz5fVciOehNcJ+Gb8gTzcA4yl3wnc273BAybYWrQ+Ks/OjCjSEpjvQkDSeZbybK9qj2VHHdGA==", + "dev": true, "license": "MIT", + "dependencies": { + "entities": "^4.5.0" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/minipass": { - "version": "7.1.2", + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">= 0.8" } }, - "node_modules/mitt": { - "version": "3.0.0", + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/mkdirp": { - "version": "0.5.6", + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", + "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, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/ms": { - "version": "2.1.2", + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true, "license": "MIT" }, - "node_modules/mustache": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", - "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", - "dev": true, - "bin": { - "mustache": "bin/mustache" - } - }, - "node_modules/mute-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.7", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/natural-compare": { - "version": "1.4.0", + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/path-to-regexp": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", "dev": true, "license": "MIT" }, - "node_modules/negotiator": { - "version": "0.6.3", + "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, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/neo-async": { - "version": "2.6.2", + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true, "license": "MIT" }, - "node_modules/netmask": { - "version": "2.0.2", + "node_modules/pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4.0" + "license": [ + "MIT", + "Apache2" + ], + "dependencies": { + "through": "~2.3" } }, - "node_modules/next": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/next/-/next-14.2.5.tgz", - "integrity": "sha512-0f8aRfBVL+mpzfBjYfQuLWh2WyAwtJXCRfkPF4UJ5qd2YwrHczsrSzXU4tRMV0OAxR8ZJZWPFn6uhSC56UTsLA==", - "peer": true, - "dependencies": { - "@next/env": "14.2.5", - "@swc/helpers": "0.5.5", - "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001579", - "graceful-fs": "^4.2.11", - "postcss": "8.4.31", - "styled-jsx": "5.1.1" - }, - "bin": { - "next": "dist/bin/next" - }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", "engines": { - "node": ">=18.17.0" - }, - "optionalDependencies": { - "@next/swc-darwin-arm64": "14.2.5", - "@next/swc-darwin-x64": "14.2.5", - "@next/swc-linux-arm64-gnu": "14.2.5", - "@next/swc-linux-arm64-musl": "14.2.5", - "@next/swc-linux-x64-gnu": "14.2.5", - "@next/swc-linux-x64-musl": "14.2.5", - "@next/swc-win32-arm64-msvc": "14.2.5", - "@next/swc-win32-ia32-msvc": "14.2.5", - "@next/swc-win32-x64-msvc": "14.2.5" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "@playwright/test": "^1.41.2", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "sass": "^1.3.0" + "node": ">=8.6" }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "@playwright/test": { - "optional": true - }, - "sass": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "license": "MIT", "engines": { - "node": ">=10.5.0" + "node": ">=6" } }, - "node_modules/node-emoji": { - "version": "2.1.3", - "dev": true, + "node_modules/pino": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-9.4.0.tgz", + "integrity": "sha512-nbkQb5+9YPhQRz/BeQmrWpEknAaqjpAqRK8NwJpmrX/JHu7JuZC5G1CeAwJDJfGes4h+YihC6in3Q2nGb+Y09w==", "license": "MIT", + "peer": true, "dependencies": { - "@sindresorhus/is": "^4.6.0", - "char-regex": "^1.0.2", - "emojilib": "^2.4.0", - "skin-tone": "^2.0.0" + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^1.2.0", + "pino-std-serializers": "^7.0.0", + "process-warning": "^4.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^4.0.1", + "thread-stream": "^3.0.0" }, - "engines": { - "node": ">=18" + "bin": { + "pino": "bin.js" } }, - "node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "dev": true, + "node_modules/pino-abstract-transport": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz", + "integrity": "sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==", + "license": "MIT", + "peer": true, "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" + "readable-stream": "^4.0.0", + "split2": "^4.0.0" } }, - "node_modules/node-forge": { - "version": "1.3.1", - "dev": true, - "license": "(BSD-3-Clause OR GPL-2.0)", - "engines": { - "node": ">= 6.13.0" - } + "node_modules/pino-std-serializers": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz", + "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==", + "license": "MIT", + "peer": true }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + "node_modules/pino/node_modules/process-warning": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.0.tgz", + "integrity": "sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==", + "license": "MIT", + "peer": true }, - "node_modules/node-request-interceptor": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/node-request-interceptor/-/node-request-interceptor-0.6.3.tgz", - "integrity": "sha512-8I2V7H2Ch0NvW7qWcjmS0/9Lhr0T6x7RD6PDirhvWEkUQvy83x8BA4haYMr09r/rig7hcgYSjYh6cd4U7G1vLA==", - "dev": true, + "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==", "license": "MIT", - "dependencies": { - "@open-draft/until": "^1.0.3", - "debug": "^4.3.0", - "headers-utils": "^1.2.0", - "strict-event-emitter": "^0.1.0" + "engines": { + "node": ">= 6" } }, - "node_modules/normalize-package-data": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", - "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "license": "MIT", "dependencies": { - "hosted-git-info": "^7.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "find-up": "^3.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/normalize-path": { + "node_modules/pkg-dir/node_modules/find-up": { "version": "3.0.0", - "dev": true, + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", - "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", - "dev": true, - "engines": { - "node": ">=14.16" + "dependencies": { + "locate-path": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=6" } }, - "node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dev": true, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "license": "MIT", "dependencies": { - "path-key": "^4.0.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, "engines": { - "node": ">=12" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "license": "MIT", "dependencies": { - "boolbase": "^1.0.0" + "p-limit": "^2.0.0" }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=6" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "dev": true, + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=4" } }, - "node_modules/object.assign": { - "version": "4.1.5", + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "dev": true, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", + "peer": true, "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^10 || ^12 || >=14" } }, - "node_modules/object.groupby": { - "version": "1.0.3", + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, "engines": { - "node": ">= 0.4" + "node": ">= 0.8.0" } }, - "node_modules/object.values": { - "version": "1.2.0", + "node_modules/prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "bin": { + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">= 0.4" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ohash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.3.tgz", - "integrity": "sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==", - "dev": true - }, - "node_modules/on-exit-leak-free": { - "version": "2.1.2", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=14.0.0" + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/on-finished": { - "version": "2.4.1", + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "license": "MIT", "dependencies": { - "ee-first": "1.1.1" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "license": "ISC", - "dependencies": { - "wrappy": "1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/optionator": { - "version": "0.9.4", + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, "engines": { - "node": ">= 0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "node_modules/pretty-ms": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.1.0.tgz", + "integrity": "sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==", "dev": true, "license": "MIT", + "dependencies": { + "parse-ms": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-cancelable": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", - "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "node_modules/printable-characters": { + "version": "1.0.42", + "resolved": "https://registry.npmjs.org/printable-characters/-/printable-characters-1.0.42.tgz", + "integrity": "sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==", "dev": true, + "license": "Unlicense" + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", "engines": { - "node": ">=12.20" + "node": ">= 0.6.0" } }, - "node_modules/p-limit": { - "version": "3.1.0", + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true, + "license": "MIT" + }, + "node_modules/process-warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", + "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==", "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "peer": true }, - "node_modules/p-locate": { - "version": "5.0.0", + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.4.0" } }, - "node_modules/p-try": { - "version": "2.2.0", + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, "engines": { - "node": ">=6" + "node": ">= 0.10" } }, - "node_modules/pac-proxy-agent": { - "version": "7.0.1", + "node_modules/proxy-agent": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", + "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", "dev": true, "license": "MIT", "dependencies": { - "@tootallnate/quickjs-emscripten": "^0.23.0", "agent-base": "^7.0.2", "debug": "^4.3.4", - "get-uri": "^6.0.1", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.2", - "pac-resolver": "^7.0.0", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.3", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", "socks-proxy-agent": "^8.0.2" }, "engines": { "node": ">= 14" } }, - "node_modules/pac-proxy-agent/node_modules/agent-base": { + "node_modules/proxy-agent/node_modules/agent-base": { "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, "license": "MIT", "dependencies": { @@ -12024,8 +11918,10 @@ "node": ">= 14" } }, - "node_modules/pac-proxy-agent/node_modules/https-proxy-agent": { - "version": "7.0.4", + "node_modules/proxy-agent/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", "dev": true, "license": "MIT", "dependencies": { @@ -12036,757 +11932,956 @@ "node": ">= 14" } }, - "node_modules/pac-resolver": { - "version": "7.0.1", + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true, + "license": "MIT" + }, + "node_modules/ps-tree": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz", + "integrity": "sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==", "dev": true, "license": "MIT", "dependencies": { - "degenerator": "^5.0.0", - "netmask": "^2.0.2" + "event-stream": "=3.3.4" + }, + "bin": { + "ps-tree": "bin/ps-tree.js" }, "engines": { - "node": ">= 14" + "node": ">= 0.10" } }, - "node_modules/package-json-from-dist": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", - "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", - "dev": true - }, - "node_modules/pako": { - "version": "1.0.11", + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", "dev": true, - "license": "(MIT AND Zlib)" + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } }, - "node_modules/parent-module": { - "version": "1.0.1", + "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, "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, "engines": { "node": ">=6" } }, - "node_modules/parse-json": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", - "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", + "node_modules/puppeteer-core": { + "version": "21.11.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-21.11.0.tgz", + "integrity": "sha512-ArbnyA3U5SGHokEvkfWjW+O8hOxV1RSJxOgriX/3A4xZRqixt9ZFHD0yPgZQF05Qj0oAqi8H/7stDorjoHY90Q==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/code-frame": "^7.21.4", - "error-ex": "^1.3.2", - "json-parse-even-better-errors": "^3.0.0", - "lines-and-columns": "^2.0.3", - "type-fest": "^3.8.0" + "@puppeteer/browsers": "1.9.1", + "chromium-bidi": "0.5.8", + "cross-fetch": "4.0.0", + "debug": "4.3.4", + "devtools-protocol": "0.0.1232444", + "ws": "8.16.0" }, "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=16.13.2" } }, - "node_modules/parse-json/node_modules/type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "node_modules/puppeteer-core/node_modules/@puppeteer/browsers": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.9.1.tgz", + "integrity": "sha512-PuvK6xZzGhKPvlx3fpfdM2kYY3P/hB1URtK8wA7XUJ6prn6pp22zvJHu48th0SGcHL9SutbPHrFuQgfXTFobWA==", "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=14.16" + "license": "Apache-2.0", + "dependencies": { + "debug": "4.3.4", + "extract-zip": "2.0.1", + "progress": "2.0.3", + "proxy-agent": "6.3.1", + "tar-fs": "3.0.4", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=16.3.0" } }, - "node_modules/parse-ms": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", - "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "node_modules/puppeteer-core/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, "engines": { - "node": ">=18" + "node": ">= 14" + } + }, + "node_modules/puppeteer-core/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=12" } }, - "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "node_modules/puppeteer-core/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, "license": "MIT", "dependencies": { - "entities": "^4.4.0" + "ms": "2.1.2" }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "node_modules/puppeteer-core/node_modules/devtools-protocol": { + "version": "0.0.1232444", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1232444.tgz", + "integrity": "sha512-pM27vqEfxSxRkTMnF+XCmxSEb6duO5R+t8A9DEEJgy4Wz2RVanje2mmj99B6A3zv2r/qGfYlOvYznUhuokizmg==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/puppeteer-core/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", "dev": true, "license": "MIT", "dependencies": { - "domhandler": "^5.0.2", - "parse5": "^7.0.0" + "agent-base": "^7.0.2", + "debug": "4" }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" + "engines": { + "node": ">= 14" } }, - "node_modules/parse5-parser-stream": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", - "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "node_modules/puppeteer-core/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/puppeteer-core/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, + "license": "MIT" + }, + "node_modules/puppeteer-core/node_modules/proxy-agent": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.1.tgz", + "integrity": "sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==", "dev": true, "license": "MIT", "dependencies": { - "parse5": "^7.0.0" + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" + "engines": { + "node": ">= 14" } }, - "node_modules/parseurl": { - "version": "1.3.3", + "node_modules/puppeteer-core/node_modules/tar-fs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.8" + "dependencies": { + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^3.1.5" } }, - "node_modules/path-exists": { - "version": "4.0.0", + "node_modules/puppeteer-core/node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", + "node_modules/puppeteer-core/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/path-key": { - "version": "3.1.1", + "node_modules/puppeteer-core/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "dev": true, - "license": "MIT" - }, - "node_modules/path-scurry": { - "version": "1.11.1", + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "BSD-3-Clause", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "side-channel": "^1.0.6" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": ">=0.6" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.2", - "dev": true, - "license": "ISC", - "engines": { - "node": "14 || >=16.14" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/path-to-regexp": { - "version": "0.1.7", + "node_modules/query-selector-shadow-dom": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.1.tgz", + "integrity": "sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==", "dev": true, "license": "MIT" }, - "node_modules/path-type": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", - "dev": true - }, - "node_modules/pause-stream": { - "version": "0.0.11", - "dev": true, - "license": [ - "MIT", - "Apache2" + "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==", + "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": { - "through": "~2.3" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "dev": true, "license": "MIT" }, - "node_modules/picocolors": { + "node_modules/queue-tick": { "version": "1.0.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "license": "MIT" }, - "node_modules/picomatch": { - "version": "2.3.1", + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", + "license": "MIT", + "peer": true + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pify": { - "version": "4.0.1", + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 0.6" } }, - "node_modules/pino": { - "version": "9.1.0", + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "atomic-sleep": "^1.0.0", - "fast-redact": "^3.1.1", - "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "^1.2.0", - "pino-std-serializers": "^7.0.0", - "process-warning": "^3.0.0", - "quick-format-unescaped": "^4.0.3", - "real-require": "^0.2.0", - "safe-stable-stringify": "^2.3.1", - "sonic-boom": "^4.0.1", - "thread-stream": "^3.0.0" + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, - "bin": { - "pino": "bin.js" + "engines": { + "node": ">= 0.8" } }, - "node_modules/pino-abstract-transport": { - "version": "1.2.0", + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", "peer": true, "dependencies": { - "readable-stream": "^4.0.0", - "split2": "^4.0.0" + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/pino-std-serializers": { - "version": "7.0.0", + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "license": "MIT", - "peer": true + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } }, - "node_modules/pirates": { - "version": "4.0.6", + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/read-pkg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", + "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", + "dev": true, "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^6.0.0", + "parse-json": "^7.0.0", + "type-fest": "^4.2.0" + }, "engines": { - "node": ">= 6" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pkg-dir": { - "version": "3.0.0", + "node_modules/read-pkg-up": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-10.1.0.tgz", + "integrity": "sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==", + "dev": true, "license": "MIT", "dependencies": { - "find-up": "^3.0.0" + "find-up": "^6.3.0", + "read-pkg": "^8.1.0", + "type-fest": "^4.2.0" }, "engines": { - "node": ">=6" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "3.0.0", + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^3.0.0" + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" }, "engines": { - "node": ">=6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "3.0.0", + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^6.0.0" }, "engines": { - "node": ">=6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "yocto-queue": "^1.0.0" }, "engines": { - "node": ">=6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "3.0.0", + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^2.0.0" + "p-limit": "^4.0.0" }, "engines": { - "node": ">=6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pkg-dir/node_modules/path-exists": { - "version": "3.0.0", + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz", + "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==", "dev": true, - "license": "MIT", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">= 0.4" - } - }, - "node_modules/postcss": { - "version": "8.4.31", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "node": ">=16" }, - "engines": { - "node": "^10 || ^12 || >=14" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/prelude-ls": { - "version": "1.2.1", + "node_modules/read-pkg-up/node_modules/yocto-queue": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.8.0" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "node_modules/read-pkg/node_modules/type-fest": { + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz", + "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==", "dev": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=14" + "node": ">=16" }, "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, + "node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/pretty-ms": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.1.0.tgz", - "integrity": "sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==", + "node_modules/readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", "dev": true, "license": "MIT", - "dependencies": { - "parse-ms": "^4.0.0" - }, "engines": { - "node": ">=18" + "node": ">= 14.16.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, - "node_modules/printable-characters": { - "version": "1.0.42", - "resolved": "https://registry.npmjs.org/printable-characters/-/printable-characters-1.0.42.tgz", - "integrity": "sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==", - "dev": true - }, - "node_modules/process": { - "version": "0.11.10", + "node_modules/real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", "license": "MIT", + "peer": true, "engines": { - "node": ">= 0.6.0" + "node": ">= 12.13.0" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/process-warning": { - "version": "3.0.0", - "license": "MIT", - "peer": true - }, - "node_modules/progress": { - "version": "2.0.3", + "node_modules/recast": { + "version": "0.20.5", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz", + "integrity": "sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==", "dev": true, "license": "MIT", + "dependencies": { + "ast-types": "0.14.2", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tslib": "^2.0.1" + }, "engines": { - "node": ">=0.4.0" + "node": ">= 4" } }, - "node_modules/proxy-addr": { - "version": "2.0.7", + "node_modules/recursive-readdir": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "dev": true, "license": "MIT", "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" + "minimatch": "^3.0.5" }, "engines": { - "node": ">= 0.10" + "node": ">=6.0.0" } }, - "node_modules/proxy-agent": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.1.tgz", - "integrity": "sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==", + "node_modules/recursive-readdir/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.2", - "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.0.1", - "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.2" - }, - "engines": { - "node": ">= 14" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/proxy-agent/node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "node_modules/recursive-readdir/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { - "debug": "^4.3.4" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 14" + "node": "*" } }, - "node_modules/proxy-agent/node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "node_modules/regexp.prototype.flags": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", "dev": true, + "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.2" }, "engines": { - "node": ">= 14" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/proxy-agent/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "dev": true, - "license": "MIT" + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/ps-tree": { - "version": "1.2.0", + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "license": "MIT", "dependencies": { - "event-stream": "=3.3.4" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { - "ps-tree": "bin/ps-tree.js" + "resolve": "bin/resolve" }, - "engines": { - "node": ">= 0.10" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pump": { - "version": "3.0.0", + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "engines": { + "node": ">=4" } }, - "node_modules/punycode": { - "version": "2.3.1", + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/puppeteer-core": { - "version": "20.9.0", + "node_modules/responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@puppeteer/browsers": "1.4.6", - "chromium-bidi": "0.4.16", - "cross-fetch": "4.0.0", - "debug": "4.3.4", - "devtools-protocol": "0.0.1147663", - "ws": "8.13.0" + "lowercase-keys": "^3.0.0" }, "engines": { - "node": ">=16.3.0" - }, - "peerDependencies": { - "typescript": ">= 4.7.4" + "node": ">=14.16" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/puppeteer-core/node_modules/@puppeteer/browsers": { - "version": "1.4.6", + "node_modules/resq": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/resq/-/resq-1.11.0.tgz", + "integrity": "sha512-G10EBz+zAAy3zUd/CDoBbXRL6ia9kOo3xRHrMDsHljI0GDkhYlyjwoCx5+3eCC4swi1uCoZQhskuJkj7Gp57Bw==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "debug": "4.3.4", - "extract-zip": "2.0.1", - "progress": "2.0.3", - "proxy-agent": "6.3.0", - "tar-fs": "3.0.4", - "unbzip2-stream": "1.4.3", - "yargs": "17.7.1" - }, - "bin": { - "browsers": "lib/cjs/main-cli.js" - }, - "engines": { - "node": ">=16.3.0" - }, - "peerDependencies": { - "typescript": ">= 4.7.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "fast-deep-equal": "^2.0.1" } }, - "node_modules/puppeteer-core/node_modules/agent-base": { - "version": "7.1.1", + "node_modules/resq/node_modules/fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==", "dev": true, + "license": "MIT" + }, + "node_modules/ret": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.4.3.tgz", + "integrity": "sha512-0f4Memo5QP7WQyUEAYUO3esD/XjOc3Zjjg5CPsAq1p8sIu0XPeMbHJemKA0BO7tV0X7+A0FoEpbmHXWxPyD3wQ==", "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, + "peer": true, "engines": { - "node": ">= 14" + "node": ">=10" } }, - "node_modules/puppeteer-core/node_modules/debug": { - "version": "4.3.4", - "dev": true, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", "license": "MIT", + "peer": true + }, + "node_modules/rgb2hex": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/rgb2hex/-/rgb2hex-0.2.5.tgz", + "integrity": "sha512-22MOP1Rh7sAo1BZpDG6R5RFYzR2lYEgwq7HEmyW2qcsOqR2lQKmn+O//xV3YG/0rrhMC6KVX2hU+ZXuaw9a5bw==", + "dev": true, + "license": "MIT" + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", "dependencies": { - "ms": "2.1.2" + "glob": "^7.1.3" }, - "engines": { - "node": ">=6.0" + "bin": { + "rimraf": "bin.js" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/puppeteer-core/node_modules/devtools-protocol": { - "version": "0.0.1147663", + "node_modules/rollup-plugin-inject": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz", + "integrity": "sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==", + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject.", "dev": true, - "license": "BSD-3-Clause" + "license": "MIT", + "dependencies": { + "estree-walker": "^0.6.1", + "magic-string": "^0.25.3", + "rollup-pluginutils": "^2.8.1" + } }, - "node_modules/puppeteer-core/node_modules/https-proxy-agent": { - "version": "7.0.4", + "node_modules/rollup-plugin-inject/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" + "sourcemap-codec": "^1.4.8" } }, - "node_modules/puppeteer-core/node_modules/lru-cache": { - "version": "7.18.3", + "node_modules/rollup-plugin-node-polyfills": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz", + "integrity": "sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==", "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" + "license": "MIT", + "dependencies": { + "rollup-plugin-inject": "^3.0.0" } }, - "node_modules/puppeteer-core/node_modules/proxy-agent": { - "version": "6.3.0", + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.0.0", - "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.1" - }, - "engines": { - "node": ">= 14" + "estree-walker": "^0.6.1" } }, - "node_modules/puppeteer-core/node_modules/ws": { - "version": "8.13.0", + "node_modules/run-async": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", + "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", "dev": true, "license": "MIT", "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true + "node": ">=0.12.0" + } + }, + "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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "utf-8-validate": { - "optional": true + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" } }, - "node_modules/puppeteer-core/node_modules/yargs": { - "version": "17.7.1", + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" + "tslib": "^2.1.0" } }, - "node_modules/qs": { - "version": "6.11.0", + "node_modules/safaridriver": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/safaridriver/-/safaridriver-0.1.2.tgz", + "integrity": "sha512-4R309+gWflJktzPXBQCobbWEHlzC4aK3a+Ov3tz2Ib2aBxiwd11phkdIBH1l0EO22x24CJMUQkpKFumRriCSRg==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT" + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "license": "MIT", "dependencies": { - "side-channel": "^1.0.4" + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" }, "engines": { - "node": ">=0.6" + "node": ">=0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/query-selector-shadow-dom": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/queue-microtask": { - "version": "1.2.3", + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { "type": "github", @@ -12803,603 +12898,706 @@ ], "license": "MIT" }, - "node_modules/queue-tick": { - "version": "1.0.1", - "license": "MIT" - }, - "node_modules/quick-format-unescaped": { - "version": "4.0.4", - "license": "MIT", - "peer": true - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/react": { - "version": "18.3.1", + "node_modules/safe-regex2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-3.1.0.tgz", + "integrity": "sha512-RAAZAGbap2kBfbVhvmnTFv73NWLMvDGOITFYTZBAaY8eR+Ir4ef7Up/e7amo+y1+AH+3PtLkrt9mvcTsG9LXug==", "license": "MIT", "peer": true, "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" + "ret": "~0.4.0" } }, - "node_modules/react-dom": { - "version": "18.3.1", + "node_modules/safe-stable-stringify": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", "license": "MIT", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.2" - }, - "peerDependencies": { - "react": "^18.3.1" + "engines": { + "node": ">=10" } }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, "license": "MIT" }, - "node_modules/read-pkg": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", - "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", - "dev": true, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "license": "MIT", + "peer": true, "dependencies": { - "@types/normalize-package-data": "^2.4.1", - "normalize-package-data": "^6.0.0", - "parse-json": "^7.0.0", - "type-fest": "^4.2.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "loose-envify": "^1.1.0" } }, - "node_modules/read-pkg-up": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-10.1.0.tgz", - "integrity": "sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^6.3.0", - "read-pkg": "^8.1.0", - "type-fest": "^4.2.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/secure-json-parse": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==", + "license": "BSD-3-Clause", + "peer": true }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" + "@types/node-forge": "^1.3.0", + "node-forge": "^1" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^6.0.0" + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, "license": "MIT", "dependencies": { - "yocto-queue": "^1.0.0" + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8.0" } }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "ms": "2.0.0" } }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } + "license": "MIT" }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "4.26.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz", - "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==", + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8" } }, - "node_modules/read-pkg-up/node_modules/yocto-queue": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "node_modules/serialize-error": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-11.0.3.tgz", + "integrity": "sha512-2G2y++21dhj2R7iHAdd0FIzjGwuKZld+7Pl/bTU6YIkrC2ZMbVUjm+luj6A6V34Rv9XfKJDKpTWu9W4Gse1D9g==", "dev": true, "license": "MIT", + "dependencies": { + "type-fest": "^2.12.2" + }, "engines": { - "node": ">=12.20" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "4.26.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz", - "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==", + "node_modules/serialize-error/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=16" + "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/readable-stream": { - "version": "4.5.2", + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "dev": true, "license": "MIT", "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 0.8.0" } }, - "node_modules/readdir-glob": { - "version": "1.1.3", + "node_modules/set-cookie-parser": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.0.tgz", + "integrity": "sha512-lXLOiqpkUumhRdFF3k1osNXCy9akgx/dyPZ5p8qAg9seJzXr5ZrlqZuWIMuY6ejOsVLE6flJ5/h3lsn57fQ/PQ==", + "license": "MIT", + "peer": true + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "minimatch": "^5.1.0" + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/readdir-glob/node_modules/minimatch": { - "version": "5.1.6", + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" } }, - "node_modules/readdirp": { - "version": "3.6.0", + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true, + "license": "MIT" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true, + "license": "ISC" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "license": "MIT", "dependencies": { - "picomatch": "^2.2.1" + "kind-of": "^6.0.2" }, "engines": { - "node": ">=8.10.0" + "node": ">=8" } }, - "node_modules/real-require": { - "version": "0.2.0", + "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, "license": "MIT", - "peer": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, "engines": { - "node": ">= 12.13.0" + "node": ">=8" } }, - "node_modules/recast": { - "version": "0.20.5", + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, "license": "MIT", "dependencies": { - "ast-types": "0.14.2", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tslib": "^2.0.1" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" }, "engines": { - "node": ">= 4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/recursive-readdir": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", - "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "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==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/skin-tone": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", + "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", "dev": true, "license": "MIT", "dependencies": { - "minimatch": "^3.0.5" + "unicode-emoji-modifier-base": "^1.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=8" } }, - "node_modules/recursive-readdir/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": ">=8" } }, - "node_modules/recursive-readdir/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, - "license": "ISC", + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" }, "engines": { - "node": "*" + "node": ">= 10.0.0", + "npm": ">= 3.0.0" } }, - "node_modules/redeyed": { - "version": "2.1.1", + "node_modules/socks-proxy-agent": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", + "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", "dev": true, "license": "MIT", "dependencies": { - "esprima": "~4.0.0" + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" } }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.2", + "node_modules/socks-proxy-agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" + "debug": "^4.3.4" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 14" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "dev": true, + "node_modules/sonic-boom": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.1.0.tgz", + "integrity": "sha512-NGipjjRicyJJ03rPiZCJYjwlsuP2d1/5QUviozRXC7S3WdVWNK5e3Ojieb9CCyfhq2UC+3+SRd9nG3I2lPRvUw==", "license": "MIT", + "peer": true, + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "license": "MIT", + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", "peer": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/resolve": { - "version": "1.22.8", - "dev": true, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", + "dev": true, + "license": "MIT" + }, + "node_modules/spacetrim": { + "version": "0.11.39", + "resolved": "https://registry.npmjs.org/spacetrim/-/spacetrim-0.11.39.tgz", + "integrity": "sha512-S/baW29azJ7py5ausQRE2S6uEDQnlxgMHOEEq4V770ooBDD1/9kZnxRcco/tjZYuDuqYXblCk/r3N13ZmvHZ2g==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://buymeacoffee.com/hejny" + }, + { + "type": "github", + "url": "https://github.com/hejny/spacetrim/blob/main/README.md#%EF%B8%8F-contributing" + } + ], + "license": "SEE LICENSE IN LICENSE" + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true + "node_modules/spdx-license-ids": { + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", + "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", + "dev": true, + "license": "CC0-1.0" }, - "node_modules/resolve-from": { - "version": "4.0.0", + "node_modules/split": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==", "dev": true, "license": "MIT", + "dependencies": { + "through": "2" + }, "engines": { - "node": ">=4" + "node": "*" } }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "license": "ISC", + "engines": { + "node": ">= 10.x" } }, - "node_modules/resolve.exports": { - "version": "2.0.2", + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, "engines": { "node": ">=10" } }, - "node_modules/responselike": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", - "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, - "dependencies": { - "lowercase-keys": "^3.0.0" - }, + "license": "MIT", "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/resq": { - "version": "1.11.0", + "node_modules/stacktracey": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/stacktracey/-/stacktracey-2.1.8.tgz", + "integrity": "sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==", "dev": true, - "license": "MIT", + "license": "Unlicense", "dependencies": { - "fast-deep-equal": "^2.0.1" + "as-table": "^1.0.36", + "get-source": "^2.0.12" } }, - "node_modules/resq/node_modules/fast-deep-equal": { + "node_modules/statuses": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, - "license": "MIT" - }, - "node_modules/ret": { - "version": "0.4.3", "license": "MIT", - "peer": true, "engines": { - "node": ">=10" + "node": ">= 0.8" } }, - "node_modules/reusify": { - "version": "1.0.4", + "node_modules/stoppable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", + "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", + "dev": true, "license": "MIT", "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": ">=4", + "npm": ">=6" } }, - "node_modules/rfdc": { - "version": "1.3.1", - "license": "MIT", - "peer": true - }, - "node_modules/rgb2hex": { - "version": "0.2.5", - "dev": true, - "license": "MIT" - }, - "node_modules/rimraf": { - "version": "3.0.2", + "node_modules/stream-buffers": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.3.tgz", + "integrity": "sha512-pqMqwQCso0PBJt2PQmDO0cFj0lyqmiwOMiMSkVtRokl7e+ZTRYgDHKnuZNbqjiJXgsg4nuqtD/zxuo9KqTp0Yw==", "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "license": "Unlicense", + "engines": { + "node": ">= 0.10.0" } }, - "node_modules/rollup-plugin-inject": { - "version": "3.0.2", + "node_modules/stream-combiner": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==", "dev": true, "license": "MIT", "dependencies": { - "estree-walker": "^0.6.1", - "magic-string": "^0.25.3", - "rollup-pluginutils": "^2.8.1" + "duplexer": "~0.1.1" } }, - "node_modules/rollup-plugin-node-polyfills": { - "version": "0.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "rollup-plugin-inject": "^3.0.0" + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "peer": true, + "engines": { + "node": ">=10.0.0" } }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "dev": true, + "node_modules/streamx": { + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz", + "integrity": "sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==", "license": "MIT", "dependencies": { - "estree-walker": "^0.6.1" + "fast-fifo": "^1.3.2", + "queue-tick": "^1.0.1", + "text-decoder": "^1.1.0" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" } }, - "node_modules/run-async": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", - "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", + "node_modules/strict-event-emitter": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.1.0.tgz", + "integrity": "sha512-8hSYfU+WKLdNcHVXJ0VxRXiPESalzRe7w1l8dg9+/22Ry+iZQUoQuoJ27R30GMD1TiyYINWsIEGY05WrskhSKw==", "dev": true, + "license": "MIT" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "license": "MIT", - "engines": { - "node": ">=0.12.0" + "dependencies": { + "safe-buffer": "~5.2.0" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "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/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, "license": "MIT", "dependencies": { - "queue-microtask": "^1.2.2" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "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, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "tslib": "^2.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/safaridriver": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/safaridriver/-/safaridriver-0.1.2.tgz", - "integrity": "sha512-4R309+gWflJktzPXBQCobbWEHlzC4aK3a+Ov3tz2Ib2aBxiwd11phkdIBH1l0EO22x24CJMUQkpKFumRriCSRg==", - "dev": true - }, - "node_modules/safe-array-concat": { - "version": "1.1.2", + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=0.4" + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/safe-regex-test": { - "version": "1.0.3", + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -13408,717 +13606,1031 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-regex2": { - "version": "3.1.0", + "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, "license": "MIT", - "peer": true, "dependencies": { - "ret": "~0.4.0" + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/safe-stable-stringify": { - "version": "2.4.3", + "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, "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "node_modules/scheduler": { - "version": "0.23.2", + "node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0" + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/secure-json-parse": { - "version": "2.7.0", - "license": "BSD-3-Clause", - "peer": true + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/selfsigned": { - "version": "2.4.1", + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "dev": true, + "license": "MIT" + }, + "node_modules/styled-jsx": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", "license": "MIT", + "peer": true, "dependencies": { - "@types/node-forge": "^1.3.0", - "node-forge": "^1" + "client-only": "0.0.1" }, "engines": { - "node": ">=10" + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } } }, - "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "bin": { - "semver": "bin/semver.js" + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/send": { - "version": "0.18.0", + "node_modules/supports-hyperlinks": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", + "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", "dev": true, "license": "MIT", "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, "license": "MIT", - "dependencies": { - "ms": "2.0.0" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/send/node_modules/mime": { - "version": "1.6.0", + "node_modules/tar-fs": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", + "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", "dev": true, "license": "MIT", - "bin": { - "mime": "cli.js" + "dependencies": { + "pump": "^3.0.0", + "tar-stream": "^3.1.5" }, - "engines": { - "node": ">=4" + "optionalDependencies": { + "bare-fs": "^2.1.1", + "bare-path": "^2.1.0" } }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "dev": true, - "license": "MIT" + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "license": "MIT", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } }, - "node_modules/serialize-error": { - "version": "11.0.3", - "dev": true, + "node_modules/temp": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", + "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", "license": "MIT", "dependencies": { - "type-fest": "^2.12.2" + "mkdirp": "^0.5.1", + "rimraf": "~2.6.2" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.0.0" } }, - "node_modules/serialize-error/node_modules/type-fest": { - "version": "2.19.0", + "node_modules/temp-fs": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/temp-fs/-/temp-fs-0.9.9.tgz", + "integrity": "sha512-WfecDCR1xC9b0nsrzSaxPf3ZuWeWLUWblW4vlDQAa1biQaKHiImHnJfeQocQe/hXKMcolRzgkcVX/7kK4zoWbw==", "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=12.20" + "license": "MIT", + "dependencies": { + "rimraf": "~2.5.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=0.8.0" } }, - "node_modules/serve-static": { - "version": "1.15.0", + "node_modules/temp-fs/node_modules/rimraf": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "integrity": "sha512-Lw7SHMjssciQb/rRz7JyPIy9+bbUshEucPoLRvWqy09vC5zQixl8Uet+Zl+SROBB/JMWHJRdCk1qdxNWHNMvlQ==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" + "glob": "^7.0.5" }, - "engines": { - "node": ">= 0.8.0" + "bin": { + "rimraf": "bin.js" } }, - "node_modules/set-cookie-parser": { - "version": "2.6.0", - "license": "MIT", - "peer": true + "node_modules/temp/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } }, - "node_modules/set-function-length": { - "version": "1.2.2", + "node_modules/text-decoder": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.0.tgz", + "integrity": "sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==", + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "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, "license": "MIT", "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" + "any-promise": "^1.0.0" } }, - "node_modules/set-function-name": { - "version": "2.0.2", + "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, "license": "MIT", "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" + "thenify": ">= 3.1.0 < 4" }, "engines": { - "node": ">= 0.4" + "node": ">=0.8" } }, - "node_modules/setimmediate": { - "version": "1.0.5", + "node_modules/thread-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz", + "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==", + "license": "MIT", + "peer": true, + "dependencies": { + "real-require": "^0.2.0" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true, "license": "MIT" }, - "node_modules/setprototypeof": { + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, + "node_modules/tinyrainbow": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", + "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", "dev": true, - "license": "ISC" - }, - "node_modules/shallow-clone": { - "version": "3.0.1", "license": "MIT", - "dependencies": { - "kind-of": "^6.0.2" - }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/shebang-command": { - "version": "2.0.0", + "node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", "dev": true, "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, "engines": { - "node": ">=8" + "node": ">=14.14" } }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "dev": true, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/side-channel": { - "version": "1.0.6", - "dev": true, + "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==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "is-number": "^7.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8.0" } }, - "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==", + "node_modules/toad-cache": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/toad-cache/-/toad-cache-3.7.0.tgz", + "integrity": "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==", + "license": "MIT", + "peer": true, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=12" } }, - "node_modules/skin-tone": { - "version": "2.0.0", + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, "license": "MIT", - "dependencies": { - "unicode-emoji-modifier-base": "^1.0.0" - }, "engines": { - "node": ">=8" + "node": ">=0.6" } }, - "node_modules/slash": { - "version": "3.0.0", + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/triple-beam": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 14.0.0" } }, - "node_modules/smart-buffer": { - "version": "4.2.0", + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, "license": "MIT", "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" } }, - "node_modules/socks": { - "version": "2.8.3", + "node_modules/ts-expose-internals-conditionally": { + "version": "1.0.0-empty.0", + "resolved": "https://registry.npmjs.org/ts-expose-internals-conditionally/-/ts-expose-internals-conditionally-1.0.0-empty.0.tgz", + "integrity": "sha512-F8m9NOF6ZhdOClDVdlM8gj3fDCav4ZIFSs/EI3ksQbAAXVSCN/Jh5OCJDDZWBuBy9psFc6jULGDlPwjMYMhJDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/ts4.9": { + "resolved": "packages/typescript-compat/v4.9.x", + "link": true + }, + "node_modules/ts5.0": { + "resolved": "packages/typescript-compat/v5.0.x", + "link": true + }, + "node_modules/ts5.1": { + "resolved": "packages/typescript-compat/v5.1.x", + "link": true + }, + "node_modules/ts5.2": { + "resolved": "packages/typescript-compat/v5.2.x", + "link": true + }, + "node_modules/ts5.3": { + "resolved": "packages/typescript-compat/v5.3.x", + "link": true + }, + "node_modules/ts5.4": { + "resolved": "packages/typescript-compat/v5.4.x", + "link": true + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "license": "MIT", "dependencies": { - "ip-address": "^9.0.5", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.0.0", - "npm": ">= 3.0.0" + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" } }, - "node_modules/socks-proxy-agent": { - "version": "8.0.3", - "dev": true, + "node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/tsx": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.1.tgz", + "integrity": "sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==", "license": "MIT", "dependencies": { - "agent-base": "^7.1.1", - "debug": "^4.3.4", - "socks": "^2.7.1" + "esbuild": "~0.23.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" }, "engines": { - "node": ">= 14" + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" } }, - "node_modules/socks-proxy-agent/node_modules/agent-base": { - "version": "7.1.1", - "dev": true, + "node_modules/tsx/node_modules/@esbuild/aix-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", + "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "cpu": [ + "ppc64" + ], "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": ">= 14" + "node": ">=18" } }, - "node_modules/sonic-boom": { - "version": "4.0.1", + "node_modules/tsx/node_modules/@esbuild/android-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", + "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", + "cpu": [ + "arm" + ], "license": "MIT", - "peer": true, - "dependencies": { - "atomic-sleep": "^1.0.0" + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" } }, - "node_modules/source-map": { - "version": "0.6.1", - "license": "BSD-3-Clause", + "node_modules/tsx/node_modules/@esbuild/android-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", + "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", + "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", + "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" } }, - "node_modules/source-map-js": { - "version": "1.2.0", - "license": "BSD-3-Clause", - "peer": true, + "node_modules/tsx/node_modules/@esbuild/darwin-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", + "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/source-map-support": { - "version": "0.5.21", + "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", + "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" } }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "dev": true, - "license": "MIT" - }, - "node_modules/spacetrim": { - "version": "0.11.36", - "resolved": "https://registry.npmjs.org/spacetrim/-/spacetrim-0.11.36.tgz", - "integrity": "sha512-jqv5aAfMLkBnFK+38QUtEGgU7x1KrfpDnCdjX4+W1IEVgA8Kf3tk8K9je8j2nkCSXdIngjda53fuXERr4/61kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://buymeacoffee.com/hejny" - }, - { - "type": "github", - "url": "https://github.com/hejny/spacetrim/blob/main/README.md#%EF%B8%8F-contributing" - } - ] - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "node_modules/tsx/node_modules/@esbuild/freebsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", + "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" } }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true, - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, + "node_modules/tsx/node_modules/@esbuild/linux-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", + "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", + "cpu": [ + "arm" + ], "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/spdx-license-ids": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", - "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/split": { - "version": "0.3.3", - "dev": true, + "node_modules/tsx/node_modules/@esbuild/linux-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", + "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "through": "2" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "*" + "node": ">=18" } }, - "node_modules/split2": { - "version": "4.2.0", - "license": "ISC", + "node_modules/tsx/node_modules/@esbuild/linux-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", + "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 10.x" + "node": ">=18" } }, - "node_modules/sprintf-js": { - "version": "1.1.3", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, + "node_modules/tsx/node_modules/@esbuild/linux-loong64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", + "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", + "cpu": [ + "loong64" + ], "license": "MIT", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=10" + "node": ">=18" } }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, + "node_modules/tsx/node_modules/@esbuild/linux-mips64el": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", + "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", + "cpu": [ + "mips64el" + ], "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/stacktracey": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/stacktracey/-/stacktracey-2.1.8.tgz", - "integrity": "sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==", - "dev": true, - "dependencies": { - "as-table": "^1.0.36", - "get-source": "^2.0.12" + "node_modules/tsx/node_modules/@esbuild/linux-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", + "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/statuses": { - "version": "2.0.1", - "dev": true, + "node_modules/tsx/node_modules/@esbuild/linux-riscv64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", + "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", + "cpu": [ + "riscv64" + ], "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.8" + "node": ">=18" } }, - "node_modules/stoppable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", - "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", - "dev": true, + "node_modules/tsx/node_modules/@esbuild/linux-s390x": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", + "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=4", - "npm": ">=6" + "node": ">=18" } }, - "node_modules/stream-buffers": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.3.tgz", - "integrity": "sha512-pqMqwQCso0PBJt2PQmDO0cFj0lyqmiwOMiMSkVtRokl7e+ZTRYgDHKnuZNbqjiJXgsg4nuqtD/zxuo9KqTp0Yw==", - "dev": true, - "license": "Unlicense", + "node_modules/tsx/node_modules/@esbuild/linux-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", + "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.10.0" + "node": ">=18" } }, - "node_modules/stream-combiner": { - "version": "0.0.4", - "dev": true, + "node_modules/tsx/node_modules/@esbuild/netbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", + "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "duplexer": "~0.1.1" + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, - "node_modules/streamsearch": { - "version": "1.1.0", - "peer": true, + "node_modules/tsx/node_modules/@esbuild/openbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", + "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=10.0.0" + "node": ">=18" } }, - "node_modules/streamx": { - "version": "2.18.0", + "node_modules/tsx/node_modules/@esbuild/sunos-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", + "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "fast-fifo": "^1.3.2", - "queue-tick": "^1.0.1", - "text-decoder": "^1.1.0" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" } }, - "node_modules/strict-event-emitter": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.1.0.tgz", - "integrity": "sha512-8hSYfU+WKLdNcHVXJ0VxRXiPESalzRe7w1l8dg9+/22Ry+iZQUoQuoJ27R30GMD1TiyYINWsIEGY05WrskhSKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/string_decoder": { - "version": "1.3.0", + "node_modules/tsx/node_modules/@esbuild/win32-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", + "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" } }, - "node_modules/string-width": { - "version": "4.2.3", - "dev": true, + "node_modules/tsx/node_modules/@esbuild/win32-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", + "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", + "cpu": [ + "ia32" + ], "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "dev": true, + "node_modules/tsx/node_modules/@esbuild/win32-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", + "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/string.prototype.trim": { - "version": "1.2.9", - "dev": true, + "node_modules/tsx/node_modules/esbuild": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", + "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.23.1", + "@esbuild/android-arm": "0.23.1", + "@esbuild/android-arm64": "0.23.1", + "@esbuild/android-x64": "0.23.1", + "@esbuild/darwin-arm64": "0.23.1", + "@esbuild/darwin-x64": "0.23.1", + "@esbuild/freebsd-arm64": "0.23.1", + "@esbuild/freebsd-x64": "0.23.1", + "@esbuild/linux-arm": "0.23.1", + "@esbuild/linux-arm64": "0.23.1", + "@esbuild/linux-ia32": "0.23.1", + "@esbuild/linux-loong64": "0.23.1", + "@esbuild/linux-mips64el": "0.23.1", + "@esbuild/linux-ppc64": "0.23.1", + "@esbuild/linux-riscv64": "0.23.1", + "@esbuild/linux-s390x": "0.23.1", + "@esbuild/linux-x64": "0.23.1", + "@esbuild/netbsd-x64": "0.23.1", + "@esbuild/openbsd-arm64": "0.23.1", + "@esbuild/openbsd-x64": "0.23.1", + "@esbuild/sunos-x64": "0.23.1", + "@esbuild/win32-arm64": "0.23.1", + "@esbuild/win32-ia32": "0.23.1", + "@esbuild/win32-x64": "0.23.1" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.8", + "node_modules/turbo": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.1.3.tgz", + "integrity": "sha512-lY0yj2GH2a2a3NExZ3rGe+rHUVeFE2aXuRAue57n+08E7Z7N7YCmynju0kPC1grAQzERmoLpKrmzmWd+PNiADw==", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "bin": { + "turbo": "bin/turbo" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optionalDependencies": { + "turbo-darwin-64": "2.1.3", + "turbo-darwin-arm64": "2.1.3", + "turbo-linux-64": "2.1.3", + "turbo-linux-arm64": "2.1.3", + "turbo-windows-64": "2.1.3", + "turbo-windows-arm64": "2.1.3" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", + "node_modules/turbo-darwin-64": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-2.1.3.tgz", + "integrity": "sha512-ouJOm0g0YyoBuhmikEujVCBGo3Zr0lbSOWFIsQtWUTItC88F2w2byhjtsYGPXQwMlTbXwmoBU2lOCfWNkeEwHQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/strip-ansi": { - "version": "6.0.1", + "node_modules/turbo-darwin-arm64": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-2.1.3.tgz", + "integrity": "sha512-j2FOJsK4LAOtHQlb3Oom0yWB/Vi0nF1ljInr311mVzHoFAJRZtfW2fRvdZRb/lBUwjSp8be58qWHzANIcrA0OA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", + "node_modules/turbo-linux-64": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-2.1.3.tgz", + "integrity": "sha512-ubRHkI1gSel7H7wsmxKK8C9UlLWqg/2dkCC88LFupaK6TKgvBKqDqA0Z1M9C/escK0Jsle2k0H8bybV9OYIl4Q==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/turbo-linux-arm64": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-2.1.3.tgz", + "integrity": "sha512-LffUL+e5wv7BtD6DgnM2kKOlDkMo2eRjhbAjVnrCD3wi2ug0tl6NDzajnHHjtaMyOnIf4AvzSKdLWsBxafGBQA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/turbo-windows-64": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-2.1.3.tgz", + "integrity": "sha512-S9SvcZZoaq5jKr6kA6eF7/xgQhVn8Vh7PVy5lono9zybvhyL4eY++y2PaLToIgL8G9IcbLmgOC73ExNjFBg9XQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/strip-bom": { - "version": "3.0.0", + "node_modules/turbo-windows-arm64": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-2.1.3.tgz", + "integrity": "sha512-twlEo8lRrGbrR6T/ZklUIquW3IlFCEtywklgVA81aIrSBm56+GEVpSrHhIlsx1hiYeSNrs+GpDwZGe+V7fvEVQ==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">=4" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/strip-final-newline": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", - "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "license": "MIT", - "engines": { - "node": ">=18" + "dependencies": { + "prelude-ls": "^1.2.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "license": "MIT", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strnum": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, - "license": "MIT" - }, - "node_modules/styled-jsx": { - "version": "5.1.1", "license": "MIT", - "peer": true, "dependencies": { - "client-only": "0.0.1" + "media-typer": "0.3.0", + "mime-types": "~2.1.24" }, "engines": { - "node": ">= 12.0.0" - }, - "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "babel-plugin-macros": { - "optional": true - } + "node": ">= 0.6" } }, - "node_modules/supports-color": { - "version": "7.2.0", + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/supports-hyperlinks": { - "version": "3.0.0", + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -14126,745 +14638,762 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tapable": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/tar-fs": { - "version": "3.0.4", + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dev": true, "license": "MIT", "dependencies": { - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - } - }, - "node_modules/tar-stream": { - "version": "3.1.7", - "license": "MIT", - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, - "node_modules/temp": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", - "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", - "dependencies": { - "mkdirp": "^0.5.1", - "rimraf": "~2.6.2" + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { - "node": ">=6.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/temp-fs": { - "version": "0.9.9", + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dev": true, "license": "MIT", "dependencies": { - "rimraf": "~2.5.2" + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" }, "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/temp-fs/node_modules/rimraf": { - "version": "2.5.4", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.0.5" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/temp/node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dependencies": { - "glob": "^7.1.3" + "node": ">= 0.4" }, - "bin": { - "rimraf": "bin.js" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/text-decoder": { - "version": "1.1.0", + "node_modules/typescript": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.4" + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" } }, - "node_modules/text-table": { - "version": "0.2.0", + "node_modules/ufo": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", "dev": true, "license": "MIT" }, - "node_modules/thread-stream": { - "version": "3.0.2", + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "real-require": "^0.2.0" + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/through": { - "version": "2.3.8", - "dev": true, - "license": "MIT" - }, - "node_modules/tiny-invariant": { - "version": "1.3.3", - "license": "MIT" - }, - "node_modules/tinyrainbow": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", - "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=14.0.0" + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" } }, - "node_modules/tmp": { - "version": "0.2.3", + "node_modules/unbzip2-stream/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", + "node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", + "dev": true, "license": "MIT", "dependencies": { - "is-number": "^7.0.0" + "@fastify/busboy": "^2.0.0" }, "engines": { - "node": ">=8.0" + "node": ">=14.0" } }, - "node_modules/toad-cache": { - "version": "3.7.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=12" - } + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "license": "MIT" }, - "node_modules/toidentifier": { - "version": "1.0.1", + "node_modules/unenv": { + "name": "unenv-nightly", + "version": "2.0.0-20241009-125958-e8ea22f", + "resolved": "https://registry.npmjs.org/unenv-nightly/-/unenv-nightly-2.0.0-20241009-125958-e8ea22f.tgz", + "integrity": "sha512-hRxmKz1iSVRmuFx/vBdPsx7rX4o7Cas9vdjDNeUeWpQTK2LzU3Xy3Jz0zbo7MJX0bpqo/LEFCA+GPwsbl6zKEQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.6" + "dependencies": { + "defu": "^6.1.4", + "ohash": "^1.1.4", + "pathe": "^1.1.2", + "ufo": "^1.5.4" } }, - "node_modules/tr46": { - "version": "0.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/triple-beam": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", - "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", + "node_modules/unicode-emoji-modifier-base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", + "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", "dev": true, "license": "MIT", "engines": { - "node": ">= 14.0.0" + "node": ">=4" } }, - "node_modules/ts-api-utils": { - "version": "1.3.0", + "node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", "dev": true, "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18" }, - "peerDependencies": { - "typescript": ">=4.2.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ts-expose-internals-conditionally": { - "version": "1.0.0-empty.0", - "dev": true, - "license": "MIT" - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "node_modules/tsx": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.0.tgz", - "integrity": "sha512-bV30kM7bsLZKZIOCHeMNVMJ32/LuJzLVajkQI/qf92J2Qr08ueLQvW00PUZGiuLPP760UINwupgUj8qrSCPUKg==", - "dependencies": { - "esbuild": "~0.23.0", - "get-tsconfig": "^4.7.5" - }, - "bin": { - "tsx": "dist/cli.mjs" - }, "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" + "node": ">= 10.0.0" } }, - "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", - "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18" + "node": ">= 0.8" } }, - "node_modules/tsx/node_modules/esbuild": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", - "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" + "node_modules/update-browserslist-db": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.0" }, - "engines": { - "node": ">=18" + "bin": { + "update-browserslist-db": "cli.js" }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.23.1", - "@esbuild/android-arm": "0.23.1", - "@esbuild/android-arm64": "0.23.1", - "@esbuild/android-x64": "0.23.1", - "@esbuild/darwin-arm64": "0.23.1", - "@esbuild/darwin-x64": "0.23.1", - "@esbuild/freebsd-arm64": "0.23.1", - "@esbuild/freebsd-x64": "0.23.1", - "@esbuild/linux-arm": "0.23.1", - "@esbuild/linux-arm64": "0.23.1", - "@esbuild/linux-ia32": "0.23.1", - "@esbuild/linux-loong64": "0.23.1", - "@esbuild/linux-mips64el": "0.23.1", - "@esbuild/linux-ppc64": "0.23.1", - "@esbuild/linux-riscv64": "0.23.1", - "@esbuild/linux-s390x": "0.23.1", - "@esbuild/linux-x64": "0.23.1", - "@esbuild/netbsd-x64": "0.23.1", - "@esbuild/openbsd-arm64": "0.23.1", - "@esbuild/openbsd-x64": "0.23.1", - "@esbuild/sunos-x64": "0.23.1", - "@esbuild/win32-arm64": "0.23.1", - "@esbuild/win32-ia32": "0.23.1", - "@esbuild/win32-x64": "0.23.1" + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "node_modules/turbo": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.1.0.tgz", - "integrity": "sha512-A969/LO/sPHKlapIarY2VVzqQ5JnnW2/1kksZlnMEpsRD6gwOELvVL+ozfMiO7av9RILt3UeN02L17efr6HUCA==", + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "license": "MIT", - "bin": { - "turbo": "bin/turbo" - }, - "optionalDependencies": { - "turbo-darwin-64": "2.1.0", - "turbo-darwin-arm64": "2.1.0", - "turbo-linux-64": "2.1.0", - "turbo-linux-arm64": "2.1.0", - "turbo-windows-64": "2.1.0", - "turbo-windows-arm64": "2.1.0" + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" } }, - "node_modules/turbo-darwin-64": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-2.1.0.tgz", - "integrity": "sha512-gHwpDk2gyB7qZ57gUUwDIS/IkglqEjjVtPZCTxmCRg28Tiwjui0azsLVKrnHP9UZHllozwbi28x8HXLXLEFF1w==", - "cpu": [ - "x64" - ], + "node_modules/urlpattern-polyfill": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", + "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "license": "MIT" }, - "node_modules/turbo-darwin-arm64": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-2.1.0.tgz", - "integrity": "sha512-GLaqGetNC6eS4eqXgsheLOHic/OcnGCGDi5boVf+TFZTXYH6YE15L4ugZha4xHXCr1KouCLILHh+f8EHEmWylg==", - "cpu": [ - "arm64" - ], + "node_modules/userhome": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/userhome/-/userhome-1.0.0.tgz", + "integrity": "sha512-ayFKY3H+Pwfy4W98yPdtH1VqH4psDeyW8lYYFzfecR9d6hqLpqhecktvYR3SEEXt7vG0S1JEpciI3g94pMErig==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "engines": { + "node": ">= 0.8.0" + } }, - "node_modules/turbo-linux-64": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-2.1.0.tgz", - "integrity": "sha512-VzBOsj7JyGoZtiNZZ6brjnY7UehRnClluw7pwznuLPzClkqOOPMd2jOcgkWxnP/xW4NBmOoFANXXrtvKBD4f2w==", - "cpu": [ - "x64" - ], + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "license": "MIT" }, - "node_modules/turbo-linux-arm64": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-2.1.0.tgz", - "integrity": "sha512-St7svJnOO5g4F6R7Z32e10I/0M3e6qpNjEYybXwPNul9NSfnUXeky4WoKaALwqNhyJ7nYemoFpZ1d+i8hFQTHg==", - "cpu": [ - "arm64" - ], + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": ">= 0.4.0" + } }, - "node_modules/turbo-windows-64": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-2.1.0.tgz", - "integrity": "sha512-iSobNud2MrJ1SZ1upVPlErT8xexsr0MQtKapdfq6z0M0rBnrDGEq5bUCSScWyGu+O4+glB4br9xkTAkGFqaxqQ==", - "cpu": [ - "x64" - ], + "node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/turbo-windows-arm64": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-2.1.0.tgz", - "integrity": "sha512-d61jN4rjE5PnUfF66GKrKoj8S8Ql4FGXzFFzZz4kjsHpZZzCTtqlzPZBmd1byzGYhDPTorTqG3G1USohbdyohA==", - "cpu": [ - "arm64" + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" ], - "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "bin": { + "uuid": "dist/bin/uuid" + } }, - "node_modules/type-check": { - "version": "0.4.0", + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "prelude-ls": "^1.2.1" - }, + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", + "dev": true, + "license": "ISC", "engines": { - "node": ">= 0.8.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/type-fest": { - "version": "0.20.2", + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8" } }, - "node_modules/type-is": { - "version": "1.6.18", + "node_modules/wait-port": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/wait-port/-/wait-port-1.1.0.tgz", + "integrity": "sha512-3e04qkoN3LxTMLakdqeWth8nih8usyg+sf1Bgdf9wwUkp05iuK1eSY/QpLvscT/+F/gA89+LpUmmgBtesbqI2Q==", "dev": true, "license": "MIT", "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "chalk": "^4.1.2", + "commander": "^9.3.0", + "debug": "^4.3.4" + }, + "bin": { + "wait-port": "bin/wait-port.js" }, "engines": { - "node": ">= 0.6" + "node": ">=10" } }, - "node_modules/typed-array-buffer": { - "version": "1.0.2", + "node_modules/wait-port/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - }, "engines": { - "node": ">= 0.4" + "node": "^12.20.0 || >=14" } }, - "node_modules/typed-array-byte-length": { - "version": "1.0.1", + "node_modules/web-streams-polyfill": { + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", + "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 14" } }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.2", + "node_modules/webdriver": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.2.0.tgz", + "integrity": "sha512-UrhuHSLq4m3OgncvX75vShfl5w3gmjAy8LvLb6/L6V+a+xcqMRelFx/DQ72Mr84F4m8Li6wjtebrOH1t9V/uOQ==", "dev": true, "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "@types/node": "^20.1.0", + "@types/ws": "^8.5.3", + "@wdio/config": "9.1.3", + "@wdio/logger": "9.1.3", + "@wdio/protocols": "9.2.0", + "@wdio/types": "9.1.3", + "@wdio/utils": "9.1.3", + "deepmerge-ts": "^7.0.3", + "ws": "^8.8.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=18.20.0" } }, - "node_modules/typed-array-length": { - "version": "1.0.6", + "node_modules/webdriver/node_modules/@types/node": { + "version": "20.16.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.11.tgz", + "integrity": "sha512-y+cTCACu92FyA5fgQSAI8A1H429g7aSK2HsO7K4XYUWc4dY5IUz55JSDIYT6/VsOLfGy8vmvQYC2hfb0iF16Uw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" + "undici-types": "~6.19.2" + } + }, + "node_modules/webdriverio": { + "version": "8.40.6", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.40.6.tgz", + "integrity": "sha512-hMFYRjVU5Nnk2e9Mi8kDx/IVFMWGaVyDCDpv/SeXXCP17DT9jAZtOWlwGhRaLVikN5JYYuHavHyatVa7gj6QTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "^22.2.0", + "@wdio/config": "8.40.6", + "@wdio/logger": "8.38.0", + "@wdio/protocols": "8.40.3", + "@wdio/repl": "8.40.3", + "@wdio/types": "8.40.6", + "@wdio/utils": "8.40.6", + "archiver": "^7.0.0", + "aria-query": "^5.0.0", + "css-shorthand-properties": "^1.1.1", + "css-value": "^0.0.1", + "devtools-protocol": "^0.0.1359167", + "grapheme-splitter": "^1.0.2", + "import-meta-resolve": "^4.0.0", + "is-plain-obj": "^4.1.0", + "jszip": "^3.10.1", + "lodash.clonedeep": "^4.5.0", + "lodash.zip": "^4.2.0", + "minimatch": "^9.0.0", + "puppeteer-core": "^21.11.0", + "query-selector-shadow-dom": "^1.0.0", + "resq": "^1.9.1", + "rgb2hex": "0.2.5", + "serialize-error": "^11.0.1", + "webdriver": "8.40.6" }, "engines": { - "node": ">= 0.4" + "node": "^16.13 || >=18" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "devtools": "^8.14.0" + }, + "peerDependenciesMeta": { + "devtools": { + "optional": true + } } }, - "node_modules/typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "node_modules/webdriverio/node_modules/@puppeteer/browsers": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.9.1.tgz", + "integrity": "sha512-PuvK6xZzGhKPvlx3fpfdM2kYY3P/hB1URtK8wA7XUJ6prn6pp22zvJHu48th0SGcHL9SutbPHrFuQgfXTFobWA==", "dev": true, + "license": "Apache-2.0", + "dependencies": { + "debug": "4.3.4", + "extract-zip": "2.0.1", + "progress": "2.0.3", + "proxy-agent": "6.3.1", + "tar-fs": "3.0.4", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.2" + }, "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "browsers": "lib/cjs/main-cli.js" }, "engines": { - "node": ">=14.17" + "node": ">=16.3.0" } }, - "node_modules/ufo": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", - "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", - "dev": true - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", + "node_modules/webdriverio/node_modules/@wdio/config": { + "version": "8.40.6", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.40.6.tgz", + "integrity": "sha512-rHCSmrhdJf7FlidcQPDvRKRPLYjklbrdxQa6J20BxHifTO4h2v23Wrq4OqqYIcq23gf9LpZvCA/PAMiET/QdVg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "@wdio/logger": "8.38.0", + "@wdio/types": "8.40.6", + "@wdio/utils": "8.40.6", + "decamelize": "^6.0.0", + "deepmerge-ts": "^5.0.0", + "glob": "^10.2.2", + "import-meta-resolve": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^16.13 || >=18" } }, - "node_modules/unbzip2-stream": { - "version": "1.4.3", + "node_modules/webdriverio/node_modules/@wdio/logger": { + "version": "8.38.0", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.38.0.tgz", + "integrity": "sha512-kcHL86RmNbcQP+Gq/vQUGlArfU6IIcbbnNp32rRIraitomZow+iEoc519rdQmSVusDozMS5DZthkgDdxK+vz6Q==", "dev": true, "license": "MIT", "dependencies": { - "buffer": "^5.2.1", - "through": "^2.3.8" + "chalk": "^5.1.2", + "loglevel": "^1.6.0", + "loglevel-plugin-prefix": "^0.8.4", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": "^16.13 || >=18" } }, - "node_modules/unbzip2-stream/node_modules/buffer": { - "version": "5.7.1", + "node_modules/webdriverio/node_modules/@wdio/protocols": { + "version": "8.40.3", + "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.40.3.tgz", + "integrity": "sha512-wK7+eyrB3TAei8RwbdkcyoNk2dPu+mduMBOdPJjp8jf/mavd15nIUXLID1zA+w5m1Qt1DsT1NbvaeO9+aJQ33A==", + "dev": true, + "license": "MIT" + }, + "node_modules/webdriverio/node_modules/@wdio/repl": { + "version": "8.40.3", + "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-8.40.3.tgz", + "integrity": "sha512-mWEiBbaC7CgxvSd2/ozpbZWebnRIc8KRu/J81Hlw/txUWio27S7IpXBlZGVvhEsNzq0+cuxB/8gDkkXvMPbesw==", "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" - } - ], "license": "MIT", "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "@types/node": "^22.2.0" + }, + "engines": { + "node": "^16.13 || >=18" } }, - "node_modules/undici": { - "version": "5.28.4", + "node_modules/webdriverio/node_modules/@wdio/types": { + "version": "8.40.6", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.40.6.tgz", + "integrity": "sha512-ALftLri1BdsRuPrQkuW3evBNdOA5n4IkuoegOw6UE2z+R0f1YI5fHGSHNRWLnhtbOECbGyHXXqzbSxCEb+o+MA==", + "dev": true, "license": "MIT", "dependencies": { - "@fastify/busboy": "^2.0.0" + "@types/node": "^22.2.0" }, "engines": { - "node": ">=14.0" + "node": "^16.13 || >=18" } }, - "node_modules/undici-types": { - "version": "5.26.5", - "license": "MIT" - }, - "node_modules/unenv": { - "name": "unenv-nightly", - "version": "2.0.0-1724863496.70db6f1", - "resolved": "https://registry.npmjs.org/unenv-nightly/-/unenv-nightly-2.0.0-1724863496.70db6f1.tgz", - "integrity": "sha512-r+VIl1gnsI4WQxluruSQhy8alpAf1AsLRLm4sEKp3otCyTIVD6I6wHEYzeQnwsyWgaD4+3BD4A/eqrgOpdTzhw==", + "node_modules/webdriverio/node_modules/@wdio/utils": { + "version": "8.40.6", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.40.6.tgz", + "integrity": "sha512-+TWfV6h+4f8gs7QiYUAWbWEylpZudQ+xkJPN34tRzPJK6dOBYEnIT/j6+1m3j39m1WPDehyYxIf1wCsrGKBxNQ==", "dev": true, + "license": "MIT", "dependencies": { - "defu": "^6.1.4", - "ohash": "^1.1.3", - "pathe": "^1.1.2", - "ufo": "^1.5.4" + "@puppeteer/browsers": "^1.6.0", + "@wdio/logger": "8.38.0", + "@wdio/types": "8.40.6", + "decamelize": "^6.0.0", + "deepmerge-ts": "^5.1.0", + "edgedriver": "^5.5.0", + "geckodriver": "^4.3.1", + "get-port": "^7.0.0", + "import-meta-resolve": "^4.0.0", + "locate-app": "^2.1.0", + "safaridriver": "^0.1.0", + "split2": "^4.2.0", + "wait-port": "^1.0.4" + }, + "engines": { + "node": "^16.13 || >=18" } }, - "node_modules/unicode-emoji-modifier-base": { - "version": "1.0.0", + "node_modules/webdriverio/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, "engines": { - "node": ">=4" + "node": ">= 14" } }, - "node_modules/unpipe": { - "version": "1.0.0", + "node_modules/webdriverio/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/update-browserslist-db": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", - "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" - }, - "bin": { - "update-browserslist-db": "cli.js" + "node_modules/webdriverio/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, - "peerDependencies": { - "browserslist": ">= 4.21.0" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/uri-js": { - "version": "4.4.1", + "node_modules/webdriverio/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, - "license": "BSD-2-Clause", + "license": "ISC", "dependencies": { - "punycode": "^2.1.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/urlpattern-polyfill": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", - "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", + "node_modules/webdriverio/node_modules/cliui/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, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/userhome": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/userhome/-/userhome-1.0.0.tgz", - "integrity": "sha512-ayFKY3H+Pwfy4W98yPdtH1VqH4psDeyW8lYYFzfecR9d6hqLpqhecktvYR3SEEXt7vG0S1JEpciI3g94pMErig==", + "node_modules/webdriverio/node_modules/cliui/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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", + "node_modules/webdriverio/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, - "license": "MIT" + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } }, - "node_modules/utils-merge": { - "version": "1.0.1", + "node_modules/webdriverio/node_modules/deepmerge-ts": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-5.1.0.tgz", + "integrity": "sha512-eS8dRJOckyo9maw9Tu5O5RUi/4inFLrnoLkBe3cPfDMx3WZioXtmOew4TXQaxq7Rhl4xjDtR7c6x8nNTxOvbFw==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "engines": { - "node": ">= 0.4.0" + "node": ">=16.0.0" } }, - "node_modules/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "node_modules/webdriverio/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, "bin": { - "uuid": "dist/bin/uuid" + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "node_modules/webdriverio/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" } }, - "node_modules/validate-npm-package-name": { - "version": "5.0.1", + "node_modules/webdriverio/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/vary": { - "version": "1.1.2", + "node_modules/webdriverio/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, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } + "license": "MIT" }, - "node_modules/wait-port": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/wait-port/-/wait-port-1.1.0.tgz", - "integrity": "sha512-3e04qkoN3LxTMLakdqeWth8nih8usyg+sf1Bgdf9wwUkp05iuK1eSY/QpLvscT/+F/gA89+LpUmmgBtesbqI2Q==", + "node_modules/webdriverio/node_modules/proxy-agent": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.1.tgz", + "integrity": "sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^4.1.2", - "commander": "^9.3.0", - "debug": "^4.3.4" - }, - "bin": { - "wait-port": "bin/wait-port.js" + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" }, "engines": { - "node": ">=10" + "node": ">= 14" } }, - "node_modules/wait-port/node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "node_modules/webdriverio/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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { - "node": "^12.20.0 || >=14" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/web-streams-polyfill": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", - "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "node_modules/webdriverio/node_modules/tar-fs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", "dev": true, - "engines": { - "node": ">= 8" + "license": "MIT", + "dependencies": { + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^3.1.5" } }, - "node_modules/webdriver": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.39.0.tgz", - "integrity": "sha512-Kc3+SfiH4ufyrIht683VT2vnJocx0pfH8rYdyPvEh1b2OYewtFTHK36k9rBDHZiBmk6jcSXs4M2xeFgOuon9Lg==", + "node_modules/webdriverio/node_modules/webdriver": { + "version": "8.40.6", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.40.6.tgz", + "integrity": "sha512-jkslwUvOmqhFfc1E21Tz48NgYD8ykiR+09iWZlVLtx3P43k4jOfS+CfasvQ+6hJiVck+N5dXjYfg6zDjpkIFRw==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "^20.1.0", + "@types/node": "^22.2.0", "@types/ws": "^8.5.3", - "@wdio/config": "8.39.0", + "@wdio/config": "8.40.6", "@wdio/logger": "8.38.0", - "@wdio/protocols": "8.38.0", - "@wdio/types": "8.39.0", - "@wdio/utils": "8.39.0", + "@wdio/protocols": "8.40.3", + "@wdio/types": "8.40.6", + "@wdio/utils": "8.40.6", "deepmerge-ts": "^5.1.0", "got": "^12.6.1", "ky": "^0.33.0", @@ -14874,52 +15403,39 @@ "node": "^16.13 || >=18" } }, - "node_modules/webdriverio": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.39.1.tgz", - "integrity": "sha512-dPwLgLNtP+l4vnybz+YFxxH8nBKOP7j6VVzKtfDyTLDQg9rz3U8OA4xMMQCBucnrVXy3KcKxGqlnMa+c4IfWCQ==", + "node_modules/webdriverio/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "^20.1.0", - "@wdio/config": "8.39.0", - "@wdio/logger": "8.38.0", - "@wdio/protocols": "8.38.0", - "@wdio/repl": "8.24.12", - "@wdio/types": "8.39.0", - "@wdio/utils": "8.39.0", - "archiver": "^7.0.0", - "aria-query": "^5.0.0", - "css-shorthand-properties": "^1.1.1", - "css-value": "^0.0.1", - "devtools-protocol": "^0.0.1302984", - "grapheme-splitter": "^1.0.2", - "import-meta-resolve": "^4.0.0", - "is-plain-obj": "^4.1.0", - "jszip": "^3.10.1", - "lodash.clonedeep": "^4.5.0", - "lodash.zip": "^4.2.0", - "minimatch": "^9.0.0", - "puppeteer-core": "^20.9.0", - "query-selector-shadow-dom": "^1.0.0", - "resq": "^1.9.1", - "rgb2hex": "0.2.5", - "serialize-error": "^11.0.1", - "webdriver": "8.39.0" - }, - "engines": { - "node": "^16.13 || >=18" - }, - "peerDependencies": { - "devtools": "^8.14.0" + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, - "peerDependenciesMeta": { - "devtools": { - "optional": true - } + "engines": { + "node": ">=12" + } + }, + "node_modules/webdriverio/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" } }, "node_modules/webidl-conversions": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true, "license": "BSD-2-Clause" }, @@ -14961,6 +15477,8 @@ }, "node_modules/whatwg-url": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "license": "MIT", "dependencies": { @@ -14970,6 +15488,8 @@ }, "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, "license": "ISC", "dependencies": { @@ -14984,6 +15504,8 @@ }, "node_modules/which-boxed-primitive": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, "license": "MIT", "dependencies": { @@ -14999,6 +15521,8 @@ }, "node_modules/which-typed-array": { "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dev": true, "license": "MIT", "dependencies": { @@ -15016,37 +15540,24 @@ } }, "node_modules/winston-transport": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.7.1.tgz", - "integrity": "sha512-wQCXXVgfv/wUPOfb2x0ruxzwkcZfxcktz6JIMUaPLmcNhO4bZTwA/WtDWK74xV3F2dKu8YadrFv0qhwYjVEwhA==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.8.0.tgz", + "integrity": "sha512-qxSTKswC6llEMZKgCQdaWgDuMJQnhuvF5f2Nk3SNXc4byfQ+voo2mX1Px9dkNOuR8p0KAjfPG29PuYUSIb+vSA==", "dev": true, "license": "MIT", "dependencies": { "logform": "^2.6.1", - "readable-stream": "^3.6.2", + "readable-stream": "^4.5.2", "triple-beam": "^1.3.0" }, "engines": { "node": ">= 12.0.0" } }, - "node_modules/winston-transport/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/word-wrap": { "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "license": "MIT", "engines": { @@ -15054,11 +15565,12 @@ } }, "node_modules/workerd": { - "version": "1.20240821.1", - "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20240821.1.tgz", - "integrity": "sha512-y4phjCnEG96u8ZkgkkHB+gSw0i6uMNo23rBmixylWpjxDklB+LWD8dztasvsu7xGaZbLoTxQESdEw956F7VJDA==", + "version": "1.20241004.0", + "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20241004.0.tgz", + "integrity": "sha512-TCFJ7Zw7svR3adg1fnlPWj/yXhjBnQloLEIJqdu57hli/GsgwlbomwrbM3mdMgbS+K9zYeaYqknXiBN0EXk3QQ==", "dev": true, "hasInstallScript": true, + "license": "Apache-2.0", "bin": { "workerd": "bin/workerd" }, @@ -15066,36 +15578,36 @@ "node": ">=16" }, "optionalDependencies": { - "@cloudflare/workerd-darwin-64": "1.20240821.1", - "@cloudflare/workerd-darwin-arm64": "1.20240821.1", - "@cloudflare/workerd-linux-64": "1.20240821.1", - "@cloudflare/workerd-linux-arm64": "1.20240821.1", - "@cloudflare/workerd-windows-64": "1.20240821.1" + "@cloudflare/workerd-darwin-64": "1.20241004.0", + "@cloudflare/workerd-darwin-arm64": "1.20241004.0", + "@cloudflare/workerd-linux-64": "1.20241004.0", + "@cloudflare/workerd-linux-arm64": "1.20241004.0", + "@cloudflare/workerd-windows-64": "1.20241004.0" } }, "node_modules/wrangler": { - "version": "3.73.0", - "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-3.73.0.tgz", - "integrity": "sha512-VrdDR2OpvsCQp+r5Of3rDP1W64cNN/LHLVx1roULOlPS8PZiv7rUYgkwhdCQ61+HICAaeSxWYIzkL5+B9+8W3g==", + "version": "3.80.4", + "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-3.80.4.tgz", + "integrity": "sha512-DyNvShtVH3k7ZyBndlIiwyRDXqtHr3g01hxwn4FfwKlAaT6EL0wb3KL3UGbsdpeM/xbJiUQxFQ4WuFBWgZS18Q==", "dev": true, + "license": "MIT OR Apache-2.0", "dependencies": { "@cloudflare/kv-asset-handler": "0.3.4", - "@cloudflare/workers-shared": "0.4.1", + "@cloudflare/workers-shared": "0.6.0", "@esbuild-plugins/node-globals-polyfill": "^0.2.3", "@esbuild-plugins/node-modules-polyfill": "^0.2.2", "blake3-wasm": "^2.1.5", "chokidar": "^3.5.3", - "date-fns": "^3.6.0", "esbuild": "0.17.19", - "miniflare": "3.20240821.0", + "miniflare": "3.20241004.0", "nanoid": "^3.3.3", - "path-to-regexp": "^6.2.0", + "path-to-regexp": "^6.3.0", "resolve": "^1.22.8", "resolve.exports": "^2.0.2", "selfsigned": "^2.0.1", "source-map": "^0.6.1", - "unenv": "npm:unenv-nightly@2.0.0-1724863496.70db6f1", - "workerd": "1.20240821.1", + "unenv": "npm:unenv-nightly@2.0.0-20241009-125958-e8ea22f", + "workerd": "1.20241004.0", "xxhash-wasm": "^1.0.1" }, "bin": { @@ -15109,7 +15621,7 @@ "fsevents": "~2.3.2" }, "peerDependencies": { - "@cloudflare/workers-types": "^4.20240821.1" + "@cloudflare/workers-types": "^4.20241004.0" }, "peerDependenciesMeta": { "@cloudflare/workers-types": { @@ -15125,6 +15637,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -15141,6 +15654,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -15157,6 +15671,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -15167,6 +15682,8 @@ }, "node_modules/wrangler/node_modules/@esbuild/darwin-arm64": { "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", "cpu": [ "arm64" ], @@ -15188,6 +15705,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -15204,6 +15722,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -15220,6 +15739,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -15236,6 +15756,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -15252,6 +15773,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -15268,6 +15790,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -15284,6 +15807,7 @@ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -15300,6 +15824,7 @@ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -15316,6 +15841,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -15332,6 +15858,7 @@ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -15348,6 +15875,7 @@ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -15364,6 +15892,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -15380,6 +15909,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -15396,6 +15926,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -15412,6 +15943,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" @@ -15428,6 +15960,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -15444,6 +15977,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -15460,6 +15994,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -15468,8 +16003,35 @@ "node": ">=12" } }, + "node_modules/wrangler/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, + "license": "MIT", + "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/wrangler/node_modules/esbuild": { "version": "0.17.19", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -15504,13 +16066,43 @@ "@esbuild/win32-x64": "0.17.19" } }, + "node_modules/wrangler/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, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/wrangler/node_modules/path-to-regexp": { - "version": "6.2.2", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", "dev": true, "license": "MIT" }, + "node_modules/wrangler/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, "node_modules/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, "license": "MIT", "dependencies": { @@ -15528,6 +16120,8 @@ "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, "license": "MIT", "dependencies": { @@ -15544,12 +16138,15 @@ }, "node_modules/wrappy": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "license": "ISC" }, "node_modules/write-file-atomic": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^4.0.1" @@ -15559,7 +16156,9 @@ } }, "node_modules/ws": { - "version": "8.11.0", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "dev": true, "license": "MIT", "engines": { @@ -15567,7 +16166,7 @@ }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -15580,11 +16179,15 @@ }, "node_modules/xxhash-wasm": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.0.2.tgz", + "integrity": "sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==", "dev": true, "license": "MIT" }, "node_modules/y18n": { "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, "license": "ISC", "engines": { @@ -15594,45 +16197,68 @@ "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz", + "integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } }, "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, + "license": "MIT", "dependencies": { - "cliui": "^8.0.1", + "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.3", + "string-width": "^4.2.0", "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "yargs-parser": "^20.2.2" }, "engines": { - "node": ">=12" + "node": ">=10" } }, "node_modules/yargs-parser": { - "version": "21.1.1", + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, "license": "ISC", "engines": { - "node": ">=12" + "node": ">=10" } }, "node_modules/yauzl": { - "version": "2.10.0", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.1.3.tgz", + "integrity": "sha512-JCCdmlJJWv7L0q/KylOekyRaUrdEoUxWkWVcgorosTROCFWiS9p2NNPE9Yb91ak7b1N5SxAZEliWpspbZccivw==", "dev": true, "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" + "pend": "~1.2.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/yauzl/node_modules/buffer-crc32": { "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, "license": "MIT", "engines": { @@ -15641,6 +16267,8 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "license": "MIT", "engines": { @@ -15677,27 +16305,21 @@ } }, "node_modules/youch": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/youch/-/youch-3.3.3.tgz", - "integrity": "sha512-qSFXUk3UZBLfggAW3dJKg0BMblG5biqSF8M34E06o5CSsZtH92u9Hqmj2RzGiHDi64fhe83+4tENFP2DB6t6ZA==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/youch/-/youch-3.3.4.tgz", + "integrity": "sha512-UeVBXie8cA35DS6+nBkls68xaBBXCye0CNznrhszZjTbRVnJKQuNsyLKBTTL4ln1o1rh2PKtv35twV7irj5SEg==", "dev": true, + "license": "MIT", "dependencies": { - "cookie": "^0.5.0", + "cookie": "^0.7.1", "mustache": "^4.2.0", "stacktracey": "^2.1.8" } }, - "node_modules/youch/node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/zip-stream": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", + "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", "dev": true, "license": "MIT", "dependencies": { @@ -15714,55 +16336,54 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" } }, "packages/connect": { "name": "@connectrpc/connect", - "version": "1.6.1", + "version": "2.0.0-rc.2", "license": "Apache-2.0", "devDependencies": { "@bufbuild/buf": "^1.39.0", - "@bufbuild/protoc-gen-es": "^1.10.0", + "@bufbuild/protoc-gen-es": "^2.1.0", "@types/jasmine": "^5.0.0", - "jasmine": "^5.2.0", - "undici": "^5.28.4" + "jasmine": "^5.2.0" }, "peerDependencies": { - "@bufbuild/protobuf": "^1.10.0" + "@bufbuild/protobuf": "^2.2.0" } }, "packages/connect-cloudflare": { "name": "@connectrpc/connect-cloudflare", "dependencies": { - "@bufbuild/protobuf": "^1.10.0", - "@connectrpc/connect": "1.6.1", - "@connectrpc/connect-node": "1.6.1" + "@bufbuild/protobuf": "^2.2.0", + "@connectrpc/connect": "2.0.0-rc.2", + "@connectrpc/connect-node": "2.0.0-rc.2" }, "devDependencies": { "@cloudflare/workers-types": "^4.20240821.1", - "@connectrpc/connect-conformance": "^1.6.1", + "@connectrpc/connect-conformance": "^2.0.0-rc.2", "tsx": "^4.19.0", "wrangler": "^3.73.0" } }, "packages/connect-conformance": { "name": "@connectrpc/connect-conformance", - "version": "1.6.1", + "version": "2.0.0-rc.2", "dependencies": { - "@bufbuild/protobuf": "^1.10.0", - "@connectrpc/connect": "1.6.1", + "@bufbuild/protobuf": "^2.2.0", + "@connectrpc/connect": "2.0.0-rc.2", "fflate": "^0.8.1", - "tar-stream": "^3.1.7", - "undici": "^5.28.4" + "tar-stream": "^3.1.7" }, "bin": { "connectconformance": "bin/connectconformance.cjs" }, "devDependencies": { "@bufbuild/buf": "^1.39.0", - "@connectrpc/protoc-gen-connect-es": "1.6.1", + "@bufbuild/protoc-gen-es": "^2.1.0", "@types/debug": "^4.1.12", "@types/node-forge": "^1.3.9", "@types/tar-stream": "^3.1.3" @@ -15770,52 +16391,53 @@ }, "packages/connect-express": { "name": "@connectrpc/connect-express", - "version": "1.6.1", + "version": "2.0.0-rc.2", "license": "Apache-2.0", "devDependencies": { - "@connectrpc/connect": "1.6.1", - "@connectrpc/connect-conformance": "^1.6.1", - "@connectrpc/connect-node": "1.6.1", + "@connectrpc/connect": "2.0.0-rc.2", + "@connectrpc/connect-conformance": "^2.0.0-rc.2", + "@connectrpc/connect-node": "2.0.0-rc.2", "@types/express": "^4.17.18", "express": "^4.19.2", "tsx": "^4.19.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.14.1" }, "peerDependencies": { - "@bufbuild/protobuf": "^1.10.0", - "@connectrpc/connect": "1.6.1", - "@connectrpc/connect-node": "1.6.1" + "@bufbuild/protobuf": "^2.2.0", + "@connectrpc/connect": "2.0.0-rc.2", + "@connectrpc/connect-node": "2.0.0-rc.2" } }, "packages/connect-fastify": { "name": "@connectrpc/connect-fastify", - "version": "1.6.1", + "version": "2.0.0-rc.2", "license": "Apache-2.0", "devDependencies": { - "@connectrpc/connect": "1.6.1", - "@connectrpc/connect-conformance": "^1.6.1", - "@connectrpc/connect-node": "1.6.1" + "@connectrpc/connect": "2.0.0-rc.2", + "@connectrpc/connect-conformance": "^2.0.0-rc.2", + "@connectrpc/connect-node": "2.0.0-rc.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.14.1" }, "peerDependencies": { - "@bufbuild/protobuf": "^1.10.0", - "@connectrpc/connect": "1.6.1", - "@connectrpc/connect-node": "1.6.1", + "@bufbuild/protobuf": "^2.2.0", + "@connectrpc/connect": "2.0.0-rc.2", + "@connectrpc/connect-node": "2.0.0-rc.2", "fastify": "^4.22.1" } }, "packages/connect-migrate": { "name": "@connectrpc/connect-migrate", - "version": "1.6.1", + "version": "2.0.0-rc.2", "license": "Apache-2.0", "dependencies": { "fast-glob": "3.3.2", "jscodeshift": "17.0.0", - "semver": "^7.6.3" + "semver": "^7.6.3", + "yaml": "^2.5.1" }, "bin": { "connect-migrate": "bin/connect-migrate" @@ -15825,56 +16447,52 @@ "@types/semver": "^7.5.8" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.14.1" } }, "packages/connect-next": { "name": "@connectrpc/connect-next", - "version": "1.6.1", + "version": "2.0.0-rc.2", "license": "Apache-2.0", "devDependencies": { - "@connectrpc/connect": "1.6.1", - "@connectrpc/connect-node": "1.6.1" + "@connectrpc/connect": "2.0.0-rc.2", + "@connectrpc/connect-node": "2.0.0-rc.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.14.1" }, "peerDependencies": { - "@bufbuild/protobuf": "^1.10.0", - "@connectrpc/connect": "1.6.1", - "@connectrpc/connect-node": "1.6.1", + "@bufbuild/protobuf": "^2.2.0", + "@connectrpc/connect": "2.0.0-rc.2", + "@connectrpc/connect-node": "2.0.0-rc.2", "next": "^13.2.4 || ^14.2.5" } }, "packages/connect-node": { "name": "@connectrpc/connect-node", - "version": "1.6.1", + "version": "2.0.0-rc.2", "license": "Apache-2.0", - "dependencies": { - "undici": "^5.28.4" - }, "devDependencies": { - "@connectrpc/connect-conformance": "^1.6.1", + "@connectrpc/connect-conformance": "^2.0.0-rc.2", "@types/jasmine": "^5.0.0", "jasmine": "^5.2.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.14.1" }, "peerDependencies": { - "@bufbuild/protobuf": "^1.10.0", - "@connectrpc/connect": "1.6.1" + "@bufbuild/protobuf": "^2.2.0", + "@connectrpc/connect": "2.0.0-rc.2" } }, "packages/connect-web": { "name": "@connectrpc/connect-web", - "version": "1.6.1", + "version": "2.0.0-rc.2", "license": "Apache-2.0", "devDependencies": { "@bufbuild/buf": "^1.39.0", - "@bufbuild/protoc-gen-es": "^1.10.0", - "@connectrpc/connect-conformance": "^1.6.1", - "@connectrpc/protoc-gen-connect-es": "^1.6.1", + "@bufbuild/protoc-gen-es": "^2.1.0", + "@connectrpc/connect-conformance": "^2.0.0-rc.2", "@wdio/browserstack-service": "^9.0.9", "@wdio/cli": "^9.0.9", "@wdio/jasmine-framework": "^9.0.9", @@ -15883,17 +16501,17 @@ "webdriverio": "^8.39.1" }, "peerDependencies": { - "@bufbuild/protobuf": "^1.10.0", - "@connectrpc/connect": "1.6.1" + "@bufbuild/protobuf": "^2.2.0", + "@connectrpc/connect": "2.0.0-rc.2" } }, "packages/connect-web-bench": { "name": "@connectrpc/connect-web-bench", "dependencies": { "@bufbuild/buf": "^1.39.0", - "@bufbuild/protobuf": "^1.10.0", - "@bufbuild/protoc-gen-es": "^1.10.0", - "@connectrpc/connect-web": "1.6.1", + "@bufbuild/protobuf": "^2.2.0", + "@bufbuild/protoc-gen-es": "^2.1.0", + "@connectrpc/connect-web": "2.0.0-rc.2", "@types/brotli": "^1.3.4", "brotli": "^1.3.3", "esbuild": "^0.19.8", @@ -15904,48 +16522,182 @@ "packages/example": { "name": "@connectrpc/example", "dependencies": { - "@bufbuild/protobuf": "^1.10.0", - "@connectrpc/connect-node": "^1.6.1", - "@connectrpc/connect-web": "^1.6.1", - "tsx": "^4.19.0" + "@bufbuild/protobuf": "^2.2.0", + "@connectrpc/connect-node": "^2.0.0-rc.2", + "@connectrpc/connect-web": "^2.0.0-rc.2", + "tsx": "^4.16.5" }, "devDependencies": { "@bufbuild/buf": "^1.39.0", - "@bufbuild/protoc-gen-es": "^1.10.0", - "@connectrpc/protoc-gen-connect-es": "^1.6.1", + "@bufbuild/protoc-gen-es": "^2.1.0", "@types/express": "^4.17.18", "esbuild": "^0.19.8", "typescript": "^5.5.4" }, "engines": { - "node": ">=16" + "node": ">=18.14.1" + } + }, + "packages/typescript-compat/v4.9.x": { + "name": "ts4.9", + "dependencies": { + "@connectrpc/connect-conformance": "*", + "@connectrpc/example": "*", + "@types/node": "22.5.4", + "typescript": "4.9.x" + } + }, + "packages/typescript-compat/v4.9.x/node_modules/@types/node": { + "version": "22.5.4", + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "packages/typescript-compat/v4.9.x/node_modules/typescript": { + "version": "4.9.5", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "packages/typescript-compat/v5.0.x": { + "name": "ts5.0", + "dependencies": { + "@connectrpc/connect-conformance": "*", + "@connectrpc/example": "*", + "@types/node": "22.5.4", + "typescript": "5.0.x" + } + }, + "packages/typescript-compat/v5.0.x/node_modules/@types/node": { + "version": "22.5.4", + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" } }, - "packages/protoc-gen-connect-es": { - "name": "@connectrpc/protoc-gen-connect-es", - "version": "1.6.1", + "packages/typescript-compat/v5.0.x/node_modules/typescript": { + "version": "5.0.4", "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=12.20" + } + }, + "packages/typescript-compat/v5.1.x": { + "name": "ts5.1", "dependencies": { - "@bufbuild/protobuf": "^1.10.0", - "@bufbuild/protoplugin": "^1.10.0" + "@connectrpc/connect-conformance": "*", + "@connectrpc/example": "*", + "@types/node": "22.5.4", + "typescript": "5.1.x" + } + }, + "packages/typescript-compat/v5.1.x/node_modules/@types/node": { + "version": "22.5.4", + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "packages/typescript-compat/v5.1.x/node_modules/typescript": { + "version": "5.1.6", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, + "engines": { + "node": ">=14.17" + } + }, + "packages/typescript-compat/v5.2.x": { + "name": "ts5.2", + "dependencies": { + "@connectrpc/connect-conformance": "*", + "@connectrpc/example": "*", + "@types/node": "22.5.4", + "typescript": "5.2.x" + } + }, + "packages/typescript-compat/v5.2.x/node_modules/@types/node": { + "version": "22.5.4", + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "packages/typescript-compat/v5.2.x/node_modules/typescript": { + "version": "5.2.2", + "license": "Apache-2.0", "bin": { - "protoc-gen-connect-es": "bin/protoc-gen-connect-es" + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, "engines": { - "node": ">=16.0.0" + "node": ">=14.17" + } + }, + "packages/typescript-compat/v5.3.x": { + "name": "ts5.3", + "dependencies": { + "@connectrpc/connect-conformance": "*", + "@connectrpc/example": "*", + "@types/node": "22.5.4", + "typescript": "5.3.x" + } + }, + "packages/typescript-compat/v5.3.x/node_modules/@types/node": { + "version": "22.5.4", + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "packages/typescript-compat/v5.3.x/node_modules/typescript": { + "version": "5.3.3", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, - "peerDependencies": { - "@bufbuild/protoc-gen-es": "^1.10.0", - "@connectrpc/connect": "1.6.1" + "engines": { + "node": ">=14.17" + } + }, + "packages/typescript-compat/v5.4.x": { + "name": "ts5.4", + "dependencies": { + "@connectrpc/connect-conformance": "*", + "@connectrpc/example": "*", + "@types/node": "22.5.4", + "typescript": "5.4.x" + } + }, + "packages/typescript-compat/v5.4.x/node_modules/@types/node": { + "version": "22.5.4", + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "packages/typescript-compat/v5.4.x/node_modules/typescript": { + "version": "5.4.5", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, - "peerDependenciesMeta": { - "@bufbuild/protoc-gen-es": { - "optional": true - }, - "@connectrpc/connect": { - "optional": true - } + "engines": { + "node": ">=14.17" } } } diff --git a/package.json b/package.json index d99881895..1d101c9c0 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,6 @@ "private": true, "workspaces": [ "packages/connect", - "packages/protoc-gen-connect-es", "packages/connect-web", "packages/connect-node", "packages/connect-fastify", @@ -13,7 +12,8 @@ "packages/example", "packages/connect-migrate", "packages/connect-conformance", - "packages/connect-cloudflare" + "packages/connect-cloudflare", + "packages/typescript-compat/*" ], "scripts": { "all": "turbo run --ui tui build format test conformance bundle-size lint attw license-header", @@ -28,10 +28,6 @@ }, "type": "module", "engineStrict": true, - "engines": { - "node": ">=16", - "npm": ">=8" - }, "packageManager": "npm@10.1.0", "licenseHeader": { "licenseType": "apache", diff --git a/packages/connect-cloudflare/buf.gen.yaml b/packages/connect-cloudflare/buf.gen.yaml new file mode 100644 index 000000000..0a01ab396 --- /dev/null +++ b/packages/connect-cloudflare/buf.gen.yaml @@ -0,0 +1,9 @@ +# Learn more: https://buf.build/docs/configuration/v2/buf-gen-yaml +version: v2 +# Deletes the directories specified in the `out` field for all plugins before running code generation. +clean: true +plugins: + - local: protoc-gen-es + include_imports: true + out: ./conformance/gen + opt: target=ts,import_extension=.js diff --git a/packages/connect-cloudflare/buf.lock b/packages/connect-cloudflare/buf.lock new file mode 100644 index 000000000..f75529efd --- /dev/null +++ b/packages/connect-cloudflare/buf.lock @@ -0,0 +1,6 @@ +# Generated by buf. DO NOT EDIT. +version: v2 +deps: + - name: buf.build/connectrpc/conformance + commit: 33fdffe4ab5f4dafac98ce6323cba37d + digest: b5:d50a376b4832be500955bcc34c777ee0e78a956b540274432b1c342d8c7c280f118a8288fd02675035351ea2f63c7155cd73c88d0cb6ddb881735a69d7ea6583 diff --git a/packages/connect-cloudflare/buf.yaml b/packages/connect-cloudflare/buf.yaml new file mode 100644 index 000000000..1af8aac85 --- /dev/null +++ b/packages/connect-cloudflare/buf.yaml @@ -0,0 +1,11 @@ +version: v2 +modules: + - path: conformance/proto +deps: + - buf.build/connectrpc/conformance +lint: + use: + - DEFAULT +breaking: + use: + - FILE diff --git a/packages/connect-cloudflare/conformance/client-worker.ts b/packages/connect-cloudflare/conformance/client-worker.ts index 2b296d61a..8ffdc0f49 100644 --- a/packages/connect-cloudflare/conformance/client-worker.ts +++ b/packages/connect-cloudflare/conformance/client-worker.ts @@ -12,55 +12,57 @@ // See the License for the specific language governing permissions and // limitations under the License. -import { createRegistry } from "@bufbuild/protobuf"; +import { create, createRegistry } from "@bufbuild/protobuf"; import { invokeWithPromiseClient, - BidiStreamRequest, - ClientCompatResponse, - ClientErrorResult, - ClientStreamRequest, - IdempotentUnaryRequest, - ConformancePayload_RequestInfo, - ServerStreamRequest, - UnaryRequest, - UnimplementedRequest, + UnaryRequestSchema, + ServerStreamRequestSchema, + ClientStreamRequestSchema, + BidiStreamRequestSchema, + UnimplementedRequestSchema, + IdempotentUnaryRequestSchema, + ConformancePayload_RequestInfoSchema, + ClientCompatResponseSchema, + ClientErrorResultSchema, } from "@connectrpc/connect-conformance"; import { createTransport } from "./transport.js"; import { createWorkerHandler } from "./handler.js"; -import { InvokeService } from "./invoke-service.js"; +import { InvokeService } from "./gen/invoke/v1/invoke_pb.js"; export default createWorkerHandler({ jsonOptions: { - typeRegistry: createRegistry( - UnaryRequest, - ServerStreamRequest, - ClientStreamRequest, - BidiStreamRequest, - UnimplementedRequest, - IdempotentUnaryRequest, - ConformancePayload_RequestInfo, + registry: createRegistry( + UnaryRequestSchema, + ServerStreamRequestSchema, + ClientStreamRequestSchema, + BidiStreamRequestSchema, + UnimplementedRequestSchema, + IdempotentUnaryRequestSchema, + ConformancePayload_RequestInfoSchema, ), }, routes({ service }) { service(InvokeService, { async invoke(req) { - const res = new ClientCompatResponse({ - testName: req.testName, + const res = create(ClientCompatResponseSchema, { + testName: req.request?.testName, }); try { const invokeResult = await invokeWithPromiseClient( - createTransport(req), - req, + createTransport(req.request!), + req.request!, ); res.result = { case: "response", value: invokeResult }; } catch (e) { res.result = { case: "error", - value: new ClientErrorResult({ message: (e as Error).message }), + value: create(ClientErrorResultSchema, { + message: (e as Error).message, + }), }; } - return res; + return { response: res }; }, }); }, diff --git a/packages/connect-cloudflare/conformance/client.ts b/packages/connect-cloudflare/conformance/client.ts index 37750f6a1..19fa177ab 100755 --- a/packages/connect-cloudflare/conformance/client.ts +++ b/packages/connect-cloudflare/conformance/client.ts @@ -13,9 +13,9 @@ // limitations under the License. import { - ClientCompatRequest, - ClientCompatResponse, - ClientErrorResult, + ClientCompatRequestSchema, + ClientCompatResponseSchema, + ClientErrorResultSchema, readSizeDelimitedBuffers, writeSizeDelimitedBuffer, } from "@connectrpc/connect-conformance"; @@ -26,8 +26,9 @@ import { } from "@connectrpc/connect-node"; import { createClient } from "@connectrpc/connect"; import type { Transport } from "@connectrpc/connect"; -import { InvokeService } from "./invoke-service.js"; +import { InvokeService } from "./gen/invoke/v1/invoke_pb.js"; import { parseArgs } from "node:util"; +import { create, fromBinary, toBinary } from "@bufbuild/protobuf"; const { values: flags } = parseArgs({ args: process.argv.slice(2), @@ -66,21 +67,24 @@ async function main() { } const client = createClient(InvokeService, transport); for await (const next of readSizeDelimitedBuffers(process.stdin)) { - const req = ClientCompatRequest.fromBinary(next); + const req = fromBinary(ClientCompatRequestSchema, next); req.host = process.env["CLOUDFLARE_WORKERS_REFERENCE_SERVER_HOST"]!; - let res = new ClientCompatResponse({ + let res = create(ClientCompatResponseSchema, { testName: req.testName, }); try { - res = await client.invoke(req); + const response = await client.invoke({ request: req }); + res = response.response ?? res; } catch (e) { res.result = { case: "error", - value: new ClientErrorResult({ + value: create(ClientErrorResultSchema, { message: (e as Error).message, }), }; } - process.stdout.write(writeSizeDelimitedBuffer(res.toBinary())); + process.stdout.write( + writeSizeDelimitedBuffer(toBinary(ClientCompatResponseSchema, res)), + ); } } diff --git a/packages/connect-cloudflare/conformance/gen/connectrpc/conformance/v1/client_compat_pb.ts b/packages/connect-cloudflare/conformance/gen/connectrpc/conformance/v1/client_compat_pb.ts new file mode 100644 index 000000000..a308b61c7 --- /dev/null +++ b/packages/connect-cloudflare/conformance/gen/connectrpc/conformance/v1/client_compat_pb.ts @@ -0,0 +1,550 @@ +// Copyright 2021-2024 The Connect Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts,import_extension=.js" +// @generated from file connectrpc/conformance/v1/client_compat.proto (package connectrpc.conformance.v1, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { + Codec, + Compression, + HTTPVersion, + Protocol, + StreamType, + TLSCreds, +} from "./config_pb.js"; +import { file_connectrpc_conformance_v1_config } from "./config_pb.js"; +import type { + ConformancePayload, + Error, + Header, + RawHTTPRequest, +} from "./service_pb.js"; +import { file_connectrpc_conformance_v1_service } from "./service_pb.js"; +import type { Any, Empty } from "@bufbuild/protobuf/wkt"; +import { + file_google_protobuf_any, + file_google_protobuf_empty, + file_google_protobuf_struct, +} from "@bufbuild/protobuf/wkt"; +import type { JsonObject, Message } from "@bufbuild/protobuf"; + +/** + * Describes the file connectrpc/conformance/v1/client_compat.proto. + */ +export const file_connectrpc_conformance_v1_client_compat: GenFile = + /*@__PURE__*/ + fileDesc( + "Ci1jb25uZWN0cnBjL2NvbmZvcm1hbmNlL3YxL2NsaWVudF9jb21wYXQucHJvdG8SGWNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEi/QcKE0NsaWVudENvbXBhdFJlcXVlc3QSEQoJdGVzdF9uYW1lGAEgASgJEjwKDGh0dHBfdmVyc2lvbhgCIAEoDjImLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuSFRUUFZlcnNpb24SNQoIcHJvdG9jb2wYAyABKA4yIy5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLlByb3RvY29sEi8KBWNvZGVjGAQgASgOMiAuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5Db2RlYxI7Cgtjb21wcmVzc2lvbhgFIAEoDjImLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuQ29tcHJlc3Npb24SDAoEaG9zdBgGIAEoCRIMCgRwb3J0GAcgASgNEhcKD3NlcnZlcl90bHNfY2VydBgIIAEoDBI9ChBjbGllbnRfdGxzX2NyZWRzGAkgASgLMiMuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5UTFNDcmVkcxIdChVtZXNzYWdlX3JlY2VpdmVfbGltaXQYCiABKA0SFAoHc2VydmljZRgLIAEoCUgAiAEBEhMKBm1ldGhvZBgMIAEoCUgBiAEBEjoKC3N0cmVhbV90eXBlGA0gASgOMiUuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5TdHJlYW1UeXBlEhsKE3VzZV9nZXRfaHR0cF9tZXRob2QYDiABKAgSOgoPcmVxdWVzdF9oZWFkZXJzGA8gAygLMiEuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5IZWFkZXISLgoQcmVxdWVzdF9tZXNzYWdlcxgQIAMoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnkSFwoKdGltZW91dF9tcxgRIAEoDUgCiAEBEhgKEHJlcXVlc3RfZGVsYXlfbXMYEiABKA0SRQoGY2FuY2VsGBMgASgLMjUuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5DbGllbnRDb21wYXRSZXF1ZXN0LkNhbmNlbBI+CgtyYXdfcmVxdWVzdBgUIAEoCzIpLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuUmF3SFRUUFJlcXVlc3QajAEKBkNhbmNlbBIzChFiZWZvcmVfY2xvc2Vfc2VuZBgBIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAEh0KE2FmdGVyX2Nsb3NlX3NlbmRfbXMYAiABKA1IABIdChNhZnRlcl9udW1fcmVzcG9uc2VzGAMgASgNSABCDwoNY2FuY2VsX3RpbWluZ0IKCghfc2VydmljZUIJCgdfbWV0aG9kQg0KC190aW1lb3V0X21zIrcBChRDbGllbnRDb21wYXRSZXNwb25zZRIRCgl0ZXN0X25hbWUYASABKAkSQwoIcmVzcG9uc2UYAiABKAsyLy5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLkNsaWVudFJlc3BvbnNlUmVzdWx0SAASPQoFZXJyb3IYAyABKAsyLC5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLkNsaWVudEVycm9yUmVzdWx0SABCCAoGcmVzdWx0IuYCChRDbGllbnRSZXNwb25zZVJlc3VsdBI7ChByZXNwb25zZV9oZWFkZXJzGAEgAygLMiEuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5IZWFkZXISPwoIcGF5bG9hZHMYAiADKAsyLS5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLkNvbmZvcm1hbmNlUGF5bG9hZBIvCgVlcnJvchgDIAEoCzIgLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuRXJyb3ISPAoRcmVzcG9uc2VfdHJhaWxlcnMYBCADKAsyIS5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLkhlYWRlchIbChNudW1fdW5zZW50X3JlcXVlc3RzGAUgASgFEh0KEGh0dHBfc3RhdHVzX2NvZGUYBiABKAVIAIgBARIQCghmZWVkYmFjaxgHIAMoCUITChFfaHR0cF9zdGF0dXNfY29kZSIkChFDbGllbnRFcnJvclJlc3VsdBIPCgdtZXNzYWdlGAEgASgJIuABCgtXaXJlRGV0YWlscxIaChJhY3R1YWxfc3RhdHVzX2NvZGUYASABKAUSMgoRY29ubmVjdF9lcnJvcl9yYXcYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Ej8KFGFjdHVhbF9odHRwX3RyYWlsZXJzGAMgAygLMiEuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5IZWFkZXISJAoXYWN0dWFsX2dycGN3ZWJfdHJhaWxlcnMYBCABKAlIAIgBAUIaChhfYWN0dWFsX2dycGN3ZWJfdHJhaWxlcnNiBnByb3RvMw", + [ + file_connectrpc_conformance_v1_config, + file_connectrpc_conformance_v1_service, + file_google_protobuf_any, + file_google_protobuf_empty, + file_google_protobuf_struct, + ], + ); + +/** + * Describes one call the client should make. The client reads + * these from stdin and, for each one, invokes an RPC as directed + * and writes the results (in the form of a ClientCompatResponse + * message) to stdout. + * + * @generated from message connectrpc.conformance.v1.ClientCompatRequest + */ +export type ClientCompatRequest = + Message<"connectrpc.conformance.v1.ClientCompatRequest"> & { + /** + * The name of the test that this request is performing. + * When writing test cases, this is a required field. + * + * @generated from field: string test_name = 1; + */ + testName: string; + + /** + * Test suite YAML definitions should NOT set values for these next + * nine fields (fields 2 - 10). They are automatically populated by the test + * runner. If a test is specific to one of these values, it should instead be + * indicated in the test suite itself (where it defines the required + * features and relevant values for these fields). + * + * The HTTP version to use for the test (i.e. HTTP/1.1, HTTP/2, HTTP/3). + * + * @generated from field: connectrpc.conformance.v1.HTTPVersion http_version = 2; + */ + httpVersion: HTTPVersion; + + /** + * The protocol to use for the test (i.e. Connect, gRPC, gRPC-web). + * + * @generated from field: connectrpc.conformance.v1.Protocol protocol = 3; + */ + protocol: Protocol; + + /** + * The codec to use for the test (i.e. JSON, proto/binary). + * + * @generated from field: connectrpc.conformance.v1.Codec codec = 4; + */ + codec: Codec; + + /** + * The compression to use for the test (i.e. brotli, gzip, identity). + * + * @generated from field: connectrpc.conformance.v1.Compression compression = 5; + */ + compression: Compression; + + /** + * The server host that this request will be sent to. + * + * @generated from field: string host = 6; + */ + host: string; + + /** + * The server port that this request will be sent to. + * + * @generated from field: uint32 port = 7; + */ + port: number; + + /** + * If non-empty, the server is using TLS. The bytes are the + * server's PEM-encoded certificate, which the client should + * verify and trust. + * + * @generated from field: bytes server_tls_cert = 8; + */ + serverTlsCert: Uint8Array; + + /** + * If present, the client certificate credentials to use to + * authenticate with the server. This will only be present + * when server_tls_cert is non-empty. + * + * @generated from field: connectrpc.conformance.v1.TLSCreds client_tls_creds = 9; + */ + clientTlsCreds?: TLSCreds; + + /** + * If non-zero, indicates the maximum size in bytes for a message. + * If the server sends anything larger, the client should reject it. + * + * @generated from field: uint32 message_receive_limit = 10; + */ + messageReceiveLimit: number; + + /** + * The fully-qualified name of the service this test will interact with. + * If specified, method must also be specified. + * If not specified, defaults to "connectrpc.conformance.v1.ConformanceService". + * + * @generated from field: optional string service = 11; + */ + service?: string; + + /** + * The method on `service` that will be called. + * If specified, service must also be specified. + * If not specified, the test runner will auto-populate this field based on the stream_type. + * + * @generated from field: optional string method = 12; + */ + method?: string; + + /** + * The stream type of `method` (i.e. unary, client stream, server stream, full-duplex bidi + * stream, or half-duplex bidi stream). + * When writing test cases, this is a required field. + * + * @generated from field: connectrpc.conformance.v1.StreamType stream_type = 13; + */ + streamType: StreamType; + + /** + * If protocol indicates Connect and stream type indicates + * Unary, this instructs the client to use a GET HTTP method + * when making the request. + * + * @generated from field: bool use_get_http_method = 14; + */ + useGetHttpMethod: boolean; + + /** + * Any request headers that should be sent as part of the request. + * These include only custom header metadata. Headers that are + * part of the relevant protocol (such as "content-type", etc) should + * not be stated here. + * + * @generated from field: repeated connectrpc.conformance.v1.Header request_headers = 15; + */ + requestHeaders: Header[]; + + /** + * The actual request messages that will sent to the server. + * The type URL for all entries should be equal to the request type of the + * method. + * There must be exactly one for unary and server stream methods but + * can be zero or more for client and bidi stream methods. + * For client and bidi stream methods, all entries will have the + * same type URL. + * + * @generated from field: repeated google.protobuf.Any request_messages = 16; + */ + requestMessages: Any[]; + + /** + * The timeout, in milliseconds, for the request. This is equivalent to a + * deadline for the request. If unset, there will be no timeout. + * + * @generated from field: optional uint32 timeout_ms = 17; + */ + timeoutMs?: number; + + /** + * Wait this many milliseconds before sending a request message. + * For client or bidi stream methods, this delay should be + * applied before each request sent. + * + * @generated from field: uint32 request_delay_ms = 18; + */ + requestDelayMs: number; + + /** + * If present, the client should cancel the RPC instead of + * allowing to complete normally. + * + * @generated from field: connectrpc.conformance.v1.ClientCompatRequest.Cancel cancel = 19; + */ + cancel?: ClientCompatRequest_Cancel; + + /** + * The following field is only used by the reference client. If + * you are implementing a client under test, you may ignore it + * or respond with an error if the client receives a request where + * it is set. + * + * When this field is present, it defines the actual HTTP request + * that will be sent. The above group of fields must still be + * provided and valid so that the reference client knows how it + * should try to interpret the server's response. + * + * @generated from field: connectrpc.conformance.v1.RawHTTPRequest raw_request = 20; + */ + rawRequest?: RawHTTPRequest; + }; + +/** + * Describes the message connectrpc.conformance.v1.ClientCompatRequest. + * Use `create(ClientCompatRequestSchema)` to create a new message. + */ +export const ClientCompatRequestSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_client_compat, 0); + +/** + * @generated from message connectrpc.conformance.v1.ClientCompatRequest.Cancel + */ +export type ClientCompatRequest_Cancel = + Message<"connectrpc.conformance.v1.ClientCompatRequest.Cancel"> & { + /** + * These fields determine the timing of cancellation. + * If none are present, the client should cancel immediately + * after all request messages are sent and the send side is + * closed (as if the after_close_send_ms field were present + * and zero). + * + * @generated from oneof connectrpc.conformance.v1.ClientCompatRequest.Cancel.cancel_timing + */ + cancelTiming: + | { + /** + * When present, the client should cancel *instead of* + * closing the send side of the stream, after all requests + * have been sent. + * + * This applies only to client and bidi stream RPCs. + * + * @generated from field: google.protobuf.Empty before_close_send = 1; + */ + value: Empty; + case: "beforeCloseSend"; + } + | { + /** + * When present, the client should delay for this many + * milliseconds after closing the send side of the stream + * and then cancel. + * + * This applies to all types of RPCs. + * + * For unary and server stream RPCs, where the API usually + * does not allow explicitly closing the send side, the + * cancellation should be done immediately after invoking + * the RPC (which should implicitly send the one-and-only + * request and then close the send-side). + * + * For APIs where unary RPCs block until the response + * is received, there is no point after the request is + * sent but before a response is received to cancel. So + * the client must arrange for the RPC to be canceled + * asynchronously before invoking the blocking unary call. + * + * @generated from field: uint32 after_close_send_ms = 2; + */ + value: number; + case: "afterCloseSendMs"; + } + | { + /** + * When present, the client should cancel right after + * reading this number of response messages from the stream. + * When present, this will be greater than zero. + * + * This applies only to server and bidi stream RPCs. + * + * @generated from field: uint32 after_num_responses = 3; + */ + value: number; + case: "afterNumResponses"; + } + | { case: undefined; value?: undefined }; + }; + +/** + * Describes the message connectrpc.conformance.v1.ClientCompatRequest.Cancel. + * Use `create(ClientCompatRequest_CancelSchema)` to create a new message. + */ +export const ClientCompatRequest_CancelSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_client_compat, 0, 0); + +/** + * The outcome of one ClientCompatRequest. + * + * @generated from message connectrpc.conformance.v1.ClientCompatResponse + */ +export type ClientCompatResponse = + Message<"connectrpc.conformance.v1.ClientCompatResponse"> & { + /** + * The test name that this response applies to. + * + * @generated from field: string test_name = 1; + */ + testName: string; + + /** + * These fields determine the outcome of the request. + * + * With regards to errors, any unexpected errors that prevent the client from + * issuing the RPC and following the instructions implied by the request can + * be reported as an error. These would be errors creating an RPC client from + * the request parameters or unsupported/illegal values in the request + * (e.g. a unary request that defines zero or multiple request messages). + * + * However, once the RPC is issued, any resulting error should instead be encoded in response. + * + * @generated from oneof connectrpc.conformance.v1.ClientCompatResponse.result + */ + result: + | { + /** + * @generated from field: connectrpc.conformance.v1.ClientResponseResult response = 2; + */ + value: ClientResponseResult; + case: "response"; + } + | { + /** + * @generated from field: connectrpc.conformance.v1.ClientErrorResult error = 3; + */ + value: ClientErrorResult; + case: "error"; + } + | { case: undefined; value?: undefined }; + }; + +/** + * Describes the message connectrpc.conformance.v1.ClientCompatResponse. + * Use `create(ClientCompatResponseSchema)` to create a new message. + */ +export const ClientCompatResponseSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_client_compat, 1); + +/** + * The result of a ClientCompatRequest, which may or may not be successful. + * The client will build this message and return it back to the test runner. + * + * @generated from message connectrpc.conformance.v1.ClientResponseResult + */ +export type ClientResponseResult = + Message<"connectrpc.conformance.v1.ClientResponseResult"> & { + /** + * All response headers read from the response. + * + * @generated from field: repeated connectrpc.conformance.v1.Header response_headers = 1; + */ + responseHeaders: Header[]; + + /** + * Servers should echo back payloads that they received as part of the request. + * This field should contain all the payloads the server echoed back. Note that + * There will be zero-to-one for unary and client stream methods and + * zero-to-many for server and bidi stream methods. + * + * @generated from field: repeated connectrpc.conformance.v1.ConformancePayload payloads = 2; + */ + payloads: ConformancePayload[]; + + /** + * The error received from the actual RPC invocation. Note this is not representative + * of a runtime error and should always be the proto equivalent of a Connect + * or gRPC error. + * + * @generated from field: connectrpc.conformance.v1.Error error = 3; + */ + error?: Error; + + /** + * All response headers read from the response. + * + * @generated from field: repeated connectrpc.conformance.v1.Header response_trailers = 4; + */ + responseTrailers: Header[]; + + /** + * The number of messages that were present in the request but that could not be + * sent because an error occurred before finishing the upload. + * + * @generated from field: int32 num_unsent_requests = 5; + */ + numUnsentRequests: number; + + /** + * The following field is only set by the reference client. It communicates + * the underlying HTTP status code of the server's response. + * If you are implementing a client-under-test, you should ignore this field + * and leave it unset. + * + * @generated from field: optional int32 http_status_code = 6; + */ + httpStatusCode?: number; + + /** + * This field is used only by the reference client, and it can be used + * to provide additional feedback about problems observed in the server + * response or in client processing of the response. If non-empty, the test + * case is considered failed even if the result above matches all expectations. + * If you are implementing a client-under-test, you should ignore this field + * and leave it unset. + * + * @generated from field: repeated string feedback = 7; + */ + feedback: string[]; + }; + +/** + * Describes the message connectrpc.conformance.v1.ClientResponseResult. + * Use `create(ClientResponseResultSchema)` to create a new message. + */ +export const ClientResponseResultSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_client_compat, 2); + +/** + * The client is not able to fulfill the ClientCompatRequest. This may be due + * to a runtime error or an unexpected internal error such as the requested protocol + * not being supported. This is completely independent of the actual RPC invocation. + * + * @generated from message connectrpc.conformance.v1.ClientErrorResult + */ +export type ClientErrorResult = + Message<"connectrpc.conformance.v1.ClientErrorResult"> & { + /** + * A message describing the error that occurred. This string will be shown to + * users running conformance tests so it should include any relevant details + * that may help troubleshoot or remedy the error. + * + * @generated from field: string message = 1; + */ + message: string; + }; + +/** + * Describes the message connectrpc.conformance.v1.ClientErrorResult. + * Use `create(ClientErrorResultSchema)` to create a new message. + */ +export const ClientErrorResultSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_client_compat, 3); + +/** + * Details about various values as observed on the wire. This message is used + * only by the reference client when reporting results and should not be populated + * by clients under test. + * + * @generated from message connectrpc.conformance.v1.WireDetails + */ +export type WireDetails = Message<"connectrpc.conformance.v1.WireDetails"> & { + /** + * The HTTP status code of the response. + * + * @generated from field: int32 actual_status_code = 1; + */ + actualStatusCode: number; + + /** + * When processing an error from a Connect server, this should contain + * the actual JSON received on the wire. + * + * @generated from field: google.protobuf.Struct connect_error_raw = 2; + */ + connectErrorRaw?: JsonObject; + + /** + * Any HTTP trailers observed after the response body. These do NOT + * include trailers that conveyed via the body, as done in the gRPC-Web + * and Connect streaming protocols. + * + * @generated from field: repeated connectrpc.conformance.v1.Header actual_http_trailers = 3; + */ + actualHttpTrailers: Header[]; + + /** + * Any trailers that were transmitted in the final message of the + * response body for a gRPC-Web response. This could differ from the + * ClientResponseResult.response_trailers field since the RPC client + * library might canonicalize keys and it might choose to remove + * "grpc-status" et al from the set of metadata. This field will + * capture all of the entries and their exact on-the-wire spelling + * and formatting. + * + * @generated from field: optional string actual_grpcweb_trailers = 4; + */ + actualGrpcwebTrailers?: string; +}; + +/** + * Describes the message connectrpc.conformance.v1.WireDetails. + * Use `create(WireDetailsSchema)` to create a new message. + */ +export const WireDetailsSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_client_compat, 4); diff --git a/packages/connect-cloudflare/conformance/gen/connectrpc/conformance/v1/config_pb.ts b/packages/connect-cloudflare/conformance/gen/connectrpc/conformance/v1/config_pb.ts new file mode 100644 index 000000000..eaee74b6c --- /dev/null +++ b/packages/connect-cloudflare/conformance/gen/connectrpc/conformance/v1/config_pb.ts @@ -0,0 +1,594 @@ +// Copyright 2021-2024 The Connect Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts,import_extension=.js" +// @generated from file connectrpc/conformance/v1/config.proto (package connectrpc.conformance.v1, syntax proto3) +/* eslint-disable */ + +import type { + GenEnum, + GenFile, + GenMessage, +} from "@bufbuild/protobuf/codegenv1"; +import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file connectrpc/conformance/v1/config.proto. + */ +export const file_connectrpc_conformance_v1_config: GenFile = + /*@__PURE__*/ + fileDesc( + "CiZjb25uZWN0cnBjL2NvbmZvcm1hbmNlL3YxL2NvbmZpZy5wcm90bxIZY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MSK7AQoGQ29uZmlnEjUKCGZlYXR1cmVzGAEgASgLMiMuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5GZWF0dXJlcxI8Cg1pbmNsdWRlX2Nhc2VzGAIgAygLMiUuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5Db25maWdDYXNlEjwKDWV4Y2x1ZGVfY2FzZXMYAyADKAsyJS5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLkNvbmZpZ0Nhc2Ui5QUKCEZlYXR1cmVzEjgKCHZlcnNpb25zGAEgAygOMiYuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5IVFRQVmVyc2lvbhI2Cglwcm90b2NvbHMYAiADKA4yIy5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLlByb3RvY29sEjAKBmNvZGVjcxgDIAMoDjIgLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuQ29kZWMSPAoMY29tcHJlc3Npb25zGAQgAygOMiYuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5Db21wcmVzc2lvbhI7CgxzdHJlYW1fdHlwZXMYBSADKA4yJS5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLlN0cmVhbVR5cGUSGQoMc3VwcG9ydHNfaDJjGAYgASgISACIAQESGQoMc3VwcG9ydHNfdGxzGAcgASgISAGIAQESJgoZc3VwcG9ydHNfdGxzX2NsaWVudF9jZXJ0cxgIIAEoCEgCiAEBEh4KEXN1cHBvcnRzX3RyYWlsZXJzGAkgASgISAOIAQESMQokc3VwcG9ydHNfaGFsZl9kdXBsZXhfYmlkaV9vdmVyX2h0dHAxGAogASgISASIAQESIQoUc3VwcG9ydHNfY29ubmVjdF9nZXQYCyABKAhIBYgBARIrCh5zdXBwb3J0c19tZXNzYWdlX3JlY2VpdmVfbGltaXQYDCABKAhIBogBAUIPCg1fc3VwcG9ydHNfaDJjQg8KDV9zdXBwb3J0c190bHNCHAoaX3N1cHBvcnRzX3Rsc19jbGllbnRfY2VydHNCFAoSX3N1cHBvcnRzX3RyYWlsZXJzQicKJV9zdXBwb3J0c19oYWxmX2R1cGxleF9iaWRpX292ZXJfaHR0cDFCFwoVX3N1cHBvcnRzX2Nvbm5lY3RfZ2V0QiEKH19zdXBwb3J0c19tZXNzYWdlX3JlY2VpdmVfbGltaXQiygMKCkNvbmZpZ0Nhc2USNwoHdmVyc2lvbhgBIAEoDjImLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuSFRUUFZlcnNpb24SNQoIcHJvdG9jb2wYAiABKA4yIy5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLlByb3RvY29sEi8KBWNvZGVjGAMgASgOMiAuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5Db2RlYxI7Cgtjb21wcmVzc2lvbhgEIAEoDjImLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuQ29tcHJlc3Npb24SOgoLc3RyZWFtX3R5cGUYBSABKA4yJS5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLlN0cmVhbVR5cGUSFAoHdXNlX3RscxgGIAEoCEgAiAEBEiEKFHVzZV90bHNfY2xpZW50X2NlcnRzGAcgASgISAGIAQESJgoZdXNlX21lc3NhZ2VfcmVjZWl2ZV9saW1pdBgIIAEoCEgCiAEBQgoKCF91c2VfdGxzQhcKFV91c2VfdGxzX2NsaWVudF9jZXJ0c0IcChpfdXNlX21lc3NhZ2VfcmVjZWl2ZV9saW1pdCIlCghUTFNDcmVkcxIMCgRjZXJ0GAEgASgMEgsKA2tleRgCIAEoDCpnCgtIVFRQVmVyc2lvbhIcChhIVFRQX1ZFUlNJT05fVU5TUEVDSUZJRUQQABISCg5IVFRQX1ZFUlNJT05fMRABEhIKDkhUVFBfVkVSU0lPTl8yEAISEgoOSFRUUF9WRVJTSU9OXzMQAypkCghQcm90b2NvbBIYChRQUk9UT0NPTF9VTlNQRUNJRklFRBAAEhQKEFBST1RPQ09MX0NPTk5FQ1QQARIRCg1QUk9UT0NPTF9HUlBDEAISFQoRUFJPVE9DT0xfR1JQQ19XRUIQAypTCgVDb2RlYxIVChFDT0RFQ19VTlNQRUNJRklFRBAAEg8KC0NPREVDX1BST1RPEAESDgoKQ09ERUNfSlNPThACEhIKCkNPREVDX1RFWFQQAxoCCAEqtQEKC0NvbXByZXNzaW9uEhsKF0NPTVBSRVNTSU9OX1VOU1BFQ0lGSUVEEAASGAoUQ09NUFJFU1NJT05fSURFTlRJVFkQARIUChBDT01QUkVTU0lPTl9HWklQEAISEgoOQ09NUFJFU1NJT05fQlIQAxIUChBDT01QUkVTU0lPTl9aU1REEAQSFwoTQ09NUFJFU1NJT05fREVGTEFURRAFEhYKEkNPTVBSRVNTSU9OX1NOQVBQWRAGKtABCgpTdHJlYW1UeXBlEhsKF1NUUkVBTV9UWVBFX1VOU1BFQ0lGSUVEEAASFQoRU1RSRUFNX1RZUEVfVU5BUlkQARIdChlTVFJFQU1fVFlQRV9DTElFTlRfU1RSRUFNEAISHQoZU1RSRUFNX1RZUEVfU0VSVkVSX1NUUkVBTRADEicKI1NUUkVBTV9UWVBFX0hBTEZfRFVQTEVYX0JJRElfU1RSRUFNEAQSJwojU1RSRUFNX1RZUEVfRlVMTF9EVVBMRVhfQklESV9TVFJFQU0QBSqUAwoEQ29kZRIUChBDT0RFX1VOU1BFQ0lGSUVEEAASEQoNQ09ERV9DQU5DRUxFRBABEhAKDENPREVfVU5LTk9XThACEhkKFUNPREVfSU5WQUxJRF9BUkdVTUVOVBADEhoKFkNPREVfREVBRExJTkVfRVhDRUVERUQQBBISCg5DT0RFX05PVF9GT1VORBAFEhcKE0NPREVfQUxSRUFEWV9FWElTVFMQBhIaChZDT0RFX1BFUk1JU1NJT05fREVOSUVEEAcSGwoXQ09ERV9SRVNPVVJDRV9FWEhBVVNURUQQCBIcChhDT0RFX0ZBSUxFRF9QUkVDT05ESVRJT04QCRIQCgxDT0RFX0FCT1JURUQQChIVChFDT0RFX09VVF9PRl9SQU5HRRALEhYKEkNPREVfVU5JTVBMRU1FTlRFRBAMEhEKDUNPREVfSU5URVJOQUwQDRIUChBDT0RFX1VOQVZBSUxBQkxFEA4SEgoOQ09ERV9EQVRBX0xPU1MQDxIYChRDT0RFX1VOQVVUSEVOVElDQVRFRBAQYgZwcm90bzM", + ); + +/** + * Config defines the configuration for running conformance tests. + * This enumerates all of the "flavors" of the test suite to run. + * + * @generated from message connectrpc.conformance.v1.Config + */ +export type Config = Message<"connectrpc.conformance.v1.Config"> & { + /** + * The features supported by the client or server under test. + * This is used to filter the set of test cases that are run. + * If absent, an empty message is used. See Features for more + * on how empty/absent fields are interpreted. + * + * @generated from field: connectrpc.conformance.v1.Features features = 1; + */ + features?: Features; + + /** + * This can indicate additional permutations that are supported + * that might otherwise be excluded based on the above features. + * + * @generated from field: repeated connectrpc.conformance.v1.ConfigCase include_cases = 2; + */ + includeCases: ConfigCase[]; + + /** + * This can indicates permutations that are not supported even + * though their support might be implied by the above features. + * + * @generated from field: repeated connectrpc.conformance.v1.ConfigCase exclude_cases = 3; + */ + excludeCases: ConfigCase[]; +}; + +/** + * Describes the message connectrpc.conformance.v1.Config. + * Use `create(ConfigSchema)` to create a new message. + */ +export const ConfigSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_config, 0); + +/** + * Features define the feature set that a client or server supports. They are + * used to determine the server configurations and test cases that + * will be run. They are defined in YAML files and are specified as part of the + * --conf flag to the test runner. + * + * TODO: we could probably model some of the constraints on what are valid vs. + * invalid (i.e. conflicting/impossible) features using protovalidate rules + * + * @generated from message connectrpc.conformance.v1.Features + */ +export type Features = Message<"connectrpc.conformance.v1.Features"> & { + /** + * Supported HTTP versions. + * If empty, HTTP 1.1 and HTTP/2 are assumed. + * + * @generated from field: repeated connectrpc.conformance.v1.HTTPVersion versions = 1; + */ + versions: HTTPVersion[]; + + /** + * Supported protocols. + * If empty, all three are assumed: Connect, gRPC, and gRPC-Web. + * + * @generated from field: repeated connectrpc.conformance.v1.Protocol protocols = 2; + */ + protocols: Protocol[]; + + /** + * Supported codecs. + * If empty, "proto" and "json" are assumed. + * + * @generated from field: repeated connectrpc.conformance.v1.Codec codecs = 3; + */ + codecs: Codec[]; + + /** + * Supported compression algorithms. + * If empty, "identity" and "gzip" are assumed. + * + * @generated from field: repeated connectrpc.conformance.v1.Compression compressions = 4; + */ + compressions: Compression[]; + + /** + * Supported stream types. + * If empty, all stream types are assumed. This is usually for + * clients, since some client environments may not be able to + * support certain kinds of streaming operations, especially + * bidirectional streams. + * + * @generated from field: repeated connectrpc.conformance.v1.StreamType stream_types = 5; + */ + streamTypes: StreamType[]; + + /** + * Whether H2C (unencrypted, non-TLS HTTP/2 over cleartext) is supported. + * If absent, true is assumed. + * + * @generated from field: optional bool supports_h2c = 6; + */ + supportsH2c?: boolean; + + /** + * Whether TLS is supported. + * If absent, true is assumed. + * + * @generated from field: optional bool supports_tls = 7; + */ + supportsTls?: boolean; + + /** + * Whether the client supports TLS certificates. + * If absent, false is assumed. This should not be set if + * supports_tls is false. + * + * @generated from field: optional bool supports_tls_client_certs = 8; + */ + supportsTlsClientCerts?: boolean; + + /** + * Whether trailers are supported. + * If absent, true is assumed. If false, implies that gRPC protocol is not allowed. + * + * @generated from field: optional bool supports_trailers = 9; + */ + supportsTrailers?: boolean; + + /** + * Whether half duplex bidi streams are supported over HTTP/1.1. + * If absent, false is assumed. + * + * @generated from field: optional bool supports_half_duplex_bidi_over_http1 = 10; + */ + supportsHalfDuplexBidiOverHttp1?: boolean; + + /** + * Whether Connect via GET is supported. + * If absent, true is assumed. + * + * @generated from field: optional bool supports_connect_get = 11; + */ + supportsConnectGet?: boolean; + + /** + * Whether a message receive limit is supported. + * If absent, true is assumed. + * + * @generated from field: optional bool supports_message_receive_limit = 12; + */ + supportsMessageReceiveLimit?: boolean; +}; + +/** + * Describes the message connectrpc.conformance.v1.Features. + * Use `create(FeaturesSchema)` to create a new message. + */ +export const FeaturesSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_config, 1); + +/** + * ConfigCase represents a single resolved configuration case. When tests are + * run, the Config and the supported features therein are used to compute all + * of the cases relevant to the implementation under test. These configuration + * cases are then used to select which test cases are applicable. + * + * TODO: we could probably model some of the constraints on what is a valid + * vs. invalid config case using protovalidate rules + * + * @generated from message connectrpc.conformance.v1.ConfigCase + */ +export type ConfigCase = Message<"connectrpc.conformance.v1.ConfigCase"> & { + /** + * If unspecified, indicates cases for all versions. + * + * @generated from field: connectrpc.conformance.v1.HTTPVersion version = 1; + */ + version: HTTPVersion; + + /** + * If unspecified, indicates cases for all protocols. + * + * @generated from field: connectrpc.conformance.v1.Protocol protocol = 2; + */ + protocol: Protocol; + + /** + * If unspecified, indicates cases for all codecs. + * + * @generated from field: connectrpc.conformance.v1.Codec codec = 3; + */ + codec: Codec; + + /** + * If unspecified, indicates cases for all compression algorithms. + * + * @generated from field: connectrpc.conformance.v1.Compression compression = 4; + */ + compression: Compression; + + /** + * If unspecified, indicates cases for all stream types. + * + * @generated from field: connectrpc.conformance.v1.StreamType stream_type = 5; + */ + streamType: StreamType; + + /** + * If absent, indicates cases for plaintext (no TLS) but also for + * TLS if features indicate that TLS is supported. + * + * @generated from field: optional bool use_tls = 6; + */ + useTls?: boolean; + + /** + * If absent, indicates cases without client certs but also cases + * that use client certs if features indicate they are supported. + * + * @generated from field: optional bool use_tls_client_certs = 7; + */ + useTlsClientCerts?: boolean; + + /** + * If absent, indicates cases that do not test message receive + * limits but also cases that do test message receive limits if + * features indicate they are supported. + * + * @generated from field: optional bool use_message_receive_limit = 8; + */ + useMessageReceiveLimit?: boolean; +}; + +/** + * Describes the message connectrpc.conformance.v1.ConfigCase. + * Use `create(ConfigCaseSchema)` to create a new message. + */ +export const ConfigCaseSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_config, 2); + +/** + * TLSCreds represents credentials for TLS. It includes both a + * certificate and corresponding private key. Both are encoded + * in PEM format. + * + * @generated from message connectrpc.conformance.v1.TLSCreds + */ +export type TLSCreds = Message<"connectrpc.conformance.v1.TLSCreds"> & { + /** + * @generated from field: bytes cert = 1; + */ + cert: Uint8Array; + + /** + * @generated from field: bytes key = 2; + */ + key: Uint8Array; +}; + +/** + * Describes the message connectrpc.conformance.v1.TLSCreds. + * Use `create(TLSCredsSchema)` to create a new message. + */ +export const TLSCredsSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_config, 3); + +/** + * @generated from enum connectrpc.conformance.v1.HTTPVersion + */ +export enum HTTPVersion { + /** + * @generated from enum value: HTTP_VERSION_UNSPECIFIED = 0; + */ + HTTP_VERSION_UNSPECIFIED = 0, + + /** + * @generated from enum value: HTTP_VERSION_1 = 1; + */ + HTTP_VERSION_1 = 1, + + /** + * @generated from enum value: HTTP_VERSION_2 = 2; + */ + HTTP_VERSION_2 = 2, + + /** + * @generated from enum value: HTTP_VERSION_3 = 3; + */ + HTTP_VERSION_3 = 3, +} + +/** + * Describes the enum connectrpc.conformance.v1.HTTPVersion. + */ +export const HTTPVersionSchema: GenEnum = + /*@__PURE__*/ + enumDesc(file_connectrpc_conformance_v1_config, 0); + +/** + * @generated from enum connectrpc.conformance.v1.Protocol + */ +export enum Protocol { + /** + * @generated from enum value: PROTOCOL_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: PROTOCOL_CONNECT = 1; + */ + CONNECT = 1, + + /** + * @generated from enum value: PROTOCOL_GRPC = 2; + */ + GRPC = 2, + + /** + * TODO: Support add'l protocols: + * PROTOCOL_GRPC_WEB_TEXT = 4; + * PROTOCOL_REST_TRANSCODING = 5; + * + * @generated from enum value: PROTOCOL_GRPC_WEB = 3; + */ + GRPC_WEB = 3, +} + +/** + * Describes the enum connectrpc.conformance.v1.Protocol. + */ +export const ProtocolSchema: GenEnum = + /*@__PURE__*/ + enumDesc(file_connectrpc_conformance_v1_config, 1); + +/** + * @generated from enum connectrpc.conformance.v1.Codec + */ +export enum Codec { + /** + * @generated from enum value: CODEC_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: CODEC_PROTO = 1; + */ + PROTO = 1, + + /** + * @generated from enum value: CODEC_JSON = 2; + */ + JSON = 2, + + /** + * not used; will be ignored + * + * @generated from enum value: CODEC_TEXT = 3 [deprecated = true]; + * @deprecated + */ + TEXT = 3, +} + +/** + * Describes the enum connectrpc.conformance.v1.Codec. + */ +export const CodecSchema: GenEnum = + /*@__PURE__*/ + enumDesc(file_connectrpc_conformance_v1_config, 2); + +/** + * @generated from enum connectrpc.conformance.v1.Compression + */ +export enum Compression { + /** + * @generated from enum value: COMPRESSION_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: COMPRESSION_IDENTITY = 1; + */ + IDENTITY = 1, + + /** + * @generated from enum value: COMPRESSION_GZIP = 2; + */ + GZIP = 2, + + /** + * @generated from enum value: COMPRESSION_BR = 3; + */ + BR = 3, + + /** + * @generated from enum value: COMPRESSION_ZSTD = 4; + */ + ZSTD = 4, + + /** + * @generated from enum value: COMPRESSION_DEFLATE = 5; + */ + DEFLATE = 5, + + /** + * @generated from enum value: COMPRESSION_SNAPPY = 6; + */ + SNAPPY = 6, +} + +/** + * Describes the enum connectrpc.conformance.v1.Compression. + */ +export const CompressionSchema: GenEnum = + /*@__PURE__*/ + enumDesc(file_connectrpc_conformance_v1_config, 3); + +/** + * @generated from enum connectrpc.conformance.v1.StreamType + */ +export enum StreamType { + /** + * @generated from enum value: STREAM_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: STREAM_TYPE_UNARY = 1; + */ + UNARY = 1, + + /** + * @generated from enum value: STREAM_TYPE_CLIENT_STREAM = 2; + */ + CLIENT_STREAM = 2, + + /** + * @generated from enum value: STREAM_TYPE_SERVER_STREAM = 3; + */ + SERVER_STREAM = 3, + + /** + * @generated from enum value: STREAM_TYPE_HALF_DUPLEX_BIDI_STREAM = 4; + */ + HALF_DUPLEX_BIDI_STREAM = 4, + + /** + * @generated from enum value: STREAM_TYPE_FULL_DUPLEX_BIDI_STREAM = 5; + */ + FULL_DUPLEX_BIDI_STREAM = 5, +} + +/** + * Describes the enum connectrpc.conformance.v1.StreamType. + */ +export const StreamTypeSchema: GenEnum = + /*@__PURE__*/ + enumDesc(file_connectrpc_conformance_v1_config, 4); + +/** + * @generated from enum connectrpc.conformance.v1.Code + */ +export enum Code { + /** + * @generated from enum value: CODE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: CODE_CANCELED = 1; + */ + CANCELED = 1, + + /** + * @generated from enum value: CODE_UNKNOWN = 2; + */ + UNKNOWN = 2, + + /** + * @generated from enum value: CODE_INVALID_ARGUMENT = 3; + */ + INVALID_ARGUMENT = 3, + + /** + * @generated from enum value: CODE_DEADLINE_EXCEEDED = 4; + */ + DEADLINE_EXCEEDED = 4, + + /** + * @generated from enum value: CODE_NOT_FOUND = 5; + */ + NOT_FOUND = 5, + + /** + * @generated from enum value: CODE_ALREADY_EXISTS = 6; + */ + ALREADY_EXISTS = 6, + + /** + * @generated from enum value: CODE_PERMISSION_DENIED = 7; + */ + PERMISSION_DENIED = 7, + + /** + * @generated from enum value: CODE_RESOURCE_EXHAUSTED = 8; + */ + RESOURCE_EXHAUSTED = 8, + + /** + * @generated from enum value: CODE_FAILED_PRECONDITION = 9; + */ + FAILED_PRECONDITION = 9, + + /** + * @generated from enum value: CODE_ABORTED = 10; + */ + ABORTED = 10, + + /** + * @generated from enum value: CODE_OUT_OF_RANGE = 11; + */ + OUT_OF_RANGE = 11, + + /** + * @generated from enum value: CODE_UNIMPLEMENTED = 12; + */ + UNIMPLEMENTED = 12, + + /** + * @generated from enum value: CODE_INTERNAL = 13; + */ + INTERNAL = 13, + + /** + * @generated from enum value: CODE_UNAVAILABLE = 14; + */ + UNAVAILABLE = 14, + + /** + * @generated from enum value: CODE_DATA_LOSS = 15; + */ + DATA_LOSS = 15, + + /** + * @generated from enum value: CODE_UNAUTHENTICATED = 16; + */ + UNAUTHENTICATED = 16, +} + +/** + * Describes the enum connectrpc.conformance.v1.Code. + */ +export const CodeSchema: GenEnum = + /*@__PURE__*/ + enumDesc(file_connectrpc_conformance_v1_config, 5); diff --git a/packages/connect-cloudflare/conformance/gen/connectrpc/conformance/v1/service_pb.ts b/packages/connect-cloudflare/conformance/gen/connectrpc/conformance/v1/service_pb.ts new file mode 100644 index 000000000..2eefde0cd --- /dev/null +++ b/packages/connect-cloudflare/conformance/gen/connectrpc/conformance/v1/service_pb.ts @@ -0,0 +1,1125 @@ +// Copyright 2021-2024 The Connect Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts,import_extension=.js" +// @generated from file connectrpc/conformance/v1/service.proto (package connectrpc.conformance.v1, syntax proto3) +/* eslint-disable */ + +import type { + GenFile, + GenMessage, + GenService, +} from "@bufbuild/protobuf/codegenv1"; +import { + fileDesc, + messageDesc, + serviceDesc, +} from "@bufbuild/protobuf/codegenv1"; +import type { Code, Compression } from "./config_pb.js"; +import { file_connectrpc_conformance_v1_config } from "./config_pb.js"; +import type { Any } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_any } from "@bufbuild/protobuf/wkt"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file connectrpc/conformance/v1/service.proto. + */ +export const file_connectrpc_conformance_v1_service: GenFile = + /*@__PURE__*/ + fileDesc( + "Cidjb25uZWN0cnBjL2NvbmZvcm1hbmNlL3YxL3NlcnZpY2UucHJvdG8SGWNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEiyQIKF1VuYXJ5UmVzcG9uc2VEZWZpbml0aW9uEjsKEHJlc3BvbnNlX2hlYWRlcnMYASADKAsyIS5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLkhlYWRlchIXCg1yZXNwb25zZV9kYXRhGAIgASgMSAASMQoFZXJyb3IYAyABKAsyIC5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLkVycm9ySAASPAoRcmVzcG9uc2VfdHJhaWxlcnMYBCADKAsyIS5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLkhlYWRlchIZChFyZXNwb25zZV9kZWxheV9tcxgGIAEoDRJACgxyYXdfcmVzcG9uc2UYBSABKAsyKi5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLlJhd0hUVFBSZXNwb25zZUIKCghyZXNwb25zZSK6AgoYU3RyZWFtUmVzcG9uc2VEZWZpbml0aW9uEjsKEHJlc3BvbnNlX2hlYWRlcnMYASADKAsyIS5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLkhlYWRlchIVCg1yZXNwb25zZV9kYXRhGAIgAygMEhkKEXJlc3BvbnNlX2RlbGF5X21zGAMgASgNEi8KBWVycm9yGAQgASgLMiAuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5FcnJvchI8ChFyZXNwb25zZV90cmFpbGVycxgFIAMoCzIhLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuSGVhZGVyEkAKDHJhd19yZXNwb25zZRgGIAEoCzIqLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuUmF3SFRUUFJlc3BvbnNlInUKDFVuYXJ5UmVxdWVzdBJPChNyZXNwb25zZV9kZWZpbml0aW9uGAEgASgLMjIuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5VbmFyeVJlc3BvbnNlRGVmaW5pdGlvbhIUCgxyZXF1ZXN0X2RhdGEYAiABKAwiTwoNVW5hcnlSZXNwb25zZRI+CgdwYXlsb2FkGAEgASgLMi0uY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5Db25mb3JtYW5jZVBheWxvYWQifwoWSWRlbXBvdGVudFVuYXJ5UmVxdWVzdBJPChNyZXNwb25zZV9kZWZpbml0aW9uGAEgASgLMjIuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5VbmFyeVJlc3BvbnNlRGVmaW5pdGlvbhIUCgxyZXF1ZXN0X2RhdGEYAiABKAwiWQoXSWRlbXBvdGVudFVuYXJ5UmVzcG9uc2USPgoHcGF5bG9hZBgBIAEoCzItLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuQ29uZm9ybWFuY2VQYXlsb2FkIn0KE1NlcnZlclN0cmVhbVJlcXVlc3QSUAoTcmVzcG9uc2VfZGVmaW5pdGlvbhgBIAEoCzIzLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuU3RyZWFtUmVzcG9uc2VEZWZpbml0aW9uEhQKDHJlcXVlc3RfZGF0YRgCIAEoDCJWChRTZXJ2ZXJTdHJlYW1SZXNwb25zZRI+CgdwYXlsb2FkGAEgASgLMi0uY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5Db25mb3JtYW5jZVBheWxvYWQifAoTQ2xpZW50U3RyZWFtUmVxdWVzdBJPChNyZXNwb25zZV9kZWZpbml0aW9uGAEgASgLMjIuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5VbmFyeVJlc3BvbnNlRGVmaW5pdGlvbhIUCgxyZXF1ZXN0X2RhdGEYAiABKAwiVgoUQ2xpZW50U3RyZWFtUmVzcG9uc2USPgoHcGF5bG9hZBgBIAEoCzItLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuQ29uZm9ybWFuY2VQYXlsb2FkIpABChFCaWRpU3RyZWFtUmVxdWVzdBJQChNyZXNwb25zZV9kZWZpbml0aW9uGAEgASgLMjMuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5TdHJlYW1SZXNwb25zZURlZmluaXRpb24SEwoLZnVsbF9kdXBsZXgYAiABKAgSFAoMcmVxdWVzdF9kYXRhGAMgASgMIlQKEkJpZGlTdHJlYW1SZXNwb25zZRI+CgdwYXlsb2FkGAEgASgLMi0uY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5Db25mb3JtYW5jZVBheWxvYWQiFgoUVW5pbXBsZW1lbnRlZFJlcXVlc3QiFwoVVW5pbXBsZW1lbnRlZFJlc3BvbnNlIrIDChJDb25mb3JtYW5jZVBheWxvYWQSDAoEZGF0YRgBIAEoDBJPCgxyZXF1ZXN0X2luZm8YAiABKAsyOS5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLkNvbmZvcm1hbmNlUGF5bG9hZC5SZXF1ZXN0SW5mbxrxAQoLUmVxdWVzdEluZm8SOgoPcmVxdWVzdF9oZWFkZXJzGAEgAygLMiEuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5IZWFkZXISFwoKdGltZW91dF9tcxgCIAEoA0gAiAEBEiYKCHJlcXVlc3RzGAMgAygLMhQuZ29vZ2xlLnByb3RvYnVmLkFueRJWChBjb25uZWN0X2dldF9pbmZvGAQgASgLMjwuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5Db25mb3JtYW5jZVBheWxvYWQuQ29ubmVjdEdldEluZm9CDQoLX3RpbWVvdXRfbXMaSQoOQ29ubmVjdEdldEluZm8SNwoMcXVlcnlfcGFyYW1zGAEgAygLMiEuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5IZWFkZXIifwoFRXJyb3ISLQoEY29kZRgBIAEoDjIfLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuQ29kZRIUCgdtZXNzYWdlGAIgASgJSACIAQESJQoHZGV0YWlscxgDIAMoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnlCCgoIX21lc3NhZ2UiJQoGSGVhZGVyEgwKBG5hbWUYASABKAkSDQoFdmFsdWUYAiADKAki7gMKDlJhd0hUVFBSZXF1ZXN0EgwKBHZlcmIYASABKAkSCwoDdXJpGAIgASgJEjIKB2hlYWRlcnMYAyADKAsyIS5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLkhlYWRlchI7ChByYXdfcXVlcnlfcGFyYW1zGAQgAygLMiEuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5IZWFkZXISWQoUZW5jb2RlZF9xdWVyeV9wYXJhbXMYBSADKAsyOy5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLlJhd0hUVFBSZXF1ZXN0LkVuY29kZWRRdWVyeVBhcmFtEjsKBXVuYXJ5GAYgASgLMiouY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5NZXNzYWdlQ29udGVudHNIABI7CgZzdHJlYW0YByABKAsyKS5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLlN0cmVhbUNvbnRlbnRzSAAacwoRRW5jb2RlZFF1ZXJ5UGFyYW0SDAoEbmFtZRgBIAEoCRI5CgV2YWx1ZRgCIAEoCzIqLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuTWVzc2FnZUNvbnRlbnRzEhUKDWJhc2U2NF9lbmNvZGUYAyABKAhCBgoEYm9keSKoAQoPTWVzc2FnZUNvbnRlbnRzEhAKBmJpbmFyeRgBIAEoDEgAEg4KBHRleHQYAiABKAlIABIuCg5iaW5hcnlfbWVzc2FnZRgDIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnlIABI7Cgtjb21wcmVzc2lvbhgEIAEoDjImLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuQ29tcHJlc3Npb25CBgoEZGF0YSLPAQoOU3RyZWFtQ29udGVudHMSQwoFaXRlbXMYASADKAsyNC5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLlN0cmVhbUNvbnRlbnRzLlN0cmVhbUl0ZW0aeAoKU3RyZWFtSXRlbRINCgVmbGFncxgBIAEoDRITCgZsZW5ndGgYAiABKA1IAIgBARI7CgdwYXlsb2FkGAMgASgLMiouY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5NZXNzYWdlQ29udGVudHNCCQoHX2xlbmd0aCKRAgoPUmF3SFRUUFJlc3BvbnNlEhMKC3N0YXR1c19jb2RlGAEgASgNEjIKB2hlYWRlcnMYAiADKAsyIS5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLkhlYWRlchI7CgV1bmFyeRgDIAEoCzIqLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuTWVzc2FnZUNvbnRlbnRzSAASOwoGc3RyZWFtGAQgASgLMikuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5TdHJlYW1Db250ZW50c0gAEjMKCHRyYWlsZXJzGAUgAygLMiEuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5IZWFkZXJCBgoEYm9keTK4BQoSQ29uZm9ybWFuY2VTZXJ2aWNlEloKBVVuYXJ5EicuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5VbmFyeVJlcXVlc3QaKC5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLlVuYXJ5UmVzcG9uc2UScQoMU2VydmVyU3RyZWFtEi4uY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5TZXJ2ZXJTdHJlYW1SZXF1ZXN0Gi8uY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5TZXJ2ZXJTdHJlYW1SZXNwb25zZTABEnEKDENsaWVudFN0cmVhbRIuLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuQ2xpZW50U3RyZWFtUmVxdWVzdBovLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuQ2xpZW50U3RyZWFtUmVzcG9uc2UoARJtCgpCaWRpU3RyZWFtEiwuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5CaWRpU3RyZWFtUmVxdWVzdBotLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuQmlkaVN0cmVhbVJlc3BvbnNlKAEwARJyCg1VbmltcGxlbWVudGVkEi8uY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5VbmltcGxlbWVudGVkUmVxdWVzdBowLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuVW5pbXBsZW1lbnRlZFJlc3BvbnNlEn0KD0lkZW1wb3RlbnRVbmFyeRIxLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuSWRlbXBvdGVudFVuYXJ5UmVxdWVzdBoyLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuSWRlbXBvdGVudFVuYXJ5UmVzcG9uc2UiA5ACAWIGcHJvdG8z", + [file_connectrpc_conformance_v1_config, file_google_protobuf_any], + ); + +/** + * A definition of a response to be sent from a single-response endpoint. + * Can be used to define a response for unary or client-streaming calls. + * + * @generated from message connectrpc.conformance.v1.UnaryResponseDefinition + */ +export type UnaryResponseDefinition = + Message<"connectrpc.conformance.v1.UnaryResponseDefinition"> & { + /** + * Response headers to send + * + * @generated from field: repeated connectrpc.conformance.v1.Header response_headers = 1; + */ + responseHeaders: Header[]; + + /** + * @generated from oneof connectrpc.conformance.v1.UnaryResponseDefinition.response + */ + response: + | { + /** + * Response data to send + * + * @generated from field: bytes response_data = 2; + */ + value: Uint8Array; + case: "responseData"; + } + | { + /** + * Error to raise instead of response message + * Servers should build a RequestInfo and append it to the details of the + * requested error. + * + * @generated from field: connectrpc.conformance.v1.Error error = 3; + */ + value: Error; + case: "error"; + } + | { case: undefined; value?: undefined }; + + /** + * Response trailers to send - together with the error if present + * + * @generated from field: repeated connectrpc.conformance.v1.Header response_trailers = 4; + */ + responseTrailers: Header[]; + + /** + * Wait this many milliseconds before sending a response message + * + * @generated from field: uint32 response_delay_ms = 6; + */ + responseDelayMs: number; + + /** + * This field is only used by the reference server. If you are implementing a + * server under test, you can ignore this field or respond with an error if the + * server receives a request where it is set. + * + * For test definitions, this field should be used instead of the above fields. + * + * @generated from field: connectrpc.conformance.v1.RawHTTPResponse raw_response = 5; + */ + rawResponse?: RawHTTPResponse; + }; + +/** + * Describes the message connectrpc.conformance.v1.UnaryResponseDefinition. + * Use `create(UnaryResponseDefinitionSchema)` to create a new message. + */ +export const UnaryResponseDefinitionSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 0); + +/** + * A definition of responses to be sent from a streaming endpoint. + * Can be used to define responses for server-streaming or bidi-streaming calls. + * + * @generated from message connectrpc.conformance.v1.StreamResponseDefinition + */ +export type StreamResponseDefinition = + Message<"connectrpc.conformance.v1.StreamResponseDefinition"> & { + /** + * Response headers to send + * + * @generated from field: repeated connectrpc.conformance.v1.Header response_headers = 1; + */ + responseHeaders: Header[]; + + /** + * Response data to send + * + * @generated from field: repeated bytes response_data = 2; + */ + responseData: Uint8Array[]; + + /** + * Wait this many milliseconds before sending each response message + * + * @generated from field: uint32 response_delay_ms = 3; + */ + responseDelayMs: number; + + /** + * Optional error to raise, but only after sending any response messages. + * In the event an immediate error is thrown before any responses are sent, + * (i.e. the equivalent of a trailers-only response), then servers should + * build a RequestInfo message with available information and append that to + * the error details. + * + * @generated from field: connectrpc.conformance.v1.Error error = 4; + */ + error?: Error; + + /** + * Response trailers to send - together with the error if present + * + * @generated from field: repeated connectrpc.conformance.v1.Header response_trailers = 5; + */ + responseTrailers: Header[]; + + /** + * This field is only used by the reference server. If you are implementing a + * server under test, you can ignore this field or respond with an error if the + * server receives a request where it is set. + * + * For test definitions, this field should be used instead of the above fields. + * + * @generated from field: connectrpc.conformance.v1.RawHTTPResponse raw_response = 6; + */ + rawResponse?: RawHTTPResponse; + }; + +/** + * Describes the message connectrpc.conformance.v1.StreamResponseDefinition. + * Use `create(StreamResponseDefinitionSchema)` to create a new message. + */ +export const StreamResponseDefinitionSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 1); + +/** + * @generated from message connectrpc.conformance.v1.UnaryRequest + */ +export type UnaryRequest = Message<"connectrpc.conformance.v1.UnaryRequest"> & { + /** + * The response definition which should be returned in the conformance payload + * + * @generated from field: connectrpc.conformance.v1.UnaryResponseDefinition response_definition = 1; + */ + responseDefinition?: UnaryResponseDefinition; + + /** + * Additional data. Only used to pad the request size to test large request messages. + * + * @generated from field: bytes request_data = 2; + */ + requestData: Uint8Array; +}; + +/** + * Describes the message connectrpc.conformance.v1.UnaryRequest. + * Use `create(UnaryRequestSchema)` to create a new message. + */ +export const UnaryRequestSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 2); + +/** + * @generated from message connectrpc.conformance.v1.UnaryResponse + */ +export type UnaryResponse = + Message<"connectrpc.conformance.v1.UnaryResponse"> & { + /** + * The conformance payload to respond with. + * + * @generated from field: connectrpc.conformance.v1.ConformancePayload payload = 1; + */ + payload?: ConformancePayload; + }; + +/** + * Describes the message connectrpc.conformance.v1.UnaryResponse. + * Use `create(UnaryResponseSchema)` to create a new message. + */ +export const UnaryResponseSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 3); + +/** + * @generated from message connectrpc.conformance.v1.IdempotentUnaryRequest + */ +export type IdempotentUnaryRequest = + Message<"connectrpc.conformance.v1.IdempotentUnaryRequest"> & { + /** + * The response definition which should be returned in the conformance payload + * + * @generated from field: connectrpc.conformance.v1.UnaryResponseDefinition response_definition = 1; + */ + responseDefinition?: UnaryResponseDefinition; + + /** + * Additional data. Only used to pad the request size to test large request messages. + * + * @generated from field: bytes request_data = 2; + */ + requestData: Uint8Array; + }; + +/** + * Describes the message connectrpc.conformance.v1.IdempotentUnaryRequest. + * Use `create(IdempotentUnaryRequestSchema)` to create a new message. + */ +export const IdempotentUnaryRequestSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 4); + +/** + * @generated from message connectrpc.conformance.v1.IdempotentUnaryResponse + */ +export type IdempotentUnaryResponse = + Message<"connectrpc.conformance.v1.IdempotentUnaryResponse"> & { + /** + * The conformance payload to respond with. + * + * @generated from field: connectrpc.conformance.v1.ConformancePayload payload = 1; + */ + payload?: ConformancePayload; + }; + +/** + * Describes the message connectrpc.conformance.v1.IdempotentUnaryResponse. + * Use `create(IdempotentUnaryResponseSchema)` to create a new message. + */ +export const IdempotentUnaryResponseSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 5); + +/** + * @generated from message connectrpc.conformance.v1.ServerStreamRequest + */ +export type ServerStreamRequest = + Message<"connectrpc.conformance.v1.ServerStreamRequest"> & { + /** + * The response definition which should be returned in the conformance payload. + * + * @generated from field: connectrpc.conformance.v1.StreamResponseDefinition response_definition = 1; + */ + responseDefinition?: StreamResponseDefinition; + + /** + * Additional data. Only used to pad the request size to test large request messages. + * + * @generated from field: bytes request_data = 2; + */ + requestData: Uint8Array; + }; + +/** + * Describes the message connectrpc.conformance.v1.ServerStreamRequest. + * Use `create(ServerStreamRequestSchema)` to create a new message. + */ +export const ServerStreamRequestSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 6); + +/** + * @generated from message connectrpc.conformance.v1.ServerStreamResponse + */ +export type ServerStreamResponse = + Message<"connectrpc.conformance.v1.ServerStreamResponse"> & { + /** + * The conformance payload to respond with + * + * @generated from field: connectrpc.conformance.v1.ConformancePayload payload = 1; + */ + payload?: ConformancePayload; + }; + +/** + * Describes the message connectrpc.conformance.v1.ServerStreamResponse. + * Use `create(ServerStreamResponseSchema)` to create a new message. + */ +export const ServerStreamResponseSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 7); + +/** + * @generated from message connectrpc.conformance.v1.ClientStreamRequest + */ +export type ClientStreamRequest = + Message<"connectrpc.conformance.v1.ClientStreamRequest"> & { + /** + * Tells the server how to reply once all client messages are + * complete. Required in the first message in the stream, but + * should be ignored in subsequent messages. + * + * @generated from field: connectrpc.conformance.v1.UnaryResponseDefinition response_definition = 1; + */ + responseDefinition?: UnaryResponseDefinition; + + /** + * Additional data for subsequent messages in the stream. Also + * used to pad the request size to test large request messages. + * + * @generated from field: bytes request_data = 2; + */ + requestData: Uint8Array; + }; + +/** + * Describes the message connectrpc.conformance.v1.ClientStreamRequest. + * Use `create(ClientStreamRequestSchema)` to create a new message. + */ +export const ClientStreamRequestSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 8); + +/** + * @generated from message connectrpc.conformance.v1.ClientStreamResponse + */ +export type ClientStreamResponse = + Message<"connectrpc.conformance.v1.ClientStreamResponse"> & { + /** + * The conformance payload to respond with + * + * @generated from field: connectrpc.conformance.v1.ConformancePayload payload = 1; + */ + payload?: ConformancePayload; + }; + +/** + * Describes the message connectrpc.conformance.v1.ClientStreamResponse. + * Use `create(ClientStreamResponseSchema)` to create a new message. + */ +export const ClientStreamResponseSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 9); + +/** + * @generated from message connectrpc.conformance.v1.BidiStreamRequest + */ +export type BidiStreamRequest = + Message<"connectrpc.conformance.v1.BidiStreamRequest"> & { + /** + * Tells the server how to reply; required in the first message + * in the stream. Should be ignored in subsequent messages. + * + * @generated from field: connectrpc.conformance.v1.StreamResponseDefinition response_definition = 1; + */ + responseDefinition?: StreamResponseDefinition; + + /** + * Tells the server whether it should wait for each request + * before sending a response. + * + * If true, it indicates the server should effectively interleave the + * stream so messages are sent in request->response pairs. + * + * If false, then the response stream will be sent once all request messages + * are finished sending with the only delays between messages + * being the optional fixed milliseconds defined in the response + * definition. + * + * This field is only relevant in the first message in the stream + * and should be ignored in subsequent messages. + * + * @generated from field: bool full_duplex = 2; + */ + fullDuplex: boolean; + + /** + * Additional data for subsequent messages in the stream. Also + * used to pad the request size to test large request messages. + * + * @generated from field: bytes request_data = 3; + */ + requestData: Uint8Array; + }; + +/** + * Describes the message connectrpc.conformance.v1.BidiStreamRequest. + * Use `create(BidiStreamRequestSchema)` to create a new message. + */ +export const BidiStreamRequestSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 10); + +/** + * @generated from message connectrpc.conformance.v1.BidiStreamResponse + */ +export type BidiStreamResponse = + Message<"connectrpc.conformance.v1.BidiStreamResponse"> & { + /** + * The conformance payload to respond with + * + * @generated from field: connectrpc.conformance.v1.ConformancePayload payload = 1; + */ + payload?: ConformancePayload; + }; + +/** + * Describes the message connectrpc.conformance.v1.BidiStreamResponse. + * Use `create(BidiStreamResponseSchema)` to create a new message. + */ +export const BidiStreamResponseSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 11); + +/** + * @generated from message connectrpc.conformance.v1.UnimplementedRequest + */ +export type UnimplementedRequest = + Message<"connectrpc.conformance.v1.UnimplementedRequest"> & {}; + +/** + * Describes the message connectrpc.conformance.v1.UnimplementedRequest. + * Use `create(UnimplementedRequestSchema)` to create a new message. + */ +export const UnimplementedRequestSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 12); + +/** + * @generated from message connectrpc.conformance.v1.UnimplementedResponse + */ +export type UnimplementedResponse = + Message<"connectrpc.conformance.v1.UnimplementedResponse"> & {}; + +/** + * Describes the message connectrpc.conformance.v1.UnimplementedResponse. + * Use `create(UnimplementedResponseSchema)` to create a new message. + */ +export const UnimplementedResponseSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 13); + +/** + * @generated from message connectrpc.conformance.v1.ConformancePayload + */ +export type ConformancePayload = + Message<"connectrpc.conformance.v1.ConformancePayload"> & { + /** + * Any response data specified in the response definition to the server should be + * echoed back here. + * + * @generated from field: bytes data = 1; + */ + data: Uint8Array; + + /** + * Echoes back information about the request stream observed so far. + * + * @generated from field: connectrpc.conformance.v1.ConformancePayload.RequestInfo request_info = 2; + */ + requestInfo?: ConformancePayload_RequestInfo; + }; + +/** + * Describes the message connectrpc.conformance.v1.ConformancePayload. + * Use `create(ConformancePayloadSchema)` to create a new message. + */ +export const ConformancePayloadSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 14); + +/** + * @generated from message connectrpc.conformance.v1.ConformancePayload.RequestInfo + */ +export type ConformancePayload_RequestInfo = + Message<"connectrpc.conformance.v1.ConformancePayload.RequestInfo"> & { + /** + * The server echos back the request headers it observed here. + * + * @generated from field: repeated connectrpc.conformance.v1.Header request_headers = 1; + */ + requestHeaders: Header[]; + + /** + * The timeout observed that was included in the request. Other timeouts use a + * type of uint32, but we want to be lenient here to allow whatever value the RPC + * server observes, even if it's outside the range of uint32. + * + * @generated from field: optional int64 timeout_ms = 2; + */ + timeoutMs?: bigint; + + /** + * The server should echo back all requests received. + * For unary and server-streaming requests, this should always contain a single request + * For client-streaming and half-duplex bidi-streaming, this should contain + * all client requests in the order received and be present in each response. + * For full-duplex bidirectional-streaming, this should contain all requests in the order + * they were received since the last sent response. + * + * @generated from field: repeated google.protobuf.Any requests = 3; + */ + requests: Any[]; + + /** + * If present, the request used the Connect protocol and a GET method. This + * captures other relevant information about the request. If a server implementation + * is unable to populate this (due to the server framework not exposing all of these + * details to application code), it may be an empty message. This implies that the + * server framework, at a minimum, at least expose to application code whether the + * request used GET vs. POST. + * + * @generated from field: connectrpc.conformance.v1.ConformancePayload.ConnectGetInfo connect_get_info = 4; + */ + connectGetInfo?: ConformancePayload_ConnectGetInfo; + }; + +/** + * Describes the message connectrpc.conformance.v1.ConformancePayload.RequestInfo. + * Use `create(ConformancePayload_RequestInfoSchema)` to create a new message. + */ +export const ConformancePayload_RequestInfoSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 14, 0); + +/** + * @generated from message connectrpc.conformance.v1.ConformancePayload.ConnectGetInfo + */ +export type ConformancePayload_ConnectGetInfo = + Message<"connectrpc.conformance.v1.ConformancePayload.ConnectGetInfo"> & { + /** + * The query params observed in the request URL. + * + * @generated from field: repeated connectrpc.conformance.v1.Header query_params = 1; + */ + queryParams: Header[]; + }; + +/** + * Describes the message connectrpc.conformance.v1.ConformancePayload.ConnectGetInfo. + * Use `create(ConformancePayload_ConnectGetInfoSchema)` to create a new message. + */ +export const ConformancePayload_ConnectGetInfoSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 14, 1); + +/** + * An error definition used for specifying a desired error response + * + * @generated from message connectrpc.conformance.v1.Error + */ +export type Error = Message<"connectrpc.conformance.v1.Error"> & { + /** + * The error code. + * For a list of Connect error codes see: https://connectrpc.com/docs/protocol#error-codes + * + * @generated from field: connectrpc.conformance.v1.Code code = 1; + */ + code: Code; + + /** + * If this value is absent in a test case response definition, the contents of the + * actual error message will not be checked. This is useful for certain kinds of + * error conditions where the exact message to be used is not specified, only the + * code. + * + * @generated from field: optional string message = 2; + */ + message?: string; + + /** + * Errors in Connect and gRPC protocols can have arbitrary messages + * attached to them, which are known as error details. + * + * @generated from field: repeated google.protobuf.Any details = 3; + */ + details: Any[]; +}; + +/** + * Describes the message connectrpc.conformance.v1.Error. + * Use `create(ErrorSchema)` to create a new message. + */ +export const ErrorSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 15); + +/** + * A tuple of name and values (ASCII) for a header or trailer entry. + * + * @generated from message connectrpc.conformance.v1.Header + */ +export type Header = Message<"connectrpc.conformance.v1.Header"> & { + /** + * Header/trailer name (key). + * + * @generated from field: string name = 1; + */ + name: string; + + /** + * Header/trailer value. This is repeated to explicitly support headers and + * trailers where a key is repeated. In such a case, these values must be in + * the same order as which values appeared in the header or trailer block. + * + * @generated from field: repeated string value = 2; + */ + value: string[]; +}; + +/** + * Describes the message connectrpc.conformance.v1.Header. + * Use `create(HeaderSchema)` to create a new message. + */ +export const HeaderSchema: GenMessage
= + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 16); + +/** + * RawHTTPRequest models a raw HTTP request. This can be used to craft + * custom requests with odd properties (including certain kinds of + * malformed requests) to test edge cases in servers. + * + * @generated from message connectrpc.conformance.v1.RawHTTPRequest + */ +export type RawHTTPRequest = + Message<"connectrpc.conformance.v1.RawHTTPRequest"> & { + /** + * The HTTP verb (i.e. GET , POST). + * + * @generated from field: string verb = 1; + */ + verb: string; + + /** + * The URI to send the request to. + * + * @generated from field: string uri = 2; + */ + uri: string; + + /** + * Any headers to set on the request. + * + * @generated from field: repeated connectrpc.conformance.v1.Header headers = 3; + */ + headers: Header[]; + + /** + * These query params will be encoded and added to the uri before + * the request is sent. + * + * @generated from field: repeated connectrpc.conformance.v1.Header raw_query_params = 4; + */ + rawQueryParams: Header[]; + + /** + * This provides an easier way to define a complex binary query param + * than having to write literal base64-encoded bytes in raw_query_params. + * + * @generated from field: repeated connectrpc.conformance.v1.RawHTTPRequest.EncodedQueryParam encoded_query_params = 5; + */ + encodedQueryParams: RawHTTPRequest_EncodedQueryParam[]; + + /** + * @generated from oneof connectrpc.conformance.v1.RawHTTPRequest.body + */ + body: + | { + /** + * The body is a single message. + * + * @generated from field: connectrpc.conformance.v1.MessageContents unary = 6; + */ + value: MessageContents; + case: "unary"; + } + | { + /** + * The body is a stream, encoded using a five-byte + * prefix before each item in the stream. + * + * @generated from field: connectrpc.conformance.v1.StreamContents stream = 7; + */ + value: StreamContents; + case: "stream"; + } + | { case: undefined; value?: undefined }; + }; + +/** + * Describes the message connectrpc.conformance.v1.RawHTTPRequest. + * Use `create(RawHTTPRequestSchema)` to create a new message. + */ +export const RawHTTPRequestSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 17); + +/** + * @generated from message connectrpc.conformance.v1.RawHTTPRequest.EncodedQueryParam + */ +export type RawHTTPRequest_EncodedQueryParam = + Message<"connectrpc.conformance.v1.RawHTTPRequest.EncodedQueryParam"> & { + /** + * Query param name. + * + * @generated from field: string name = 1; + */ + name: string; + + /** + * Query param value. + * + * @generated from field: connectrpc.conformance.v1.MessageContents value = 2; + */ + value?: MessageContents; + + /** + * If true, the message contents will be base64-encoded and the + * resulting string used as the query parameter value. + * + * @generated from field: bool base64_encode = 3; + */ + base64Encode: boolean; + }; + +/** + * Describes the message connectrpc.conformance.v1.RawHTTPRequest.EncodedQueryParam. + * Use `create(RawHTTPRequest_EncodedQueryParamSchema)` to create a new message. + */ +export const RawHTTPRequest_EncodedQueryParamSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 17, 0); + +/** + * MessageContents represents a message in a request body. + * + * @generated from message connectrpc.conformance.v1.MessageContents + */ +export type MessageContents = + Message<"connectrpc.conformance.v1.MessageContents"> & { + /** + * The message data can be defined in one of three ways. + * + * @generated from oneof connectrpc.conformance.v1.MessageContents.data + */ + data: + | { + /** + * Arbitrary bytes. + * + * @generated from field: bytes binary = 1; + */ + value: Uint8Array; + case: "binary"; + } + | { + /** + * Arbitrary text. + * + * @generated from field: string text = 2; + */ + value: string; + case: "text"; + } + | { + /** + * An actual message. The message inside the Any will be + * serialized to the protobuf binary formats, and the + * resulting bytes will be the contents. + * + * @generated from field: google.protobuf.Any binary_message = 3; + */ + value: Any; + case: "binaryMessage"; + } + | { case: undefined; value?: undefined }; + + /** + * If specified and not identity, the above data will be + * compressed using the given algorithm. + * + * @generated from field: connectrpc.conformance.v1.Compression compression = 4; + */ + compression: Compression; + }; + +/** + * Describes the message connectrpc.conformance.v1.MessageContents. + * Use `create(MessageContentsSchema)` to create a new message. + */ +export const MessageContentsSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 18); + +/** + * StreamContents represents a sequence of messages in a request body. + * + * @generated from message connectrpc.conformance.v1.StreamContents + */ +export type StreamContents = + Message<"connectrpc.conformance.v1.StreamContents"> & { + /** + * The messages in the stream. + * + * @generated from field: repeated connectrpc.conformance.v1.StreamContents.StreamItem items = 1; + */ + items: StreamContents_StreamItem[]; + }; + +/** + * Describes the message connectrpc.conformance.v1.StreamContents. + * Use `create(StreamContentsSchema)` to create a new message. + */ +export const StreamContentsSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 19); + +/** + * @generated from message connectrpc.conformance.v1.StreamContents.StreamItem + */ +export type StreamContents_StreamItem = + Message<"connectrpc.conformance.v1.StreamContents.StreamItem"> & { + /** + * must be in the range 0 to 255. + * + * @generated from field: uint32 flags = 1; + */ + flags: number; + + /** + * if absent use actual length of payload + * + * @generated from field: optional uint32 length = 2; + */ + length?: number; + + /** + * @generated from field: connectrpc.conformance.v1.MessageContents payload = 3; + */ + payload?: MessageContents; + }; + +/** + * Describes the message connectrpc.conformance.v1.StreamContents.StreamItem. + * Use `create(StreamContents_StreamItemSchema)` to create a new message. + */ +export const StreamContents_StreamItemSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 19, 0); + +/** + * RawHTTPResponse models a raw HTTP response. This can be used to craft + * custom responses with odd properties (including certain kinds of + * malformed responses) to test edge cases in clients. + * + * @generated from message connectrpc.conformance.v1.RawHTTPResponse + */ +export type RawHTTPResponse = + Message<"connectrpc.conformance.v1.RawHTTPResponse"> & { + /** + * If status code is not specified, it will default to a 200 response code. + * + * @generated from field: uint32 status_code = 1; + */ + statusCode: number; + + /** + * Headers to be set on the response. + * + * @generated from field: repeated connectrpc.conformance.v1.Header headers = 2; + */ + headers: Header[]; + + /** + * @generated from oneof connectrpc.conformance.v1.RawHTTPResponse.body + */ + body: + | { + /** + * The body is a single message. + * + * @generated from field: connectrpc.conformance.v1.MessageContents unary = 3; + */ + value: MessageContents; + case: "unary"; + } + | { + /** + * The body is a stream, encoded using a five-byte + * prefix before each item in the stream. + * + * @generated from field: connectrpc.conformance.v1.StreamContents stream = 4; + */ + value: StreamContents; + case: "stream"; + } + | { case: undefined; value?: undefined }; + + /** + * Trailers to be set on the response. + * + * @generated from field: repeated connectrpc.conformance.v1.Header trailers = 5; + */ + trailers: Header[]; + }; + +/** + * Describes the message connectrpc.conformance.v1.RawHTTPResponse. + * Use `create(RawHTTPResponseSchema)` to create a new message. + */ +export const RawHTTPResponseSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 20); + +/** + * The service implemented by conformance test servers. This is implemented by + * the reference servers, used to test clients, and is expected to be implemented + * by test servers, since this is the service used by reference clients. + * + * Test servers must implement the service as described. + * + * @generated from service connectrpc.conformance.v1.ConformanceService + */ +export const ConformanceService: GenService<{ + /** + * A unary operation. The request indicates the response headers and trailers + * and also indicates either a response message or an error to send back. + * + * Response message data is specified as bytes. The service should echo back + * request properties in the ConformancePayload and then include the message + * data in the data field. + * + * If the response_delay_ms duration is specified, the server should wait the + * given duration after reading the request before sending the corresponding + * response. + * + * Servers should allow the response definition to be unset in the request and + * if it is, set no response headers or trailers and return no response data. + * The returned payload should only contain the request info. + * + * @generated from rpc connectrpc.conformance.v1.ConformanceService.Unary + */ + unary: { + methodKind: "unary"; + input: typeof UnaryRequestSchema; + output: typeof UnaryResponseSchema; + }; + /** + * A server-streaming operation. The request indicates the response headers, + * response messages, trailers, and an optional error to send back. The + * response data should be sent in the order indicated, and the server should + * wait between sending response messages as indicated. + * + * Response message data is specified as bytes. The service should echo back + * request properties in the first ConformancePayload, and then include the + * message data in the data field. Subsequent messages after the first one + * should contain only the data field. + * + * Servers should immediately send response headers on the stream before sleeping + * for any specified response delay and/or sending the first message so that + * clients can be unblocked reading response headers. + * + * If a response definition is not specified OR is specified, but response data + * is empty, the server should skip sending anything on the stream. When there + * are no responses to send, servers should throw an error if one is provided + * and return without error if one is not. Stream headers and trailers should + * still be set on the stream if provided regardless of whether a response is + * sent or an error is thrown. + * + * @generated from rpc connectrpc.conformance.v1.ConformanceService.ServerStream + */ + serverStream: { + methodKind: "server_streaming"; + input: typeof ServerStreamRequestSchema; + output: typeof ServerStreamResponseSchema; + }; + /** + * A client-streaming operation. The first request indicates the response + * headers and trailers and also indicates either a response message or an + * error to send back. + * + * Response message data is specified as bytes. The service should echo back + * request properties, including all request messages in the order they were + * received, in the ConformancePayload and then include the message data in + * the data field. + * + * If the input stream is empty, the server's response will include no data, + * only the request properties (headers, timeout). + * + * Servers should only read the response definition from the first message in + * the stream and should ignore any definition set in subsequent messages. + * + * Servers should allow the response definition to be unset in the request and + * if it is, set no response headers or trailers and return no response data. + * The returned payload should only contain the request info. + * + * @generated from rpc connectrpc.conformance.v1.ConformanceService.ClientStream + */ + clientStream: { + methodKind: "client_streaming"; + input: typeof ClientStreamRequestSchema; + output: typeof ClientStreamResponseSchema; + }; + /** + * A bidirectional-streaming operation. The first request indicates the response + * headers, response messages, trailers, and an optional error to send back. + * The response data should be sent in the order indicated, and the server + * should wait between sending response messages as indicated. + * + * Response message data is specified as bytes and should be included in the + * data field of the ConformancePayload in each response. + * + * Servers should send responses indicated according to the rules of half duplex + * vs. full duplex streams. Once all responses are sent, the server should either + * return an error if specified or close the stream without error. + * + * Servers should immediately send response headers on the stream before sleeping + * for any specified response delay and/or sending the first message so that + * clients can be unblocked reading response headers. + * + * If a response definition is not specified OR is specified, but response data + * is empty, the server should skip sending anything on the stream. Stream + * headers and trailers should always be set on the stream if provided + * regardless of whether a response is sent or an error is thrown. + * + * If the full_duplex field is true: + * - the handler should read one request and then send back one response, and + * then alternate, reading another request and then sending back another response, etc. + * + * - if the server receives a request and has no responses to send, it + * should throw the error specified in the request. + * + * - the service should echo back all request properties in the first response + * including the last received request. Subsequent responses should only + * echo back the last received request. + * + * - if the response_delay_ms duration is specified, the server should wait the given + * duration after reading the request before sending the corresponding + * response. + * + * If the full_duplex field is false: + * - the handler should read all requests until the client is done sending. + * Once all requests are read, the server should then send back any responses + * specified in the response definition. + * + * - the server should echo back all request properties, including all request + * messages in the order they were received, in the first response. Subsequent + * responses should only include the message data in the data field. + * + * - if the response_delay_ms duration is specified, the server should wait that + * long in between sending each response message. + * + * + * @generated from rpc connectrpc.conformance.v1.ConformanceService.BidiStream + */ + bidiStream: { + methodKind: "bidi_streaming"; + input: typeof BidiStreamRequestSchema; + output: typeof BidiStreamResponseSchema; + }; + /** + * A unary endpoint that the server should not implement and should instead + * return an unimplemented error when invoked. + * + * @generated from rpc connectrpc.conformance.v1.ConformanceService.Unimplemented + */ + unimplemented: { + methodKind: "unary"; + input: typeof UnimplementedRequestSchema; + output: typeof UnimplementedResponseSchema; + }; + /** + * A unary endpoint denoted as having no side effects (i.e. idempotent). + * Implementations should use an HTTP GET when invoking this endpoint and + * leverage query parameters to send data. + * + * @generated from rpc connectrpc.conformance.v1.ConformanceService.IdempotentUnary + */ + idempotentUnary: { + methodKind: "unary"; + input: typeof IdempotentUnaryRequestSchema; + output: typeof IdempotentUnaryResponseSchema; + }; +}> = /*@__PURE__*/ serviceDesc(file_connectrpc_conformance_v1_service, 0); diff --git a/packages/connect-cloudflare/conformance/gen/invoke/v1/invoke_pb.ts b/packages/connect-cloudflare/conformance/gen/invoke/v1/invoke_pb.ts new file mode 100644 index 000000000..969f00c1f --- /dev/null +++ b/packages/connect-cloudflare/conformance/gen/invoke/v1/invoke_pb.ts @@ -0,0 +1,94 @@ +// Copyright 2021-2024 The Connect Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v2.0.0 with parameter "target=ts,import_extension=.js" +// @generated from file invoke/v1/invoke.proto (package invoke.v1, syntax proto3) +/* eslint-disable */ + +import type { + GenFile, + GenMessage, + GenService, +} from "@bufbuild/protobuf/codegenv1"; +import { + fileDesc, + messageDesc, + serviceDesc, +} from "@bufbuild/protobuf/codegenv1"; +import type { + ClientCompatRequest, + ClientCompatResponse, +} from "../../connectrpc/conformance/v1/client_compat_pb.js"; +import { file_connectrpc_conformance_v1_client_compat } from "../../connectrpc/conformance/v1/client_compat_pb.js"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file invoke/v1/invoke.proto. + */ +export const file_invoke_v1_invoke: GenFile = + /*@__PURE__*/ + fileDesc( + "ChZpbnZva2UvdjEvaW52b2tlLnByb3RvEglpbnZva2UudjEiUAoNSW52b2tlUmVxdWVzdBI/CgdyZXF1ZXN0GAEgASgLMi4uY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5DbGllbnRDb21wYXRSZXF1ZXN0IlMKDkludm9rZVJlc3BvbnNlEkEKCHJlc3BvbnNlGAEgASgLMi8uY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5DbGllbnRDb21wYXRSZXNwb25zZTJOCg1JbnZva2VTZXJ2aWNlEj0KBkludm9rZRIYLmludm9rZS52MS5JbnZva2VSZXF1ZXN0GhkuaW52b2tlLnYxLkludm9rZVJlc3BvbnNlYgZwcm90bzM", + [file_connectrpc_conformance_v1_client_compat], + ); + +/** + * @generated from message invoke.v1.InvokeRequest + */ +export type InvokeRequest = Message<"invoke.v1.InvokeRequest"> & { + /** + * @generated from field: connectrpc.conformance.v1.ClientCompatRequest request = 1; + */ + request?: ClientCompatRequest; +}; + +/** + * Describes the message invoke.v1.InvokeRequest. + * Use `create(InvokeRequestSchema)` to create a new message. + */ +export const InvokeRequestSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_invoke_v1_invoke, 0); + +/** + * @generated from message invoke.v1.InvokeResponse + */ +export type InvokeResponse = Message<"invoke.v1.InvokeResponse"> & { + /** + * @generated from field: connectrpc.conformance.v1.ClientCompatResponse response = 1; + */ + response?: ClientCompatResponse; +}; + +/** + * Describes the message invoke.v1.InvokeResponse. + * Use `create(InvokeResponseSchema)` to create a new message. + */ +export const InvokeResponseSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_invoke_v1_invoke, 1); + +/** + * @generated from service invoke.v1.InvokeService + */ +export const InvokeService: GenService<{ + /** + * @generated from rpc invoke.v1.InvokeService.Invoke + */ + invoke: { + methodKind: "unary"; + input: typeof InvokeRequestSchema; + output: typeof InvokeResponseSchema; + }; +}> = /*@__PURE__*/ serviceDesc(file_invoke_v1_invoke, 0); diff --git a/packages/connect-cloudflare/conformance/invoke-service.ts b/packages/connect-cloudflare/conformance/invoke-service.ts deleted file mode 100644 index f46551569..000000000 --- a/packages/connect-cloudflare/conformance/invoke-service.ts +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2021-2024 The Connect Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import { MethodKind } from "@bufbuild/protobuf"; -import type { ServiceType } from "@bufbuild/protobuf"; -import { - ClientCompatRequest, - ClientCompatResponse, -} from "@connectrpc/connect-conformance"; - -/** - * Used to relay the test request to the worker. - */ -export const InvokeService = { - typeName: "conformance.v1.InvokeService", - methods: { - invoke: { - name: "Invoke", - kind: MethodKind.Unary, - I: ClientCompatRequest, - O: ClientCompatResponse, - }, - }, -} satisfies ServiceType; diff --git a/packages/connect/protocol.js b/packages/connect-cloudflare/conformance/proto/invoke/v1/invoke.proto similarity index 62% rename from packages/connect/protocol.js rename to packages/connect-cloudflare/conformance/proto/invoke/v1/invoke.proto index fc83d1ff5..e07d8a639 100644 --- a/packages/connect/protocol.js +++ b/packages/connect-cloudflare/conformance/proto/invoke/v1/invoke.proto @@ -12,5 +12,20 @@ // See the License for the specific language governing permissions and // limitations under the License. -// workaround for bundlers that do not support subpath exports. -module.exports = require("./dist/cjs/protocol/index.js"); +syntax = "proto3"; + +package invoke.v1; + +import "connectrpc/conformance/v1/client_compat.proto"; + +service InvokeService { + rpc Invoke(InvokeRequest) returns (InvokeResponse); +} + +message InvokeRequest { + connectrpc.conformance.v1.ClientCompatRequest request = 1; +} + +message InvokeResponse { + connectrpc.conformance.v1.ClientCompatResponse response = 1; +} diff --git a/packages/connect-cloudflare/conformance/server-worker.ts b/packages/connect-cloudflare/conformance/server-worker.ts index bfcc07043..bb1cc804c 100644 --- a/packages/connect-cloudflare/conformance/server-worker.ts +++ b/packages/connect-cloudflare/conformance/server-worker.ts @@ -15,11 +15,11 @@ import { createRegistry } from "@bufbuild/protobuf"; import { routes, - UnaryRequest, - ServerStreamRequest, - ClientStreamRequest, - BidiStreamRequest, - IdempotentUnaryRequest, + UnaryRequestSchema, + BidiStreamRequestSchema, + ClientStreamRequestSchema, + IdempotentUnaryRequestSchema, + ServerStreamRequestSchema, } from "@connectrpc/connect-conformance"; import { createWorkerHandler } from "./handler.js"; import { compressionDeflate, compressionGzip } from "./compression.js"; @@ -28,12 +28,12 @@ export default createWorkerHandler({ routes, acceptCompression: [compressionGzip, compressionDeflate], jsonOptions: { - typeRegistry: createRegistry( - UnaryRequest, - ServerStreamRequest, - ClientStreamRequest, - BidiStreamRequest, - IdempotentUnaryRequest, + registry: createRegistry( + UnaryRequestSchema, + ServerStreamRequestSchema, + ClientStreamRequestSchema, + BidiStreamRequestSchema, + IdempotentUnaryRequestSchema, ), }, }); diff --git a/packages/connect-cloudflare/conformance/server.ts b/packages/connect-cloudflare/conformance/server.ts index 4a6f6ece0..b72ca947c 100755 --- a/packages/connect-cloudflare/conformance/server.ts +++ b/packages/connect-cloudflare/conformance/server.ts @@ -15,10 +15,11 @@ import { readFileSync } from "node:fs"; import * as tls from "node:tls"; import { - ServerCompatRequest, - ServerCompatResponse, + ServerCompatRequestSchema, + ServerCompatResponseSchema, writeSizeDelimitedBuffer, } from "@connectrpc/connect-conformance"; +import { fromBinary, create, toBinary } from "@bufbuild/protobuf"; main(); @@ -29,7 +30,8 @@ main(); * server's port and other details to stdout. */ function main() { - const req = ServerCompatRequest.fromBinary( + const req = fromBinary( + ServerCompatRequestSchema, readFileSync(process.stdin.fd).subarray(4), ); // Keep the process alive for the duration of the test because @@ -41,12 +43,14 @@ function main() { process.once("SIGTERM", () => { clearInterval(timeout); }); - const res = new ServerCompatResponse({ + const res = create(ServerCompatResponseSchema, { host: process.env["CLOUDFLARE_WORKERS_SERVER_HOST"], port: 443, pemCert: req.useTls ? Buffer.from(tls.rootCertificates.join("\n")) : undefined, }); - process.stdout.write(writeSizeDelimitedBuffer(res.toBinary())); + process.stdout.write( + writeSizeDelimitedBuffer(toBinary(ServerCompatResponseSchema, res)), + ); } diff --git a/packages/connect-cloudflare/conformance/transport.ts b/packages/connect-cloudflare/conformance/transport.ts index d9b87164e..9997b286c 100644 --- a/packages/connect-cloudflare/conformance/transport.ts +++ b/packages/connect-cloudflare/conformance/transport.ts @@ -14,17 +14,17 @@ import { createRegistry } from "@bufbuild/protobuf"; import { - BidiStreamRequest, - ClientCompatRequest, - ClientStreamRequest, - IdempotentUnaryRequest, - ServerStreamRequest, - UnaryRequest, Codec, HTTPVersion, Protocol, Compression as ConformanceCompression, + UnaryRequestSchema, + ServerStreamRequestSchema, + ClientStreamRequestSchema, + BidiStreamRequestSchema, + IdempotentUnaryRequestSchema, } from "@connectrpc/connect-conformance"; +import type { ClientCompatRequest } from "@connectrpc/connect-conformance"; import { createTransport as createConnectTransport } from "@connectrpc/connect/protocol-connect"; import { createTransport as createGrpcTransport } from "@connectrpc/connect/protocol-grpc"; import { createTransport as createGrpcWebTransport } from "@connectrpc/connect/protocol-grpc-web"; @@ -35,7 +35,7 @@ import { compressionDeflate, compressionGzip } from "./compression.js"; /** * Configure a transport for a client running as a Cloudflare Worker under test. * - * The conformance test runner describes the call we should make in the + * The conformance test runner Schemaribes the call we should make in the * message connectrpc.conformance.v1.ClientCompatRequest. We create a transport * for the call, with the corresponding protocol, HTTP version, compression, and * other details. If a configuration is not supported, we raise an error. @@ -101,12 +101,12 @@ export function createTransport(req: ClientCompatRequest) { defaultTimeoutMs: req.timeoutMs, compressMinBytes: -1, // To account for empty messages jsonOptions: { - typeRegistry: createRegistry( - UnaryRequest, - ServerStreamRequest, - ClientStreamRequest, - BidiStreamRequest, - IdempotentUnaryRequest, + registry: createRegistry( + UnaryRequestSchema, + ServerStreamRequestSchema, + ClientStreamRequestSchema, + BidiStreamRequestSchema, + IdempotentUnaryRequestSchema, ), }, } satisfies Parameters[0]; diff --git a/packages/connect-cloudflare/package.json b/packages/connect-cloudflare/package.json index 7028c5d57..4171cb9fa 100644 --- a/packages/connect-cloudflare/package.json +++ b/packages/connect-cloudflare/package.json @@ -10,14 +10,14 @@ "lint": "eslint --max-warnings 0 ." }, "dependencies": { - "@bufbuild/protobuf": "^1.10.0", - "@connectrpc/connect": "1.6.1", - "@connectrpc/connect-node": "1.6.1" + "@bufbuild/protobuf": "^2.2.0", + "@connectrpc/connect": "2.0.0-rc.2", + "@connectrpc/connect-node": "2.0.0-rc.2" }, "devDependencies": { "@cloudflare/workers-types": "^4.20240821.1", "wrangler": "^3.73.0", "tsx": "^4.19.0", - "@connectrpc/connect-conformance": "^1.6.1" + "@connectrpc/connect-conformance": "^2.0.0-rc.2" } } diff --git a/packages/connect-conformance/buf.gen.yaml b/packages/connect-conformance/buf.gen.yaml index 20c01f770..bf3826b3a 100644 --- a/packages/connect-conformance/buf.gen.yaml +++ b/packages/connect-conformance/buf.gen.yaml @@ -5,7 +5,4 @@ clean: true plugins: - local: protoc-gen-es out: src/gen - opt: ts_nocheck=false,target=ts - - local: protoc-gen-connect-es - out: src/gen - opt: ts_nocheck=false,target=ts + opt: target=ts,import_extension=.js diff --git a/packages/connect-conformance/package.json b/packages/connect-conformance/package.json index 374ae0216..62221d644 100644 --- a/packages/connect-conformance/package.json +++ b/packages/connect-conformance/package.json @@ -1,6 +1,6 @@ { "name": "@connectrpc/connect-conformance", - "version": "1.6.1", + "version": "2.0.0-rc.2", "private": true, "type": "module", "main": "./dist/cjs/src/index.js", @@ -27,17 +27,16 @@ "attw": "attw --pack" }, "dependencies": { - "@bufbuild/protobuf": "^1.10.0", - "@connectrpc/connect": "1.6.1", + "@bufbuild/protobuf": "^2.2.0", + "@connectrpc/connect": "2.0.0-rc.2", "fflate": "^0.8.1", - "tar-stream": "^3.1.7", - "undici": "^5.28.4" + "tar-stream": "^3.1.7" }, "devDependencies": { "@bufbuild/buf": "^1.39.0", - "@types/node-forge": "^1.3.9", - "@types/tar-stream": "^3.1.3", + "@bufbuild/protoc-gen-es": "^2.1.0", "@types/debug": "^4.1.12", - "@connectrpc/protoc-gen-connect-es": "1.6.1" + "@types/node-forge": "^1.3.9", + "@types/tar-stream": "^3.1.3" } } diff --git a/packages/connect-conformance/src/callback-client.ts b/packages/connect-conformance/src/callback-client.ts index 32aed77e8..717f81e81 100644 --- a/packages/connect-conformance/src/callback-client.ts +++ b/packages/connect-conformance/src/callback-client.ts @@ -12,18 +12,29 @@ // See the License for the specific language governing permissions and // limitations under the License. -import { createCallbackClient, ConnectError, Code } from "@connectrpc/connect"; -import type { CallbackClient, Transport } from "@connectrpc/connect"; +import { create } from "@bufbuild/protobuf"; import { - ClientCompatRequest, - ClientResponseResult, + createCallbackClient, + ConnectError, + Code, + type CallOptions, + type CallbackClient, + type Transport, +} from "@connectrpc/connect"; +import { + ClientResponseResultSchema, + type ClientCompatRequest, + type ClientResponseResult, } from "./gen/connectrpc/conformance/v1/client_compat_pb.js"; import { - UnaryRequest, - ServerStreamRequest, - UnimplementedRequest, - IdempotentUnaryRequest, - ConformancePayload, + UnaryRequestSchema, + ServerStreamRequestSchema, + UnimplementedRequestSchema, + IdempotentUnaryRequestSchema, + ConformanceService, + ConformancePayloadSchema, + type UnaryResponse, + type IdempotentUnaryResponse, } from "./gen/connectrpc/conformance/v1/service_pb.js"; import { convertToProtoError, @@ -34,11 +45,10 @@ import { getSingleRequestMessage, setClientErrorResult, } from "./protocol.js"; -import { ConformanceService } from "./gen/connectrpc/conformance/v1/service_connect.js"; type ConformanceClient = CallbackClient; -const emptyPayload = new ConformancePayload(); +const emptyPayload = create(ConformancePayloadSchema); export function invokeWithCallbackClient( transport: Transport, @@ -47,13 +57,13 @@ export function invokeWithCallbackClient( const client = createCallbackClient(ConformanceService, transport); switch (req.method) { - case ConformanceService.methods.unary.name: + case ConformanceService.method.unary.name: return unary(client, req); - case ConformanceService.methods.idempotentUnary.name: + case ConformanceService.method.idempotentUnary.name: return unary(client, req, true); - case ConformanceService.methods.serverStream.name: + case ConformanceService.method.serverStream.name: return serverStream(client, req); - case ConformanceService.methods.unimplemented.name: + case ConformanceService.method.unimplemented.name: return unimplemented(client, req); default: throw new Error(`Unknown method: ${req.method}`); @@ -66,39 +76,46 @@ async function unary( idempotent: boolean = false, ) { await wait(compatRequest.requestDelayMs); - const result = new ClientResponseResult(); + const result = create(ClientResponseResultSchema); return new Promise((resolve) => { - const call = idempotent ? client.idempotentUnary : client.unary; - let clientCancelled = false; - const clientCancelFn = call( - getSingleRequestMessage( - compatRequest, - idempotent ? IdempotentUnaryRequest : UnaryRequest, - ), - (err, response) => { - // Callback clients swallow client triggered cancellations and never - // call the callback. This will trigger the global error handler and - // fail the process. - if (clientCancelled) { - throw new Error("Aborted requests should not trigger the callback"); - } - if (err !== undefined) { - setClientErrorResult(result, err); - } else { - result.payloads.push(response.payload ?? emptyPayload); - } - resolve(result); + const callOptions: CallOptions = { + headers: getRequestHeaders(compatRequest), + onHeader(headers) { + result.responseHeaders = convertToProtoHeaders(headers); }, - { - headers: getRequestHeaders(compatRequest), - onHeader(headers) { - result.responseHeaders = convertToProtoHeaders(headers); - }, - onTrailer(trailers) { - result.responseTrailers = convertToProtoHeaders(trailers); - }, + onTrailer(trailers) { + result.responseTrailers = convertToProtoHeaders(trailers); }, - ); + }; + let clientCancelled = false; + const callback = ( + error: ConnectError | undefined, + response: UnaryResponse | IdempotentUnaryResponse, + ): void => { + // Callback clients swallow client triggered cancellations and never + // call the callback. This will trigger the global error handler and + // fail the process. + if (clientCancelled) { + throw new Error("Aborted requests should not trigger the callback"); + } + if (error !== undefined) { + setClientErrorResult(result, error); + } else { + result.payloads.push(response.payload ?? emptyPayload); + } + resolve(result); + }; + const clientCancelFn = idempotent + ? client.idempotentUnary( + getSingleRequestMessage(compatRequest, IdempotentUnaryRequestSchema), + callback, + callOptions, + ) + : client.unary( + getSingleRequestMessage(compatRequest, UnaryRequestSchema), + callback, + callOptions, + ); const { afterCloseSendMs } = getCancelTiming(compatRequest); if (afterCloseSendMs >= 0) { setTimeout(() => { @@ -122,11 +139,11 @@ async function serverStream( ) { const cancelTiming = getCancelTiming(compatRequest); await wait(compatRequest.requestDelayMs); - const result = new ClientResponseResult(); + const result = create(ClientResponseResultSchema); return new Promise((resolve) => { let clientCancelled = false; const clientCancelFn = client.serverStream( - getSingleRequestMessage(compatRequest, ServerStreamRequest), + getSingleRequestMessage(compatRequest, ServerStreamRequestSchema), (response) => { result.payloads.push(response.payload ?? emptyPayload); if (result.payloads.length === cancelTiming.afterNumResponses) { @@ -176,10 +193,10 @@ async function unimplemented( client: ConformanceClient, compatRequest: ClientCompatRequest, ) { - const result = new ClientResponseResult(); + const result = create(ClientResponseResultSchema); return new Promise((resolve) => { client.unimplemented( - getSingleRequestMessage(compatRequest, UnimplementedRequest), + getSingleRequestMessage(compatRequest, UnimplementedRequestSchema), // eslint-disable-next-line @typescript-eslint/no-unused-vars (err, _) => { if (err !== undefined) { diff --git a/packages/connect-conformance/src/conformance.ts b/packages/connect-conformance/src/conformance.ts index 6854c7300..8c55adab6 100644 --- a/packages/connect-conformance/src/conformance.ts +++ b/packages/connect-conformance/src/conformance.ts @@ -26,7 +26,6 @@ import * as tar from "tar-stream"; import { pipeline } from "node:stream/promises"; import { Readable } from "node:stream"; import { execFileSync } from "node:child_process"; -import { fetch } from "undici"; import { scripts } from "../package.json"; export async function run() { diff --git a/packages/connect-conformance/src/gen/connectrpc/conformance/v1/client_compat_pb.ts b/packages/connect-conformance/src/gen/connectrpc/conformance/v1/client_compat_pb.ts index cbf06a717..2fba6e711 100644 --- a/packages/connect-conformance/src/gen/connectrpc/conformance/v1/client_compat_pb.ts +++ b/packages/connect-conformance/src/gen/connectrpc/conformance/v1/client_compat_pb.ts @@ -12,14 +12,25 @@ // See the License for the specific language governing permissions and // limitations under the License. -// @generated by protoc-gen-es v1.10.0 with parameter "ts_nocheck=false,target=ts" +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts,import_extension=.js" // @generated from file connectrpc/conformance/v1/client_compat.proto (package connectrpc.conformance.v1, syntax proto3) /* eslint-disable */ -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Any, Empty, Message, proto3, Struct } from "@bufbuild/protobuf"; -import { Codec, Compression, HTTPVersion, Protocol, StreamType, TLSCreds } from "./config_pb.js"; -import { ConformancePayload, Error, Header, RawHTTPRequest } from "./service_pb.js"; +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Codec, Compression, HTTPVersion, Protocol, StreamType, TLSCreds } from "./config_pb.js"; +import { file_connectrpc_conformance_v1_config } from "./config_pb.js"; +import type { ConformancePayload, Error, Header, RawHTTPRequest } from "./service_pb.js"; +import { file_connectrpc_conformance_v1_service } from "./service_pb.js"; +import type { Any, Empty } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_any, file_google_protobuf_empty, file_google_protobuf_struct } from "@bufbuild/protobuf/wkt"; +import type { JsonObject, Message } from "@bufbuild/protobuf"; + +/** + * Describes the file connectrpc/conformance/v1/client_compat.proto. + */ +export const file_connectrpc_conformance_v1_client_compat: GenFile = /*@__PURE__*/ + fileDesc("Ci1jb25uZWN0cnBjL2NvbmZvcm1hbmNlL3YxL2NsaWVudF9jb21wYXQucHJvdG8SGWNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEi/QcKE0NsaWVudENvbXBhdFJlcXVlc3QSEQoJdGVzdF9uYW1lGAEgASgJEjwKDGh0dHBfdmVyc2lvbhgCIAEoDjImLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuSFRUUFZlcnNpb24SNQoIcHJvdG9jb2wYAyABKA4yIy5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLlByb3RvY29sEi8KBWNvZGVjGAQgASgOMiAuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5Db2RlYxI7Cgtjb21wcmVzc2lvbhgFIAEoDjImLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuQ29tcHJlc3Npb24SDAoEaG9zdBgGIAEoCRIMCgRwb3J0GAcgASgNEhcKD3NlcnZlcl90bHNfY2VydBgIIAEoDBI9ChBjbGllbnRfdGxzX2NyZWRzGAkgASgLMiMuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5UTFNDcmVkcxIdChVtZXNzYWdlX3JlY2VpdmVfbGltaXQYCiABKA0SFAoHc2VydmljZRgLIAEoCUgAiAEBEhMKBm1ldGhvZBgMIAEoCUgBiAEBEjoKC3N0cmVhbV90eXBlGA0gASgOMiUuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5TdHJlYW1UeXBlEhsKE3VzZV9nZXRfaHR0cF9tZXRob2QYDiABKAgSOgoPcmVxdWVzdF9oZWFkZXJzGA8gAygLMiEuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5IZWFkZXISLgoQcmVxdWVzdF9tZXNzYWdlcxgQIAMoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnkSFwoKdGltZW91dF9tcxgRIAEoDUgCiAEBEhgKEHJlcXVlc3RfZGVsYXlfbXMYEiABKA0SRQoGY2FuY2VsGBMgASgLMjUuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5DbGllbnRDb21wYXRSZXF1ZXN0LkNhbmNlbBI+CgtyYXdfcmVxdWVzdBgUIAEoCzIpLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuUmF3SFRUUFJlcXVlc3QajAEKBkNhbmNlbBIzChFiZWZvcmVfY2xvc2Vfc2VuZBgBIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAEh0KE2FmdGVyX2Nsb3NlX3NlbmRfbXMYAiABKA1IABIdChNhZnRlcl9udW1fcmVzcG9uc2VzGAMgASgNSABCDwoNY2FuY2VsX3RpbWluZ0IKCghfc2VydmljZUIJCgdfbWV0aG9kQg0KC190aW1lb3V0X21zIrcBChRDbGllbnRDb21wYXRSZXNwb25zZRIRCgl0ZXN0X25hbWUYASABKAkSQwoIcmVzcG9uc2UYAiABKAsyLy5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLkNsaWVudFJlc3BvbnNlUmVzdWx0SAASPQoFZXJyb3IYAyABKAsyLC5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLkNsaWVudEVycm9yUmVzdWx0SABCCAoGcmVzdWx0IuYCChRDbGllbnRSZXNwb25zZVJlc3VsdBI7ChByZXNwb25zZV9oZWFkZXJzGAEgAygLMiEuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5IZWFkZXISPwoIcGF5bG9hZHMYAiADKAsyLS5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLkNvbmZvcm1hbmNlUGF5bG9hZBIvCgVlcnJvchgDIAEoCzIgLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuRXJyb3ISPAoRcmVzcG9uc2VfdHJhaWxlcnMYBCADKAsyIS5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLkhlYWRlchIbChNudW1fdW5zZW50X3JlcXVlc3RzGAUgASgFEh0KEGh0dHBfc3RhdHVzX2NvZGUYBiABKAVIAIgBARIQCghmZWVkYmFjaxgHIAMoCUITChFfaHR0cF9zdGF0dXNfY29kZSIkChFDbGllbnRFcnJvclJlc3VsdBIPCgdtZXNzYWdlGAEgASgJIuABCgtXaXJlRGV0YWlscxIaChJhY3R1YWxfc3RhdHVzX2NvZGUYASABKAUSMgoRY29ubmVjdF9lcnJvcl9yYXcYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Ej8KFGFjdHVhbF9odHRwX3RyYWlsZXJzGAMgAygLMiEuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5IZWFkZXISJAoXYWN0dWFsX2dycGN3ZWJfdHJhaWxlcnMYBCABKAlIAIgBAUIaChhfYWN0dWFsX2dycGN3ZWJfdHJhaWxlcnNiBnByb3RvMw", [file_connectrpc_conformance_v1_config, file_connectrpc_conformance_v1_service, file_google_protobuf_any, file_google_protobuf_empty, file_google_protobuf_struct]); /** * Describes one call the client should make. The client reads @@ -29,14 +40,14 @@ import { ConformancePayload, Error, Header, RawHTTPRequest } from "./service_pb. * * @generated from message connectrpc.conformance.v1.ClientCompatRequest */ -export class ClientCompatRequest extends Message { +export type ClientCompatRequest = Message<"connectrpc.conformance.v1.ClientCompatRequest"> & { /** * The name of the test that this request is performing. * When writing test cases, this is a required field. * * @generated from field: string test_name = 1; */ - testName = ""; + testName: string; /** * Test suite YAML definitions should NOT set values for these next @@ -49,42 +60,42 @@ export class ClientCompatRequest extends Message { * * @generated from field: connectrpc.conformance.v1.HTTPVersion http_version = 2; */ - httpVersion = HTTPVersion.HTTP_VERSION_UNSPECIFIED; + httpVersion: HTTPVersion; /** * The protocol to use for the test (i.e. Connect, gRPC, gRPC-web). * * @generated from field: connectrpc.conformance.v1.Protocol protocol = 3; */ - protocol = Protocol.UNSPECIFIED; + protocol: Protocol; /** * The codec to use for the test (i.e. JSON, proto/binary). * * @generated from field: connectrpc.conformance.v1.Codec codec = 4; */ - codec = Codec.UNSPECIFIED; + codec: Codec; /** * The compression to use for the test (i.e. brotli, gzip, identity). * * @generated from field: connectrpc.conformance.v1.Compression compression = 5; */ - compression = Compression.UNSPECIFIED; + compression: Compression; /** * The server host that this request will be sent to. * * @generated from field: string host = 6; */ - host = ""; + host: string; /** * The server port that this request will be sent to. * * @generated from field: uint32 port = 7; */ - port = 0; + port: number; /** * If non-empty, the server is using TLS. The bytes are the @@ -93,7 +104,7 @@ export class ClientCompatRequest extends Message { * * @generated from field: bytes server_tls_cert = 8; */ - serverTlsCert = new Uint8Array(0); + serverTlsCert: Uint8Array; /** * If present, the client certificate credentials to use to @@ -110,7 +121,7 @@ export class ClientCompatRequest extends Message { * * @generated from field: uint32 message_receive_limit = 10; */ - messageReceiveLimit = 0; + messageReceiveLimit: number; /** * The fully-qualified name of the service this test will interact with. @@ -137,7 +148,7 @@ export class ClientCompatRequest extends Message { * * @generated from field: connectrpc.conformance.v1.StreamType stream_type = 13; */ - streamType = StreamType.UNSPECIFIED; + streamType: StreamType; /** * If protocol indicates Connect and stream type indicates @@ -146,7 +157,7 @@ export class ClientCompatRequest extends Message { * * @generated from field: bool use_get_http_method = 14; */ - useGetHttpMethod = false; + useGetHttpMethod: boolean; /** * Any request headers that should be sent as part of the request. @@ -156,7 +167,7 @@ export class ClientCompatRequest extends Message { * * @generated from field: repeated connectrpc.conformance.v1.Header request_headers = 15; */ - requestHeaders: Header[] = []; + requestHeaders: Header[]; /** * The actual request messages that will sent to the server. @@ -169,7 +180,7 @@ export class ClientCompatRequest extends Message { * * @generated from field: repeated google.protobuf.Any request_messages = 16; */ - requestMessages: Any[] = []; + requestMessages: Any[]; /** * The timeout, in milliseconds, for the request. This is equivalent to a @@ -186,7 +197,7 @@ export class ClientCompatRequest extends Message { * * @generated from field: uint32 request_delay_ms = 18; */ - requestDelayMs = 0; + requestDelayMs: number; /** * If present, the client should cancel the RPC instead of @@ -210,58 +221,19 @@ export class ClientCompatRequest extends Message { * @generated from field: connectrpc.conformance.v1.RawHTTPRequest raw_request = 20; */ rawRequest?: RawHTTPRequest; +}; - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.ClientCompatRequest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "test_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "http_version", kind: "enum", T: proto3.getEnumType(HTTPVersion) }, - { no: 3, name: "protocol", kind: "enum", T: proto3.getEnumType(Protocol) }, - { no: 4, name: "codec", kind: "enum", T: proto3.getEnumType(Codec) }, - { no: 5, name: "compression", kind: "enum", T: proto3.getEnumType(Compression) }, - { no: 6, name: "host", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 7, name: "port", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, - { no: 8, name: "server_tls_cert", kind: "scalar", T: 12 /* ScalarType.BYTES */ }, - { no: 9, name: "client_tls_creds", kind: "message", T: TLSCreds }, - { no: 10, name: "message_receive_limit", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, - { no: 11, name: "service", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, - { no: 12, name: "method", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, - { no: 13, name: "stream_type", kind: "enum", T: proto3.getEnumType(StreamType) }, - { no: 14, name: "use_get_http_method", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, - { no: 15, name: "request_headers", kind: "message", T: Header, repeated: true }, - { no: 16, name: "request_messages", kind: "message", T: Any, repeated: true }, - { no: 17, name: "timeout_ms", kind: "scalar", T: 13 /* ScalarType.UINT32 */, opt: true }, - { no: 18, name: "request_delay_ms", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, - { no: 19, name: "cancel", kind: "message", T: ClientCompatRequest_Cancel }, - { no: 20, name: "raw_request", kind: "message", T: RawHTTPRequest }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ClientCompatRequest { - return new ClientCompatRequest().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ClientCompatRequest { - return new ClientCompatRequest().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ClientCompatRequest { - return new ClientCompatRequest().fromJsonString(jsonString, options); - } - - static equals(a: ClientCompatRequest | PlainMessage | undefined, b: ClientCompatRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(ClientCompatRequest, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.ClientCompatRequest. + * Use `create(ClientCompatRequestSchema)` to create a new message. + */ +export const ClientCompatRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_client_compat, 0); /** * @generated from message connectrpc.conformance.v1.ClientCompatRequest.Cancel */ -export class ClientCompatRequest_Cancel extends Message { +export type ClientCompatRequest_Cancel = Message<"connectrpc.conformance.v1.ClientCompatRequest.Cancel"> & { /** * These fields determine the timing of cancellation. * If none are present, the client should cancel immediately @@ -319,50 +291,28 @@ export class ClientCompatRequest_Cancel extends Message) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.ClientCompatRequest.Cancel"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "before_close_send", kind: "message", T: Empty, oneof: "cancel_timing" }, - { no: 2, name: "after_close_send_ms", kind: "scalar", T: 13 /* ScalarType.UINT32 */, oneof: "cancel_timing" }, - { no: 3, name: "after_num_responses", kind: "scalar", T: 13 /* ScalarType.UINT32 */, oneof: "cancel_timing" }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ClientCompatRequest_Cancel { - return new ClientCompatRequest_Cancel().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ClientCompatRequest_Cancel { - return new ClientCompatRequest_Cancel().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ClientCompatRequest_Cancel { - return new ClientCompatRequest_Cancel().fromJsonString(jsonString, options); - } - - static equals(a: ClientCompatRequest_Cancel | PlainMessage | undefined, b: ClientCompatRequest_Cancel | PlainMessage | undefined): boolean { - return proto3.util.equals(ClientCompatRequest_Cancel, a, b); - } -} + } | { case: undefined; value?: undefined }; +}; + +/** + * Describes the message connectrpc.conformance.v1.ClientCompatRequest.Cancel. + * Use `create(ClientCompatRequest_CancelSchema)` to create a new message. + */ +export const ClientCompatRequest_CancelSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_client_compat, 0, 0); /** * The outcome of one ClientCompatRequest. * * @generated from message connectrpc.conformance.v1.ClientCompatResponse */ -export class ClientCompatResponse extends Message { +export type ClientCompatResponse = Message<"connectrpc.conformance.v1.ClientCompatResponse"> & { /** * The test name that this response applies to. * * @generated from field: string test_name = 1; */ - testName = ""; + testName: string; /** * These fields determine the outcome of the request. @@ -389,37 +339,15 @@ export class ClientCompatResponse extends Message { */ value: ClientErrorResult; case: "error"; - } | { case: undefined; value?: undefined } = { case: undefined }; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.ClientCompatResponse"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "test_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "response", kind: "message", T: ClientResponseResult, oneof: "result" }, - { no: 3, name: "error", kind: "message", T: ClientErrorResult, oneof: "result" }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ClientCompatResponse { - return new ClientCompatResponse().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ClientCompatResponse { - return new ClientCompatResponse().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ClientCompatResponse { - return new ClientCompatResponse().fromJsonString(jsonString, options); - } - - static equals(a: ClientCompatResponse | PlainMessage | undefined, b: ClientCompatResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(ClientCompatResponse, a, b); - } -} + } | { case: undefined; value?: undefined }; +}; + +/** + * Describes the message connectrpc.conformance.v1.ClientCompatResponse. + * Use `create(ClientCompatResponseSchema)` to create a new message. + */ +export const ClientCompatResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_client_compat, 1); /** * The result of a ClientCompatRequest, which may or may not be successful. @@ -427,13 +355,13 @@ export class ClientCompatResponse extends Message { * * @generated from message connectrpc.conformance.v1.ClientResponseResult */ -export class ClientResponseResult extends Message { +export type ClientResponseResult = Message<"connectrpc.conformance.v1.ClientResponseResult"> & { /** * All response headers read from the response. * * @generated from field: repeated connectrpc.conformance.v1.Header response_headers = 1; */ - responseHeaders: Header[] = []; + responseHeaders: Header[]; /** * Servers should echo back payloads that they received as part of the request. @@ -443,7 +371,7 @@ export class ClientResponseResult extends Message { * * @generated from field: repeated connectrpc.conformance.v1.ConformancePayload payloads = 2; */ - payloads: ConformancePayload[] = []; + payloads: ConformancePayload[]; /** * The error received from the actual RPC invocation. Note this is not representative @@ -459,7 +387,7 @@ export class ClientResponseResult extends Message { * * @generated from field: repeated connectrpc.conformance.v1.Header response_trailers = 4; */ - responseTrailers: Header[] = []; + responseTrailers: Header[]; /** * The number of messages that were present in the request but that could not be @@ -467,7 +395,7 @@ export class ClientResponseResult extends Message { * * @generated from field: int32 num_unsent_requests = 5; */ - numUnsentRequests = 0; + numUnsentRequests: number; /** * The following field is only set by the reference client. It communicates @@ -489,41 +417,15 @@ export class ClientResponseResult extends Message { * * @generated from field: repeated string feedback = 7; */ - feedback: string[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.ClientResponseResult"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "response_headers", kind: "message", T: Header, repeated: true }, - { no: 2, name: "payloads", kind: "message", T: ConformancePayload, repeated: true }, - { no: 3, name: "error", kind: "message", T: Error }, - { no: 4, name: "response_trailers", kind: "message", T: Header, repeated: true }, - { no: 5, name: "num_unsent_requests", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, - { no: 6, name: "http_status_code", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true }, - { no: 7, name: "feedback", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ClientResponseResult { - return new ClientResponseResult().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ClientResponseResult { - return new ClientResponseResult().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ClientResponseResult { - return new ClientResponseResult().fromJsonString(jsonString, options); - } - - static equals(a: ClientResponseResult | PlainMessage | undefined, b: ClientResponseResult | PlainMessage | undefined): boolean { - return proto3.util.equals(ClientResponseResult, a, b); - } -} + feedback: string[]; +}; + +/** + * Describes the message connectrpc.conformance.v1.ClientResponseResult. + * Use `create(ClientResponseResultSchema)` to create a new message. + */ +export const ClientResponseResultSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_client_compat, 2); /** * The client is not able to fulfill the ClientCompatRequest. This may be due @@ -532,7 +434,7 @@ export class ClientResponseResult extends Message { * * @generated from message connectrpc.conformance.v1.ClientErrorResult */ -export class ClientErrorResult extends Message { +export type ClientErrorResult = Message<"connectrpc.conformance.v1.ClientErrorResult"> & { /** * A message describing the error that occurred. This string will be shown to * users running conformance tests so it should include any relevant details @@ -540,35 +442,15 @@ export class ClientErrorResult extends Message { * * @generated from field: string message = 1; */ - message = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.ClientErrorResult"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "message", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ClientErrorResult { - return new ClientErrorResult().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ClientErrorResult { - return new ClientErrorResult().fromJson(jsonValue, options); - } + message: string; +}; - static fromJsonString(jsonString: string, options?: Partial): ClientErrorResult { - return new ClientErrorResult().fromJsonString(jsonString, options); - } - - static equals(a: ClientErrorResult | PlainMessage | undefined, b: ClientErrorResult | PlainMessage | undefined): boolean { - return proto3.util.equals(ClientErrorResult, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.ClientErrorResult. + * Use `create(ClientErrorResultSchema)` to create a new message. + */ +export const ClientErrorResultSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_client_compat, 3); /** * Details about various values as observed on the wire. This message is used @@ -577,13 +459,13 @@ export class ClientErrorResult extends Message { * * @generated from message connectrpc.conformance.v1.WireDetails */ -export class WireDetails extends Message { +export type WireDetails = Message<"connectrpc.conformance.v1.WireDetails"> & { /** * The HTTP status code of the response. * * @generated from field: int32 actual_status_code = 1; */ - actualStatusCode = 0; + actualStatusCode: number; /** * When processing an error from a Connect server, this should contain @@ -591,7 +473,7 @@ export class WireDetails extends Message { * * @generated from field: google.protobuf.Struct connect_error_raw = 2; */ - connectErrorRaw?: Struct; + connectErrorRaw?: JsonObject; /** * Any HTTP trailers observed after the response body. These do NOT @@ -600,7 +482,7 @@ export class WireDetails extends Message { * * @generated from field: repeated connectrpc.conformance.v1.Header actual_http_trailers = 3; */ - actualHttpTrailers: Header[] = []; + actualHttpTrailers: Header[]; /** * Any trailers that were transmitted in the final message of the @@ -614,35 +496,12 @@ export class WireDetails extends Message { * @generated from field: optional string actual_grpcweb_trailers = 4; */ actualGrpcwebTrailers?: string; +}; - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.WireDetails"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "actual_status_code", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, - { no: 2, name: "connect_error_raw", kind: "message", T: Struct }, - { no: 3, name: "actual_http_trailers", kind: "message", T: Header, repeated: true }, - { no: 4, name: "actual_grpcweb_trailers", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): WireDetails { - return new WireDetails().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): WireDetails { - return new WireDetails().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): WireDetails { - return new WireDetails().fromJsonString(jsonString, options); - } - - static equals(a: WireDetails | PlainMessage | undefined, b: WireDetails | PlainMessage | undefined): boolean { - return proto3.util.equals(WireDetails, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.WireDetails. + * Use `create(WireDetailsSchema)` to create a new message. + */ +export const WireDetailsSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_client_compat, 4); diff --git a/packages/connect-conformance/src/gen/connectrpc/conformance/v1/config_pb.ts b/packages/connect-conformance/src/gen/connectrpc/conformance/v1/config_pb.ts index 8373d0234..ec6c87a0f 100644 --- a/packages/connect-conformance/src/gen/connectrpc/conformance/v1/config_pb.ts +++ b/packages/connect-conformance/src/gen/connectrpc/conformance/v1/config_pb.ts @@ -12,12 +12,286 @@ // See the License for the specific language governing permissions and // limitations under the License. -// @generated by protoc-gen-es v1.10.0 with parameter "ts_nocheck=false,target=ts" +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts,import_extension=.js" // @generated from file connectrpc/conformance/v1/config.proto (package connectrpc.conformance.v1, syntax proto3) /* eslint-disable */ -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Message, proto3 } from "@bufbuild/protobuf"; +import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file connectrpc/conformance/v1/config.proto. + */ +export const file_connectrpc_conformance_v1_config: GenFile = /*@__PURE__*/ + fileDesc("CiZjb25uZWN0cnBjL2NvbmZvcm1hbmNlL3YxL2NvbmZpZy5wcm90bxIZY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MSK7AQoGQ29uZmlnEjUKCGZlYXR1cmVzGAEgASgLMiMuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5GZWF0dXJlcxI8Cg1pbmNsdWRlX2Nhc2VzGAIgAygLMiUuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5Db25maWdDYXNlEjwKDWV4Y2x1ZGVfY2FzZXMYAyADKAsyJS5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLkNvbmZpZ0Nhc2Ui5QUKCEZlYXR1cmVzEjgKCHZlcnNpb25zGAEgAygOMiYuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5IVFRQVmVyc2lvbhI2Cglwcm90b2NvbHMYAiADKA4yIy5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLlByb3RvY29sEjAKBmNvZGVjcxgDIAMoDjIgLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuQ29kZWMSPAoMY29tcHJlc3Npb25zGAQgAygOMiYuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5Db21wcmVzc2lvbhI7CgxzdHJlYW1fdHlwZXMYBSADKA4yJS5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLlN0cmVhbVR5cGUSGQoMc3VwcG9ydHNfaDJjGAYgASgISACIAQESGQoMc3VwcG9ydHNfdGxzGAcgASgISAGIAQESJgoZc3VwcG9ydHNfdGxzX2NsaWVudF9jZXJ0cxgIIAEoCEgCiAEBEh4KEXN1cHBvcnRzX3RyYWlsZXJzGAkgASgISAOIAQESMQokc3VwcG9ydHNfaGFsZl9kdXBsZXhfYmlkaV9vdmVyX2h0dHAxGAogASgISASIAQESIQoUc3VwcG9ydHNfY29ubmVjdF9nZXQYCyABKAhIBYgBARIrCh5zdXBwb3J0c19tZXNzYWdlX3JlY2VpdmVfbGltaXQYDCABKAhIBogBAUIPCg1fc3VwcG9ydHNfaDJjQg8KDV9zdXBwb3J0c190bHNCHAoaX3N1cHBvcnRzX3Rsc19jbGllbnRfY2VydHNCFAoSX3N1cHBvcnRzX3RyYWlsZXJzQicKJV9zdXBwb3J0c19oYWxmX2R1cGxleF9iaWRpX292ZXJfaHR0cDFCFwoVX3N1cHBvcnRzX2Nvbm5lY3RfZ2V0QiEKH19zdXBwb3J0c19tZXNzYWdlX3JlY2VpdmVfbGltaXQiygMKCkNvbmZpZ0Nhc2USNwoHdmVyc2lvbhgBIAEoDjImLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuSFRUUFZlcnNpb24SNQoIcHJvdG9jb2wYAiABKA4yIy5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLlByb3RvY29sEi8KBWNvZGVjGAMgASgOMiAuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5Db2RlYxI7Cgtjb21wcmVzc2lvbhgEIAEoDjImLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuQ29tcHJlc3Npb24SOgoLc3RyZWFtX3R5cGUYBSABKA4yJS5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLlN0cmVhbVR5cGUSFAoHdXNlX3RscxgGIAEoCEgAiAEBEiEKFHVzZV90bHNfY2xpZW50X2NlcnRzGAcgASgISAGIAQESJgoZdXNlX21lc3NhZ2VfcmVjZWl2ZV9saW1pdBgIIAEoCEgCiAEBQgoKCF91c2VfdGxzQhcKFV91c2VfdGxzX2NsaWVudF9jZXJ0c0IcChpfdXNlX21lc3NhZ2VfcmVjZWl2ZV9saW1pdCIlCghUTFNDcmVkcxIMCgRjZXJ0GAEgASgMEgsKA2tleRgCIAEoDCpnCgtIVFRQVmVyc2lvbhIcChhIVFRQX1ZFUlNJT05fVU5TUEVDSUZJRUQQABISCg5IVFRQX1ZFUlNJT05fMRABEhIKDkhUVFBfVkVSU0lPTl8yEAISEgoOSFRUUF9WRVJTSU9OXzMQAypkCghQcm90b2NvbBIYChRQUk9UT0NPTF9VTlNQRUNJRklFRBAAEhQKEFBST1RPQ09MX0NPTk5FQ1QQARIRCg1QUk9UT0NPTF9HUlBDEAISFQoRUFJPVE9DT0xfR1JQQ19XRUIQAypTCgVDb2RlYxIVChFDT0RFQ19VTlNQRUNJRklFRBAAEg8KC0NPREVDX1BST1RPEAESDgoKQ09ERUNfSlNPThACEhIKCkNPREVDX1RFWFQQAxoCCAEqtQEKC0NvbXByZXNzaW9uEhsKF0NPTVBSRVNTSU9OX1VOU1BFQ0lGSUVEEAASGAoUQ09NUFJFU1NJT05fSURFTlRJVFkQARIUChBDT01QUkVTU0lPTl9HWklQEAISEgoOQ09NUFJFU1NJT05fQlIQAxIUChBDT01QUkVTU0lPTl9aU1REEAQSFwoTQ09NUFJFU1NJT05fREVGTEFURRAFEhYKEkNPTVBSRVNTSU9OX1NOQVBQWRAGKtABCgpTdHJlYW1UeXBlEhsKF1NUUkVBTV9UWVBFX1VOU1BFQ0lGSUVEEAASFQoRU1RSRUFNX1RZUEVfVU5BUlkQARIdChlTVFJFQU1fVFlQRV9DTElFTlRfU1RSRUFNEAISHQoZU1RSRUFNX1RZUEVfU0VSVkVSX1NUUkVBTRADEicKI1NUUkVBTV9UWVBFX0hBTEZfRFVQTEVYX0JJRElfU1RSRUFNEAQSJwojU1RSRUFNX1RZUEVfRlVMTF9EVVBMRVhfQklESV9TVFJFQU0QBSqUAwoEQ29kZRIUChBDT0RFX1VOU1BFQ0lGSUVEEAASEQoNQ09ERV9DQU5DRUxFRBABEhAKDENPREVfVU5LTk9XThACEhkKFUNPREVfSU5WQUxJRF9BUkdVTUVOVBADEhoKFkNPREVfREVBRExJTkVfRVhDRUVERUQQBBISCg5DT0RFX05PVF9GT1VORBAFEhcKE0NPREVfQUxSRUFEWV9FWElTVFMQBhIaChZDT0RFX1BFUk1JU1NJT05fREVOSUVEEAcSGwoXQ09ERV9SRVNPVVJDRV9FWEhBVVNURUQQCBIcChhDT0RFX0ZBSUxFRF9QUkVDT05ESVRJT04QCRIQCgxDT0RFX0FCT1JURUQQChIVChFDT0RFX09VVF9PRl9SQU5HRRALEhYKEkNPREVfVU5JTVBMRU1FTlRFRBAMEhEKDUNPREVfSU5URVJOQUwQDRIUChBDT0RFX1VOQVZBSUxBQkxFEA4SEgoOQ09ERV9EQVRBX0xPU1MQDxIYChRDT0RFX1VOQVVUSEVOVElDQVRFRBAQYgZwcm90bzM"); + +/** + * Config defines the configuration for running conformance tests. + * This enumerates all of the "flavors" of the test suite to run. + * + * @generated from message connectrpc.conformance.v1.Config + */ +export type Config = Message<"connectrpc.conformance.v1.Config"> & { + /** + * The features supported by the client or server under test. + * This is used to filter the set of test cases that are run. + * If absent, an empty message is used. See Features for more + * on how empty/absent fields are interpreted. + * + * @generated from field: connectrpc.conformance.v1.Features features = 1; + */ + features?: Features; + + /** + * This can indicate additional permutations that are supported + * that might otherwise be excluded based on the above features. + * + * @generated from field: repeated connectrpc.conformance.v1.ConfigCase include_cases = 2; + */ + includeCases: ConfigCase[]; + + /** + * This can indicates permutations that are not supported even + * though their support might be implied by the above features. + * + * @generated from field: repeated connectrpc.conformance.v1.ConfigCase exclude_cases = 3; + */ + excludeCases: ConfigCase[]; +}; + +/** + * Describes the message connectrpc.conformance.v1.Config. + * Use `create(ConfigSchema)` to create a new message. + */ +export const ConfigSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_config, 0); + +/** + * Features define the feature set that a client or server supports. They are + * used to determine the server configurations and test cases that + * will be run. They are defined in YAML files and are specified as part of the + * --conf flag to the test runner. + * + * TODO: we could probably model some of the constraints on what are valid vs. + * invalid (i.e. conflicting/impossible) features using protovalidate rules + * + * @generated from message connectrpc.conformance.v1.Features + */ +export type Features = Message<"connectrpc.conformance.v1.Features"> & { + /** + * Supported HTTP versions. + * If empty, HTTP 1.1 and HTTP/2 are assumed. + * + * @generated from field: repeated connectrpc.conformance.v1.HTTPVersion versions = 1; + */ + versions: HTTPVersion[]; + + /** + * Supported protocols. + * If empty, all three are assumed: Connect, gRPC, and gRPC-Web. + * + * @generated from field: repeated connectrpc.conformance.v1.Protocol protocols = 2; + */ + protocols: Protocol[]; + + /** + * Supported codecs. + * If empty, "proto" and "json" are assumed. + * + * @generated from field: repeated connectrpc.conformance.v1.Codec codecs = 3; + */ + codecs: Codec[]; + + /** + * Supported compression algorithms. + * If empty, "identity" and "gzip" are assumed. + * + * @generated from field: repeated connectrpc.conformance.v1.Compression compressions = 4; + */ + compressions: Compression[]; + + /** + * Supported stream types. + * If empty, all stream types are assumed. This is usually for + * clients, since some client environments may not be able to + * support certain kinds of streaming operations, especially + * bidirectional streams. + * + * @generated from field: repeated connectrpc.conformance.v1.StreamType stream_types = 5; + */ + streamTypes: StreamType[]; + + /** + * Whether H2C (unencrypted, non-TLS HTTP/2 over cleartext) is supported. + * If absent, true is assumed. + * + * @generated from field: optional bool supports_h2c = 6; + */ + supportsH2c?: boolean; + + /** + * Whether TLS is supported. + * If absent, true is assumed. + * + * @generated from field: optional bool supports_tls = 7; + */ + supportsTls?: boolean; + + /** + * Whether the client supports TLS certificates. + * If absent, false is assumed. This should not be set if + * supports_tls is false. + * + * @generated from field: optional bool supports_tls_client_certs = 8; + */ + supportsTlsClientCerts?: boolean; + + /** + * Whether trailers are supported. + * If absent, true is assumed. If false, implies that gRPC protocol is not allowed. + * + * @generated from field: optional bool supports_trailers = 9; + */ + supportsTrailers?: boolean; + + /** + * Whether half duplex bidi streams are supported over HTTP/1.1. + * If absent, false is assumed. + * + * @generated from field: optional bool supports_half_duplex_bidi_over_http1 = 10; + */ + supportsHalfDuplexBidiOverHttp1?: boolean; + + /** + * Whether Connect via GET is supported. + * If absent, true is assumed. + * + * @generated from field: optional bool supports_connect_get = 11; + */ + supportsConnectGet?: boolean; + + /** + * Whether a message receive limit is supported. + * If absent, true is assumed. + * + * @generated from field: optional bool supports_message_receive_limit = 12; + */ + supportsMessageReceiveLimit?: boolean; +}; + +/** + * Describes the message connectrpc.conformance.v1.Features. + * Use `create(FeaturesSchema)` to create a new message. + */ +export const FeaturesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_config, 1); + +/** + * ConfigCase represents a single resolved configuration case. When tests are + * run, the Config and the supported features therein are used to compute all + * of the cases relevant to the implementation under test. These configuration + * cases are then used to select which test cases are applicable. + * + * TODO: we could probably model some of the constraints on what is a valid + * vs. invalid config case using protovalidate rules + * + * @generated from message connectrpc.conformance.v1.ConfigCase + */ +export type ConfigCase = Message<"connectrpc.conformance.v1.ConfigCase"> & { + /** + * If unspecified, indicates cases for all versions. + * + * @generated from field: connectrpc.conformance.v1.HTTPVersion version = 1; + */ + version: HTTPVersion; + + /** + * If unspecified, indicates cases for all protocols. + * + * @generated from field: connectrpc.conformance.v1.Protocol protocol = 2; + */ + protocol: Protocol; + + /** + * If unspecified, indicates cases for all codecs. + * + * @generated from field: connectrpc.conformance.v1.Codec codec = 3; + */ + codec: Codec; + + /** + * If unspecified, indicates cases for all compression algorithms. + * + * @generated from field: connectrpc.conformance.v1.Compression compression = 4; + */ + compression: Compression; + + /** + * If unspecified, indicates cases for all stream types. + * + * @generated from field: connectrpc.conformance.v1.StreamType stream_type = 5; + */ + streamType: StreamType; + + /** + * If absent, indicates cases for plaintext (no TLS) but also for + * TLS if features indicate that TLS is supported. + * + * @generated from field: optional bool use_tls = 6; + */ + useTls?: boolean; + + /** + * If absent, indicates cases without client certs but also cases + * that use client certs if features indicate they are supported. + * + * @generated from field: optional bool use_tls_client_certs = 7; + */ + useTlsClientCerts?: boolean; + + /** + * If absent, indicates cases that do not test message receive + * limits but also cases that do test message receive limits if + * features indicate they are supported. + * + * @generated from field: optional bool use_message_receive_limit = 8; + */ + useMessageReceiveLimit?: boolean; +}; + +/** + * Describes the message connectrpc.conformance.v1.ConfigCase. + * Use `create(ConfigCaseSchema)` to create a new message. + */ +export const ConfigCaseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_config, 2); + +/** + * TLSCreds represents credentials for TLS. It includes both a + * certificate and corresponding private key. Both are encoded + * in PEM format. + * + * @generated from message connectrpc.conformance.v1.TLSCreds + */ +export type TLSCreds = Message<"connectrpc.conformance.v1.TLSCreds"> & { + /** + * @generated from field: bytes cert = 1; + */ + cert: Uint8Array; + + /** + * @generated from field: bytes key = 2; + */ + key: Uint8Array; +}; + +/** + * Describes the message connectrpc.conformance.v1.TLSCreds. + * Use `create(TLSCredsSchema)` to create a new message. + */ +export const TLSCredsSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_config, 3); /** * @generated from enum connectrpc.conformance.v1.HTTPVersion @@ -43,13 +317,12 @@ export enum HTTPVersion { */ HTTP_VERSION_3 = 3, } -// Retrieve enum metadata with: proto3.getEnumType(HTTPVersion) -proto3.util.setEnumType(HTTPVersion, "connectrpc.conformance.v1.HTTPVersion", [ - { no: 0, name: "HTTP_VERSION_UNSPECIFIED" }, - { no: 1, name: "HTTP_VERSION_1" }, - { no: 2, name: "HTTP_VERSION_2" }, - { no: 3, name: "HTTP_VERSION_3" }, -]); + +/** + * Describes the enum connectrpc.conformance.v1.HTTPVersion. + */ +export const HTTPVersionSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_connectrpc_conformance_v1_config, 0); /** * @generated from enum connectrpc.conformance.v1.Protocol @@ -79,13 +352,12 @@ export enum Protocol { */ GRPC_WEB = 3, } -// Retrieve enum metadata with: proto3.getEnumType(Protocol) -proto3.util.setEnumType(Protocol, "connectrpc.conformance.v1.Protocol", [ - { no: 0, name: "PROTOCOL_UNSPECIFIED" }, - { no: 1, name: "PROTOCOL_CONNECT" }, - { no: 2, name: "PROTOCOL_GRPC" }, - { no: 3, name: "PROTOCOL_GRPC_WEB" }, -]); + +/** + * Describes the enum connectrpc.conformance.v1.Protocol. + */ +export const ProtocolSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_connectrpc_conformance_v1_config, 1); /** * @generated from enum connectrpc.conformance.v1.Codec @@ -114,13 +386,12 @@ export enum Codec { */ TEXT = 3, } -// Retrieve enum metadata with: proto3.getEnumType(Codec) -proto3.util.setEnumType(Codec, "connectrpc.conformance.v1.Codec", [ - { no: 0, name: "CODEC_UNSPECIFIED" }, - { no: 1, name: "CODEC_PROTO" }, - { no: 2, name: "CODEC_JSON" }, - { no: 3, name: "CODEC_TEXT" }, -]); + +/** + * Describes the enum connectrpc.conformance.v1.Codec. + */ +export const CodecSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_connectrpc_conformance_v1_config, 2); /** * @generated from enum connectrpc.conformance.v1.Compression @@ -161,16 +432,12 @@ export enum Compression { */ SNAPPY = 6, } -// Retrieve enum metadata with: proto3.getEnumType(Compression) -proto3.util.setEnumType(Compression, "connectrpc.conformance.v1.Compression", [ - { no: 0, name: "COMPRESSION_UNSPECIFIED" }, - { no: 1, name: "COMPRESSION_IDENTITY" }, - { no: 2, name: "COMPRESSION_GZIP" }, - { no: 3, name: "COMPRESSION_BR" }, - { no: 4, name: "COMPRESSION_ZSTD" }, - { no: 5, name: "COMPRESSION_DEFLATE" }, - { no: 6, name: "COMPRESSION_SNAPPY" }, -]); + +/** + * Describes the enum connectrpc.conformance.v1.Compression. + */ +export const CompressionSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_connectrpc_conformance_v1_config, 3); /** * @generated from enum connectrpc.conformance.v1.StreamType @@ -206,15 +473,12 @@ export enum StreamType { */ FULL_DUPLEX_BIDI_STREAM = 5, } -// Retrieve enum metadata with: proto3.getEnumType(StreamType) -proto3.util.setEnumType(StreamType, "connectrpc.conformance.v1.StreamType", [ - { no: 0, name: "STREAM_TYPE_UNSPECIFIED" }, - { no: 1, name: "STREAM_TYPE_UNARY" }, - { no: 2, name: "STREAM_TYPE_CLIENT_STREAM" }, - { no: 3, name: "STREAM_TYPE_SERVER_STREAM" }, - { no: 4, name: "STREAM_TYPE_HALF_DUPLEX_BIDI_STREAM" }, - { no: 5, name: "STREAM_TYPE_FULL_DUPLEX_BIDI_STREAM" }, -]); + +/** + * Describes the enum connectrpc.conformance.v1.StreamType. + */ +export const StreamTypeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_connectrpc_conformance_v1_config, 4); /** * @generated from enum connectrpc.conformance.v1.Code @@ -305,392 +569,10 @@ export enum Code { */ UNAUTHENTICATED = 16, } -// Retrieve enum metadata with: proto3.getEnumType(Code) -proto3.util.setEnumType(Code, "connectrpc.conformance.v1.Code", [ - { no: 0, name: "CODE_UNSPECIFIED" }, - { no: 1, name: "CODE_CANCELED" }, - { no: 2, name: "CODE_UNKNOWN" }, - { no: 3, name: "CODE_INVALID_ARGUMENT" }, - { no: 4, name: "CODE_DEADLINE_EXCEEDED" }, - { no: 5, name: "CODE_NOT_FOUND" }, - { no: 6, name: "CODE_ALREADY_EXISTS" }, - { no: 7, name: "CODE_PERMISSION_DENIED" }, - { no: 8, name: "CODE_RESOURCE_EXHAUSTED" }, - { no: 9, name: "CODE_FAILED_PRECONDITION" }, - { no: 10, name: "CODE_ABORTED" }, - { no: 11, name: "CODE_OUT_OF_RANGE" }, - { no: 12, name: "CODE_UNIMPLEMENTED" }, - { no: 13, name: "CODE_INTERNAL" }, - { no: 14, name: "CODE_UNAVAILABLE" }, - { no: 15, name: "CODE_DATA_LOSS" }, - { no: 16, name: "CODE_UNAUTHENTICATED" }, -]); - -/** - * Config defines the configuration for running conformance tests. - * This enumerates all of the "flavors" of the test suite to run. - * - * @generated from message connectrpc.conformance.v1.Config - */ -export class Config extends Message { - /** - * The features supported by the client or server under test. - * This is used to filter the set of test cases that are run. - * If absent, an empty message is used. See Features for more - * on how empty/absent fields are interpreted. - * - * @generated from field: connectrpc.conformance.v1.Features features = 1; - */ - features?: Features; - - /** - * This can indicate additional permutations that are supported - * that might otherwise be excluded based on the above features. - * - * @generated from field: repeated connectrpc.conformance.v1.ConfigCase include_cases = 2; - */ - includeCases: ConfigCase[] = []; - - /** - * This can indicates permutations that are not supported even - * though their support might be implied by the above features. - * - * @generated from field: repeated connectrpc.conformance.v1.ConfigCase exclude_cases = 3; - */ - excludeCases: ConfigCase[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.Config"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "features", kind: "message", T: Features }, - { no: 2, name: "include_cases", kind: "message", T: ConfigCase, repeated: true }, - { no: 3, name: "exclude_cases", kind: "message", T: ConfigCase, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Config { - return new Config().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Config { - return new Config().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Config { - return new Config().fromJsonString(jsonString, options); - } - - static equals(a: Config | PlainMessage | undefined, b: Config | PlainMessage | undefined): boolean { - return proto3.util.equals(Config, a, b); - } -} /** - * Features define the feature set that a client or server supports. They are - * used to determine the server configurations and test cases that - * will be run. They are defined in YAML files and are specified as part of the - * --conf flag to the test runner. - * - * TODO: we could probably model some of the constraints on what are valid vs. - * invalid (i.e. conflicting/impossible) features using protovalidate rules - * - * @generated from message connectrpc.conformance.v1.Features + * Describes the enum connectrpc.conformance.v1.Code. */ -export class Features extends Message { - /** - * Supported HTTP versions. - * If empty, HTTP 1.1 and HTTP/2 are assumed. - * - * @generated from field: repeated connectrpc.conformance.v1.HTTPVersion versions = 1; - */ - versions: HTTPVersion[] = []; - - /** - * Supported protocols. - * If empty, all three are assumed: Connect, gRPC, and gRPC-Web. - * - * @generated from field: repeated connectrpc.conformance.v1.Protocol protocols = 2; - */ - protocols: Protocol[] = []; - - /** - * Supported codecs. - * If empty, "proto" and "json" are assumed. - * - * @generated from field: repeated connectrpc.conformance.v1.Codec codecs = 3; - */ - codecs: Codec[] = []; - - /** - * Supported compression algorithms. - * If empty, "identity" and "gzip" are assumed. - * - * @generated from field: repeated connectrpc.conformance.v1.Compression compressions = 4; - */ - compressions: Compression[] = []; - - /** - * Supported stream types. - * If empty, all stream types are assumed. This is usually for - * clients, since some client environments may not be able to - * support certain kinds of streaming operations, especially - * bidirectional streams. - * - * @generated from field: repeated connectrpc.conformance.v1.StreamType stream_types = 5; - */ - streamTypes: StreamType[] = []; - - /** - * Whether H2C (unencrypted, non-TLS HTTP/2 over cleartext) is supported. - * If absent, true is assumed. - * - * @generated from field: optional bool supports_h2c = 6; - */ - supportsH2c?: boolean; - - /** - * Whether TLS is supported. - * If absent, true is assumed. - * - * @generated from field: optional bool supports_tls = 7; - */ - supportsTls?: boolean; - - /** - * Whether the client supports TLS certificates. - * If absent, false is assumed. This should not be set if - * supports_tls is false. - * - * @generated from field: optional bool supports_tls_client_certs = 8; - */ - supportsTlsClientCerts?: boolean; - - /** - * Whether trailers are supported. - * If absent, true is assumed. If false, implies that gRPC protocol is not allowed. - * - * @generated from field: optional bool supports_trailers = 9; - */ - supportsTrailers?: boolean; - - /** - * Whether half duplex bidi streams are supported over HTTP/1.1. - * If absent, false is assumed. - * - * @generated from field: optional bool supports_half_duplex_bidi_over_http1 = 10; - */ - supportsHalfDuplexBidiOverHttp1?: boolean; - - /** - * Whether Connect via GET is supported. - * If absent, true is assumed. - * - * @generated from field: optional bool supports_connect_get = 11; - */ - supportsConnectGet?: boolean; - - /** - * Whether a message receive limit is supported. - * If absent, true is assumed. - * - * @generated from field: optional bool supports_message_receive_limit = 12; - */ - supportsMessageReceiveLimit?: boolean; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.Features"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "versions", kind: "enum", T: proto3.getEnumType(HTTPVersion), repeated: true }, - { no: 2, name: "protocols", kind: "enum", T: proto3.getEnumType(Protocol), repeated: true }, - { no: 3, name: "codecs", kind: "enum", T: proto3.getEnumType(Codec), repeated: true }, - { no: 4, name: "compressions", kind: "enum", T: proto3.getEnumType(Compression), repeated: true }, - { no: 5, name: "stream_types", kind: "enum", T: proto3.getEnumType(StreamType), repeated: true }, - { no: 6, name: "supports_h2c", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true }, - { no: 7, name: "supports_tls", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true }, - { no: 8, name: "supports_tls_client_certs", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true }, - { no: 9, name: "supports_trailers", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true }, - { no: 10, name: "supports_half_duplex_bidi_over_http1", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true }, - { no: 11, name: "supports_connect_get", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true }, - { no: 12, name: "supports_message_receive_limit", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Features { - return new Features().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Features { - return new Features().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Features { - return new Features().fromJsonString(jsonString, options); - } - - static equals(a: Features | PlainMessage | undefined, b: Features | PlainMessage | undefined): boolean { - return proto3.util.equals(Features, a, b); - } -} - -/** - * ConfigCase represents a single resolved configuration case. When tests are - * run, the Config and the supported features therein are used to compute all - * of the cases relevant to the implementation under test. These configuration - * cases are then used to select which test cases are applicable. - * - * TODO: we could probably model some of the constraints on what is a valid - * vs. invalid config case using protovalidate rules - * - * @generated from message connectrpc.conformance.v1.ConfigCase - */ -export class ConfigCase extends Message { - /** - * If unspecified, indicates cases for all versions. - * - * @generated from field: connectrpc.conformance.v1.HTTPVersion version = 1; - */ - version = HTTPVersion.HTTP_VERSION_UNSPECIFIED; - - /** - * If unspecified, indicates cases for all protocols. - * - * @generated from field: connectrpc.conformance.v1.Protocol protocol = 2; - */ - protocol = Protocol.UNSPECIFIED; - - /** - * If unspecified, indicates cases for all codecs. - * - * @generated from field: connectrpc.conformance.v1.Codec codec = 3; - */ - codec = Codec.UNSPECIFIED; - - /** - * If unspecified, indicates cases for all compression algorithms. - * - * @generated from field: connectrpc.conformance.v1.Compression compression = 4; - */ - compression = Compression.UNSPECIFIED; - - /** - * If unspecified, indicates cases for all stream types. - * - * @generated from field: connectrpc.conformance.v1.StreamType stream_type = 5; - */ - streamType = StreamType.UNSPECIFIED; - - /** - * If absent, indicates cases for plaintext (no TLS) but also for - * TLS if features indicate that TLS is supported. - * - * @generated from field: optional bool use_tls = 6; - */ - useTls?: boolean; - - /** - * If absent, indicates cases without client certs but also cases - * that use client certs if features indicate they are supported. - * - * @generated from field: optional bool use_tls_client_certs = 7; - */ - useTlsClientCerts?: boolean; - - /** - * If absent, indicates cases that do not test message receive - * limits but also cases that do test message receive limits if - * features indicate they are supported. - * - * @generated from field: optional bool use_message_receive_limit = 8; - */ - useMessageReceiveLimit?: boolean; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.ConfigCase"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "version", kind: "enum", T: proto3.getEnumType(HTTPVersion) }, - { no: 2, name: "protocol", kind: "enum", T: proto3.getEnumType(Protocol) }, - { no: 3, name: "codec", kind: "enum", T: proto3.getEnumType(Codec) }, - { no: 4, name: "compression", kind: "enum", T: proto3.getEnumType(Compression) }, - { no: 5, name: "stream_type", kind: "enum", T: proto3.getEnumType(StreamType) }, - { no: 6, name: "use_tls", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true }, - { no: 7, name: "use_tls_client_certs", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true }, - { no: 8, name: "use_message_receive_limit", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ConfigCase { - return new ConfigCase().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ConfigCase { - return new ConfigCase().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ConfigCase { - return new ConfigCase().fromJsonString(jsonString, options); - } - - static equals(a: ConfigCase | PlainMessage | undefined, b: ConfigCase | PlainMessage | undefined): boolean { - return proto3.util.equals(ConfigCase, a, b); - } -} - -/** - * TLSCreds represents credentials for TLS. It includes both a - * certificate and corresponding private key. Both are encoded - * in PEM format. - * - * @generated from message connectrpc.conformance.v1.TLSCreds - */ -export class TLSCreds extends Message { - /** - * @generated from field: bytes cert = 1; - */ - cert = new Uint8Array(0); - - /** - * @generated from field: bytes key = 2; - */ - key = new Uint8Array(0); - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.TLSCreds"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "cert", kind: "scalar", T: 12 /* ScalarType.BYTES */ }, - { no: 2, name: "key", kind: "scalar", T: 12 /* ScalarType.BYTES */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): TLSCreds { - return new TLSCreds().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): TLSCreds { - return new TLSCreds().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): TLSCreds { - return new TLSCreds().fromJsonString(jsonString, options); - } - - static equals(a: TLSCreds | PlainMessage | undefined, b: TLSCreds | PlainMessage | undefined): boolean { - return proto3.util.equals(TLSCreds, a, b); - } -} +export const CodeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_connectrpc_conformance_v1_config, 5); diff --git a/packages/connect-conformance/src/gen/connectrpc/conformance/v1/server_compat_pb.ts b/packages/connect-conformance/src/gen/connectrpc/conformance/v1/server_compat_pb.ts index e56188206..fdcb1ab83 100644 --- a/packages/connect-conformance/src/gen/connectrpc/conformance/v1/server_compat_pb.ts +++ b/packages/connect-conformance/src/gen/connectrpc/conformance/v1/server_compat_pb.ts @@ -12,13 +12,21 @@ // See the License for the specific language governing permissions and // limitations under the License. -// @generated by protoc-gen-es v1.10.0 with parameter "ts_nocheck=false,target=ts" +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts,import_extension=.js" // @generated from file connectrpc/conformance/v1/server_compat.proto (package connectrpc.conformance.v1, syntax proto3) /* eslint-disable */ -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Message, proto3 } from "@bufbuild/protobuf"; -import { HTTPVersion, Protocol, TLSCreds } from "./config_pb.js"; +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { HTTPVersion, Protocol, TLSCreds } from "./config_pb.js"; +import { file_connectrpc_conformance_v1_config } from "./config_pb.js"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file connectrpc/conformance/v1/server_compat.proto. + */ +export const file_connectrpc_conformance_v1_server_compat: GenFile = /*@__PURE__*/ + fileDesc("Ci1jb25uZWN0cnBjL2NvbmZvcm1hbmNlL3YxL3NlcnZlcl9jb21wYXQucHJvdG8SGWNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEijgIKE1NlcnZlckNvbXBhdFJlcXVlc3QSNQoIcHJvdG9jb2wYASABKA4yIy5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLlByb3RvY29sEjwKDGh0dHBfdmVyc2lvbhgCIAEoDjImLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuSFRUUFZlcnNpb24SDwoHdXNlX3RscxgEIAEoCBIXCg9jbGllbnRfdGxzX2NlcnQYBSABKAwSHQoVbWVzc2FnZV9yZWNlaXZlX2xpbWl0GAYgASgNEjkKDHNlcnZlcl9jcmVkcxgHIAEoCzIjLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuVExTQ3JlZHMiRAoUU2VydmVyQ29tcGF0UmVzcG9uc2USDAoEaG9zdBgBIAEoCRIMCgRwb3J0GAIgASgNEhAKCHBlbV9jZXJ0GAMgASgMYgZwcm90bzM", [file_connectrpc_conformance_v1_config]); /** * Describes one configuration for an RPC server. The server is @@ -38,7 +46,7 @@ import { HTTPVersion, Protocol, TLSCreds } from "./config_pb.js"; * * @generated from message connectrpc.conformance.v1.ServerCompatRequest */ -export class ServerCompatRequest extends Message { +export type ServerCompatRequest = Message<"connectrpc.conformance.v1.ServerCompatRequest"> & { /** * Signals to the server that it must support at least this protocol. Note * that it is fine to support others. @@ -47,7 +55,7 @@ export class ServerCompatRequest extends Message { * * @generated from field: connectrpc.conformance.v1.Protocol protocol = 1; */ - protocol = Protocol.UNSPECIFIED; + protocol: Protocol; /** * Signals to the server the minimum HTTP version to support. As with @@ -57,7 +65,7 @@ export class ServerCompatRequest extends Message { * * @generated from field: connectrpc.conformance.v1.HTTPVersion http_version = 2; */ - httpVersion = HTTPVersion.HTTP_VERSION_UNSPECIFIED; + httpVersion: HTTPVersion; /** * If true, generate a certificate that clients will be configured to trust @@ -70,7 +78,7 @@ export class ServerCompatRequest extends Message { * * @generated from field: bool use_tls = 4; */ - useTls = false; + useTls: boolean; /** * If non-empty, the clients will use certificates to authenticate @@ -83,7 +91,7 @@ export class ServerCompatRequest extends Message { * * @generated from field: bytes client_tls_cert = 5; */ - clientTlsCert = new Uint8Array(0); + clientTlsCert: Uint8Array; /** * If non-zero, indicates the maximum size in bytes for a message. @@ -91,7 +99,7 @@ export class ServerCompatRequest extends Message { * * @generated from field: uint32 message_receive_limit = 6; */ - messageReceiveLimit = 0; + messageReceiveLimit: number; /** * If use_tls is true, this provides details for a self-signed TLS @@ -114,46 +122,21 @@ export class ServerCompatRequest extends Message { * @generated from field: connectrpc.conformance.v1.TLSCreds server_creds = 7; */ serverCreds?: TLSCreds; +}; - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.ServerCompatRequest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "protocol", kind: "enum", T: proto3.getEnumType(Protocol) }, - { no: 2, name: "http_version", kind: "enum", T: proto3.getEnumType(HTTPVersion) }, - { no: 4, name: "use_tls", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, - { no: 5, name: "client_tls_cert", kind: "scalar", T: 12 /* ScalarType.BYTES */ }, - { no: 6, name: "message_receive_limit", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, - { no: 7, name: "server_creds", kind: "message", T: TLSCreds }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ServerCompatRequest { - return new ServerCompatRequest().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ServerCompatRequest { - return new ServerCompatRequest().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ServerCompatRequest { - return new ServerCompatRequest().fromJsonString(jsonString, options); - } - - static equals(a: ServerCompatRequest | PlainMessage | undefined, b: ServerCompatRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(ServerCompatRequest, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.ServerCompatRequest. + * Use `create(ServerCompatRequestSchema)` to create a new message. + */ +export const ServerCompatRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_server_compat, 0); /** * The outcome of one ServerCompatRequest. * * @generated from message connectrpc.conformance.v1.ServerCompatResponse */ -export class ServerCompatResponse extends Message { +export type ServerCompatResponse = Message<"connectrpc.conformance.v1.ServerCompatResponse"> & { /** * The host where the server is running. This should usually be `127.0.0.1`, * unless your program actually starts a remote server to which the client @@ -161,14 +144,14 @@ export class ServerCompatResponse extends Message { * * @generated from field: string host = 1; */ - host = ""; + host: string; /** * The port where the server is listening. * * @generated from field: uint32 port = 2; */ - port = 0; + port: number; /** * The TLS certificate, in PEM format, if `use_tls` was set @@ -177,35 +160,13 @@ export class ServerCompatResponse extends Message { * * @generated from field: bytes pem_cert = 3; */ - pemCert = new Uint8Array(0); - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.ServerCompatResponse"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "host", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "port", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, - { no: 3, name: "pem_cert", kind: "scalar", T: 12 /* ScalarType.BYTES */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ServerCompatResponse { - return new ServerCompatResponse().fromBinary(bytes, options); - } + pemCert: Uint8Array; +}; - static fromJson(jsonValue: JsonValue, options?: Partial): ServerCompatResponse { - return new ServerCompatResponse().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ServerCompatResponse { - return new ServerCompatResponse().fromJsonString(jsonString, options); - } - - static equals(a: ServerCompatResponse | PlainMessage | undefined, b: ServerCompatResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(ServerCompatResponse, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.ServerCompatResponse. + * Use `create(ServerCompatResponseSchema)` to create a new message. + */ +export const ServerCompatResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_server_compat, 1); diff --git a/packages/connect-conformance/src/gen/connectrpc/conformance/v1/service_connect.ts b/packages/connect-conformance/src/gen/connectrpc/conformance/v1/service_connect.ts deleted file mode 100644 index f16d31802..000000000 --- a/packages/connect-conformance/src/gen/connectrpc/conformance/v1/service_connect.ts +++ /dev/null @@ -1,202 +0,0 @@ -// Copyright 2021-2024 The Connect Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// @generated by protoc-gen-connect-es v1.6.1 with parameter "ts_nocheck=false,target=ts" -// @generated from file connectrpc/conformance/v1/service.proto (package connectrpc.conformance.v1, syntax proto3) -/* eslint-disable */ - -import { BidiStreamRequest, BidiStreamResponse, ClientStreamRequest, ClientStreamResponse, IdempotentUnaryRequest, IdempotentUnaryResponse, ServerStreamRequest, ServerStreamResponse, UnaryRequest, UnaryResponse, UnimplementedRequest, UnimplementedResponse } from "./service_pb.js"; -import { MethodIdempotency, MethodKind } from "@bufbuild/protobuf"; - -/** - * The service implemented by conformance test servers. This is implemented by - * the reference servers, used to test clients, and is expected to be implemented - * by test servers, since this is the service used by reference clients. - * - * Test servers must implement the service as described. - * - * @generated from service connectrpc.conformance.v1.ConformanceService - */ -export const ConformanceService = { - typeName: "connectrpc.conformance.v1.ConformanceService", - methods: { - /** - * A unary operation. The request indicates the response headers and trailers - * and also indicates either a response message or an error to send back. - * - * Response message data is specified as bytes. The service should echo back - * request properties in the ConformancePayload and then include the message - * data in the data field. - * - * If the response_delay_ms duration is specified, the server should wait the - * given duration after reading the request before sending the corresponding - * response. - * - * Servers should allow the response definition to be unset in the request and - * if it is, set no response headers or trailers and return no response data. - * The returned payload should only contain the request info. - * - * @generated from rpc connectrpc.conformance.v1.ConformanceService.Unary - */ - unary: { - name: "Unary", - I: UnaryRequest, - O: UnaryResponse, - kind: MethodKind.Unary, - }, - /** - * A server-streaming operation. The request indicates the response headers, - * response messages, trailers, and an optional error to send back. The - * response data should be sent in the order indicated, and the server should - * wait between sending response messages as indicated. - * - * Response message data is specified as bytes. The service should echo back - * request properties in the first ConformancePayload, and then include the - * message data in the data field. Subsequent messages after the first one - * should contain only the data field. - * - * Servers should immediately send response headers on the stream before sleeping - * for any specified response delay and/or sending the first message so that - * clients can be unblocked reading response headers. - * - * If a response definition is not specified OR is specified, but response data - * is empty, the server should skip sending anything on the stream. When there - * are no responses to send, servers should throw an error if one is provided - * and return without error if one is not. Stream headers and trailers should - * still be set on the stream if provided regardless of whether a response is - * sent or an error is thrown. - * - * @generated from rpc connectrpc.conformance.v1.ConformanceService.ServerStream - */ - serverStream: { - name: "ServerStream", - I: ServerStreamRequest, - O: ServerStreamResponse, - kind: MethodKind.ServerStreaming, - }, - /** - * A client-streaming operation. The first request indicates the response - * headers and trailers and also indicates either a response message or an - * error to send back. - * - * Response message data is specified as bytes. The service should echo back - * request properties, including all request messages in the order they were - * received, in the ConformancePayload and then include the message data in - * the data field. - * - * If the input stream is empty, the server's response will include no data, - * only the request properties (headers, timeout). - * - * Servers should only read the response definition from the first message in - * the stream and should ignore any definition set in subsequent messages. - * - * Servers should allow the response definition to be unset in the request and - * if it is, set no response headers or trailers and return no response data. - * The returned payload should only contain the request info. - * - * @generated from rpc connectrpc.conformance.v1.ConformanceService.ClientStream - */ - clientStream: { - name: "ClientStream", - I: ClientStreamRequest, - O: ClientStreamResponse, - kind: MethodKind.ClientStreaming, - }, - /** - * A bidirectional-streaming operation. The first request indicates the response - * headers, response messages, trailers, and an optional error to send back. - * The response data should be sent in the order indicated, and the server - * should wait between sending response messages as indicated. - * - * Response message data is specified as bytes and should be included in the - * data field of the ConformancePayload in each response. - * - * Servers should send responses indicated according to the rules of half duplex - * vs. full duplex streams. Once all responses are sent, the server should either - * return an error if specified or close the stream without error. - * - * Servers should immediately send response headers on the stream before sleeping - * for any specified response delay and/or sending the first message so that - * clients can be unblocked reading response headers. - * - * If a response definition is not specified OR is specified, but response data - * is empty, the server should skip sending anything on the stream. Stream - * headers and trailers should always be set on the stream if provided - * regardless of whether a response is sent or an error is thrown. - * - * If the full_duplex field is true: - * - the handler should read one request and then send back one response, and - * then alternate, reading another request and then sending back another response, etc. - * - * - if the server receives a request and has no responses to send, it - * should throw the error specified in the request. - * - * - the service should echo back all request properties in the first response - * including the last received request. Subsequent responses should only - * echo back the last received request. - * - * - if the response_delay_ms duration is specified, the server should wait the given - * duration after reading the request before sending the corresponding - * response. - * - * If the full_duplex field is false: - * - the handler should read all requests until the client is done sending. - * Once all requests are read, the server should then send back any responses - * specified in the response definition. - * - * - the server should echo back all request properties, including all request - * messages in the order they were received, in the first response. Subsequent - * responses should only include the message data in the data field. - * - * - if the response_delay_ms duration is specified, the server should wait that - * long in between sending each response message. - * - * - * @generated from rpc connectrpc.conformance.v1.ConformanceService.BidiStream - */ - bidiStream: { - name: "BidiStream", - I: BidiStreamRequest, - O: BidiStreamResponse, - kind: MethodKind.BiDiStreaming, - }, - /** - * A unary endpoint that the server should not implement and should instead - * return an unimplemented error when invoked. - * - * @generated from rpc connectrpc.conformance.v1.ConformanceService.Unimplemented - */ - unimplemented: { - name: "Unimplemented", - I: UnimplementedRequest, - O: UnimplementedResponse, - kind: MethodKind.Unary, - }, - /** - * A unary endpoint denoted as having no side effects (i.e. idempotent). - * Implementations should use an HTTP GET when invoking this endpoint and - * leverage query parameters to send data. - * - * @generated from rpc connectrpc.conformance.v1.ConformanceService.IdempotentUnary - */ - idempotentUnary: { - name: "IdempotentUnary", - I: IdempotentUnaryRequest, - O: IdempotentUnaryResponse, - kind: MethodKind.Unary, - idempotency: MethodIdempotency.NoSideEffects, - }, - } -} as const; - diff --git a/packages/connect-conformance/src/gen/connectrpc/conformance/v1/service_pb.ts b/packages/connect-conformance/src/gen/connectrpc/conformance/v1/service_pb.ts index 2968d6332..b25d303f4 100644 --- a/packages/connect-conformance/src/gen/connectrpc/conformance/v1/service_pb.ts +++ b/packages/connect-conformance/src/gen/connectrpc/conformance/v1/service_pb.ts @@ -12,13 +12,23 @@ // See the License for the specific language governing permissions and // limitations under the License. -// @generated by protoc-gen-es v1.10.0 with parameter "ts_nocheck=false,target=ts" +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts,import_extension=.js" // @generated from file connectrpc/conformance/v1/service.proto (package connectrpc.conformance.v1, syntax proto3) /* eslint-disable */ -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Any, Message, proto3 } from "@bufbuild/protobuf"; -import { Code, Compression } from "./config_pb.js"; +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Code, Compression } from "./config_pb.js"; +import { file_connectrpc_conformance_v1_config } from "./config_pb.js"; +import type { Any } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_any } from "@bufbuild/protobuf/wkt"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file connectrpc/conformance/v1/service.proto. + */ +export const file_connectrpc_conformance_v1_service: GenFile = /*@__PURE__*/ + fileDesc("Cidjb25uZWN0cnBjL2NvbmZvcm1hbmNlL3YxL3NlcnZpY2UucHJvdG8SGWNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEiyQIKF1VuYXJ5UmVzcG9uc2VEZWZpbml0aW9uEjsKEHJlc3BvbnNlX2hlYWRlcnMYASADKAsyIS5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLkhlYWRlchIXCg1yZXNwb25zZV9kYXRhGAIgASgMSAASMQoFZXJyb3IYAyABKAsyIC5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLkVycm9ySAASPAoRcmVzcG9uc2VfdHJhaWxlcnMYBCADKAsyIS5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLkhlYWRlchIZChFyZXNwb25zZV9kZWxheV9tcxgGIAEoDRJACgxyYXdfcmVzcG9uc2UYBSABKAsyKi5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLlJhd0hUVFBSZXNwb25zZUIKCghyZXNwb25zZSK6AgoYU3RyZWFtUmVzcG9uc2VEZWZpbml0aW9uEjsKEHJlc3BvbnNlX2hlYWRlcnMYASADKAsyIS5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLkhlYWRlchIVCg1yZXNwb25zZV9kYXRhGAIgAygMEhkKEXJlc3BvbnNlX2RlbGF5X21zGAMgASgNEi8KBWVycm9yGAQgASgLMiAuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5FcnJvchI8ChFyZXNwb25zZV90cmFpbGVycxgFIAMoCzIhLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuSGVhZGVyEkAKDHJhd19yZXNwb25zZRgGIAEoCzIqLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuUmF3SFRUUFJlc3BvbnNlInUKDFVuYXJ5UmVxdWVzdBJPChNyZXNwb25zZV9kZWZpbml0aW9uGAEgASgLMjIuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5VbmFyeVJlc3BvbnNlRGVmaW5pdGlvbhIUCgxyZXF1ZXN0X2RhdGEYAiABKAwiTwoNVW5hcnlSZXNwb25zZRI+CgdwYXlsb2FkGAEgASgLMi0uY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5Db25mb3JtYW5jZVBheWxvYWQifwoWSWRlbXBvdGVudFVuYXJ5UmVxdWVzdBJPChNyZXNwb25zZV9kZWZpbml0aW9uGAEgASgLMjIuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5VbmFyeVJlc3BvbnNlRGVmaW5pdGlvbhIUCgxyZXF1ZXN0X2RhdGEYAiABKAwiWQoXSWRlbXBvdGVudFVuYXJ5UmVzcG9uc2USPgoHcGF5bG9hZBgBIAEoCzItLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuQ29uZm9ybWFuY2VQYXlsb2FkIn0KE1NlcnZlclN0cmVhbVJlcXVlc3QSUAoTcmVzcG9uc2VfZGVmaW5pdGlvbhgBIAEoCzIzLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuU3RyZWFtUmVzcG9uc2VEZWZpbml0aW9uEhQKDHJlcXVlc3RfZGF0YRgCIAEoDCJWChRTZXJ2ZXJTdHJlYW1SZXNwb25zZRI+CgdwYXlsb2FkGAEgASgLMi0uY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5Db25mb3JtYW5jZVBheWxvYWQifAoTQ2xpZW50U3RyZWFtUmVxdWVzdBJPChNyZXNwb25zZV9kZWZpbml0aW9uGAEgASgLMjIuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5VbmFyeVJlc3BvbnNlRGVmaW5pdGlvbhIUCgxyZXF1ZXN0X2RhdGEYAiABKAwiVgoUQ2xpZW50U3RyZWFtUmVzcG9uc2USPgoHcGF5bG9hZBgBIAEoCzItLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuQ29uZm9ybWFuY2VQYXlsb2FkIpABChFCaWRpU3RyZWFtUmVxdWVzdBJQChNyZXNwb25zZV9kZWZpbml0aW9uGAEgASgLMjMuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5TdHJlYW1SZXNwb25zZURlZmluaXRpb24SEwoLZnVsbF9kdXBsZXgYAiABKAgSFAoMcmVxdWVzdF9kYXRhGAMgASgMIlQKEkJpZGlTdHJlYW1SZXNwb25zZRI+CgdwYXlsb2FkGAEgASgLMi0uY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5Db25mb3JtYW5jZVBheWxvYWQiFgoUVW5pbXBsZW1lbnRlZFJlcXVlc3QiFwoVVW5pbXBsZW1lbnRlZFJlc3BvbnNlIrIDChJDb25mb3JtYW5jZVBheWxvYWQSDAoEZGF0YRgBIAEoDBJPCgxyZXF1ZXN0X2luZm8YAiABKAsyOS5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLkNvbmZvcm1hbmNlUGF5bG9hZC5SZXF1ZXN0SW5mbxrxAQoLUmVxdWVzdEluZm8SOgoPcmVxdWVzdF9oZWFkZXJzGAEgAygLMiEuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5IZWFkZXISFwoKdGltZW91dF9tcxgCIAEoA0gAiAEBEiYKCHJlcXVlc3RzGAMgAygLMhQuZ29vZ2xlLnByb3RvYnVmLkFueRJWChBjb25uZWN0X2dldF9pbmZvGAQgASgLMjwuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5Db25mb3JtYW5jZVBheWxvYWQuQ29ubmVjdEdldEluZm9CDQoLX3RpbWVvdXRfbXMaSQoOQ29ubmVjdEdldEluZm8SNwoMcXVlcnlfcGFyYW1zGAEgAygLMiEuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5IZWFkZXIifwoFRXJyb3ISLQoEY29kZRgBIAEoDjIfLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuQ29kZRIUCgdtZXNzYWdlGAIgASgJSACIAQESJQoHZGV0YWlscxgDIAMoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnlCCgoIX21lc3NhZ2UiJQoGSGVhZGVyEgwKBG5hbWUYASABKAkSDQoFdmFsdWUYAiADKAki7gMKDlJhd0hUVFBSZXF1ZXN0EgwKBHZlcmIYASABKAkSCwoDdXJpGAIgASgJEjIKB2hlYWRlcnMYAyADKAsyIS5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLkhlYWRlchI7ChByYXdfcXVlcnlfcGFyYW1zGAQgAygLMiEuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5IZWFkZXISWQoUZW5jb2RlZF9xdWVyeV9wYXJhbXMYBSADKAsyOy5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLlJhd0hUVFBSZXF1ZXN0LkVuY29kZWRRdWVyeVBhcmFtEjsKBXVuYXJ5GAYgASgLMiouY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5NZXNzYWdlQ29udGVudHNIABI7CgZzdHJlYW0YByABKAsyKS5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLlN0cmVhbUNvbnRlbnRzSAAacwoRRW5jb2RlZFF1ZXJ5UGFyYW0SDAoEbmFtZRgBIAEoCRI5CgV2YWx1ZRgCIAEoCzIqLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuTWVzc2FnZUNvbnRlbnRzEhUKDWJhc2U2NF9lbmNvZGUYAyABKAhCBgoEYm9keSKoAQoPTWVzc2FnZUNvbnRlbnRzEhAKBmJpbmFyeRgBIAEoDEgAEg4KBHRleHQYAiABKAlIABIuCg5iaW5hcnlfbWVzc2FnZRgDIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnlIABI7Cgtjb21wcmVzc2lvbhgEIAEoDjImLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuQ29tcHJlc3Npb25CBgoEZGF0YSLPAQoOU3RyZWFtQ29udGVudHMSQwoFaXRlbXMYASADKAsyNC5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLlN0cmVhbUNvbnRlbnRzLlN0cmVhbUl0ZW0aeAoKU3RyZWFtSXRlbRINCgVmbGFncxgBIAEoDRITCgZsZW5ndGgYAiABKA1IAIgBARI7CgdwYXlsb2FkGAMgASgLMiouY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5NZXNzYWdlQ29udGVudHNCCQoHX2xlbmd0aCKRAgoPUmF3SFRUUFJlc3BvbnNlEhMKC3N0YXR1c19jb2RlGAEgASgNEjIKB2hlYWRlcnMYAiADKAsyIS5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLkhlYWRlchI7CgV1bmFyeRgDIAEoCzIqLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuTWVzc2FnZUNvbnRlbnRzSAASOwoGc3RyZWFtGAQgASgLMikuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5TdHJlYW1Db250ZW50c0gAEjMKCHRyYWlsZXJzGAUgAygLMiEuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5IZWFkZXJCBgoEYm9keTK4BQoSQ29uZm9ybWFuY2VTZXJ2aWNlEloKBVVuYXJ5EicuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5VbmFyeVJlcXVlc3QaKC5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLlVuYXJ5UmVzcG9uc2UScQoMU2VydmVyU3RyZWFtEi4uY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5TZXJ2ZXJTdHJlYW1SZXF1ZXN0Gi8uY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5TZXJ2ZXJTdHJlYW1SZXNwb25zZTABEnEKDENsaWVudFN0cmVhbRIuLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuQ2xpZW50U3RyZWFtUmVxdWVzdBovLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuQ2xpZW50U3RyZWFtUmVzcG9uc2UoARJtCgpCaWRpU3RyZWFtEiwuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5CaWRpU3RyZWFtUmVxdWVzdBotLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuQmlkaVN0cmVhbVJlc3BvbnNlKAEwARJyCg1VbmltcGxlbWVudGVkEi8uY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5VbmltcGxlbWVudGVkUmVxdWVzdBowLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuVW5pbXBsZW1lbnRlZFJlc3BvbnNlEn0KD0lkZW1wb3RlbnRVbmFyeRIxLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuSWRlbXBvdGVudFVuYXJ5UmVxdWVzdBoyLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuSWRlbXBvdGVudFVuYXJ5UmVzcG9uc2UiA5ACAWIGcHJvdG8z", [file_connectrpc_conformance_v1_config, file_google_protobuf_any]); /** * A definition of a response to be sent from a single-response endpoint. @@ -26,13 +36,13 @@ import { Code, Compression } from "./config_pb.js"; * * @generated from message connectrpc.conformance.v1.UnaryResponseDefinition */ -export class UnaryResponseDefinition extends Message { +export type UnaryResponseDefinition = Message<"connectrpc.conformance.v1.UnaryResponseDefinition"> & { /** * Response headers to send * * @generated from field: repeated connectrpc.conformance.v1.Header response_headers = 1; */ - responseHeaders: Header[] = []; + responseHeaders: Header[]; /** * @generated from oneof connectrpc.conformance.v1.UnaryResponseDefinition.response @@ -55,21 +65,21 @@ export class UnaryResponseDefinition extends Message { */ value: Error; case: "error"; - } | { case: undefined; value?: undefined } = { case: undefined }; + } | { case: undefined; value?: undefined }; /** * Response trailers to send - together with the error if present * * @generated from field: repeated connectrpc.conformance.v1.Header response_trailers = 4; */ - responseTrailers: Header[] = []; + responseTrailers: Header[]; /** * Wait this many milliseconds before sending a response message * * @generated from field: uint32 response_delay_ms = 6; */ - responseDelayMs = 0; + responseDelayMs: number; /** * This field is only used by the reference server. If you are implementing a @@ -81,39 +91,14 @@ export class UnaryResponseDefinition extends Message { * @generated from field: connectrpc.conformance.v1.RawHTTPResponse raw_response = 5; */ rawResponse?: RawHTTPResponse; +}; - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.UnaryResponseDefinition"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "response_headers", kind: "message", T: Header, repeated: true }, - { no: 2, name: "response_data", kind: "scalar", T: 12 /* ScalarType.BYTES */, oneof: "response" }, - { no: 3, name: "error", kind: "message", T: Error, oneof: "response" }, - { no: 4, name: "response_trailers", kind: "message", T: Header, repeated: true }, - { no: 6, name: "response_delay_ms", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, - { no: 5, name: "raw_response", kind: "message", T: RawHTTPResponse }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): UnaryResponseDefinition { - return new UnaryResponseDefinition().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): UnaryResponseDefinition { - return new UnaryResponseDefinition().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): UnaryResponseDefinition { - return new UnaryResponseDefinition().fromJsonString(jsonString, options); - } - - static equals(a: UnaryResponseDefinition | PlainMessage | undefined, b: UnaryResponseDefinition | PlainMessage | undefined): boolean { - return proto3.util.equals(UnaryResponseDefinition, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.UnaryResponseDefinition. + * Use `create(UnaryResponseDefinitionSchema)` to create a new message. + */ +export const UnaryResponseDefinitionSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 0); /** * A definition of responses to be sent from a streaming endpoint. @@ -121,27 +106,27 @@ export class UnaryResponseDefinition extends Message { * * @generated from message connectrpc.conformance.v1.StreamResponseDefinition */ -export class StreamResponseDefinition extends Message { +export type StreamResponseDefinition = Message<"connectrpc.conformance.v1.StreamResponseDefinition"> & { /** * Response headers to send * * @generated from field: repeated connectrpc.conformance.v1.Header response_headers = 1; */ - responseHeaders: Header[] = []; + responseHeaders: Header[]; /** * Response data to send * * @generated from field: repeated bytes response_data = 2; */ - responseData: Uint8Array[] = []; + responseData: Uint8Array[]; /** * Wait this many milliseconds before sending each response message * * @generated from field: uint32 response_delay_ms = 3; */ - responseDelayMs = 0; + responseDelayMs: number; /** * Optional error to raise, but only after sending any response messages. @@ -159,7 +144,7 @@ export class StreamResponseDefinition extends Message * * @generated from field: repeated connectrpc.conformance.v1.Header response_trailers = 5; */ - responseTrailers: Header[] = []; + responseTrailers: Header[]; /** * This field is only used by the reference server. If you are implementing a @@ -171,44 +156,19 @@ export class StreamResponseDefinition extends Message * @generated from field: connectrpc.conformance.v1.RawHTTPResponse raw_response = 6; */ rawResponse?: RawHTTPResponse; +}; - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.StreamResponseDefinition"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "response_headers", kind: "message", T: Header, repeated: true }, - { no: 2, name: "response_data", kind: "scalar", T: 12 /* ScalarType.BYTES */, repeated: true }, - { no: 3, name: "response_delay_ms", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, - { no: 4, name: "error", kind: "message", T: Error }, - { no: 5, name: "response_trailers", kind: "message", T: Header, repeated: true }, - { no: 6, name: "raw_response", kind: "message", T: RawHTTPResponse }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): StreamResponseDefinition { - return new StreamResponseDefinition().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): StreamResponseDefinition { - return new StreamResponseDefinition().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): StreamResponseDefinition { - return new StreamResponseDefinition().fromJsonString(jsonString, options); - } - - static equals(a: StreamResponseDefinition | PlainMessage | undefined, b: StreamResponseDefinition | PlainMessage | undefined): boolean { - return proto3.util.equals(StreamResponseDefinition, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.StreamResponseDefinition. + * Use `create(StreamResponseDefinitionSchema)` to create a new message. + */ +export const StreamResponseDefinitionSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 1); /** * @generated from message connectrpc.conformance.v1.UnaryRequest */ -export class UnaryRequest extends Message { +export type UnaryRequest = Message<"connectrpc.conformance.v1.UnaryRequest"> & { /** * The response definition which should be returned in the conformance payload * @@ -221,80 +181,39 @@ export class UnaryRequest extends Message { * * @generated from field: bytes request_data = 2; */ - requestData = new Uint8Array(0); - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.UnaryRequest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "response_definition", kind: "message", T: UnaryResponseDefinition }, - { no: 2, name: "request_data", kind: "scalar", T: 12 /* ScalarType.BYTES */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): UnaryRequest { - return new UnaryRequest().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): UnaryRequest { - return new UnaryRequest().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): UnaryRequest { - return new UnaryRequest().fromJsonString(jsonString, options); - } + requestData: Uint8Array; +}; - static equals(a: UnaryRequest | PlainMessage | undefined, b: UnaryRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(UnaryRequest, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.UnaryRequest. + * Use `create(UnaryRequestSchema)` to create a new message. + */ +export const UnaryRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 2); /** * @generated from message connectrpc.conformance.v1.UnaryResponse */ -export class UnaryResponse extends Message { +export type UnaryResponse = Message<"connectrpc.conformance.v1.UnaryResponse"> & { /** * The conformance payload to respond with. * * @generated from field: connectrpc.conformance.v1.ConformancePayload payload = 1; */ payload?: ConformancePayload; +}; - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.UnaryResponse"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "payload", kind: "message", T: ConformancePayload }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): UnaryResponse { - return new UnaryResponse().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): UnaryResponse { - return new UnaryResponse().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): UnaryResponse { - return new UnaryResponse().fromJsonString(jsonString, options); - } - - static equals(a: UnaryResponse | PlainMessage | undefined, b: UnaryResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(UnaryResponse, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.UnaryResponse. + * Use `create(UnaryResponseSchema)` to create a new message. + */ +export const UnaryResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 3); /** * @generated from message connectrpc.conformance.v1.IdempotentUnaryRequest */ -export class IdempotentUnaryRequest extends Message { +export type IdempotentUnaryRequest = Message<"connectrpc.conformance.v1.IdempotentUnaryRequest"> & { /** * The response definition which should be returned in the conformance payload * @@ -307,80 +226,39 @@ export class IdempotentUnaryRequest extends Message { * * @generated from field: bytes request_data = 2; */ - requestData = new Uint8Array(0); - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.IdempotentUnaryRequest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "response_definition", kind: "message", T: UnaryResponseDefinition }, - { no: 2, name: "request_data", kind: "scalar", T: 12 /* ScalarType.BYTES */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): IdempotentUnaryRequest { - return new IdempotentUnaryRequest().fromBinary(bytes, options); - } + requestData: Uint8Array; +}; - static fromJson(jsonValue: JsonValue, options?: Partial): IdempotentUnaryRequest { - return new IdempotentUnaryRequest().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): IdempotentUnaryRequest { - return new IdempotentUnaryRequest().fromJsonString(jsonString, options); - } - - static equals(a: IdempotentUnaryRequest | PlainMessage | undefined, b: IdempotentUnaryRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(IdempotentUnaryRequest, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.IdempotentUnaryRequest. + * Use `create(IdempotentUnaryRequestSchema)` to create a new message. + */ +export const IdempotentUnaryRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 4); /** * @generated from message connectrpc.conformance.v1.IdempotentUnaryResponse */ -export class IdempotentUnaryResponse extends Message { +export type IdempotentUnaryResponse = Message<"connectrpc.conformance.v1.IdempotentUnaryResponse"> & { /** * The conformance payload to respond with. * * @generated from field: connectrpc.conformance.v1.ConformancePayload payload = 1; */ payload?: ConformancePayload; +}; - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.IdempotentUnaryResponse"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "payload", kind: "message", T: ConformancePayload }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): IdempotentUnaryResponse { - return new IdempotentUnaryResponse().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): IdempotentUnaryResponse { - return new IdempotentUnaryResponse().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): IdempotentUnaryResponse { - return new IdempotentUnaryResponse().fromJsonString(jsonString, options); - } - - static equals(a: IdempotentUnaryResponse | PlainMessage | undefined, b: IdempotentUnaryResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(IdempotentUnaryResponse, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.IdempotentUnaryResponse. + * Use `create(IdempotentUnaryResponseSchema)` to create a new message. + */ +export const IdempotentUnaryResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 5); /** * @generated from message connectrpc.conformance.v1.ServerStreamRequest */ -export class ServerStreamRequest extends Message { +export type ServerStreamRequest = Message<"connectrpc.conformance.v1.ServerStreamRequest"> & { /** * The response definition which should be returned in the conformance payload. * @@ -393,80 +271,39 @@ export class ServerStreamRequest extends Message { * * @generated from field: bytes request_data = 2; */ - requestData = new Uint8Array(0); - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } + requestData: Uint8Array; +}; - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.ServerStreamRequest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "response_definition", kind: "message", T: StreamResponseDefinition }, - { no: 2, name: "request_data", kind: "scalar", T: 12 /* ScalarType.BYTES */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ServerStreamRequest { - return new ServerStreamRequest().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ServerStreamRequest { - return new ServerStreamRequest().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ServerStreamRequest { - return new ServerStreamRequest().fromJsonString(jsonString, options); - } - - static equals(a: ServerStreamRequest | PlainMessage | undefined, b: ServerStreamRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(ServerStreamRequest, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.ServerStreamRequest. + * Use `create(ServerStreamRequestSchema)` to create a new message. + */ +export const ServerStreamRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 6); /** * @generated from message connectrpc.conformance.v1.ServerStreamResponse */ -export class ServerStreamResponse extends Message { +export type ServerStreamResponse = Message<"connectrpc.conformance.v1.ServerStreamResponse"> & { /** * The conformance payload to respond with * * @generated from field: connectrpc.conformance.v1.ConformancePayload payload = 1; */ payload?: ConformancePayload; +}; - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.ServerStreamResponse"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "payload", kind: "message", T: ConformancePayload }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ServerStreamResponse { - return new ServerStreamResponse().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ServerStreamResponse { - return new ServerStreamResponse().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ServerStreamResponse { - return new ServerStreamResponse().fromJsonString(jsonString, options); - } - - static equals(a: ServerStreamResponse | PlainMessage | undefined, b: ServerStreamResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(ServerStreamResponse, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.ServerStreamResponse. + * Use `create(ServerStreamResponseSchema)` to create a new message. + */ +export const ServerStreamResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 7); /** * @generated from message connectrpc.conformance.v1.ClientStreamRequest */ -export class ClientStreamRequest extends Message { +export type ClientStreamRequest = Message<"connectrpc.conformance.v1.ClientStreamRequest"> & { /** * Tells the server how to reply once all client messages are * complete. Required in the first message in the stream, but @@ -482,80 +319,39 @@ export class ClientStreamRequest extends Message { * * @generated from field: bytes request_data = 2; */ - requestData = new Uint8Array(0); - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.ClientStreamRequest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "response_definition", kind: "message", T: UnaryResponseDefinition }, - { no: 2, name: "request_data", kind: "scalar", T: 12 /* ScalarType.BYTES */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ClientStreamRequest { - return new ClientStreamRequest().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ClientStreamRequest { - return new ClientStreamRequest().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ClientStreamRequest { - return new ClientStreamRequest().fromJsonString(jsonString, options); - } + requestData: Uint8Array; +}; - static equals(a: ClientStreamRequest | PlainMessage | undefined, b: ClientStreamRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(ClientStreamRequest, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.ClientStreamRequest. + * Use `create(ClientStreamRequestSchema)` to create a new message. + */ +export const ClientStreamRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 8); /** * @generated from message connectrpc.conformance.v1.ClientStreamResponse */ -export class ClientStreamResponse extends Message { +export type ClientStreamResponse = Message<"connectrpc.conformance.v1.ClientStreamResponse"> & { /** * The conformance payload to respond with * * @generated from field: connectrpc.conformance.v1.ConformancePayload payload = 1; */ payload?: ConformancePayload; +}; - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.ClientStreamResponse"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "payload", kind: "message", T: ConformancePayload }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ClientStreamResponse { - return new ClientStreamResponse().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ClientStreamResponse { - return new ClientStreamResponse().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ClientStreamResponse { - return new ClientStreamResponse().fromJsonString(jsonString, options); - } - - static equals(a: ClientStreamResponse | PlainMessage | undefined, b: ClientStreamResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(ClientStreamResponse, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.ClientStreamResponse. + * Use `create(ClientStreamResponseSchema)` to create a new message. + */ +export const ClientStreamResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 9); /** * @generated from message connectrpc.conformance.v1.BidiStreamRequest */ -export class BidiStreamRequest extends Message { +export type BidiStreamRequest = Message<"connectrpc.conformance.v1.BidiStreamRequest"> & { /** * Tells the server how to reply; required in the first message * in the stream. Should be ignored in subsequent messages. @@ -581,7 +377,7 @@ export class BidiStreamRequest extends Message { * * @generated from field: bool full_duplex = 2; */ - fullDuplex = false; + fullDuplex: boolean; /** * Additional data for subsequent messages in the stream. Also @@ -589,150 +385,72 @@ export class BidiStreamRequest extends Message { * * @generated from field: bytes request_data = 3; */ - requestData = new Uint8Array(0); - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.BidiStreamRequest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "response_definition", kind: "message", T: StreamResponseDefinition }, - { no: 2, name: "full_duplex", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, - { no: 3, name: "request_data", kind: "scalar", T: 12 /* ScalarType.BYTES */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): BidiStreamRequest { - return new BidiStreamRequest().fromBinary(bytes, options); - } + requestData: Uint8Array; +}; - static fromJson(jsonValue: JsonValue, options?: Partial): BidiStreamRequest { - return new BidiStreamRequest().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): BidiStreamRequest { - return new BidiStreamRequest().fromJsonString(jsonString, options); - } - - static equals(a: BidiStreamRequest | PlainMessage | undefined, b: BidiStreamRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(BidiStreamRequest, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.BidiStreamRequest. + * Use `create(BidiStreamRequestSchema)` to create a new message. + */ +export const BidiStreamRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 10); /** * @generated from message connectrpc.conformance.v1.BidiStreamResponse */ -export class BidiStreamResponse extends Message { +export type BidiStreamResponse = Message<"connectrpc.conformance.v1.BidiStreamResponse"> & { /** * The conformance payload to respond with * * @generated from field: connectrpc.conformance.v1.ConformancePayload payload = 1; */ payload?: ConformancePayload; +}; - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.BidiStreamResponse"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "payload", kind: "message", T: ConformancePayload }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): BidiStreamResponse { - return new BidiStreamResponse().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): BidiStreamResponse { - return new BidiStreamResponse().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): BidiStreamResponse { - return new BidiStreamResponse().fromJsonString(jsonString, options); - } - - static equals(a: BidiStreamResponse | PlainMessage | undefined, b: BidiStreamResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(BidiStreamResponse, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.BidiStreamResponse. + * Use `create(BidiStreamResponseSchema)` to create a new message. + */ +export const BidiStreamResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 11); /** * @generated from message connectrpc.conformance.v1.UnimplementedRequest */ -export class UnimplementedRequest extends Message { - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.UnimplementedRequest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): UnimplementedRequest { - return new UnimplementedRequest().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): UnimplementedRequest { - return new UnimplementedRequest().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): UnimplementedRequest { - return new UnimplementedRequest().fromJsonString(jsonString, options); - } - - static equals(a: UnimplementedRequest | PlainMessage | undefined, b: UnimplementedRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(UnimplementedRequest, a, b); - } -} +export type UnimplementedRequest = Message<"connectrpc.conformance.v1.UnimplementedRequest"> & { +}; + +/** + * Describes the message connectrpc.conformance.v1.UnimplementedRequest. + * Use `create(UnimplementedRequestSchema)` to create a new message. + */ +export const UnimplementedRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 12); /** * @generated from message connectrpc.conformance.v1.UnimplementedResponse */ -export class UnimplementedResponse extends Message { - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.UnimplementedResponse"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): UnimplementedResponse { - return new UnimplementedResponse().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): UnimplementedResponse { - return new UnimplementedResponse().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): UnimplementedResponse { - return new UnimplementedResponse().fromJsonString(jsonString, options); - } - - static equals(a: UnimplementedResponse | PlainMessage | undefined, b: UnimplementedResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(UnimplementedResponse, a, b); - } -} +export type UnimplementedResponse = Message<"connectrpc.conformance.v1.UnimplementedResponse"> & { +}; + +/** + * Describes the message connectrpc.conformance.v1.UnimplementedResponse. + * Use `create(UnimplementedResponseSchema)` to create a new message. + */ +export const UnimplementedResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 13); /** * @generated from message connectrpc.conformance.v1.ConformancePayload */ -export class ConformancePayload extends Message { +export type ConformancePayload = Message<"connectrpc.conformance.v1.ConformancePayload"> & { /** * Any response data specified in the response definition to the server should be * echoed back here. * * @generated from field: bytes data = 1; */ - data = new Uint8Array(0); + data: Uint8Array; /** * Echoes back information about the request stream observed so far. @@ -740,46 +458,25 @@ export class ConformancePayload extends Message { * @generated from field: connectrpc.conformance.v1.ConformancePayload.RequestInfo request_info = 2; */ requestInfo?: ConformancePayload_RequestInfo; +}; - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.ConformancePayload"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "data", kind: "scalar", T: 12 /* ScalarType.BYTES */ }, - { no: 2, name: "request_info", kind: "message", T: ConformancePayload_RequestInfo }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ConformancePayload { - return new ConformancePayload().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ConformancePayload { - return new ConformancePayload().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ConformancePayload { - return new ConformancePayload().fromJsonString(jsonString, options); - } - - static equals(a: ConformancePayload | PlainMessage | undefined, b: ConformancePayload | PlainMessage | undefined): boolean { - return proto3.util.equals(ConformancePayload, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.ConformancePayload. + * Use `create(ConformancePayloadSchema)` to create a new message. + */ +export const ConformancePayloadSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 14); /** * @generated from message connectrpc.conformance.v1.ConformancePayload.RequestInfo */ -export class ConformancePayload_RequestInfo extends Message { +export type ConformancePayload_RequestInfo = Message<"connectrpc.conformance.v1.ConformancePayload.RequestInfo"> & { /** * The server echos back the request headers it observed here. * * @generated from field: repeated connectrpc.conformance.v1.Header request_headers = 1; */ - requestHeaders: Header[] = []; + requestHeaders: Header[]; /** * The timeout observed that was included in the request. Other timeouts use a @@ -800,7 +497,7 @@ export class ConformancePayload_RequestInfo extends Message) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.ConformancePayload.RequestInfo"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "request_headers", kind: "message", T: Header, repeated: true }, - { no: 2, name: "timeout_ms", kind: "scalar", T: 3 /* ScalarType.INT64 */, opt: true }, - { no: 3, name: "requests", kind: "message", T: Any, repeated: true }, - { no: 4, name: "connect_get_info", kind: "message", T: ConformancePayload_ConnectGetInfo }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ConformancePayload_RequestInfo { - return new ConformancePayload_RequestInfo().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ConformancePayload_RequestInfo { - return new ConformancePayload_RequestInfo().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ConformancePayload_RequestInfo { - return new ConformancePayload_RequestInfo().fromJsonString(jsonString, options); - } - - static equals(a: ConformancePayload_RequestInfo | PlainMessage | undefined, b: ConformancePayload_RequestInfo | PlainMessage | undefined): boolean { - return proto3.util.equals(ConformancePayload_RequestInfo, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.ConformancePayload.RequestInfo. + * Use `create(ConformancePayload_RequestInfoSchema)` to create a new message. + */ +export const ConformancePayload_RequestInfoSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 14, 0); /** * @generated from message connectrpc.conformance.v1.ConformancePayload.ConnectGetInfo */ -export class ConformancePayload_ConnectGetInfo extends Message { +export type ConformancePayload_ConnectGetInfo = Message<"connectrpc.conformance.v1.ConformancePayload.ConnectGetInfo"> & { /** * The query params observed in the request URL. * * @generated from field: repeated connectrpc.conformance.v1.Header query_params = 1; */ - queryParams: Header[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.ConformancePayload.ConnectGetInfo"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "query_params", kind: "message", T: Header, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ConformancePayload_ConnectGetInfo { - return new ConformancePayload_ConnectGetInfo().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ConformancePayload_ConnectGetInfo { - return new ConformancePayload_ConnectGetInfo().fromJson(jsonValue, options); - } + queryParams: Header[]; +}; - static fromJsonString(jsonString: string, options?: Partial): ConformancePayload_ConnectGetInfo { - return new ConformancePayload_ConnectGetInfo().fromJsonString(jsonString, options); - } - - static equals(a: ConformancePayload_ConnectGetInfo | PlainMessage | undefined, b: ConformancePayload_ConnectGetInfo | PlainMessage | undefined): boolean { - return proto3.util.equals(ConformancePayload_ConnectGetInfo, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.ConformancePayload.ConnectGetInfo. + * Use `create(ConformancePayload_ConnectGetInfoSchema)` to create a new message. + */ +export const ConformancePayload_ConnectGetInfoSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 14, 1); /** * An error definition used for specifying a desired error response * * @generated from message connectrpc.conformance.v1.Error */ -export class Error extends Message { +export type Error = Message<"connectrpc.conformance.v1.Error"> & { /** * The error code. * For a list of Connect error codes see: https://connectrpc.com/docs/protocol#error-codes * * @generated from field: connectrpc.conformance.v1.Code code = 1; */ - code = Code.UNSPECIFIED; + code: Code; /** * If this value is absent in a test case response definition, the contents of the @@ -914,50 +568,28 @@ export class Error extends Message { * * @generated from field: repeated google.protobuf.Any details = 3; */ - details: Any[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.Error"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "code", kind: "enum", T: proto3.getEnumType(Code) }, - { no: 2, name: "message", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, - { no: 3, name: "details", kind: "message", T: Any, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Error { - return new Error().fromBinary(bytes, options); - } + details: Any[]; +}; - static fromJson(jsonValue: JsonValue, options?: Partial): Error { - return new Error().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Error { - return new Error().fromJsonString(jsonString, options); - } - - static equals(a: Error | PlainMessage | undefined, b: Error | PlainMessage | undefined): boolean { - return proto3.util.equals(Error, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.Error. + * Use `create(ErrorSchema)` to create a new message. + */ +export const ErrorSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 15); /** * A tuple of name and values (ASCII) for a header or trailer entry. * * @generated from message connectrpc.conformance.v1.Header */ -export class Header extends Message
{ +export type Header = Message<"connectrpc.conformance.v1.Header"> & { /** * Header/trailer name (key). * * @generated from field: string name = 1; */ - name = ""; + name: string; /** * Header/trailer value. This is repeated to explicitly support headers and @@ -966,36 +598,15 @@ export class Header extends Message
{ * * @generated from field: repeated string value = 2; */ - value: string[] = []; - - constructor(data?: PartialMessage
) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.Header"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "value", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, - ]); + value: string[]; +}; - static fromBinary(bytes: Uint8Array, options?: Partial): Header { - return new Header().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Header { - return new Header().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Header { - return new Header().fromJsonString(jsonString, options); - } - - static equals(a: Header | PlainMessage
| undefined, b: Header | PlainMessage
| undefined): boolean { - return proto3.util.equals(Header, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.Header. + * Use `create(HeaderSchema)` to create a new message. + */ +export const HeaderSchema: GenMessage
= /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 16); /** * RawHTTPRequest models a raw HTTP request. This can be used to craft @@ -1004,27 +615,27 @@ export class Header extends Message
{ * * @generated from message connectrpc.conformance.v1.RawHTTPRequest */ -export class RawHTTPRequest extends Message { +export type RawHTTPRequest = Message<"connectrpc.conformance.v1.RawHTTPRequest"> & { /** * The HTTP verb (i.e. GET , POST). * * @generated from field: string verb = 1; */ - verb = ""; + verb: string; /** * The URI to send the request to. * * @generated from field: string uri = 2; */ - uri = ""; + uri: string; /** * Any headers to set on the request. * * @generated from field: repeated connectrpc.conformance.v1.Header headers = 3; */ - headers: Header[] = []; + headers: Header[]; /** * These query params will be encoded and added to the uri before @@ -1032,7 +643,7 @@ export class RawHTTPRequest extends Message { * * @generated from field: repeated connectrpc.conformance.v1.Header raw_query_params = 4; */ - rawQueryParams: Header[] = []; + rawQueryParams: Header[]; /** * This provides an easier way to define a complex binary query param @@ -1040,7 +651,7 @@ export class RawHTTPRequest extends Message { * * @generated from field: repeated connectrpc.conformance.v1.RawHTTPRequest.EncodedQueryParam encoded_query_params = 5; */ - encodedQueryParams: RawHTTPRequest_EncodedQueryParam[] = []; + encodedQueryParams: RawHTTPRequest_EncodedQueryParam[]; /** * @generated from oneof connectrpc.conformance.v1.RawHTTPRequest.body @@ -1062,52 +673,26 @@ export class RawHTTPRequest extends Message { */ value: StreamContents; case: "stream"; - } | { case: undefined; value?: undefined } = { case: undefined }; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.RawHTTPRequest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "verb", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "uri", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "headers", kind: "message", T: Header, repeated: true }, - { no: 4, name: "raw_query_params", kind: "message", T: Header, repeated: true }, - { no: 5, name: "encoded_query_params", kind: "message", T: RawHTTPRequest_EncodedQueryParam, repeated: true }, - { no: 6, name: "unary", kind: "message", T: MessageContents, oneof: "body" }, - { no: 7, name: "stream", kind: "message", T: StreamContents, oneof: "body" }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): RawHTTPRequest { - return new RawHTTPRequest().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): RawHTTPRequest { - return new RawHTTPRequest().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): RawHTTPRequest { - return new RawHTTPRequest().fromJsonString(jsonString, options); - } - - static equals(a: RawHTTPRequest | PlainMessage | undefined, b: RawHTTPRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(RawHTTPRequest, a, b); - } -} + } | { case: undefined; value?: undefined }; +}; + +/** + * Describes the message connectrpc.conformance.v1.RawHTTPRequest. + * Use `create(RawHTTPRequestSchema)` to create a new message. + */ +export const RawHTTPRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 17); /** * @generated from message connectrpc.conformance.v1.RawHTTPRequest.EncodedQueryParam */ -export class RawHTTPRequest_EncodedQueryParam extends Message { +export type RawHTTPRequest_EncodedQueryParam = Message<"connectrpc.conformance.v1.RawHTTPRequest.EncodedQueryParam"> & { /** * Query param name. * * @generated from field: string name = 1; */ - name = ""; + name: string; /** * Query param value. @@ -1122,44 +707,22 @@ export class RawHTTPRequest_EncodedQueryParam extends Message) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.RawHTTPRequest.EncodedQueryParam"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "value", kind: "message", T: MessageContents }, - { no: 3, name: "base64_encode", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): RawHTTPRequest_EncodedQueryParam { - return new RawHTTPRequest_EncodedQueryParam().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): RawHTTPRequest_EncodedQueryParam { - return new RawHTTPRequest_EncodedQueryParam().fromJson(jsonValue, options); - } + base64Encode: boolean; +}; - static fromJsonString(jsonString: string, options?: Partial): RawHTTPRequest_EncodedQueryParam { - return new RawHTTPRequest_EncodedQueryParam().fromJsonString(jsonString, options); - } - - static equals(a: RawHTTPRequest_EncodedQueryParam | PlainMessage | undefined, b: RawHTTPRequest_EncodedQueryParam | PlainMessage | undefined): boolean { - return proto3.util.equals(RawHTTPRequest_EncodedQueryParam, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.RawHTTPRequest.EncodedQueryParam. + * Use `create(RawHTTPRequest_EncodedQueryParamSchema)` to create a new message. + */ +export const RawHTTPRequest_EncodedQueryParamSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 17, 0); /** * MessageContents represents a message in a request body. * * @generated from message connectrpc.conformance.v1.MessageContents */ -export class MessageContents extends Message { +export type MessageContents = Message<"connectrpc.conformance.v1.MessageContents"> & { /** * The message data can be defined in one of three ways. * @@ -1191,7 +754,7 @@ export class MessageContents extends Message { */ value: Any; case: "binaryMessage"; - } | { case: undefined; value?: undefined } = { case: undefined }; + } | { case: undefined; value?: undefined }; /** * If specified and not identity, the above data will be @@ -1199,90 +762,47 @@ export class MessageContents extends Message { * * @generated from field: connectrpc.conformance.v1.Compression compression = 4; */ - compression = Compression.UNSPECIFIED; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.MessageContents"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "binary", kind: "scalar", T: 12 /* ScalarType.BYTES */, oneof: "data" }, - { no: 2, name: "text", kind: "scalar", T: 9 /* ScalarType.STRING */, oneof: "data" }, - { no: 3, name: "binary_message", kind: "message", T: Any, oneof: "data" }, - { no: 4, name: "compression", kind: "enum", T: proto3.getEnumType(Compression) }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): MessageContents { - return new MessageContents().fromBinary(bytes, options); - } + compression: Compression; +}; - static fromJson(jsonValue: JsonValue, options?: Partial): MessageContents { - return new MessageContents().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): MessageContents { - return new MessageContents().fromJsonString(jsonString, options); - } - - static equals(a: MessageContents | PlainMessage | undefined, b: MessageContents | PlainMessage | undefined): boolean { - return proto3.util.equals(MessageContents, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.MessageContents. + * Use `create(MessageContentsSchema)` to create a new message. + */ +export const MessageContentsSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 18); /** * StreamContents represents a sequence of messages in a request body. * * @generated from message connectrpc.conformance.v1.StreamContents */ -export class StreamContents extends Message { +export type StreamContents = Message<"connectrpc.conformance.v1.StreamContents"> & { /** * The messages in the stream. * * @generated from field: repeated connectrpc.conformance.v1.StreamContents.StreamItem items = 1; */ - items: StreamContents_StreamItem[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.StreamContents"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "items", kind: "message", T: StreamContents_StreamItem, repeated: true }, - ]); + items: StreamContents_StreamItem[]; +}; - static fromBinary(bytes: Uint8Array, options?: Partial): StreamContents { - return new StreamContents().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): StreamContents { - return new StreamContents().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): StreamContents { - return new StreamContents().fromJsonString(jsonString, options); - } - - static equals(a: StreamContents | PlainMessage | undefined, b: StreamContents | PlainMessage | undefined): boolean { - return proto3.util.equals(StreamContents, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.StreamContents. + * Use `create(StreamContentsSchema)` to create a new message. + */ +export const StreamContentsSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 19); /** * @generated from message connectrpc.conformance.v1.StreamContents.StreamItem */ -export class StreamContents_StreamItem extends Message { +export type StreamContents_StreamItem = Message<"connectrpc.conformance.v1.StreamContents.StreamItem"> & { /** * must be in the range 0 to 255. * * @generated from field: uint32 flags = 1; */ - flags = 0; + flags: number; /** * if absent use actual length of payload @@ -1295,36 +815,14 @@ export class StreamContents_StreamItem extends Message) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.StreamContents.StreamItem"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "flags", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, - { no: 2, name: "length", kind: "scalar", T: 13 /* ScalarType.UINT32 */, opt: true }, - { no: 3, name: "payload", kind: "message", T: MessageContents }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): StreamContents_StreamItem { - return new StreamContents_StreamItem().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): StreamContents_StreamItem { - return new StreamContents_StreamItem().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): StreamContents_StreamItem { - return new StreamContents_StreamItem().fromJsonString(jsonString, options); - } - - static equals(a: StreamContents_StreamItem | PlainMessage | undefined, b: StreamContents_StreamItem | PlainMessage | undefined): boolean { - return proto3.util.equals(StreamContents_StreamItem, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.StreamContents.StreamItem. + * Use `create(StreamContents_StreamItemSchema)` to create a new message. + */ +export const StreamContents_StreamItemSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 19, 0); /** * RawHTTPResponse models a raw HTTP response. This can be used to craft @@ -1333,20 +831,20 @@ export class StreamContents_StreamItem extends Message { +export type RawHTTPResponse = Message<"connectrpc.conformance.v1.RawHTTPResponse"> & { /** * If status code is not specified, it will default to a 200 response code. * * @generated from field: uint32 status_code = 1; */ - statusCode = 0; + statusCode: number; /** * Headers to be set on the response. * * @generated from field: repeated connectrpc.conformance.v1.Header headers = 2; */ - headers: Header[] = []; + headers: Header[]; /** * @generated from oneof connectrpc.conformance.v1.RawHTTPResponse.body @@ -1368,44 +866,192 @@ export class RawHTTPResponse extends Message { */ value: StreamContents; case: "stream"; - } | { case: undefined; value?: undefined } = { case: undefined }; + } | { case: undefined; value?: undefined }; /** * Trailers to be set on the response. * * @generated from field: repeated connectrpc.conformance.v1.Header trailers = 5; */ - trailers: Header[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.RawHTTPResponse"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "status_code", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, - { no: 2, name: "headers", kind: "message", T: Header, repeated: true }, - { no: 3, name: "unary", kind: "message", T: MessageContents, oneof: "body" }, - { no: 4, name: "stream", kind: "message", T: StreamContents, oneof: "body" }, - { no: 5, name: "trailers", kind: "message", T: Header, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): RawHTTPResponse { - return new RawHTTPResponse().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): RawHTTPResponse { - return new RawHTTPResponse().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): RawHTTPResponse { - return new RawHTTPResponse().fromJsonString(jsonString, options); - } - - static equals(a: RawHTTPResponse | PlainMessage | undefined, b: RawHTTPResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(RawHTTPResponse, a, b); - } -} + trailers: Header[]; +}; + +/** + * Describes the message connectrpc.conformance.v1.RawHTTPResponse. + * Use `create(RawHTTPResponseSchema)` to create a new message. + */ +export const RawHTTPResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_service, 20); + +/** + * The service implemented by conformance test servers. This is implemented by + * the reference servers, used to test clients, and is expected to be implemented + * by test servers, since this is the service used by reference clients. + * + * Test servers must implement the service as described. + * + * @generated from service connectrpc.conformance.v1.ConformanceService + */ +export const ConformanceService: GenService<{ + /** + * A unary operation. The request indicates the response headers and trailers + * and also indicates either a response message or an error to send back. + * + * Response message data is specified as bytes. The service should echo back + * request properties in the ConformancePayload and then include the message + * data in the data field. + * + * If the response_delay_ms duration is specified, the server should wait the + * given duration after reading the request before sending the corresponding + * response. + * + * Servers should allow the response definition to be unset in the request and + * if it is, set no response headers or trailers and return no response data. + * The returned payload should only contain the request info. + * + * @generated from rpc connectrpc.conformance.v1.ConformanceService.Unary + */ + unary: { + methodKind: "unary"; + input: typeof UnaryRequestSchema; + output: typeof UnaryResponseSchema; + }, + /** + * A server-streaming operation. The request indicates the response headers, + * response messages, trailers, and an optional error to send back. The + * response data should be sent in the order indicated, and the server should + * wait between sending response messages as indicated. + * + * Response message data is specified as bytes. The service should echo back + * request properties in the first ConformancePayload, and then include the + * message data in the data field. Subsequent messages after the first one + * should contain only the data field. + * + * Servers should immediately send response headers on the stream before sleeping + * for any specified response delay and/or sending the first message so that + * clients can be unblocked reading response headers. + * + * If a response definition is not specified OR is specified, but response data + * is empty, the server should skip sending anything on the stream. When there + * are no responses to send, servers should throw an error if one is provided + * and return without error if one is not. Stream headers and trailers should + * still be set on the stream if provided regardless of whether a response is + * sent or an error is thrown. + * + * @generated from rpc connectrpc.conformance.v1.ConformanceService.ServerStream + */ + serverStream: { + methodKind: "server_streaming"; + input: typeof ServerStreamRequestSchema; + output: typeof ServerStreamResponseSchema; + }, + /** + * A client-streaming operation. The first request indicates the response + * headers and trailers and also indicates either a response message or an + * error to send back. + * + * Response message data is specified as bytes. The service should echo back + * request properties, including all request messages in the order they were + * received, in the ConformancePayload and then include the message data in + * the data field. + * + * If the input stream is empty, the server's response will include no data, + * only the request properties (headers, timeout). + * + * Servers should only read the response definition from the first message in + * the stream and should ignore any definition set in subsequent messages. + * + * Servers should allow the response definition to be unset in the request and + * if it is, set no response headers or trailers and return no response data. + * The returned payload should only contain the request info. + * + * @generated from rpc connectrpc.conformance.v1.ConformanceService.ClientStream + */ + clientStream: { + methodKind: "client_streaming"; + input: typeof ClientStreamRequestSchema; + output: typeof ClientStreamResponseSchema; + }, + /** + * A bidirectional-streaming operation. The first request indicates the response + * headers, response messages, trailers, and an optional error to send back. + * The response data should be sent in the order indicated, and the server + * should wait between sending response messages as indicated. + * + * Response message data is specified as bytes and should be included in the + * data field of the ConformancePayload in each response. + * + * Servers should send responses indicated according to the rules of half duplex + * vs. full duplex streams. Once all responses are sent, the server should either + * return an error if specified or close the stream without error. + * + * Servers should immediately send response headers on the stream before sleeping + * for any specified response delay and/or sending the first message so that + * clients can be unblocked reading response headers. + * + * If a response definition is not specified OR is specified, but response data + * is empty, the server should skip sending anything on the stream. Stream + * headers and trailers should always be set on the stream if provided + * regardless of whether a response is sent or an error is thrown. + * + * If the full_duplex field is true: + * - the handler should read one request and then send back one response, and + * then alternate, reading another request and then sending back another response, etc. + * + * - if the server receives a request and has no responses to send, it + * should throw the error specified in the request. + * + * - the service should echo back all request properties in the first response + * including the last received request. Subsequent responses should only + * echo back the last received request. + * + * - if the response_delay_ms duration is specified, the server should wait the given + * duration after reading the request before sending the corresponding + * response. + * + * If the full_duplex field is false: + * - the handler should read all requests until the client is done sending. + * Once all requests are read, the server should then send back any responses + * specified in the response definition. + * + * - the server should echo back all request properties, including all request + * messages in the order they were received, in the first response. Subsequent + * responses should only include the message data in the data field. + * + * - if the response_delay_ms duration is specified, the server should wait that + * long in between sending each response message. + * + * + * @generated from rpc connectrpc.conformance.v1.ConformanceService.BidiStream + */ + bidiStream: { + methodKind: "bidi_streaming"; + input: typeof BidiStreamRequestSchema; + output: typeof BidiStreamResponseSchema; + }, + /** + * A unary endpoint that the server should not implement and should instead + * return an unimplemented error when invoked. + * + * @generated from rpc connectrpc.conformance.v1.ConformanceService.Unimplemented + */ + unimplemented: { + methodKind: "unary"; + input: typeof UnimplementedRequestSchema; + output: typeof UnimplementedResponseSchema; + }, + /** + * A unary endpoint denoted as having no side effects (i.e. idempotent). + * Implementations should use an HTTP GET when invoking this endpoint and + * leverage query parameters to send data. + * + * @generated from rpc connectrpc.conformance.v1.ConformanceService.IdempotentUnary + */ + idempotentUnary: { + methodKind: "unary"; + input: typeof IdempotentUnaryRequestSchema; + output: typeof IdempotentUnaryResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_connectrpc_conformance_v1_service, 0); diff --git a/packages/connect-conformance/src/gen/connectrpc/conformance/v1/suite_pb.ts b/packages/connect-conformance/src/gen/connectrpc/conformance/v1/suite_pb.ts index 923376e0f..52dc5d1a0 100644 --- a/packages/connect-conformance/src/gen/connectrpc/conformance/v1/suite_pb.ts +++ b/packages/connect-conformance/src/gen/connectrpc/conformance/v1/suite_pb.ts @@ -12,14 +12,23 @@ // See the License for the specific language governing permissions and // limitations under the License. -// @generated by protoc-gen-es v1.10.0 with parameter "ts_nocheck=false,target=ts" +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts,import_extension=.js" // @generated from file connectrpc/conformance/v1/suite.proto (package connectrpc.conformance.v1, syntax proto3) /* eslint-disable */ -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Message, proto3 } from "@bufbuild/protobuf"; -import { Code, Codec, Compression, HTTPVersion, Protocol } from "./config_pb.js"; -import { ClientCompatRequest, ClientResponseResult } from "./client_compat_pb.js"; +import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { ClientCompatRequest, ClientResponseResult } from "./client_compat_pb.js"; +import { file_connectrpc_conformance_v1_client_compat } from "./client_compat_pb.js"; +import type { Code, Codec, Compression, HTTPVersion, Protocol } from "./config_pb.js"; +import { file_connectrpc_conformance_v1_config } from "./config_pb.js"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file connectrpc/conformance/v1/suite.proto. + */ +export const file_connectrpc_conformance_v1_suite: GenFile = /*@__PURE__*/ + fileDesc("CiVjb25uZWN0cnBjL2NvbmZvcm1hbmNlL3YxL3N1aXRlLnByb3RvEhljb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxIsYGCglUZXN0U3VpdGUSDAoEbmFtZRgBIAEoCRI7CgRtb2RlGAIgASgOMi0uY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5UZXN0U3VpdGUuVGVzdE1vZGUSNwoKdGVzdF9jYXNlcxgDIAMoCzIjLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuVGVzdENhc2USPwoScmVsZXZhbnRfcHJvdG9jb2xzGAQgAygOMiMuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5Qcm90b2NvbBJGChZyZWxldmFudF9odHRwX3ZlcnNpb25zGAUgAygOMiYuY29ubmVjdHJwYy5jb25mb3JtYW5jZS52MS5IVFRQVmVyc2lvbhI5Cg9yZWxldmFudF9jb2RlY3MYBiADKA4yIC5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLkNvZGVjEkUKFXJlbGV2YW50X2NvbXByZXNzaW9ucxgHIAMoDjImLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuQ29tcHJlc3Npb24SVQoUY29ubmVjdF92ZXJzaW9uX21vZGUYCCABKA4yNy5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLlRlc3RTdWl0ZS5Db25uZWN0VmVyc2lvbk1vZGUSFQoNcmVsaWVzX29uX3RscxgJIAEoCBIiChpyZWxpZXNfb25fdGxzX2NsaWVudF9jZXJ0cxgKIAEoCBIdChVyZWxpZXNfb25fY29ubmVjdF9nZXQYCyABKAgSJwofcmVsaWVzX29uX21lc3NhZ2VfcmVjZWl2ZV9saW1pdBgMIAEoCCJRCghUZXN0TW9kZRIZChVURVNUX01PREVfVU5TUEVDSUZJRUQQABIUChBURVNUX01PREVfQ0xJRU5UEAESFAoQVEVTVF9NT0RFX1NFUlZFUhACIn0KEkNvbm5lY3RWZXJzaW9uTW9kZRIkCiBDT05ORUNUX1ZFUlNJT05fTU9ERV9VTlNQRUNJRklFRBAAEiAKHENPTk5FQ1RfVkVSU0lPTl9NT0RFX1JFUVVJUkUQARIfChtDT05ORUNUX1ZFUlNJT05fTU9ERV9JR05PUkUQAiL2AgoIVGVzdENhc2USPwoHcmVxdWVzdBgBIAEoCzIuLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuQ2xpZW50Q29tcGF0UmVxdWVzdBJJCg9leHBhbmRfcmVxdWVzdHMYAiADKAsyMC5jb25uZWN0cnBjLmNvbmZvcm1hbmNlLnYxLlRlc3RDYXNlLkV4cGFuZGVkU2l6ZRJKChFleHBlY3RlZF9yZXNwb25zZRgDIAEoCzIvLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuQ2xpZW50UmVzcG9uc2VSZXN1bHQSQgoZb3RoZXJfYWxsb3dlZF9lcnJvcl9jb2RlcxgEIAMoDjIfLmNvbm5lY3RycGMuY29uZm9ybWFuY2UudjEuQ29kZRpOCgxFeHBhbmRlZFNpemUSIwoWc2l6ZV9yZWxhdGl2ZV90b19saW1pdBgBIAEoBUgAiAEBQhkKF19zaXplX3JlbGF0aXZlX3RvX2xpbWl0YgZwcm90bzM", [file_connectrpc_conformance_v1_client_compat, file_connectrpc_conformance_v1_config]); /** * TestSuite represents a set of conformance test cases. This is also the schema @@ -30,13 +39,13 @@ import { ClientCompatRequest, ClientResponseResult } from "./client_compat_pb.js * * @generated from message connectrpc.conformance.v1.TestSuite */ -export class TestSuite extends Message { +export type TestSuite = Message<"connectrpc.conformance.v1.TestSuite"> & { /** * Test suite name. When writing test suites, this is a required field. * * @generated from field: string name = 1; */ - name = ""; + name: string; /** * The mode (client or server) that this test suite applies to. This is used @@ -47,14 +56,14 @@ export class TestSuite extends Message { * * @generated from field: connectrpc.conformance.v1.TestSuite.TestMode mode = 2; */ - mode = TestSuite_TestMode.UNSPECIFIED; + mode: TestSuite_TestMode; /** * The actual test cases in the suite. * * @generated from field: repeated connectrpc.conformance.v1.TestCase test_cases = 3; */ - testCases: TestCase[] = []; + testCases: TestCase[]; /** * If non-empty, the protocols to which this suite applies. If empty, @@ -62,7 +71,7 @@ export class TestSuite extends Message { * * @generated from field: repeated connectrpc.conformance.v1.Protocol relevant_protocols = 4; */ - relevantProtocols: Protocol[] = []; + relevantProtocols: Protocol[]; /** * If non-empty, the HTTP versions to which this suite applies. If empty, @@ -70,7 +79,7 @@ export class TestSuite extends Message { * * @generated from field: repeated connectrpc.conformance.v1.HTTPVersion relevant_http_versions = 5; */ - relevantHttpVersions: HTTPVersion[] = []; + relevantHttpVersions: HTTPVersion[]; /** * If non-empty, the codecs to which this suite applies. If empty, this @@ -78,7 +87,7 @@ export class TestSuite extends Message { * * @generated from field: repeated connectrpc.conformance.v1.Codec relevant_codecs = 6; */ - relevantCodecs: Codec[] = []; + relevantCodecs: Codec[]; /** * If non-empty, the compression encodings to which this suite applies. @@ -86,7 +95,7 @@ export class TestSuite extends Message { * * @generated from field: repeated connectrpc.conformance.v1.Compression relevant_compressions = 7; */ - relevantCompressions: Compression[] = []; + relevantCompressions: Compression[]; /** * Indicates the Connect version validation behavior that this suite @@ -94,7 +103,7 @@ export class TestSuite extends Message { * * @generated from field: connectrpc.conformance.v1.TestSuite.ConnectVersionMode connect_version_mode = 8; */ - connectVersionMode = TestSuite_ConnectVersionMode.UNSPECIFIED; + connectVersionMode: TestSuite_ConnectVersionMode; /** * If true, the cases in this suite rely on TLS and will only be run against @@ -102,7 +111,7 @@ export class TestSuite extends Message { * * @generated from field: bool relies_on_tls = 9; */ - reliesOnTls = false; + reliesOnTls: boolean; /** * If true, the cases in this suite rely on the client using TLS @@ -111,14 +120,14 @@ export class TestSuite extends Message { * * @generated from field: bool relies_on_tls_client_certs = 10; */ - reliesOnTlsClientCerts = false; + reliesOnTlsClientCerts: boolean; /** * If true, the cases in this suite rely on the Connect GET protocol. * * @generated from field: bool relies_on_connect_get = 11; */ - reliesOnConnectGet = false; + reliesOnConnectGet: boolean; /** * If true, the cases in this suite rely on support for limiting the @@ -127,46 +136,15 @@ export class TestSuite extends Message { * * @generated from field: bool relies_on_message_receive_limit = 12; */ - reliesOnMessageReceiveLimit = false; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.TestSuite"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "mode", kind: "enum", T: proto3.getEnumType(TestSuite_TestMode) }, - { no: 3, name: "test_cases", kind: "message", T: TestCase, repeated: true }, - { no: 4, name: "relevant_protocols", kind: "enum", T: proto3.getEnumType(Protocol), repeated: true }, - { no: 5, name: "relevant_http_versions", kind: "enum", T: proto3.getEnumType(HTTPVersion), repeated: true }, - { no: 6, name: "relevant_codecs", kind: "enum", T: proto3.getEnumType(Codec), repeated: true }, - { no: 7, name: "relevant_compressions", kind: "enum", T: proto3.getEnumType(Compression), repeated: true }, - { no: 8, name: "connect_version_mode", kind: "enum", T: proto3.getEnumType(TestSuite_ConnectVersionMode) }, - { no: 9, name: "relies_on_tls", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, - { no: 10, name: "relies_on_tls_client_certs", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, - { no: 11, name: "relies_on_connect_get", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, - { no: 12, name: "relies_on_message_receive_limit", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): TestSuite { - return new TestSuite().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): TestSuite { - return new TestSuite().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): TestSuite { - return new TestSuite().fromJsonString(jsonString, options); - } - - static equals(a: TestSuite | PlainMessage | undefined, b: TestSuite | PlainMessage | undefined): boolean { - return proto3.util.equals(TestSuite, a, b); - } -} + reliesOnMessageReceiveLimit: boolean; +}; + +/** + * Describes the message connectrpc.conformance.v1.TestSuite. + * Use `create(TestSuiteSchema)` to create a new message. + */ +export const TestSuiteSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_suite, 0); /** * @generated from enum connectrpc.conformance.v1.TestSuite.TestMode @@ -199,12 +177,12 @@ export enum TestSuite_TestMode { */ SERVER = 2, } -// Retrieve enum metadata with: proto3.getEnumType(TestSuite_TestMode) -proto3.util.setEnumType(TestSuite_TestMode, "connectrpc.conformance.v1.TestSuite.TestMode", [ - { no: 0, name: "TEST_MODE_UNSPECIFIED" }, - { no: 1, name: "TEST_MODE_CLIENT" }, - { no: 2, name: "TEST_MODE_SERVER" }, -]); + +/** + * Describes the enum connectrpc.conformance.v1.TestSuite.TestMode. + */ +export const TestSuite_TestModeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_connectrpc_conformance_v1_suite, 0, 0); /** * @generated from enum connectrpc.conformance.v1.TestSuite.ConnectVersionMode @@ -234,17 +212,17 @@ export enum TestSuite_ConnectVersionMode { */ IGNORE = 2, } -// Retrieve enum metadata with: proto3.getEnumType(TestSuite_ConnectVersionMode) -proto3.util.setEnumType(TestSuite_ConnectVersionMode, "connectrpc.conformance.v1.TestSuite.ConnectVersionMode", [ - { no: 0, name: "CONNECT_VERSION_MODE_UNSPECIFIED" }, - { no: 1, name: "CONNECT_VERSION_MODE_REQUIRE" }, - { no: 2, name: "CONNECT_VERSION_MODE_IGNORE" }, -]); + +/** + * Describes the enum connectrpc.conformance.v1.TestSuite.ConnectVersionMode. + */ +export const TestSuite_ConnectVersionModeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_connectrpc_conformance_v1_suite, 0, 1); /** * @generated from message connectrpc.conformance.v1.TestCase */ -export class TestCase extends Message { +export type TestCase = Message<"connectrpc.conformance.v1.TestCase"> & { /** * Defines the RPC that the client should invoke. The first eight fields * are not fully specified. Instead the first field, test_name, must be @@ -274,7 +252,7 @@ export class TestCase extends Message { * * @generated from field: repeated connectrpc.conformance.v1.TestCase.ExpandedSize expand_requests = 2; */ - expandRequests: TestCase_ExpandedSize[] = []; + expandRequests: TestCase_ExpandedSize[]; /** * Defines the expected response to the above RPC. The expected response for @@ -310,43 +288,20 @@ export class TestCase extends Message { * * @generated from field: repeated connectrpc.conformance.v1.Code other_allowed_error_codes = 4; */ - otherAllowedErrorCodes: Code[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.TestCase"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "request", kind: "message", T: ClientCompatRequest }, - { no: 2, name: "expand_requests", kind: "message", T: TestCase_ExpandedSize, repeated: true }, - { no: 3, name: "expected_response", kind: "message", T: ClientResponseResult }, - { no: 4, name: "other_allowed_error_codes", kind: "enum", T: proto3.getEnumType(Code), repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): TestCase { - return new TestCase().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): TestCase { - return new TestCase().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): TestCase { - return new TestCase().fromJsonString(jsonString, options); - } - - static equals(a: TestCase | PlainMessage | undefined, b: TestCase | PlainMessage | undefined): boolean { - return proto3.util.equals(TestCase, a, b); - } -} + otherAllowedErrorCodes: Code[]; +}; + +/** + * Describes the message connectrpc.conformance.v1.TestCase. + * Use `create(TestCaseSchema)` to create a new message. + */ +export const TestCaseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_suite, 1); /** * @generated from message connectrpc.conformance.v1.TestCase.ExpandedSize */ -export class TestCase_ExpandedSize extends Message { +export type TestCase_ExpandedSize = Message<"connectrpc.conformance.v1.TestCase.ExpandedSize"> & { /** * The size, in bytes, relative to the limit. For example, to expand to a * size that is exactly equal to the limit, this should be set to zero. @@ -356,32 +311,12 @@ export class TestCase_ExpandedSize extends Message { * @generated from field: optional int32 size_relative_to_limit = 1; */ sizeRelativeToLimit?: number; +}; - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "connectrpc.conformance.v1.TestCase.ExpandedSize"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "size_relative_to_limit", kind: "scalar", T: 5 /* ScalarType.INT32 */, opt: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): TestCase_ExpandedSize { - return new TestCase_ExpandedSize().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): TestCase_ExpandedSize { - return new TestCase_ExpandedSize().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): TestCase_ExpandedSize { - return new TestCase_ExpandedSize().fromJsonString(jsonString, options); - } - - static equals(a: TestCase_ExpandedSize | PlainMessage | undefined, b: TestCase_ExpandedSize | PlainMessage | undefined): boolean { - return proto3.util.equals(TestCase_ExpandedSize, a, b); - } -} +/** + * Describes the message connectrpc.conformance.v1.TestCase.ExpandedSize. + * Use `create(TestCase_ExpandedSizeSchema)` to create a new message. + */ +export const TestCase_ExpandedSizeSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_connectrpc_conformance_v1_suite, 1, 0); diff --git a/packages/connect-conformance/src/index.ts b/packages/connect-conformance/src/index.ts index a8b34c3b9..e02c1a202 100644 --- a/packages/connect-conformance/src/index.ts +++ b/packages/connect-conformance/src/index.ts @@ -23,6 +23,5 @@ export { export * from "./gen/connectrpc/conformance/v1/client_compat_pb.js"; export * from "./gen/connectrpc/conformance/v1/config_pb.js"; export * from "./gen/connectrpc/conformance/v1/server_compat_pb.js"; -export * from "./gen/connectrpc/conformance/v1/service_connect.js"; export * from "./gen/connectrpc/conformance/v1/service_pb.js"; export * from "./gen/connectrpc/conformance/v1/suite_pb.js"; diff --git a/packages/connect-conformance/src/promise-client.ts b/packages/connect-conformance/src/promise-client.ts index 841eee1bc..838c1e318 100644 --- a/packages/connect-conformance/src/promise-client.ts +++ b/packages/connect-conformance/src/promise-client.ts @@ -12,20 +12,24 @@ // See the License for the specific language governing permissions and // limitations under the License. -import type { PromiseClient, Transport } from "@connectrpc/connect"; +import { create } from "@bufbuild/protobuf"; import { createClient } from "@connectrpc/connect"; +import type { CallOptions, Client, Transport } from "@connectrpc/connect"; +import { createWritableIterable } from "@connectrpc/connect/protocol"; import { - ClientCompatRequest, - ClientResponseResult, + type ClientCompatRequest, + ClientResponseResultSchema, } from "./gen/connectrpc/conformance/v1/client_compat_pb.js"; import { - BidiStreamRequest, - ClientStreamRequest, - ConformancePayload, - IdempotentUnaryRequest, - ServerStreamRequest, - UnaryRequest, - UnimplementedRequest, + ConformanceService, + UnaryRequestSchema, + IdempotentUnaryRequestSchema, + ServerStreamRequestSchema, + ClientStreamRequestSchema, + ConformancePayloadSchema, + BidiStreamRequestSchema, + UnimplementedRequestSchema, + type BidiStreamRequest, } from "./gen/connectrpc/conformance/v1/service_pb.js"; import { convertToProtoHeaders, @@ -36,32 +40,29 @@ import { setClientErrorResult, wait, } from "./protocol.js"; -import { ConformanceService } from "./gen/connectrpc/conformance/v1/service_connect.js"; -import { createWritableIterable } from "@connectrpc/connect/protocol"; import { StreamType } from "./gen/connectrpc/conformance/v1/config_pb.js"; -type ConformanceClient = PromiseClient; +type ConformanceClient = Client; -const emptyPayload = new ConformancePayload(); +const emptyPayload = create(ConformancePayloadSchema); export function invokeWithPromiseClient( transport: Transport, compatRequest: ClientCompatRequest, ) { const client = createClient(ConformanceService, transport); - switch (compatRequest.method) { - case ConformanceService.methods.unary.name: + case ConformanceService.method.unary.name: return unary(client, compatRequest); - case ConformanceService.methods.idempotentUnary.name: + case ConformanceService.method.idempotentUnary.name: return unary(client, compatRequest, true); - case ConformanceService.methods.serverStream.name: + case ConformanceService.method.serverStream.name: return serverStream(client, compatRequest); - case ConformanceService.methods.clientStream.name: + case ConformanceService.method.clientStream.name: return clientStream(client, compatRequest); - case ConformanceService.methods.bidiStream.name: + case ConformanceService.method.bidiStream.name: return bidiStream(client, compatRequest); - case ConformanceService.methods.unimplemented.name: + case ConformanceService.method.unimplemented.name: return unimplemented(client, compatRequest); default: throw new Error(`Unknown method: ${compatRequest.method}`); @@ -74,19 +75,14 @@ async function unary( idempotent: boolean = false, ) { await wait(compatRequest.requestDelayMs); - const result = new ClientResponseResult(); + const result = create(ClientResponseResultSchema); try { const controller = new AbortController(); const { afterCloseSendMs } = getCancelTiming(compatRequest); if (afterCloseSendMs >= 0) { void wait(afterCloseSendMs).then(() => controller.abort()); } - const request = getSingleRequestMessage( - compatRequest, - idempotent ? IdempotentUnaryRequest : UnaryRequest, - ); - const call = idempotent ? client.idempotentUnary : client.unary; - const response = await call(request, { + const callOptions: CallOptions = { headers: getRequestHeaders(compatRequest), signal: controller.signal, onHeader(headers) { @@ -95,7 +91,16 @@ async function unary( onTrailer(trailers) { result.responseTrailers = convertToProtoHeaders(trailers); }, - }); + }; + const response = idempotent + ? await client.idempotentUnary( + getSingleRequestMessage(compatRequest, IdempotentUnaryRequestSchema), + callOptions, + ) + : await client.unary( + getSingleRequestMessage(compatRequest, UnaryRequestSchema), + callOptions, + ); result.payloads.push(response.payload ?? emptyPayload); } catch (e) { setClientErrorResult(result, e); @@ -110,8 +115,11 @@ async function serverStream( const cancelTiming = getCancelTiming(compatRequest); const controller = new AbortController(); await wait(compatRequest.requestDelayMs); - const result = new ClientResponseResult(); - const request = getSingleRequestMessage(compatRequest, ServerStreamRequest); + const result = create(ClientResponseResultSchema); + const request = getSingleRequestMessage( + compatRequest, + ServerStreamRequestSchema, + ); try { const res = client.serverStream(request, { headers: getRequestHeaders(compatRequest), @@ -145,13 +153,13 @@ async function clientStream( ) { const cancelTiming = getCancelTiming(compatRequest); const controller = new AbortController(); - const result = new ClientResponseResult(); + const result = create(ClientResponseResultSchema); try { const response = await client.clientStream( (async function* () { for (const msg of getRequestMessages( compatRequest, - ClientStreamRequest, + ClientStreamRequestSchema, )) { await wait(compatRequest.requestDelayMs); yield msg; @@ -188,7 +196,7 @@ async function bidiStream( ) { const cancelTiming = getCancelTiming(compatRequest); const controller = new AbortController(); - const result = new ClientResponseResult(); + const result = create(ClientResponseResultSchema); try { const request = createWritableIterable(); const responses = client.bidiStream(request, { @@ -202,7 +210,10 @@ async function bidiStream( }, }); const responseIterator = responses[Symbol.asyncIterator](); - for (const msg of getRequestMessages(compatRequest, BidiStreamRequest)) { + for (const msg of getRequestMessages( + compatRequest, + BidiStreamRequestSchema, + )) { await wait(compatRequest.requestDelayMs); await request.write(msg); if (compatRequest.streamType === StreamType.FULL_DUPLEX_BIDI_STREAM) { @@ -252,8 +263,11 @@ async function unimplemented( client: ConformanceClient, compatRequest: ClientCompatRequest, ) { - const request = getSingleRequestMessage(compatRequest, UnimplementedRequest); - const result = new ClientResponseResult(); + const request = getSingleRequestMessage( + compatRequest, + UnimplementedRequestSchema, + ); + const result = create(ClientResponseResultSchema); try { await client.unimplemented(request, { headers: getRequestHeaders(compatRequest), diff --git a/packages/connect-conformance/src/protocol.ts b/packages/connect-conformance/src/protocol.ts index 64cec6eac..f35710f39 100644 --- a/packages/connect-conformance/src/protocol.ts +++ b/packages/connect-conformance/src/protocol.ts @@ -12,26 +12,28 @@ // See the License for the specific language governing permissions and // limitations under the License. -import { Code, ConnectError } from "@connectrpc/connect"; +import { ConnectError, Code } from "@connectrpc/connect"; +import { create, createRegistry } from "@bufbuild/protobuf"; +import type { DescMessage, MessageShape } from "@bufbuild/protobuf"; import { - Any, - createRegistry, - Message, - type MessageType, -} from "@bufbuild/protobuf"; -import { - ConformancePayload_RequestInfo, + ErrorSchema as ConformanceErrorDesc, + HeaderSchema as ConformanceHeaderDesc, + ConformancePayload_RequestInfoSchema, +} from "./gen/connectrpc/conformance/v1/service_pb.js"; +import type { Error as ConformanceError, Header as ConformanceHeader, } from "./gen/connectrpc/conformance/v1/service_pb.js"; import { Code as ConformanceCode } from "./gen/connectrpc/conformance/v1/config_pb.js"; -import { +import { AnySchema, anyPack, anyUnpack } from "@bufbuild/protobuf/wkt"; +import type { Any } from "@bufbuild/protobuf/wkt"; + +const detailsRegitry = createRegistry(ConformancePayload_RequestInfoSchema); +import type { ClientCompatRequest, ClientResponseResult, } from "./gen/connectrpc/conformance/v1/client_compat_pb.js"; -const detailsRegistry = createRegistry(ConformancePayload_RequestInfo); - export function getCancelTiming(compatRequest: ClientCompatRequest) { const def = { beforeCloseSend: undefined, @@ -70,20 +72,20 @@ export function getRequestHeaders( /** * Get a single request message for a conformance client call. */ -export function getSingleRequestMessage>( +export function getSingleRequestMessage( compatRequest: ClientCompatRequest, - type: MessageType, -): T { + desc: T, +): MessageShape { if (compatRequest.requestMessages.length !== 1) { throw new Error( `Expected exactly one request_message in ClientCompatRequest, found ${compatRequest.requestMessages.length}`, ); } const any = compatRequest.requestMessages[0]; - const target = new type(); - if (!any.unpackTo(target)) { + const target = anyUnpack(any, desc); + if (!target) { throw new Error( - `Could not unpack request_message from ClientCompatRequest into ${type.typeName}`, + `Could not unpack request_message from ClientCompatRequest into ${desc.typeName}`, ); } return target; @@ -92,15 +94,15 @@ export function getSingleRequestMessage>( /** * Get a request messages for a conformance client call. */ -export function* getRequestMessages>( +export function* getRequestMessages( compatRequest: ClientCompatRequest, - type: MessageType, -): Iterable { + desc: T, +): Iterable> { for (const any of compatRequest.requestMessages) { - const target = new type(); - if (!any.unpackTo(target)) { + const target = anyUnpack(any, desc); + if (!target) { throw new Error( - `Could not unpack request_message from ClientCompatRequest into ${type.typeName}`, + `Could not unpack request_message from ClientCompatRequest into ${desc.typeName}`, ); } yield target; @@ -135,11 +137,11 @@ export function connectErrorFromProto(err: ConformanceError) { err.code as unknown as Code, undefined, err.details.map((d) => { - const m = d.unpack(detailsRegistry); + const m = anyUnpack(d, detailsRegitry); if (m === undefined) { throw new Error(`Cannot unpack ${d.typeUrl}`); } - return m; + return { desc: ConformancePayload_RequestInfoSchema, value: m }; }), ); } @@ -150,18 +152,18 @@ export function convertToProtoError(err: ConnectError | undefined) { } const details: Any[] = []; for (const detail of err.details) { - if (detail instanceof Message) { - details.push(Any.pack(detail)); + if ("desc" in detail) { + details.push(anyPack(detail.desc, create(detail.desc, detail.value))); } else { details.push( - new Any({ + create(AnySchema, { typeUrl: "type.googleapis.com/" + detail.type, value: detail.value, }), ); } } - return new ConformanceError({ + return create(ConformanceErrorDesc, { code: err.code as unknown as ConformanceCode, message: err.rawMessage, details, @@ -172,7 +174,7 @@ export function convertToProtoHeaders(headers: Headers): ConformanceHeader[] { const result: ConformanceHeader[] = []; headers.forEach((value, key) => { result.push( - new ConformanceHeader({ + create(ConformanceHeaderDesc, { name: key, value: [value], }), diff --git a/packages/connect-conformance/src/routes.ts b/packages/connect-conformance/src/routes.ts index c1286b135..f4490c6d4 100644 --- a/packages/connect-conformance/src/routes.ts +++ b/packages/connect-conformance/src/routes.ts @@ -13,13 +13,19 @@ // limitations under the License. import type { ConnectRouter, HandlerContext } from "@connectrpc/connect"; -import { Any } from "@bufbuild/protobuf"; -import { ConformanceService } from "./gen/connectrpc/conformance/v1/service_connect.js"; +import { create } from "@bufbuild/protobuf"; import { - ConformancePayload, - ConformancePayload_RequestInfo, + BidiStreamRequestSchema, + ClientStreamRequestSchema, + ConformancePayloadSchema, + ConformancePayload_RequestInfoSchema, + ConformanceService, + IdempotentUnaryRequestSchema, + ServerStreamRequestSchema, + UnaryRequestSchema, } from "./gen/connectrpc/conformance/v1/service_pb.js"; import type { + ConformancePayload_RequestInfo, UnaryResponseDefinition, StreamResponseDefinition, } from "./gen/connectrpc/conformance/v1/service_pb.js"; @@ -29,13 +35,15 @@ import { convertToProtoHeaders, wait, } from "./protocol.js"; +import { anyPack } from "@bufbuild/protobuf/wkt"; +import type { Any } from "@bufbuild/protobuf/wkt"; function createRequestInfo( ctx: HandlerContext, reqs: Any[], ): ConformancePayload_RequestInfo { const timeoutMs = ctx.timeoutMs(); - return new ConformancePayload_RequestInfo({ + return create(ConformancePayload_RequestInfoSchema, { requestHeaders: convertToProtoHeaders(ctx.requestHeader), requests: reqs, timeoutMs: timeoutMs !== undefined ? BigInt(timeoutMs) : undefined, @@ -51,14 +59,16 @@ async function handleUnaryResponse( appendProtoHeaders(ctx.responseTrailer, def?.responseTrailers ?? []); const reqInfo = createRequestInfo(ctx, reqs); if (def?.response.case === "error") { - def.response.value.details.push(Any.pack(reqInfo)); + def.response.value.details.push( + anyPack(ConformancePayload_RequestInfoSchema, reqInfo), + ); throw connectErrorFromProto(def.response.value); } if (def?.responseDelayMs !== undefined) { await wait(def.responseDelayMs); } return { - payload: new ConformancePayload({ + payload: create(ConformancePayloadSchema, { requestInfo: createRequestInfo(ctx, reqs), data: def?.response.value, }), @@ -68,10 +78,18 @@ async function handleUnaryResponse( export default ({ service }: ConnectRouter) => { service(ConformanceService, { unary(req, ctx) { - return handleUnaryResponse(req.responseDefinition, [Any.pack(req)], ctx); + return handleUnaryResponse( + req.responseDefinition, + [anyPack(UnaryRequestSchema, req)], + ctx, + ); }, idempotentUnary(req, ctx) { - return handleUnaryResponse(req.responseDefinition, [Any.pack(req)], ctx); + return handleUnaryResponse( + req.responseDefinition, + [anyPack(IdempotentUnaryRequestSchema, req)], + ctx, + ); }, async clientStream(reqIt, ctx) { let def: UnaryResponseDefinition | undefined; @@ -80,7 +98,7 @@ export default ({ service }: ConnectRouter) => { if (def === undefined) { def = req.responseDefinition; } - reqs.push(Any.pack(req)); + reqs.push(anyPack(ClientStreamRequestSchema, req)); } return handleUnaryResponse(def, reqs, ctx); }, @@ -88,13 +106,13 @@ export default ({ service }: ConnectRouter) => { const def = req.responseDefinition; appendProtoHeaders(ctx.responseHeader, def?.responseHeaders ?? []); appendProtoHeaders(ctx.responseTrailer, def?.responseTrailers ?? []); - const anyReq = Any.pack(req); + const anyReq = anyPack(ServerStreamRequestSchema, req); let reqInfo: ConformancePayload_RequestInfo | undefined = createRequestInfo(ctx, [anyReq]); for (const res of def?.responseData ?? []) { await wait(def!.responseDelayMs); yield { - payload: new ConformancePayload({ + payload: create(ConformancePayloadSchema, { requestInfo: reqInfo, data: res, }), @@ -104,7 +122,12 @@ export default ({ service }: ConnectRouter) => { } if (def?.error !== undefined) { if (def.responseData.length === 0) { - def.error.details.push(Any.pack(createRequestInfo(ctx, [anyReq]))); + def.error.details.push( + anyPack( + ConformancePayload_RequestInfoSchema, + createRequestInfo(ctx, [anyReq]), + ), + ); } throw connectErrorFromProto(def.error); } @@ -121,7 +144,7 @@ export default ({ service }: ConnectRouter) => { appendProtoHeaders(ctx.responseTrailer, def?.responseTrailers ?? []); fullDuplex = req.fullDuplex; } - reqs.push(Any.pack(req)); + reqs.push(anyPack(BidiStreamRequestSchema, req)); if (!fullDuplex) { continue; } @@ -131,8 +154,10 @@ export default ({ service }: ConnectRouter) => { } await wait(def.responseDelayMs); yield { - payload: new ConformancePayload({ - requestInfo: createRequestInfo(ctx, [Any.pack(req)]), + payload: create(ConformancePayloadSchema, { + requestInfo: createRequestInfo(ctx, [ + anyPack(BidiStreamRequestSchema, req), + ]), data: def.responseData[resNum], }), }; @@ -146,7 +171,7 @@ export default ({ service }: ConnectRouter) => { for (; resNum < (def?.responseData.length ?? 0); resNum++) { await wait(def?.responseDelayMs ?? 0); yield { - payload: new ConformancePayload({ + payload: create(ConformancePayloadSchema, { requestInfo: resNum === 0 ? reqInfo : undefined, data: def?.responseData[resNum], }), @@ -154,7 +179,9 @@ export default ({ service }: ConnectRouter) => { } if (def?.error !== undefined) { if (def.responseData.length === 0) { - def.error.details.push(Any.pack(reqInfo)); + def.error.details.push( + anyPack(ConformancePayload_RequestInfoSchema, reqInfo), + ); } throw connectErrorFromProto(def.error); } diff --git a/packages/connect-express/buf.gen.yaml b/packages/connect-express/buf.gen.yaml new file mode 100644 index 000000000..fe2ceb466 --- /dev/null +++ b/packages/connect-express/buf.gen.yaml @@ -0,0 +1,10 @@ +# Learn more: https://buf.build/docs/configuration/v2/buf-gen-yaml +version: v2 +# Deletes the directories specified in the `out` field for all plugins before running code generation. +clean: true +inputs: + - module: buf.build/connectrpc/eliza +plugins: + - local: protoc-gen-es + out: src/testdata/gen + opt: ts_nocheck=false,target=ts,import_extension=.js diff --git a/packages/connect-express/conformance/server.ts b/packages/connect-express/conformance/server.ts index cf1ae2f7c..c681e5880 100755 --- a/packages/connect-express/conformance/server.ts +++ b/packages/connect-express/conformance/server.ts @@ -18,17 +18,22 @@ import * as http from "node:http"; import * as http2 from "node:http2"; import * as https from "node:https"; import * as net from "node:net"; -import { createRegistry } from "@bufbuild/protobuf"; +import { + create, + createRegistry, + fromBinary, + toBinary, +} from "@bufbuild/protobuf"; import { routes, - BidiStreamRequest, - ClientStreamRequest, HTTPVersion, - IdempotentUnaryRequest, - ServerCompatRequest, - ServerCompatResponse, - ServerStreamRequest, - UnaryRequest, + UnaryRequestSchema, + ServerStreamRequestSchema, + ClientStreamRequestSchema, + BidiStreamRequestSchema, + IdempotentUnaryRequestSchema, + ServerCompatRequestSchema, + ServerCompatResponseSchema, writeSizeDelimitedBuffer, } from "@connectrpc/connect-conformance"; import express from "express"; @@ -43,7 +48,8 @@ main(); * server's port and other details to stdout. */ function main() { - const req = ServerCompatRequest.fromBinary( + const req = fromBinary( + ServerCompatRequestSchema, readFileSync(process.stdin.fd).subarray(4), ); @@ -54,12 +60,12 @@ function main() { readMaxBytes: req.messageReceiveLimit, acceptCompression: [compressionGzip, compressionBrotli], jsonOptions: { - typeRegistry: createRegistry( - UnaryRequest, - ServerStreamRequest, - ClientStreamRequest, - BidiStreamRequest, - IdempotentUnaryRequest, + registry: createRegistry( + UnaryRequestSchema, + ServerStreamRequestSchema, + ClientStreamRequestSchema, + BidiStreamRequestSchema, + IdempotentUnaryRequestSchema, ), }, }), @@ -111,7 +117,7 @@ function main() { server.listen(undefined, "127.0.0.1", () => { const addrInfo = server.address() as net.AddressInfo; - const res = new ServerCompatResponse({ + const res = create(ServerCompatResponseSchema, { pemCert: serverOptions.cert !== undefined ? Buffer.from(serverOptions.cert) @@ -119,6 +125,8 @@ function main() { host: addrInfo.address, port: addrInfo.port, }); - process.stdout.write(writeSizeDelimitedBuffer(res.toBinary())); + process.stdout.write( + writeSizeDelimitedBuffer(toBinary(ServerCompatResponseSchema, res)), + ); }); } diff --git a/packages/connect-express/package.json b/packages/connect-express/package.json index c13d43bee..ce8fb08d5 100644 --- a/packages/connect-express/package.json +++ b/packages/connect-express/package.json @@ -1,6 +1,6 @@ { "name": "@connectrpc/connect-express", - "version": "1.6.1", + "version": "2.0.0-rc.2", "license": "Apache-2.0", "repository": { "type": "git", @@ -29,19 +29,19 @@ } }, "engines": { - "node": ">=16.0.0" + "node": ">=18.14.1" }, "devDependencies": { - "@connectrpc/connect-conformance": "^1.6.1", - "@connectrpc/connect": "1.6.1", - "@connectrpc/connect-node": "1.6.1", + "@connectrpc/connect-conformance": "^2.0.0-rc.2", + "@connectrpc/connect": "2.0.0-rc.2", + "@connectrpc/connect-node": "2.0.0-rc.2", "@types/express": "^4.17.18", "express": "^4.19.2", "tsx": "^4.19.0" }, "peerDependencies": { - "@bufbuild/protobuf": "^1.10.0", - "@connectrpc/connect": "1.6.1", - "@connectrpc/connect-node": "1.6.1" + "@bufbuild/protobuf": "^2.2.0", + "@connectrpc/connect": "2.0.0-rc.2", + "@connectrpc/connect-node": "2.0.0-rc.2" } } diff --git a/packages/connect-express/src/express-readme.spec.ts b/packages/connect-express/src/express-readme.spec.ts index 7a250937d..882665b0f 100644 --- a/packages/connect-express/src/express-readme.spec.ts +++ b/packages/connect-express/src/express-readme.spec.ts @@ -13,53 +13,20 @@ // limitations under the License. import * as http from "http"; -import { Message, MethodKind, proto3 } from "@bufbuild/protobuf"; import { createClient } from "@connectrpc/connect"; import type { ConnectRouter } from "@connectrpc/connect"; import { createGrpcWebTransport } from "@connectrpc/connect-node"; import express from "express"; import { expressConnectMiddleware } from "./express-connect-middleware.js"; +import { ElizaService } from "./testdata/gen/connectrpc/eliza/v1/eliza_pb.js"; describe("express readme", function () { - interface SayR extends Message { - sentence: string; - } - const SayR = proto3.makeMessageType("connectrpc.eliza.v1.SayRequest", [ - { no: 1, name: "sentence", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - interface IntroduceRequest extends Message { - name: string; - } - const IntroduceRequest = proto3.makeMessageType( - "connectrpc.eliza.v1.IntroduceRequest", - [{ no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }], - ); - - const ElizaService = { - typeName: "connectrpc.eliza.v1.ElizaService", - methods: { - say: { - name: "Say", - I: SayR, - O: SayR, - kind: MethodKind.Unary, - }, - introduce: { - name: "Introduce", - I: IntroduceRequest, - O: SayR, - kind: MethodKind.ServerStreaming, - }, - }, - } as const; - it("should work", async function () { let port = -1; function routes(router: ConnectRouter) { // eslint-disable-next-line @typescript-eslint/require-await - router.rpc(ElizaService, ElizaService.methods.say, async (req) => ({ + router.rpc(ElizaService.method.say, async (req) => ({ sentence: `you said: ${req.sentence}`, })); } diff --git a/packages/connect-express/src/testdata/gen/connectrpc/eliza/v1/eliza_pb.ts b/packages/connect-express/src/testdata/gen/connectrpc/eliza/v1/eliza_pb.ts new file mode 100644 index 000000000..5e10f3bed --- /dev/null +++ b/packages/connect-express/src/testdata/gen/connectrpc/eliza/v1/eliza_pb.ts @@ -0,0 +1,209 @@ +// Copyright 2021-2024 The Connect Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v2.0.0 with parameter "ts_nocheck=false,target=ts,import_extension=.js" +// @generated from file connectrpc/eliza/v1/eliza.proto (package connectrpc.eliza.v1, syntax proto3) +/* eslint-disable */ + +import type { + GenFile, + GenMessage, + GenService, +} from "@bufbuild/protobuf/codegenv1"; +import { + fileDesc, + messageDesc, + serviceDesc, +} from "@bufbuild/protobuf/codegenv1"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file connectrpc/eliza/v1/eliza.proto. + */ +export const file_connectrpc_eliza_v1_eliza: GenFile = + /*@__PURE__*/ + fileDesc( + "Ch9jb25uZWN0cnBjL2VsaXphL3YxL2VsaXphLnByb3RvEhNjb25uZWN0cnBjLmVsaXphLnYxIh4KClNheVJlcXVlc3QSEAoIc2VudGVuY2UYASABKAkiHwoLU2F5UmVzcG9uc2USEAoIc2VudGVuY2UYASABKAkiIwoPQ29udmVyc2VSZXF1ZXN0EhAKCHNlbnRlbmNlGAEgASgJIiQKEENvbnZlcnNlUmVzcG9uc2USEAoIc2VudGVuY2UYASABKAkiIAoQSW50cm9kdWNlUmVxdWVzdBIMCgRuYW1lGAEgASgJIiUKEUludHJvZHVjZVJlc3BvbnNlEhAKCHNlbnRlbmNlGAEgASgJMpwCCgxFbGl6YVNlcnZpY2USTQoDU2F5Eh8uY29ubmVjdHJwYy5lbGl6YS52MS5TYXlSZXF1ZXN0GiAuY29ubmVjdHJwYy5lbGl6YS52MS5TYXlSZXNwb25zZSIDkAIBEl0KCENvbnZlcnNlEiQuY29ubmVjdHJwYy5lbGl6YS52MS5Db252ZXJzZVJlcXVlc3QaJS5jb25uZWN0cnBjLmVsaXphLnYxLkNvbnZlcnNlUmVzcG9uc2UiACgBMAESXgoJSW50cm9kdWNlEiUuY29ubmVjdHJwYy5lbGl6YS52MS5JbnRyb2R1Y2VSZXF1ZXN0GiYuY29ubmVjdHJwYy5lbGl6YS52MS5JbnRyb2R1Y2VSZXNwb25zZSIAMAFiBnByb3RvMw", + ); + +/** + * SayRequest is a single-sentence request. + * + * @generated from message connectrpc.eliza.v1.SayRequest + */ +export type SayRequest = Message<"connectrpc.eliza.v1.SayRequest"> & { + /** + * @generated from field: string sentence = 1; + */ + sentence: string; +}; + +/** + * Describes the message connectrpc.eliza.v1.SayRequest. + * Use `create(SayRequestSchema)` to create a new message. + */ +export const SayRequestSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_eliza_v1_eliza, 0); + +/** + * SayResponse is a single-sentence response. + * + * @generated from message connectrpc.eliza.v1.SayResponse + */ +export type SayResponse = Message<"connectrpc.eliza.v1.SayResponse"> & { + /** + * @generated from field: string sentence = 1; + */ + sentence: string; +}; + +/** + * Describes the message connectrpc.eliza.v1.SayResponse. + * Use `create(SayResponseSchema)` to create a new message. + */ +export const SayResponseSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_eliza_v1_eliza, 1); + +/** + * ConverseRequest is a single sentence request sent as part of a + * back-and-forth conversation. + * + * @generated from message connectrpc.eliza.v1.ConverseRequest + */ +export type ConverseRequest = Message<"connectrpc.eliza.v1.ConverseRequest"> & { + /** + * @generated from field: string sentence = 1; + */ + sentence: string; +}; + +/** + * Describes the message connectrpc.eliza.v1.ConverseRequest. + * Use `create(ConverseRequestSchema)` to create a new message. + */ +export const ConverseRequestSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_eliza_v1_eliza, 2); + +/** + * ConverseResponse is a single sentence response sent in answer to a + * ConverseRequest. + * + * @generated from message connectrpc.eliza.v1.ConverseResponse + */ +export type ConverseResponse = + Message<"connectrpc.eliza.v1.ConverseResponse"> & { + /** + * @generated from field: string sentence = 1; + */ + sentence: string; + }; + +/** + * Describes the message connectrpc.eliza.v1.ConverseResponse. + * Use `create(ConverseResponseSchema)` to create a new message. + */ +export const ConverseResponseSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_eliza_v1_eliza, 3); + +/** + * IntroduceRequest asks Eliza to introduce itself to the named user. + * + * @generated from message connectrpc.eliza.v1.IntroduceRequest + */ +export type IntroduceRequest = + Message<"connectrpc.eliza.v1.IntroduceRequest"> & { + /** + * @generated from field: string name = 1; + */ + name: string; + }; + +/** + * Describes the message connectrpc.eliza.v1.IntroduceRequest. + * Use `create(IntroduceRequestSchema)` to create a new message. + */ +export const IntroduceRequestSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_eliza_v1_eliza, 4); + +/** + * IntroduceResponse is one sentence of Eliza's introductory monologue. + * + * @generated from message connectrpc.eliza.v1.IntroduceResponse + */ +export type IntroduceResponse = + Message<"connectrpc.eliza.v1.IntroduceResponse"> & { + /** + * @generated from field: string sentence = 1; + */ + sentence: string; + }; + +/** + * Describes the message connectrpc.eliza.v1.IntroduceResponse. + * Use `create(IntroduceResponseSchema)` to create a new message. + */ +export const IntroduceResponseSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_eliza_v1_eliza, 5); + +/** + * ElizaService provides a way to talk to Eliza, a port of the DOCTOR script + * for Joseph Weizenbaum's original ELIZA program. Created in the mid-1960s at + * the MIT Artificial Intelligence Laboratory, ELIZA demonstrates the + * superficiality of human-computer communication. DOCTOR simulates a + * psychotherapist, and is commonly found as an Easter egg in emacs + * distributions. + * + * @generated from service connectrpc.eliza.v1.ElizaService + */ +export const ElizaService: GenService<{ + /** + * Say is a unary RPC. Eliza responds to the prompt with a single sentence. + * + * @generated from rpc connectrpc.eliza.v1.ElizaService.Say + */ + say: { + methodKind: "unary"; + input: typeof SayRequestSchema; + output: typeof SayResponseSchema; + }; + /** + * Converse is a bidirectional RPC. The caller may exchange multiple + * back-and-forth messages with Eliza over a long-lived connection. Eliza + * responds to each ConverseRequest with a ConverseResponse. + * + * @generated from rpc connectrpc.eliza.v1.ElizaService.Converse + */ + converse: { + methodKind: "bidi_streaming"; + input: typeof ConverseRequestSchema; + output: typeof ConverseResponseSchema; + }; + /** + * Introduce is a server streaming RPC. Given the caller's name, Eliza + * returns a stream of sentences to introduce itself. + * + * @generated from rpc connectrpc.eliza.v1.ElizaService.Introduce + */ + introduce: { + methodKind: "server_streaming"; + input: typeof IntroduceRequestSchema; + output: typeof IntroduceResponseSchema; + }; +}> = /*@__PURE__*/ serviceDesc(file_connectrpc_eliza_v1_eliza, 0); diff --git a/packages/connect-fastify/conformance/server.ts b/packages/connect-fastify/conformance/server.ts index 7e985b3ad..50cee37ba 100755 --- a/packages/connect-fastify/conformance/server.ts +++ b/packages/connect-fastify/conformance/server.ts @@ -17,17 +17,22 @@ import { compressionBrotli, compressionGzip } from "@connectrpc/connect-node"; import * as http from "node:http"; import * as http2 from "node:http2"; import * as https from "node:https"; -import { createRegistry } from "@bufbuild/protobuf"; +import { + create, + createRegistry, + fromBinary, + toBinary, +} from "@bufbuild/protobuf"; import { routes, - BidiStreamRequest, - ClientStreamRequest, HTTPVersion, - IdempotentUnaryRequest, - ServerCompatRequest, - ServerCompatResponse, - ServerStreamRequest, - UnaryRequest, + ServerCompatRequestSchema, + UnaryRequestSchema, + ServerStreamRequestSchema, + ClientStreamRequestSchema, + BidiStreamRequestSchema, + IdempotentUnaryRequestSchema, + ServerCompatResponseSchema, writeSizeDelimitedBuffer, } from "@connectrpc/connect-conformance"; import { fastify } from "fastify"; @@ -49,7 +54,8 @@ main(); * server's port and other details to stdout. */ function main() { - const req = ServerCompatRequest.fromBinary( + const req = fromBinary( + ServerCompatRequestSchema, readFileSync(process.stdin.fd).subarray(4), ); @@ -58,12 +64,12 @@ function main() { readMaxBytes: req.messageReceiveLimit, acceptCompression: [compressionGzip, compressionBrotli], jsonOptions: { - typeRegistry: createRegistry( - UnaryRequest, - ServerStreamRequest, - ClientStreamRequest, - BidiStreamRequest, - IdempotentUnaryRequest, + registry: createRegistry( + UnaryRequestSchema, + ServerStreamRequestSchema, + ClientStreamRequestSchema, + BidiStreamRequestSchema, + IdempotentUnaryRequestSchema, ), }, }; @@ -143,7 +149,7 @@ function main() { server.listen({ host: "127.0.0.1", port: 0 }, () => { const addrInfo = server.addresses()[0]; - const res = new ServerCompatResponse({ + const res = create(ServerCompatResponseSchema, { pemCert: req.serverCreds !== undefined ? Buffer.from(req.serverCreds.cert) @@ -151,6 +157,8 @@ function main() { host: addrInfo.address, port: addrInfo.port, }); - process.stdout.write(writeSizeDelimitedBuffer(res.toBinary())); + process.stdout.write( + writeSizeDelimitedBuffer(toBinary(ServerCompatResponseSchema, res)), + ); }); } diff --git a/packages/connect-fastify/package.json b/packages/connect-fastify/package.json index 9c19e2bec..6604ffa3e 100644 --- a/packages/connect-fastify/package.json +++ b/packages/connect-fastify/package.json @@ -1,6 +1,6 @@ { "name": "@connectrpc/connect-fastify", - "version": "1.6.1", + "version": "2.0.0-rc.2", "license": "Apache-2.0", "repository": { "type": "git", @@ -28,17 +28,17 @@ } }, "engines": { - "node": ">=16.0.0" + "node": ">=18.14.1" }, "devDependencies": { - "@connectrpc/connect-conformance": "^1.6.1", - "@connectrpc/connect": "1.6.1", - "@connectrpc/connect-node": "1.6.1" + "@connectrpc/connect-conformance": "^2.0.0-rc.2", + "@connectrpc/connect": "2.0.0-rc.2", + "@connectrpc/connect-node": "2.0.0-rc.2" }, "peerDependencies": { - "@bufbuild/protobuf": "^1.10.0", + "@bufbuild/protobuf": "^2.2.0", "fastify": "^4.22.1", - "@connectrpc/connect": "1.6.1", - "@connectrpc/connect-node": "1.6.1" + "@connectrpc/connect": "2.0.0-rc.2", + "@connectrpc/connect-node": "2.0.0-rc.2" } } diff --git a/packages/connect-migrate/package.json b/packages/connect-migrate/package.json index c65fe7230..3e395daaf 100644 --- a/packages/connect-migrate/package.json +++ b/packages/connect-migrate/package.json @@ -1,6 +1,6 @@ { "name": "@connectrpc/connect-migrate", - "version": "1.6.1", + "version": "2.0.0-rc.2", "description": "This tool updates your Connect project to use the new @connectrpc packages.", "license": "Apache-2.0", "repository": { @@ -13,19 +13,20 @@ }, "scripts": { "prebuild": "rm -rf ./dist/*", - "build": "tsc --project tsconfig.json --module commonjs --verbatimModuleSyntax false --moduleResolution node10 --outDir ./dist/cjs", + "build": "tsc --project tsconfig.json --outDir ./dist/cjs", "test": "jasmine --config=jasmine.json", "format": "prettier --write --ignore-unknown '.' '!dist'", "license-header": "license-header", "lint": "eslint --max-warnings 0 ." }, "engines": { - "node": ">=16.0.0" + "node": ">=18.14.1" }, "dependencies": { "fast-glob": "3.3.2", "jscodeshift": "17.0.0", - "semver": "^7.6.3" + "semver": "^7.6.3", + "yaml": "^2.5.1" }, "devDependencies": { "@types/jscodeshift": "0.11.11", diff --git a/packages/connect-migrate/src/cli.ts b/packages/connect-migrate/src/cli.ts index 0ba39814e..5649d2d36 100644 --- a/packages/connect-migrate/src/cli.ts +++ b/packages/connect-migrate/src/cli.ts @@ -19,6 +19,7 @@ import { parseCommandLineArgs } from "./arguments"; import { scan } from "./lib/scan"; import { Logger } from "./lib/logger"; import { v0_13_1 } from "./migrations/v0.13.1"; +import { v2_0_0 } from "./migrations/v2.0.0"; import { v1_6_0 } from "./migrations/v1.6.0"; import type { Migration } from "./migration"; @@ -34,7 +35,7 @@ Flags: `; const logger = new Logger(); -const migrations = [v0_13_1, v1_6_0]; +const migrations = [v0_13_1, v1_6_0, v2_0_0]; void main(); async function main() { diff --git a/packages/connect-migrate/src/lib/bufgenyaml.spec.ts b/packages/connect-migrate/src/lib/bufgenyaml.spec.ts new file mode 100644 index 000000000..870d50e65 --- /dev/null +++ b/packages/connect-migrate/src/lib/bufgenyaml.spec.ts @@ -0,0 +1,76 @@ +// Copyright 2021-2024 The Connect Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { BufGenYaml, parseBufGenYaml, stringifyBufGenYaml } from "./bufgenyaml"; + +const goldenV1 = `# buf.gen.yaml defines a local generation template. +# For details, see https://docs.buf.build/configuration/v1/buf-gen-yaml +version: v1 +plugins: + - plugin: es + opt: target=ts + out: src/gen + - plugin: connect-es + opt: target=ts + out: src/gen +`; + +const goldenV2 = `# Learn more: https://buf.build/docs/configuration/v2/buf-gen-yaml +version: v2 +inputs: + - directory: proto +plugins: + # The code generator is installed with \`npm install @bufbuild/protoc-gen-es\`. + - local: protoc-gen-es + opt: target=ts + out: src/gen + - local: protoc-gen-connect-es + opt: target=ts + out: src/gen + - local: protoc-gen-foo + out: src/gen + - local: protoc-gen-connect-es + opt: target=ts + out: src/gen +`; + +describe("parseBufGenYaml()", () => { + it("should parse golden v1", () => { + const y: BufGenYaml = parseBufGenYaml(goldenV1); + expect(y).toBeDefined(); + expect(y.get("version")).toBe("v1"); + }); + it("should parse golden v2", () => { + const y: BufGenYaml = parseBufGenYaml(goldenV2); + expect(y).toBeDefined(); + expect(y.get("version")).toBe("v2"); + }); + it("raises error for unknown version", () => { + expect(() => parseBufGenYaml(`version: true`)).toThrowError( + "Failed to parse: not a valid buf.gen.yaml file: unknown version: true", + ); + }); + it("raises error for plugins not a yaml list", () => { + expect(() => parseBufGenYaml(`version: v1\nplugins: true`)).toThrowError( + 'Failed to parse: not a valid buf.gen.yaml file: expected "plugins" to be a yaml list', + ); + }); +}); + +describe("stringifyBufGenYaml()", () => { + it("should keep comments", () => { + const str = stringifyBufGenYaml(parseBufGenYaml(goldenV2)); + expect(str).toEqual(goldenV2); + }); +}); diff --git a/packages/connect-migrate/src/lib/bufgenyaml.ts b/packages/connect-migrate/src/lib/bufgenyaml.ts new file mode 100644 index 000000000..5766cf6c2 --- /dev/null +++ b/packages/connect-migrate/src/lib/bufgenyaml.ts @@ -0,0 +1,72 @@ +// Copyright 2021-2024 The Connect Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { Document, isSeq, parseDocument, stringify } from "yaml"; +import { readFileSync, writeFileSync } from "node:fs"; + +export type BufGenYaml = Document.Parsed & { + _bufGenYaml: true; +}; + +export function readBufGenYamlFile(path: string): BufGenYaml { + let content: string; + try { + content = readFileSync(path, "utf-8"); + } catch (e) { + throw new Error( + `Failed to parse ${path}: ${e instanceof Error ? e.message : String(e)}`, + ); + } + return parseBufGenYaml(content); +} + +export function parseBufGenYaml(content: string, path?: string): BufGenYaml { + try { + const doc = parseDocument(content, { + logLevel: "silent", + }); + assertValid(doc); + return doc; + } catch (e) { + const inner = e instanceof Error ? e.message : String(e); + throw new Error( + path === undefined + ? `Failed to parse: ${inner}` + : `Failed to parse ${path}: ${inner}`, + ); + } +} + +export function stringifyBufGenYaml(bufGenYaml: BufGenYaml) { + return stringify(bufGenYaml); +} + +export function writeBufGenYamlFile(path: string, bufGenYaml: BufGenYaml) { + writeFileSync(path, stringifyBufGenYaml(bufGenYaml), "utf-8"); +} + +function assertValid(arg: Document.Parsed): asserts arg is BufGenYaml { + const version = arg.get("version"); + if (version !== "v1" && version !== "v2") { + throw new Error( + `not a valid buf.gen.yaml file: unknown version: ${String(version)}`, + ); + } + const plugins = arg.get("plugins"); + if (!isSeq(plugins)) { + throw new Error( + `not a valid buf.gen.yaml file: expected "plugins" to be a yaml list`, + ); + } +} diff --git a/packages/connect-migrate/src/lib/migrate-bufgenyaml.spec.ts b/packages/connect-migrate/src/lib/migrate-bufgenyaml.spec.ts new file mode 100644 index 000000000..99ad8816f --- /dev/null +++ b/packages/connect-migrate/src/lib/migrate-bufgenyaml.spec.ts @@ -0,0 +1,187 @@ +// Copyright 2021-2024 The Connect Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { parseBufGenYaml, stringifyBufGenYaml } from "./bufgenyaml"; +import { migrateBufGenYaml } from "./migrate-bufgenyaml"; +import type { BufGenYamlMigration } from "./migrate-bufgenyaml"; + +describe("migrateBufGenYaml()", () => { + describe("BufGenYamlPluginUpdate", () => { + const migration: BufGenYamlMigration = { + updatePlugin: { + remote: "buf.build/bufbuild/es", + from: "^1.0.0", + to: "2.0.0", + }, + }; + it("should update plugin in v2", () => { + const input = `# comment +version: v2 +inputs: + - directory: proto +plugins: + # keep + - remote: buf.build/bufbuild/es + out: src/gen + # update + - remote: buf.build/bufbuild/es:v1.10.0 + out: src/gen +`; + const expected = `# comment +version: v2 +inputs: + - directory: proto +plugins: + # keep + - remote: buf.build/bufbuild/es + out: src/gen + # update + - remote: buf.build/bufbuild/es:v2.0.0 + out: src/gen +`; + const yaml = parseBufGenYaml(input); + const updated = migrateBufGenYaml(yaml, [migration]); + expect(updated).toBeDefined(); + expect(stringifyBufGenYaml(updated ?? yaml)).toBe(expected); + }); + it("should update plugin in v1", () => { + const input = `# comment +version: v1 +plugins: + # keep + - plugin: buf.build/bufbuild/es + out: src/gen + # update + - plugin: buf.build/bufbuild/es:v1.10.0 + out: src/gen +`; + const expected = `# comment +version: v1 +plugins: + # keep + - plugin: buf.build/bufbuild/es + out: src/gen + # update + - plugin: buf.build/bufbuild/es:v2.0.0 + out: src/gen +`; + const yaml = parseBufGenYaml(input); + const updated = migrateBufGenYaml(yaml, [migration]); + expect(updated).toBeDefined(); + expect(stringifyBufGenYaml(updated ?? yaml)).toBe(expected); + }); + it("should not update up-to-date plugin in v1", () => { + const input = `version: v1 +plugins: + - plugin: buf.build/bufbuild/es:v2.99.0 + out: src/gen +`; + const yaml = parseBufGenYaml(input); + const updated = migrateBufGenYaml(yaml, [migration]); + expect(updated).toBeNull(); + }); + it("should not update up-to-date plugin in v2", () => { + const input = `version: v2 +plugins: + - remote: buf.build/bufbuild/es:v2.99.0 + out: src/gen +`; + const yaml = parseBufGenYaml(input); + const updated = migrateBufGenYaml(yaml, [migration]); + expect(updated).toBeNull(); + }); + }); + describe("BufGenYamlPluginRemoval", () => { + const migration: BufGenYamlMigration = { + removePlugin: { + local: "protoc-gen-connect-es", + remote: "buf.build/connectrpc/es", + }, + }; + it("should remove plugin from v2", () => { + const input = `# comment +version: v2 +inputs: + - directory: proto +plugins: + # keep + - local: protoc-gen-es + out: src/gen + # remove + - local: protoc-gen-connect-es + out: src/gen + # keep + - local: protoc-gen-foo + out: src/gen + # remove + - remote: buf.build/connectrpc/es + out: src/gen + # remove + - remote: buf.build/connectrpc/es:v1.4.0 + out: src/gen +`; + const expected = `# comment +version: v2 +inputs: + - directory: proto +plugins: + # keep + - local: protoc-gen-es + out: src/gen + # keep + - local: protoc-gen-foo + out: src/gen +`; + const yaml = parseBufGenYaml(input); + const updated = migrateBufGenYaml(yaml, [migration]); + expect(updated).toBeDefined(); + expect(stringifyBufGenYaml(updated ?? yaml)).toBe(expected); + }); + it("should remove plugin from v1", () => { + const input = `# comment +version: v1 +plugins: + # keep + - plugin: es + out: src/gen + # remove + - plugin: connect-es + out: src/gen + # keep + - plugin: foo + out: src/gen + # remove + - plugin: buf.build/connectrpc/es + out: src/gen + # remove + - plugin: buf.build/connectrpc/es:v1.4.0 + out: src/gen +`; + const expected = `# comment +version: v1 +plugins: + # keep + - plugin: es + out: src/gen + # keep + - plugin: foo + out: src/gen +`; + const yaml = parseBufGenYaml(input); + const updated = migrateBufGenYaml(yaml, [migration]); + expect(updated).toBeDefined(); + expect(stringifyBufGenYaml(updated ?? yaml)).toBe(expected); + }); + }); +}); diff --git a/packages/connect-migrate/src/lib/migrate-bufgenyaml.ts b/packages/connect-migrate/src/lib/migrate-bufgenyaml.ts new file mode 100644 index 000000000..53a2e91b7 --- /dev/null +++ b/packages/connect-migrate/src/lib/migrate-bufgenyaml.ts @@ -0,0 +1,214 @@ +// Copyright 2021-2024 The Connect Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { Scanned } from "./scan"; +import { PrintFn } from "./logger"; +import { + BufGenYaml, + stringifyBufGenYaml, + writeBufGenYamlFile, +} from "./bufgenyaml"; +import { isMap, isSeq } from "yaml"; +import { satisfies as semverSatisfies } from "semver"; + +interface MigrateBufGenYamlsResult { + updatedBufGenYamls: string[]; +} + +export function migrateBufGenYamls( + scanned: Scanned, + migrations: BufGenYamlMigration[], + print: PrintFn, + writeBufGenYamlFileFn: typeof writeBufGenYamlFile = writeBufGenYamlFile, +): MigrateBufGenYamlsResult { + const updatedBufGenYamls: string[] = []; + if (scanned.bufGenYamlFiles.length == 0) { + return { updatedBufGenYamls }; + } + print(`Updating buf.gen.yaml... `); + for (const { path, yaml } of scanned.bufGenYamlFiles) { + const updated = migrateBufGenYaml(yaml, migrations); + if (updated !== null) { + writeBufGenYamlFileFn(path, updated); + updatedBufGenYamls.push(path); + } + } + print(`✓\n`); + if (updatedBufGenYamls.length == 0) { + print(` No files modified.\n`); + } else { + updatedBufGenYamls.forEach((path) => print(` ${path} ✓\n`)); + } + return { updatedBufGenYamls }; +} + +export type BufGenYamlMigration = + | BufGenYamlPluginRemoval + | BufGenYamlPluginUpdate; + +type BufGenYamlPluginUpdate = { + updatePlugin: { + // e.g. buf.build/connectrpc/es + remote: string; + // semver constraint, e.g. ^1.4.0 + from: string; + // version, e.g. 1.0.0 + to: string; + }; +}; + +type BufGenYamlPluginRemoval = { + removePlugin: { + // e.g. buf.build/connectrpc/es + remote: string; + // e.g. protoc-gen-connect-es + local: string; + }; +}; + +export function migrateBufGenYaml( + yaml: BufGenYaml, + migrations: BufGenYamlMigration[], +): BufGenYaml | null { + const y = yaml.clone() as BufGenYaml; + for (const migration of migrations) { + if ("updatePlugin" in migration) { + const plugins = y.get("plugins"); + if (!isSeq(plugins)) { + continue; + } + switch (y.get("version")) { + case "v1": + for (const item of plugins.items) { + if (!isMap(item)) { + continue; + } + const plugin = item.get("plugin") ?? item.get("name"); + if (typeof plugin !== "string") { + continue; + } + if (!plugin.includes(":")) { + continue; + } + const [name, version] = plugin.split(":"); + if (name !== migration.updatePlugin.remote) { + continue; + } + if (!semverSatisfies(version, migration.updatePlugin.from)) { + continue; + } + item.set("plugin", `${name}:v${migration.updatePlugin.to}`); + } + break; + case "v2": + for (const item of plugins.items) { + if (!isMap(item)) { + continue; + } + const remote = item.get("remote"); + if (typeof remote !== "string") { + continue; + } + if (!remote.includes(":")) { + continue; + } + const [name, version] = remote.split(":"); + if (name !== migration.updatePlugin.remote) { + continue; + } + if (!semverSatisfies(version, migration.updatePlugin.from)) { + continue; + } + item.set("remote", `${name}:v${migration.updatePlugin.to}`); + } + break; + default: + throw new Error("unsupported buf.gen.yaml version"); + } + } else if ("removePlugin" in migration) { + const plugins = y.get("plugins"); + const indexToDelete: number[] = []; + if (!isSeq(plugins)) { + continue; + } + switch (y.get("version")) { + case "v1": + for (const [index, item] of plugins.items.entries()) { + if (!isMap(item)) { + continue; + } + const plugin = item.get("plugin") ?? item.get("name"); + if (typeof plugin !== "string") { + continue; + } + const removeLocal = migration.removePlugin.local.startsWith( + "protoc-gen-", + ) + ? migration.removePlugin.local.substring("protoc-gen-".length) + : migration.removePlugin.local; + if (plugin === removeLocal) { + indexToDelete.push(index); + continue; + } + if ( + plugin.includes(":") && + plugin.split(":")[0] === migration.removePlugin.remote + ) { + indexToDelete.push(index); + } else if (plugin == migration.removePlugin.remote) { + indexToDelete.push(index); + } + } + break; + case "v2": + for (const [index, item] of plugins.items.entries()) { + if (!isMap(item)) { + continue; + } + const remote = item.get("remote"); + if (typeof remote === "string") { + if ( + remote.includes(":") && + remote.split(":")[0] === migration.removePlugin.remote + ) { + indexToDelete.push(index); + } else if (remote == migration.removePlugin.remote) { + indexToDelete.push(index); + } + continue; + } + const local = item.get("local"); + if (typeof local === "string") { + if (local === migration.removePlugin.local) { + indexToDelete.push(index); + } + } + } + break; + default: + throw new Error("unsupported buf.gen.yaml version"); + } + indexToDelete.sort().reverse(); + for (const index of indexToDelete) { + plugins.delete(index); + } + } else { + throw new Error("unsupported buf.gen.yaml migration"); + } + } + if (stringifyBufGenYaml(yaml).trim() !== stringifyBufGenYaml(y).trim()) { + return y; + } + return null; +} diff --git a/packages/connect-migrate/src/lib/migrate-dependencies.spec.ts b/packages/connect-migrate/src/lib/migrate-dependencies.spec.ts new file mode 100644 index 000000000..9513fd414 --- /dev/null +++ b/packages/connect-migrate/src/lib/migrate-dependencies.spec.ts @@ -0,0 +1,320 @@ +// Copyright 2021-2024 The Connect Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { migrateDependencies } from "./migrate-dependencies"; + +describe("migrateDependencies()", function () { + it("does nothing with empty migrations", function () { + expect( + migrateDependencies( + { + dependencies: { + foo: "1.2.3", + }, + }, + [], + ), + ).toBeNull(); + }); + describe("DependencyReplacement", () => { + it("replaces nothing with different package names", function () { + expect( + migrateDependencies( + { + dependencies: { + foo: "1.2.3", + }, + }, + [ + { + from: { name: "xxx", range: "*" }, + to: { name: "bar", version: "2.0.0" }, + }, + ], + ), + ).toBeNull(); + }); + it("replaces nothing with newer version installed", () => { + expect( + migrateDependencies( + { + dependencies: { + foo: "^3.0.0", + }, + }, + [ + { + from: { name: "foo", range: "1.x" }, + to: { version: "2.0.0" }, + }, + ], + ), + ).toBeNull(); + }); + it("replaces nothing with newer version installed", () => { + expect( + migrateDependencies( + { + dependencies: { + foo: "^0.12.0", + }, + }, + [ + { + from: { name: "foo", range: "<0.9.0" }, + to: { name: "bar", version: "0.13.1" }, + }, + ], + ), + ).toBeNull(); + }); + it("replaces version", () => { + expect( + migrateDependencies( + { + dependencies: { + foo: "^1.0.0", + }, + }, + [ + { + from: { name: "foo", range: "1.x" }, + to: { version: "2.0.1" }, + }, + ], + ), + ).toEqual({ + dependencies: { + foo: "^2.0.1", + }, + }); + }); + it("replaces name", () => { + expect( + migrateDependencies( + { + dependencies: { + foo: "^1.0.0", + }, + }, + [ + { + from: { name: "foo", range: "*" }, + to: { name: "bar", version: "1.99.9" }, + }, + ], + ), + ).toEqual({ + dependencies: { + bar: "^1.0.0", + }, + }); + }); + it("replaces name and version", () => { + expect( + migrateDependencies( + { + dependencies: { + foo: "^1.0.0", + }, + }, + [ + { + from: { name: "foo", range: "*" }, + to: { name: "bar", version: "2.0.0" }, + }, + ], + ), + ).toEqual({ + dependencies: { + bar: "^2.0.0", + }, + }); + }); + it("replaces peerDependenciesMeta", () => { + expect( + migrateDependencies( + { + dependencies: { + foo: "^1.0.0", + }, + peerDependenciesMeta: { + foo: { optional: true }, + baz: { optional: true }, + }, + }, + [ + { + from: { name: "foo", range: "*" }, + to: { name: "bar", version: "1.99.9" }, + }, + ], + ), + ).toEqual({ + dependencies: { + bar: "^1.0.0", + }, + peerDependenciesMeta: { + bar: { optional: true }, + baz: { optional: true }, + }, + }); + }); + it("replaces bundledDependency", () => { + expect( + migrateDependencies( + { + dependencies: { + foo: "^1.0.0", + }, + bundledDependencies: ["foo", "baz"], + }, + [ + { + from: { name: "foo", range: "*" }, + to: { name: "bar", version: "1.99.9" }, + }, + ], + ), + ).toEqual({ + dependencies: { + bar: "^1.0.0", + }, + bundledDependencies: ["bar", "baz"], + }); + }); + }); + describe("DependencyRemoval", () => { + it("removes nothing with different package names", function () { + expect( + migrateDependencies( + { + dependencies: { + foo: "1.2.3", + }, + }, + [ + { + remove: { name: "xxx", range: "*" }, + }, + ], + ), + ).toBeNull(); + }); + it("removes nothing with newer version installed", () => { + expect( + migrateDependencies( + { + dependencies: { + foo: "^3.0.0", + }, + }, + [ + { + remove: { name: "foo", range: "1.x" }, + }, + ], + ), + ).toBeNull(); + }); + it("removes nothing with newer version installed", () => { + expect( + migrateDependencies( + { + dependencies: { + foo: "^0.12.0", + }, + }, + [ + { + remove: { name: "foo", range: "<0.9.0" }, + }, + ], + ), + ).toBeNull(); + }); + it("removes dependency", () => { + expect( + migrateDependencies( + { + dependencies: { + foo: "^1.0.0", + bar: "^1.0.0", + }, + }, + [ + { + remove: { name: "foo", range: "1.x" }, + }, + ], + ), + ).toEqual({ + dependencies: { + bar: "^1.0.0", + }, + }); + }); + it("removes peerDependenciesMeta", () => { + expect( + migrateDependencies( + { + dependencies: { + foo: "^1.0.0", + bar: "^1.0.0", + }, + peerDependenciesMeta: { + foo: { optional: true }, + bar: { optional: true }, + }, + }, + [ + { + remove: { name: "foo", range: "*" }, + }, + ], + ), + ).toEqual({ + dependencies: { + bar: "^1.0.0", + }, + peerDependenciesMeta: { + bar: { optional: true }, + }, + }); + }); + it("removes bundledDependency", () => { + expect( + migrateDependencies( + { + dependencies: { + foo: "^1.0.0", + bar: "^1.0.0", + }, + bundledDependencies: ["foo", "bar"], + }, + [ + { + remove: { name: "foo", range: "*" }, + }, + ], + ), + ).toEqual({ + dependencies: { + bar: "^1.0.0", + }, + bundledDependencies: ["bar"], + }); + }); + }); +}); diff --git a/packages/connect-migrate/src/lib/migrate-dependencies.ts b/packages/connect-migrate/src/lib/migrate-dependencies.ts new file mode 100644 index 000000000..e24c765b6 --- /dev/null +++ b/packages/connect-migrate/src/lib/migrate-dependencies.ts @@ -0,0 +1,155 @@ +// Copyright 2021-2024 The Connect Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { PackageJson } from "./package-json"; +import { + intersects as semverIntersects, + satisfies as semverSatisfies, + valid as semverValid, + validRange as semverValidRange, +} from "semver"; + +/** + * Migrate matching dependencies, removing, upgrading, or renaming them. + */ +export type DependencyMigration = DependencyReplacement | DependencyRemoval; +/** + * Replace all dependencies matching "from" with "to". + */ +type DependencyReplacement = { + from: { name: string; range: string }; + to: { name?: string; version: string }; +}; +/** + * Remove all dependencies matching name and version range. + */ +type DependencyRemoval = { + remove: { name: string; range: string }; +}; + +/** + * Migrate matching dependencies, removing, upgrading, or renaming them. + */ +export function migrateDependencies( + pkg: PackageJson, + migrations: DependencyMigration[], +): PackageJson | null { + if (migrations.some((migration) => !validateDependencyMigration(migration))) { + throw new Error("Invalid dependency migration specified"); + } + const modifiedDepNames = new Set(); + const removedDepNames = new Set(); + const replacedDepNames = new Map(); + for (const migration of migrations) { + for (const p of [ + "dependencies", + "devDependencies", + "peerDependencies", + ] as const) { + const deps = pkg[p] ?? {}; + if ("remove" in migration) { + // DependencyRemoval + migration.remove.name; + migration.remove.range; + for (const [depName, depRange] of Object.entries(deps)) { + if (depName !== migration.remove.name) { + continue; + } + if (!semverIntersects(migration.remove.range, depRange)) { + // the user's version does not match, so we skip + continue; + } + modifiedDepNames.add(depName); + removedDepNames.add(depName); + delete deps[depName]; + } + } else { + // DependencyReplacement + for (const [depName, depRange] of Object.entries(deps)) { + if (depName !== migration.from.name) { + continue; + } + if (!semverIntersects(migration.from.range, depRange)) { + // the user's version does not match, so we skip + continue; + } + modifiedDepNames.add(depName); + const newPackageName = migration.to.name ?? depName; + if (semverSatisfies(migration.to.version, depRange)) { + // The new version we want satisfies the current range of the + // dependency, so we do not modify the range. + // This is supported specifically for migrating from @bufbuild/connect@0.13.0 + // to @connectrpc@0.13.1. + deps[newPackageName] = deps[depName]; + } else { + // The new version does not satisfy the current range. + // We set our version as a caret range. + deps[newPackageName] = `^${migration.to.version}`; + } + if (newPackageName !== depName) { + // the name of the dependency has changed, we delete the old entry + delete deps[depName]; + replacedDepNames.set(depName, newPackageName); + } + } + } + } + } + // for bundled dependencies, replace names we replaced, and remove names we removed + for (const p of ["bundleDependencies", "bundledDependencies"] as const) { + const bundled = pkg[p]; + if (!Array.isArray(bundled)) { + continue; + } + pkg[p] = bundled + .map((n) => replacedDepNames.get(n) ?? n) + .filter((n) => !removedDepNames.has(n)); + } + // for peer dependency meta, replace names we replaced, and remove names we removed + const meta = pkg.peerDependenciesMeta; + if (meta !== undefined) { + for (const [n, value] of Object.entries(meta)) { + if (removedDepNames.has(n)) { + delete meta[n]; + continue; + } + const newName = replacedDepNames.get(n); + if (newName === undefined) { + continue; + } + delete meta[n]; + meta[newName] = value; + } + } + return modifiedDepNames.size > 0 ? pkg : null; +} + +/** + * Returns false if a range or version is invalid. + */ +function validateDependencyMigration(migration: DependencyMigration): boolean { + if ("remove" in migration) { + if (semverValidRange(migration.remove.range) == null) { + return false; + } + } else { + if (semverValidRange(migration.from.range) == null) { + return false; + } + if (semverValid(migration.to.version) == null) { + return false; + } + } + return true; +} diff --git a/packages/connect-migrate/src/lib/migrate-packages.ts b/packages/connect-migrate/src/lib/migrate-packages.ts index fa8c655aa..b6178e0de 100644 --- a/packages/connect-migrate/src/lib/migrate-packages.ts +++ b/packages/connect-migrate/src/lib/migrate-packages.ts @@ -16,9 +16,9 @@ import { Scanned } from "./scan"; import { PrintFn } from "./logger"; import { writePackageJsonFile } from "./package-json"; import { - DependencyReplacement, - replaceDependencies, -} from "./replace-dependencies"; + DependencyMigration, + migrateDependencies, +} from "./migrate-dependencies"; interface MigratePackagesResult { updatedPackageFiles: string[]; @@ -26,7 +26,7 @@ interface MigratePackagesResult { export function migratePackages( scanned: Scanned, - replacements: DependencyReplacement[], + dependencyMigrations: DependencyMigration[], print: PrintFn, writePackageJsonFileFn: typeof writePackageJsonFile = writePackageJsonFile, ): MigratePackagesResult { @@ -36,7 +36,7 @@ export function migratePackages( } print(`Updating packages... `); for (const { path, pkg } of scanned.packageFiles) { - const updated = replaceDependencies(pkg, replacements); + const updated = migrateDependencies(pkg, dependencyMigrations); if (updated !== null) { writePackageJsonFileFn(path, updated); updatedPackageFiles.push(path); diff --git a/packages/connect-migrate/src/lib/migrate-source-file.spec.ts b/packages/connect-migrate/src/lib/migrate-source-file.spec.ts new file mode 100644 index 000000000..28db3dd7c --- /dev/null +++ b/packages/connect-migrate/src/lib/migrate-source-file.spec.ts @@ -0,0 +1,89 @@ +// Copyright 2021-2024 The Connect Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { updateSourceFileInMemory } from "./migrate-source-files"; +import j from "jscodeshift"; + +describe("updateSourceFileInMemory", function () { + it("should return modified = false for unmodified", () => { + const transform: j.Transform = (file, { j }) => { + return j(file.source).toSource(); + }; + const result = updateSourceFileInMemory( + transform, + ` + const foo = 123; + `, + "foo.ts", + ); + expect(result.modified).toBe(false); + }); + it("should parse js", () => { + const transform: j.Transform = (file, { j }) => { + return j(file.source) + .findVariableDeclarators("foo") + .renameTo("bar") + .toSource(); + }; + const result = updateSourceFileInMemory( + transform, + ` + const foo = 123; + `, + "foo.ts", + ); + expect(result.modified).toBe(true); + expect(result.source).toBe(` + const bar = 123; + `); + }); + it("should parse ts", () => { + const transform: j.Transform = (file, { j }) => { + return j(file.source) + .findVariableDeclarators("foo") + .renameTo("bar") + .toSource(); + }; + const result = updateSourceFileInMemory( + transform, + ` + const foo: number = 123; + `, + "foo.ts", + ); + expect(result.modified).toBe(true); + expect(result.source).toBe(` + const bar: number = 123; + `); + }); + it("should parse tsx", () => { + const transform: j.Transform = (file, { j }) => { + return j(file.source) + .findVariableDeclarators("foo") + .renameTo("bar") + .toSource(); + }; + const result = updateSourceFileInMemory( + transform, + ` + const foo = () => (body); + `, + "foo.tsx", + ); + expect(result.modified).toBe(true); + expect(result.source).toBe(` + const bar = () => (body); + `); + }); +}); diff --git a/packages/connect-migrate/src/lib/migrate-source-files.ts b/packages/connect-migrate/src/lib/migrate-source-files.ts index a96858926..77dbacaf1 100644 --- a/packages/connect-migrate/src/lib/migrate-source-files.ts +++ b/packages/connect-migrate/src/lib/migrate-source-files.ts @@ -13,9 +13,9 @@ // limitations under the License. import { Scanned } from "./scan"; -import j from "jscodeshift"; import { Logger, PrintFn } from "./logger"; -import { updateSourceFile } from "./update-source-file"; +import j, { Transform } from "jscodeshift"; +import { readFileSync, writeFileSync } from "node:fs"; interface MigrateSourceFilesResult { sourceFileErrors: number; @@ -57,3 +57,69 @@ export function migrateSourceFiles( sourceFileErrors, }; } + +const codeshiftTs = j.withParser("ts"); +const codeshiftTsx = j.withParser("tsx"); +const codeshiftBabel = j.withParser("babel"); + +interface UpdateSourceFileResult { + ok: boolean; + modified: boolean; +} + +export function updateSourceFile( + transform: Transform, + path: string, + logger?: Logger, +): UpdateSourceFileResult { + logger?.log(`transform ${path}`); + try { + const source = readFileSync(path, "utf8"); + const result = updateSourceFileInMemory(transform, source, path); + if (!result.modified) { + logger?.log(`skipped`); + return { ok: true, modified: false }; + } + writeFileSync(path, result.source, "utf-8"); + logger?.log(`modified`); + return { ok: true, modified: true }; + } catch (e) { + logger?.error(`caught error: ${String(e)}`); + if (e instanceof Error && e.stack !== undefined) { + logger?.error(e.stack); + } + return { ok: false, modified: false }; + } +} + +export function updateSourceFileInMemory( + transform: Transform, + source: string, + path: string, +): { modified: boolean; source: string } { + let jscs: j.JSCodeshift; + if (path.endsWith(".tsx")) { + jscs = codeshiftTsx; + } else if (path.endsWith(".ts")) { + jscs = codeshiftTs; + } else { + jscs = codeshiftBabel; + } + const result = transform( + { path, source }, + { + jscodeshift: jscs, + j: jscs, + stats: () => {}, + report: () => {}, + }, + {}, + ); + if (typeof result != "string") { + return { modified: false, source }; + } + if (result.trim() === source.trim()) { + return { modified: false, source }; + } + return { modified: true, source: result }; +} diff --git a/packages/connect-migrate/src/lib/replace-dependencies.spec.ts b/packages/connect-migrate/src/lib/replace-dependencies.spec.ts deleted file mode 100644 index 65fa3b0b7..000000000 --- a/packages/connect-migrate/src/lib/replace-dependencies.spec.ts +++ /dev/null @@ -1,144 +0,0 @@ -// Copyright 2021-2024 The Connect Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import { replaceDependencies } from "./replace-dependencies"; - -describe("replaceDependencies()", function () { - it("replaces nothing with empty replacements", function () { - expect( - replaceDependencies( - { - dependencies: { - foo: "1.2.3", - }, - }, - [], - ), - ).toBeNull(); - }); - it("replaces nothing with different package names", function () { - expect( - replaceDependencies( - { - dependencies: { - foo: "1.2.3", - }, - }, - [ - { - from: { name: "xxx", range: "*" }, - to: { name: "bar", version: "2.0.0" }, - }, - ], - ), - ).toBeNull(); - }); - it("replaces nothing with newer version installed", () => { - expect( - replaceDependencies( - { - dependencies: { - foo: "^3.0.0", - }, - }, - [ - { - from: { name: "foo", range: "1.x" }, - to: { version: "2.0.0" }, - }, - ], - ), - ).toBeNull(); - }); - it("replaces nothing with newer version installed", () => { - expect( - replaceDependencies( - { - dependencies: { - foo: "^0.12.0", - }, - }, - [ - { - from: { name: "foo", range: "<0.9.0" }, - to: { name: "bar", version: "0.13.1" }, - }, - ], - ), - ).toBeNull(); - }); - it("replaces version", () => { - expect( - replaceDependencies( - { - dependencies: { - foo: "^1.0.0", - }, - }, - [ - { - from: { name: "foo", range: "1.x" }, - to: { version: "2.0.1" }, - }, - ], - ), - ).toEqual({ - dependencies: { - foo: "^2.0.1", - }, - }); - }); - it("replaces name", () => { - expect( - replaceDependencies( - { - dependencies: { - foo: "^1.0.0", - }, - }, - [ - { - from: { name: "foo", range: "*" }, - to: { name: "bar", version: "1.99.9" }, - }, - ], - ), - ).toEqual({ - dependencies: { - bar: "^1.0.0", - }, - }); - }); - it("replaces name and version", () => { - expect( - replaceDependencies( - { - dependencies: { - foo: "^1.0.0", - }, - }, - [ - { - from: { name: "foo", range: "*" }, - to: { name: "bar", version: "2.0.0" }, - }, - ], - ), - ).toEqual({ - dependencies: { - bar: "^2.0.0", - }, - }); - }); -}); diff --git a/packages/connect-migrate/src/lib/replace-dependencies.ts b/packages/connect-migrate/src/lib/replace-dependencies.ts deleted file mode 100644 index 5cf2cdebe..000000000 --- a/packages/connect-migrate/src/lib/replace-dependencies.ts +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright 2021-2024 The Connect Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import type { PackageJson } from "./package-json"; -import { - intersects as semverIntersects, - satisfies as semverSatisfies, -} from "semver"; - -export type DependencyReplacement = { - from: { name: string; range: string }; - to: { name?: string; version: string }; -}; - -/** - * Replace all dependencies matching "from" with "to". - */ -export function replaceDependencies( - pkg: PackageJson, - replacements: DependencyReplacement[], -): PackageJson | null { - const modifiedPackageNames = new Set(); - const replacedPackageNames = new Map(); - // replace dependencies - for (const replacement of replacements) { - for (const p of [ - "dependencies", - "devDependencies", - "peerDependencies", - ] as const) { - const deps = pkg[p] ?? {}; - for (const [packageName, versionRange] of Object.entries(deps)) { - if (packageName !== replacement.from.name) { - continue; - } - if (!semverIntersects(replacement.from.range, versionRange)) { - // the user's version does not match, so we skip - continue; - } - modifiedPackageNames.add(packageName); - const newPackageName = replacement.to.name ?? packageName; - if (semverSatisfies(replacement.to.version, versionRange)) { - // The new version we want satisfies the current range of the - // dependency, so we do not modify the range. - // This is supported specifically for migrating from @bufbuild/connect@0.13.0 - // to @connectrpc@0.13.1. - deps[newPackageName] = deps[packageName]; - } else { - // The new version does not satisfy the current range. - // We set our version as a caret range. - deps[newPackageName] = `^${replacement.to.version}`; - } - if (newPackageName !== packageName) { - // the name of the dependency has changed, we delete the old entry - delete deps[packageName]; - replacedPackageNames.set(packageName, newPackageName); - } - } - } - } - // replace bundled dependencies, but only for package names we replaced - for (const p of ["bundleDependencies", "bundledDependencies"] as const) { - const bundled = pkg[p]; - if (!Array.isArray(bundled)) { - continue; - } - pkg[p] = bundled.map((n) => replacedPackageNames.get(n) ?? n); - } - // replace peer dependency meta, but only for package names we replaced - const meta = pkg.peerDependenciesMeta; - if (meta !== undefined) { - for (const [n, value] of Object.entries(meta)) { - const newName = replacedPackageNames.get(n); - if (newName === undefined) { - continue; - } - delete meta[n]; - meta[newName] = value; - } - } - return modifiedPackageNames.size > 0 ? pkg : null; -} diff --git a/packages/connect-migrate/src/lib/scan.ts b/packages/connect-migrate/src/lib/scan.ts index 192fab4a1..ee352ab02 100644 --- a/packages/connect-migrate/src/lib/scan.ts +++ b/packages/connect-migrate/src/lib/scan.ts @@ -16,6 +16,7 @@ import { sync } from "fast-glob"; import { basename } from "node:path"; import { Logger, PrintFn } from "./logger"; import { PackageJson, readPackageJsonFile } from "./package-json"; +import { BufGenYaml, readBufGenYamlFile } from "./bufgenyaml"; const packageFilename = "package.json"; export const lockFilenameNpm = "package-lock.json"; @@ -28,6 +29,7 @@ export interface Scanned { packageFiles: { path: string; pkg: PackageJson }[]; lockFiles: string[]; sourceFiles: string[]; + bufGenYamlFiles: { path: string; yaml: BufGenYaml }[]; } export interface ScanError { @@ -59,6 +61,9 @@ export function scan( "**/*.cjs", "**/*.mjs", "**/*.tsx", + // buf.gen.yaml files + "**/buf.gen.yaml", + "**/buf.*.gen.yaml", ], { ignore: ["**/node_modules/**", ...ignorePatterns], @@ -67,17 +72,29 @@ export function scan( ); const lockFiles = all.filter((path) => lockFilename.includes(basename(path))); const packagePaths = all.filter((path) => basename(path) === packageFilename); + const bufGenYamlPaths = all.filter( + (path) => + basename(path).startsWith("buf.") && basename(path).endsWith(".gen.yaml"), + ); const sourceFiles = all.filter( - (path) => !lockFiles.includes(path) && !packagePaths.includes(path), + (path) => + !lockFiles.includes(path) && + !packagePaths.includes(path) && + !bufGenYamlPaths.includes(path), ); const packageFiles = packagePaths.map((path) => ({ path, pkg: readPackageJsonFile(path), })); + const bufGenYamlFiles = bufGenYamlPaths.map((path) => ({ + path, + yaml: readBufGenYamlFile(path), + })); print(`✓\n`); logger?.log(`sourceFiles: ${JSON.stringify(sourceFiles)}`); logger?.log(`packageFiles: ${JSON.stringify(packageFiles)}`); logger?.log(`lockFiles: ${JSON.stringify(lockFiles)}`); + logger?.log(`bufGenYamlPaths: ${JSON.stringify(bufGenYamlPaths)}`); print( `${packageFiles.length.toString().padStart(5)} package.json ${ packageFiles.length == 1 ? "file" : "files" @@ -93,7 +110,16 @@ export function scan( sourceFiles.length == 1 ? "file" : "files" }\n`, ); - if (packageFiles.length === 0 && sourceFiles.length === 0) { + print( + `${bufGenYamlFiles.length.toString().padStart(5)} buf.gen.yaml ${ + bufGenYamlFiles.length == 1 ? "file" : "files" + }\n`, + ); + if ( + packageFiles.length === 0 && + sourceFiles.length === 0 && + bufGenYamlFiles.length === 0 + ) { return { ok: false, errorMessage: `No files to process. Make sure to run the command in a JavaScript or TypeScript project.\n`, @@ -104,5 +130,6 @@ export function scan( lockFiles, packageFiles, sourceFiles, + bufGenYamlFiles, }; } diff --git a/packages/connect-migrate/src/lib/update-source-file.ts b/packages/connect-migrate/src/lib/update-source-file.ts deleted file mode 100644 index 022d161d0..000000000 --- a/packages/connect-migrate/src/lib/update-source-file.ts +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2021-2024 The Connect Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import jscodeshift from "jscodeshift/src/core"; -import { Transform } from "jscodeshift"; -import { Logger } from "./logger"; -import { readFileSync, writeFileSync } from "node:fs"; - -const codeshiftTs = jscodeshift.withParser("ts"); -const codeshiftTsx = jscodeshift.withParser("tsx"); -const codeshiftBabel = jscodeshift.withParser("babel"); - -interface UpdateSourceFileResult { - ok: boolean; - modified: boolean; -} - -export function updateSourceFile( - transform: Transform, - path: string, - logger?: Logger, -): UpdateSourceFileResult { - logger?.log(`transform ${path}`); - let jscs: jscodeshift.JSCodeshift; - if (path.endsWith(".tsx")) { - jscs = codeshiftTsx; - } else if (path.endsWith(".ts")) { - jscs = codeshiftTs; - } else { - jscs = codeshiftBabel; - } - try { - const source = readFileSync(path, "utf8"); - const result = transform( - { path, source }, - { - jscodeshift: jscs, - j: jscs, - stats: () => {}, - report: () => {}, - }, - {}, - ); - if (typeof result != "string") { - logger?.log(`skipped`); - return { ok: true, modified: false }; - } - if (result.trim() === source.trim()) { - logger?.log(`not modified`); - return { ok: true, modified: false }; - } - writeFileSync(path, result, "utf-8"); - logger?.log(`modified`); - return { ok: true, modified: true }; - } catch (e) { - logger?.error(`caught error: ${String(e)}`); - if (e instanceof Error && e.stack !== undefined) { - logger?.error(e.stack); - } - return { ok: false, modified: false }; - } -} diff --git a/packages/connect-migrate/src/migration.ts b/packages/connect-migrate/src/migration.ts index 6840df50c..d87f254f2 100644 --- a/packages/connect-migrate/src/migration.ts +++ b/packages/connect-migrate/src/migration.ts @@ -15,9 +15,10 @@ import { Scanned } from "./lib/scan"; import { CommandLineArgs } from "./arguments"; import { Logger, PrintFn } from "./lib/logger"; -import { updateSourceFile } from "./lib/update-source-file"; +import { updateSourceFile } from "./lib/migrate-source-files"; import { writePackageJsonFile } from "./lib/package-json"; import { runInstall } from "./lib/run"; +import { writeBufGenYamlFile } from "./lib/bufgenyaml"; export interface Migration { applicable(scanned: Scanned): boolean; @@ -31,6 +32,7 @@ export interface MigrateOptions { logger?: Logger; updateSourceFileFn?: typeof updateSourceFile; writePackageJsonFileFn?: typeof writePackageJsonFile; + writeBufGenYamlFileFn?: typeof writeBufGenYamlFile; runInstallFn?: typeof runInstall; } diff --git a/packages/connect-migrate/src/migrations/v0.13.1-transform.spec.ts b/packages/connect-migrate/src/migrations/v0.13.1-transform.spec.ts index cbcf66680..63bd65ccd 100644 --- a/packages/connect-migrate/src/migrations/v0.13.1-transform.spec.ts +++ b/packages/connect-migrate/src/migrations/v0.13.1-transform.spec.ts @@ -12,67 +12,60 @@ // See the License for the specific language governing permissions and // limitations under the License. -import jscodeshift from "jscodeshift"; import transform from "./v0.13.1-transform"; +import { updateSourceFileInMemory } from "../lib/migrate-source-files"; -function t( - source: string, - parser: "tsx" | "babel" | "ts" | "babylon" | "flow" = "tsx", -) { - const shift = jscodeshift.withParser(parser); - return transform( - { path: "test-file", source }, - { - jscodeshift: shift, - j: shift, - stats: () => {}, - report: () => {}, - }, - {}, - ); -} - -describe("modify-imports", () => { +describe("v0.13.1 transform", () => { it("should modify import", () => { - const got = `import a from "@bufbuild/connect";`; - const want = `import a from "@connectrpc/connect";`; - expect(t(got)?.trim()).toBe(want.trim()); + const input = `import a from "@bufbuild/connect";`; + const output = `import a from "@connectrpc/connect";`; + const result = updateSourceFileInMemory(transform, input, "foo.ts"); + expect(result.source).toBe(output); }); it("should modify type imports", () => { - const got = `import type {a} from "@bufbuild/connect";`; - const want = `import type {a} from "@connectrpc/connect";`; - expect(t(got)?.trim()).toBe(want.trim()); + const input = `import type {a} from "@bufbuild/connect";`; + const output = `import type {a} from "@connectrpc/connect";`; + const result = updateSourceFileInMemory(transform, input, "foo.ts"); + expect(result.source).toBe(output); }); it("should modify import with single quotes", () => { - const got = `import a from '@bufbuild/connect';`; - const want = `import a from '@connectrpc/connect';`; - expect(t(got)?.trim()).toBe(want.trim()); + const input = `import a from '@bufbuild/connect';`; + const output = `import a from '@connectrpc/connect';`; + const result = updateSourceFileInMemory(transform, input, "foo.ts"); + expect(result.source).toBe(output); }); it("should modify subpath import", () => { - const got = `import a from "@bufbuild/connect/protocol";`; - const want = `import a from "@connectrpc/connect/protocol";`; - expect(t(got)?.trim()).toBe(want.trim()); + const input = `import a from "@bufbuild/connect/protocol";`; + const output = `import a from "@connectrpc/connect/protocol";`; + const result = updateSourceFileInMemory(transform, input, "foo.ts"); + expect(result.source).toBe(output); }); it("should not modify irrelevant import", () => { - const got = `import a from "@foobar/connect";`; - expect(t(got)).toBe(got); + const input = `import a from "@foobar/connect";`; + const output = input; + const result = updateSourceFileInMemory(transform, input, "foo.ts"); + expect(result.source).toBe(output); }); it("should modify require", () => { - const got = `const a = require("@bufbuild/connect");`; - const want = `const a = require("@connectrpc/connect");`; - expect(t(got)?.trim()).toBe(want.trim()); + const input = `const a = require("@bufbuild/connect");`; + const output = `const a = require("@connectrpc/connect");`; + const result = updateSourceFileInMemory(transform, input, "foo.ts"); + expect(result.source).toBe(output); }); it("should not modify irrelevant require", () => { - const got = `const a = require("@foobar/connect");`; - expect(t(got)).toBe(got); + const input = `const a = require("@foobar/connect");`; + const output = input; + const result = updateSourceFileInMemory(transform, input, "foo.ts"); + expect(result.source).toBe(output); }); it("should modify require with single quotes", () => { - const got = `const a = require('@bufbuild/connect');`; - const want = `const a = require('@connectrpc/connect');`; - expect(t(got)?.trim()).toBe(want.trim()); + const input = `const a = require('@bufbuild/connect');`; + const output = `const a = require('@connectrpc/connect');`; + const result = updateSourceFileInMemory(transform, input, "foo.ts"); + expect(result.source).toBe(output); }); it("should parse generics using the ts parser", () => { - const got = ` + const input = ` async function doSomething() { return >{ stream: false, @@ -81,7 +74,7 @@ describe("modify-imports", () => { trailer, }; }`; - const want = ` + const output = ` async function doSomething() { return >{ stream: false, @@ -90,6 +83,7 @@ describe("modify-imports", () => { trailer, }; }`; - expect(t(got, "ts")?.trim()).toBe(want.trim()); + const result = updateSourceFileInMemory(transform, input, "foo.ts"); + expect(result.source).toBe(output); }); }); diff --git a/packages/connect-migrate/src/migrations/v0.13.1.spec.ts b/packages/connect-migrate/src/migrations/v0.13.1.spec.ts index 88e48ebbf..c2661c79c 100644 --- a/packages/connect-migrate/src/migrations/v0.13.1.spec.ts +++ b/packages/connect-migrate/src/migrations/v0.13.1.spec.ts @@ -12,28 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. -import { valid, validRange } from "semver"; import { targetVersionConnectEs, targetVersionConnectQuery, - dependencyReplacements, v0_13_1, } from "./v0.13.1"; import { PackageJson } from "../lib/package-json"; import { MigrateOptions } from "../migration"; -describe("dependencyReplacements", function () { - dependencyReplacements.forEach((r, index) => { - describe(`dependencyReplacements.${index}`, function () { - it("should have valid range and version", () => { - expect(validRange(r.from.range)).not.toBeNull(); - expect(valid(r.to.version)).not.toBeNull(); - }); - }); - }); -}); - -describe("migration", function () { +describe("migration to v0.13.1", function () { const packageJsonWritten: { path: string; pkg: PackageJson }[] = []; const lockFilesUpdated: string[] = []; let opt: MigrateOptions; @@ -46,6 +33,7 @@ describe("migration", function () { lockFiles: ["package-lock.json"], sourceFiles: [], packageFiles: [], + bufGenYamlFiles: [], }, args: { ok: true, diff --git a/packages/connect-migrate/src/migrations/v0.13.1.ts b/packages/connect-migrate/src/migrations/v0.13.1.ts index 28c6e658a..0a4203181 100644 --- a/packages/connect-migrate/src/migrations/v0.13.1.ts +++ b/packages/connect-migrate/src/migrations/v0.13.1.ts @@ -18,11 +18,13 @@ import { MigrateError, MigrateSuccess, Migration } from "../migration"; import { runInstall } from "../lib/run"; import { writePackageJsonFile } from "../lib/package-json"; import { - DependencyReplacement, - replaceDependencies, -} from "../lib/replace-dependencies"; -import { updateSourceFile } from "../lib/update-source-file"; -import { migrateSourceFiles } from "../lib/migrate-source-files"; + DependencyMigration, + migrateDependencies, +} from "../lib/migrate-dependencies"; +import { + migrateSourceFiles, + updateSourceFile, +} from "../lib/migrate-source-files"; import { migratePackages } from "../lib/migrate-packages"; import { migrateLockFiles } from "../lib/migrate-lock-files"; @@ -43,7 +45,7 @@ const oldPluginReplacement = { name: "@connectrpc/protoc-gen-connect-es", version: targetVersionConnectEs, }, -} satisfies DependencyReplacement; +} satisfies DependencyMigration; /** * v0.9.0 dropped several exports from @bufbuild/connect-web that had @@ -52,12 +54,12 @@ const oldPluginReplacement = { * Since this command cannot currently modify the imports accordingly, * it will abort the migration unless the --force flag is set. */ -const removedWebExportReplacement: DependencyReplacement = { +const removedWebExportReplacement: DependencyMigration = { from: { name: "@bufbuild/connect-web", range: "<0.9.0" }, to: { name: "@connectrpc/connect-web", version: targetVersionConnectEs }, }; -export const dependencyReplacements: DependencyReplacement[] = [ +const dependencyMigrations: DependencyMigration[] = [ oldPluginReplacement, removedWebExportReplacement, { @@ -133,7 +135,7 @@ export const v0_13_1: Migration = { applicable(scanned: Scanned) { return scanned.packageFiles.some( ({ pkg }) => - replaceDependencies(structuredClone(pkg), dependencyReplacements) !== + migrateDependencies(structuredClone(pkg), dependencyMigrations) !== null, ); }, @@ -151,7 +153,7 @@ export const v0_13_1: Migration = { const oldPluginUsed = scanned.packageFiles .filter( ({ pkg }) => - replaceDependencies(structuredClone(pkg), [ + migrateDependencies(structuredClone(pkg), [ oldPluginReplacement, ]) !== null, ) @@ -167,7 +169,7 @@ export const v0_13_1: Migration = { const removedWebExportsUsed = scanned.packageFiles .filter( ({ pkg }) => - replaceDependencies(structuredClone(pkg), [ + migrateDependencies(structuredClone(pkg), [ removedWebExportReplacement, ]) !== null, ) @@ -192,7 +194,7 @@ export const v0_13_1: Migration = { const { updatedPackageFiles } = migratePackages( scanned, - dependencyReplacements, + dependencyMigrations, print, writePackageJsonFileFn, ); diff --git a/packages/connect-migrate/src/migrations/v1.6.0.spec.ts b/packages/connect-migrate/src/migrations/v1.6.0.spec.ts index 5e1823327..c75f1bfca 100644 --- a/packages/connect-migrate/src/migrations/v1.6.0.spec.ts +++ b/packages/connect-migrate/src/migrations/v1.6.0.spec.ts @@ -29,6 +29,7 @@ describe("migration", function () { lockFiles: ["package-lock.json"], sourceFiles: [], packageFiles: [], + bufGenYamlFiles: [], }, args: { ok: true, @@ -80,8 +81,6 @@ describe("migration", function () { ]; expect(v1_6_0.applicable(opt.scanned)).toBeTrue(); }); - }); - describe("should not be applicable", function () { it("before 1.6.0", () => { opt.scanned.packageFiles = [ { @@ -93,8 +92,10 @@ describe("migration", function () { }, }, ]; - expect(v1_6_0.applicable(opt.scanned)).toBeFalse(); + expect(v1_6_0.applicable(opt.scanned)).toBeTrue(); }); + }); + describe("should not be applicable", function () { it("from 2.0.0", () => { opt.scanned.packageFiles = [ { diff --git a/packages/connect-migrate/src/migrations/v1.6.0.ts b/packages/connect-migrate/src/migrations/v1.6.0.ts index 20928e400..76db88662 100644 --- a/packages/connect-migrate/src/migrations/v1.6.0.ts +++ b/packages/connect-migrate/src/migrations/v1.6.0.ts @@ -15,8 +15,10 @@ import type { Scanned } from "../lib/scan"; import replaceCalls from "./v1.6.0-transform"; import type { MigrateError, MigrateSuccess, Migration } from "../migration"; -import { updateSourceFile } from "../lib/update-source-file"; -import { migrateSourceFiles } from "../lib/migrate-source-files"; +import { + migrateSourceFiles, + updateSourceFile, +} from "../lib/migrate-source-files"; import * as semver from "semver"; /** @@ -77,7 +79,8 @@ function getMatchingPackages(packageFiles: Scanned["packageFiles"]) { if (minVersion === null) { return false; } - return semver.satisfies(minVersion, "^1.6.0"); + // v2 migration will run next so we update all v1 versions. + return semver.satisfies(minVersion, "^1.0.0"); }) ) { matched.push(packageFile); diff --git a/packages/connect-migrate/src/migrations/v2.0.0-transform.spec.ts b/packages/connect-migrate/src/migrations/v2.0.0-transform.spec.ts new file mode 100644 index 000000000..84fddd952 --- /dev/null +++ b/packages/connect-migrate/src/migrations/v2.0.0-transform.spec.ts @@ -0,0 +1,61 @@ +// Copyright 2021-2024 The Connect Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { updateSourceFileInMemory } from "../lib/migrate-source-files"; +import transform from "./v2.0.0-transform"; + +describe("v2.0.0 transform", () => { + it("should modify import from *_connect.js to *_pb.js", () => { + const input = `import { ElizaService } from "./gen/eliza_connect.js";`; + const output = `import { ElizaService } from "./gen/eliza_pb.js";`; + const result = updateSourceFileInMemory(transform, input, "foo.ts"); + expect(result.source).toBe(output); + }); + it("should modify import from *_connect to *_pb", () => { + const input = `import { ElizaService } from "./gen/eliza_connect";`; + const output = `import { ElizaService } from "./gen/eliza_pb";`; + const result = updateSourceFileInMemory(transform, input, "foo.ts"); + expect(result.source).toBe(output); + }); + it("should modify import from *_connect.ts to *_pb.ts", () => { + const input = `import { ElizaService } from "./gen/eliza_connect.ts";`; + const output = `import { ElizaService } from "./gen/eliza_pb.ts";`; + const result = updateSourceFileInMemory(transform, input, "foo.ts"); + expect(result.source).toBe(output); + }); + it("should modify js", () => { + const input = `import { ElizaService } from "./gen/eliza_connect.js";`; + const output = `import { ElizaService } from "./gen/eliza_pb.js";`; + const result = updateSourceFileInMemory(transform, input, "foo.js"); + expect(result.source).toBe(output); + }); + it("should modify tsx", () => { + const input = `import { ElizaService } from "./gen/eliza_connect.js";`; + const output = `import { ElizaService } from "./gen/eliza_pb.js";`; + const result = updateSourceFileInMemory(transform, input, "foo.tsx"); + expect(result.source).toBe(output); + }); + it("should not care about existing imports", () => { + const input = ` + import { ElizaService } from "./gen/eliza_connect.js"; + import { Foo } from "./gen/eliza_pb.js"; + `; + const output = ` + import { ElizaService } from "./gen/eliza_pb.js"; + import { Foo } from "./gen/eliza_pb.js"; + `; + const result = updateSourceFileInMemory(transform, input, "foo.ts"); + expect(result.source).toBe(output); + }); +}); diff --git a/packages/connect-migrate/src/migrations/v2.0.0-transform.ts b/packages/connect-migrate/src/migrations/v2.0.0-transform.ts new file mode 100644 index 000000000..6fadaf63e --- /dev/null +++ b/packages/connect-migrate/src/migrations/v2.0.0-transform.ts @@ -0,0 +1,74 @@ +// Copyright 2021-2024 The Connect Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import j from "jscodeshift"; + +const replacements = [ + ["_connect", "_pb"], + ["_connect.js", "_pb.js"], + ["_connect.ts", "_pb.ts"], +]; + +const transform: j.Transform = (file, { j }, options) => { + const root = j(file.source); + const importPaths = root.find(j.ImportDeclaration); + if (importPaths.length == 0) { + // no imports in this file + return root.toSource(); + } + let importModified = false; + importPaths.forEach((path) => { + if (typeof path.value.source.value === "string") { + const sourceValue = path.value.source.value; + for (const [old, repl] of replacements) { + if (sourceValue.endsWith(old)) { + path.value.source.value = + sourceValue.substring(0, sourceValue.length - old.length) + repl; + importModified = true; + } + } + } + }); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- eslint is unaware of forEach callback + if (!importModified) { + // no relevant imports in this file + return root.toSource(); + } + return root.toSource( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument -- passing the printOptions onto toSource is safe + options.printOptions ?? { + quote: determineQuoteStyle(importPaths), + }, + ); +}; + +function determineQuoteStyle( + importPaths: j.Collection, +): "double" | "single" { + let nodePath: unknown; + if (importPaths.length > 0) { + nodePath = importPaths.get("source", "extra", "raw") as unknown; + } + if ( + typeof nodePath == "object" && + nodePath != null && + "value" in nodePath && + typeof nodePath.value == "string" + ) { + return nodePath.value.startsWith("'") ? "single" : "double"; + } + return "double"; +} + +export default transform; diff --git a/packages/connect-migrate/src/migrations/v2.0.0.spec.ts b/packages/connect-migrate/src/migrations/v2.0.0.spec.ts new file mode 100644 index 000000000..2e74f1272 --- /dev/null +++ b/packages/connect-migrate/src/migrations/v2.0.0.spec.ts @@ -0,0 +1,446 @@ +// Copyright 2021-2024 The Connect Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { + targetVersionConnectEs, + targetVersionConnectPlaywright, + targetVersionConnectQuery, + targetVersionProtobufEs, + v2_0_0, +} from "./v2.0.0"; +import { PackageJson } from "../lib/package-json"; +import { MigrateOptions } from "../migration"; +import { parseBufGenYaml, stringifyBufGenYaml } from "../lib/bufgenyaml"; + +describe("migration to v2.0.0", function () { + const packageJsonWritten: { path: string; pkg: PackageJson }[] = []; + const bufGenYamlWritten: { path: string; yaml: string }[] = []; + const lockFilesUpdated: string[] = []; + let opt: MigrateOptions; + beforeEach(function () { + packageJsonWritten.splice(0); + lockFilesUpdated.splice(0); + bufGenYamlWritten.splice(0); + opt = { + scanned: { + ok: true, + lockFiles: ["package-lock.json"], + sourceFiles: [], + packageFiles: [], + bufGenYamlFiles: [], + }, + args: { + ok: true, + help: false, + version: false, + ignorePatterns: [], + noInstall: false, + forceUpdate: false, + }, + print: () => { + // + }, + updateSourceFileFn: () => ({ + ok: true, + modified: false, + }), + writePackageJsonFileFn: (path: string, pkg: PackageJson) => + packageJsonWritten.push({ path, pkg }), + writeBufGenYamlFileFn: (path, yaml) => + bufGenYamlWritten.push({ path, yaml: stringifyBufGenYaml(yaml) }), + runInstallFn: (lockfilePath) => { + lockFilesUpdated.push(lockfilePath); + return true; + }, + }; + }); + describe("for protobuf-es v1", () => { + beforeEach(function () { + opt.scanned.packageFiles = [ + { + path: "package.json", + pkg: { + dependencies: { + "@bufbuild/protobuf": "^1.10.0", + "@bufbuild/protoplugin": "^1.10.0", + "@bufbuild/protoc-gen-es": "^1.10.0", + }, + }, + }, + ]; + opt.scanned.bufGenYamlFiles = [ + { + path: "buf.gen.yaml", + yaml: parseBufGenYaml( + `version: v2 +plugins: + - remote: buf.build/bufbuild/es:v1.10.0 + out: src/gen +`, + ), + }, + ]; + }); + it("should be applicable", () => { + expect(v2_0_0.applicable(opt.scanned)).toBeTrue(); + }); + it("should migrate packages", () => { + const result = v2_0_0.migrate(opt); + expect(result).toEqual({ + ok: true, + }); + expect(packageJsonWritten.length).toBe(1); + expect(packageJsonWritten[0].pkg).toEqual({ + dependencies: { + "@bufbuild/protobuf": `^${targetVersionProtobufEs}`, + "@bufbuild/protoplugin": `^${targetVersionProtobufEs}`, + "@bufbuild/protoc-gen-es": `^${targetVersionProtobufEs}`, + }, + }); + expect(lockFilesUpdated.length).toBe(1); + }); + it("should migrate buf.gen.yaml", () => { + const result = v2_0_0.migrate(opt); + expect(result).toEqual({ + ok: true, + }); + expect(bufGenYamlWritten.length).toBe(1); + expect(bufGenYamlWritten[0]?.yaml).toEqual(`version: v2 +plugins: + - remote: buf.build/bufbuild/es:v2.2.0 + out: src/gen +`); + }); + }); + describe("for connect-es v1", () => { + beforeEach(function () { + opt.scanned.packageFiles = [ + { + path: "package.json", + pkg: { + dependencies: { + "@connectrpc/connect": "^1.4.0", + "@connectrpc/connect-express": "^1.4.0", + "@connectrpc/connect-fastify": "^1.4.0", + "@connectrpc/connect-next": "^1.4.0", + "@connectrpc/connect-node": "^1.4.0", + "@connectrpc/connect-web": "^1.4.0", + "@connectrpc/protoc-gen-connect-es": "^1.4.0", + }, + }, + }, + ]; + opt.scanned.bufGenYamlFiles = [ + { + path: "buf.gen.yaml", + yaml: parseBufGenYaml( + `version: v2 +plugins: + - local: es + out: src/gen + - remote: buf.build/connectrpc/es + out: src/gen + - remote: buf.build/connectrpc/es:v1.4.0 + out: src/gen +`, + "buf.gen.yaml", + ), + }, + ]; + }); + it("should be applicable", () => { + expect(v2_0_0.applicable(opt.scanned)).toBeTrue(); + }); + it("should migrate packages", () => { + const result = v2_0_0.migrate(opt); + expect(result).toEqual({ + ok: true, + }); + expect(packageJsonWritten.length).toBe(1); + expect(packageJsonWritten[0].pkg).toEqual({ + dependencies: { + "@connectrpc/connect": `^${targetVersionConnectEs}`, + "@connectrpc/connect-express": `^${targetVersionConnectEs}`, + "@connectrpc/connect-fastify": `^${targetVersionConnectEs}`, + "@connectrpc/connect-next": `^${targetVersionConnectEs}`, + "@connectrpc/connect-node": `^${targetVersionConnectEs}`, + "@connectrpc/connect-web": `^${targetVersionConnectEs}`, + }, + }); + expect(lockFilesUpdated.length).toBe(1); + }); + it("should migrate buf.gen.yaml", () => { + const result = v2_0_0.migrate(opt); + expect(result).toEqual({ + ok: true, + }); + expect(bufGenYamlWritten.length).toBe(1); + expect(bufGenYamlWritten[0]?.yaml).toEqual(`version: v2 +plugins: + - local: es + out: src/gen +`); + }); + }); + describe("for connect-query-es v1", () => { + beforeEach(function () { + opt.scanned.packageFiles = [ + { + path: "package.json", + pkg: { + dependencies: { + "@connectrpc/connect-query": "^1.4.2", + "@connectrpc/protoc-gen-connect-query": "^1.4.2", + }, + }, + }, + ]; + opt.scanned.bufGenYamlFiles = [ + { + path: "buf.gen.yaml", + yaml: parseBufGenYaml( + `version: v2 +plugins: + - remote: buf.build/connectrpc/query-es:v1.4.1 + out: src/gen +`, + ), + }, + ]; + }); + it("should be applicable", () => { + expect(v2_0_0.applicable(opt.scanned)).toBeTrue(); + }); + it("should migrate packages", () => { + const result = v2_0_0.migrate(opt); + expect(result).toEqual({ + ok: true, + }); + expect(packageJsonWritten.length).toBe(1); + expect(packageJsonWritten[0].pkg).toEqual({ + dependencies: { + "@connectrpc/connect-query": `^${targetVersionConnectQuery}`, + "@connectrpc/protoc-gen-connect-query": `^${targetVersionConnectQuery}`, + }, + }); + expect(lockFilesUpdated.length).toBe(1); + }); + it("should migrate buf.gen.yaml", () => { + const result = v2_0_0.migrate(opt); + expect(result).toEqual({ + ok: true, + }); + expect(bufGenYamlWritten.length).toBe(1); + expect(bufGenYamlWritten[0]?.yaml).toEqual(`version: v2 +plugins: + - remote: buf.build/connectrpc/query-es:v2.0.0-rc.1 + out: src/gen +`); + }); + }); + describe("for connect-playwright-es v1", () => { + beforeEach(function () { + opt.scanned.packageFiles = [ + { + path: "package.json", + pkg: { + dependencies: { + "@connectrpc/connect-playwright": "^0.3.2", + }, + }, + }, + ]; + }); + it("should be applicable", () => { + expect(v2_0_0.applicable(opt.scanned)).toBeTrue(); + }); + it("should migrate", () => { + const result = v2_0_0.migrate(opt); + expect(result).toEqual({ + ok: true, + }); + expect(packageJsonWritten.length).toBe(1); + expect(packageJsonWritten[0].pkg).toEqual({ + dependencies: { + "@connectrpc/connect-playwright": `^${targetVersionConnectPlaywright}`, + }, + }); + expect(lockFilesUpdated.length).toBe(1); + }); + }); + describe("for up-to-date versions", () => { + beforeEach(function () { + opt.scanned.packageFiles = [ + { + path: "package.json", + pkg: { + dependencies: { + "@bufbuild/protobuf": `^${targetVersionProtobufEs}`, + "@bufbuild/protoplugin": `^${targetVersionProtobufEs}`, + "@bufbuild/protoc-gen-es": `^${targetVersionProtobufEs}`, + + "@connectrpc/connect": `^${targetVersionConnectEs}`, + "@connectrpc/connect-web": `^${targetVersionConnectEs}`, + "@connectrpc/connect-node": `^${targetVersionConnectEs}`, + "@connectrpc/connect-express": `^${targetVersionConnectEs}`, + "@connectrpc/connect-fastify": `^${targetVersionConnectEs}`, + "@connectrpc/connect-next": `^${targetVersionConnectEs}`, + "@connectrpc/protoc-gen-connect-es": `^${targetVersionConnectEs}`, + + "@connectrpc/connect-query": `^${targetVersionConnectQuery}`, + "@connectrpc/protoc-gen-connect-query": `^${targetVersionConnectQuery}`, + + "@connectrpc/connect-playwright": `^${targetVersionConnectPlaywright}`, + }, + }, + }, + ]; + opt.scanned.bufGenYamlFiles = [ + { + path: "buf.gen.yaml", + yaml: parseBufGenYaml( + ` +version: v2 +plugins: + - local: protoc-gen-es + out: src/gen + - remote: buf.build/bufbuild/es + out: src/gen + - remote: buf.build/connectrpc/query-es + out: src/gen + - remote: buf.build/bufbuild/es:v2.0.0 + out: src/gen + - remote: buf.build/connectrpc/query-es:v${targetVersionConnectQuery} + out: src/gen +`, + "buf.gen.yaml", + ), + }, + { + path: "buf.v1.gen.yaml", + yaml: parseBufGenYaml( + ` +version: v1 +plugins: + - plugin: es + out: src/gen + - plugin: buf.build/bufbuild/es + out: src/gen + - plugin: buf.build/connectrpc/query-es + out: src/gen + - plugin: buf.build/bufbuild/es:v2.0.0 + out: src/gen + - plugin: buf.build/connectrpc/query-es:v${targetVersionConnectQuery} + out: src/gen +`, + ), + }, + ]; + }); + it("should not be applicable", () => { + expect(v2_0_0.applicable(opt.scanned)).toBeFalse(); + }); + }); + describe("for protobuf-es pre v1 versions", () => { + beforeEach(function () { + opt.scanned.packageFiles = [ + { + path: "package.json", + pkg: { + dependencies: { + "@bufbuild/protobuf": "<1.0.0", + "@bufbuild/protoplugin": "<1.0.0", + "@bufbuild/protoc-gen-es": "<1.0.0", + }, + }, + }, + ]; + }); + it("should not be applicable", () => { + expect(v2_0_0.applicable(opt.scanned)).toBeFalse(); + }); + }); + describe("for connect-es in @bufbuild", () => { + beforeEach(function () { + opt.scanned.packageFiles = [ + { + path: "package.json", + pkg: { + dependencies: { + "@bufbuild/connect": "*", + "@bufbuild/connect-web": "*", + "@bufbuild/connect-node": "*", + "@bufbuild/connect-express": "*", + "@bufbuild/connect-fastify": "*", + "@bufbuild/connect-next": "*", + "@bufbuild/protoc-gen-connect-es": "*", + }, + }, + }, + ]; + opt.scanned.bufGenYamlFiles = [ + { + path: "buf.gen.yaml", + yaml: parseBufGenYaml( + ` +version: v2 +plugins: + - remote: buf.build/bufbuild/connect-es:v0.13.0 + out: src/gen +`, + "buf.gen.yaml", + ), + }, + ]; + }); + it("should not be applicable", () => { + expect(v2_0_0.applicable(opt.scanned)).toBeFalse(); + }); + }); + describe("for connect-query-es in @bufbuild", function () { + beforeEach(function () { + opt.scanned.packageFiles = [ + { + path: "package.json", + pkg: { + dependencies: { + "@bufbuild/connect-query": "*", + "@bufbuild/protoc-gen-connect-query": "*", + }, + }, + }, + ]; + }); + it("should not be applicable", () => { + expect(v2_0_0.applicable(opt.scanned)).toBeFalse(); + }); + }); + describe("for connect-playwright-es in @bufbuild", function () { + beforeEach(function () { + opt.scanned.packageFiles = [ + { + path: "package.json", + pkg: { + dependencies: { + "@bufbuild/connect-playwright": "*", + }, + }, + }, + ]; + }); + it("should not be applicable", () => { + expect(v2_0_0.applicable(opt.scanned)).toBeFalse(); + }); + }); +}); diff --git a/packages/connect-migrate/src/migrations/v2.0.0.ts b/packages/connect-migrate/src/migrations/v2.0.0.ts new file mode 100644 index 000000000..14b698da5 --- /dev/null +++ b/packages/connect-migrate/src/migrations/v2.0.0.ts @@ -0,0 +1,212 @@ +// Copyright 2021-2024 The Connect Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { Scanned } from "../lib/scan"; +import modifyImports from "./v2.0.0-transform"; +import { MigrateError, MigrateSuccess, Migration } from "../migration"; +import { runInstall } from "../lib/run"; +import { writePackageJsonFile } from "../lib/package-json"; +import { + DependencyMigration, + migrateDependencies, +} from "../lib/migrate-dependencies"; +import { + migrateSourceFiles, + updateSourceFile, +} from "../lib/migrate-source-files"; +import { migratePackages } from "../lib/migrate-packages"; +import { migrateLockFiles } from "../lib/migrate-lock-files"; +import { + BufGenYamlMigration, + migrateBufGenYaml, + migrateBufGenYamls, +} from "../lib/migrate-bufgenyaml"; +import { writeBufGenYamlFile } from "../lib/bufgenyaml"; + +export const targetVersionProtobufEs = "2.2.0"; +export const targetVersionConnectEs = "2.0.0-rc.1"; // TODO +export const targetVersionConnectQuery = "2.0.0-rc.1"; // TODO +export const targetVersionConnectPlaywright = "0.5.0"; // TODO + +const dependencyMigrations: DependencyMigration[] = [ + // https://github.com/bufbuild/protobuf-es + { + from: { name: "@bufbuild/protobuf", range: "^1.0.0" }, + to: { version: targetVersionProtobufEs }, + }, + { + from: { name: "@bufbuild/protoplugin", range: "^1.0.0" }, + to: { version: targetVersionProtobufEs }, + }, + { + from: { name: "@bufbuild/protoc-gen-es", range: "^1.0.0" }, + to: { version: targetVersionProtobufEs }, + }, + + // https://github.com/connectrpc/connect-es + { + from: { name: "@connectrpc/connect", range: "^1.0.0" }, + to: { version: targetVersionConnectEs }, + }, + { + from: { name: "@connectrpc/connect-express", range: "^1.0.0" }, + to: { version: targetVersionConnectEs }, + }, + { + from: { name: "@connectrpc/connect-fastify", range: "^1.0.0" }, + to: { version: targetVersionConnectEs }, + }, + { + from: { name: "@connectrpc/connect-next", range: "^1.0.0" }, + to: { version: targetVersionConnectEs }, + }, + { + from: { name: "@connectrpc/connect-node", range: "^1.0.0" }, + to: { version: targetVersionConnectEs }, + }, + { + from: { name: "@connectrpc/connect-web", range: "^1.0.0" }, + to: { version: targetVersionConnectEs }, + }, + { + remove: { name: "@connectrpc/protoc-gen-connect-es", range: "^1.0.0" }, + }, + + // https://github.com/connectrpc/connect-query-es + { + from: { name: "@connectrpc/connect-query", range: "^1.0.0" }, + to: { version: targetVersionConnectQuery }, + }, + { + from: { name: "@connectrpc/protoc-gen-connect-query", range: "^1.0.0" }, + to: { version: targetVersionConnectQuery }, + }, + + // https://github.com/connectrpc/connect-playwright-es + { + from: { name: "@connectrpc/connect-playwright", range: "^0.3.0" }, + to: { version: targetVersionConnectPlaywright }, + }, +]; + +const bufGenYamlMigrations: BufGenYamlMigration[] = [ + { + removePlugin: { + local: "protoc-gen-connect-es", + remote: "buf.build/connectrpc/es", + }, + }, + { + updatePlugin: { + remote: "buf.build/bufbuild/es", + from: "^1.0.0", + to: targetVersionProtobufEs, + }, + }, + { + updatePlugin: { + remote: "buf.build/connectrpc/query-es", + from: "^1.0.0", + to: targetVersionConnectQuery, + }, + }, +]; + +/** + * Migrates to protobuf-es and connect-es v2. + */ +export const v2_0_0: Migration = { + applicable(scanned: Scanned) { + return ( + scanned.bufGenYamlFiles.some( + ({ yaml }) => migrateBufGenYaml(yaml, bufGenYamlMigrations) !== null, + ) || + scanned.packageFiles.some( + ({ pkg }) => + migrateDependencies(structuredClone(pkg), dependencyMigrations) !== + null, + ) + ); + }, + migrate({ + scanned, + args, + print, + logger, + updateSourceFileFn = updateSourceFile, + writePackageJsonFileFn = writePackageJsonFile, + writeBufGenYamlFileFn = writeBufGenYamlFile, + runInstallFn = runInstall, + }): MigrateError | MigrateSuccess { + const { updatedPackageFiles } = migratePackages( + scanned, + dependencyMigrations, + print, + writePackageJsonFileFn, + ); + const errorLines: string[] = []; + const { sourceFileErrors } = migrateSourceFiles( + scanned, + modifyImports, + print, + logger, + updateSourceFileFn, + ); + if (sourceFileErrors > 0) { + errorLines.push( + `⚠️${sourceFileErrors} source ${ + sourceFileErrors == 1 ? "file" : "files" + } could not be updated.`, + `You may have to update the files manually. Check the log for details.`, + ); + } + const { updatedBufGenYamls } = migrateBufGenYamls( + scanned, + bufGenYamlMigrations, + print, + writeBufGenYamlFileFn, + ); + if (updatedBufGenYamls.length > 0) { + print( + " Make sure to re-generate code, for example with `npx buf generate`!\n", + ); + } + const { lockFileErrors } = migrateLockFiles( + scanned, + updatedPackageFiles, + args, + print, + logger, + runInstallFn, + ); + if (lockFileErrors > 0) { + errorLines.push( + `⚠️${lockFileErrors} lock ${ + sourceFileErrors == 1 ? "file" : "files" + } could not be updated.`, + `To skip lock file updates, use the --no-install flag.`, + ); + } + if (errorLines.length > 0) { + return { + ok: false, + errorMessage: errorLines.join("\n"), + dumpLogfile: true, + }; + } + return { + ok: true, + }; + }, +}; diff --git a/packages/connect-next/package.json b/packages/connect-next/package.json index 7b77e1226..ff6c2ebea 100644 --- a/packages/connect-next/package.json +++ b/packages/connect-next/package.json @@ -1,6 +1,6 @@ { "name": "@connectrpc/connect-next", - "version": "1.6.1", + "version": "2.0.0-rc.2", "license": "Apache-2.0", "repository": { "type": "git", @@ -27,16 +27,16 @@ } }, "engines": { - "node": ">=16.0.0" + "node": ">=18.14.1" }, "peerDependencies": { - "@bufbuild/protobuf": "^1.10.0", - "next": "^13.2.4 || ^14.2.5", - "@connectrpc/connect": "1.6.1", - "@connectrpc/connect-node": "1.6.1" + "@bufbuild/protobuf": "^2.2.0", + "next": "^13.2.4 || ^14.2.5 || ^15.0.2", + "@connectrpc/connect": "2.0.0-rc.2", + "@connectrpc/connect-node": "2.0.0-rc.2" }, "devDependencies": { - "@connectrpc/connect": "1.6.1", - "@connectrpc/connect-node": "1.6.1" + "@connectrpc/connect": "2.0.0-rc.2", + "@connectrpc/connect-node": "2.0.0-rc.2" } } diff --git a/packages/connect-node/README.md b/packages/connect-node/README.md index 8efb0411e..ffc7003d0 100644 --- a/packages/connect-node/README.md +++ b/packages/connect-node/README.md @@ -38,7 +38,6 @@ import { ElizaService } from "./gen/eliza_connect.js"; + // A transport for clients using the gRPC protocol with Node.js `http2` module + const transport = createGrpcTransport({ + baseUrl: "https://demo.connectrpc.com", -+ httpVersion: "2" + }); const client = createClient(ElizaService, transport); @@ -123,7 +122,6 @@ import { ElizaService } from "./gen/eliza_connect.js"; const transport = createGrpcTransport({ baseUrl: "http://localhost:8080", - httpVersion: "2", }); const client = createClient(ElizaService, transport); diff --git a/packages/connect-node/buf.gen.yaml b/packages/connect-node/buf.gen.yaml new file mode 100644 index 000000000..e09c074fb --- /dev/null +++ b/packages/connect-node/buf.gen.yaml @@ -0,0 +1,10 @@ +# Learn more: https://buf.build/docs/configuration/v2/buf-gen-yaml +version: v2 +# Deletes the directories specified in the `out` field for all plugins before running code generation. +clean: true +inputs: + - module: buf.build/connectrpc/eliza +plugins: + - local: protoc-gen-es + out: src/testdata/gen + opt: target=ts,import_extension=.js diff --git a/packages/connect-node/conformance/client.ts b/packages/connect-node/conformance/client.ts index 35091a05b..586407c4e 100755 --- a/packages/connect-node/conformance/client.ts +++ b/packages/connect-node/conformance/client.ts @@ -13,14 +13,15 @@ // limitations under the License. import { - ClientCompatRequest, - ClientCompatResponse, - ClientErrorResult, invokeWithPromiseClient, + ClientCompatRequestSchema, + ClientCompatResponseSchema, + ClientErrorResultSchema, readSizeDelimitedBuffers, writeSizeDelimitedBuffer, } from "@connectrpc/connect-conformance"; import { createTransport } from "./transport.js"; +import { create, fromBinary, toBinary } from "@bufbuild/protobuf"; void main(); @@ -32,8 +33,8 @@ void main(); */ async function main() { for await (const next of readSizeDelimitedBuffers(process.stdin)) { - const req = ClientCompatRequest.fromBinary(next); - const res = new ClientCompatResponse({ + const req = fromBinary(ClientCompatRequestSchema, next); + const res = create(ClientCompatResponseSchema, { testName: req.testName, }); try { @@ -45,9 +46,13 @@ async function main() { } catch (e) { res.result = { case: "error", - value: new ClientErrorResult({ message: (e as Error).message }), + value: create(ClientErrorResultSchema, { + message: (e as Error).message, + }), }; } - process.stdout.write(writeSizeDelimitedBuffer(res.toBinary())); + process.stdout.write( + writeSizeDelimitedBuffer(toBinary(ClientCompatResponseSchema, res)), + ); } } diff --git a/packages/connect-node/conformance/server.ts b/packages/connect-node/conformance/server.ts index c2c0b5a36..d999cdeff 100755 --- a/packages/connect-node/conformance/server.ts +++ b/packages/connect-node/conformance/server.ts @@ -22,18 +22,23 @@ import * as http from "node:http"; import * as http2 from "node:http2"; import * as https from "node:https"; import * as net from "node:net"; -import { createRegistry } from "@bufbuild/protobuf"; +import { + create, + createRegistry, + fromBinary, + toBinary, +} from "@bufbuild/protobuf"; import { routes, writeSizeDelimitedBuffer, - BidiStreamRequest, - ClientStreamRequest, HTTPVersion, - IdempotentUnaryRequest, - ServerCompatRequest, - ServerCompatResponse, - ServerStreamRequest, - UnaryRequest, + ServerCompatRequestSchema, + BidiStreamRequestSchema, + ClientStreamRequestSchema, + IdempotentUnaryRequestSchema, + ServerStreamRequestSchema, + UnaryRequestSchema, + ServerCompatResponseSchema, } from "@connectrpc/connect-conformance"; main(); @@ -45,7 +50,8 @@ main(); * server's port and other details to stdout. */ function main() { - const req = ServerCompatRequest.fromBinary( + const req = fromBinary( + ServerCompatRequestSchema, readFileSync(process.stdin.fd).subarray(4), ); @@ -54,12 +60,12 @@ function main() { readMaxBytes: req.messageReceiveLimit, acceptCompression: [compressionGzip, compressionBrotli], jsonOptions: { - typeRegistry: createRegistry( - UnaryRequest, - ServerStreamRequest, - ClientStreamRequest, - BidiStreamRequest, - IdempotentUnaryRequest, + registry: createRegistry( + UnaryRequestSchema, + ServerStreamRequestSchema, + ClientStreamRequestSchema, + BidiStreamRequestSchema, + IdempotentUnaryRequestSchema, ), }, }); @@ -113,7 +119,7 @@ function main() { server.listen(0, "127.0.0.1", () => { const addrInfo = server.address() as net.AddressInfo; - const res = new ServerCompatResponse({ + const res = create(ServerCompatResponseSchema, { pemCert: serverOptions.cert !== undefined ? Buffer.from(serverOptions.cert) @@ -121,6 +127,8 @@ function main() { host: addrInfo.address, port: addrInfo.port, }); - process.stdout.write(writeSizeDelimitedBuffer(res.toBinary())); + process.stdout.write( + writeSizeDelimitedBuffer(toBinary(ServerCompatResponseSchema, res)), + ); }); } diff --git a/packages/connect-node/conformance/transport.ts b/packages/connect-node/conformance/transport.ts index 827ef2a46..e789b5112 100644 --- a/packages/connect-node/conformance/transport.ts +++ b/packages/connect-node/conformance/transport.ts @@ -14,17 +14,17 @@ import { createRegistry } from "@bufbuild/protobuf"; import { - BidiStreamRequest, - ClientCompatRequest, - ClientStreamRequest, Compression as ConformanceCompression, - UnaryRequest, Codec, HTTPVersion, - IdempotentUnaryRequest, Protocol, - ServerStreamRequest, + BidiStreamRequestSchema, + ClientStreamRequestSchema, + IdempotentUnaryRequestSchema, + ServerStreamRequestSchema, + UnaryRequestSchema, } from "@connectrpc/connect-conformance"; +import type { ClientCompatRequest } from "@connectrpc/connect-conformance"; import { createConnectTransport, createGrpcTransport, @@ -38,7 +38,7 @@ import * as http2 from "node:http2"; /** * Configure a transport for a client from @connectrpc/connect-node under test. * - * The conformance test runner describes the call we should make in the + * The conformance test runner Schemaribes the call we should make in the * message connectrpc.conformance.v1.ClientCompatRequest. We create a transport * for the call, with the corresponding protocol, HTTP version, compression, and * other details. If a configuration is not supported, we raise an error. @@ -102,12 +102,12 @@ export function createTransport(req: ClientCompatRequest) { defaultTimeoutMs: req.timeoutMs, compressMinBytes: -1, // To account for empty messages jsonOptions: { - typeRegistry: createRegistry( - UnaryRequest, - ServerStreamRequest, - ClientStreamRequest, - BidiStreamRequest, - IdempotentUnaryRequest, + registry: createRegistry( + UnaryRequestSchema, + ServerStreamRequestSchema, + ClientStreamRequestSchema, + BidiStreamRequestSchema, + IdempotentUnaryRequestSchema, ), }, nodeOptions: { diff --git a/packages/connect-node/package.json b/packages/connect-node/package.json index ddd019e88..dc5eb999d 100644 --- a/packages/connect-node/package.json +++ b/packages/connect-node/package.json @@ -1,6 +1,6 @@ { "name": "@connectrpc/connect-node", - "version": "1.6.1", + "version": "2.0.0-rc.2", "license": "Apache-2.0", "repository": { "type": "git", @@ -21,6 +21,7 @@ "attw": "attw --pack" }, "type": "module", + "sideEffects": false, "main": "./dist/cjs/index.js", "exports": { ".": { @@ -29,18 +30,15 @@ } }, "engines": { - "node": ">=16.0.0" - }, - "dependencies": { - "undici": "^5.28.4" + "node": ">=18.14.1" }, "peerDependencies": { - "@bufbuild/protobuf": "^1.10.0", - "@connectrpc/connect": "1.6.1" + "@bufbuild/protobuf": "^2.2.0", + "@connectrpc/connect": "2.0.0-rc.2" }, "devDependencies": { + "@connectrpc/connect-conformance": "^2.0.0-rc.2", "@types/jasmine": "^5.0.0", - "jasmine": "^5.2.0", - "@connectrpc/connect-conformance": "^1.6.1" + "jasmine": "^5.2.0" } } diff --git a/packages/connect-node/src/connect-transport.ts b/packages/connect-node/src/connect-transport.ts index d2442a61d..707249b5d 100644 --- a/packages/connect-node/src/connect-transport.ts +++ b/packages/connect-node/src/connect-transport.ts @@ -21,8 +21,10 @@ import type { import type { Interceptor, Transport } from "@connectrpc/connect"; import type { Compression } from "@connectrpc/connect/protocol"; import { createTransport } from "@connectrpc/connect/protocol-connect"; -import type { NodeTransportOptions } from "./node-transport-options.js"; -import { validateNodeTransportOptions } from "./node-transport-options.js"; +import { + type NodeTransportOptions, + validateNodeTransportOptions, +} from "./node-transport-options.js"; /** * Options used to configure the Connect transport. @@ -128,7 +130,7 @@ export type ConnectTransportOptions = NodeTransportOptions & { }; /** - * Create a Transport for the Connect protocol using the Node.js `http`, `http2`, + * Create a Transport for the Connect protocol using the Node.js `http`, `https`, * or `http2` module. */ export function createConnectTransport( diff --git a/packages/connect-node/src/grpc-transport.spec.ts b/packages/connect-node/src/grpc-transport.spec.ts new file mode 100644 index 000000000..039841e6f --- /dev/null +++ b/packages/connect-node/src/grpc-transport.spec.ts @@ -0,0 +1,40 @@ +// Copyright 2021-2024 The Connect Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { createGrpcTransport } from "./grpc-transport.js"; + +describe("createGrpcTransport()", function () { + it("should take just baseUrl", function () { + const t = createGrpcTransport({ + baseUrl: "https://example.com", + }); + expect(t).toBeDefined(); + }); + it("should raise type error for httpVersion: 2", function () { + const t = createGrpcTransport({ + // @ts-expect-error TS2353: Object literal may only specify known properties, and httpVersion does not exist in type GrpcTransportOptions + httpVersion: "2", + baseUrl: "https://example.com", + }); + expect(t).toBeDefined(); + }); + it("should raise type error for httpVersion: 1.1", function () { + const t = createGrpcTransport({ + // @ts-expect-error TS2353: Object literal may only specify known properties, and httpVersion does not exist in type GrpcTransportOptions + httpVersion: "1.1", + baseUrl: "https://example.com", + }); + expect(t).toBeDefined(); + }); +}); diff --git a/packages/connect-node/src/grpc-transport.ts b/packages/connect-node/src/grpc-transport.ts index 3a2fd893c..403b1dc45 100644 --- a/packages/connect-node/src/grpc-transport.ts +++ b/packages/connect-node/src/grpc-transport.ts @@ -21,15 +21,17 @@ import type { JsonReadOptions, JsonWriteOptions, } from "@bufbuild/protobuf"; -import type { NodeTransportOptions } from "./node-transport-options.js"; -import { validateNodeTransportOptions } from "./node-transport-options.js"; +import { + type NodeHttp2TransportOptions, + validateNodeTransportOptions, +} from "./node-transport-options.js"; /** - * Options used to configure the gRPC-web transport. + * Options used to configure the gRPC transport. * * See createGrpcTransport(). */ -export type GrpcTransportOptions = NodeTransportOptions & { +export type GrpcTransportOptions = NodeHttp2TransportOptions & { /** * Base URI for all HTTP requests. * @@ -123,9 +125,13 @@ export type GrpcTransportOptions = NodeTransportOptions & { }; /** - * Create a Transport for the gRPC protocol using the Node.js `http`, `http2`, - * or `http2` module. + * Create a Transport for the gRPC protocol using the Node.js `http2` module. */ export function createGrpcTransport(options: GrpcTransportOptions): Transport { - return createTransport(validateNodeTransportOptions(options)); + return createTransport( + validateNodeTransportOptions({ + ...options, + httpVersion: "2", + }), + ); } diff --git a/packages/connect-node/src/grpc-web-transport.ts b/packages/connect-node/src/grpc-web-transport.ts index ac6318ebf..26712a7bd 100644 --- a/packages/connect-node/src/grpc-web-transport.ts +++ b/packages/connect-node/src/grpc-web-transport.ts @@ -21,8 +21,10 @@ import type { JsonReadOptions, JsonWriteOptions, } from "@bufbuild/protobuf"; -import type { NodeTransportOptions } from "./node-transport-options.js"; -import { validateNodeTransportOptions } from "./node-transport-options.js"; +import { + type NodeTransportOptions, + validateNodeTransportOptions, +} from "./node-transport-options.js"; /** * Options used to configure the gRPC-web transport. @@ -124,7 +126,7 @@ export type GrpcWebTransportOptions = NodeTransportOptions & { /** * Create a Transport for the gRPC-web protocol using the Node.js `http`, - * `http2`, or `http2` module. + * `https`, or `http2` module. */ export function createGrpcWebTransport( options: GrpcWebTransportOptions, diff --git a/packages/connect-node/src/http2-session-manager.ts b/packages/connect-node/src/http2-session-manager.ts index 4341097f2..7a6ed3c19 100644 --- a/packages/connect-node/src/http2-session-manager.ts +++ b/packages/connect-node/src/http2-session-manager.ts @@ -723,22 +723,19 @@ function ready( options.pingIntervalMs = options.pingIntervalMs * 2; receivedGoAwayEnhanceYourCalmTooManyPings = true; } - if (errorCode === http2.constants.NGHTTP2_NO_ERROR) { - const nodeMajor = parseInt(process.versions.node.split(".")[0], 10); - // Node.js v16 closes a connection on its own when it receives a GOAWAY + if (errorCode === http2.constants.NGHTTP2_NO_ERROR && streamCount == 0) { + // Node.js v16 closes the connection on its own when it receives a GOAWAY // frame and there are no open streams (emitting a "close" event and - // destroying the session), but more recent versions do not. + // destroying the session), but later versions do not. // Calling close() ourselves is ineffective here - it appears that the // method is already being called, see https://github.com/nodejs/node/blob/198affc63973805ce5102d246f6b7822be57f5fc/lib/internal/http2/core.js#L681 - if (streamCount == 0 && nodeMajor >= 18) { - conn.destroy( - new ConnectError( - "received GOAWAY without any open streams", - Code.Canceled, - ), - http2.constants.NGHTTP2_NO_ERROR, - ); - } + conn.destroy( + new ConnectError( + "received GOAWAY without any open streams", + Code.Canceled, + ), + http2.constants.NGHTTP2_NO_ERROR, + ); } } diff --git a/packages/connect-node/src/index.ts b/packages/connect-node/src/index.ts index 3becac744..80ebb81cd 100644 --- a/packages/connect-node/src/index.ts +++ b/packages/connect-node/src/index.ts @@ -12,9 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -// Polyfill the Headers API for Node versions < 18 -import "./node-headers-polyfill.js"; - export { createGrpcWebTransport } from "./grpc-web-transport.js"; export type { GrpcWebTransportOptions } from "./grpc-web-transport.js"; export { createGrpcTransport } from "./grpc-transport.js"; diff --git a/packages/connect-node/src/node-headers-polyfill.ts b/packages/connect-node/src/node-headers-polyfill.ts deleted file mode 100644 index e2e22ce75..000000000 --- a/packages/connect-node/src/node-headers-polyfill.ts +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2021-2024 The Connect Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import { Headers as HeadersPolyfill } from "undici"; - -// The global Headers class was introduced in Node v16.15.0, behind the -// --experimental-fetch flag. It became available by default with Node -// v18.0.0. -// If this code runs in Node < 18, it installs an alternative -// implementation if one has not already been polyfilled. - -const [major] = process.versions.node - .split(".") - .map((value) => parseInt(value, 10)); -if (major < 18) { - if (typeof globalThis.Headers === "undefined") { - globalThis.Headers = HeadersPolyfill as unknown as typeof Headers; - } -} diff --git a/packages/connect-node/src/node-readme.spec.ts b/packages/connect-node/src/node-readme.spec.ts index ce3b85431..8ab1eb236 100644 --- a/packages/connect-node/src/node-readme.spec.ts +++ b/packages/connect-node/src/node-readme.spec.ts @@ -13,13 +13,10 @@ // limitations under the License. import * as http2 from "http2"; -import { Message, MethodKind, proto3 } from "@bufbuild/protobuf"; -import type { PartialMessage } from "@bufbuild/protobuf"; import { createContextKey, createContextValues, createClient, - createRouterTransport, } from "@connectrpc/connect"; import type { ConnectRouter } from "@connectrpc/connect"; import { createWritableIterable } from "@connectrpc/connect/protocol"; @@ -27,67 +24,15 @@ import { connectNodeAdapter } from "./connect-node-adapter.js"; import { createGrpcTransport } from "./grpc-transport.js"; import { createGrpcWebTransport } from "./grpc-web-transport.js"; import { createConnectTransport } from "./connect-transport.js"; - +import { ElizaService } from "./testdata/gen/connectrpc/eliza/v1/eliza_pb.js"; +import type { + ConverseRequest, + ConverseRequestSchema, +} from "./testdata/gen/connectrpc/eliza/v1/eliza_pb.js"; +import type { MessageInitShape } from "@bufbuild/protobuf"; /* eslint-disable @typescript-eslint/require-await */ describe("node readme", function () { - interface SayR extends Message { - sentence: string; - } - const SayR = proto3.makeMessageType("connectrpc.eliza.v1.SayRequest", [ - { no: 1, name: "sentence", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - interface IntroduceRequest extends Message { - name: string; - } - const IntroduceRequest = proto3.makeMessageType( - "connectrpc.eliza.v1.IntroduceRequest", - [{ no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }], - ); - - interface ConverseRequest extends Message { - sentence: string; - } - - const ConverseRequest = proto3.makeMessageType( - "connectrpc.eliza.v1.ConverseRequest", - [{ no: 1, name: "sentence", kind: "scalar", T: 9 /* ScalarType.STRING */ }], - ); - - interface ConverseResponse extends Message { - sentence: string; - } - - const ConverseResponse = proto3.makeMessageType( - "connectrpc.eliza.v1.ConverseResponse", - [{ no: 1, name: "sentence", kind: "scalar", T: 9 /* ScalarType.STRING */ }], - ); - - const ElizaService = { - typeName: "connectrpc.eliza.v1.ElizaService", - methods: { - say: { - name: "Say", - I: SayR, - O: SayR, - kind: MethodKind.Unary, - }, - introduce: { - name: "Introduce", - I: IntroduceRequest, - O: SayR, - kind: MethodKind.ServerStreaming, - }, - converse: { - name: "Converse", - I: ConverseRequest, - O: ConverseResponse, - kind: MethodKind.BiDiStreaming, - }, - }, - } as const; - const optionsHttp2 = { baseUrl: "https://demo.connectrpc.com", httpVersion: "2" as const, @@ -124,30 +69,11 @@ describe("node readme", function () { expect(sentence).toBeDefined(); }); - it("createRouterTransport()", async function () { - // A transport for clients using the in-memory createRouterTransport - const transport = createRouterTransport( - ({ service }) => { - service(ElizaService, { - say: async () => ({ - sentence: "server response", - }), - }); - }, - { - transport: optionsHttp1, - }, - ); - const client = createClient(ElizaService, transport); - const { sentence } = await client.say({ sentence: "I feel happy." }); - expect(sentence).toBeDefined(); - }); - it("should work as well", async function () { let port = -1; function routes(router: ConnectRouter) { - router.rpc(ElizaService, ElizaService.methods.say, async (req) => ({ + router.rpc(ElizaService.method.say, async (req) => ({ sentence: `you said: ${req.sentence}`, })); } @@ -168,7 +94,6 @@ describe("node readme", function () { async function runClient() { const transport = createGrpcTransport({ baseUrl: `http://localhost:${port}`, - httpVersion: "2", }); const client = createClient(ElizaService, transport); const res = await client.say({ sentence: "I feel happy." }); @@ -186,13 +111,9 @@ describe("node readme", function () { const kUser = createContextKey(undefined); function routes(router: ConnectRouter) { - router.rpc( - ElizaService, - ElizaService.methods.say, - async (req, { values }) => ({ - sentence: `Hey ${values.get(kUser)}! You said: ${req.sentence}`, - }), - ); + router.rpc(ElizaService.method.say, async (req, { values }) => ({ + sentence: `Hey ${values.get(kUser)}! You said: ${req.sentence}`, + })); } function startServer() { @@ -215,7 +136,6 @@ describe("node readme", function () { async function runClient() { const transport = createGrpcTransport({ baseUrl: `http://localhost:${port}`, - httpVersion: "2", }); const client = createClient(ElizaService, transport); const res = await client.say( @@ -236,8 +156,7 @@ describe("node readme", function () { function routes(router: ConnectRouter) { router.rpc( - ElizaService, - ElizaService.methods.converse, + ElizaService.method.converse, async function* (req: AsyncIterable) { yield { sentence: "ping" }; for await (const next of req) { @@ -263,10 +182,12 @@ describe("node readme", function () { async function runClient() { const transport = createGrpcTransport({ baseUrl: `http://localhost:${port}`, - httpVersion: "2", }); const client = createClient(ElizaService, transport); - const req = createWritableIterable>(); + const req = + createWritableIterable< + MessageInitShape + >(); try { const res = client.converse(req); for await (const next of res) { diff --git a/packages/connect-node/src/node-transport-options.ts b/packages/connect-node/src/node-transport-options.ts index 38aa16ea5..a99283595 100644 --- a/packages/connect-node/src/node-transport-options.ts +++ b/packages/connect-node/src/node-transport-options.ts @@ -27,38 +27,43 @@ import * as http from "http"; import * as https from "https"; /** - * Options specific to Node.js client transports. + * Options specific to Node.js client transports that support HTTP/2 or HTTP 1.1. */ export type NodeTransportOptions = - | { - httpVersion: "1.1"; - /** - * Options passed to the request() call of the Node.js built-in - * http or https module. - */ - nodeOptions?: - | Omit - | Omit; - } - | ({ - httpVersion: "2"; + | (NodeHttp1TransportOptions & { httpVersion: "1.1" }) + | (NodeHttp2TransportOptions & { httpVersion: "2" }); + +/** + * Options specific to Node.js client transports over HTTP/2. + */ +export type NodeHttp2TransportOptions = { + /** + * A manager for the HTTP/2 connection of the transport. + * + * Providing this option makes nodeOptions as well as the HTTP/2 session + * options (pingIntervalMs et cetera) ineffective. + */ + sessionManager?: NodeHttp2ClientSessionManager; - /** - * A manager for the HTTP/2 connection of the transport. - * - * Providing this option makes nodeOptions as well as the HTTP/2 session - * options (pingIntervalMs et cetera) ineffective. - */ - sessionManager?: NodeHttp2ClientSessionManager; + /** + * Options passed to the connect() call of the Node.js built-in + * http2 module. + */ + nodeOptions?: http2.ClientSessionOptions | http2.SecureClientSessionOptions; +} & Http2SessionOptions; - /** - * Options passed to the connect() call of the Node.js built-in - * http2 module. - */ - nodeOptions?: - | http2.ClientSessionOptions - | http2.SecureClientSessionOptions; - } & Http2SessionOptions); +/** + * Options specific to Node.js client transports over HTTP 1.1. + */ +type NodeHttp1TransportOptions = { + /** + * Options passed to the request() call of the Node.js built-in + * http or https module. + */ + nodeOptions?: + | Omit + | Omit; +}; /** * Asserts that the options are within sane limits, and returns default values diff --git a/packages/connect-node/src/node-universal-client.spec.ts b/packages/connect-node/src/node-universal-client.spec.ts index 43f6dd041..394fae4ef 100644 --- a/packages/connect-node/src/node-universal-client.spec.ts +++ b/packages/connect-node/src/node-universal-client.spec.ts @@ -19,9 +19,6 @@ import { createAsyncIterable } from "@connectrpc/connect/protocol"; import { createNodeHttpClient } from "./node-universal-client.js"; import { useNodeServer } from "./use-node-server-helper.spec.js"; -// Polyfill the Headers API for Node versions < 18 -import "./node-headers-polyfill.js"; - describe("node http/2 client closing with RST_STREAM with code CANCEL", function () { let serverReceivedRstCode: number | undefined; const server = useNodeServer(() => @@ -41,7 +38,7 @@ describe("node http/2 client closing with RST_STREAM with code CANCEL", function ); setTimeout(() => { stream.close(http2.constants.NGHTTP2_CANCEL, () => { - // We are seeing a race condition in Node v16.20.0, where closing + // We are seeing a race condition in Node.js, where closing // the session right after closing a stream with an RST code // _sometimes_ sends an INTERNAL_ERROR code. // Simply delaying the session close until the next tick like diff --git a/packages/connect-node/src/node-universal-handler.spec.ts b/packages/connect-node/src/node-universal-handler.spec.ts index 510fa8d3a..938d22882 100644 --- a/packages/connect-node/src/node-universal-handler.spec.ts +++ b/packages/connect-node/src/node-universal-handler.spec.ts @@ -24,9 +24,6 @@ import { } from "@connectrpc/connect/protocol"; import type { UniversalServerRequest } from "@connectrpc/connect/protocol"; -// Polyfill the Headers API for Node versions < 18 -import "./node-headers-polyfill.js"; - describe("universalRequestFromNodeResponse()", function () { describe("with HTTP/2 stream closed with an RST code", function () { let serverRequest: UniversalServerRequest | undefined; @@ -57,7 +54,7 @@ describe("universalRequestFromNodeResponse()", function () { // error here. }); stream.close(rstCode, () => { - // We are seeing a race condition in Node v16.20.0, where closing + // We are seeing a race condition in Node.js, where closing // the session right after closing a stream with an RST code // _sometimes_ sends an INTERNAL_ERROR code. // Simply delaying the session close until the next tick like diff --git a/packages/connect-node/src/node-universal-handler.ts b/packages/connect-node/src/node-universal-handler.ts index 997f8779f..054eb6bf1 100644 --- a/packages/connect-node/src/node-universal-handler.ts +++ b/packages/connect-node/src/node-universal-handler.ts @@ -245,16 +245,7 @@ export async function universalResponseToNodeResponse( async function* asyncIterableFromNodeServerRequest( request: NodeServerRequest, ): AsyncIterable { - const it = request.iterator({ - // Node.js v16 closes request and response when this option isn't disabled. - // When one of our handlers receives invalid data (such as an unexpected - // compression flag in a streaming request), we're unable to write the error - // response. - // Later major versions have a more sensible behavior - we can revert this - // workaround once we stop supporting v16. - destroyOnReturn: false, - }); - for await (const chunk of it) { + for await (const chunk of request) { yield chunk; } } diff --git a/packages/connect-node/src/node-universal-header.spec.ts b/packages/connect-node/src/node-universal-header.spec.ts index b7c5a61ac..13ebb07ae 100644 --- a/packages/connect-node/src/node-universal-header.spec.ts +++ b/packages/connect-node/src/node-universal-header.spec.ts @@ -82,49 +82,39 @@ describe("webHeaderToNodeHeaders()", function () { expect(h["custom"]).toEqual(["a", "b"]); expect(h["foo"]).toBe("bar"); }); - if ("getSetCookie" in new Headers()) { - // Special handling of set-cookie is available since Node.js v20.0.0, - // v18.14.1, v16.19.1, but not in headers-polyfill 3.1.2. - // Also see https://github.com/nodejs/undici/releases/tag/v5.19.0 - describe("with support for set-cookie", function () { - it("should accept object literal", () => { - const h = webHeaderToNodeHeaders({ - "set-cookie": "a=a; Expires=Wed, 21 Oct 2015 07:28:00 GMT", - "Set-Cookie": "b=b; Expires=Wed, 21 Oct 2015 07:28:00 GMT", - }); - expect(h["set-cookie"]).toEqual([ - "a=a; Expires=Wed, 21 Oct 2015 07:28:00 GMT", - "b=b; Expires=Wed, 21 Oct 2015 07:28:00 GMT", - ]); - }); - it("should accept Headers object", () => { - const input = new Headers(); - input.append( - "set-cookie", - "a=a; Expires=Wed, 21 Oct 2015 07:28:00 GMT", - ); - input.append( - "Set-Cookie", - "b=b; Expires=Wed, 21 Oct 2015 07:28:00 GMT", - ); - const h = webHeaderToNodeHeaders(input); - expect(h["set-cookie"]).toEqual([ - "a=a; Expires=Wed, 21 Oct 2015 07:28:00 GMT", - "b=b; Expires=Wed, 21 Oct 2015 07:28:00 GMT", - ]); - }); - it("should accept array of name-value pairs", () => { - const h = webHeaderToNodeHeaders([ - ["set-cookie", "a=a; Expires=Wed, 21 Oct 2015 07:28:00 GMT"], - ["Set-Cookie", "b=b; Expires=Wed, 21 Oct 2015 07:28:00 GMT"], - ]); - expect(h["set-cookie"]).toEqual([ - "a=a; Expires=Wed, 21 Oct 2015 07:28:00 GMT", - "b=b; Expires=Wed, 21 Oct 2015 07:28:00 GMT", - ]); + describe("special handling of set-cookie", function () { + // Special handling of set-cookie is available since Node.js v22.0.0, v20.0.0, and v18.14.1. + it("should accept object literal", () => { + const h = webHeaderToNodeHeaders({ + "set-cookie": "a=a; Expires=Wed, 21 Oct 2015 07:28:00 GMT", + "Set-Cookie": "b=b; Expires=Wed, 21 Oct 2015 07:28:00 GMT", }); + expect(h["set-cookie"]).toEqual([ + "a=a; Expires=Wed, 21 Oct 2015 07:28:00 GMT", + "b=b; Expires=Wed, 21 Oct 2015 07:28:00 GMT", + ]); + }); + it("should accept Headers object", () => { + const input = new Headers(); + input.append("set-cookie", "a=a; Expires=Wed, 21 Oct 2015 07:28:00 GMT"); + input.append("Set-Cookie", "b=b; Expires=Wed, 21 Oct 2015 07:28:00 GMT"); + const h = webHeaderToNodeHeaders(input); + expect(h["set-cookie"]).toEqual([ + "a=a; Expires=Wed, 21 Oct 2015 07:28:00 GMT", + "b=b; Expires=Wed, 21 Oct 2015 07:28:00 GMT", + ]); }); - } + it("should accept array of name-value pairs", () => { + const h = webHeaderToNodeHeaders([ + ["set-cookie", "a=a; Expires=Wed, 21 Oct 2015 07:28:00 GMT"], + ["Set-Cookie", "b=b; Expires=Wed, 21 Oct 2015 07:28:00 GMT"], + ]); + expect(h["set-cookie"]).toEqual([ + "a=a; Expires=Wed, 21 Oct 2015 07:28:00 GMT", + "b=b; Expires=Wed, 21 Oct 2015 07:28:00 GMT", + ]); + }); + }); it("should accept default node headers", function () { const nodeDefaults: http.OutgoingHttpHeaders = { a: "a", diff --git a/packages/connect-node/src/testdata/gen/connectrpc/eliza/v1/eliza_pb.ts b/packages/connect-node/src/testdata/gen/connectrpc/eliza/v1/eliza_pb.ts new file mode 100644 index 000000000..cee91b4af --- /dev/null +++ b/packages/connect-node/src/testdata/gen/connectrpc/eliza/v1/eliza_pb.ts @@ -0,0 +1,209 @@ +// Copyright 2021-2024 The Connect Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v2.0.0-beta.3 with parameter "ts_nocheck=false,target=ts,import_extension=.js" +// @generated from file connectrpc/eliza/v1/eliza.proto (package connectrpc.eliza.v1, syntax proto3) +/* eslint-disable */ + +import type { + GenFile, + GenMessage, + GenService, +} from "@bufbuild/protobuf/codegenv1"; +import { + fileDesc, + messageDesc, + serviceDesc, +} from "@bufbuild/protobuf/codegenv1"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file connectrpc/eliza/v1/eliza.proto. + */ +export const file_connectrpc_eliza_v1_eliza: GenFile = + /*@__PURE__*/ + fileDesc( + "Ch9jb25uZWN0cnBjL2VsaXphL3YxL2VsaXphLnByb3RvEhNjb25uZWN0cnBjLmVsaXphLnYxIh4KClNheVJlcXVlc3QSEAoIc2VudGVuY2UYASABKAkiHwoLU2F5UmVzcG9uc2USEAoIc2VudGVuY2UYASABKAkiIwoPQ29udmVyc2VSZXF1ZXN0EhAKCHNlbnRlbmNlGAEgASgJIiQKEENvbnZlcnNlUmVzcG9uc2USEAoIc2VudGVuY2UYASABKAkiIAoQSW50cm9kdWNlUmVxdWVzdBIMCgRuYW1lGAEgASgJIiUKEUludHJvZHVjZVJlc3BvbnNlEhAKCHNlbnRlbmNlGAEgASgJMpwCCgxFbGl6YVNlcnZpY2USTQoDU2F5Eh8uY29ubmVjdHJwYy5lbGl6YS52MS5TYXlSZXF1ZXN0GiAuY29ubmVjdHJwYy5lbGl6YS52MS5TYXlSZXNwb25zZSIDkAIBEl0KCENvbnZlcnNlEiQuY29ubmVjdHJwYy5lbGl6YS52MS5Db252ZXJzZVJlcXVlc3QaJS5jb25uZWN0cnBjLmVsaXphLnYxLkNvbnZlcnNlUmVzcG9uc2UiACgBMAESXgoJSW50cm9kdWNlEiUuY29ubmVjdHJwYy5lbGl6YS52MS5JbnRyb2R1Y2VSZXF1ZXN0GiYuY29ubmVjdHJwYy5lbGl6YS52MS5JbnRyb2R1Y2VSZXNwb25zZSIAMAFiBnByb3RvMw", + ); + +/** + * SayRequest is a single-sentence request. + * + * @generated from message connectrpc.eliza.v1.SayRequest + */ +export type SayRequest = Message<"connectrpc.eliza.v1.SayRequest"> & { + /** + * @generated from field: string sentence = 1; + */ + sentence: string; +}; + +/** + * Describes the message connectrpc.eliza.v1.SayRequest. + * Use `create(SayRequestSchema)` to create a new message. + */ +export const SayRequestSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_eliza_v1_eliza, 0); + +/** + * SayResponse is a single-sentence response. + * + * @generated from message connectrpc.eliza.v1.SayResponse + */ +export type SayResponse = Message<"connectrpc.eliza.v1.SayResponse"> & { + /** + * @generated from field: string sentence = 1; + */ + sentence: string; +}; + +/** + * Describes the message connectrpc.eliza.v1.SayResponse. + * Use `create(SayResponseSchema)` to create a new message. + */ +export const SayResponseSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_eliza_v1_eliza, 1); + +/** + * ConverseRequest is a single sentence request sent as part of a + * back-and-forth conversation. + * + * @generated from message connectrpc.eliza.v1.ConverseRequest + */ +export type ConverseRequest = Message<"connectrpc.eliza.v1.ConverseRequest"> & { + /** + * @generated from field: string sentence = 1; + */ + sentence: string; +}; + +/** + * Describes the message connectrpc.eliza.v1.ConverseRequest. + * Use `create(ConverseRequestSchema)` to create a new message. + */ +export const ConverseRequestSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_eliza_v1_eliza, 2); + +/** + * ConverseResponse is a single sentence response sent in answer to a + * ConverseRequest. + * + * @generated from message connectrpc.eliza.v1.ConverseResponse + */ +export type ConverseResponse = + Message<"connectrpc.eliza.v1.ConverseResponse"> & { + /** + * @generated from field: string sentence = 1; + */ + sentence: string; + }; + +/** + * Describes the message connectrpc.eliza.v1.ConverseResponse. + * Use `create(ConverseResponseSchema)` to create a new message. + */ +export const ConverseResponseSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_eliza_v1_eliza, 3); + +/** + * IntroduceRequest asks Eliza to introduce itself to the named user. + * + * @generated from message connectrpc.eliza.v1.IntroduceRequest + */ +export type IntroduceRequest = + Message<"connectrpc.eliza.v1.IntroduceRequest"> & { + /** + * @generated from field: string name = 1; + */ + name: string; + }; + +/** + * Describes the message connectrpc.eliza.v1.IntroduceRequest. + * Use `create(IntroduceRequestSchema)` to create a new message. + */ +export const IntroduceRequestSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_eliza_v1_eliza, 4); + +/** + * IntroduceResponse is one sentence of Eliza's introductory monologue. + * + * @generated from message connectrpc.eliza.v1.IntroduceResponse + */ +export type IntroduceResponse = + Message<"connectrpc.eliza.v1.IntroduceResponse"> & { + /** + * @generated from field: string sentence = 1; + */ + sentence: string; + }; + +/** + * Describes the message connectrpc.eliza.v1.IntroduceResponse. + * Use `create(IntroduceResponseSchema)` to create a new message. + */ +export const IntroduceResponseSchema: GenMessage = + /*@__PURE__*/ + messageDesc(file_connectrpc_eliza_v1_eliza, 5); + +/** + * ElizaService provides a way to talk to Eliza, a port of the DOCTOR script + * for Joseph Weizenbaum's original ELIZA program. Created in the mid-1960s at + * the MIT Artificial Intelligence Laboratory, ELIZA demonstrates the + * superficiality of human-computer communication. DOCTOR simulates a + * psychotherapist, and is commonly found as an Easter egg in emacs + * distributions. + * + * @generated from service connectrpc.eliza.v1.ElizaService + */ +export const ElizaService: GenService<{ + /** + * Say is a unary RPC. Eliza responds to the prompt with a single sentence. + * + * @generated from rpc connectrpc.eliza.v1.ElizaService.Say + */ + say: { + methodKind: "unary"; + input: typeof SayRequestSchema; + output: typeof SayResponseSchema; + }; + /** + * Converse is a bidirectional RPC. The caller may exchange multiple + * back-and-forth messages with Eliza over a long-lived connection. Eliza + * responds to each ConverseRequest with a ConverseResponse. + * + * @generated from rpc connectrpc.eliza.v1.ElizaService.Converse + */ + converse: { + methodKind: "bidi_streaming"; + input: typeof ConverseRequestSchema; + output: typeof ConverseResponseSchema; + }; + /** + * Introduce is a server streaming RPC. Given the caller's name, Eliza + * returns a stream of sentences to introduce itself. + * + * @generated from rpc connectrpc.eliza.v1.ElizaService.Introduce + */ + introduce: { + methodKind: "server_streaming"; + input: typeof IntroduceRequestSchema; + output: typeof IntroduceResponseSchema; + }; +}> = /*@__PURE__*/ serviceDesc(file_connectrpc_eliza_v1_eliza, 0); diff --git a/packages/connect-node/src/transport.spec.ts b/packages/connect-node/src/transport.spec.ts index 6a2b1702e..96cd4cd63 100644 --- a/packages/connect-node/src/transport.spec.ts +++ b/packages/connect-node/src/transport.spec.ts @@ -13,7 +13,7 @@ // limitations under the License. /* eslint-disable @typescript-eslint/no-invalid-void-type */ -import { Int32Value, StringValue, MethodKind } from "@bufbuild/protobuf"; +import { create } from "@bufbuild/protobuf"; import { useNodeServer } from "./use-node-server-helper.spec.js"; import * as http2 from "node:http2"; import { connectNodeAdapter } from "./connect-node-adapter.js"; @@ -22,18 +22,10 @@ import type { Transport } from "@connectrpc/connect"; import { createTransport as createGrpcTransport } from "@connectrpc/connect/protocol-grpc"; import { createTransport as createGrpcWebTransport } from "@connectrpc/connect/protocol-grpc-web"; import { validateNodeTransportOptions } from "./node-transport-options.js"; - -const TestService = { - typeName: "TestService", - methods: { - server: { - name: "Server", - I: Int32Value, - O: StringValue, - kind: MethodKind.ServerStreaming, - }, - }, -} as const; +import { + ElizaService, + IntroduceResponseSchema, +} from "./testdata/gen/connectrpc/eliza/v1/eliza_pb.js"; describe("Calls should fail with code internal on RST_STREAM no_error before trailers are received", function () { let firstMessage: ReturnType>; @@ -44,8 +36,8 @@ describe("Calls should fail with code internal on RST_STREAM no_error before tra }); const adaptor = connectNodeAdapter({ routes({ rpc }) { - rpc(TestService, TestService.methods.server, async function* () { - yield { value: "foo" }; + rpc(ElizaService.method.introduce, async function* () { + yield { sentence: "foo" }; // Notify to send rst stream after a message. firstMessage.resolve(); // Wait for rst stream to be sent before returning. @@ -65,11 +57,13 @@ describe("Calls should fail with code internal on RST_STREAM no_error before tra }), ); async function testRstStream(transport: Transport) { - const client = createClient(TestService, transport); - const it = client.server({ value: 1 })[Symbol.asyncIterator](); + const client = createClient(ElizaService, transport); + const it = client.introduce({ name: "1" })[Symbol.asyncIterator](); const first = await it.next(); expect(first.done).toBeFalse(); - expect(first.value).toEqual(new StringValue({ value: "foo" })); + expect(first.value).toEqual( + create(IntroduceResponseSchema, { sentence: "foo" }), + ); await expectAsync(it.next()).toBeRejected(); } it("for gRPC Transport", async function () { diff --git a/packages/connect-web-bench/README.md b/packages/connect-web-bench/README.md index 41b1820e3..e15001d5e 100644 --- a/packages/connect-web-bench/README.md +++ b/packages/connect-web-bench/README.md @@ -15,10 +15,10 @@ usually do. We repeat this for an increasing number of RPCs. | code generator | RPCs | bundle size | minified | compressed | | -------------- | ---: | ----------: | --------: | ---------: | -| Connect-ES | 1 | 152,692 b | 66,483 b | 16,399 b | -| Connect-ES | 4 | 168,120 b | 72,422 b | 16,871 b | -| Connect-ES | 8 | 193,426 b | 82,145 b | 17,494 b | -| Connect-ES | 16 | 227,051 b | 96,411 b | 18,278 b | +| Connect-ES | 1 | 276,243 b | 176,254 b | 35,750 b | +| Connect-ES | 4 | 280,495 b | 179,356 b | 36,486 b | +| Connect-ES | 8 | 285,358 b | 183,787 b | 37,416 b | +| Connect-ES | 16 | 294,486 b | 191,411 b | 38,989 b | | gRPC-Web | 1 | 876,563 b | 548,495 b | 52,300 b | | gRPC-Web | 4 | 928,964 b | 580,477 b | 54,673 b | | gRPC-Web | 8 | 1,004,833 b | 628,223 b | 57,118 b | diff --git a/packages/connect-web-bench/buf.gen.yaml b/packages/connect-web-bench/buf.gen.yaml index a983f1515..e54a043b4 100644 --- a/packages/connect-web-bench/buf.gen.yaml +++ b/packages/connect-web-bench/buf.gen.yaml @@ -5,11 +5,8 @@ clean: true plugins: - local: protoc-gen-es out: src/gen/connectweb - opt: ts_nocheck=false,target=ts + opt: target=ts include_imports: true - - local: protoc-gen-connect-es - out: src/gen/connectweb - opt: ts_nocheck=false,target=ts - remote: buf.build/protocolbuffers/js:v3.21.4 out: src/gen/grpcweb opt: import_style=commonjs diff --git a/packages/connect-web-bench/chart.svg b/packages/connect-web-bench/chart.svg index 5a3ccaa49..b814ec2f4 100644 --- a/packages/connect-web-bench/chart.svg +++ b/packages/connect-web-bench/chart.svg @@ -42,13 +42,13 @@ 0 KiB - + Connect-ES -Connect-ES 16.01 KiB for 1 RPCs -Connect-ES 16.48 KiB for 4 RPCs -Connect-ES 17.08 KiB for 8 RPCs -Connect-ES 17.85 KiB for 16 RPCs +Connect-ES 34.91 KiB for 1 RPCs +Connect-ES 35.63 KiB for 4 RPCs +Connect-ES 36.54 KiB for 8 RPCs +Connect-ES 38.08 KiB for 16 RPCs diff --git a/packages/connect-web-bench/package.json b/packages/connect-web-bench/package.json index 0e17ec9ca..176c69ca3 100644 --- a/packages/connect-web-bench/package.json +++ b/packages/connect-web-bench/package.json @@ -11,9 +11,9 @@ }, "dependencies": { "@bufbuild/buf": "^1.39.0", - "@bufbuild/protobuf": "^1.10.0", - "@bufbuild/protoc-gen-es": "^1.10.0", - "@connectrpc/connect-web": "1.6.1", + "@bufbuild/protobuf": "^2.2.0", + "@bufbuild/protoc-gen-es": "^2.1.0", + "@connectrpc/connect-web": "2.0.0-rc.2", "@types/brotli": "^1.3.4", "brotli": "^1.3.3", "esbuild": "^0.19.8", diff --git a/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/commit_pb.ts b/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/commit_pb.ts index 740413d57..9882a3dbe 100644 --- a/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/commit_pb.ts +++ b/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/commit_pb.ts @@ -12,13 +12,25 @@ // See the License for the specific language governing permissions and // limitations under the License. -// @generated by protoc-gen-es v1.10.0 with parameter "ts_nocheck=false,target=ts" +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" // @generated from file buf/registry/module/v1/commit.proto (package buf.registry.module.v1, syntax proto3) /* eslint-disable */ -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Message, proto3, Timestamp } from "@bufbuild/protobuf"; -import { Digest } from "./digest_pb.js"; +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Digest } from "./digest_pb"; +import { file_buf_registry_module_v1_digest } from "./digest_pb"; +import { file_buf_registry_priv_extension_v1beta1_extension } from "../../priv/extension/v1beta1/extension_pb"; +import { file_buf_validate_validate } from "../../../validate/validate_pb"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file buf/registry/module/v1/commit.proto. + */ +export const file_buf_registry_module_v1_commit: GenFile = /*@__PURE__*/ + fileDesc("CiNidWYvcmVnaXN0cnkvbW9kdWxlL3YxL2NvbW1pdC5wcm90bxIWYnVmLnJlZ2lzdHJ5Lm1vZHVsZS52MSKuAgoGQ29tbWl0EhcKAmlkGAEgASgJQgu6SAjIAQFyA4gCARI3CgtjcmVhdGVfdGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIdCghvd25lcl9pZBgDIAEoCUILukgIyAEBcgOIAgESHgoJbW9kdWxlX2lkGAQgASgJQgu6SAjIAQFyA4gCARI2CgZkaWdlc3QYBSABKAsyHi5idWYucmVnaXN0cnkubW9kdWxlLnYxLkRpZ2VzdEIGukgDyAEBEicKEmNyZWF0ZWRfYnlfdXNlcl9pZBgGIAEoCUILukgI2AEBcgOIAgESKgoSc291cmNlX2NvbnRyb2xfdXJsGAcgASgJQg66SAvYAQFyBhj/AYgBAToG6sUrAhABQk5aTGJ1Zi5idWlsZC9nZW4vZ28vYnVmYnVpbGQvcmVnaXN0cnkvcHJvdG9jb2xidWZmZXJzL2dvL2J1Zi9yZWdpc3RyeS9tb2R1bGUvdjFiBnByb3RvMw", [file_buf_registry_module_v1_digest, file_buf_registry_priv_extension_v1beta1_extension, file_buf_validate_validate, file_google_protobuf_timestamp]); /** * A commit on a specific Module. @@ -32,13 +44,13 @@ import { Digest } from "./digest_pb.js"; * * @generated from message buf.registry.module.v1.Commit */ -export class Commit extends Message { +export type Commit = Message<"buf.registry.module.v1.Commit"> & { /** * The id of the Commit. * * @generated from field: string id = 1; */ - id = ""; + id: string; /** * The time the Commit was pushed to the BSR. @@ -54,14 +66,14 @@ export class Commit extends Message { * * @generated from field: string owner_id = 3; */ - ownerId = ""; + ownerId: string; /** * The id of the Module that the Commit is associated with. * * @generated from field: string module_id = 4; */ - moduleId = ""; + moduleId: string; /** * The Digest of the Commit's contents. @@ -81,7 +93,7 @@ export class Commit extends Message { * * @generated from field: string created_by_user_id = 6; */ - createdByUserId = ""; + createdByUserId: string; /** * The URL of the source control commit that is associated with the Commit. @@ -91,39 +103,13 @@ export class Commit extends Message { * * @generated from field: string source_control_url = 7; */ - sourceControlUrl = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "buf.registry.module.v1.Commit"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "create_time", kind: "message", T: Timestamp }, - { no: 3, name: "owner_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 4, name: "module_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 5, name: "digest", kind: "message", T: Digest }, - { no: 6, name: "created_by_user_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 7, name: "source_control_url", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); + sourceControlUrl: string; +}; - static fromBinary(bytes: Uint8Array, options?: Partial): Commit { - return new Commit().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Commit { - return new Commit().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Commit { - return new Commit().fromJsonString(jsonString, options); - } - - static equals(a: Commit | PlainMessage | undefined, b: Commit | PlainMessage | undefined): boolean { - return proto3.util.equals(Commit, a, b); - } -} +/** + * Describes the message buf.registry.module.v1.Commit. + * Use `create(CommitSchema)` to create a new message. + */ +export const CommitSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_registry_module_v1_commit, 0); diff --git a/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/commit_service_connect.ts b/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/commit_service_connect.ts deleted file mode 100644 index 3d4acd1ec..000000000 --- a/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/commit_service_connect.ts +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2021-2024 The Connect Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// @generated by protoc-gen-connect-es v1.6.1 with parameter "ts_nocheck=false,target=ts" -// @generated from file buf/registry/module/v1/commit_service.proto (package buf.registry.module.v1, syntax proto3) -/* eslint-disable */ - -import { GetCommitsRequest, GetCommitsResponse, ListCommitsRequest, ListCommitsResponse } from "./commit_service_pb.js"; -import { MethodIdempotency, MethodKind } from "@bufbuild/protobuf"; - -/** - * Operate on Commits. - * - * @generated from service buf.registry.module.v1.CommitService - */ -export const CommitService = { - typeName: "buf.registry.module.v1.CommitService", - methods: { - /** - * Get Commits. - * - * @generated from rpc buf.registry.module.v1.CommitService.GetCommits - */ - getCommits: { - name: "GetCommits", - I: GetCommitsRequest, - O: GetCommitsResponse, - kind: MethodKind.Unary, - idempotency: MethodIdempotency.NoSideEffects, - }, - /** - * List Commits for a given Module, Label, or Commit. - * - * @generated from rpc buf.registry.module.v1.CommitService.ListCommits - */ - listCommits: { - name: "ListCommits", - I: ListCommitsRequest, - O: ListCommitsResponse, - kind: MethodKind.Unary, - idempotency: MethodIdempotency.NoSideEffects, - }, - } -} as const; - diff --git a/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/commit_service_pb.ts b/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/commit_service_pb.ts index 1afb24fad..b982f97f6 100644 --- a/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/commit_service_pb.ts +++ b/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/commit_service_pb.ts @@ -12,19 +12,29 @@ // See the License for the specific language governing permissions and // limitations under the License. -// @generated by protoc-gen-es v1.10.0 with parameter "ts_nocheck=false,target=ts" +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" // @generated from file buf/registry/module/v1/commit_service.proto (package buf.registry.module.v1, syntax proto3) /* eslint-disable */ -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Message, proto3 } from "@bufbuild/protobuf"; -import { ResourceRef } from "./resource_pb.js"; -import { Commit } from "./commit_pb.js"; +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv1"; +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Commit } from "./commit_pb"; +import { file_buf_registry_module_v1_commit } from "./commit_pb"; +import type { ResourceRef } from "./resource_pb"; +import { file_buf_registry_module_v1_resource } from "./resource_pb"; +import { file_buf_validate_validate } from "../../../validate/validate_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file buf/registry/module/v1/commit_service.proto. + */ +export const file_buf_registry_module_v1_commit_service: GenFile = /*@__PURE__*/ + fileDesc("CitidWYvcmVnaXN0cnkvbW9kdWxlL3YxL2NvbW1pdF9zZXJ2aWNlLnByb3RvEhZidWYucmVnaXN0cnkubW9kdWxlLnYxIlwKEUdldENvbW1pdHNSZXF1ZXN0EkcKDXJlc291cmNlX3JlZnMYASADKAsyIy5idWYucmVnaXN0cnkubW9kdWxlLnYxLlJlc291cmNlUmVmQgu6SAiSAQUIARD6ASJPChJHZXRDb21taXRzUmVzcG9uc2USOQoHY29tbWl0cxgBIAMoCzIeLmJ1Zi5yZWdpc3RyeS5tb2R1bGUudjEuQ29tbWl0Qgi6SAWSAQIIASLPAgoSTGlzdENvbW1pdHNSZXF1ZXN0EhsKCXBhZ2Vfc2l6ZRgBIAEoDUIIukgFKgMY+gESHAoKcGFnZV90b2tlbhgCIAEoCUIIukgFcgMYgCASQQoMcmVzb3VyY2VfcmVmGAMgASgLMiMuYnVmLnJlZ2lzdHJ5Lm1vZHVsZS52MS5SZXNvdXJjZVJlZkIGukgDyAEBEkkKBW9yZGVyGAQgASgOMjAuYnVmLnJlZ2lzdHJ5Lm1vZHVsZS52MS5MaXN0Q29tbWl0c1JlcXVlc3QuT3JkZXJCCLpIBYIBAhABEhkKCGlkX3F1ZXJ5GAUgASgJQge6SARyAhgkIlUKBU9yZGVyEhUKEU9SREVSX1VOU1BFQ0lGSUVEEAASGgoWT1JERVJfQ1JFQVRFX1RJTUVfREVTQxABEhkKFU9SREVSX0NSRUFURV9USU1FX0FTQxACImkKE0xpc3RDb21taXRzUmVzcG9uc2USIQoPbmV4dF9wYWdlX3Rva2VuGAEgASgJQgi6SAVyAxiAIBIvCgdjb21taXRzGAIgAygLMh4uYnVmLnJlZ2lzdHJ5Lm1vZHVsZS52MS5Db21taXQy5gEKDUNvbW1pdFNlcnZpY2USaAoKR2V0Q29tbWl0cxIpLmJ1Zi5yZWdpc3RyeS5tb2R1bGUudjEuR2V0Q29tbWl0c1JlcXVlc3QaKi5idWYucmVnaXN0cnkubW9kdWxlLnYxLkdldENvbW1pdHNSZXNwb25zZSIDkAIBEmsKC0xpc3RDb21taXRzEiouYnVmLnJlZ2lzdHJ5Lm1vZHVsZS52MS5MaXN0Q29tbWl0c1JlcXVlc3QaKy5idWYucmVnaXN0cnkubW9kdWxlLnYxLkxpc3RDb21taXRzUmVzcG9uc2UiA5ACAUJOWkxidWYuYnVpbGQvZ2VuL2dvL2J1ZmJ1aWxkL3JlZ2lzdHJ5L3Byb3RvY29sYnVmZmVycy9nby9idWYvcmVnaXN0cnkvbW9kdWxlL3YxYgZwcm90bzM", [file_buf_registry_module_v1_commit, file_buf_registry_module_v1_resource, file_buf_validate_validate]); /** * @generated from message buf.registry.module.v1.GetCommitsRequest */ -export class GetCommitsRequest extends Message { +export type GetCommitsRequest = Message<"buf.registry.module.v1.GetCommitsRequest"> & { /** * References to request a Commit for. * @@ -37,79 +47,39 @@ export class GetCommitsRequest extends Message { * * @generated from field: repeated buf.registry.module.v1.ResourceRef resource_refs = 1; */ - resourceRefs: ResourceRef[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "buf.registry.module.v1.GetCommitsRequest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "resource_refs", kind: "message", T: ResourceRef, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): GetCommitsRequest { - return new GetCommitsRequest().fromBinary(bytes, options); - } + resourceRefs: ResourceRef[]; +}; - static fromJson(jsonValue: JsonValue, options?: Partial): GetCommitsRequest { - return new GetCommitsRequest().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): GetCommitsRequest { - return new GetCommitsRequest().fromJsonString(jsonString, options); - } - - static equals(a: GetCommitsRequest | PlainMessage | undefined, b: GetCommitsRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(GetCommitsRequest, a, b); - } -} +/** + * Describes the message buf.registry.module.v1.GetCommitsRequest. + * Use `create(GetCommitsRequestSchema)` to create a new message. + */ +export const GetCommitsRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_registry_module_v1_commit_service, 0); /** * @generated from message buf.registry.module.v1.GetCommitsResponse */ -export class GetCommitsResponse extends Message { +export type GetCommitsResponse = Message<"buf.registry.module.v1.GetCommitsResponse"> & { /** * The found Commits in the same order as requested. * * @generated from field: repeated buf.registry.module.v1.Commit commits = 1; */ - commits: Commit[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } + commits: Commit[]; +}; - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "buf.registry.module.v1.GetCommitsResponse"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "commits", kind: "message", T: Commit, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): GetCommitsResponse { - return new GetCommitsResponse().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): GetCommitsResponse { - return new GetCommitsResponse().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): GetCommitsResponse { - return new GetCommitsResponse().fromJsonString(jsonString, options); - } - - static equals(a: GetCommitsResponse | PlainMessage | undefined, b: GetCommitsResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(GetCommitsResponse, a, b); - } -} +/** + * Describes the message buf.registry.module.v1.GetCommitsResponse. + * Use `create(GetCommitsResponseSchema)` to create a new message. + */ +export const GetCommitsResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_registry_module_v1_commit_service, 1); /** * @generated from message buf.registry.module.v1.ListCommitsRequest */ -export class ListCommitsRequest extends Message { +export type ListCommitsRequest = Message<"buf.registry.module.v1.ListCommitsRequest"> & { /** * The maximum number of items to return. * @@ -117,7 +87,7 @@ export class ListCommitsRequest extends Message { * * @generated from field: uint32 page_size = 1; */ - pageSize = 0; + pageSize: number; /** * The page to start from. @@ -126,7 +96,7 @@ export class ListCommitsRequest extends Message { * * @generated from field: string page_token = 2; */ - pageToken = ""; + pageToken: string; /** * The reference to list Commits for. @@ -150,46 +120,22 @@ export class ListCommitsRequest extends Message { * * @generated from field: buf.registry.module.v1.ListCommitsRequest.Order order = 4; */ - order = ListCommitsRequest_Order.UNSPECIFIED; + order: ListCommitsRequest_Order; /** * Only return Commits with an id that contains this string using a case-insensitive comparison. * * @generated from field: string id_query = 5; */ - idQuery = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "buf.registry.module.v1.ListCommitsRequest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "page_size", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, - { no: 2, name: "page_token", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "resource_ref", kind: "message", T: ResourceRef }, - { no: 4, name: "order", kind: "enum", T: proto3.getEnumType(ListCommitsRequest_Order) }, - { no: 5, name: "id_query", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ListCommitsRequest { - return new ListCommitsRequest().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ListCommitsRequest { - return new ListCommitsRequest().fromJson(jsonValue, options); - } + idQuery: string; +}; - static fromJsonString(jsonString: string, options?: Partial): ListCommitsRequest { - return new ListCommitsRequest().fromJsonString(jsonString, options); - } - - static equals(a: ListCommitsRequest | PlainMessage | undefined, b: ListCommitsRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(ListCommitsRequest, a, b); - } -} +/** + * Describes the message buf.registry.module.v1.ListCommitsRequest. + * Use `create(ListCommitsRequestSchema)` to create a new message. + */ +export const ListCommitsRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_registry_module_v1_commit_service, 2); /** * The list order. @@ -216,17 +162,17 @@ export enum ListCommitsRequest_Order { */ CREATE_TIME_ASC = 2, } -// Retrieve enum metadata with: proto3.getEnumType(ListCommitsRequest_Order) -proto3.util.setEnumType(ListCommitsRequest_Order, "buf.registry.module.v1.ListCommitsRequest.Order", [ - { no: 0, name: "ORDER_UNSPECIFIED" }, - { no: 1, name: "ORDER_CREATE_TIME_DESC" }, - { no: 2, name: "ORDER_CREATE_TIME_ASC" }, -]); + +/** + * Describes the enum buf.registry.module.v1.ListCommitsRequest.Order. + */ +export const ListCommitsRequest_OrderSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_buf_registry_module_v1_commit_service, 2, 0); /** * @generated from message buf.registry.module.v1.ListCommitsResponse */ -export class ListCommitsResponse extends Message { +export type ListCommitsResponse = Message<"buf.registry.module.v1.ListCommitsResponse"> & { /** * The next page token. * @@ -234,41 +180,49 @@ export class ListCommitsResponse extends Message { * * @generated from field: string next_page_token = 1; */ - nextPageToken = ""; + nextPageToken: string; /** * The listed Commits. * * @generated from field: repeated buf.registry.module.v1.Commit commits = 2; */ - commits: Commit[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "buf.registry.module.v1.ListCommitsResponse"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "next_page_token", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "commits", kind: "message", T: Commit, repeated: true }, - ]); + commits: Commit[]; +}; - static fromBinary(bytes: Uint8Array, options?: Partial): ListCommitsResponse { - return new ListCommitsResponse().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ListCommitsResponse { - return new ListCommitsResponse().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ListCommitsResponse { - return new ListCommitsResponse().fromJsonString(jsonString, options); - } +/** + * Describes the message buf.registry.module.v1.ListCommitsResponse. + * Use `create(ListCommitsResponseSchema)` to create a new message. + */ +export const ListCommitsResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_registry_module_v1_commit_service, 3); - static equals(a: ListCommitsResponse | PlainMessage | undefined, b: ListCommitsResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(ListCommitsResponse, a, b); - } -} +/** + * Operate on Commits. + * + * @generated from service buf.registry.module.v1.CommitService + */ +export const CommitService: GenService<{ + /** + * Get Commits. + * + * @generated from rpc buf.registry.module.v1.CommitService.GetCommits + */ + getCommits: { + methodKind: "unary"; + input: typeof GetCommitsRequestSchema; + output: typeof GetCommitsResponseSchema; + }, + /** + * List Commits for a given Module, Label, or Commit. + * + * @generated from rpc buf.registry.module.v1.CommitService.ListCommits + */ + listCommits: { + methodKind: "unary"; + input: typeof ListCommitsRequestSchema; + output: typeof ListCommitsResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_buf_registry_module_v1_commit_service, 0); diff --git a/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/digest_pb.ts b/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/digest_pb.ts index b20be9b4e..0eff34e33 100644 --- a/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/digest_pb.ts +++ b/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/digest_pb.ts @@ -12,36 +12,20 @@ // See the License for the specific language governing permissions and // limitations under the License. -// @generated by protoc-gen-es v1.10.0 with parameter "ts_nocheck=false,target=ts" +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" // @generated from file buf/registry/module/v1/digest.proto (package buf.registry.module.v1, syntax proto3) /* eslint-disable */ -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Message, proto3 } from "@bufbuild/protobuf"; +import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import { file_buf_validate_validate } from "../../../validate/validate_pb"; +import type { Message } from "@bufbuild/protobuf"; /** - * The type of Digest. - * - * @generated from enum buf.registry.module.v1.DigestType + * Describes the file buf/registry/module/v1/digest.proto. */ -export enum DigestType { - /** - * @generated from enum value: DIGEST_TYPE_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * The b5 digest function. - * - * @generated from enum value: DIGEST_TYPE_B5 = 1; - */ - B5 = 1, -} -// Retrieve enum metadata with: proto3.getEnumType(DigestType) -proto3.util.setEnumType(DigestType, "buf.registry.module.v1.DigestType", [ - { no: 0, name: "DIGEST_TYPE_UNSPECIFIED" }, - { no: 1, name: "DIGEST_TYPE_B5" }, -]); +export const file_buf_registry_module_v1_digest: GenFile = /*@__PURE__*/ + fileDesc("CiNidWYvcmVnaXN0cnkvbW9kdWxlL3YxL2RpZ2VzdC5wcm90bxIWYnVmLnJlZ2lzdHJ5Lm1vZHVsZS52MSJeCgZEaWdlc3QSPQoEdHlwZRgBIAEoDjIiLmJ1Zi5yZWdpc3RyeS5tb2R1bGUudjEuRGlnZXN0VHlwZUILukgIyAEBggECEAESFQoFdmFsdWUYAiABKAxCBrpIA8gBASo9CgpEaWdlc3RUeXBlEhsKF0RJR0VTVF9UWVBFX1VOU1BFQ0lGSUVEEAASEgoORElHRVNUX1RZUEVfQjUQAUJOWkxidWYuYnVpbGQvZ2VuL2dvL2J1ZmJ1aWxkL3JlZ2lzdHJ5L3Byb3RvY29sYnVmZmVycy9nby9idWYvcmVnaXN0cnkvbW9kdWxlL3YxYgZwcm90bzM", [file_buf_validate_validate]); /** * A digest of a Commit's content. @@ -51,47 +35,51 @@ proto3.util.setEnumType(DigestType, "buf.registry.module.v1.DigestType", [ * * @generated from message buf.registry.module.v1.Digest */ -export class Digest extends Message { +export type Digest = Message<"buf.registry.module.v1.Digest"> & { /** * The type of the Digest. * * @generated from field: buf.registry.module.v1.DigestType type = 1; */ - type = DigestType.UNSPECIFIED; + type: DigestType; /** * The value of the Digest. * * @generated from field: bytes value = 2; */ - value = new Uint8Array(0); - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "buf.registry.module.v1.Digest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "type", kind: "enum", T: proto3.getEnumType(DigestType) }, - { no: 2, name: "value", kind: "scalar", T: 12 /* ScalarType.BYTES */ }, - ]); + value: Uint8Array; +}; - static fromBinary(bytes: Uint8Array, options?: Partial): Digest { - return new Digest().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Digest { - return new Digest().fromJson(jsonValue, options); - } +/** + * Describes the message buf.registry.module.v1.Digest. + * Use `create(DigestSchema)` to create a new message. + */ +export const DigestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_registry_module_v1_digest, 0); - static fromJsonString(jsonString: string, options?: Partial): Digest { - return new Digest().fromJsonString(jsonString, options); - } +/** + * The type of Digest. + * + * @generated from enum buf.registry.module.v1.DigestType + */ +export enum DigestType { + /** + * @generated from enum value: DIGEST_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, - static equals(a: Digest | PlainMessage | undefined, b: Digest | PlainMessage | undefined): boolean { - return proto3.util.equals(Digest, a, b); - } + /** + * The b5 digest function. + * + * @generated from enum value: DIGEST_TYPE_B5 = 1; + */ + B5 = 1, } +/** + * Describes the enum buf.registry.module.v1.DigestType. + */ +export const DigestTypeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_buf_registry_module_v1_digest, 0); + diff --git a/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/download_service_connect.ts b/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/download_service_connect.ts deleted file mode 100644 index b0067de51..000000000 --- a/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/download_service_connect.ts +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2021-2024 The Connect Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// @generated by protoc-gen-connect-es v1.6.1 with parameter "ts_nocheck=false,target=ts" -// @generated from file buf/registry/module/v1/download_service.proto (package buf.registry.module.v1, syntax proto3) -/* eslint-disable */ - -import { DownloadRequest, DownloadResponse } from "./download_service_pb.js"; -import { MethodIdempotency, MethodKind } from "@bufbuild/protobuf"; - -/** - * Download contents. - * - * @generated from service buf.registry.module.v1.DownloadService - */ -export const DownloadService = { - typeName: "buf.registry.module.v1.DownloadService", - methods: { - /** - * Download the contents of multiple Modules, Labels, or Commits. - * - * Content consists of the .proto files, license files, and documentation files. - * - * @generated from rpc buf.registry.module.v1.DownloadService.Download - */ - download: { - name: "Download", - I: DownloadRequest, - O: DownloadResponse, - kind: MethodKind.Unary, - idempotency: MethodIdempotency.NoSideEffects, - }, - } -} as const; - diff --git a/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/download_service_pb.ts b/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/download_service_pb.ts index 98318ce4b..560e63cd3 100644 --- a/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/download_service_pb.ts +++ b/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/download_service_pb.ts @@ -12,61 +12,52 @@ // See the License for the specific language governing permissions and // limitations under the License. -// @generated by protoc-gen-es v1.10.0 with parameter "ts_nocheck=false,target=ts" +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" // @generated from file buf/registry/module/v1/download_service.proto (package buf.registry.module.v1, syntax proto3) /* eslint-disable */ -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Message, proto3 } from "@bufbuild/protobuf"; -import { ResourceRef } from "./resource_pb.js"; -import { File, FileType } from "./file_pb.js"; -import { Commit } from "./commit_pb.js"; +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Commit } from "./commit_pb"; +import { file_buf_registry_module_v1_commit } from "./commit_pb"; +import type { File, FileType } from "./file_pb"; +import { file_buf_registry_module_v1_file } from "./file_pb"; +import type { ResourceRef } from "./resource_pb"; +import { file_buf_registry_module_v1_resource } from "./resource_pb"; +import { file_buf_validate_validate } from "../../../validate/validate_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file buf/registry/module/v1/download_service.proto. + */ +export const file_buf_registry_module_v1_download_service: GenFile = /*@__PURE__*/ + fileDesc("Ci1idWYvcmVnaXN0cnkvbW9kdWxlL3YxL2Rvd25sb2FkX3NlcnZpY2UucHJvdG8SFmJ1Zi5yZWdpc3RyeS5tb2R1bGUudjEi+wIKD0Rvd25sb2FkUmVxdWVzdBJKCgZ2YWx1ZXMYASADKAsyLS5idWYucmVnaXN0cnkubW9kdWxlLnYxLkRvd25sb2FkUmVxdWVzdC5WYWx1ZUILukgIkgEFCAEQ+gEamwIKBVZhbHVlEkEKDHJlc291cmNlX3JlZhgBIAEoCzIjLmJ1Zi5yZWdpc3RyeS5tb2R1bGUudjEuUmVzb3VyY2VSZWZCBrpIA8gBARJICgpmaWxlX3R5cGVzGAIgAygOMiAuYnVmLnJlZ2lzdHJ5Lm1vZHVsZS52MS5GaWxlVHlwZUISukgPkgEMGAEiCIIBBRABIgEAEmYKBXBhdGhzGAMgAygJQle6SFSSAVEiT3JNGIAgMkReKFteLy5dW14vXT98W14vXVteLy5dfFteL117Myx9KSgvKFteLy5dW14vXT98W14vXVteLy5dfFteL117Myx9KSkqJLoBAVwSHQoVcGF0aHNfYWxsb3dfbm90X2V4aXN0GAQgASgIItABChBEb3dubG9hZFJlc3BvbnNlEkwKCGNvbnRlbnRzGAEgAygLMjAuYnVmLnJlZ2lzdHJ5Lm1vZHVsZS52MS5Eb3dubG9hZFJlc3BvbnNlLkNvbnRlbnRCCLpIBZIBAggBGm4KB0NvbnRlbnQSNgoGY29tbWl0GAEgASgLMh4uYnVmLnJlZ2lzdHJ5Lm1vZHVsZS52MS5Db21taXRCBrpIA8gBARIrCgVmaWxlcxgCIAMoCzIcLmJ1Zi5yZWdpc3RyeS5tb2R1bGUudjEuRmlsZTJ1Cg9Eb3dubG9hZFNlcnZpY2USYgoIRG93bmxvYWQSJy5idWYucmVnaXN0cnkubW9kdWxlLnYxLkRvd25sb2FkUmVxdWVzdBooLmJ1Zi5yZWdpc3RyeS5tb2R1bGUudjEuRG93bmxvYWRSZXNwb25zZSIDkAIBQk5aTGJ1Zi5idWlsZC9nZW4vZ28vYnVmYnVpbGQvcmVnaXN0cnkvcHJvdG9jb2xidWZmZXJzL2dvL2J1Zi9yZWdpc3RyeS9tb2R1bGUvdjFiBnByb3RvMw", [file_buf_registry_module_v1_commit, file_buf_registry_module_v1_file, file_buf_registry_module_v1_resource, file_buf_validate_validate]); /** * @generated from message buf.registry.module.v1.DownloadRequest */ -export class DownloadRequest extends Message { +export type DownloadRequest = Message<"buf.registry.module.v1.DownloadRequest"> & { /** * The references to get contents for. * * @generated from field: repeated buf.registry.module.v1.DownloadRequest.Value values = 1; */ - values: DownloadRequest_Value[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "buf.registry.module.v1.DownloadRequest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "values", kind: "message", T: DownloadRequest_Value, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): DownloadRequest { - return new DownloadRequest().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): DownloadRequest { - return new DownloadRequest().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): DownloadRequest { - return new DownloadRequest().fromJsonString(jsonString, options); - } + values: DownloadRequest_Value[]; +}; - static equals(a: DownloadRequest | PlainMessage | undefined, b: DownloadRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(DownloadRequest, a, b); - } -} +/** + * Describes the message buf.registry.module.v1.DownloadRequest. + * Use `create(DownloadRequestSchema)` to create a new message. + */ +export const DownloadRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_registry_module_v1_download_service, 0); /** * A request for content for a single reference. * * @generated from message buf.registry.module.v1.DownloadRequest.Value */ -export class DownloadRequest_Value extends Message { +export type DownloadRequest_Value = Message<"buf.registry.module.v1.DownloadRequest.Value"> & { /** * The reference to get content for. * @@ -88,7 +79,7 @@ export class DownloadRequest_Value extends Message { * * @generated from field: repeated buf.registry.module.v1.FileType file_types = 2; */ - fileTypes: FileType[] = []; + fileTypes: FileType[]; /** * Specific file paths to retrieve. @@ -112,7 +103,7 @@ export class DownloadRequest_Value extends Message { * * @generated from field: repeated string paths = 3; */ - paths: string[] = []; + paths: string[]; /** * Whether to allow file paths not to exist within the given module. @@ -124,84 +115,41 @@ export class DownloadRequest_Value extends Message { * * @generated from field: bool paths_allow_not_exist = 4; */ - pathsAllowNotExist = false; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "buf.registry.module.v1.DownloadRequest.Value"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "resource_ref", kind: "message", T: ResourceRef }, - { no: 2, name: "file_types", kind: "enum", T: proto3.getEnumType(FileType), repeated: true }, - { no: 3, name: "paths", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, - { no: 4, name: "paths_allow_not_exist", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): DownloadRequest_Value { - return new DownloadRequest_Value().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): DownloadRequest_Value { - return new DownloadRequest_Value().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): DownloadRequest_Value { - return new DownloadRequest_Value().fromJsonString(jsonString, options); - } - - static equals(a: DownloadRequest_Value | PlainMessage | undefined, b: DownloadRequest_Value | PlainMessage | undefined): boolean { - return proto3.util.equals(DownloadRequest_Value, a, b); - } -} + pathsAllowNotExist: boolean; +}; + +/** + * Describes the message buf.registry.module.v1.DownloadRequest.Value. + * Use `create(DownloadRequest_ValueSchema)` to create a new message. + */ +export const DownloadRequest_ValueSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_registry_module_v1_download_service, 0, 0); /** * @generated from message buf.registry.module.v1.DownloadResponse */ -export class DownloadResponse extends Message { +export type DownloadResponse = Message<"buf.registry.module.v1.DownloadResponse"> & { /** * The Contents of the references in the same order as requested. * * @generated from field: repeated buf.registry.module.v1.DownloadResponse.Content contents = 1; */ - contents: DownloadResponse_Content[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "buf.registry.module.v1.DownloadResponse"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "contents", kind: "message", T: DownloadResponse_Content, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): DownloadResponse { - return new DownloadResponse().fromBinary(bytes, options); - } + contents: DownloadResponse_Content[]; +}; - static fromJson(jsonValue: JsonValue, options?: Partial): DownloadResponse { - return new DownloadResponse().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): DownloadResponse { - return new DownloadResponse().fromJsonString(jsonString, options); - } - - static equals(a: DownloadResponse | PlainMessage | undefined, b: DownloadResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(DownloadResponse, a, b); - } -} +/** + * Describes the message buf.registry.module.v1.DownloadResponse. + * Use `create(DownloadResponseSchema)` to create a new message. + */ +export const DownloadResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_registry_module_v1_download_service, 1); /** * Content for a single Commit. * * @generated from message buf.registry.module.v1.DownloadResponse.Content */ -export class DownloadResponse_Content extends Message { +export type DownloadResponse_Content = Message<"buf.registry.module.v1.DownloadResponse.Content"> & { /** * The Commit associated with the Content. * @@ -222,34 +170,34 @@ export class DownloadResponse_Content extends Message * * @generated from field: repeated buf.registry.module.v1.File files = 2; */ - files: File[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "buf.registry.module.v1.DownloadResponse.Content"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "commit", kind: "message", T: Commit }, - { no: 2, name: "files", kind: "message", T: File, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): DownloadResponse_Content { - return new DownloadResponse_Content().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): DownloadResponse_Content { - return new DownloadResponse_Content().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): DownloadResponse_Content { - return new DownloadResponse_Content().fromJsonString(jsonString, options); - } - - static equals(a: DownloadResponse_Content | PlainMessage | undefined, b: DownloadResponse_Content | PlainMessage | undefined): boolean { - return proto3.util.equals(DownloadResponse_Content, a, b); - } -} + files: File[]; +}; + +/** + * Describes the message buf.registry.module.v1.DownloadResponse.Content. + * Use `create(DownloadResponse_ContentSchema)` to create a new message. + */ +export const DownloadResponse_ContentSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_registry_module_v1_download_service, 1, 0); + +/** + * Download contents. + * + * @generated from service buf.registry.module.v1.DownloadService + */ +export const DownloadService: GenService<{ + /** + * Download the contents of multiple Modules, Labels, or Commits. + * + * Content consists of the .proto files, license files, and documentation files. + * + * @generated from rpc buf.registry.module.v1.DownloadService.Download + */ + download: { + methodKind: "unary"; + input: typeof DownloadRequestSchema; + output: typeof DownloadResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_buf_registry_module_v1_download_service, 0); diff --git a/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/file_pb.ts b/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/file_pb.ts index f991cafcc..85d8e217a 100644 --- a/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/file_pb.ts +++ b/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/file_pb.ts @@ -12,12 +12,56 @@ // See the License for the specific language governing permissions and // limitations under the License. -// @generated by protoc-gen-es v1.10.0 with parameter "ts_nocheck=false,target=ts" +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" // @generated from file buf/registry/module/v1/file.proto (package buf.registry.module.v1, syntax proto3) /* eslint-disable */ -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Message, proto3 } from "@bufbuild/protobuf"; +import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import { file_buf_validate_validate } from "../../../validate/validate_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file buf/registry/module/v1/file.proto. + */ +export const file_buf_registry_module_v1_file: GenFile = /*@__PURE__*/ + fileDesc("CiFidWYvcmVnaXN0cnkvbW9kdWxlL3YxL2ZpbGUucHJvdG8SFmJ1Zi5yZWdpc3RyeS5tb2R1bGUudjEifAoERmlsZRJjCgRwYXRoGAEgASgJQlW6SFLIAQFyTRiAIDJEXihbXi8uXVteL10/fFteL11bXi8uXXxbXi9dezMsfSkoLyhbXi8uXVteL10/fFteL11bXi8uXXxbXi9dezMsfSkpKiS6AQFcEg8KB2NvbnRlbnQYAiABKAwqZAoIRmlsZVR5cGUSGQoVRklMRV9UWVBFX1VOU1BFQ0lGSUVEEAASEwoPRklMRV9UWVBFX1BST1RPEAESEQoNRklMRV9UWVBFX0RPQxACEhUKEUZJTEVfVFlQRV9MSUNFTlNFEANCTlpMYnVmLmJ1aWxkL2dlbi9nby9idWZidWlsZC9yZWdpc3RyeS9wcm90b2NvbGJ1ZmZlcnMvZ28vYnVmL3JlZ2lzdHJ5L21vZHVsZS92MWIGcHJvdG8z", [file_buf_validate_validate]); + +/** + * A file that can be read or written to from disk. + * + * A File includes a path and associated content. + * Files are purposefully simple, and do not include attributes such as permissions. + * + * @generated from message buf.registry.module.v1.File + */ +export type File = Message<"buf.registry.module.v1.File"> & { + /** + * The path of the File. + * + * The path must be relative, and cannot contain any "." or ".." components. + * The separator "/" must be used. + * + * @generated from field: string path = 1; + */ + path: string; + + /** + * The content of the File. + * + * May be empty. + * + * @generated from field: bytes content = 2; + */ + content: Uint8Array; +}; + +/** + * Describes the message buf.registry.module.v1.File. + * Use `create(FileSchema)` to create a new message. + */ +export const FileSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_registry_module_v1_file, 0); /** * A specific file type. @@ -55,68 +99,10 @@ export enum FileType { */ LICENSE = 3, } -// Retrieve enum metadata with: proto3.getEnumType(FileType) -proto3.util.setEnumType(FileType, "buf.registry.module.v1.FileType", [ - { no: 0, name: "FILE_TYPE_UNSPECIFIED" }, - { no: 1, name: "FILE_TYPE_PROTO" }, - { no: 2, name: "FILE_TYPE_DOC" }, - { no: 3, name: "FILE_TYPE_LICENSE" }, -]); /** - * A file that can be read or written to from disk. - * - * A File includes a path and associated content. - * Files are purposefully simple, and do not include attributes such as permissions. - * - * @generated from message buf.registry.module.v1.File + * Describes the enum buf.registry.module.v1.FileType. */ -export class File extends Message { - /** - * The path of the File. - * - * The path must be relative, and cannot contain any "." or ".." components. - * The separator "/" must be used. - * - * @generated from field: string path = 1; - */ - path = ""; - - /** - * The content of the File. - * - * May be empty. - * - * @generated from field: bytes content = 2; - */ - content = new Uint8Array(0); - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "buf.registry.module.v1.File"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "content", kind: "scalar", T: 12 /* ScalarType.BYTES */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): File { - return new File().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): File { - return new File().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): File { - return new File().fromJsonString(jsonString, options); - } - - static equals(a: File | PlainMessage | undefined, b: File | PlainMessage | undefined): boolean { - return proto3.util.equals(File, a, b); - } -} +export const FileTypeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_buf_registry_module_v1_file, 0); diff --git a/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/graph_pb.ts b/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/graph_pb.ts index ecff87b8f..dfdca4494 100644 --- a/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/graph_pb.ts +++ b/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/graph_pb.ts @@ -12,110 +12,79 @@ // See the License for the specific language governing permissions and // limitations under the License. -// @generated by protoc-gen-es v1.10.0 with parameter "ts_nocheck=false,target=ts" +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" // @generated from file buf/registry/module/v1/graph.proto (package buf.registry.module.v1, syntax proto3) /* eslint-disable */ -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Message, proto3 } from "@bufbuild/protobuf"; -import { Commit } from "./commit_pb.js"; +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Commit } from "./commit_pb"; +import { file_buf_registry_module_v1_commit } from "./commit_pb"; +import { file_buf_registry_priv_extension_v1beta1_extension } from "../../priv/extension/v1beta1/extension_pb"; +import { file_buf_validate_validate } from "../../../validate/validate_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file buf/registry/module/v1/graph.proto. + */ +export const file_buf_registry_module_v1_graph: GenFile = /*@__PURE__*/ + fileDesc("CiJidWYvcmVnaXN0cnkvbW9kdWxlL3YxL2dyYXBoLnByb3RvEhZidWYucmVnaXN0cnkubW9kdWxlLnYxIqoCCgVHcmFwaBI5Cgdjb21taXRzGAEgAygLMh4uYnVmLnJlZ2lzdHJ5Lm1vZHVsZS52MS5Db21taXRCCLpIBZIBAggBEjEKBWVkZ2VzGAIgAygLMiIuYnVmLnJlZ2lzdHJ5Lm1vZHVsZS52MS5HcmFwaC5FZGdlGiYKBE5vZGUSHgoJY29tbWl0X2lkGAEgASgJQgu6SAjIAQFyA4gCARqCAQoERWRnZRI9Cglmcm9tX25vZGUYASABKAsyIi5idWYucmVnaXN0cnkubW9kdWxlLnYxLkdyYXBoLk5vZGVCBrpIA8gBARI7Cgd0b19ub2RlGAIgASgLMiIuYnVmLnJlZ2lzdHJ5Lm1vZHVsZS52MS5HcmFwaC5Ob2RlQga6SAPIAQE6BurFKwIQAUJOWkxidWYuYnVpbGQvZ2VuL2dvL2J1ZmJ1aWxkL3JlZ2lzdHJ5L3Byb3RvY29sYnVmZmVycy9nby9idWYvcmVnaXN0cnkvbW9kdWxlL3YxYgZwcm90bzM", [file_buf_registry_module_v1_commit, file_buf_registry_priv_extension_v1beta1_extension, file_buf_validate_validate]); /** * A dependency graph. * * @generated from message buf.registry.module.v1.Graph */ -export class Graph extends Message { +export type Graph = Message<"buf.registry.module.v1.Graph"> & { /** * The nodes of the graph, each of which are Commits. * * @generated from field: repeated buf.registry.module.v1.Commit commits = 1; */ - commits: Commit[] = []; + commits: Commit[]; /** * The edges of the graph. * * @generated from field: repeated buf.registry.module.v1.Graph.Edge edges = 2; */ - edges: Graph_Edge[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "buf.registry.module.v1.Graph"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "commits", kind: "message", T: Commit, repeated: true }, - { no: 2, name: "edges", kind: "message", T: Graph_Edge, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Graph { - return new Graph().fromBinary(bytes, options); - } + edges: Graph_Edge[]; +}; - static fromJson(jsonValue: JsonValue, options?: Partial): Graph { - return new Graph().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Graph { - return new Graph().fromJsonString(jsonString, options); - } - - static equals(a: Graph | PlainMessage | undefined, b: Graph | PlainMessage | undefined): boolean { - return proto3.util.equals(Graph, a, b); - } -} +/** + * Describes the message buf.registry.module.v1.Graph. + * Use `create(GraphSchema)` to create a new message. + */ +export const GraphSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_registry_module_v1_graph, 0); /** * A node in the dependency graph. * * @generated from message buf.registry.module.v1.Graph.Node */ -export class Graph_Node extends Message { +export type Graph_Node = Message<"buf.registry.module.v1.Graph.Node"> & { /** * The commit of the node. * * @generated from field: string commit_id = 1; */ - commitId = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "buf.registry.module.v1.Graph.Node"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "commit_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); + commitId: string; +}; - static fromBinary(bytes: Uint8Array, options?: Partial): Graph_Node { - return new Graph_Node().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Graph_Node { - return new Graph_Node().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Graph_Node { - return new Graph_Node().fromJsonString(jsonString, options); - } - - static equals(a: Graph_Node | PlainMessage | undefined, b: Graph_Node | PlainMessage | undefined): boolean { - return proto3.util.equals(Graph_Node, a, b); - } -} +/** + * Describes the message buf.registry.module.v1.Graph.Node. + * Use `create(Graph_NodeSchema)` to create a new message. + */ +export const Graph_NodeSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_registry_module_v1_graph, 0, 0); /** * An edge in the dependency graph. * * @generated from message buf.registry.module.v1.Graph.Edge */ -export class Graph_Edge extends Message { +export type Graph_Edge = Message<"buf.registry.module.v1.Graph.Edge"> & { /** * The Node of the start of the edge. * @@ -129,33 +98,12 @@ export class Graph_Edge extends Message { * @generated from field: buf.registry.module.v1.Graph.Node to_node = 2; */ toNode?: Graph_Node; +}; - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "buf.registry.module.v1.Graph.Edge"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "from_node", kind: "message", T: Graph_Node }, - { no: 2, name: "to_node", kind: "message", T: Graph_Node }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Graph_Edge { - return new Graph_Edge().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Graph_Edge { - return new Graph_Edge().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Graph_Edge { - return new Graph_Edge().fromJsonString(jsonString, options); - } - - static equals(a: Graph_Edge | PlainMessage | undefined, b: Graph_Edge | PlainMessage | undefined): boolean { - return proto3.util.equals(Graph_Edge, a, b); - } -} +/** + * Describes the message buf.registry.module.v1.Graph.Edge. + * Use `create(Graph_EdgeSchema)` to create a new message. + */ +export const Graph_EdgeSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_registry_module_v1_graph, 0, 1); diff --git a/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/graph_service_connect.ts b/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/graph_service_connect.ts deleted file mode 100644 index 1ad95803f..000000000 --- a/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/graph_service_connect.ts +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2021-2024 The Connect Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// @generated by protoc-gen-connect-es v1.6.1 with parameter "ts_nocheck=false,target=ts" -// @generated from file buf/registry/module/v1/graph_service.proto (package buf.registry.module.v1, syntax proto3) -/* eslint-disable */ - -import { GetGraphRequest, GetGraphResponse } from "./graph_service_pb.js"; -import { MethodIdempotency, MethodKind } from "@bufbuild/protobuf"; - -/** - * Get dependency graphs. - * - * @generated from service buf.registry.module.v1.GraphService - */ -export const GraphService = { - typeName: "buf.registry.module.v1.GraphService", - methods: { - /** - * Get a dependency graph that includes the given Commits. - * - * Commits will be resolved via the given ResourceRefs, and all Commits will be included in the - * graph, along with their dependencies. - * - * A dependency graph is a directed acyclic graph. - * - * @generated from rpc buf.registry.module.v1.GraphService.GetGraph - */ - getGraph: { - name: "GetGraph", - I: GetGraphRequest, - O: GetGraphResponse, - kind: MethodKind.Unary, - idempotency: MethodIdempotency.NoSideEffects, - }, - } -} as const; - diff --git a/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/graph_service_pb.ts b/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/graph_service_pb.ts index eefe9ccdb..3c210b0d7 100644 --- a/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/graph_service_pb.ts +++ b/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/graph_service_pb.ts @@ -12,19 +12,29 @@ // See the License for the specific language governing permissions and // limitations under the License. -// @generated by protoc-gen-es v1.10.0 with parameter "ts_nocheck=false,target=ts" +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" // @generated from file buf/registry/module/v1/graph_service.proto (package buf.registry.module.v1, syntax proto3) /* eslint-disable */ -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Message, proto3 } from "@bufbuild/protobuf"; -import { ResourceRef } from "./resource_pb.js"; -import { Graph } from "./graph_pb.js"; +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Graph } from "./graph_pb"; +import { file_buf_registry_module_v1_graph } from "./graph_pb"; +import type { ResourceRef } from "./resource_pb"; +import { file_buf_registry_module_v1_resource } from "./resource_pb"; +import { file_buf_validate_validate } from "../../../validate/validate_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file buf/registry/module/v1/graph_service.proto. + */ +export const file_buf_registry_module_v1_graph_service: GenFile = /*@__PURE__*/ + fileDesc("CipidWYvcmVnaXN0cnkvbW9kdWxlL3YxL2dyYXBoX3NlcnZpY2UucHJvdG8SFmJ1Zi5yZWdpc3RyeS5tb2R1bGUudjEiWgoPR2V0R3JhcGhSZXF1ZXN0EkcKDXJlc291cmNlX3JlZnMYASADKAsyIy5idWYucmVnaXN0cnkubW9kdWxlLnYxLlJlc291cmNlUmVmQgu6SAiSAQUIARD6ASJIChBHZXRHcmFwaFJlc3BvbnNlEjQKBWdyYXBoGAEgASgLMh0uYnVmLnJlZ2lzdHJ5Lm1vZHVsZS52MS5HcmFwaEIGukgDyAEBMnIKDEdyYXBoU2VydmljZRJiCghHZXRHcmFwaBInLmJ1Zi5yZWdpc3RyeS5tb2R1bGUudjEuR2V0R3JhcGhSZXF1ZXN0GiguYnVmLnJlZ2lzdHJ5Lm1vZHVsZS52MS5HZXRHcmFwaFJlc3BvbnNlIgOQAgFCTlpMYnVmLmJ1aWxkL2dlbi9nby9idWZidWlsZC9yZWdpc3RyeS9wcm90b2NvbGJ1ZmZlcnMvZ28vYnVmL3JlZ2lzdHJ5L21vZHVsZS92MWIGcHJvdG8z", [file_buf_registry_module_v1_graph, file_buf_registry_module_v1_resource, file_buf_validate_validate]); /** * @generated from message buf.registry.module.v1.GetGraphRequest */ -export class GetGraphRequest extends Message { +export type GetGraphRequest = Message<"buf.registry.module.v1.GetGraphRequest"> & { /** * The references to resolve to Commits to include in the graph. * @@ -40,72 +50,56 @@ export class GetGraphRequest extends Message { * * @generated from field: repeated buf.registry.module.v1.ResourceRef resource_refs = 1; */ - resourceRefs: ResourceRef[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "buf.registry.module.v1.GetGraphRequest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "resource_refs", kind: "message", T: ResourceRef, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): GetGraphRequest { - return new GetGraphRequest().fromBinary(bytes, options); - } + resourceRefs: ResourceRef[]; +}; - static fromJson(jsonValue: JsonValue, options?: Partial): GetGraphRequest { - return new GetGraphRequest().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): GetGraphRequest { - return new GetGraphRequest().fromJsonString(jsonString, options); - } - - static equals(a: GetGraphRequest | PlainMessage | undefined, b: GetGraphRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(GetGraphRequest, a, b); - } -} +/** + * Describes the message buf.registry.module.v1.GetGraphRequest. + * Use `create(GetGraphRequestSchema)` to create a new message. + */ +export const GetGraphRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_registry_module_v1_graph_service, 0); /** * @generated from message buf.registry.module.v1.GetGraphResponse */ -export class GetGraphResponse extends Message { +export type GetGraphResponse = Message<"buf.registry.module.v1.GetGraphResponse"> & { /** * The Graph calculated for the Commits. * * @generated from field: buf.registry.module.v1.Graph graph = 1; */ graph?: Graph; +}; - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "buf.registry.module.v1.GetGraphResponse"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "graph", kind: "message", T: Graph }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): GetGraphResponse { - return new GetGraphResponse().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): GetGraphResponse { - return new GetGraphResponse().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): GetGraphResponse { - return new GetGraphResponse().fromJsonString(jsonString, options); - } +/** + * Describes the message buf.registry.module.v1.GetGraphResponse. + * Use `create(GetGraphResponseSchema)` to create a new message. + */ +export const GetGraphResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_registry_module_v1_graph_service, 1); - static equals(a: GetGraphResponse | PlainMessage | undefined, b: GetGraphResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(GetGraphResponse, a, b); - } -} +/** + * Get dependency graphs. + * + * @generated from service buf.registry.module.v1.GraphService + */ +export const GraphService: GenService<{ + /** + * Get a dependency graph that includes the given Commits. + * + * Commits will be resolved via the given ResourceRefs, and all Commits will be included in the + * graph, along with their dependencies. + * + * A dependency graph is a directed acyclic graph. + * + * @generated from rpc buf.registry.module.v1.GraphService.GetGraph + */ + getGraph: { + methodKind: "unary"; + input: typeof GetGraphRequestSchema; + output: typeof GetGraphResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_buf_registry_module_v1_graph_service, 0); diff --git a/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/label_pb.ts b/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/label_pb.ts index 80945a42e..9a0ae5e35 100644 --- a/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/label_pb.ts +++ b/packages/connect-web-bench/src/gen/connectweb/buf/registry/module/v1/label_pb.ts @@ -12,70 +12,23 @@ // See the License for the specific language governing permissions and // limitations under the License. -// @generated by protoc-gen-es v1.10.0 with parameter "ts_nocheck=false,target=ts" +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" // @generated from file buf/registry/module/v1/label.proto (package buf.registry.module.v1, syntax proto3) /* eslint-disable */ -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Message, proto3, Timestamp } from "@bufbuild/protobuf"; +import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import { file_buf_registry_priv_extension_v1beta1_extension } from "../../priv/extension/v1beta1/extension_pb"; +import { file_buf_validate_validate } from "../../../validate/validate_pb"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { Message } from "@bufbuild/protobuf"; /** - * A check status for a Commit. - * - * Policy checks are an enterprise-only feature - contact us to learn more! - * - * @generated from enum buf.registry.module.v1.CommitCheckStatus + * Describes the file buf/registry/module/v1/label.proto. */ -export enum CommitCheckStatus { - /** - * @generated from enum value: COMMIT_CHECK_STATUS_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * Policy checks were not enabled when the Commit was created. - * - * @generated from enum value: COMMIT_CHECK_STATUS_DISABLED = 1; - */ - DISABLED = 1, - - /** - * The Commit did not fail any policy checks and therefore did not need review. - * - * @generated from enum value: COMMIT_CHECK_STATUS_PASSED = 2; - */ - PASSED = 2, - - /** - * The Commit has not yet been reviewed after failing policy checks and is pending. - * - * @generated from enum value: COMMIT_CHECK_STATUS_PENDING = 3; - */ - PENDING = 3, - - /** - * The Commit was reviewed after failing policy checks and was rejected. - * - * @generated from enum value: COMMIT_CHECK_STATUS_REJECTED = 4; - */ - REJECTED = 4, - - /** - * The Commit was reviewed after failing policy checks and was approved. - * - * @generated from enum value: COMMIT_CHECK_STATUS_APPROVED = 5; - */ - APPROVED = 5, -} -// Retrieve enum metadata with: proto3.getEnumType(CommitCheckStatus) -proto3.util.setEnumType(CommitCheckStatus, "buf.registry.module.v1.CommitCheckStatus", [ - { no: 0, name: "COMMIT_CHECK_STATUS_UNSPECIFIED" }, - { no: 1, name: "COMMIT_CHECK_STATUS_DISABLED" }, - { no: 2, name: "COMMIT_CHECK_STATUS_PASSED" }, - { no: 3, name: "COMMIT_CHECK_STATUS_PENDING" }, - { no: 4, name: "COMMIT_CHECK_STATUS_REJECTED" }, - { no: 5, name: "COMMIT_CHECK_STATUS_APPROVED" }, -]); +export const file_buf_registry_module_v1_label: GenFile = /*@__PURE__*/ + fileDesc("CiJidWYvcmVnaXN0cnkvbW9kdWxlL3YxL2xhYmVsLnByb3RvEhZidWYucmVnaXN0cnkubW9kdWxlLnYxIscECgVMYWJlbBIXCgJpZBgBIAEoCUILukgIyAEBcgOIAgESNwoLY3JlYXRlX3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESNwoLdXBkYXRlX3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESMAoMYXJjaGl2ZV90aW1lGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIZCgRuYW1lGAUgASgJQgu6SAjIAQFyAxj6ARIdCghvd25lcl9pZBgGIAEoCUILukgIyAEBcgOIAgESHgoJbW9kdWxlX2lkGAcgASgJQgu6SAjIAQFyA4gCARIeCgljb21taXRfaWQYCCABKAlCC7pICMgBAXIDiAIBEicKEnVwZGF0ZWRfYnlfdXNlcl9pZBgJIAEoCUILukgI2AEBcgOIAgES1QEKEmNvbW1pdF9jaGVja19zdGF0ZRgKIAEoCzIoLmJ1Zi5yZWdpc3RyeS5tb2R1bGUudjEuQ29tbWl0Q2hlY2tTdGF0ZUKOAbpIigG6AYMBCh9sYWJlbF9jb21taXRfY2hlY2tfc3RhdGVfc3RhdHVzEkZjb21taXRfY2hlY2tfc3RhdGUgbXVzdCBoYXZlIGEgc3RhdHVzIG9mIERJU0FCTEVELCBQQVNTRUQsIG9yIEFQUFJPVkVEGhh0aGlzLnN0YXR1cyBpbiBbMSwgMiwgNV3IAQE6BurFKwIQASKTAQoQQ29tbWl0Q2hlY2tTdGF0ZRJGCgZzdGF0dXMYASABKA4yKS5idWYucmVnaXN0cnkubW9kdWxlLnYxLkNvbW1pdENoZWNrU3RhdHVzQgu6SAjIAQGCAQIQARI3Cgt1cGRhdGVfdGltZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBASLLAQoITGFiZWxSZWYSFgoCaWQYASABKAlCCLpIBXIDiAIBSAASNQoEbmFtZRgCIAEoCzIlLmJ1Zi5yZWdpc3RyeS5tb2R1bGUudjEuTGFiZWxSZWYuTmFtZUgAGlgKBE5hbWUSGQoFb3duZXIYASABKAlCCrpIB8gBAXICGCASGQoGbW9kdWxlGAIgASgJQgm6SAZyBBACGGQSGgoFbGFiZWwYAyABKAlCC7pICMgBAXIDGPoBOgbqxSsCCAFCDgoFdmFsdWUSBbpIAggBIlAKDlNjb3BlZExhYmVsUmVmEhYKAmlkGAEgASgJQgi6SAVyA4gCAUgAEg4KBG5hbWUYAiABKAlIADoG6sUrAggBQg4KBXZhbHVlEgW6SAIIASrfAQoRQ29tbWl0Q2hlY2tTdGF0dXMSIwofQ09NTUlUX0NIRUNLX1NUQVRVU19VTlNQRUNJRklFRBAAEiAKHENPTU1JVF9DSEVDS19TVEFUVVNfRElTQUJMRUQQARIeChpDT01NSVRfQ0hFQ0tfU1RBVFVTX1BBU1NFRBACEh8KG0NPTU1JVF9DSEVDS19TVEFUVVNfUEVORElORxADEiAKHENPTU1JVF9DSEVDS19TVEFUVVNfUkVKRUNURUQQBBIgChxDT01NSVRfQ0hFQ0tfU1RBVFVTX0FQUFJPVkVEEAVCTlpMYnVmLmJ1aWxkL2dlbi9nby9idWZidWlsZC9yZWdpc3RyeS9wcm90b2NvbGJ1ZmZlcnMvZ28vYnVmL3JlZ2lzdHJ5L21vZHVsZS92MWIGcHJvdG8z", [file_buf_registry_priv_extension_v1beta1_extension, file_buf_validate_validate, file_google_protobuf_timestamp]); /** * A label on a specific Module. @@ -84,13 +37,13 @@ proto3.util.setEnumType(CommitCheckStatus, "buf.registry.module.v1.CommitCheckSt * * @generated from message buf.registry.module.v1.Label */ -export class Label extends Message