diff --git a/.changeset/serious-toys-repeat.md b/.changeset/serious-toys-repeat.md new file mode 100644 index 00000000000..bcb2b71609a --- /dev/null +++ b/.changeset/serious-toys-repeat.md @@ -0,0 +1,12 @@ +--- +"wrangler": minor +--- + +Reintroduces some internal refactorings of wrangler dev servers (including `wrangler dev`, `wrangler dev --remote`, and `unstable_dev()`). + +These changes were released in 3.13.0 and reverted in 3.13.1 -- we believe the changes are now more stable and ready for release again. + +There are no changes required for developers to opt-in. Improvements include: + +- fewer 'address in use' errors upon reloads +- upon config/source file changes, requests are buffered to guarantee the response is from the new version of the Worker diff --git a/fixtures/dev-env/.gitignore b/fixtures/dev-env/.gitignore new file mode 100644 index 00000000000..1521c8b7652 --- /dev/null +++ b/fixtures/dev-env/.gitignore @@ -0,0 +1 @@ +dist diff --git a/fixtures/dev-env/package.json b/fixtures/dev-env/package.json new file mode 100644 index 00000000000..11103f0de5a --- /dev/null +++ b/fixtures/dev-env/package.json @@ -0,0 +1,25 @@ +{ + "name": "dev-env", + "version": "1.0.1", + "private": true, + "description": "", + "license": "ISC", + "author": "", + "main": "src/index.js", + "scripts": { + "test": "npx vitest run", + "test:ci": "npx vitest run", + "test:watch": "npx vitest", + "type:tests": "tsc -p ./tests/tsconfig.json" + }, + "devDependencies": { + "@types/ws": "^8.5.7", + "@cloudflare/workers-tsconfig": "workspace:^", + "get-port": "^7.0.0", + "miniflare": "3.20231025.1", + "undici": "^5.23.0", + "wrangler": "workspace:*", + "ws": "^8.14.2" + }, + "dependencies": {} +} diff --git a/fixtures/dev-env/tests/index.test.ts b/fixtures/dev-env/tests/index.test.ts new file mode 100644 index 00000000000..a30da78cbad --- /dev/null +++ b/fixtures/dev-env/tests/index.test.ts @@ -0,0 +1,556 @@ +import assert from "node:assert"; +import getPort from "get-port"; +import { + Miniflare, + type Response as MiniflareResponse, + type MiniflareOptions, + Log, +} from "miniflare"; +import * as undici from "undici"; +import { WebSocket } from "ws"; +import { beforeEach, afterEach, describe, test, expect, vi } from "vitest"; +import { unstable_DevEnv as DevEnv } from "wrangler"; +import type { ProxyData } from "wrangler/src/api"; +import type { StartDevWorkerOptions } from "wrangler/src/api/startDevWorker/types"; +import type { EsbuildBundle } from "wrangler/src/dev/use-esbuild"; + +const fakeBundle = {} as EsbuildBundle; + +let devEnv: DevEnv; +let mf: Miniflare | undefined; +let res: MiniflareResponse | undici.Response; +let ws: WebSocket | undefined; +let fireAndForgetPromises: Promise[] = []; + +type OptionalKeys = Omit & Partial>; + +beforeEach(() => { + devEnv = new DevEnv(); + mf = undefined; + res = undefined as any; + ws = undefined; +}); +afterEach(async () => { + await Promise.allSettled(fireAndForgetPromises); + await devEnv?.teardown(); + await mf?.dispose(); + await ws?.close(); + + vi.resetAllMocks(); +}); + +async function fakeStartUserWorker(options: { + script: string; + name?: string; + mfOpts?: Partial; + config?: OptionalKeys; +}) { + const config: StartDevWorkerOptions = { + ...options.config, + name: options.name ?? "test-worker", + script: { contents: options.script }, + }; + const mfOpts: MiniflareOptions = Object.assign( + { + port: undefined, + inspectorPort: 0, + modules: true, + compatibilityDate: "2023-08-01", + name: config.name, + script: options.script, + log: Object.assign(new Log(), { error() {} }), // TODO: remove when this bug is fixed https://jira.cfdata.org/browse/DEVX-983 + }, + options.mfOpts + ); + + assert("script" in mfOpts); + + fakeConfigUpdate(config); + fakeReloadStart(config); + + const worker = devEnv.startWorker(config); + const { proxyWorker } = await devEnv.proxy.ready.promise; + const proxyWorkerUrl = await proxyWorker.ready; + const inspectorProxyWorkerUrl = await proxyWorker.unsafeGetDirectURL( + "InspectorProxyWorker" + ); + + mf = new Miniflare(mfOpts); + + const userWorkerUrl = await mf.ready; + const userWorkerInspectorUrl = await mf.getInspectorURL(); + fakeReloadComplete(config, mfOpts, userWorkerUrl, userWorkerInspectorUrl); + + return { + worker, + mf, + mfOpts, + config, + userWorkerUrl, + userWorkerInspectorUrl, + proxyWorkerUrl, + inspectorProxyWorkerUrl, + }; +} + +async function fakeUserWorkerChanges({ + script, + mfOpts, + config, +}: { + script?: string; + mfOpts: MiniflareOptions; + config: StartDevWorkerOptions; +}) { + assert(mf); + assert("script" in mfOpts); + + config = { + ...config, + script: { + ...config.script, + ...(script ? { contents: script } : undefined), + }, + }; + mfOpts = { + ...mfOpts, + script: script ?? mfOpts.script, + }; + + fakeReloadStart(config); + + await mf.setOptions(mfOpts); + + const userWorkerUrl = await mf.ready; + const userWorkerInspectorUrl = await mf.getInspectorURL(); + fakeReloadComplete( + config, + mfOpts, + userWorkerUrl, + userWorkerInspectorUrl, + 1000 + ); + + return { mfOpts, config, mf, userWorkerUrl, userWorkerInspectorUrl }; +} + +function fireAndForgetFakeUserWorkerChanges( + ...args: Parameters +) { + // fire and forget the reload -- this let's us test request buffering + const promise = fakeUserWorkerChanges(...args); + fireAndForgetPromises.push(promise); +} + +function fakeConfigUpdate(config: StartDevWorkerOptions) { + devEnv.proxy.onConfigUpdate({ + type: "configUpdate", + config, + }); + + return config; // convenience to allow calling and defining new config inline but also store the new object +} +function fakeReloadStart(config: StartDevWorkerOptions) { + devEnv.proxy.onReloadStart({ + type: "reloadStart", + config, + bundle: fakeBundle, + }); + + return config; +} +function fakeReloadComplete( + config: StartDevWorkerOptions, + mfOpts: MiniflareOptions, + userWorkerUrl: URL, + userWorkerInspectorUrl: URL, + delay = 100 +) { + const proxyData: ProxyData = { + userWorkerUrl: { + protocol: userWorkerUrl.protocol, + hostname: userWorkerUrl.hostname, + port: userWorkerUrl.port, + }, + userWorkerInspectorUrl: { + protocol: userWorkerInspectorUrl.protocol, + hostname: userWorkerInspectorUrl.hostname, + port: userWorkerInspectorUrl.port, + pathname: `/core:user:${config.name}`, + }, + userWorkerInnerUrlOverrides: { + protocol: config?.dev?.urlOverrides?.secure ? "https:" : "http:", + hostname: config?.dev?.urlOverrides?.hostname, + }, + headers: {}, + liveReload: config.dev?.liveReload, + }; + + setTimeout(() => { + devEnv.proxy.onReloadComplete({ + type: "reloadComplete", + config, + bundle: fakeBundle, + proxyData, + }); + }, delay); + + return { config, mfOpts }; // convenience to allow calling and defining new config/mfOpts inline but also store the new objects +} + +describe("startDevWorker: ProxyController", () => { + test("ProxyWorker buffers requests while runtime reloads", async () => { + const run = await fakeStartUserWorker({ + script: ` + export default { + fetch() { + return new Response("body:1"); + } + } + `, + }); + + res = await run.worker.fetch("http://dummy"); + await expect(res.text()).resolves.toBe("body:1"); + + fireAndForgetFakeUserWorkerChanges({ + mfOpts: run.mfOpts, + config: run.config, + script: run.mfOpts.script.replace("1", "2"), + }); + + res = await run.worker.fetch("http://dummy"); + await expect(res.text()).resolves.toBe("body:2"); + }); + + test("InspectorProxyWorker discovery endpoints + devtools websocket connection", async () => { + const run = await fakeStartUserWorker({ + script: ` + export default { + fetch() { + console.log('Inside mock user worker'); + + return new Response("body:1"); + } + } + `, + }); + + await devEnv.proxy.ready; + res = await undici.fetch(`http://${run.inspectorProxyWorkerUrl.host}/json`); + + await expect(res.json()).resolves.toBeInstanceOf(Array); + + ws = new WebSocket( + `ws://${run.inspectorProxyWorkerUrl.host}/core:user:${run.config.name}` + ); + const openPromise = new Promise((resolve) => { + ws?.addEventListener("open", resolve); + }); + const consoleAPICalledPromise = new Promise((resolve) => { + ws?.addEventListener("message", (event) => { + assert(typeof event.data === "string"); + if (event.data.includes("Runtime.consoleAPICalled")) { + resolve(JSON.parse(event.data)); + } + }); + }); + const executionContextCreatedPromise = new Promise((resolve) => { + ws?.addEventListener("message", (event) => { + assert(typeof event.data === "string"); + if (event.data.includes("Runtime.executionContextCreated")) { + resolve(JSON.parse(event.data)); + } + }); + }); + + await openPromise; + await run.worker.fetch("http://localhost"); + + await expect(consoleAPICalledPromise).resolves.toMatchObject({ + method: "Runtime.consoleAPICalled", + params: { + args: expect.arrayContaining([ + { type: "string", value: "Inside mock user worker" }, + ]), + }, + }); + await expect(executionContextCreatedPromise).resolves.toMatchObject({ + method: "Runtime.executionContextCreated", + params: { + context: { id: expect.any(Number) }, + }, + }); + }); + + test("User worker exception", async () => { + const consoleErrorSpy = vi.spyOn(console, "error"); + + const run = await fakeStartUserWorker({ + script: ` + export default { + fetch() { + throw new Error('Boom!'); + + return new Response("body:1"); + } + } + `, + }); + + res = await run.worker.fetch("http://dummy"); + await expect(res.text()).resolves.toBe("Error: Boom!"); + + await new Promise((r) => setTimeout(r, 100)); // allow some time for the error to be logged (TODO: replace with retry/waitUntil helper) + expect(consoleErrorSpy).toBeCalledWith( + expect.stringContaining("Error: Boom!") + ); + + // test changes causing a new error cause the new error to propogate + fireAndForgetFakeUserWorkerChanges({ + script: ` + export default { + fetch() { + throw new Error('Boom 2!'); + + return new Response("body:2"); + } + } + `, + mfOpts: run.mfOpts, + config: run.config, + }); + + res = await run.worker.fetch("http://dummy"); + await expect(res.text()).resolves.toBe("Error: Boom 2!"); + + await new Promise((r) => setTimeout(r, 100)); // allow some time for the error to be logged (TODO: replace with retry/waitUntil helper) + expect(consoleErrorSpy).toBeCalledWith( + expect.stringContaining("Error: Boom 2!") + ); + + // test eyeball requests receive the pretty error page + fireAndForgetFakeUserWorkerChanges({ + script: ` + export default { + fetch() { + const e = new Error('Boom 3!'); + + // this is how errors are serialised after they are caught by wrangler/miniflare3 middlewares + const error = { name: e.name, message: e.message, stack: e.stack }; + return Response.json(error, { + status: 500, + headers: { "MF-Experimental-Error-Stack": "true" }, + }); + } + } + `, + mfOpts: run.mfOpts, + config: run.config, + }); + + const proxyWorkerUrl = await devEnv.proxy.proxyWorker?.ready; + assert(proxyWorkerUrl); + res = await undici.fetch(proxyWorkerUrl, { + headers: { Accept: "text/html" }, + }); + await expect(res.text()).resolves.toEqual( + expect.stringContaining(`

Boom 3!

`) // pretty error page html snippet + ); + + // test further changes that fix the code + fireAndForgetFakeUserWorkerChanges({ + script: ` + export default { + fetch() { + return new Response("body:3"); + } + } + `, + mfOpts: run.mfOpts, + config: run.config, + }); + + res = await run.worker.fetch("http://dummy"); + await expect(res.text()).resolves.toBe("body:3"); + + consoleErrorSpy.mockReset(); + res = await run.worker.fetch("http://dummy"); + await expect(res.text()).resolves.toBe("body:3"); + + await new Promise((r) => setTimeout(r, 100)); // allow some time for the error to be logged (TODO: replace with retry/waitUntil helper) + expect(consoleErrorSpy).not.toHaveBeenCalled(); + }); + + test("config.dev.{server,inspector} changes, restart the server instance", async () => { + const run = await fakeStartUserWorker({ + script: ` + export default { + fetch() { + return new Response("body:1"); + } + } + `, + config: { + dev: { + server: { port: await getPort() }, + inspector: { port: await getPort() }, + }, + }, + }); + + res = await run.worker.fetch("http://dummy"); + await expect(res.text()).resolves.toBe("body:1"); + + const oldPort = run.config.dev?.server?.port; + res = await undici.fetch(`http://127.0.0.1:${oldPort}`); + await expect(res.text()).resolves.toBe("body:1"); + + const config2 = fakeConfigUpdate({ + ...run.config, + dev: { + server: { port: await getPort() }, + inspector: { port: await getPort() }, + }, + }); + fakeReloadStart(config2); + fakeReloadComplete( + config2, + run.mfOpts, + run.userWorkerUrl, + run.userWorkerInspectorUrl + ); + + const newPort = config2.dev?.server?.port; + + res = await run.worker.fetch("http://dummy"); + await expect(res.text()).resolves.toBe("body:1"); + + res = await undici.fetch(`http://127.0.0.1:${newPort}`); + await expect(res.text()).resolves.toBe("body:1"); + + await expect( + undici.fetch(`http://127.0.0.1:${oldPort}`).then((r) => r.text()) + ).rejects.toMatchInlineSnapshot("[TypeError: fetch failed]"); + }); + + test("liveReload", async () => { + let resText: string; + const scriptRegex = / + `, + { html: true } + ); + } + }, + }); + + return htmlRewriter.transform(response); +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 97381ccef27..3779289b699 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -106,6 +106,30 @@ importers: specifier: workspace:* version: link:../../packages/wrangler + fixtures/dev-env: + devDependencies: + '@cloudflare/workers-tsconfig': + specifier: workspace:^ + version: link:../../packages/workers-tsconfig + '@types/ws': + specifier: ^8.5.7 + version: 8.5.9 + get-port: + specifier: ^7.0.0 + version: 7.0.0 + miniflare: + specifier: 3.20231025.1 + version: link:../../packages/miniflare + undici: + specifier: ^5.23.0 + version: 5.23.0 + wrangler: + specifier: workspace:* + version: link:../../packages/wrangler + ws: + specifier: ^8.14.2 + version: 8.14.2 + fixtures/durable-objects-app: devDependencies: '@cloudflare/workers-tsconfig': @@ -631,7 +655,7 @@ importers: version: 8.4.0 pnpm: specifier: ^8.10.0 - version: 8.10.0 + version: 8.10.2 recast: specifier: ^0.22.0 version: 0.22.0 @@ -697,7 +721,7 @@ importers: version: 8.49.0 eslint-config-turbo: specifier: latest - version: 1.10.14(eslint@8.49.0) + version: 1.10.16(eslint@8.49.0) eslint-plugin-import: specifier: 2.26.x version: 2.26.0(@typescript-eslint/parser@6.7.2)(eslint@8.49.0) @@ -772,7 +796,7 @@ importers: version: 1.20231030.0 ws: specifier: ^8.11.0 - version: 8.13.0 + version: 8.14.2 youch: specifier: ^3.2.2 version: 3.2.3 @@ -791,7 +815,7 @@ importers: version: 4.20231025.0 '@microsoft/api-extractor': specifier: ^7.36.3 - version: 7.38.1(@types/node@18.16.10) + version: 7.38.2(@types/node@18.16.10) '@types/debug': specifier: ^4.1.7 version: 4.1.7 @@ -815,19 +839,19 @@ importers: version: 0.5.7 '@types/stoppable': specifier: ^1.1.1 - version: 1.1.2 + version: 1.1.3 '@types/which': specifier: ^2.0.1 version: 2.0.2 '@types/ws': specifier: ^8.5.3 - version: 8.5.3 + version: 8.5.9 '@typescript-eslint/eslint-plugin': specifier: ^6.9.0 - version: 6.9.1(@typescript-eslint/parser@6.9.1)(eslint@8.49.0)(typescript@5.0.4) + version: 6.10.0(@typescript-eslint/parser@6.10.0)(eslint@8.49.0)(typescript@5.0.4) '@typescript-eslint/parser': specifier: ^6.9.0 - version: 6.9.1(eslint@8.49.0)(typescript@5.0.4) + version: 6.10.0(eslint@8.49.0)(typescript@5.0.4) ava: specifier: ^5.2.0 version: 5.3.1(@ava/typescript@4.1.0) @@ -854,7 +878,7 @@ importers: version: 4.1.0(eslint@8.49.0) eslint-plugin-import: specifier: 2.26.x - version: 2.26.0(@typescript-eslint/parser@6.9.1)(eslint@8.49.0) + version: 2.26.0(@typescript-eslint/parser@6.10.0)(eslint@8.49.0) eslint-plugin-prettier: specifier: ^5.0.1 version: 5.0.1(eslint-config-prettier@9.0.0)(eslint@8.49.0)(prettier@3.0.3) @@ -937,7 +961,7 @@ importers: version: 5.23.0 wrangler: specifier: ^3.5.1 - version: 3.16.0 + version: link:../wrangler packages/prerelease-registry: dependencies: @@ -1499,7 +1523,7 @@ importers: version: 6.5.1 wrangler: specifier: ^3.0.0 - version: 3.16.0 + version: link:../wrangler packages: @@ -3534,6 +3558,7 @@ packages: resolution: {integrity: sha512-MVbXLbTcAotOPUj0pAMhVtJ+3/kFkwJqc5qNOleOZTv6QkZZABDMS21dSrSlVswEHwrpWC03e4fWytjqKvuE2A==} dependencies: mime: 3.0.0 + dev: false /@cloudflare/kv-asset-handler@0.3.0: resolution: {integrity: sha512-9CB/MKf/wdvbfkUdfrj+OkEwZ5b7rws0eogJ4293h+7b6KX5toPwym+VQKmILafNB9YiehqY0DlNrDcDhdWHSQ==} @@ -3641,6 +3666,7 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: false optional: true /@cloudflare/workerd-darwin-arm64@1.20231030.0: @@ -3649,6 +3675,7 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: false optional: true /@cloudflare/workerd-linux-64@1.20231030.0: @@ -3657,6 +3684,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: false optional: true /@cloudflare/workerd-linux-arm64@1.20231030.0: @@ -3665,6 +3693,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: false optional: true /@cloudflare/workerd-windows-64@1.20231030.0: @@ -3673,6 +3702,7 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: false optional: true /@cloudflare/workers-types@3.18.0: @@ -3744,6 +3774,7 @@ packages: esbuild: '*' dependencies: esbuild: 0.17.19 + dev: false /@esbuild-plugins/node-modules-polyfill@0.2.2(esbuild@0.17.19): resolution: {integrity: sha512-LXV7QsWJxRuMYvKbiznh+U1ilIop3g2TeKRzUxOG5X3YITc8JyyTa90BmLwqqv0YnX4v32CSlG+vsziZp9dMvA==} @@ -3753,6 +3784,7 @@ packages: esbuild: 0.17.19 escape-string-regexp: 4.0.0 rollup-plugin-node-polyfills: 0.2.1 + dev: false /@esbuild/android-arm64@0.16.17: resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==} @@ -4757,7 +4789,7 @@ packages: debug: 4.3.4(supports-color@9.2.2) espree: 9.5.2 globals: 13.20.0 - ignore: 5.2.4 + ignore: 5.2.0 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -4774,7 +4806,7 @@ packages: debug: 4.3.4(supports-color@9.2.2) espree: 9.6.1 globals: 13.20.0 - ignore: 5.2.4 + ignore: 5.2.0 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -5226,8 +5258,8 @@ packages: typescript: 4.6.4 dev: true - /@microsoft/api-extractor@7.38.1(@types/node@18.16.10): - resolution: {integrity: sha512-Hxu/RrVpItQ4dzeMyfwlk4lGQFsXMoMS7bYU9YUrpW16hH04PXLRiTXJz77WhBiSGNtTuufz2xh6hWyXhC9JuQ==} + /@microsoft/api-extractor@7.38.2(@types/node@18.16.10): + resolution: {integrity: sha512-JOARuhTwOcOMIU0O2czscoJy3ddVzIRhSA9/7T1ALuZSNphgWsPk+Bv4E7AnBDmTV4pP4lBNLtCxEHjjpWaytQ==} hasBin: true dependencies: '@microsoft/api-extractor-model': 7.28.2(@types/node@18.16.10) @@ -5235,7 +5267,7 @@ packages: '@microsoft/tsdoc-config': 0.16.1 '@rushstack/node-core-library': 3.61.0(@types/node@18.16.10) '@rushstack/rig-package': 0.5.1 - '@rushstack/ts-command-line': 4.17.0 + '@rushstack/ts-command-line': 4.17.1 colors: 1.2.5 lodash: 4.17.21 resolve: 1.22.2 @@ -5763,8 +5795,8 @@ packages: string-argv: 0.3.1 dev: true - /@rushstack/ts-command-line@4.17.0: - resolution: {integrity: sha512-1S0sXuEpZlzKTfvUqNs7Rg4leVkeLJc4Dn9cm+pSIn35a0Ztp5GxPN2gabD2G4RrQoQcJLLyVu+twzrJl1C0eA==} + /@rushstack/ts-command-line@4.17.1: + resolution: {integrity: sha512-2jweO1O57BYP5qdBGl6apJLB+aRIn5ccIRTPDyULh0KMwVzFqWtw6IZWt1qtUoZD/pD2RNkIOosH6Cq45rIYeg==} dependencies: '@types/argparse': 1.0.38 argparse: 1.0.10 @@ -6425,8 +6457,8 @@ packages: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true - /@types/stoppable@1.1.2: - resolution: {integrity: sha512-zRBGFTIdkCAdM4VDeFvka5NbD6JVfz7yEYzggKrXQ03ZplrZp5vqQPWHTw0wk81wer61dwi44Tp6FDDXoPBW5A==} + /@types/stoppable@1.1.3: + resolution: {integrity: sha512-7wGKIBJGE4ZxFjk9NkjAxZMLlIXroETqP1FJCdoSvKmEznwmBxQFmTB1dsCkAvVcNemuSZM5qkkd9HE/NL2JTw==} dependencies: '@types/node': 18.16.10 dev: true @@ -6475,6 +6507,12 @@ packages: '@types/node': 18.16.10 dev: true + /@types/ws@8.5.9: + resolution: {integrity: sha512-jbdrY0a8lxfdTp/+r7Z4CkycbOFN8WX+IOchLJr3juT/xzbJ8URyTVSJ/hvNdadTgM1mnedb47n+Y31GsFnQlg==} + dependencies: + '@types/node': 18.16.10 + dev: true + /@types/yargs-parser@20.2.1: resolution: {integrity: sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==} dev: true @@ -6544,7 +6582,7 @@ packages: graphemer: 1.4.0 ignore: 5.2.0 natural-compare-lite: 1.4.0 - semver: 7.5.4 + semver: 7.5.1 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: @@ -6600,15 +6638,15 @@ packages: graphemer: 1.4.0 ignore: 5.2.0 natural-compare-lite: 1.4.0 - semver: 7.5.4 + semver: 7.5.1 tsutils: 3.21.0(typescript@5.0.3) typescript: 5.0.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/eslint-plugin@6.7.2(@typescript-eslint/parser@6.7.2)(eslint@8.49.0)(typescript@4.9.5): - resolution: {integrity: sha512-ooaHxlmSgZTM6CHYAFRlifqh1OAr3PAQEwi7lhYhaegbnXrnh7CDcHmc3+ihhbQC7H0i4JF0psI5ehzkF6Yl6Q==} + /@typescript-eslint/eslint-plugin@6.10.0(@typescript-eslint/parser@6.10.0)(eslint@8.49.0)(typescript@5.0.4): + resolution: {integrity: sha512-uoLj4g2OTL8rfUQVx2AFO1hp/zja1wABJq77P6IclQs6I/m9GLrm7jCdgzZkvWdDCQf1uEvoa8s8CupsgWQgVg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -6618,26 +6656,26 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 6.7.2(eslint@8.49.0)(typescript@4.9.5) - '@typescript-eslint/scope-manager': 6.7.2 - '@typescript-eslint/type-utils': 6.7.2(eslint@8.49.0)(typescript@4.9.5) - '@typescript-eslint/utils': 6.7.2(eslint@8.49.0)(typescript@4.9.5) - '@typescript-eslint/visitor-keys': 6.7.2 + '@eslint-community/regexpp': 4.8.1 + '@typescript-eslint/parser': 6.10.0(eslint@8.49.0)(typescript@5.0.4) + '@typescript-eslint/scope-manager': 6.10.0 + '@typescript-eslint/type-utils': 6.10.0(eslint@8.49.0)(typescript@5.0.4) + '@typescript-eslint/utils': 6.10.0(eslint@8.49.0)(typescript@5.0.4) + '@typescript-eslint/visitor-keys': 6.10.0 debug: 4.3.4(supports-color@9.2.2) eslint: 8.49.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@4.9.5) - typescript: 4.9.5 + ts-api-utils: 1.0.3(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - supports-color - dev: false + dev: true - /@typescript-eslint/eslint-plugin@6.9.1(@typescript-eslint/parser@6.9.1)(eslint@8.49.0)(typescript@5.0.4): - resolution: {integrity: sha512-w0tiiRc9I4S5XSXXrMHOWgHgxbrBn1Ro+PmiYhSg2ZVdxrAJtQgzU5o2m1BfP6UOn7Vxcc6152vFjQfmZR4xEg==} + /@typescript-eslint/eslint-plugin@6.7.2(@typescript-eslint/parser@6.7.2)(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-ooaHxlmSgZTM6CHYAFRlifqh1OAr3PAQEwi7lhYhaegbnXrnh7CDcHmc3+ihhbQC7H0i4JF0psI5ehzkF6Yl6Q==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -6647,23 +6685,23 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.8.1 - '@typescript-eslint/parser': 6.9.1(eslint@8.49.0)(typescript@5.0.4) - '@typescript-eslint/scope-manager': 6.9.1 - '@typescript-eslint/type-utils': 6.9.1(eslint@8.49.0)(typescript@5.0.4) - '@typescript-eslint/utils': 6.9.1(eslint@8.49.0)(typescript@5.0.4) - '@typescript-eslint/visitor-keys': 6.9.1 + '@eslint-community/regexpp': 4.5.1 + '@typescript-eslint/parser': 6.7.2(eslint@8.49.0)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 6.7.2 + '@typescript-eslint/type-utils': 6.7.2(eslint@8.49.0)(typescript@4.9.5) + '@typescript-eslint/utils': 6.7.2(eslint@8.49.0)(typescript@4.9.5) + '@typescript-eslint/visitor-keys': 6.7.2 debug: 4.3.4(supports-color@9.2.2) eslint: 8.49.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.0.4) - typescript: 5.0.4 + ts-api-utils: 1.0.3(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: true + dev: false /@typescript-eslint/parser@5.59.9(eslint@8.49.0)(typescript@5.0.3): resolution: {integrity: sha512-FsPkRvBtcLQ/eVK1ivDiNYBjn3TGJdXy2fhXX+rc7czWl4ARwnpArwbihSOHI2Peg9WbtGHrbThfBUkZZGTtvQ==} @@ -6745,8 +6783,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.7.2(eslint@8.49.0)(typescript@4.9.5): - resolution: {integrity: sha512-KA3E4ox0ws+SPyxQf9iSI25R6b4Ne78ORhNHeVKrPQnoYsb9UhieoiRoJgrzgEeKGOXhcY1i8YtOeCHHTDa6Fw==} + /@typescript-eslint/parser@6.10.0(eslint@8.49.0)(typescript@5.0.4): + resolution: {integrity: sha512-+sZwIj+s+io9ozSxIWbNB5873OSdfeBEH/FR0re14WLI6BaKuSOnnwCJ2foUiu8uXf4dRp1UqHP0vrZ1zXGrog==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -6755,19 +6793,19 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.7.2 - '@typescript-eslint/types': 6.7.2 - '@typescript-eslint/typescript-estree': 6.7.2(typescript@4.9.5) - '@typescript-eslint/visitor-keys': 6.7.2 + '@typescript-eslint/scope-manager': 6.10.0 + '@typescript-eslint/types': 6.10.0 + '@typescript-eslint/typescript-estree': 6.10.0(typescript@5.0.4) + '@typescript-eslint/visitor-keys': 6.10.0 debug: 4.3.4(supports-color@9.2.2) eslint: 8.49.0 - typescript: 4.9.5 + typescript: 5.0.4 transitivePeerDependencies: - supports-color - dev: false + dev: true - /@typescript-eslint/parser@6.9.1(eslint@8.49.0)(typescript@5.0.4): - resolution: {integrity: sha512-C7AK2wn43GSaCUZ9do6Ksgi2g3mwFkMO3Cis96kzmgudoVaKyt62yNzJOktP0HDLb/iO2O0n2lBOzJgr6Q/cyg==} + /@typescript-eslint/parser@6.7.2(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-KA3E4ox0ws+SPyxQf9iSI25R6b4Ne78ORhNHeVKrPQnoYsb9UhieoiRoJgrzgEeKGOXhcY1i8YtOeCHHTDa6Fw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -6776,16 +6814,16 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.9.1 - '@typescript-eslint/types': 6.9.1 - '@typescript-eslint/typescript-estree': 6.9.1(typescript@5.0.4) - '@typescript-eslint/visitor-keys': 6.9.1 + '@typescript-eslint/scope-manager': 6.7.2 + '@typescript-eslint/types': 6.7.2 + '@typescript-eslint/typescript-estree': 6.7.2(typescript@4.9.5) + '@typescript-eslint/visitor-keys': 6.7.2 debug: 4.3.4(supports-color@9.2.2) eslint: 8.49.0 - typescript: 5.0.4 + typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: true + dev: false /@typescript-eslint/scope-manager@5.59.9: resolution: {integrity: sha512-8RA+E+w78z1+2dzvK/tGZ2cpGigBZ58VMEHDZtpE1v+LLjzrYGc8mMaTONSxKyEkz3IuXFM0IqYiGHlCsmlZxQ==} @@ -6803,6 +6841,14 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true + /@typescript-eslint/scope-manager@6.10.0: + resolution: {integrity: sha512-TN/plV7dzqqC2iPNf1KrxozDgZs53Gfgg5ZHyw8erd6jd5Ta/JIEcdCheXFt9b1NYb93a1wmIIVW/2gLkombDg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.10.0 + '@typescript-eslint/visitor-keys': 6.10.0 + dev: true + /@typescript-eslint/scope-manager@6.7.2: resolution: {integrity: sha512-bgi6plgyZjEqapr7u2mhxGR6E8WCzKNUFWNh6fkpVe9+yzRZeYtDTbsIBzKbcxI+r1qVWt6VIoMSNZ4r2A+6Yw==} engines: {node: ^16.0.0 || >=18.0.0} @@ -6811,14 +6857,6 @@ packages: '@typescript-eslint/visitor-keys': 6.7.2 dev: false - /@typescript-eslint/scope-manager@6.9.1: - resolution: {integrity: sha512-38IxvKB6NAne3g/+MyXMs2Cda/Sz+CEpmm+KLGEM8hx/CvnSRuw51i8ukfwB/B/sESdeTGet1NH1Wj7I0YXswg==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.9.1 - '@typescript-eslint/visitor-keys': 6.9.1 - dev: true - /@typescript-eslint/type-utils@5.59.9(eslint@8.49.0)(typescript@5.0.3): resolution: {integrity: sha512-ksEsT0/mEHg9e3qZu98AlSrONAQtrSTljL3ow9CGej8eRo7pe+yaC/mvTjptp23Xo/xIf2mLZKC6KPv4Sji26Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -6899,8 +6937,8 @@ packages: - supports-color dev: true - /@typescript-eslint/type-utils@6.7.2(eslint@8.49.0)(typescript@4.9.5): - resolution: {integrity: sha512-36F4fOYIROYRl0qj95dYKx6kybddLtsbmPIYNK0OBeXv2j9L5nZ17j9jmfy+bIDHKQgn2EZX+cofsqi8NPATBQ==} + /@typescript-eslint/type-utils@6.10.0(eslint@8.49.0)(typescript@5.0.4): + resolution: {integrity: sha512-wYpPs3hgTFblMYwbYWPT3eZtaDOjbLyIYuqpwuLBBqhLiuvJ+9sEp2gNRJEtR5N/c9G1uTtQQL5AhV0fEPJYcg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -6909,18 +6947,18 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.7.2(typescript@4.9.5) - '@typescript-eslint/utils': 6.7.2(eslint@8.49.0)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 6.10.0(typescript@5.0.4) + '@typescript-eslint/utils': 6.10.0(eslint@8.49.0)(typescript@5.0.4) debug: 4.3.4(supports-color@9.2.2) eslint: 8.49.0 - ts-api-utils: 1.0.3(typescript@4.9.5) - typescript: 4.9.5 + ts-api-utils: 1.0.3(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - supports-color - dev: false + dev: true - /@typescript-eslint/type-utils@6.9.1(eslint@8.49.0)(typescript@5.0.4): - resolution: {integrity: sha512-eh2oHaUKCK58qIeYp19F5V5TbpM52680sB4zNSz29VBQPTWIlE/hCj5P5B1AChxECe/fmZlspAWFuRniep1Skg==} + /@typescript-eslint/type-utils@6.7.2(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-36F4fOYIROYRl0qj95dYKx6kybddLtsbmPIYNK0OBeXv2j9L5nZ17j9jmfy+bIDHKQgn2EZX+cofsqi8NPATBQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -6929,15 +6967,15 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.9.1(typescript@5.0.4) - '@typescript-eslint/utils': 6.9.1(eslint@8.49.0)(typescript@5.0.4) + '@typescript-eslint/typescript-estree': 6.7.2(typescript@4.9.5) + '@typescript-eslint/utils': 6.7.2(eslint@8.49.0)(typescript@4.9.5) debug: 4.3.4(supports-color@9.2.2) eslint: 8.49.0 - ts-api-utils: 1.0.3(typescript@5.0.4) - typescript: 5.0.4 + ts-api-utils: 1.0.3(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: true + dev: false /@typescript-eslint/types@5.59.9: resolution: {integrity: sha512-uW8H5NRgTVneSVTfiCVffBb8AbwWSKg7qcA4Ot3JI3MPCJGsB4Db4BhvAODIIYE5mNj7Q+VJkK7JxmRhk2Lyjw==} @@ -6949,16 +6987,16 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /@typescript-eslint/types@6.10.0: + resolution: {integrity: sha512-36Fq1PWh9dusgo3vH7qmQAj5/AZqARky1Wi6WpINxB6SkQdY5vQoT2/7rW7uBIsPDcvvGCLi4r10p0OJ7ITAeg==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + /@typescript-eslint/types@6.7.2: resolution: {integrity: sha512-flJYwMYgnUNDAN9/GAI3l8+wTmvTYdv64fcH8aoJK76Y+1FCZ08RtI5zDerM/FYT5DMkAc+19E4aLmd5KqdFyg==} engines: {node: ^16.0.0 || >=18.0.0} dev: false - /@typescript-eslint/types@6.9.1: - resolution: {integrity: sha512-BUGslGOb14zUHOUmDB2FfT6SI1CcZEJYfF3qFwBeUrU6srJfzANonwRYHDpLBuzbq3HaoF2XL2hcr01c8f8OaQ==} - engines: {node: ^16.0.0 || >=18.0.0} - dev: true - /@typescript-eslint/typescript-estree@5.59.9(typescript@4.9.5): resolution: {integrity: sha512-pmM0/VQ7kUhd1QyIxgS+aRvMgw+ZljB3eDb+jYyp6d2bC0mQWLzUDF+DLwCTkQ3tlNyVsvZRXjFyV0LkU/aXjA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -7043,8 +7081,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@6.7.2(typescript@4.9.5): - resolution: {integrity: sha512-kiJKVMLkoSciGyFU0TOY0fRxnp9qq1AzVOHNeN1+B9erKFCJ4Z8WdjAkKQPP+b1pWStGFqezMLltxO+308dJTQ==} + /@typescript-eslint/typescript-estree@6.10.0(typescript@5.0.4): + resolution: {integrity: sha512-ek0Eyuy6P15LJVeghbWhSrBCj/vJpPXXR+EpaRZqou7achUWL8IdYnMSC5WHAeTWswYQuP2hAZgij/bC9fanBg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -7052,20 +7090,20 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.7.2 - '@typescript-eslint/visitor-keys': 6.7.2 + '@typescript-eslint/types': 6.10.0 + '@typescript-eslint/visitor-keys': 6.10.0 debug: 4.3.4(supports-color@9.2.2) globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@4.9.5) - typescript: 4.9.5 + ts-api-utils: 1.0.3(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - supports-color - dev: false + dev: true - /@typescript-eslint/typescript-estree@6.9.1(typescript@5.0.4): - resolution: {integrity: sha512-U+mUylTHfcqeO7mLWVQ5W/tMLXqVpRv61wm9ZtfE5egz7gtnmqVIw9ryh0mgIlkKk9rZLY3UHygsBSdB9/ftyw==} + /@typescript-eslint/typescript-estree@6.7.2(typescript@4.9.5): + resolution: {integrity: sha512-kiJKVMLkoSciGyFU0TOY0fRxnp9qq1AzVOHNeN1+B9erKFCJ4Z8WdjAkKQPP+b1pWStGFqezMLltxO+308dJTQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -7073,17 +7111,17 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.9.1 - '@typescript-eslint/visitor-keys': 6.9.1 + '@typescript-eslint/types': 6.7.2 + '@typescript-eslint/visitor-keys': 6.7.2 debug: 4.3.4(supports-color@9.2.2) globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.0.4) - typescript: 5.0.4 + ts-api-utils: 1.0.3(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: true + dev: false /@typescript-eslint/utils@5.59.9(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-1PuMYsju/38I5Ggblaeb98TOoUvjhRvLpLa1DoTOFaLWqaXl/1iQ1eGurTXgBY58NUdtfTXKP5xBq7q9NDaLKg==} @@ -7099,7 +7137,7 @@ packages: '@typescript-eslint/typescript-estree': 5.59.9(typescript@4.9.5) eslint: 8.42.0 eslint-scope: 5.1.1 - semver: 7.5.4 + semver: 7.5.1 transitivePeerDependencies: - supports-color - typescript @@ -7119,7 +7157,7 @@ packages: '@typescript-eslint/typescript-estree': 5.59.9(typescript@5.0.3) eslint: 8.49.0 eslint-scope: 5.1.1 - semver: 7.5.4 + semver: 7.5.1 transitivePeerDependencies: - supports-color - typescript @@ -7185,8 +7223,8 @@ packages: - typescript dev: true - /@typescript-eslint/utils@6.7.2(eslint@8.49.0)(typescript@4.9.5): - resolution: {integrity: sha512-ZCcBJug/TS6fXRTsoTkgnsvyWSiXwMNiPzBUani7hDidBdj1779qwM1FIAmpH4lvlOZNF3EScsxxuGifjpLSWQ==} + /@typescript-eslint/utils@6.10.0(eslint@8.49.0)(typescript@5.0.4): + resolution: {integrity: sha512-v+pJ1/RcVyRc0o4wAGux9x42RHmAjIGzPRo538Z8M1tVx6HOnoQBCX/NoadHQlZeC+QO2yr4nNSFWOoraZCAyg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -7194,18 +7232,18 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) '@types/json-schema': 7.0.13 '@types/semver': 7.5.1 - '@typescript-eslint/scope-manager': 6.7.2 - '@typescript-eslint/types': 6.7.2 - '@typescript-eslint/typescript-estree': 6.7.2(typescript@4.9.5) + '@typescript-eslint/scope-manager': 6.10.0 + '@typescript-eslint/types': 6.10.0 + '@typescript-eslint/typescript-estree': 6.10.0(typescript@5.0.4) eslint: 8.49.0 semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript - dev: false + dev: true - /@typescript-eslint/utils@6.9.1(eslint@8.49.0)(typescript@5.0.4): - resolution: {integrity: sha512-L1T0A5nFdQrMVunpZgzqPL6y2wVreSyHhKGZryS6jrEN7bD9NplVAyMryUhXsQ4TWLnZmxc2ekar/lSGIlprCA==} + /@typescript-eslint/utils@6.7.2(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-ZCcBJug/TS6fXRTsoTkgnsvyWSiXwMNiPzBUani7hDidBdj1779qwM1FIAmpH4lvlOZNF3EScsxxuGifjpLSWQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -7213,15 +7251,15 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) '@types/json-schema': 7.0.13 '@types/semver': 7.5.1 - '@typescript-eslint/scope-manager': 6.9.1 - '@typescript-eslint/types': 6.9.1 - '@typescript-eslint/typescript-estree': 6.9.1(typescript@5.0.4) + '@typescript-eslint/scope-manager': 6.7.2 + '@typescript-eslint/types': 6.7.2 + '@typescript-eslint/typescript-estree': 6.7.2(typescript@4.9.5) eslint: 8.49.0 semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript - dev: true + dev: false /@typescript-eslint/visitor-keys@5.59.9: resolution: {integrity: sha512-bT7s0td97KMaLwpEBckbzj/YohnvXtqbe2XgqNvTl6RJVakY5mvENOTPvw5u66nljfZxthESpDozs86U+oLY8Q==} @@ -7239,6 +7277,14 @@ packages: eslint-visitor-keys: 3.4.3 dev: true + /@typescript-eslint/visitor-keys@6.10.0: + resolution: {integrity: sha512-xMGluxQIEtOM7bqFCo+rCMh5fqI+ZxV5RUUOa29iVPz1OgCZrtc7rFnz5cLUazlkPKYqX+75iuDq7m0HQ48nCg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.10.0 + eslint-visitor-keys: 3.4.3 + dev: true + /@typescript-eslint/visitor-keys@6.7.2: resolution: {integrity: sha512-uVw9VIMFBUTz8rIeaUT3fFe8xIUx8r4ywAdlQv1ifH+6acn/XF8Y6rwJ7XNmkNMDrTW+7+vxFFPIF40nJCVsMQ==} engines: {node: ^16.0.0 || >=18.0.0} @@ -7247,14 +7293,6 @@ packages: eslint-visitor-keys: 3.4.1 dev: false - /@typescript-eslint/visitor-keys@6.9.1: - resolution: {integrity: sha512-MUaPUe/QRLEffARsmNfmpghuQkW436DvESW+h+M52w0coICHRfD6Np9/K6PdACwnrq1HmuLl+cSPZaJmeVPkSw==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.9.1 - eslint-visitor-keys: 3.4.3 - dev: true - /@vanilla-extract/babel-plugin-debug-ids@1.0.3: resolution: {integrity: sha512-vm4jYu1xhSa6ofQ9AhIpR3DkAp4c+eoR1Rpm8/TQI4DmWbmGbOjYRcqV0aWsfaIlNhN4kFuxFMKBNN9oG6iRzA==} dependencies: @@ -7627,7 +7665,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.1 + define-properties: 1.2.0 es-abstract: 1.22.1 es-array-method-boxes-properly: 1.0.0 get-intrinsic: 1.2.1 @@ -7649,7 +7687,7 @@ packages: dependencies: array-buffer-byte-length: 1.0.0 call-bind: 1.0.2 - define-properties: 1.2.1 + define-properties: 1.2.0 get-intrinsic: 1.2.1 is-array-buffer: 3.0.2 is-shared-array-buffer: 1.0.2 @@ -7673,6 +7711,7 @@ packages: resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} dependencies: printable-characters: 1.0.42 + dev: false /assert@2.0.0: resolution: {integrity: sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==} @@ -8030,6 +8069,7 @@ packages: /blake3-wasm@2.1.5: resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} + dev: false /blueimp-md5@2.19.0: resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} @@ -8300,6 +8340,7 @@ packages: tslib: 2.5.3 transitivePeerDependencies: - supports-color + dev: false patched: true /capnpc-ts@0.7.0: @@ -8723,7 +8764,7 @@ packages: js-string-escape: 1.0.1 lodash: 4.17.21 md5-hex: 3.0.1 - semver: 7.5.4 + semver: 7.5.1 well-known-symbols: 2.0.0 dev: true @@ -9012,6 +9053,7 @@ packages: /data-uri-to-buffer@2.0.2: resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} + dev: false /data-uri-to-buffer@3.0.1: resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==} @@ -9203,6 +9245,7 @@ packages: get-intrinsic: 1.2.1 gopd: 1.0.1 has-property-descriptors: 1.0.0 + dev: false /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} @@ -9228,6 +9271,7 @@ packages: define-data-property: 1.1.0 has-property-descriptors: 1.0.0 object-keys: 1.1.1 + dev: false /define-property@0.2.5: resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} @@ -9870,13 +9914,13 @@ packages: eslint: 8.49.0 dev: true - /eslint-config-turbo@1.10.14(eslint@8.49.0): - resolution: {integrity: sha512-ZeB+IcuFXy1OICkLuAplVa0euoYbhK+bMEQd0nH9+Lns18lgZRm33mVz/iSoH9VdUzl/1ZmFmoK+RpZc+8R80A==} + /eslint-config-turbo@1.10.16(eslint@8.49.0): + resolution: {integrity: sha512-O3NQI72bQHV7FvSC6lWj66EGx8drJJjuT1kuInn6nbMLOHdMBhSUX/8uhTAlHRQdlxZk2j9HtgFCIzSc93w42g==} peerDependencies: eslint: '>6.6.0' dependencies: eslint: 8.49.0 - eslint-plugin-turbo: 1.10.14(eslint@8.49.0) + eslint-plugin-turbo: 1.10.16(eslint@8.49.0) dev: false /eslint-import-resolver-node@0.3.7: @@ -9942,7 +9986,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.7.2)(eslint-import-resolver-node@0.3.7)(eslint@8.49.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.10.0)(eslint-import-resolver-node@0.3.7)(eslint@8.49.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -9963,15 +10007,15 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.7.2(eslint@8.49.0)(typescript@4.9.5) + '@typescript-eslint/parser': 6.10.0(eslint@8.49.0)(typescript@5.0.4) debug: 3.2.7 eslint: 8.49.0 eslint-import-resolver-node: 0.3.7 transitivePeerDependencies: - supports-color - dev: false + dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.9.1)(eslint-import-resolver-node@0.3.7)(eslint@8.49.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.7.2)(eslint-import-resolver-node@0.3.7)(eslint@8.49.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -9992,13 +10036,13 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.9.1(eslint@8.49.0)(typescript@5.0.4) + '@typescript-eslint/parser': 6.7.2(eslint@8.49.0)(typescript@4.9.5) debug: 3.2.7 eslint: 8.49.0 eslint-import-resolver-node: 0.3.7 transitivePeerDependencies: - supports-color - dev: true + dev: false /eslint-plugin-es@3.0.1(eslint@8.42.0): resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} @@ -10022,7 +10066,7 @@ packages: regexpp: 3.2.0 dev: true - /eslint-plugin-import@2.26.0(@typescript-eslint/parser@6.7.2)(eslint@8.49.0): + /eslint-plugin-import@2.26.0(@typescript-eslint/parser@6.10.0)(eslint@8.49.0): resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} engines: {node: '>=4'} peerDependencies: @@ -10032,14 +10076,14 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.7.2(eslint@8.49.0)(typescript@4.9.5) + '@typescript-eslint/parser': 6.10.0(eslint@8.49.0)(typescript@5.0.4) array-includes: 3.1.6 array.prototype.flat: 1.3.1 debug: 2.6.9(supports-color@9.2.2) doctrine: 2.1.0 eslint: 8.49.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.2)(eslint-import-resolver-node@0.3.7)(eslint@8.49.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.10.0)(eslint-import-resolver-node@0.3.7)(eslint@8.49.0) has: 1.0.3 is-core-module: 2.13.0 is-glob: 4.0.3 @@ -10051,9 +10095,9 @@ packages: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: false + dev: true - /eslint-plugin-import@2.26.0(@typescript-eslint/parser@6.9.1)(eslint@8.49.0): + /eslint-plugin-import@2.26.0(@typescript-eslint/parser@6.7.2)(eslint@8.49.0): resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} engines: {node: '>=4'} peerDependencies: @@ -10063,14 +10107,14 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.9.1(eslint@8.49.0)(typescript@5.0.4) + '@typescript-eslint/parser': 6.7.2(eslint@8.49.0)(typescript@4.9.5) array-includes: 3.1.6 array.prototype.flat: 1.3.1 debug: 2.6.9(supports-color@9.2.2) doctrine: 2.1.0 eslint: 8.49.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.9.1)(eslint-import-resolver-node@0.3.7)(eslint@8.49.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.2)(eslint-import-resolver-node@0.3.7)(eslint@8.49.0) has: 1.0.3 is-core-module: 2.13.0 is-glob: 4.0.3 @@ -10082,7 +10126,7 @@ packages: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: true + dev: false /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.42.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} @@ -10303,8 +10347,8 @@ packages: - typescript dev: true - /eslint-plugin-turbo@1.10.14(eslint@8.49.0): - resolution: {integrity: sha512-sBdBDnYr9AjT1g4lR3PBkZDonTrMnR4TvuGv5W0OiF7z9az1rI68yj2UHJZvjkwwcGu5mazWA1AfB0oaagpmfg==} + /eslint-plugin-turbo@1.10.16(eslint@8.49.0): + resolution: {integrity: sha512-ZjrR88MTN64PNGufSEcM0tf+V1xFYVbeiMeuIqr0aiABGomxFLo4DBkQ7WI4WzkZtWQSIA2sP+yxqSboEfL9MQ==} peerDependencies: eslint: '>6.6.0' dependencies: @@ -10554,6 +10598,7 @@ packages: /estree-walker@0.6.1: resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} + dev: false /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} @@ -11171,7 +11216,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.1 + define-properties: 1.2.0 es-abstract: 1.22.1 functions-have-names: 1.2.3 @@ -11220,11 +11265,17 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true + /get-port@7.0.0: + resolution: {integrity: sha512-mDHFgApoQd+azgMdwylJrv2DX47ywGq1i5VFJE7fZ0dttNq3iQMfsU4IvEgBHojA3KqEudyu7Vq+oN8kNaNkWw==} + engines: {node: '>=16'} + dev: true + /get-source@2.0.12: resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} dependencies: data-uri-to-buffer: 2.0.2 source-map: 0.6.1 + dev: false /get-stream@4.1.0: resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} @@ -11950,7 +12001,7 @@ packages: mute-stream: 0.0.8 ora: 5.4.1 run-async: 2.4.1 - rxjs: 7.8.0 + rxjs: 7.8.1 string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 @@ -13514,6 +13565,7 @@ packages: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: sourcemap-codec: 1.4.8 + dev: false /magic-string@0.30.3: resolution: {integrity: sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==} @@ -14120,29 +14172,6 @@ packages: engines: {node: '>=4'} dev: false - /miniflare@3.20231030.0: - resolution: {integrity: sha512-iCg1dNauUG+kNp7jizcNmV/1XFItuTDvD/6xIC34PrszgKxYCbBO2R72y5NEDJTwaqr5ohQI/320wuJ8GEe7nQ==} - engines: {node: '>=16.13'} - hasBin: true - dependencies: - acorn: 8.10.0 - acorn-walk: 8.2.0 - capnp-ts: 0.7.0(patch_hash=l4yimnxyvkiyj6alnps2ec3sii) - exit-hook: 2.2.1 - glob-to-regexp: 0.4.1 - source-map-support: 0.5.21 - stoppable: 1.1.0 - undici: 5.23.0 - workerd: 1.20231030.0 - ws: 8.13.0 - youch: 3.2.3 - zod: 3.22.3 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true - /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -14424,6 +14453,7 @@ packages: /node-forge@1.3.0: resolution: {integrity: sha512-08ARB91bUi6zNKzVmaj3QO7cr397uiDT2nJ63cHjyNtCTWIgvS47j3eT0WfzUwS9+6Z5YshRaoasFkXCKrIYbA==} engines: {node: '>= 6.13.0'} + dev: false /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} @@ -15180,8 +15210,8 @@ packages: irregular-plurals: 3.5.0 dev: true - /pnpm@8.10.0: - resolution: {integrity: sha512-nCy4Pyts9qJdjFgwC/mRl8fvO+hM8+dm8pBUtAuDtC+Kq6b8wxSp7PJ8APfOgKdXu0xgiADnrb4tKdxccFb1vg==} + /pnpm@8.10.2: + resolution: {integrity: sha512-B4IJPVumx62UYggbwe8HdQFqS0EJ7KHh/tzqbxEBQ69fUJk9s2xCfU+oxivjkgoyJNsS2nGdJGyhndnxgEjDPA==} engines: {node: '>=16.14'} hasBin: true dev: true @@ -15397,6 +15427,7 @@ packages: /printable-characters@1.0.42: resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} + dev: false /prism-react-renderer@1.3.5(react@18.2.0): resolution: {integrity: sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==} @@ -16257,16 +16288,19 @@ packages: estree-walker: 0.6.1 magic-string: 0.25.9 rollup-pluginutils: 2.8.2 + dev: false /rollup-plugin-node-polyfills@0.2.1: resolution: {integrity: sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==} dependencies: rollup-plugin-inject: 3.0.2 + dev: false /rollup-pluginutils@2.8.2: resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} dependencies: estree-walker: 0.6.1 + dev: false /rollup@3.25.1: resolution: {integrity: sha512-tywOR+rwIt5m2ZAWSe5AIJcTat8vGlnPFAv15ycCrw33t6iFsXZ6mzHVFh2psSjxQPmI+xgzMZZizUAukBI4aQ==} @@ -16401,6 +16435,7 @@ packages: engines: {node: '>=10'} dependencies: node-forge: 1.3.0 + dev: false /semiver@1.1.0: resolution: {integrity: sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==} @@ -16433,7 +16468,6 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 - dev: true /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} @@ -16785,6 +16819,7 @@ packages: /sourcemap-codec@1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} deprecated: Please use @jridgewell/sourcemap-codec instead + dev: false /space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} @@ -16863,6 +16898,7 @@ packages: dependencies: as-table: 1.0.55 get-source: 2.0.12 + dev: false /standard-as-callback@2.1.0: resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} @@ -16888,6 +16924,7 @@ packages: /stoppable@1.1.0: resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} engines: {node: '>=4', npm: '>=6'} + dev: false /stream-shift@1.0.1: resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} @@ -16973,21 +17010,21 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.1 + define-properties: 1.2.0 es-abstract: 1.22.1 /string.prototype.trimend@1.0.6: resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 - define-properties: 1.2.1 + define-properties: 1.2.0 es-abstract: 1.22.1 /string.prototype.trimstart@1.0.6: resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: call-bind: 1.0.2 - define-properties: 1.2.1 + define-properties: 1.2.0 es-abstract: 1.22.1 /string_decoder@0.10.31: @@ -18422,33 +18459,7 @@ packages: '@cloudflare/workerd-linux-64': 1.20231030.0 '@cloudflare/workerd-linux-arm64': 1.20231030.0 '@cloudflare/workerd-windows-64': 1.20231030.0 - - /wrangler@3.16.0: - resolution: {integrity: sha512-MIx35sSdFKE3hnfWB6xWUnrt3OiyKK+PQnc9kFLjksLESX0tLmEk1gdvThYHliY90kkelS+nbH48SUGTFAI5BA==} - engines: {node: '>=16.17.0'} - hasBin: true - dependencies: - '@cloudflare/kv-asset-handler': 0.2.0 - '@esbuild-plugins/node-globals-polyfill': 0.2.3(esbuild@0.17.19) - '@esbuild-plugins/node-modules-polyfill': 0.2.2(esbuild@0.17.19) - blake3-wasm: 2.1.5 - chokidar: 3.5.3 - esbuild: 0.17.19 - miniflare: 3.20231030.0 - nanoid: 3.3.6 - path-to-regexp: 6.2.0 - resolve.exports: 2.0.2 - selfsigned: 2.1.1 - source-map: 0.6.1 - source-map-support: 0.5.21 - xxhash-wasm: 1.0.1 - optionalDependencies: - fsevents: 2.3.2 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true + dev: false /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} @@ -18528,8 +18539,8 @@ packages: optional: true dev: true - /ws@8.13.0: - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + /ws@8.14.2: + resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -18599,6 +18610,7 @@ packages: /xxhash-wasm@1.0.1: resolution: {integrity: sha512-Lc9CTvDrH2vRoiaUzz25q7lRaviMhz90pkx6YxR9EPYtF99yOJnv2cB+CQ0hp/TLoqrUsk8z/W2EN31T568Azw==} + dev: false /y18n@4.0.3: resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} @@ -18718,6 +18730,7 @@ packages: cookie: 0.5.0 mustache: 4.2.0 stacktracey: 2.1.8 + dev: false /z-schema@5.0.3: resolution: {integrity: sha512-sGvEcBOTNum68x9jCpCVGPFJ6mWnkD0YxOcddDlJHRx3tKdB2q8pCHExMVZo/AV/6geuVJXG7hljDaWG8+5GDw==}