From fb36eff5e1b6257894f0d749647456d7419b18dd Mon Sep 17 00:00:00 2001 From: Alex Yang Date: Thu, 19 Sep 2024 12:32:10 -0700 Subject: [PATCH] fix: use Blob instead of File (#1231) --- .changeset/neat-maps-visit.md | 7 + .github/workflows/test.yml | 1 - packages/cloud/src/reader.ts | 22 +- packages/llamaindex/e2e/.env.ci | 1 + ...r-store.test.ts => pg-vector-store.e2e.ts} | 24 +- packages/llamaindex/e2e/package.json | 9 +- .../src/vector-store/PGVectorStore.ts | 19 +- packages/llamaindex/tests/package.json | 2 + .../tests/readers/llama-parse.test.ts | 176 ++++++++ pnpm-lock.yaml | 419 +++++++++++++++--- 10 files changed, 593 insertions(+), 87 deletions(-) create mode 100644 .changeset/neat-maps-visit.md create mode 100644 packages/llamaindex/e2e/.env.ci rename packages/llamaindex/e2e/node/vector-store/{pg-vector-store.test.ts => pg-vector-store.e2e.ts} (84%) create mode 100644 packages/llamaindex/tests/readers/llama-parse.test.ts diff --git a/.changeset/neat-maps-visit.md b/.changeset/neat-maps-visit.md new file mode 100644 index 0000000000..2ca86044e8 --- /dev/null +++ b/.changeset/neat-maps-visit.md @@ -0,0 +1,7 @@ +--- +"@llamaindex/cloud": patch +--- + +fix: backport for node.js 18 + +There could have one missing API in the node.js 18, so we need to backport it to make it work. diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index bf088f04dd..d90a101aa4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,7 +13,6 @@ concurrency: cancel-in-progress: true env: - POSTGRES_USER: runneradmin POSTGRES_HOST_AUTH_METHOD: trust jobs: diff --git a/packages/cloud/src/reader.ts b/packages/cloud/src/reader.ts index 0d21444005..e597647bef 100644 --- a/packages/cloud/src/reader.ts +++ b/packages/cloud/src/reader.ts @@ -229,20 +229,18 @@ export class LlamaParseReader extends FileReader { } // Create a job for the LlamaParse API - private async createJob( - data: Uint8Array, - fileName: string = "unknown", - ): Promise { + private async createJob(data: Uint8Array): Promise { // Load data, set the mime type - const { mime, extension } = await LlamaParseReader.getMimeType(data); + const { mime } = await LlamaParseReader.getMimeType(data); if (this.verbose) { - const name = fileName ? fileName : extension; - console.log(`Starting load for ${name} file`); + console.log("Started uploading the file"); } const body = { - file: new File([data], fileName, { type: mime }), + file: new Blob([data], { + type: mime, + }), language: this.language, parsing_instruction: this.parsingInstruction, skip_diagonal_text: this.skipDiagonalText, @@ -373,14 +371,10 @@ export class LlamaParseReader extends FileReader { * To be used with resultType = "text" and "markdown" * * @param {Uint8Array} fileContent - The content of the file to be loaded. - * @param {string} [fileName] - The optional name of the file to be loaded. * @return {Promise} A Promise object that resolves to an array of Document objects. */ - async loadDataAsContent( - fileContent: Uint8Array, - fileName?: string, - ): Promise { - return this.createJob(fileContent, fileName) + async loadDataAsContent(fileContent: Uint8Array): Promise { + return this.createJob(fileContent) .then(async (jobId) => { if (this.verbose) { console.log(`Started parsing the file under job id ${jobId}`); diff --git a/packages/llamaindex/e2e/.env.ci b/packages/llamaindex/e2e/.env.ci new file mode 100644 index 0000000000..080df233ef --- /dev/null +++ b/packages/llamaindex/e2e/.env.ci @@ -0,0 +1 @@ +POSTGRES_USER=runner diff --git a/packages/llamaindex/e2e/node/vector-store/pg-vector-store.test.ts b/packages/llamaindex/e2e/node/vector-store/pg-vector-store.e2e.ts similarity index 84% rename from packages/llamaindex/e2e/node/vector-store/pg-vector-store.test.ts rename to packages/llamaindex/e2e/node/vector-store/pg-vector-store.e2e.ts index 8edd5cd75b..4bb78b3782 100644 --- a/packages/llamaindex/e2e/node/vector-store/pg-vector-store.test.ts +++ b/packages/llamaindex/e2e/node/vector-store/pg-vector-store.e2e.ts @@ -1,3 +1,5 @@ +/* eslint-disable turbo/no-undeclared-env-vars */ +import { config } from "dotenv"; import { Document, VectorStoreQueryMode } from "llamaindex"; import { PGVectorStore } from "llamaindex/vector-store/PGVectorStore"; import assert from "node:assert"; @@ -5,15 +7,21 @@ import { test } from "node:test"; import pg from "pg"; import { registerTypes } from "pgvector/pg"; +config({ path: [".env.local", ".env", ".env.ci"] }); + let pgClient: pg.Client | pg.Pool; test.afterEach(async () => { await pgClient.end(); }); +const pgConfig = { + user: process.env.POSTGRES_USER ?? "user", + password: process.env.POSTGRES_PASSWORD ?? "password", + database: "llamaindex_node_test", +}; + await test("init with client", async () => { - pgClient = new pg.Client({ - database: "llamaindex_node_test", - }); + pgClient = new pg.Client(pgConfig); await pgClient.connect(); await pgClient.query("CREATE EXTENSION IF NOT EXISTS vector"); await registerTypes(pgClient); @@ -22,9 +30,7 @@ await test("init with client", async () => { }); await test("init with pool", async () => { - pgClient = new pg.Pool({ - database: "llamaindex_node_test", - }); + pgClient = new pg.Pool(pgConfig); await pgClient.query("CREATE EXTENSION IF NOT EXISTS vector"); const client = await pgClient.connect(); await registerTypes(client); @@ -34,9 +40,7 @@ await test("init with pool", async () => { }); await test("init without client", async () => { - const vectorStore = new PGVectorStore({ - database: "llamaindex_node_test", - }); + const vectorStore = new PGVectorStore(pgConfig); pgClient = (await vectorStore.client()) as pg.Client; assert.notDeepStrictEqual(pgClient, undefined); }); @@ -52,7 +56,7 @@ await test("simple node", async () => { embedding: [0.1, 0.2, 0.3], }); const vectorStore = new PGVectorStore({ - database: "llamaindex_node_test", + ...pgConfig, dimensions, schemaName, }); diff --git a/packages/llamaindex/e2e/package.json b/packages/llamaindex/e2e/package.json index 0f3f588ea4..473c3f2d08 100644 --- a/packages/llamaindex/e2e/package.json +++ b/packages/llamaindex/e2e/package.json @@ -4,14 +4,15 @@ "version": "0.0.7", "type": "module", "scripts": { - "e2e": "node --import tsx --import ./mock-register.js --test ./node/*.e2e.ts", - "e2e:nomock": "node --import tsx --test ./node/*.e2e.ts", - "e2e:updatesnap": "UPDATE_SNAPSHOT=1 node --import tsx --test ./node/*.e2e.ts" + "e2e": "node --import tsx --import ./mock-register.js --test ./node/**/*.e2e.ts", + "e2e:nomock": "node --import tsx --test ./node/**/*.e2e.ts", + "e2e:updatesnap": "UPDATE_SNAPSHOT=1 node --import tsx --test ./node/**/*.e2e.ts" }, "devDependencies": { - "@faker-js/faker": "^8.4.1", + "@faker-js/faker": "^9.0.1", "@types/node": "^22.5.1", "consola": "^3.2.3", + "dotenv": "^16.4.5", "llamaindex": "workspace:*", "tsx": "^4.19.0" } diff --git a/packages/llamaindex/src/vector-store/PGVectorStore.ts b/packages/llamaindex/src/vector-store/PGVectorStore.ts index 5f4be58524..70eef01124 100644 --- a/packages/llamaindex/src/vector-store/PGVectorStore.ts +++ b/packages/llamaindex/src/vector-store/PGVectorStore.ts @@ -20,11 +20,12 @@ import { Document, MetadataMode } from "@llamaindex/core/schema"; export const PGVECTOR_SCHEMA = "public"; export const PGVECTOR_TABLE = "llamaindex_embedding"; -export type PGVectorStoreConfig = { +export type PGVectorStoreConfig = Pick< + pg.ClientConfig, + "user" | "database" | "password" | "connectionString" +> & { schemaName?: string | undefined; tableName?: string | undefined; - database?: string | undefined; - connectionString?: string | undefined; dimensions?: number | undefined; embedModel?: BaseEmbedding | undefined; }; @@ -43,8 +44,12 @@ export class PGVectorStore private schemaName: string = PGVECTOR_SCHEMA; private tableName: string = PGVECTOR_TABLE; - private database: string | undefined = undefined; - private connectionString: string | undefined = undefined; + private user: pg.ClientConfig["user"] | undefined = undefined; + private password: pg.ClientConfig["password"] | undefined = undefined; + private database: pg.ClientConfig["database"] | undefined = undefined; + private connectionString: pg.ClientConfig["connectionString"] | undefined = + undefined; + private dimensions: number = 1536; private db?: pg.ClientBase; @@ -76,6 +81,8 @@ export class PGVectorStore super(config?.embedModel); this.schemaName = config?.schemaName ?? PGVECTOR_SCHEMA; this.tableName = config?.tableName ?? PGVECTOR_TABLE; + this.user = config?.user; + this.password = config?.password; this.database = config?.database; this.connectionString = config?.connectionString; this.dimensions = config?.dimensions ?? 1536; @@ -114,6 +121,8 @@ export class PGVectorStore // Create DB connection // Read connection params from env - see comment block above const db = new Client({ + user: this.user, + password: this.password, database: this.database, connectionString: this.connectionString, }); diff --git a/packages/llamaindex/tests/package.json b/packages/llamaindex/tests/package.json index bc8e3e07e3..36d09121a6 100644 --- a/packages/llamaindex/tests/package.json +++ b/packages/llamaindex/tests/package.json @@ -7,7 +7,9 @@ "test": "vitest run" }, "devDependencies": { + "@faker-js/faker": "^9.0.1", "llamaindex": "workspace:*", + "msw": "^2.4.8", "vitest": "^2.0.5" } } diff --git a/packages/llamaindex/tests/readers/llama-parse.test.ts b/packages/llamaindex/tests/readers/llama-parse.test.ts new file mode 100644 index 0000000000..7649758c17 --- /dev/null +++ b/packages/llamaindex/tests/readers/llama-parse.test.ts @@ -0,0 +1,176 @@ +/** + * DO NOT PUT THIS TEST CASE FROM VITEST TO NODE.JS TEST RUNNER + * + * msw has side effect that will replace the global fetch function, + * which will cause the test runner to hang indefinitely for some reason. + * but vitest will start new process for each test case, so it's safe to use msw in vitest, + * in the meanwhile, node.js test runner only run in single process. + */ +import { faker } from "@faker-js/faker"; +import { http, HttpResponse } from "msw"; +import { setupServer } from "msw/node"; +import { fileURLToPath } from "node:url"; +import { afterAll, afterEach, beforeAll, expect, test } from "vitest"; + +const jobsHashMap = new Map(); + +const handlers = [ + http.post("https://api.cloud.llamaindex.ai/api/v1/parsing/upload", () => { + return HttpResponse.json({ + id: faker.string.uuid(), + }); + }), + http.get( + "https://api.cloud.llamaindex.ai/api/v1/parsing/job/:id", + ({ params }): HttpResponse => { + const jobId = params.id as string; + if (jobsHashMap.has(jobId)) { + return HttpResponse.json({ + id: jobId, + status: "SUCCESS", + }); + } else { + jobsHashMap.set(jobId, true); + } + return HttpResponse.json({ + id: jobId, + status: "PENDING", + }); + }, + ), + http.get( + "https://api.cloud.llamaindex.ai/api/v1/parsing/job/:id/result/markdown", + () => { + const job_metadata = { + credits_used: faker.number.int({ min: 1, max: 10 }), + credits_max: 1000, + job_credits_usage: faker.number.int({ min: 1, max: 10 }), + job_pages: faker.number.int({ min: 0, max: 5 }), + job_is_cache_hit: faker.datatype.boolean(), + }; + return HttpResponse.json({ + markdown: faker.lorem.paragraphs({ + min: 3, + max: 1000, + }), + job_metadata, + }); + }, + ), + http.get( + "https://api.cloud.llamaindex.ai/api/v1/parsing/job/:id/result/text", + () => { + const job_metadata = { + credits_used: faker.number.int({ min: 1, max: 10 }), + credits_max: 1000, + job_credits_usage: faker.number.int({ min: 1, max: 10 }), + job_pages: faker.number.int({ min: 0, max: 5 }), + job_is_cache_hit: faker.datatype.boolean(), + }; + return HttpResponse.json({ + text: faker.lorem.paragraphs({ + min: 3, + max: 1000, + }), + job_metadata, + }); + }, + ), + http.get( + "https://api.cloud.llamaindex.ai/api/v1/parsing/job/:id/result/json", + () => { + const pages = Array.from({ length: 1 }, () => ({ + page: 1, + text: faker.lorem.paragraphs(2), + md: `# ${faker.lorem.sentence()}\n\n${faker.lorem.paragraph()}`, + images: [ + { + name: faker.system.fileName(), + height: faker.number.int({ min: 100, max: 500 }), + width: faker.number.int({ min: 600, max: 1600 }), + x: faker.number.int({ min: 0, max: 50 }), + y: faker.number.int({ min: 0, max: 50 }), + original_width: faker.number.int({ min: 1800, max: 2000 }), + original_height: faker.number.int({ min: 400, max: 600 }), + }, + ], + items: [ + { + type: "heading", + lvl: 1, + value: faker.lorem.sentence(), + md: `# ${faker.lorem.sentence()}`, + bBox: { + x: faker.number.float({ min: 20, max: 40 }), + y: faker.number.float({ min: 20, max: 30 }), + w: faker.number.float({ min: 300, max: 400 }), + h: faker.number.float({ min: 30, max: 50 }), + }, + }, + { + type: "table", + rows: [ + [faker.lorem.word(), faker.lorem.sentence()], + [faker.lorem.word(), faker.lorem.sentence()], + [faker.lorem.word(), faker.lorem.sentence()], + [faker.lorem.word(), faker.lorem.sentence()], + ], + md: faker.lorem.sentences(4), + isPerfectTable: faker.datatype.boolean(), + csv: faker.lorem.sentences(4), + }, + { + type: "text", + value: faker.lorem.paragraphs(2), + md: faker.lorem.paragraphs(2), + bBox: { + x: faker.number.float({ min: 5, max: 10 }), + y: faker.number.float({ min: 20, max: 30 }), + w: faker.number.float({ min: 800, max: 900 }), + h: faker.number.float({ min: 30, max: 50 }), + }, + }, + ], + })); + + const response = { + pages, + job_metadata: { + credits_used: faker.number.int({ min: 1, max: 10 }), + credits_max: 1000, + job_credits_usage: faker.number.int({ min: 1, max: 10 }), + job_pages: faker.number.int({ min: 0, max: 5 }), + job_is_cache_hit: faker.datatype.boolean(), + }, + }; + return HttpResponse.json(response); + }, + ), +]; + +const server = setupServer(...handlers); + +beforeAll(() => { + server.listen({ + onUnhandledRequest: "error", + }); +}); + +afterEach(() => { + server.resetHandlers(); +}); + +afterAll(() => { + server.close(); +}); + +test("llama parse should return a successful document", async () => { + const { LlamaParseReader } = await import("@llamaindex/cloud/reader"); + const reader = new LlamaParseReader({ + verbose: false, + apiKey: "llx-fake-api-key", + }); + const fileUrl = new URL("../../../../examples/data/TOS.pdf", import.meta.url); + const documents = await reader.loadData(fileURLToPath(fileUrl)); + expect(documents.length).toBe(1); +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8931b8db07..5379f25489 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -245,7 +245,7 @@ importers: version: 5.6.2 vitest: specifier: ^2.0.5 - version: 2.1.1(@edge-runtime/vm@4.0.3)(@types/node@22.5.4)(happy-dom@15.7.4)(terser@5.32.0) + version: 2.1.1(@edge-runtime/vm@4.0.3)(@types/node@22.5.4)(happy-dom@15.7.4)(msw@2.4.8(typescript@5.6.2))(terser@5.32.0) webpack: specifier: ^5.94.0 version: 5.94.0(@swc/core@1.7.22(@swc/helpers@0.5.13)) @@ -421,7 +421,7 @@ importers: version: link:.. vitest: specifier: ^2.0.5 - version: 2.1.1(@edge-runtime/vm@4.0.3)(@types/node@22.5.4)(happy-dom@15.7.4)(terser@5.32.0) + version: 2.1.1(@edge-runtime/vm@4.0.3)(@types/node@22.5.5)(happy-dom@15.7.4)(msw@2.4.8(typescript@5.6.2))(terser@5.32.0) packages/env: dependencies: @@ -455,7 +455,7 @@ importers: version: 1.1.2 vitest: specifier: ^2.0.5 - version: 2.1.1(@edge-runtime/vm@4.0.3)(@types/node@22.5.4)(happy-dom@15.7.4)(terser@5.32.0) + version: 2.1.1(@edge-runtime/vm@4.0.3)(@types/node@22.5.4)(happy-dom@15.7.4)(msw@2.4.8(typescript@5.6.2))(terser@5.32.0) packages/experimental: dependencies: @@ -675,14 +675,17 @@ importers: packages/llamaindex/e2e: devDependencies: '@faker-js/faker': - specifier: ^8.4.1 - version: 8.4.1 + specifier: ^9.0.1 + version: 9.0.1 '@types/node': specifier: ^22.5.1 version: 22.5.4 consola: specifier: ^3.2.3 version: 3.2.3 + dotenv: + specifier: ^16.4.5 + version: 16.4.5 llamaindex: specifier: workspace:* version: link:.. @@ -698,7 +701,7 @@ importers: devDependencies: '@cloudflare/vitest-pool-workers': specifier: ^0.4.27 - version: 0.4.27(@cloudflare/workers-types@4.20240821.1)(@vitest/runner@1.5.3)(@vitest/snapshot@1.5.3)(vitest@1.5.3(@edge-runtime/vm@4.0.3)(@types/node@22.5.4)(happy-dom@15.7.4)(terser@5.32.0)) + version: 0.4.27(@cloudflare/workers-types@4.20240821.1)(@vitest/runner@1.5.3)(@vitest/snapshot@1.5.3)(vitest@1.5.3(@edge-runtime/vm@4.0.3)(@types/node@22.5.5)(happy-dom@15.7.4)(terser@5.32.0)) '@cloudflare/workers-types': specifier: ^4.20240821.1 version: 4.20240821.1 @@ -713,7 +716,7 @@ importers: version: 5.6.2 vitest: specifier: 1.5.3 - version: 1.5.3(@edge-runtime/vm@4.0.3)(@types/node@22.5.4)(happy-dom@15.7.4)(terser@5.32.0) + version: 1.5.3(@edge-runtime/vm@4.0.3)(@types/node@22.5.5)(happy-dom@15.7.4)(terser@5.32.0) wrangler: specifier: ^3.73.0 version: 3.73.0(@cloudflare/workers-types@4.20240821.1) @@ -729,10 +732,10 @@ importers: version: 5.6.2 vite: specifier: ^5.4.1 - version: 5.4.2(@types/node@22.5.4)(terser@5.32.0) + version: 5.4.2(@types/node@22.5.5)(terser@5.32.0) vite-plugin-wasm: specifier: ^3.3.0 - version: 3.3.0(vite@5.4.2(@types/node@22.5.4)(terser@5.32.0)) + version: 3.3.0(vite@5.4.2(@types/node@22.5.5)(terser@5.32.0)) packages/llamaindex/e2e/examples/nextjs-agent: dependencies: @@ -861,7 +864,7 @@ importers: version: 19.0.0-rc-7771d3a7-20240827(react-dom@19.0.0-rc-7771d3a7-20240827(react@19.0.0-rc-7771d3a7-20240827))(react@19.0.0-rc-7771d3a7-20240827)(webpack@5.94.0) waku: specifier: 0.21.1 - version: 0.21.1(@swc/helpers@0.5.13)(@types/node@22.5.4)(react-dom@19.0.0-rc-7771d3a7-20240827(react@19.0.0-rc-7771d3a7-20240827))(react-server-dom-webpack@19.0.0-rc-7771d3a7-20240827(react-dom@19.0.0-rc-7771d3a7-20240827(react@19.0.0-rc-7771d3a7-20240827))(react@19.0.0-rc-7771d3a7-20240827)(webpack@5.94.0))(react@19.0.0-rc-7771d3a7-20240827)(terser@5.32.0) + version: 0.21.1(@swc/helpers@0.5.13)(@types/node@22.5.5)(react-dom@19.0.0-rc-7771d3a7-20240827(react@19.0.0-rc-7771d3a7-20240827))(react-server-dom-webpack@19.0.0-rc-7771d3a7-20240827(react-dom@19.0.0-rc-7771d3a7-20240827(react@19.0.0-rc-7771d3a7-20240827))(react@19.0.0-rc-7771d3a7-20240827)(webpack@5.94.0))(react@19.0.0-rc-7771d3a7-20240827)(terser@5.32.0) devDependencies: '@types/react': specifier: 18.3.5 @@ -880,16 +883,22 @@ importers: version: 5.6.2 vite-plugin-wasm: specifier: ^3.3.0 - version: 3.3.0(vite@5.4.2(@types/node@22.5.4)(terser@5.32.0)) + version: 3.3.0(vite@5.4.2(@types/node@22.5.5)(terser@5.32.0)) packages/llamaindex/tests: devDependencies: + '@faker-js/faker': + specifier: ^9.0.1 + version: 9.0.1 llamaindex: specifier: workspace:* version: link:.. + msw: + specifier: ^2.4.8 + version: 2.4.8(typescript@5.6.2) vitest: specifier: ^2.0.5 - version: 2.1.1(@edge-runtime/vm@4.0.3)(@types/node@22.5.4)(happy-dom@15.7.4)(terser@5.32.0) + version: 2.1.1(@edge-runtime/vm@4.0.3)(@types/node@22.5.5)(happy-dom@15.7.4)(msw@2.4.8(typescript@5.6.2))(terser@5.32.0) packages/llm/groq: dependencies: @@ -2071,6 +2080,15 @@ packages: resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} engines: {node: '>=6.9.0'} + '@bundled-es-modules/cookie@2.0.0': + resolution: {integrity: sha512-Or6YHg/kamKHpxULAdSqhGqnWFneIXu1NKvvfBBzKGwpVsYuFIQ5aBPHDnnoR3ghW1nvSkALd+EF9iMtY7Vjxw==} + + '@bundled-es-modules/statuses@1.0.1': + resolution: {integrity: sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==} + + '@bundled-es-modules/tough-cookie@0.1.6': + resolution: {integrity: sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==} + '@changesets/apply-release-plan@7.0.4': resolution: {integrity: sha512-HLFwhKWayKinWAul0Vj+76jVx1Pc2v55MGPVjZ924Y/ROeSsBMFutv9heHmCUj48lJyRfOTJG5+ar+29FUky/A==} @@ -2867,9 +2885,9 @@ packages: resolution: {integrity: sha512-autAXT203ixhqei9xt+qkYOvY8l6LAFIdT2UXc/RPNeUVfqRF1BV94GTJyVPFKT8nFM6MyVJhjLj9E8JWvf5zQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@faker-js/faker@8.4.1': - resolution: {integrity: sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13'} + '@faker-js/faker@9.0.1': + resolution: {integrity: sha512-4mDeYIgM3By7X6t5E6eYwLAa+2h4DeZDF7thhzIg6XB76jeEvMwadYAMCFJL/R4AnEBcAUO9+gL0vhy3s+qvZA==} + engines: {node: '>=18.0.0', npm: '>=9.0.0'} '@fastify/busboy@2.1.1': resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} @@ -3055,6 +3073,26 @@ packages: cpu: [x64] os: [win32] + '@inquirer/confirm@3.2.0': + resolution: {integrity: sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==} + engines: {node: '>=18'} + + '@inquirer/core@9.2.1': + resolution: {integrity: sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==} + engines: {node: '>=18'} + + '@inquirer/figures@1.0.6': + resolution: {integrity: sha512-yfZzps3Cso2UbM7WlxKwZQh2Hs6plrbjs1QnzQDZhK2DgyCo6D8AaHps9olkNcUFlcYERMqU3uJSp1gmy3s/qQ==} + engines: {node: '>=18'} + + '@inquirer/type@1.5.5': + resolution: {integrity: sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==} + engines: {node: '>=18'} + + '@inquirer/type@2.0.0': + resolution: {integrity: sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==} + engines: {node: '>=18'} + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -3134,6 +3172,10 @@ packages: '@mongodb-js/saslprep@1.1.7': resolution: {integrity: sha512-dCHW/oEX0KJ4NjDULBo3JiOaK5+6axtpBbS+ao2ZInoAL9/YRQLhXzSNAFz7hP4nzLkIqsfYAK/PDE3+XHny0Q==} + '@mswjs/interceptors@0.35.6': + resolution: {integrity: sha512-PpD687w7qLxVMK176bpQjbzU9O0VC75QnBK5U1lKd29s4hIuxfTItUD6raNKyQ6BN8b64/8HE34RuYTkwH9uPQ==} + engines: {node: '>=18'} + '@next/env@14.2.11': resolution: {integrity: sha512-HYsQRSIXwiNqvzzYThrBwq6RhXo3E0n8j8nQnAs8i4fCEo2Zf/3eS0IiRA8XnRg9Ha0YnpkyJZIZg1qEwemrHw==} @@ -3274,6 +3316,15 @@ packages: resolution: {integrity: sha512-XhdSY/4B1D34tSco/GION+23GMjaS9S2zszcqYkMHo8RcWInymF6L1x+Gk7EmHdrSxNFva2WM8orhC4BwQCwgw==} engines: {node: '>=12'} + '@open-draft/deferred-promise@2.2.0': + resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} + + '@open-draft/logger@0.3.0': + resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==} + + '@open-draft/until@2.1.0': + resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} + '@opentelemetry/api@1.9.0': resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} @@ -4097,6 +4148,9 @@ packages: '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + '@types/cookie@0.6.0': + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} @@ -4178,6 +4232,9 @@ packages: '@types/ms@0.7.34': resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + '@types/mute-stream@0.0.4': + resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} + '@types/node-fetch@2.6.11': resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} @@ -4196,6 +4253,9 @@ packages: '@types/node@22.5.4': resolution: {integrity: sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==} + '@types/node@22.5.5': + resolution: {integrity: sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==} + '@types/papaparse@5.3.14': resolution: {integrity: sha512-LxJ4iEFcpqc6METwp9f6BV6VVc43m6MfH0VqFosHvrUgfXiFe6ww7R3itkOQ+TCK6Y+Iv/+RnnvtRZnkc5Kc9g==} @@ -4262,6 +4322,9 @@ packages: '@types/sockjs@0.3.36': resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} + '@types/statuses@2.0.5': + resolution: {integrity: sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==} + '@types/tough-cookie@4.0.5': resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} @@ -4280,6 +4343,9 @@ packages: '@types/whatwg-url@11.0.5': resolution: {integrity: sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==} + '@types/wrap-ansi@3.0.0': + resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} + '@types/ws@8.5.12': resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} @@ -4716,6 +4782,10 @@ packages: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + ansi-escapes@7.0.0: resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} engines: {node: '>=18'} @@ -5287,6 +5357,10 @@ packages: resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} engines: {node: '>=18'} + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} @@ -6921,6 +6995,9 @@ packages: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true + headers-polyfill@4.0.3: + resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} + highlight.js@10.7.3: resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} @@ -7295,6 +7372,9 @@ packages: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} + is-node-process@1.2.0: + resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} + is-npm@6.0.0: resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -8307,6 +8387,16 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + msw@2.4.8: + resolution: {integrity: sha512-a+FUW1m5yT8cV9GBy0L/cbNg0EA4//SKEzgu3qFrpITrWYeZmqfo7dqtM74T2lAl69jjUjjCaEhZKaxG2Ns8DA==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + typescript: '>= 4.8.x' + peerDependenciesMeta: + typescript: + optional: true + multicast-dns@7.2.5: resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} hasBin: true @@ -8315,6 +8405,10 @@ packages: resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} hasBin: true + mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} @@ -8632,6 +8726,9 @@ packages: outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + outvariant@1.4.3: + resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} + p-cancelable@2.1.1: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} engines: {node: '>=8'} @@ -8800,6 +8897,9 @@ packages: path-to-regexp@6.2.2: resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} + path-to-regexp@6.3.0: + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -10180,6 +10280,9 @@ packages: streamx@2.18.0: resolution: {integrity: sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==} + strict-event-emitter@0.5.1: + resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} + string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -10647,6 +10750,10 @@ packages: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + type-fest@1.4.0: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} engines: {node: '>=10'} @@ -11194,6 +11301,10 @@ packages: '@cloudflare/workers-types': optional: true + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -11293,6 +11404,10 @@ packages: resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} engines: {node: '>=12.20'} + yoctocolors-cjs@2.1.2: + resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} + engines: {node: '>=18'} + youch@3.3.3: resolution: {integrity: sha512-qSFXUk3UZBLfggAW3dJKg0BMblG5biqSF8M34E06o5CSsZtH92u9Hqmj2RzGiHDi64fhe83+4tENFP2DB6t6ZA==} @@ -13315,6 +13430,19 @@ snapshots: '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 + '@bundled-es-modules/cookie@2.0.0': + dependencies: + cookie: 0.5.0 + + '@bundled-es-modules/statuses@1.0.1': + dependencies: + statuses: 2.0.1 + + '@bundled-es-modules/tough-cookie@0.1.6': + dependencies: + '@types/tough-cookie': 4.0.5 + tough-cookie: 4.1.4 + '@changesets/apply-release-plan@7.0.4': dependencies: '@babel/runtime': 7.25.6 @@ -13475,7 +13603,7 @@ snapshots: dependencies: mime: 3.0.0 - '@cloudflare/vitest-pool-workers@0.4.27(@cloudflare/workers-types@4.20240821.1)(@vitest/runner@1.5.3)(@vitest/snapshot@1.5.3)(vitest@1.5.3(@edge-runtime/vm@4.0.3)(@types/node@22.5.4)(happy-dom@15.7.4)(terser@5.32.0))': + '@cloudflare/vitest-pool-workers@0.4.27(@cloudflare/workers-types@4.20240821.1)(@vitest/runner@1.5.3)(@vitest/snapshot@1.5.3)(vitest@1.5.3(@edge-runtime/vm@4.0.3)(@types/node@22.5.5)(happy-dom@15.7.4)(terser@5.32.0))': dependencies: '@vitest/runner': 1.5.3 '@vitest/snapshot': 1.5.3 @@ -13485,7 +13613,7 @@ snapshots: esbuild: 0.17.19 miniflare: 3.20240821.0 semver: 7.6.3 - vitest: 1.5.3(@edge-runtime/vm@4.0.3)(@types/node@22.5.4)(happy-dom@15.7.4)(terser@5.32.0) + vitest: 1.5.3(@edge-runtime/vm@4.0.3)(@types/node@22.5.5)(happy-dom@15.7.4)(terser@5.32.0) wrangler: 3.73.0(@cloudflare/workers-types@4.20240821.1) zod: 3.23.8 transitivePeerDependencies: @@ -14536,7 +14664,7 @@ snapshots: levn: 0.4.1 optional: true - '@faker-js/faker@8.4.1': {} + '@faker-js/faker@9.0.1': {} '@fastify/busboy@2.1.1': {} @@ -14687,6 +14815,36 @@ snapshots: '@img/sharp-win32-x64@0.33.5': optional: true + '@inquirer/confirm@3.2.0': + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/type': 1.5.5 + + '@inquirer/core@9.2.1': + dependencies: + '@inquirer/figures': 1.0.6 + '@inquirer/type': 2.0.0 + '@types/mute-stream': 0.0.4 + '@types/node': 22.5.5 + '@types/wrap-ansi': 3.0.0 + ansi-escapes: 4.3.2 + cli-width: 4.1.0 + mute-stream: 1.0.0 + signal-exit: 4.1.0 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.2 + + '@inquirer/figures@1.0.6': {} + + '@inquirer/type@1.5.5': + dependencies: + mute-stream: 1.0.0 + + '@inquirer/type@2.0.0': + dependencies: + mute-stream: 1.0.0 + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -14705,7 +14863,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.5.4 + '@types/node': 22.5.5 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -14838,6 +14996,15 @@ snapshots: dependencies: sparse-bitfield: 3.0.3 + '@mswjs/interceptors@0.35.6': + dependencies: + '@open-draft/deferred-promise': 2.2.0 + '@open-draft/logger': 0.3.0 + '@open-draft/until': 2.1.0 + is-node-process: 1.2.0 + outvariant: 1.4.3 + strict-event-emitter: 0.5.1 + '@next/env@14.2.11': {} '@next/env@14.3.0-canary.51': {} @@ -14925,6 +15092,15 @@ snapshots: transitivePeerDependencies: - encoding + '@open-draft/deferred-promise@2.2.0': {} + + '@open-draft/logger@0.3.0': + dependencies: + is-node-process: 1.2.0 + outvariant: 1.4.3 + + '@open-draft/until@2.1.0': {} + '@opentelemetry/api@1.9.0': {} '@petamoriken/float16@3.8.7': {} @@ -15784,27 +15960,29 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.5.4 + '@types/node': 22.5.5 '@types/bonjour@3.5.13': dependencies: - '@types/node': 22.5.4 + '@types/node': 22.5.5 '@types/cacheable-request@6.0.3': dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 22.5.4 + '@types/node': 22.5.5 '@types/responselike': 1.0.3 '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 4.19.5 - '@types/node': 22.5.4 + '@types/node': 22.5.5 '@types/connect@3.4.38': dependencies: - '@types/node': 22.5.4 + '@types/node': 22.5.5 + + '@types/cookie@0.6.0': {} '@types/debug@4.1.12': dependencies: @@ -15820,7 +15998,7 @@ snapshots: '@types/express-serve-static-core@4.19.5': dependencies: - '@types/node': 22.5.4 + '@types/node': 22.5.5 '@types/qs': 6.9.15 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -15852,7 +16030,7 @@ snapshots: '@types/http-proxy@1.17.15': dependencies: - '@types/node': 22.5.4 + '@types/node': 22.5.5 '@types/istanbul-lib-coverage@2.0.6': {} @@ -15872,7 +16050,7 @@ snapshots: '@types/keyv@3.1.4': dependencies: - '@types/node': 22.5.4 + '@types/node': 22.5.5 '@types/lodash-es@4.17.12': dependencies: @@ -15890,6 +16068,10 @@ snapshots: '@types/ms@0.7.34': {} + '@types/mute-stream@0.0.4': + dependencies: + '@types/node': 22.5.5 + '@types/node-fetch@2.6.11': dependencies: '@types/node': 22.5.4 @@ -15897,7 +16079,7 @@ snapshots: '@types/node-forge@1.3.11': dependencies: - '@types/node': 22.5.4 + '@types/node': 22.5.5 '@types/node@12.20.55': {} @@ -15911,6 +16093,10 @@ snapshots: dependencies: undici-types: 6.19.8 + '@types/node@22.5.5': + dependencies: + undici-types: 6.19.8 + '@types/papaparse@5.3.14': dependencies: '@types/node': 22.5.4 @@ -15965,20 +16151,20 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 22.5.4 + '@types/node': 22.5.5 '@types/retry@0.12.0': {} '@types/sax@1.2.7': dependencies: - '@types/node': 22.5.4 + '@types/node': 22.5.5 '@types/semver@7.5.8': {} '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.5.4 + '@types/node': 22.5.5 '@types/serve-index@1.9.4': dependencies: @@ -15987,12 +16173,14 @@ snapshots: '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.5.4 + '@types/node': 22.5.5 '@types/send': 0.17.4 '@types/sockjs@0.3.36': dependencies: - '@types/node': 22.5.4 + '@types/node': 22.5.5 + + '@types/statuses@2.0.5': {} '@types/tough-cookie@4.0.5': {} @@ -16008,9 +16196,11 @@ snapshots: dependencies: '@types/webidl-conversions': 7.0.3 + '@types/wrap-ansi@3.0.0': {} + '@types/ws@8.5.12': dependencies: - '@types/node': 22.5.4 + '@types/node': 22.5.5 '@types/yargs-parser@21.0.3': {} @@ -16236,14 +16426,14 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-react@4.3.1(vite@5.4.2(@types/node@22.5.4)(terser@5.32.0))': + '@vitejs/plugin-react@4.3.1(vite@5.4.2(@types/node@22.5.5)(terser@5.32.0))': dependencies: '@babel/core': 7.25.2 '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.2(@types/node@22.5.4)(terser@5.32.0) + vite: 5.4.2(@types/node@22.5.5)(terser@5.32.0) transitivePeerDependencies: - supports-color @@ -16260,14 +16450,24 @@ snapshots: chai: 5.1.1 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.1(@vitest/spy@2.1.1)(vite@5.4.2(@types/node@22.5.4)(terser@5.32.0))': + '@vitest/mocker@2.1.1(@vitest/spy@2.1.1)(msw@2.4.8(typescript@5.6.2))(vite@5.4.2(@types/node@22.5.4)(terser@5.32.0))': dependencies: '@vitest/spy': 2.1.1 estree-walker: 3.0.3 magic-string: 0.30.11 optionalDependencies: + msw: 2.4.8(typescript@5.6.2) vite: 5.4.2(@types/node@22.5.4)(terser@5.32.0) + '@vitest/mocker@2.1.1(@vitest/spy@2.1.1)(msw@2.4.8(typescript@5.6.2))(vite@5.4.2(@types/node@22.5.5)(terser@5.32.0))': + dependencies: + '@vitest/spy': 2.1.1 + estree-walker: 3.0.3 + magic-string: 0.30.11 + optionalDependencies: + msw: 2.4.8(typescript@5.6.2) + vite: 5.4.2(@types/node@22.5.5)(terser@5.32.0) + '@vitest/pretty-format@2.1.1': dependencies: tinyrainbow: 1.2.0 @@ -16617,6 +16817,10 @@ snapshots: ansi-colors@4.1.3: {} + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + ansi-escapes@7.0.0: dependencies: environment: 1.1.0 @@ -17299,6 +17503,8 @@ snapshots: slice-ansi: 5.0.0 string-width: 7.2.0 + cli-width@4.1.0: {} + client-only@0.0.1: {} cliui@8.0.1: @@ -19499,6 +19705,8 @@ snapshots: he@1.2.0: {} + headers-polyfill@4.0.3: {} + highlight.js@10.7.3: {} history@4.10.1: @@ -19879,6 +20087,8 @@ snapshots: is-negative-zero@2.0.3: {} + is-node-process@1.2.0: {} + is-npm@6.0.0: {} is-number-object@1.0.7: @@ -20027,7 +20237,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.5.4 + '@types/node': 22.5.5 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -20035,13 +20245,13 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.5.4 + '@types/node': 22.5.5 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 22.5.4 + '@types/node': 22.5.5 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -21160,6 +21370,28 @@ snapshots: ms@2.1.3: {} + msw@2.4.8(typescript@5.6.2): + dependencies: + '@bundled-es-modules/cookie': 2.0.0 + '@bundled-es-modules/statuses': 1.0.1 + '@bundled-es-modules/tough-cookie': 0.1.6 + '@inquirer/confirm': 3.2.0 + '@mswjs/interceptors': 0.35.6 + '@open-draft/until': 2.1.0 + '@types/cookie': 0.6.0 + '@types/statuses': 2.0.5 + chalk: 4.1.2 + graphql: 16.9.0 + headers-polyfill: 4.0.3 + is-node-process: 1.2.0 + outvariant: 1.4.3 + path-to-regexp: 6.3.0 + strict-event-emitter: 0.5.1 + type-fest: 4.26.1 + yargs: 17.7.2 + optionalDependencies: + typescript: 5.6.2 + multicast-dns@7.2.5: dependencies: dns-packet: 5.6.1 @@ -21167,6 +21399,8 @@ snapshots: mustache@4.2.0: {} + mute-stream@1.0.0: {} + mz@2.7.0: dependencies: any-promise: 1.3.0 @@ -21603,6 +21837,8 @@ snapshots: outdent@0.5.0: {} + outvariant@1.4.3: {} + p-cancelable@2.1.1: {} p-cancelable@3.0.0: {} @@ -21765,6 +22001,8 @@ snapshots: path-to-regexp@6.2.2: {} + path-to-regexp@6.3.0: {} + path-type@4.0.0: {} pathe@1.1.2: {} @@ -23332,6 +23570,8 @@ snapshots: optionalDependencies: bare-events: 2.4.2 + strict-event-emitter@0.5.1: {} + string-argv@0.3.2: {} string-collapse-leading-whitespace@7.0.7: {} @@ -23839,6 +24079,8 @@ snapshots: type-fest@0.20.2: {} + type-fest@0.21.3: {} + type-fest@1.4.0: {} type-fest@2.19.0: {} @@ -24100,13 +24342,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@1.5.3(@types/node@22.5.4)(terser@5.32.0): + vite-node@1.5.3(@types/node@22.5.5)(terser@5.32.0): dependencies: cac: 6.7.14 debug: 4.3.7 pathe: 1.1.2 picocolors: 1.1.0 - vite: 5.4.2(@types/node@22.5.4)(terser@5.32.0) + vite: 5.4.2(@types/node@22.5.5)(terser@5.32.0) transitivePeerDependencies: - '@types/node' - less @@ -24135,9 +24377,26 @@ snapshots: - supports-color - terser - vite-plugin-wasm@3.3.0(vite@5.4.2(@types/node@22.5.4)(terser@5.32.0)): + vite-node@2.1.1(@types/node@22.5.5)(terser@5.32.0): dependencies: - vite: 5.4.2(@types/node@22.5.4)(terser@5.32.0) + cac: 6.7.14 + debug: 4.3.7 + pathe: 1.1.2 + vite: 5.4.2(@types/node@22.5.5)(terser@5.32.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vite-plugin-wasm@3.3.0(vite@5.4.2(@types/node@22.5.5)(terser@5.32.0)): + dependencies: + vite: 5.4.2(@types/node@22.5.5)(terser@5.32.0) vite@5.4.2(@types/node@22.5.4)(terser@5.32.0): dependencies: @@ -24149,7 +24408,17 @@ snapshots: fsevents: 2.3.3 terser: 5.32.0 - vitest@1.5.3(@edge-runtime/vm@4.0.3)(@types/node@22.5.4)(happy-dom@15.7.4)(terser@5.32.0): + vite@5.4.2(@types/node@22.5.5)(terser@5.32.0): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.41 + rollup: 4.21.2 + optionalDependencies: + '@types/node': 22.5.5 + fsevents: 2.3.3 + terser: 5.32.0 + + vitest@1.5.3(@edge-runtime/vm@4.0.3)(@types/node@22.5.5)(happy-dom@15.7.4)(terser@5.32.0): dependencies: '@vitest/expect': 1.5.3 '@vitest/runner': 1.5.3 @@ -24168,12 +24437,12 @@ snapshots: strip-literal: 2.1.0 tinybench: 2.9.0 tinypool: 0.8.4 - vite: 5.4.2(@types/node@22.5.4)(terser@5.32.0) - vite-node: 1.5.3(@types/node@22.5.4)(terser@5.32.0) + vite: 5.4.2(@types/node@22.5.5)(terser@5.32.0) + vite-node: 1.5.3(@types/node@22.5.5)(terser@5.32.0) why-is-node-running: 2.3.0 optionalDependencies: '@edge-runtime/vm': 4.0.3 - '@types/node': 22.5.4 + '@types/node': 22.5.5 happy-dom: 15.7.4 transitivePeerDependencies: - less @@ -24185,10 +24454,10 @@ snapshots: - supports-color - terser - vitest@2.1.1(@edge-runtime/vm@4.0.3)(@types/node@22.5.4)(happy-dom@15.7.4)(terser@5.32.0): + vitest@2.1.1(@edge-runtime/vm@4.0.3)(@types/node@22.5.4)(happy-dom@15.7.4)(msw@2.4.8(typescript@5.6.2))(terser@5.32.0): dependencies: '@vitest/expect': 2.1.1 - '@vitest/mocker': 2.1.1(@vitest/spy@2.1.1)(vite@5.4.2(@types/node@22.5.4)(terser@5.32.0)) + '@vitest/mocker': 2.1.1(@vitest/spy@2.1.1)(msw@2.4.8(typescript@5.6.2))(vite@5.4.2(@types/node@22.5.4)(terser@5.32.0)) '@vitest/pretty-format': 2.1.1 '@vitest/runner': 2.1.1 '@vitest/snapshot': 2.1.1 @@ -24221,6 +24490,42 @@ snapshots: - supports-color - terser + vitest@2.1.1(@edge-runtime/vm@4.0.3)(@types/node@22.5.5)(happy-dom@15.7.4)(msw@2.4.8(typescript@5.6.2))(terser@5.32.0): + dependencies: + '@vitest/expect': 2.1.1 + '@vitest/mocker': 2.1.1(@vitest/spy@2.1.1)(msw@2.4.8(typescript@5.6.2))(vite@5.4.2(@types/node@22.5.5)(terser@5.32.0)) + '@vitest/pretty-format': 2.1.1 + '@vitest/runner': 2.1.1 + '@vitest/snapshot': 2.1.1 + '@vitest/spy': 2.1.1 + '@vitest/utils': 2.1.1 + chai: 5.1.1 + debug: 4.3.7 + magic-string: 0.30.11 + pathe: 1.1.2 + std-env: 3.7.0 + tinybench: 2.9.0 + tinyexec: 0.3.0 + tinypool: 1.0.1 + tinyrainbow: 1.2.0 + vite: 5.4.2(@types/node@22.5.5)(terser@5.32.0) + vite-node: 2.1.1(@types/node@22.5.5)(terser@5.32.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@edge-runtime/vm': 4.0.3 + '@types/node': 22.5.5 + happy-dom: 15.7.4 + transitivePeerDependencies: + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + vue@3.5.5(typescript@5.6.2): dependencies: '@vue/compiler-dom': 3.5.5 @@ -24231,18 +24536,18 @@ snapshots: optionalDependencies: typescript: 5.6.2 - waku@0.21.1(@swc/helpers@0.5.13)(@types/node@22.5.4)(react-dom@19.0.0-rc-7771d3a7-20240827(react@19.0.0-rc-7771d3a7-20240827))(react-server-dom-webpack@19.0.0-rc-7771d3a7-20240827(react-dom@19.0.0-rc-7771d3a7-20240827(react@19.0.0-rc-7771d3a7-20240827))(react@19.0.0-rc-7771d3a7-20240827)(webpack@5.94.0))(react@19.0.0-rc-7771d3a7-20240827)(terser@5.32.0): + waku@0.21.1(@swc/helpers@0.5.13)(@types/node@22.5.5)(react-dom@19.0.0-rc-7771d3a7-20240827(react@19.0.0-rc-7771d3a7-20240827))(react-server-dom-webpack@19.0.0-rc-7771d3a7-20240827(react-dom@19.0.0-rc-7771d3a7-20240827(react@19.0.0-rc-7771d3a7-20240827))(react@19.0.0-rc-7771d3a7-20240827)(webpack@5.94.0))(react@19.0.0-rc-7771d3a7-20240827)(terser@5.32.0): dependencies: '@hono/node-server': 1.12.2(hono@4.5.9) '@swc/core': 1.6.7(@swc/helpers@0.5.13) - '@vitejs/plugin-react': 4.3.1(vite@5.4.2(@types/node@22.5.4)(terser@5.32.0)) + '@vitejs/plugin-react': 4.3.1(vite@5.4.2(@types/node@22.5.5)(terser@5.32.0)) dotenv: 16.4.5 hono: 4.5.9 react: 19.0.0-rc-7771d3a7-20240827 react-dom: 19.0.0-rc-7771d3a7-20240827(react@19.0.0-rc-7771d3a7-20240827) react-server-dom-webpack: 19.0.0-rc-7771d3a7-20240827(react-dom@19.0.0-rc-7771d3a7-20240827(react@19.0.0-rc-7771d3a7-20240827))(react@19.0.0-rc-7771d3a7-20240827)(webpack@5.94.0) rsc-html-stream: 0.0.3 - vite: 5.4.2(@types/node@22.5.4)(terser@5.32.0) + vite: 5.4.2(@types/node@22.5.5)(terser@5.32.0) transitivePeerDependencies: - '@swc/helpers' - '@types/node' @@ -24598,6 +24903,12 @@ snapshots: - supports-color - utf-8-validate + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 @@ -24669,6 +24980,8 @@ snapshots: yocto-queue@1.1.1: {} + yoctocolors-cjs@2.1.2: {} + youch@3.3.3: dependencies: cookie: 0.5.0