diff --git a/.github/workflows/vitest.yml b/.github/workflows/vitest.yml index 48d4ca1bd..6fa73e4b7 100644 --- a/.github/workflows/vitest.yml +++ b/.github/workflows/vitest.yml @@ -15,3 +15,5 @@ jobs: run: pnpm run prerelease - name: Run tests run: cd packages/react-resizable-panels && pnpm run test + - name: Run node tests + run: cd packages/react-resizable-panels && pnpm run test:node diff --git a/package.json b/package.json index a225e96c7..0124d990b 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@babel/preset-typescript": "^7.22.5", "@playwright/test": "^1.37.0", - "@types/node": "^18.17.5", + "@types/node": "^22.15.3", "@types/react": "latest", "@types/react-dom": "latest", "@typescript-eslint/eslint-plugin": "^5.62.0", @@ -35,7 +35,7 @@ "parcel": "^2.9.3", "prettier": "latest", "process": "^0.11.10", - "typescript": "^5.1.6" + "typescript": "^5.8.3" }, "dependencies": { "@parcel/config-default": "^2.9.3", diff --git a/packages/react-resizable-panels/package.json b/packages/react-resizable-panels/package.json index 965357796..f66808839 100644 --- a/packages/react-resizable-panels/package.json +++ b/packages/react-resizable-panels/package.json @@ -48,6 +48,7 @@ "clear:node_modules": "rm -rf ./node_modules", "lint": "eslint \"src/**/*.{ts,tsx}\"", "test": "vitest", + "test:node": "vitest -c vitest.node.config.ts", "test:watch": "vitest --watch", "watch": "parcel watch --port=2345" }, @@ -57,7 +58,7 @@ "@vitest/ui": "^3.1.2", "eslint": "^8.37.0", "eslint-plugin-react-hooks": "^4.6.0", - "jsdom": "^24.0.0", + "jsdom": "^26.1.0", "react": "experimental", "react-dom": "experimental", "save-dev": "0.0.1-security", diff --git a/packages/react-resizable-panels/src/Panel.node.test.tsx b/packages/react-resizable-panels/src/Panel.node.test.tsx new file mode 100644 index 000000000..ff9037672 --- /dev/null +++ b/packages/react-resizable-panels/src/Panel.node.test.tsx @@ -0,0 +1,66 @@ +import { afterEach, beforeEach, describe, expect, test, vi } from "vitest"; +import { renderToStaticMarkup } from "react-dom/server"; +import { act } from "react-dom/test-utils"; +import { Panel } from "./Panel"; +import { PanelGroup } from "./PanelGroup"; +import { PanelResizeHandle } from "./PanelResizeHandle"; + +describe("PanelGroup", () => { + let expectedWarnings: string[] = []; + + function expectWarning(expectedMessage: string) { + expectedWarnings.push(expectedMessage); + } + + beforeEach(() => { + // @ts-expect-error + global.IS_REACT_ACT_ENVIRONMENT = true; + + expectedWarnings = []; + + vi.spyOn(console, "warn").mockImplementation((actualMessage: string) => { + const match = expectedWarnings.findIndex((expectedMessage) => { + return actualMessage.includes(expectedMessage); + }); + + if (match >= 0) { + expectedWarnings.splice(match, 1); + return; + } + + throw Error(`Unexpected warning: ${actualMessage}`); + }); + }); + + afterEach(() => { + vi.clearAllMocks(); + expect(expectedWarnings).toHaveLength(0); + }); + + describe("DEV warnings", () => { + test("should warn about server rendered panels with no default size", () => { + act(() => { + // No warning expected if default sizes provided + renderToStaticMarkup( + + + + + + ); + }); + + expectWarning( + "Panel defaultSize prop recommended to avoid layout shift after server rendering" + ); + + act(() => { + renderToStaticMarkup( + + + + ); + }); + }); + }); +}); diff --git a/packages/react-resizable-panels/src/Panel.test.tsx b/packages/react-resizable-panels/src/Panel.test.tsx index 49fdc5f17..cc4051e02 100644 --- a/packages/react-resizable-panels/src/Panel.test.tsx +++ b/packages/react-resizable-panels/src/Panel.test.tsx @@ -377,7 +377,7 @@ describe("PanelGroup", () => { }); }); - test("should throw if default size is less than 0 or greater than 100", () => { + test.skip("should throw if default size is less than 0 or greater than 100", () => { expect(() => { act(() => { root.render( @@ -1052,44 +1052,6 @@ describe("PanelGroup", () => { }); describe("DEV warnings", () => { - test("should warn about server rendered panels with no default size", () => { - vi.resetModules(); - vi.mock("#is-browser", () => ({ isBrowser: false })); - - const { TextEncoder } = require("util"); - global.TextEncoder = TextEncoder; - - const { renderToStaticMarkup } = require("react-dom/server.browser"); - const { act } = require("react-dom/test-utils"); - const Panel = require("./Panel").Panel; - const PanelGroup = require("./PanelGroup").PanelGroup; - const PanelResizeHandle = - require("./PanelResizeHandle").PanelResizeHandle; - - act(() => { - // No warning expected if default sizes provided - renderToStaticMarkup( - - - - - - ); - }); - - expectWarning( - "Panel defaultSize prop recommended to avoid layout shift after server rendering" - ); - - act(() => { - renderToStaticMarkup( - - - - ); - }); - }); - test("should warn if invalid sizes are specified declaratively", () => { expectWarning("default size should not be less than 0"); diff --git a/packages/react-resizable-panels/src/utils/test-utils.ts b/packages/react-resizable-panels/src/utils/test-utils.ts index 67e663ddf..e2da05f36 100644 --- a/packages/react-resizable-panels/src/utils/test-utils.ts +++ b/packages/react-resizable-panels/src/utils/test-utils.ts @@ -1,8 +1,7 @@ import { expect } from "vitest"; import { DATA_ATTRIBUTES } from "../constants"; import { assert } from "./assert"; - -const util = require("util"); +import util from "node:util"; export function dispatchPointerEvent(type: string, target: HTMLElement) { const rect = target.getBoundingClientRect(); @@ -162,7 +161,8 @@ export function verifyExpectedWarnings( const message = util.format(format, ...args); for (let index = 0; index < expectedMessages.length; index++) { - const expectedMessage = expectedMessages[index]; + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const expectedMessage = expectedMessages[index]!; if (message.includes(expectedMessage)) { expectedMessages.splice(index, 1); return; diff --git a/packages/react-resizable-panels/vitest.config.ts b/packages/react-resizable-panels/vitest.config.ts index c4825f903..7dee52788 100644 --- a/packages/react-resizable-panels/vitest.config.ts +++ b/packages/react-resizable-panels/vitest.config.ts @@ -1,12 +1,14 @@ -import { defineConfig } from "vitest/config"; +import { defineConfig, defaultExclude } from "vitest/config"; export default defineConfig({ test: { - globals: true, - environment: "jsdom", // Use jsdom for browser-like tests + exclude: [...defaultExclude, "**/*.node.{test,spec}.?(c|m)[jt]s?(x)"], + environment: "jsdom", // Use for browser-like tests coverage: { reporter: ["text", "json", "html"], // Optional: Add coverage reports }, - setupFiles: ["./vitest.setup.ts"], + }, + resolve: { + conditions: ["development", "browser"], }, }); diff --git a/packages/react-resizable-panels/vitest.node.config.ts b/packages/react-resizable-panels/vitest.node.config.ts new file mode 100644 index 000000000..e8f09c9ff --- /dev/null +++ b/packages/react-resizable-panels/vitest.node.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + include: ["**/*.node.{test,spec}.?(c|m)[jt]s?(x)"], + coverage: { + reporter: ["text", "json", "html"], // Optional: Add coverage reports + }, + }, + resolve: { + conditions: ["development"], + }, +}); diff --git a/packages/react-resizable-panels/vitest.setup.ts b/packages/react-resizable-panels/vitest.setup.ts deleted file mode 100644 index a9f30cba8..000000000 --- a/packages/react-resizable-panels/vitest.setup.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { beforeAll, vi } from "vitest"; - -beforeAll(() => { - vi.mock("#is-browser", () => ({ - isBrowser: true, - })); -}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7f3801eb1..e560d28c3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -25,7 +25,7 @@ importers: version: 2.9.3(@parcel/core@2.9.3) '@parcel/transformer-typescript-types': specifier: ^2.9.3 - version: 2.9.3(@parcel/core@2.9.3)(typescript@5.1.6) + version: 2.9.3(@parcel/core@2.9.3)(typescript@5.8.3) '@preconstruct/cli': specifier: ^2.8.12 version: 2.8.12 @@ -37,8 +37,8 @@ importers: specifier: ^1.37.0 version: 1.37.0 '@types/node': - specifier: ^18.17.5 - version: 18.17.5 + specifier: ^22.15.3 + version: 22.15.3 '@types/react': specifier: latest version: 18.2.48 @@ -47,13 +47,13 @@ importers: version: 18.2.18 '@typescript-eslint/eslint-plugin': specifier: ^5.62.0 - version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.47.0)(typescript@5.1.6) + version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.47.0)(typescript@5.8.3) '@typescript-eslint/parser': specifier: ^5.62.0 - version: 5.62.0(eslint@8.47.0)(typescript@5.1.6) + version: 5.62.0(eslint@8.47.0)(typescript@5.8.3) '@typescript-eslint/type-utils': specifier: ^5.62.0 - version: 5.62.0(eslint@8.47.0)(typescript@5.1.6) + version: 5.62.0(eslint@8.47.0)(typescript@5.8.3) eslint: specifier: ^8.47.0 version: 8.47.0 @@ -67,8 +67,8 @@ importers: specifier: ^0.11.10 version: 0.11.10 typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.8.3 + version: 5.8.3 packages/react-resizable-panels: devDependencies: @@ -88,8 +88,8 @@ importers: specifier: ^4.6.0 version: 4.6.0(eslint@8.47.0) jsdom: - specifier: ^24.0.0 - version: 24.0.0 + specifier: ^26.1.0 + version: 26.1.0 react: specifier: experimental version: 0.0.0-experimental-247738465-20240130 @@ -101,7 +101,7 @@ importers: version: 0.0.1-security vitest: specifier: ^3.1.2 - version: 3.1.2(@types/node@18.17.5)(@vitest/ui@3.1.2)(jsdom@24.0.0) + version: 3.1.2(@types/node@22.15.3)(@vitest/ui@3.1.2)(jsdom@26.1.0) packages/react-resizable-panels-website: dependencies: @@ -171,6 +171,16 @@ packages: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.19 + /@asamuzakjp/css-color@3.1.5: + resolution: {integrity: sha512-w7AmVyTTiU41fNLsFDf+gA2Dwtbx2EJtn2pbJNAGSRAg50loXy1uLXA3hEpD8+eydcomTurw09tq5/AyceCaGg==} + dependencies: + '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) + '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + lru-cache: 10.4.3 + dev: true + /@babel/code-frame@7.22.13: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} @@ -602,6 +612,49 @@ packages: w3c-keyname: 2.2.8 dev: false + /@csstools/color-helpers@5.0.2: + resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} + engines: {node: '>=18'} + dev: true + + /@csstools/css-calc@2.1.3(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3): + resolution: {integrity: sha512-XBG3talrhid44BY1x3MHzUx/aTG8+x/Zi57M4aTKK9RFB4aLlF3TTSzfzn8nWVHWL3FgAXAxmupmDd6VWww+pw==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + dependencies: + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + dev: true + + /@csstools/css-color-parser@3.0.9(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3): + resolution: {integrity: sha512-wILs5Zk7BU86UArYBJTPy/FMPPKVKHMj1ycCEyf3VUptol0JNRLFU/BZsJ4aiIHJEbSLiizzRrw8Pc1uAEDrXw==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + dependencies: + '@csstools/color-helpers': 5.0.2 + '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4)(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + dev: true + + /@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3): + resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.3 + dependencies: + '@csstools/css-tokenizer': 3.0.3 + dev: true + + /@csstools/css-tokenizer@3.0.3: + resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} + engines: {node: '>=18'} + dev: true + /@esbuild/aix-ppc64@0.21.5: resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} @@ -1660,7 +1713,7 @@ packages: transitivePeerDependencies: - '@parcel/core' - /@parcel/transformer-typescript-types@2.9.3(@parcel/core@2.9.3)(typescript@5.1.6): + /@parcel/transformer-typescript-types@2.9.3(@parcel/core@2.9.3)(typescript@5.8.3): resolution: {integrity: sha512-W+Ze3aUTdZuBQokXlkEQ/1hUApUm6VRyYzPqEs9jcqCqU8mv18i5ZGAz4bMuIJOBprp7M2wt10SJJx/SC1pl1A==} engines: {node: '>= 12.0.0', parcel: ^2.9.3} peerDependencies: @@ -1669,22 +1722,22 @@ packages: '@parcel/diagnostic': 2.9.3 '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) '@parcel/source-map': 2.1.1 - '@parcel/ts-utils': 2.9.3(typescript@5.1.6) + '@parcel/ts-utils': 2.9.3(typescript@5.8.3) '@parcel/utils': 2.9.3 nullthrows: 1.1.1 - typescript: 5.1.6 + typescript: 5.8.3 transitivePeerDependencies: - '@parcel/core' dev: false - /@parcel/ts-utils@2.9.3(typescript@5.1.6): + /@parcel/ts-utils@2.9.3(typescript@5.8.3): resolution: {integrity: sha512-MiQoXFV8I4IWZT/q5yolKN/gnEY5gZfGB2X7W9WHJbRgyjlT/A5cPERXzVBj6mc3/VM1GdZJz76w637GUcQhow==} engines: {node: '>= 12.0.0'} peerDependencies: typescript: '>=3.0.0' dependencies: nullthrows: 1.1.1 - typescript: 5.1.6 + typescript: 5.8.3 dev: false /@parcel/types@2.9.3(@parcel/core@2.9.3): @@ -1832,7 +1885,7 @@ packages: engines: {node: '>=16'} hasBin: true dependencies: - '@types/node': 18.17.5 + '@types/node': 22.15.3 playwright-core: 1.37.0 optionalDependencies: fsevents: 2.3.2 @@ -2227,8 +2280,10 @@ packages: resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} dev: true - /@types/node@18.17.5: - resolution: {integrity: sha512-xNbS75FxH6P4UXTPUJp/zNPq6/xsfdJKussCWNOnz4aULWIRwMgP1LgaB5RiBnMX1DPCYenuqGZfnIAx5mbFLA==} + /@types/node@22.15.3: + resolution: {integrity: sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw==} + dependencies: + undici-types: 6.21.0 /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} @@ -2251,7 +2306,7 @@ packages: /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 18.17.5 + '@types/node': 22.15.3 dev: false /@types/scheduler@0.16.3: @@ -2262,7 +2317,7 @@ packages: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true - /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.47.0)(typescript@5.1.6): + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.47.0)(typescript@5.8.3): resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2274,23 +2329,23 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 5.62.0(eslint@8.47.0)(typescript@5.1.6) + '@typescript-eslint/parser': 5.62.0(eslint@8.47.0)(typescript@5.8.3) '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@8.47.0)(typescript@5.1.6) - '@typescript-eslint/utils': 5.62.0(eslint@8.47.0)(typescript@5.1.6) + '@typescript-eslint/type-utils': 5.62.0(eslint@8.47.0)(typescript@5.8.3) + '@typescript-eslint/utils': 5.62.0(eslint@8.47.0)(typescript@5.8.3) debug: 4.3.4 eslint: 8.47.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare-lite: 1.4.0 semver: 7.5.4 - tsutils: 3.21.0(typescript@5.1.6) - typescript: 5.1.6 + tsutils: 3.21.0(typescript@5.8.3) + typescript: 5.8.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@5.62.0(eslint@8.47.0)(typescript@5.1.6): + /@typescript-eslint/parser@5.62.0(eslint@8.47.0)(typescript@5.8.3): resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2302,10 +2357,10 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.8.3) debug: 4.3.4 eslint: 8.47.0 - typescript: 5.1.6 + typescript: 5.8.3 transitivePeerDependencies: - supports-color dev: true @@ -2318,7 +2373,7 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/type-utils@5.62.0(eslint@8.47.0)(typescript@5.1.6): + /@typescript-eslint/type-utils@5.62.0(eslint@8.47.0)(typescript@5.8.3): resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2328,12 +2383,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) - '@typescript-eslint/utils': 5.62.0(eslint@8.47.0)(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.8.3) + '@typescript-eslint/utils': 5.62.0(eslint@8.47.0)(typescript@5.8.3) debug: 4.3.4 eslint: 8.47.0 - tsutils: 3.21.0(typescript@5.1.6) - typescript: 5.1.6 + tsutils: 3.21.0(typescript@5.8.3) + typescript: 5.8.3 transitivePeerDependencies: - supports-color dev: true @@ -2343,7 +2398,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.1.6): + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.8.3): resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2358,13 +2413,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - tsutils: 3.21.0(typescript@5.1.6) - typescript: 5.1.6 + tsutils: 3.21.0(typescript@5.8.3) + typescript: 5.8.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.47.0)(typescript@5.1.6): + /@typescript-eslint/utils@5.62.0(eslint@8.47.0)(typescript@5.8.3): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2375,7 +2430,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.8.3) eslint: 8.47.0 eslint-scope: 5.1.1 semver: 7.5.4 @@ -2415,7 +2470,7 @@ packages: '@vitest/spy': 3.1.2 estree-walker: 3.0.3 magic-string: 0.30.17 - vite: 5.3.5(@types/node@18.17.5) + vite: 5.3.5(@types/node@22.15.3) dev: true /@vitest/pretty-format@3.1.2: @@ -2457,7 +2512,7 @@ packages: sirv: 3.0.1 tinyglobby: 0.2.13 tinyrainbow: 2.0.0 - vitest: 3.1.2(@types/node@18.17.5)(@vitest/ui@3.1.2)(jsdom@24.0.0) + vitest: 3.1.2(@types/node@22.15.3)(@vitest/ui@3.1.2)(jsdom@26.1.0) dev: true /@vitest/utils@3.1.2: @@ -2484,13 +2539,9 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - /agent-base@7.1.0: - resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + /agent-base@7.1.3: + resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} engines: {node: '>= 14'} - dependencies: - debug: 4.4.0 - transitivePeerDependencies: - - supports-color dev: true /ajv@6.12.6: @@ -2540,10 +2591,6 @@ packages: engines: {node: '>=12'} dev: true - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: true - /at-least-node@1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} @@ -2664,13 +2711,6 @@ packages: /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - dependencies: - delayed-stream: 1.0.0 - dev: true - /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: false @@ -2737,11 +2777,12 @@ packages: dependencies: css-tree: 1.1.3 - /cssstyle@4.0.1: - resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==} + /cssstyle@4.3.1: + resolution: {integrity: sha512-ZgW+Jgdd7i52AaLYCriF8Mxqft0gD/R9i9wi6RWBhs1pqdPEzPjym7rvRKi397WmQFf3SlyUsszhw+VVCbx79Q==} engines: {node: '>=18'} dependencies: - rrweb-cssom: 0.6.0 + '@asamuzakjp/css-color': 3.1.5 + rrweb-cssom: 0.8.0 dev: true /csstype@3.1.2: @@ -2753,7 +2794,7 @@ packages: engines: {node: '>=18'} dependencies: whatwg-mimetype: 4.0.0 - whatwg-url: 14.0.0 + whatwg-url: 14.2.0 dev: true /dataloader@2.2.2: @@ -2783,8 +2824,8 @@ packages: dependencies: ms: 2.1.3 - /decimal.js@10.4.3: - resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + /decimal.js@10.5.0: + resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} dev: true /deep-eql@5.0.1: @@ -2801,11 +2842,6 @@ packages: engines: {node: '>=0.10.0'} dev: false - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dev: true - /detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} @@ -2878,8 +2914,8 @@ packages: resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} engines: {node: '>=0.12'} - /entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + /entities@6.0.0: + resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==} engines: {node: '>=0.12'} dev: true @@ -3153,15 +3189,6 @@ packages: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} dev: true - /form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: true - /fs-extra@9.1.0: resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} engines: {node: '>=10'} @@ -3338,21 +3365,21 @@ packages: domutils: 2.8.0 entities: 3.0.1 - /http-proxy-agent@7.0.0: - resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==} + /http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} dependencies: - agent-base: 7.1.0 + agent-base: 7.1.3 debug: 4.4.0 transitivePeerDependencies: - supports-color dev: true - /https-proxy-agent@7.0.2: - resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} + /https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} dependencies: - agent-base: 7.1.0 + agent-base: 7.1.3 debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -3477,7 +3504,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.17.5 + '@types/node': 22.15.3 merge-stream: 2.0.0 supports-color: 7.2.0 dev: false @@ -3491,34 +3518,33 @@ packages: dependencies: argparse: 2.0.1 - /jsdom@24.0.0: - resolution: {integrity: sha512-UDS2NayCvmXSXVP6mpTj+73JnNQadZlr9N68189xib2tx5Mls7swlTNao26IoHv46BZJFvXygyRtyXd1feAk1A==} + /jsdom@26.1.0: + resolution: {integrity: sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==} engines: {node: '>=18'} peerDependencies: - canvas: ^2.11.2 + canvas: ^3.0.0 peerDependenciesMeta: canvas: optional: true dependencies: - cssstyle: 4.0.1 + cssstyle: 4.3.1 data-urls: 5.0.0 - decimal.js: 10.4.3 - form-data: 4.0.0 + decimal.js: 10.5.0 html-encoding-sniffer: 4.0.0 - http-proxy-agent: 7.0.0 - https-proxy-agent: 7.0.2 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.7 - parse5: 7.1.2 - rrweb-cssom: 0.6.0 + nwsapi: 2.2.20 + parse5: 7.3.0 + rrweb-cssom: 0.8.0 saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 4.1.4 + tough-cookie: 5.1.2 w3c-xmlserializer: 5.0.0 webidl-conversions: 7.0.0 whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 - whatwg-url: 14.0.0 + whatwg-url: 14.2.0 ws: 8.18.1 xml-name-validator: 5.0.0 transitivePeerDependencies: @@ -3715,6 +3741,10 @@ packages: resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} dev: true + /lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + dev: true + /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: @@ -3770,18 +3800,6 @@ packages: braces: 3.0.2 picomatch: 2.3.1 - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - dev: true - - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 - dev: true - /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -3898,8 +3916,8 @@ packages: /nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - /nwsapi@2.2.7: - resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} + /nwsapi@2.2.20: + resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} dev: true /object-path@0.6.0: @@ -3995,10 +4013,10 @@ packages: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - /parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + /parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} dependencies: - entities: 4.5.0 + entities: 6.0.0 dev: true /path-exists@4.0.0: @@ -4116,10 +4134,6 @@ packages: engines: {node: '>= 0.6.0'} dev: true - /psl@1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - dev: true - /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} @@ -4130,10 +4144,6 @@ packages: engines: {node: '>=6'} dev: true - /querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - dev: true - /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -4208,10 +4218,6 @@ packages: resolution: {integrity: sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==} dev: false - /requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - dev: true - /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -4275,8 +4281,8 @@ packages: fsevents: 2.3.3 dev: true - /rrweb-cssom@0.6.0: - resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + /rrweb-cssom@0.8.0: + resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} dev: true /run-parallel@1.2.0: @@ -4515,6 +4521,17 @@ packages: engines: {node: '>=14.0.0'} dev: true + /tldts-core@6.1.86: + resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} + dev: true + + /tldts@6.1.86: + resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} + hasBin: true + dependencies: + tldts-core: 6.1.86 + dev: true + /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} @@ -4530,18 +4547,15 @@ packages: engines: {node: '>=6'} dev: true - /tough-cookie@4.1.4: - resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} - engines: {node: '>=6'} + /tough-cookie@5.1.2: + resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} + engines: {node: '>=16'} dependencies: - psl: 1.9.0 - punycode: 2.3.0 - universalify: 0.2.0 - url-parse: 1.5.10 + tldts: 6.1.86 dev: true - /tr46@5.0.0: - resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} + /tr46@5.1.1: + resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} engines: {node: '>=18'} dependencies: punycode: 2.3.1 @@ -4554,14 +4568,14 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - /tsutils@3.21.0(typescript@5.1.6): + /tsutils@3.21.0(typescript@5.8.3): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 5.1.6 + typescript: 5.8.3 dev: true /type-check@0.4.0: @@ -4575,15 +4589,13 @@ packages: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} - /typescript@5.1.6: - resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + /typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} hasBin: true - /universalify@0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - dev: true + /undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} /universalify@2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} @@ -4606,13 +4618,6 @@ packages: punycode: 2.3.0 dev: true - /url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - dev: true - /utility-types@3.10.0: resolution: {integrity: sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==} engines: {node: '>= 4'} @@ -4621,7 +4626,7 @@ packages: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} dev: false - /vite-node@3.1.2(@types/node@18.17.5): + /vite-node@3.1.2(@types/node@22.15.3): resolution: {integrity: sha512-/8iMryv46J3aK13iUXsei5G/A3CUlW4665THCPS+K8xAaqrVWiGB4RfXMQXCLjpK9P2eK//BczrVkn5JLAk6DA==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true @@ -4630,7 +4635,7 @@ packages: debug: 4.4.0 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 5.3.5(@types/node@18.17.5) + vite: 5.3.5(@types/node@22.15.3) transitivePeerDependencies: - '@types/node' - less @@ -4642,7 +4647,7 @@ packages: - terser dev: true - /vite@5.3.5(@types/node@18.17.5): + /vite@5.3.5(@types/node@22.15.3): resolution: {integrity: sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -4670,7 +4675,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.17.5 + '@types/node': 22.15.3 esbuild: 0.21.5 postcss: 8.4.40 rollup: 4.19.0 @@ -4678,7 +4683,7 @@ packages: fsevents: 2.3.3 dev: true - /vitest@3.1.2(@types/node@18.17.5)(@vitest/ui@3.1.2)(jsdom@24.0.0): + /vitest@3.1.2(@types/node@22.15.3)(@vitest/ui@3.1.2)(jsdom@26.1.0): resolution: {integrity: sha512-WaxpJe092ID1C0mr+LH9MmNrhfzi8I65EX/NRU/Ld016KqQNRgxSOlGNP1hHN+a/F8L15Mh8klwaF77zR3GeDQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true @@ -4706,7 +4711,7 @@ packages: jsdom: optional: true dependencies: - '@types/node': 18.17.5 + '@types/node': 22.15.3 '@vitest/expect': 3.1.2 '@vitest/mocker': 3.1.2(vite@5.3.5) '@vitest/pretty-format': 3.1.2 @@ -4718,7 +4723,7 @@ packages: chai: 5.2.0 debug: 4.4.0 expect-type: 1.2.1 - jsdom: 24.0.0 + jsdom: 26.1.0 magic-string: 0.30.17 pathe: 2.0.3 std-env: 3.9.0 @@ -4727,8 +4732,8 @@ packages: tinyglobby: 0.2.13 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 5.3.5(@types/node@18.17.5) - vite-node: 3.1.2(@types/node@18.17.5) + vite: 5.3.5(@types/node@22.15.3) + vite-node: 3.1.2(@types/node@22.15.3) why-is-node-running: 2.3.0 transitivePeerDependencies: - less @@ -4772,11 +4777,11 @@ packages: engines: {node: '>=18'} dev: true - /whatwg-url@14.0.0: - resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} + /whatwg-url@14.2.0: + resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} engines: {node: '>=18'} dependencies: - tr46: 5.0.0 + tr46: 5.1.1 webidl-conversions: 7.0.0 dev: true diff --git a/tsconfig.json b/tsconfig.json index a27c8c286..f9f99bc5f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,6 +8,7 @@ "noImplicitAny": true, "noUncheckedIndexedAccess": true, "strict": true, + "target": "ESNext", "typeRoots": ["node_modules/@types"], "types": ["node"], },