diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 544c440..4e3f979 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -31,9 +31,6 @@ jobs: - run: npm publish --provenance --access public -w ./packages/renderer env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - - run: npm publish --provenance --access public -w ./packages/board - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - run: npm publish --provenance --access public -w ./packages/core env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/package.json b/package.json index 36000d3..9fcd592 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "private": false, - "version": "0.4.0-beta.39", + "version": "0.4.0-beta.40", "workspaces": [ "packages/*" ], @@ -30,47 +30,47 @@ "upgrade:version": "npm run version:reset && pnpm i" }, "devDependencies": { - "@babel/core": "^7.25.2", - "@babel/preset-env": "^7.25.3", - "@babel/preset-typescript": "^7.24.7", + "@babel/core": "^7.26.10", + "@babel/preset-env": "^7.26.9", + "@babel/preset-typescript": "^7.27.0", "@rollup/plugin-json": "^6.1.0", "@types/glob": "^8.1.0", - "@types/jest": "^29.5.12", + "@types/jest": "^29.5.14", "@types/koa-compose": "^3.2.8", - "@types/node": "^22.1.0", + "@types/node": "^22.14.1", "@types/serve-handler": "^6.1.4", - "@typescript-eslint/eslint-plugin": "^8.0.0", - "@typescript-eslint/parser": "^8.0.0", - "@vitejs/plugin-react": "^4.3.1", + "@typescript-eslint/eslint-plugin": "^8.29.1", + "@typescript-eslint/parser": "^8.29.1", + "@vitejs/plugin-react": "^4.3.4", "babel-jest": "^29.7.0", - "chalk": "^5.3.0", - "dotenv": "^16.4.5", + "chalk": "^5.4.1", + "dotenv": "^16.5.0", "enquirer": "^2.4.1", - "esbuild": "^0.23.0", - "eslint": "^9.8.0", - "execa": "^9.3.0", - "fs-extra": "^11.2.0", - "glob": "^11.0.0", + "esbuild": "^0.25.2", + "eslint": "^9.24.0", + "execa": "^9.5.2", + "fs-extra": "^11.3.0", + "glob": "^11.0.1", "http-server": "^14.1.1", - "husky": "^9.1.4", + "husky": "^9.1.7", "jest": "^29.7.0", "jest-canvas-mock": "^2.5.2", "jest-environment-jsdom": "^29.7.0", - "jimp": "^0.22.12", + "jimp": "^1.6.0", "koa-compose": "^4.1.0", - "less": "^4.2.0", - "pixelmatch": "^6.0.0", + "less": "^4.3.0", + "pixelmatch": "^7.1.0", "pngjs": "^7.0.0", - "puppeteer": "^22.6.4", - "rollup": "^4.20.0", - "rollup-plugin-dts": "^6.1.1", - "rollup-plugin-esbuild": "^6.1.1", - "serve-handler": "^6.1.5", - "terser": "^5.31.3", - "ts-morph": "^23.0.0", + "puppeteer": "^24.6.1", + "rollup": "^4.40.0", + "rollup-plugin-dts": "^6.2.1", + "rollup-plugin-esbuild": "^6.2.1", + "serve-handler": "^6.1.6", + "terser": "^5.39.0", + "ts-morph": "^25.0.1", "ts-node": "^10.9.2", - "tslib": "^2.6.3", - "typescript": "^5.5.4", - "vite": "^5.3.5" + "tslib": "^2.8.1", + "typescript": "^5.8.3", + "vite": "^6.2.6" } } diff --git a/packages/board/README.md b/packages/board/README.md deleted file mode 100644 index 14977d1..0000000 --- a/packages/board/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# @idraw/board - -[![Node.js CI](https://github.com/idrawjs/idraw/actions/workflows/node.js.yml/badge.svg?branch=main)](https://github.com/idrawjs/idraw/actions/workflows/node.js.yml) \ No newline at end of file diff --git a/packages/board/__tests__/__snapshots__/index.test.ts.snap b/packages/board/__tests__/__snapshots__/index.test.ts.snap deleted file mode 100644 index a6d89d4..0000000 --- a/packages/board/__tests__/__snapshots__/index.test.ts.snap +++ /dev/null @@ -1,197 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`@idraw/board context 1`] = ` -[ - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "clearRect", - }, - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 480, - "width": 800, - "x": 40, - "y": 40, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 480, - "width": 800, - "x": 320, - "y": 320, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 480, - "width": 800, - "x": 640, - "y": 640, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 400, - "width": 800, - "x": 1560, - "y": 1160, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, -] -`; - -exports[`@idraw/board context 2`] = ` -[ - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "clearRect", - }, - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "clearRect", - }, - { - "props": { - "dHeight": 3600, - "dWidth": 4000, - "dx": 0, - "dy": 0, - "img": , - "sHeight": 3600, - "sWidth": 4000, - "sx": 0, - "sy": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "drawImage", - }, - { - "props": { - "dHeight": 3600, - "dWidth": 4000, - "dx": 0, - "dy": 0, - "img": , - "sHeight": 3600, - "sWidth": 4000, - "sx": 0, - "sy": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "drawImage", - }, -] -`; diff --git a/packages/board/__tests__/__snapshots__/other-api.test.ts.snap b/packages/board/__tests__/__snapshots__/other-api.test.ts.snap deleted file mode 100644 index b340f11..0000000 --- a/packages/board/__tests__/__snapshots__/other-api.test.ts.snap +++ /dev/null @@ -1,197 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`@idraw/board getTransform 1`] = ` -[ - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "clearRect", - }, - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 480, - "width": 800, - "x": 40, - "y": 40, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 480, - "width": 800, - "x": 320, - "y": 320, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 480, - "width": 800, - "x": 640, - "y": 640, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 400, - "width": 800, - "x": 1560, - "y": 1160, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, -] -`; - -exports[`@idraw/board getTransform 2`] = ` -[ - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "clearRect", - }, - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "clearRect", - }, - { - "props": { - "dHeight": 1600, - "dWidth": 2400, - "dx": -2400, - "dy": -1600, - "img": , - "sHeight": 1600, - "sWidth": 2400, - "sx": 0, - "sy": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "drawImage", - }, - { - "props": { - "dHeight": 1600, - "dWidth": 2400, - "dx": -2400, - "dy": -1600, - "img": , - "sHeight": 1600, - "sWidth": 2400, - "sx": 0, - "sy": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "drawImage", - }, -] -`; diff --git a/packages/board/__tests__/__snapshots__/scale.test.ts.snap b/packages/board/__tests__/__snapshots__/scale.test.ts.snap deleted file mode 100644 index 5af11e5..0000000 --- a/packages/board/__tests__/__snapshots__/scale.test.ts.snap +++ /dev/null @@ -1,785 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`@idraw/board scale 001 1`] = ` -[ - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "clearRect", - }, - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 480, - "width": 800, - "x": 40, - "y": 40, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 480, - "width": 800, - "x": 320, - "y": 320, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 480, - "width": 800, - "x": 640, - "y": 640, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 400, - "width": 800, - "x": 1560, - "y": 1160, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, -] -`; - -exports[`@idraw/board scale 001 2`] = ` -[ - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "clearRect", - }, - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "clearRect", - }, - { - "props": { - "dHeight": 3600, - "dWidth": 4000, - "dx": 200, - "dy": 0, - "img": , - "sHeight": 3600, - "sWidth": 4000, - "sx": 0, - "sy": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "drawImage", - }, - { - "props": { - "dHeight": 3600, - "dWidth": 4000, - "dx": 200, - "dy": 0, - "img": , - "sHeight": 3600, - "sWidth": 4000, - "sx": 0, - "sy": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "drawImage", - }, -] -`; - -exports[`@idraw/board scale 002 1`] = ` -[ - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "clearRect", - }, - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 480, - "width": 800, - "x": 40, - "y": 40, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 480, - "width": 800, - "x": 320, - "y": 320, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 480, - "width": 800, - "x": 640, - "y": 640, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 400, - "width": 800, - "x": 1560, - "y": 1160, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, -] -`; - -exports[`@idraw/board scale 002 2`] = ` -[ - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "clearRect", - }, - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "clearRect", - }, - { - "props": { - "dHeight": 2400, - "dWidth": 4800, - "dx": 0, - "dy": 200, - "img": , - "sHeight": 2400, - "sWidth": 4800, - "sx": 0, - "sy": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "drawImage", - }, - { - "props": { - "dHeight": 2400, - "dWidth": 4800, - "dx": 0, - "dy": 200, - "img": , - "sHeight": 2400, - "sWidth": 4800, - "sx": 0, - "sy": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "drawImage", - }, -] -`; - -exports[`@idraw/board scale 003 1`] = ` -[ - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "clearRect", - }, - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 480, - "width": 800, - "x": 40, - "y": 40, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 480, - "width": 800, - "x": 320, - "y": 320, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 480, - "width": 800, - "x": 640, - "y": 640, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 400, - "width": 800, - "x": 1560, - "y": 1160, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, -] -`; - -exports[`@idraw/board scale 003 2`] = ` -[ - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "clearRect", - }, - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "clearRect", - }, - { - "props": { - "dHeight": 2400, - "dWidth": 4000, - "dx": 0, - "dy": 0, - "img": , - "sHeight": 2400, - "sWidth": 4000, - "sx": 0, - "sy": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "drawImage", - }, - { - "props": { - "dHeight": 2400, - "dWidth": 4000, - "dx": 0, - "dy": 0, - "img": , - "sHeight": 2400, - "sWidth": 4000, - "sx": 0, - "sy": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "drawImage", - }, -] -`; - -exports[`@idraw/board scale 1`] = ` -[ - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "clearRect", - }, - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 480, - "width": 800, - "x": 40, - "y": 40, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 480, - "width": 800, - "x": 320, - "y": 320, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 480, - "width": 800, - "x": 640, - "y": 640, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 400, - "width": 800, - "x": 1560, - "y": 1160, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, -] -`; - -exports[`@idraw/board scale 2`] = ` -[ - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "clearRect", - }, - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "clearRect", - }, - { - "props": { - "dHeight": 1600, - "dWidth": 2400, - "dx": 600, - "dy": 400, - "img": , - "sHeight": 1600, - "sWidth": 2400, - "sx": 0, - "sy": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "drawImage", - }, - { - "props": { - "dHeight": 1600, - "dWidth": 2400, - "dx": 600, - "dy": 400, - "img": , - "sHeight": 1600, - "sWidth": 2400, - "sx": 0, - "sy": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "drawImage", - }, -] -`; diff --git a/packages/board/__tests__/__snapshots__/scroll.test.ts.snap b/packages/board/__tests__/__snapshots__/scroll.test.ts.snap deleted file mode 100644 index 26aa655..0000000 --- a/packages/board/__tests__/__snapshots__/scroll.test.ts.snap +++ /dev/null @@ -1,197 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`@idraw/board scroll 1`] = ` -[ - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "clearRect", - }, - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 480, - "width": 800, - "x": 40, - "y": 40, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 480, - "width": 800, - "x": 320, - "y": 320, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 480, - "width": 800, - "x": 640, - "y": 640, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 400, - "width": 800, - "x": 1560, - "y": 1160, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, -] -`; - -exports[`@idraw/board scroll 2`] = ` -[ - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "clearRect", - }, - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "clearRect", - }, - { - "props": { - "dHeight": 1600, - "dWidth": 2400, - "dx": -2400, - "dy": -1600, - "img": , - "sHeight": 1600, - "sWidth": 2400, - "sx": 0, - "sy": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "drawImage", - }, - { - "props": { - "dHeight": 1600, - "dWidth": 2400, - "dx": -2400, - "dy": -1600, - "img": , - "sHeight": 1600, - "sWidth": 2400, - "sx": 0, - "sy": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "drawImage", - }, -] -`; diff --git a/packages/board/__tests__/__snapshots__/wheel.test.ts.snap b/packages/board/__tests__/__snapshots__/wheel.test.ts.snap deleted file mode 100644 index 0d7e7f6..0000000 --- a/packages/board/__tests__/__snapshots__/wheel.test.ts.snap +++ /dev/null @@ -1,737 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`@idraw/board scroll 1`] = ` -[ - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "clearRect", - }, - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 480, - "width": 800, - "x": 40, - "y": 40, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 480, - "width": 800, - "x": 320, - "y": 320, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 480, - "width": 800, - "x": 640, - "y": 640, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "height": 400, - "width": 800, - "x": 1560, - "y": 1160, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, -] -`; - -exports[`@idraw/board scroll 2`] = ` -[ - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "clearRect", - }, - { - "props": { - "height": 1600, - "width": 2400, - "x": 0, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "clearRect", - }, - { - "props": { - "dHeight": 1600, - "dWidth": 2400, - "dx": -2400, - "dy": -1600, - "img": , - "sHeight": 1600, - "sWidth": 2400, - "sx": 0, - "sy": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "drawImage", - }, - { - "props": { - "dHeight": 1600, - "dWidth": 2400, - "dx": -2400, - "dy": -1600, - "img": , - "sHeight": 1600, - "sWidth": 2400, - "sx": 0, - "sy": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "drawImage", - }, - { - "props": { - "height": 80, - "width": 2400, - "x": 0, - "y": 1520, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "fillRule": "nonzero", - "path": [ - { - "props": {}, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "beginPath", - }, - { - "props": { - "x": 2220, - "y": 1541, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "moveTo", - }, - { - "props": { - "cpx1": 2400, - "cpx2": 2400, - "cpy1": 1541, - "cpy2": 1581, - "radius": 20, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "arcTo", - }, - { - "props": { - "cpx1": 2400, - "cpx2": 2200, - "cpy1": 1581, - "cpy2": 1581, - "radius": 20, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "arcTo", - }, - { - "props": { - "cpx1": 2200, - "cpx2": 2200, - "cpy1": 1581, - "cpy2": 1541, - "radius": 20, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "arcTo", - }, - { - "props": { - "cpx1": 2200, - "cpx2": 2400, - "cpy1": 1541, - "cpy2": 1541, - "radius": 20, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "arcTo", - }, - { - "props": {}, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "closePath", - }, - ], - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fill", - }, - { - "props": { - "path": [ - { - "props": {}, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "beginPath", - }, - { - "props": { - "x": 2220, - "y": 1541, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "moveTo", - }, - { - "props": { - "cpx1": 2400, - "cpx2": 2400, - "cpy1": 1541, - "cpy2": 1581, - "radius": 20, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "arcTo", - }, - { - "props": { - "cpx1": 2400, - "cpx2": 2200, - "cpy1": 1581, - "cpy2": 1581, - "radius": 20, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "arcTo", - }, - { - "props": { - "cpx1": 2200, - "cpx2": 2200, - "cpy1": 1581, - "cpy2": 1541, - "radius": 20, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "arcTo", - }, - { - "props": { - "cpx1": 2200, - "cpx2": 2400, - "cpy1": 1541, - "cpy2": 1541, - "radius": 20, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "arcTo", - }, - { - "props": {}, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "closePath", - }, - ], - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "stroke", - }, - { - "props": { - "height": 1600, - "width": 80, - "x": 2320, - "y": 0, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fillRect", - }, - { - "props": { - "fillRule": "nonzero", - "path": [ - { - "props": {}, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "beginPath", - }, - { - "props": { - "x": 2361, - "y": 1400, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "moveTo", - }, - { - "props": { - "cpx1": 2381, - "cpx2": 2381, - "cpy1": 1400, - "cpy2": 1600, - "radius": 20, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "arcTo", - }, - { - "props": { - "cpx1": 2381, - "cpx2": 2341, - "cpy1": 1600, - "cpy2": 1600, - "radius": 20, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "arcTo", - }, - { - "props": { - "cpx1": 2341, - "cpx2": 2341, - "cpy1": 1600, - "cpy2": 1400, - "radius": 20, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "arcTo", - }, - { - "props": { - "cpx1": 2341, - "cpx2": 2381, - "cpy1": 1400, - "cpy2": 1400, - "radius": 20, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "arcTo", - }, - { - "props": {}, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "closePath", - }, - ], - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "fill", - }, - { - "props": { - "path": [ - { - "props": {}, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "beginPath", - }, - { - "props": { - "x": 2361, - "y": 1400, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "moveTo", - }, - { - "props": { - "cpx1": 2381, - "cpx2": 2381, - "cpy1": 1400, - "cpy2": 1600, - "radius": 20, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "arcTo", - }, - { - "props": { - "cpx1": 2381, - "cpx2": 2341, - "cpy1": 1600, - "cpy2": 1600, - "radius": 20, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "arcTo", - }, - { - "props": { - "cpx1": 2341, - "cpx2": 2341, - "cpy1": 1600, - "cpy2": 1400, - "radius": 20, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "arcTo", - }, - { - "props": { - "cpx1": 2341, - "cpx2": 2381, - "cpy1": 1400, - "cpy2": 1400, - "radius": 20, - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "arcTo", - }, - { - "props": {}, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "closePath", - }, - ], - }, - "transform": [ - 1, - 0, - 0, - 1, - 0, - 0, - ], - "type": "stroke", - }, -] -`; diff --git a/packages/board/__tests__/data.ts b/packages/board/__tests__/data.ts deleted file mode 100644 index 266f32a..0000000 --- a/packages/board/__tests__/data.ts +++ /dev/null @@ -1,47 +0,0 @@ -export function getData() { - const data = { - elements: [ - { - x: 10, - y: 10, - w: 200, - h: 120, - type: 'rect', - detail: { - color: '#f0f0f0' - } - }, - { - x: 80, - y: 80, - w: 200, - h: 120, - type: 'rect', - detail: { - color: '#cccccc' - } - }, - { - x: 160, - y: 160, - w: 200, - h: 120, - type: 'rect', - detail: { - color: '#c0c0c0' - } - }, - { - x: 400 - 10, - y: 300 - 10, - w: 200, - h: 100, - type: 'rect', - detail: { - color: '#e0e0e0' - } - } - ] - }; - return data; -} diff --git a/packages/board/__tests__/index.test.ts b/packages/board/__tests__/index.test.ts deleted file mode 100644 index b63c89d..0000000 --- a/packages/board/__tests__/index.test.ts +++ /dev/null @@ -1,42 +0,0 @@ -import Board from './../src'; -import { getData } from './data'; - -describe('@idraw/board', () => { - test('context', async () => { - document.body.innerHTML = ` -
- `; - const opts = { - width: 600, - height: 400, - contextWidth: 1000, - contextHeight: 900, - devicePixelRatio: 4 - }; - const mount = document.querySelector('#mount') as HTMLDivElement; - const board = new Board(mount, opts); - - const ctx = board.getContext(); - const data = getData(); - - board.clear(); - ctx.clearRect(0, 0, opts.width, opts.height); - ctx.setFillStyle('#ffffff'); - ctx.fillRect(0, 0, opts.width, opts.height); - data.elements.forEach((ele) => { - ctx.setFillStyle(ele.desc.color); - ctx.fillRect(ele.x, ele.y, ele.w, ele.h); - }); - board.draw(); - - const originCtx = board.getOriginContext2D(); - // @ts-ignore; - const originCalls = originCtx.__getDrawCalls(); - expect(originCalls).toMatchSnapshot(); - - const displayCtx = board.getDisplayContext2D(); - // @ts-ignore; - const displayCalls = displayCtx.__getDrawCalls(); - expect(displayCalls).toMatchSnapshot(); - }); -}); diff --git a/packages/board/__tests__/lib/__snapshots__/style.test.ts.snap b/packages/board/__tests__/lib/__snapshots__/style.test.ts.snap deleted file mode 100644 index abdb3ac..0000000 --- a/packages/board/__tests__/lib/__snapshots__/style.test.ts.snap +++ /dev/null @@ -1,22 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`@idraw/board: src/lib/style getStyle 1`] = ` -{ - "height": "20px", - "margin-top": "123px", - "overflow": "auto", - "width": "12px", -} -`; - -exports[`@idraw/board: src/lib/style setDomTransform 1`] = ` -
-`; - -exports[`@idraw/board: src/lib/style setStyle 1`] = ` -
-`; diff --git a/packages/board/__tests__/lib/event.test.ts b/packages/board/__tests__/lib/event.test.ts deleted file mode 100644 index 3275058..0000000 --- a/packages/board/__tests__/lib/event.test.ts +++ /dev/null @@ -1,108 +0,0 @@ -import { TypePoint } from '@idraw/types'; -import { BoardEvent } from './../../src/lib/event'; - -describe('@idraw/board: src/lib/event', () => { - - // 'doubleClick': TypePoint; - // 'hover': TypePoint; - // 'leave': void; - // 'point': TypePoint; - // 'move': TypePoint; - // 'moveStart': TypePoint; - // 'moveEnd': TypePoint; - // 'wheelX': number; - // 'wheelY': number; - - test('BoardEvent event:off', async () => { - const event = new BoardEvent(); - const point = { x: 123, y: 456 } - const callback = (p: TypePoint) => { - expect(p).toStrictEqual(point); - } - event.on('doubleClick', callback); - event.trigger('doubleClick', point) - event.off('doubleClick', callback); - }); - - test('BoardEvent event:doubleClick', async () => { - const event = new BoardEvent(); - const point = { x: 123, y: 456 } - event.on('doubleClick', (p) => { - expect(p).toStrictEqual(point); - }); - event.trigger('doubleClick', point) - }); - - test('BoardEvent event:hover', async () => { - const event = new BoardEvent(); - const point = { x: 123, y: 456 } - event.on('hover', (p) => { - expect(p).toStrictEqual(point); - }); - event.trigger('hover', point) - }); - - test('BoardEvent event:leave', async () => { - const event = new BoardEvent(); - event.on('leave', (e) => { - expect(e).toStrictEqual(undefined); - }); - event.trigger('leave', undefined) - }); - - test('BoardEvent event:point', async () => { - const event = new BoardEvent(); - const point = { x: 123, y: 456 } - event.on('point', (p) => { - expect(p).toStrictEqual(point); - }); - event.trigger('point', point) - }); - - test('BoardEvent event:move', async () => { - const event = new BoardEvent(); - const point = { x: 123, y: 456 } - event.on('move', (p) => { - expect(p).toStrictEqual(point); - }); - event.trigger('move', point) - }); - - - test('BoardEvent event:moveStart', async () => { - const event = new BoardEvent(); - const point = { x: 123, y: 456 } - event.on('moveStart', (p) => { - expect(p).toStrictEqual(point); - }); - event.trigger('moveStart', point) - }); - - test('BoardEvent event:moveEnd', async () => { - const event = new BoardEvent(); - const point = { x: 123, y: 456 } - event.on('moveEnd', (p) => { - expect(p).toStrictEqual(point); - }); - event.trigger('moveEnd', point) - }); - - test('BoardEvent event:wheelX', async () => { - const event = new BoardEvent(); - const num = 123 - event.on('wheelX', (e) => { - expect(e).toStrictEqual(num); - }); - event.trigger('wheelX', num) - }); - - test('BoardEvent event:wheelY', async () => { - const event = new BoardEvent(); - const num = 123 - event.on('wheelY', (e) => { - expect(e).toStrictEqual(num); - }); - event.trigger('wheelY', num) - }); - -}); \ No newline at end of file diff --git a/packages/board/__tests__/lib/style.test.ts b/packages/board/__tests__/lib/style.test.ts deleted file mode 100644 index 61a446d..0000000 --- a/packages/board/__tests__/lib/style.test.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { - mergeCSS2StyleAttr, setStyle, getStyle, getDomTransform, - setDomTransform, -} from './../../src/lib/style'; - - -describe('@idraw/board: src/lib/style', () => { - test('mergeCSS2StyleAttr', () => { - const str = mergeCSS2StyleAttr({ - 'width': '12px', - 'height': '20px', - 'overflow': 'auto', - 'margin-top': '123px', - }); - expect(str).toStrictEqual('width:12px; height:20px; overflow:auto; margin-top:123px;'); - }); - - test('setStyle', () => { - const div = document.createElement('div'); - setStyle(div, { - 'width': '12px', - 'height': '20px', - 'overflow': 'auto', - 'margin-top': '123px', - }); - expect(div).toMatchSnapshot(); - }); - - test('getStyle', () => { - const div = document.createElement('div'); - setStyle(div, { - 'width': '12px', - 'height': '20px', - 'overflow': 'auto', - 'margin-top': '123px', - }); - expect(getStyle(div)).toMatchSnapshot({ - 'width': '12px', - 'height': '20px', - 'overflow': 'auto', - 'margin-top': '123px', - }); - }); - - test('setDomTransform', () => { - // transform: matrix( scaleX(), skewY(), skewX(), scaleY(), translateX(), translateY() ) - // matrix(1, 2, -1, 1, 80, 80) - const div = document.createElement('div'); - setDomTransform(div, { - scaleX: 1, - skewY: 2, - skewX: -1, - scaleY: 1, - translateX: 80, - translateY: 90, - }); - expect(div).toMatchSnapshot(); - }) - - test('getDomTransform', () => { - // transform: matrix( scaleX(), skewY(), skewX(), scaleY(), translateX(), translateY() ) - // matrix(1, 2, -1, 1, 80, 80) - const div = document.createElement('div'); - setDomTransform(div, { - scaleX: 1, - skewY: 2, - skewX: -1, - scaleY: 1, - translateX: 80, - translateY: 90, - }); - expect(getDomTransform(div)).toStrictEqual({ - scaleX: 1, - skewY: 2, - skewX: -1, - scaleY: 1, - translateX: 80, - translateY: 90, - }); - }) -}) \ No newline at end of file diff --git a/packages/board/__tests__/other-api.test.ts b/packages/board/__tests__/other-api.test.ts deleted file mode 100644 index 5523d12..0000000 --- a/packages/board/__tests__/other-api.test.ts +++ /dev/null @@ -1,63 +0,0 @@ -import Board from '../src'; -import { getData } from './data'; - -describe('@idraw/board', () => { - document.body.innerHTML = ` -
- `; - const opts = { - width: 600, - height: 400, - contextWidth: 600, - contextHeight: 400, - devicePixelRatio: 4 - }; - const mount = document.querySelector('#mount') as HTMLDivElement; - const board = new Board(mount, opts); - - const ctx = board.getContext(); - const data = getData(); - board.clear(); - ctx.clearRect(0, 0, opts.width, opts.height); - ctx.setFillStyle('#ffffff'); - ctx.fillRect(0, 0, opts.width, opts.height); - data.elements.forEach((ele) => { - ctx.setFillStyle(ele.desc.color); - ctx.fillRect(ele.x, ele.y, ele.w, ele.h); - }); - - test('getTransform', async () => { - const resultScale = board.scale(2); - expect(resultScale).toStrictEqual({ - position: { top: 0, bottom: -400, left: 0, right: -600 }, - size: { x: 0, y: 0, w: 1200, h: 800 } - }); - - const resultX = board.scrollX(-600); - expect(resultX).toStrictEqual({ - position: { top: 0, bottom: -400, left: -600, right: 0 }, - size: { x: -1200, y: 0, w: 1200, h: 800 } - }); - - const resultY = board.scrollY(-400); - expect(resultY).toStrictEqual({ - position: { top: -400, bottom: 0, left: -600, right: 0 }, - size: { x: -1200, y: -800, w: 1200, h: 800 } - }); - - board.draw(); - - const originCtx = board.getOriginContext2D(); - // @ts-ignore; - const originCalls = originCtx.__getDrawCalls(); - expect(originCalls).toMatchSnapshot(); - - const displayCtx = board.getDisplayContext2D(); - // @ts-ignore; - const displayCalls = displayCtx.__getDrawCalls(); - expect(displayCalls).toMatchSnapshot(); - - const transform = board.getTransform(); - expect(transform).toStrictEqual({ scale: 2, scrollX: -600, scrollY: -400 }); - }); -}); diff --git a/packages/board/__tests__/point.test.ts b/packages/board/__tests__/point.test.ts deleted file mode 100644 index 7f8d8e0..0000000 --- a/packages/board/__tests__/point.test.ts +++ /dev/null @@ -1,38 +0,0 @@ -import Board from '../src'; - -describe('@idraw/board', () => { - document.body.innerHTML = ` -
- `; - const opts = { - width: 800, - height: 600, - contextWidth: 600, - contextHeight: 400, - devicePixelRatio: 4, - canScroll: true - }; - const transform = { - scale: 2, - scrollX: -200, - scrollY: -100 - }; - const mount = document.querySelector('#mount') as HTMLDivElement; - const board = new Board(mount, opts); - - board.scale(transform.scale); - board.scrollX(transform.scrollX); - board.scrollY(transform.scrollY); - board.draw(); - - const p1 = { x: 400, y: 300 }; - const p2 = { x: 300, y: 200 }; - - test('pointScreenToContext', async () => { - expect(board.pointScreenToContext(p1)).toStrictEqual(p2); - }); - - test('pointContextToScreen', async () => { - expect(board.pointContextToScreen(p2)).toStrictEqual(p1); - }); -}); diff --git a/packages/board/__tests__/scale.test.ts b/packages/board/__tests__/scale.test.ts deleted file mode 100644 index a0ae67c..0000000 --- a/packages/board/__tests__/scale.test.ts +++ /dev/null @@ -1,184 +0,0 @@ -import Board from '../src'; -import { getData } from './data'; - -describe('@idraw/board', () => { - test('scale', async () => { - document.body.innerHTML = ` -
- `; - const opts = { - width: 600, - height: 400, - contextWidth: 600, - contextHeight: 400, - devicePixelRatio: 4 - }; - const mount = document.querySelector('#mount') as HTMLDivElement; - const board = new Board(mount, opts); - - const ctx = board.getContext(); - const data = getData(); - - board.clear(); - ctx.clearRect(0, 0, opts.width, opts.height); - ctx.setFillStyle('#ffffff'); - ctx.fillRect(0, 0, opts.width, opts.height); - data.elements.forEach((ele) => { - ctx.setFillStyle(ele.desc.color); - ctx.fillRect(ele.x, ele.y, ele.w, ele.h); - }); - - const result = board.scale(0.5); - expect(result).toStrictEqual({ - position: { top: 100, bottom: 100, left: 150, right: 150 }, - size: { x: 75, y: 50, w: 300, h: 200 } - }); - board.draw(); - - const originCtx = board.getOriginContext2D(); - // @ts-ignore; - const originCalls = originCtx.__getDrawCalls(); - expect(originCalls).toMatchSnapshot(); - - const displayCtx = board.getDisplayContext2D(); - // @ts-ignore; - const displayCalls = displayCtx.__getDrawCalls(); - expect(displayCalls).toMatchSnapshot(); - }); - - test('scale 001', async () => { - document.body.innerHTML = ` -
- `; - const opts = { - width: 600, - height: 400, - contextWidth: 1000, - contextHeight: 900, - devicePixelRatio: 4 - }; - const mount = document.querySelector('#mount-001') as HTMLDivElement; - const board = new Board(mount, opts); - - const ctx = board.getContext(); - const data = getData(); - - board.clear(); - ctx.clearRect(0, 0, opts.width, opts.height); - ctx.setFillStyle('#ffffff'); - ctx.fillRect(0, 0, opts.width, opts.height); - data.elements.forEach((ele) => { - ctx.setFillStyle(ele.desc.color); - ctx.fillRect(ele.x, ele.y, ele.w, ele.h); - }); - - const result = board.scale(0.5); - expect(result).toStrictEqual({ - position: { top: 0, bottom: -50, left: 50, right: 50 }, - size: { x: 25, y: 0, w: 500, h: 450 } - }); - board.draw(); - - const originCtx = board.getOriginContext2D(); - // @ts-ignore; - const originCalls = originCtx.__getDrawCalls(); - expect(originCalls).toMatchSnapshot(); - - const displayCtx = board.getDisplayContext2D(); - // @ts-ignore; - const displayCalls = displayCtx.__getDrawCalls(); - expect(displayCalls).toMatchSnapshot(); - }); - - test('scale 002', async () => { - document.body.innerHTML = ` -
- `; - const opts = { - width: 600, - height: 400, - contextWidth: 1200, - contextHeight: 600, - devicePixelRatio: 4 - }; - const mount = document.querySelector('#mount-002') as HTMLDivElement; - const board = new Board(mount, opts); - - const ctx = board.getContext(); - const data = getData(); - - board.clear(); - ctx.clearRect(0, 0, opts.width, opts.height); - ctx.setFillStyle('#ffffff'); - ctx.fillRect(0, 0, opts.width, opts.height); - data.elements.forEach((ele) => { - ctx.setFillStyle(ele.desc.color); - ctx.fillRect(ele.x, ele.y, ele.w, ele.h); - }); - - board.scrollX(-600); - board.scrollY(-400); - const result = board.scale(0.5); - expect(result).toStrictEqual({ - position: { top: 50, bottom: 50, left: 0, right: 0 }, - size: { x: 0, y: 25, w: 600, h: 300 } - }); - board.draw(); - - const originCtx = board.getOriginContext2D(); - // @ts-ignore; - const originCalls = originCtx.__getDrawCalls(); - expect(originCalls).toMatchSnapshot(); - - const displayCtx = board.getDisplayContext2D(); - // @ts-ignore; - const displayCalls = displayCtx.__getDrawCalls(); - expect(displayCalls).toMatchSnapshot(); - }); - - test('scale 003', async () => { - document.body.innerHTML = ` -
- `; - const opts = { - width: 600, - height: 400, - contextWidth: 1000, - contextHeight: 600, - devicePixelRatio: 4 - }; - const mount = document.querySelector('#mount-003') as HTMLDivElement; - const board = new Board(mount, opts); - - const ctx = board.getContext(); - const data = getData(); - - board.clear(); - ctx.clearRect(0, 0, opts.width, opts.height); - ctx.setFillStyle('#ffffff'); - ctx.fillRect(0, 0, opts.width, opts.height); - data.elements.forEach((ele) => { - ctx.setFillStyle(ele.desc.color); - ctx.fillRect(ele.x, ele.y, ele.w, ele.h); - }); - - board.scrollX(400); - board.scrollY(400); - const result = board.scale(0.8); - expect(result).toStrictEqual({ - position: { top: 0, bottom: -80, left: 0, right: -200 }, - size: { x: 0, y: 0, w: 800, h: 480 } - }); - board.draw(); - - const originCtx = board.getOriginContext2D(); - // @ts-ignore; - const originCalls = originCtx.__getDrawCalls(); - expect(originCalls).toMatchSnapshot(); - - const displayCtx = board.getDisplayContext2D(); - // @ts-ignore; - const displayCalls = displayCtx.__getDrawCalls(); - expect(displayCalls).toMatchSnapshot(); - }); -}); diff --git a/packages/board/__tests__/scroll.test.ts b/packages/board/__tests__/scroll.test.ts deleted file mode 100644 index 5c2b217..0000000 --- a/packages/board/__tests__/scroll.test.ts +++ /dev/null @@ -1,74 +0,0 @@ -import Board from '../src'; -import { getData } from './data'; - -describe('@idraw/board', () => { - document.body.innerHTML = ` -
- `; - const opts = { - width: 600, - height: 400, - contextWidth: 600, - contextHeight: 400, - devicePixelRatio: 4 - }; - const mount = document.querySelector('#mount') as HTMLDivElement; - const board = new Board(mount, opts); - - const ctx = board.getContext(); - const data = getData(); - board.clear(); - ctx.clearRect(0, 0, opts.width, opts.height); - ctx.setFillStyle('#ffffff'); - ctx.fillRect(0, 0, opts.width, opts.height); - data.elements.forEach((ele) => { - ctx.setFillStyle(ele.desc.color); - ctx.fillRect(ele.x, ele.y, ele.w, ele.h); - }); - - test('scroll', async () => { - const resultScale = board.scale(2); - expect(resultScale).toStrictEqual({ - position: { top: 0, bottom: -400, left: 0, right: -600 }, - size: { x: 0, y: 0, w: 1200, h: 800 } - }); - - const resultX = board.scrollX(-600); - expect(resultX).toStrictEqual({ - position: { top: 0, bottom: -400, left: -600, right: 0 }, - size: { x: -1200, y: 0, w: 1200, h: 800 } - }); - - const resultY = board.scrollY(-400); - expect(resultY).toStrictEqual({ - position: { top: -400, bottom: 0, left: -600, right: 0 }, - size: { x: -1200, y: -800, w: 1200, h: 800 } - }); - - board.draw(); - - const originCtx = board.getOriginContext2D(); - // @ts-ignore; - const originCalls = originCtx.__getDrawCalls(); - expect(originCalls).toMatchSnapshot(); - - const displayCtx = board.getDisplayContext2D(); - // @ts-ignore; - const displayCalls = displayCtx.__getDrawCalls(); - expect(displayCalls).toMatchSnapshot(); - - const screenInfo = board.getScreenInfo(); - expect(screenInfo).toStrictEqual({ - size: { x: -1200, y: -800, w: 1200, h: 800 }, - position: { top: -400, bottom: 0, left: -600, right: 0 }, - deviceSize: { x: -2400, y: -1600, w: 4800, h: 3200 }, - width: 600, - height: 400, - devicePixelRatio: 4, - canScrollXNext: true, - canScrollXPrev: true, - canScrollYNext: true, - canScrollYPrev: true - }); - }); -}); diff --git a/packages/board/__tests__/wheel.test.ts b/packages/board/__tests__/wheel.test.ts deleted file mode 100644 index dee7e9f..0000000 --- a/packages/board/__tests__/wheel.test.ts +++ /dev/null @@ -1,69 +0,0 @@ -/* eslint-disable @typescript-eslint/ban-ts-comment */ -import Board from '../src'; -import { getData } from './data'; - -describe('@idraw/board', () => { - test('scroll', async () => { - document.body.innerHTML = ` -
- `; - const opts = { - width: 600, - height: 400, - contextWidth: 600, - contextHeight: 400, - devicePixelRatio: 4, - canScroll: true, - scrollConfig: { - width: 20, - color: '#666666' - } - }; - const mount = document.querySelector('#mount') as HTMLDivElement; - const board = new Board(mount, opts); - - const ctx = board.getContext(); - const data = getData(); - board.clear(); - ctx.clearRect(0, 0, opts.width, opts.height); - ctx.setFillStyle('#ffffff'); - ctx.fillRect(0, 0, opts.width, opts.height); - data.elements.forEach((ele) => { - ctx.setFillStyle(ele.desc.color); - ctx.fillRect(ele.x, ele.y, ele.w, ele.h); - }); - - const resultScale = board.scale(2); - expect(resultScale).toStrictEqual({ - position: { top: 0, bottom: -400, left: 0, right: -600 }, - size: { x: 0, y: 0, w: 1200, h: 800 } - }); - - const resultX = board.scrollX(-600); - expect(resultX).toStrictEqual({ - position: { top: 0, bottom: -400, left: -600, right: 0 }, - size: { x: -1200, y: 0, w: 1200, h: 800 } - }); - - const resultY = board.scrollY(-400); - expect(resultY).toStrictEqual({ - position: { top: -400, bottom: 0, left: -600, right: 0 }, - size: { x: -1200, y: -800, w: 1200, h: 800 } - }); - - board.draw(); - - const originCtx = board.getOriginContext2D(); - // @ts-ignore; - const originCalls = originCtx.__getDrawCalls(); - expect(originCalls).toMatchSnapshot(); - - const displayCtx = board.getDisplayContext2D(); - // @ts-ignore; - const displayCalls = displayCtx.__getDrawCalls(); - expect(displayCalls).toMatchSnapshot(); - - const scrollLineWidth = board.getScrollLineWidth(); - expect(scrollLineWidth).toStrictEqual(opts.scrollConfig.width); - }); -}); diff --git a/packages/board/dev/data.ts b/packages/board/dev/data.ts deleted file mode 100644 index df4f0ea..0000000 --- a/packages/board/dev/data.ts +++ /dev/null @@ -1,195 +0,0 @@ -import type { Data } from '@idraw/types'; -import { createUUID, parseSVGPath } from '@idraw/util'; - -const data: Data = { - elements: [ - // { - // uuid: createUUID(), - // type: 'image', - // x: 100, - // y: 100, - // w: 100, - // h: 100, - // angle: 30, - // detail: { - // // src: '/public/images/lena.png?t=002' - // src: '@assets/0ee02fb0-ec43-6b9a-9ab4-55be5816ca4a' - // }, - // operations: { - // limitRatio: true - // } - // }, - { - uuid: createUUID(), - x: 2, - y: 2, - w: 100, - h: 100, - type: 'circle', - detail: { - background: '#f44336' - } - }, - { - uuid: createUUID(), - type: 'rect', - x: 50, - y: 50, - w: 100, - h: 100, - detail: { - background: '#8bc34a' - } - }, - // { - // uuid: createUUID(), - // type: 'image', - // x: 250, - // y: 250, - // w: 100, - // h: 100, - // detail: { - // // src: '/public/images/github.png?t=003' - // src: '@assets/25a0e630-a958-a522-29a4-5dccf04985da' - // } - // }, - // { - // uuid: createUUID(), - // type: 'group', - // x: 250, - // y: 250, - // w: 100, - // h: 100, - // detail: { - // children: [ - // { - // uuid: createUUID(), - // type: 'image', - // x: 0, - // y: 0, - // w: 100, - // h: 100, - // detail: { - // // src: '/public/images/github.png?t=003' - // src: '@assets/489c64d2-f642-3855-7bd6-cb40624b62c3' - // } - // } - // ], - // // assets: { - // // '@assets/489c64d2-f642-3855-7bd6-cb40624b62c3': { - // // type: 'image', - // // value: '/public/images/github.png?t=003' - // // } - // // } - // } - // }, - { - uuid: createUUID(), - x: 0, - y: 300, - w: 100, - h: 100, - type: 'circle', - detail: { - background: '#009688' - } - }, - { - uuid: createUUID(), - x: 300, - y: 300, - w: 100, - h: 100, - type: 'circle', - detail: { - background: '#673ab7' - } - }, - { - uuid: createUUID(), - x: 300, - y: 0, - w: 100, - h: 100, - type: 'circle', - detail: { - background: '#ffc107' - } - }, - { - uuid: createUUID(), - x: 150, - y: 150, - w: 100, - h: 100, - // angle: 30, - type: 'rect', - detail: { - background: '#4caf50', - clipPath: { - commands: parseSVGPath(` - M 10,30 - A 20,20 0,0,1 50,30 - A 20,20 0,0,1 90,30 - Q 90,60 50,90 - Q 10,60 10,30 z`), - // fill: '#ff0000', - originX: 10, - originY: 10, - originH: 80, - originW: 80 - // background: '#0000002A' - } - } - }, - { - uuid: createUUID(), - x: 100, - y: 10, - w: 80, - h: 80, - // angle: 30, - type: 'path', - detail: { - commands: parseSVGPath(` - M 10,30 - A 20,20 0,0,1 50,30 - A 20,20 0,0,1 90,30 - Q 90,60 50,90 - Q 10,60 10,30 z`), - fill: 'red', - originX: 10, - originY: 10, - originH: 80, - originW: 80, - background: '#0000002A' - - // clipPath: { - // commands: parseSVGPath(` - // M 10,30 - // A 20,20 0,0,1 50,30 - // A 20,20 0,0,1 90,30 - // Q 90,60 50,90 - // Q 10,60 10,30 z`), - // fill: '#ff0000', - // originX: 10, - // originY: 10, - // originH: 80, - // originW: 80 - // } - } - } - ] - // assets: { - // '@assets/0ee02fb0-ec43-6b9a-9ab4-55be5816ca4a': { - // type: 'image', - // value: '/public/images/lena.png?t=003' - // }, - // '@assets/25a0e630-a958-a522-29a4-5dccf04985da': { - // type: 'image', - // value: '/public/images/github.png?t=002' - // } - // } -}; - -export default data; diff --git a/packages/board/dev/index.html b/packages/board/dev/index.html deleted file mode 100644 index 4df3be5..0000000 --- a/packages/board/dev/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - -
- -
- - - - - - \ No newline at end of file diff --git a/packages/board/dev/main.ts b/packages/board/dev/main.ts deleted file mode 100644 index 63d3ac0..0000000 --- a/packages/board/dev/main.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { createBoardContent, deepClone } from '../../util/src'; -import { Board } from '../src'; -import { MiddlewareSelector, MiddlewareScroller, MiddlewareScaler } from '../../core/src'; -import data from './data'; - -const devicePixelRatio = window.devicePixelRatio; -// const width = window.innerWidth; -// const height = window.innerHeight; - -const width = 800; -const height = 600; - -const canvas = document.querySelector('#canvas') as HTMLCanvasElement; -canvas.width = width * devicePixelRatio; -canvas.height = height * devicePixelRatio; -canvas.style.width = `${width}px`; -canvas.style.height = `${height}px`; -// const ctx1 = canvas.getContext('2d') as CanvasRenderingContext2D; -const boardContent1 = createBoardContent(canvas, { width, height, devicePixelRatio }); -const board = new Board({ boardContent: boardContent1 }); - -const sharer1 = board.getSharer(); -sharer1.setActiveViewSizeInfo({ - devicePixelRatio, - width, - height, - contextWidth: width, - contextHeight: height -}); -const data1 = deepClone(data); -board.resize(sharer1.getActiveViewSizeInfo()); -board.setData(data1); -board.use(MiddlewareSelector); -board.use(MiddlewareScroller); -board.use(MiddlewareScaler); -// board.scale(2); -// board.scrollX(-50); -// board.scrollY(-50); diff --git a/packages/board/package.json b/packages/board/package.json deleted file mode 100644 index 243bc94..0000000 --- a/packages/board/package.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "@idraw/board", - "version": "0.4.0-beta.39", - "description": "", - "main": "dist/esm/index.js", - "module": "dist/esm/index.js", - "unpkg": "dist/index.global.js", - "types": "dist/esm/index.d.ts", - "files": [ - "dist/**/*.ts", - "dist/**/*.js" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/idrawjs/idraw.git" - }, - "bugs": { - "url": "https://github.com/idrawjs/idraw/issues" - }, - "homepage": "https://github.com/idrawjs/idraw#readme", - "author": "chenshenhai", - "license": "MIT", - "devDependencies": { - "@idraw/types": "workspace:^0.4.0-beta.39" - }, - "dependencies": {}, - "peerDependencies": { - "@idraw/util": "workspace:^0.4.0-beta.39", - "@idraw/renderer": "workspace:^0.4.0-beta.39" - }, - "publishConfig": { - "access": "public", - "provenance": true - } -} \ No newline at end of file diff --git a/packages/core/package.json b/packages/core/package.json index a7de194..d39851c 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@idraw/core", - "version": "0.4.0-beta.39", + "version": "0.4.0-beta.40", "description": "", "main": "dist/esm/index.js", "module": "dist/esm/index.js", @@ -18,16 +18,15 @@ "url": "https://github.com/idrawjs/idraw/issues" }, "homepage": "https://github.com/idrawjs/idraw#readme", - "author": "chenshenhai", + "author": "idrawjs", "license": "MIT", "devDependencies": { - "@idraw/types": "workspace:^0.4.0-beta.39" + "@idraw/types": "workspace:^0.4.0-beta.40" }, "dependencies": {}, "peerDependencies": { - "@idraw/board": "workspace:^0.4.0-beta.39", - "@idraw/renderer": "workspace:^0.4.0-beta.39", - "@idraw/util": "workspace:^0.4.0-beta.39" + "@idraw/renderer": "workspace:^0.4.0-beta.40", + "@idraw/util": "workspace:^0.4.0-beta.40" }, "publishConfig": { "access": "public", diff --git a/packages/board/src/index.ts b/packages/core/src/board/index.ts similarity index 95% rename from packages/board/src/index.ts rename to packages/core/src/board/index.ts index 48efe2e..b4628b1 100644 --- a/packages/board/src/index.ts +++ b/packages/core/src/board/index.ts @@ -1,4 +1,4 @@ -import { Renderer } from '@idraw/renderer'; +import { Renderer, Calculator } from '@idraw/renderer'; import { // throttle, calcElementsContextSize, @@ -16,10 +16,9 @@ import type { UtilEventEmitter, ModifyOptions } from '@idraw/types'; -import { Calculator } from './lib/calculator'; -import { BoardWatcher } from './lib/watcher'; -import { Sharer } from './lib/sharer'; -import { Viewer } from './lib/viewer'; +import { BoardWatcher } from './watcher'; +import { Sharer } from './sharer'; +import { Viewer } from './viewer'; // const throttleTime = 10; // ms @@ -44,16 +43,17 @@ export class Board { constructor(opts: BoardOptions) { const { boardContent } = opts; const sharer = new Sharer(); - const calculator = new Calculator({ viewContext: boardContent.viewContext }); + const watcher = new BoardWatcher({ boardContent, sharer }); const renderer = new Renderer({ viewContext: boardContent.viewContext, - sharer, - calculator + tempContext: boardContent.tempContext, + sharer }); + const calculator = renderer.getCalculator(); this.#opts = opts; this.#sharer = sharer; @@ -331,12 +331,12 @@ export class Board { extend: true }); if (modifiedOptions) { - this.#viewer.resetViewVisibleInfoMap(data, { + this.#viewer.resetVirtualFlatItemMap(data, { viewSizeInfo, viewScaleInfo }); } else { - this.#viewer.resetViewVisibleInfoMap(data, { + this.#viewer.resetVirtualFlatItemMap(data, { viewSizeInfo, viewScaleInfo }); @@ -374,7 +374,10 @@ export class Board { const calculator = this.#calculator; const eventHub = this.#eventHub; - const obj = middleware({ boardContent, sharer, viewer, calculator, eventHub: eventHub as UtilEventEmitter, container }, config); + const obj = middleware( + { boardContent, sharer, viewer, calculator, eventHub: eventHub as UtilEventEmitter, container }, + config + ); obj.use?.(); this.#middlewares.push(middleware); this.#activeMiddlewareObjs.push(obj); diff --git a/packages/board/src/lib/sharer.ts b/packages/core/src/board/sharer.ts similarity index 100% rename from packages/board/src/lib/sharer.ts rename to packages/core/src/board/sharer.ts diff --git a/packages/board/src/lib/viewer.ts b/packages/core/src/board/viewer.ts similarity index 93% rename from packages/board/src/lib/viewer.ts rename to packages/core/src/board/viewer.ts index e57242e..3385547 100644 --- a/packages/board/src/lib/viewer.ts +++ b/packages/core/src/board/viewer.ts @@ -45,7 +45,18 @@ export class Viewer extends EventEmitter implements BoardVi const { renderer, boardContent, beforeDrawFrame, afterDrawFrame } = this.#opts; if (snapshot) { - const { scale, offsetTop, offsetBottom, offsetLeft, offsetRight, width, height, contextHeight, contextWidth, devicePixelRatio } = snapshot.activeStore; + const { + scale, + offsetTop, + offsetBottom, + offsetLeft, + offsetRight, + width, + height, + contextHeight, + contextWidth, + devicePixelRatio + } = snapshot.activeStore; const viewScaleInfo: ViewScaleInfo = { scale, @@ -86,7 +97,7 @@ export class Viewer extends EventEmitter implements BoardVi } } - resetViewVisibleInfoMap( + resetVirtualFlatItemMap( data: Data, opts: { viewScaleInfo: ViewScaleInfo; @@ -94,7 +105,7 @@ export class Viewer extends EventEmitter implements BoardVi } ): void { if (data) { - this.#opts.calculator.resetViewVisibleInfoMap(data, opts); + this.#opts.calculator.resetVirtualFlatItemMap(data, opts); } } @@ -111,7 +122,10 @@ export class Viewer extends EventEmitter implements BoardVi this.#drawAnimationFrame(); } - scale(opts: { scale: number; point: PointSize; ignoreUpdateVisibleStatus?: boolean }): { moveX: number; moveY: number } { + scale(opts: { scale: number; point: PointSize; ignoreUpdateVisibleStatus?: boolean }): { + moveX: number; + moveY: number; + } { const { scale, point, ignoreUpdateVisibleStatus } = opts; const { sharer } = this.#opts; const { moveX, moveY } = viewScale({ diff --git a/packages/board/src/lib/watcher.ts b/packages/core/src/board/watcher.ts similarity index 89% rename from packages/board/src/lib/watcher.ts rename to packages/core/src/board/watcher.ts index 2529ff9..1dbcfac 100644 --- a/packages/board/src/lib/watcher.ts +++ b/packages/core/src/board/watcher.ts @@ -1,4 +1,12 @@ -import type { Point, BoardWatcherEventMap, Data, Element, ElementType, BoardWatcherOptions, BoardWatcherStore } from '@idraw/types'; +import type { + Point, + BoardWatcherEventMap, + Data, + Element, + ElementType, + BoardWatcherOptions, + BoardWatcherStore +} from '@idraw/types'; import { EventEmitter, Store } from '@idraw/util'; function isBoardAvailableNum(num: any): boolean { @@ -11,7 +19,9 @@ export class BoardWatcher extends EventEmitter { #hasDestroyed: boolean = false; constructor(opts: BoardWatcherOptions) { super(); - const store = new Store({ defaultStorage: { hasPointDown: false, prevClickPoint: null, inCanvas: true } }); + const store = new Store({ + defaultStorage: { hasPointDown: false, prevClickPoint: null, inCanvas: true } + }); this.#store = store; this.#opts = opts; this.#init(); @@ -25,25 +35,27 @@ export class BoardWatcher extends EventEmitter { if (this.#hasDestroyed) { return; } + const canvas = this.#opts.boardContent.boardContext.canvas; const container = window; container.addEventListener('mousemove', this.#onHover); container.addEventListener('mousedown', this.#onPointStart); container.addEventListener('mousemove', this.#onPointMove); container.addEventListener('mouseup', this.#onPointEnd); // container.addEventListener('mouseleave', this.#onPointLeave); - container.addEventListener('wheel', this.#onWheel, { passive: false }); + canvas.addEventListener('wheel', this.#onWheel, { passive: false }); container.addEventListener('click', this.#onClick); container.addEventListener('contextmenu', this.#onContextMenu); } offEvents() { const container = window; + const canvas = this.#opts.boardContent.boardContext.canvas; container.removeEventListener('mousemove', this.#onHover); container.removeEventListener('mousedown', this.#onPointStart); container.removeEventListener('mousemove', this.#onPointMove); container.removeEventListener('mouseup', this.#onPointEnd); container.removeEventListener('mouseleave', this.#onPointLeave); - container.removeEventListener('wheel', this.#onWheel); + canvas.removeEventListener('wheel', this.#onWheel); container.removeEventListener('click', this.#onClick); container.removeEventListener('contextmenu', this.#onContextMenu); } @@ -101,7 +113,12 @@ export class BoardWatcher extends EventEmitter { const maxLimitTime = 500; const t = Date.now(); const preClickPoint = this.#store.get('prevClickPoint'); - if (preClickPoint && t - preClickPoint.t <= maxLimitTime && Math.abs(preClickPoint.x - point.x) <= 5 && Math.abs(preClickPoint.y - point.y) <= 5) { + if ( + preClickPoint && + t - preClickPoint.t <= maxLimitTime && + Math.abs(preClickPoint.x - point.x) <= 5 && + Math.abs(preClickPoint.y - point.y) <= 5 + ) { this.trigger('doubleClick', { point }); } else { this.#store.set('prevClickPoint', point); diff --git a/packages/core/src/config.ts b/packages/core/src/config.ts index a152150..d220792 100644 --- a/packages/core/src/config.ts +++ b/packages/core/src/config.ts @@ -3,6 +3,7 @@ export const EVENT_KEY_CURSOR = 'cursor'; export const EVENT_KEY_RULER = 'ruler'; export const EVENT_KEY_SCALE = 'scale'; export const EVENT_KEY_SELECT = 'select'; +export const EVENT_KEY_SELECT_LAYOUT = 'selectLayout'; export const EVENT_KEY_CLEAR_SELECT = 'clearSelect'; export const EVENT_KEY_TEXT_EDIT = 'textEdit'; export const EVENT_KEY_TEXT_CHANGE = 'textChange'; @@ -16,6 +17,7 @@ export type CoreEventKeys = { RULER: typeof EVENT_KEY_RULER; SCALE: typeof EVENT_KEY_SCALE; SELECT: typeof EVENT_KEY_SELECT; + SELECT_LAYOUT: typeof EVENT_KEY_SELECT_LAYOUT; CLEAR_SELECT: typeof EVENT_KEY_CLEAR_SELECT; TEXT_EDIT: typeof EVENT_KEY_TEXT_EDIT; TEXT_CHANGE: typeof EVENT_KEY_TEXT_CHANGE; @@ -29,6 +31,7 @@ const innerEventKeys: CoreEventKeys = { CHANGE: EVENT_KEY_CHANGE, RULER: EVENT_KEY_RULER, SCALE: EVENT_KEY_SCALE, + SELECT_LAYOUT: EVENT_KEY_SELECT_LAYOUT, SELECT: EVENT_KEY_SELECT, CLEAR_SELECT: EVENT_KEY_CLEAR_SELECT, TEXT_EDIT: EVENT_KEY_TEXT_EDIT, diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index f3c16d4..a6a82c2 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,10 +1,22 @@ -import type { Data, PointSize, CoreOptions, BoardMiddleware, ViewSizeInfo, CoreEventMap, ViewScaleInfo, LoadItemMap, ModifyOptions } from '@idraw/types'; -import { Board } from '@idraw/board'; +import type { + Data, + PointSize, + CoreOptions, + BoardMiddleware, + ViewSizeInfo, + CoreEventMap, + ViewScaleInfo, + LoadItemMap, + ModifyOptions +} from '@idraw/types'; +import { Board, Sharer, Calculator } from './board'; import { createBoardContent, validateElements } from '@idraw/util'; import { Cursor } from './lib/cursor'; export { coreEventKeys } from './config'; export type { CoreEventKeys } from './config'; +export { Board, Sharer, Calculator }; + // export { MiddlewareSelector } from './middleware/selector'; export { MiddlewareSelector } from './middleware/selector'; export { MiddlewareScroller } from './middleware/scroller'; @@ -23,7 +35,7 @@ export class Core { #container: HTMLDivElement; constructor(container: HTMLDivElement, opts: CoreOptions) { - const { devicePixelRatio = 1, width, height, createCustomContext2D } = opts; + const { devicePixelRatio = 1, width, height } = opts; // this.#opts = opts; this.#container = container; @@ -33,7 +45,7 @@ export class Core { this.#initContainer(); container.appendChild(canvas); - const boardContent = createBoardContent(canvas, { width, height, devicePixelRatio, offscreen: true, createCustomContext2D }); + const boardContent = createBoardContent(canvas, { width, height, devicePixelRatio }); const board = new Board({ boardContent, container }); const sharer = board.getSharer(); sharer.setActiveViewSizeInfo({ diff --git a/packages/core/src/middleware/layout-selector/index.ts b/packages/core/src/middleware/layout-selector/index.ts index ea49106..89ee133 100644 --- a/packages/core/src/middleware/layout-selector/index.ts +++ b/packages/core/src/middleware/layout-selector/index.ts @@ -1,5 +1,11 @@ import type { BoardMiddleware, ElementSize, Point, MiddlewareLayoutSelectorConfig, CoreEventMap } from '@idraw/types'; -import { calcLayoutSizeController, isViewPointInVertexes, getViewScaleInfoFromSnapshot, isViewPointInElementSize, calcViewElementSize } from '@idraw/util'; +import { + calcLayoutSizeController, + isViewPointInVertexes, + getViewScaleInfoFromSnapshot, + isViewPointInElementSize, + calcViewElementSize +} from '@idraw/util'; import type { LayoutSelectorSharedStorage, ControlType } from './types'; import { keyLayoutActionType, @@ -21,7 +27,11 @@ import { coreEventKeys } from '../../config'; export { keyLayoutIsSelected, keyLayoutIsBusyMoving }; -export const MiddlewareLayoutSelector: BoardMiddleware = (opts, config) => { +export const MiddlewareLayoutSelector: BoardMiddleware< + LayoutSelectorSharedStorage, + CoreEventMap, + MiddlewareLayoutSelectorConfig +> = (opts, config) => { const { sharer, boardContent, calculator, viewer, eventHub } = opts; const { overlayContext } = boardContent; let innerConfig = { @@ -242,6 +252,7 @@ export const MiddlewareLayoutSelector: BoardMiddleware elem.uuid); const data = sharer.getActiveStorage('data'); const positionMap = getElementPositionMapFromList(uuids, data?.elements || []); - eventHub.trigger(coreEventKeys.SELECT, { uuids, positions: list.map((elem) => [...positionMap[elem.uuid]]) }); + eventHub.trigger(coreEventKeys.SELECT, { + type: 'clickCanvas', + uuids, + positions: list.map((elem) => [...positionMap[elem.uuid]]) + }); } }; @@ -515,7 +522,14 @@ export const MiddlewareSelector: BoardMiddleware< eventHub.trigger(MIDDLEWARE_INTERNAL_EVENT_SHOW_INFO_ANGLE, { show: false }); - if (data && elems?.length === 1 && moveOriginalStartElementSize && originalStart && end && elems[0]?.operations?.locked !== true) { + if ( + data && + elems?.length === 1 && + moveOriginalStartElementSize && + originalStart && + end && + elems[0]?.operations?.locked !== true + ) { const { moveX, moveY } = calcPointMoveElementInGroup(originalStart, end, groupQueue); let totalMoveX = calculator.toGridNum(moveX / scale); @@ -547,7 +561,7 @@ export const MiddlewareSelector: BoardMiddleware< elems[0].x = calculator.toGridNum(moveOriginalStartElementSize.x + totalMoveX); elems[0].y = calculator.toGridNum(moveOriginalStartElementSize.y + totalMoveY); updateSelectedElementList([elems[0]]); - calculator.modifyViewVisibleInfoMap(data, { + calculator.modifyVirtualFlatItemMap(data, { modifyOptions: { type: 'updateElement', content: { @@ -571,7 +585,7 @@ export const MiddlewareSelector: BoardMiddleware< elem.x = calculator.toGridNum(elem.x + moveX); elem.y = calculator.toGridNum(elem.y + moveY); - calculator.modifyViewVisibleInfoMap(data, { + calculator.modifyVirtualFlatItemMap(data, { modifyOptions: { type: 'updateElement', content: { @@ -589,7 +603,13 @@ export const MiddlewareSelector: BoardMiddleware< } viewer.drawFrame(); } else if (actionType === 'resize') { - if (data && elems?.length === 1 && originalStart && moveOriginalStartElementSize && resizeType?.startsWith('resize-')) { + if ( + data && + elems?.length === 1 && + originalStart && + moveOriginalStartElementSize && + resizeType?.startsWith('resize-') + ) { hasChangedData = true; inBusyMode = 'resize'; const pointGroupQueue: Element<'group'>[] = []; @@ -612,7 +632,9 @@ export const MiddlewareSelector: BoardMiddleware< resizeEnd = rotatePointInGroup(end, pointGroupQueue); } if (resizeType === 'resize-rotate') { - const controller: ElementSizeController = sharer.getSharedStorage(keySelectedElementController) as ElementSizeController; + const controller: ElementSizeController = sharer.getSharedStorage( + keySelectedElementController + ) as ElementSizeController; const viewVertexes: ViewRectVertexes = [ controller.topLeft.center, controller.topRight.center, @@ -633,7 +655,10 @@ export const MiddlewareSelector: BoardMiddleware< elems[0].angle = calculator.toGridNum(resizedElemSize.angle || 0); } else { - const resizedElemSize = resizeElement(moveOriginalStartElementSize, { scale, start: resizeStart, end: resizeEnd, resizeType, sharer }); + const resizedElemSize = resizeElement( + { ...moveOriginalStartElementSize, operations: elems[0].operations }, + { scale, start: resizeStart, end: resizeEnd, resizeType, sharer } + ); const calcOpts = { ignore: !!moveOriginalStartElementSize.angle }; elems[0].x = calculator.toGridNum(resizedElemSize.x, calcOpts); elems[0].y = calculator.toGridNum(resizedElemSize.y, calcOpts); @@ -649,7 +674,7 @@ export const MiddlewareSelector: BoardMiddleware< } updateSelectedElementList([elems[0]]); - calculator.modifyViewVisibleInfoMap(data, { + calculator.modifyVirtualFlatItemMap(data, { modifyOptions: { type: 'updateElement', content: { @@ -788,11 +813,18 @@ export const MiddlewareSelector: BoardMiddleware< viewer.drawFrame(); return; } - } else if (target.elements.length === 1 && target.elements[0]?.type === 'text' && !target.elements[0]?.operations?.invisible) { + } else if ( + target.elements.length === 1 && + target.elements[0]?.type === 'text' && + !target.elements[0]?.operations?.invisible + ) { eventHub.trigger(coreEventKeys.TEXT_EDIT, { element: target.elements[0] as Element<'text'>, groupQueue: sharer.getSharedStorage(keyGroupQueue) || [], - position: getElementPositionFromList(target.elements[0]?.uuid, sharer.getActiveStorage('data')?.elements || []), + position: getElementPositionFromList( + target.elements[0]?.uuid, + sharer.getActiveStorage('data')?.elements || [] + ), viewScaleInfo: sharer.getActiveViewScaleInfo() }); } @@ -858,7 +890,18 @@ export const MiddlewareSelector: BoardMiddleware< const style = { activeColor, activeAreaColor, lockedColor, referenceColor }; const { activeStore, sharedStore } = snapshot; - const { scale, offsetLeft, offsetTop, offsetRight, offsetBottom, width, height, contextHeight, contextWidth, devicePixelRatio } = activeStore; + const { + scale, + offsetLeft, + offsetTop, + offsetRight, + offsetBottom, + width, + height, + contextHeight, + contextWidth, + devicePixelRatio + } = activeStore; if (rotateControllerPattern.fill !== activeColor) { rotateControllerPattern = createRotateControllerPattern({ fill: innerConfig.activeColor, diff --git a/packages/core/src/middleware/selector/util.ts b/packages/core/src/middleware/selector/util.ts index 0409134..fd480a8 100644 --- a/packages/core/src/middleware/selector/util.ts +++ b/packages/core/src/middleware/selector/util.ts @@ -11,7 +11,14 @@ import { limitAngle, calcRadian } from '@idraw/util'; -import type { ViewRectVertexes, ElementSizeController, StoreSharer, ViewScaleInfo, ViewSizeInfo } from '@idraw/types'; +import type { + ViewRectVertexes, + ElementSizeController, + StoreSharer, + ViewScaleInfo, + ViewSizeInfo, + ElementOperations +} from '@idraw/types'; import type { Data, Element, @@ -65,7 +72,12 @@ export function isPointInViewActiveVertexes( export function isPointInViewActiveGroup( p: PointSize, - opts: { ctx: ViewContext2D; viewScaleInfo: ViewScaleInfo; viewSizeInfo: ViewSizeInfo; groupQueue: Element<'group'>[] | null } + opts: { + ctx: ViewContext2D; + viewScaleInfo: ViewScaleInfo; + viewSizeInfo: ViewSizeInfo; + groupQueue: Element<'group'>[] | null; + } ): boolean { const { ctx, viewScaleInfo, viewSizeInfo, groupQueue } = opts; if (!groupQueue || !(groupQueue?.length > 0)) { @@ -100,7 +112,17 @@ export function getPointTarget( groupQueue: [], groupQueueVertexesList: [] }; - const { ctx, data, calculator, selectedElements, viewScaleInfo, viewSizeInfo, areaSize, groupQueue, selectedElementController } = opts; + const { + ctx, + data, + calculator, + selectedElements, + viewScaleInfo, + viewSizeInfo, + areaSize, + groupQueue, + selectedElementController + } = opts; // resize if (selectedElementController) { @@ -174,7 +196,7 @@ export function getPointTarget( } export function resizeElement( - elem: ElementSize, + elem: ElementSize & { operations?: ElementOperations }, opts: { start: PointSize; end: PointSize; @@ -260,7 +282,9 @@ export function resizeElement( const maxHorizontalDist = Math.max(Math.abs(moveHorizontalX), Math.abs(moveHorizontalY)); moveHorizontalX = (moveHorizontalX >= 0 ? 1 : -1) * maxHorizontalDist; moveHorizontalY = (((moveHorizontalY >= 0 ? 1 : -1) * maxHorizontalDist) / elem.w) * elem.h; - } else if (['resize-top-left', 'resize-top-right', 'resize-bottom-left', 'resize-bottom-right'].includes(resizeType)) { + } else if ( + ['resize-top-left', 'resize-top-right', 'resize-bottom-left', 'resize-bottom-right'].includes(resizeType) + ) { { // const maxDist = Math.max(Math.abs(moveX), Math.abs(moveY)); const maxDist = Math.abs(moveX); @@ -533,7 +557,8 @@ export function resizeElement( if (angle < 90) { moveVerticalDist = 0 - changeMoveDistDirect(moveVerticalDist, moveVerticalY); - moveHorizontalDist = 0 - changeMoveDistDirect(moveHorizontalDist, limitRatio ? 0 - moveVerticalDist : moveHorizontalX); + moveHorizontalDist = + 0 - changeMoveDistDirect(moveHorizontalDist, limitRatio ? 0 - moveVerticalDist : moveHorizontalX); const centerMoveVerticalDist = moveVerticalDist / 2; centerX = centerX + centerMoveVerticalDist * Math.sin(radian); @@ -544,7 +569,10 @@ export function resizeElement( centerY = centerY - centerMoveHorizontalDist * Math.sin(radian); } else if (angle < 180) { moveVerticalDist = changeMoveDistDirect(moveVerticalDist, moveVerticalX); - moveHorizontalDist = changeMoveDistDirect(moveHorizontalDist, limitRatio ? moveVerticalDist : moveHorizontalX); + moveHorizontalDist = changeMoveDistDirect( + moveHorizontalDist, + limitRatio ? moveVerticalDist : moveHorizontalX + ); const radian = parseRadian(angle - 90); const centerMoveVerticalDist = moveVerticalDist / 2; @@ -556,7 +584,10 @@ export function resizeElement( centerY = centerY - centerMoveDist * Math.cos(radian); } else if (angle < 270) { moveVerticalDist = changeMoveDistDirect(moveVerticalDist, moveVerticalY); - moveHorizontalDist = changeMoveDistDirect(moveHorizontalDist, limitRatio ? moveVerticalDist : moveHorizontalY); + moveHorizontalDist = changeMoveDistDirect( + moveHorizontalDist, + limitRatio ? moveVerticalDist : moveHorizontalY + ); const radian = parseRadian(angle - 180); const centerMoveVerticalDist = moveVerticalDist / 2; @@ -568,7 +599,10 @@ export function resizeElement( centerY = centerY + centerMoveHorizontalDist * Math.sin(radian); } else if (angle < 360) { moveVerticalDist = 0 - changeMoveDistDirect(moveVerticalDist, moveVerticalX); - moveHorizontalDist = changeMoveDistDirect(moveHorizontalDist, limitRatio ? moveVerticalDist : moveHorizontalY); + moveHorizontalDist = changeMoveDistDirect( + moveHorizontalDist, + limitRatio ? moveVerticalDist : moveHorizontalY + ); const radian = parseRadian(angle - 270); const centerMoveVerticalDist = moveVerticalDist / 2; @@ -604,7 +638,10 @@ export function resizeElement( let centerY = elemCenter.y; if (angle < 90) { moveVerticalDist = 0 - changeMoveDistDirect(moveVerticalDist, moveVerticalY); - moveHorizontalDist = changeMoveDistDirect(moveHorizontalDist, limitRatio ? moveVerticalDist : moveHorizontalY); + moveHorizontalDist = changeMoveDistDirect( + moveHorizontalDist, + limitRatio ? moveVerticalDist : moveHorizontalY + ); const radian = parseRadian(angle); const centerMoveVerticalDist = moveVerticalDist / 2; @@ -616,7 +653,10 @@ export function resizeElement( centerY = centerY + centerMoveHorizontalDist * Math.sin(radian); } else if (angle < 180) { moveVerticalDist = changeMoveDistDirect(moveVerticalDist, moveVerticalX); - moveHorizontalDist = changeMoveDistDirect(moveHorizontalDist, limitRatio ? moveVerticalDist : moveHorizontalY); + moveHorizontalDist = changeMoveDistDirect( + moveHorizontalDist, + limitRatio ? moveVerticalDist : moveHorizontalY + ); const radian = parseRadian(angle - 90); const centerMoveVerticalDist = moveVerticalDist / 2; @@ -629,7 +669,10 @@ export function resizeElement( } else if (angle < 270) { const radian = parseRadian(angle - 180); moveVerticalDist = changeMoveDistDirect(moveVerticalDist, moveVerticalY); - moveHorizontalDist = changeMoveDistDirect(moveHorizontalDist, limitRatio ? moveVerticalDist : 0 - moveHorizontalX); + moveHorizontalDist = changeMoveDistDirect( + moveHorizontalDist, + limitRatio ? moveVerticalDist : 0 - moveHorizontalX + ); const centerMoveVerticalDist = moveVerticalDist / 2; centerX = centerX - centerMoveVerticalDist * Math.sin(radian); centerY = centerY + centerMoveVerticalDist * Math.cos(radian); @@ -639,7 +682,10 @@ export function resizeElement( centerY = centerY - centerMoveHorizontalDist * Math.sin(radian); } else if (angle < 360) { moveVerticalDist = 0 - changeMoveDistDirect(moveVerticalDist, moveVerticalX); - moveHorizontalDist = changeMoveDistDirect(moveHorizontalDist, limitRatio ? moveVerticalDist : moveHorizontalX); + moveHorizontalDist = changeMoveDistDirect( + moveHorizontalDist, + limitRatio ? moveVerticalDist : moveHorizontalX + ); const radian = parseRadian(angle - 270); const centerMoveVerticalDist = moveVerticalDist / 2; @@ -675,7 +721,8 @@ export function resizeElement( let centerY = elemCenter.y; if (angle < 90) { moveVerticalDist = changeMoveDistDirect(moveVerticalDist, moveVerticalY); - moveHorizontalDist = 0 - changeMoveDistDirect(moveHorizontalDist, limitRatio ? 0 - moveVerticalDist : moveHorizontalX); + moveHorizontalDist = + 0 - changeMoveDistDirect(moveHorizontalDist, limitRatio ? 0 - moveVerticalDist : moveHorizontalX); const radian = parseRadian(angle); const centerMoveVerticalDist = moveVerticalDist / 2; @@ -687,7 +734,10 @@ export function resizeElement( centerY = centerY - centerMoveHorizontalDist * Math.sin(radian); } else if (angle < 180) { moveVerticalDist = 0 - changeMoveDistDirect(moveVerticalDist, moveVerticalX); - moveHorizontalDist = changeMoveDistDirect(moveHorizontalDist, limitRatio ? moveVerticalDist : moveHorizontalX); + moveHorizontalDist = changeMoveDistDirect( + moveHorizontalDist, + limitRatio ? moveVerticalDist : moveHorizontalX + ); const radian = parseRadian(angle - 90); const centerMoveVerticalDist = moveVerticalDist / 2; @@ -699,7 +749,10 @@ export function resizeElement( centerY = centerY - centerMoveDist * Math.cos(radian); } else if (angle < 270) { moveVerticalDist = changeMoveDistDirect(moveVerticalDist, moveVerticalX); - moveHorizontalDist = changeMoveDistDirect(moveHorizontalDist, limitRatio ? moveVerticalDist : moveHorizontalY); + moveHorizontalDist = changeMoveDistDirect( + moveHorizontalDist, + limitRatio ? moveVerticalDist : moveHorizontalY + ); const radian = parseRadian(angle - 180); const centerMoveVerticalDist = moveVerticalDist / 2; @@ -711,7 +764,10 @@ export function resizeElement( centerY = centerY + centerMoveHorizontalDist * Math.sin(radian); } else if (angle < 360) { moveVerticalDist = changeMoveDistDirect(moveVerticalDist, moveVerticalX); - moveHorizontalDist = changeMoveDistDirect(moveHorizontalDist, limitRatio ? moveVerticalDist : moveHorizontalY); + moveHorizontalDist = changeMoveDistDirect( + moveHorizontalDist, + limitRatio ? moveVerticalDist : moveHorizontalY + ); const radian = parseRadian(angle - 270); const centerMoveDist = moveVerticalDist / 2; centerX = centerX + centerMoveDist * Math.cos(radian); @@ -745,7 +801,10 @@ export function resizeElement( let centerY = elemCenter.y; if (angle < 90) { moveVerticalDist = changeMoveDistDirect(moveVerticalDist, moveVerticalY); - moveHorizontalDist = changeMoveDistDirect(moveHorizontalDist, limitRatio ? moveVerticalDist : moveHorizontalY); + moveHorizontalDist = changeMoveDistDirect( + moveHorizontalDist, + limitRatio ? moveVerticalDist : moveHorizontalY + ); const radian = parseRadian(angle); const centerMoveVerticalDist = moveVerticalDist / 2; @@ -769,7 +828,10 @@ export function resizeElement( centerY = centerY + centerMoveHorizontalDist * Math.cos(radian); } else if (angle < 270) { moveVerticalDist = changeMoveDistDirect(moveVerticalDist, moveVerticalX); - moveHorizontalDist = changeMoveDistDirect(moveHorizontalDist, limitRatio ? moveVerticalDist : 0 - moveHorizontalY); + moveHorizontalDist = changeMoveDistDirect( + moveHorizontalDist, + limitRatio ? moveVerticalDist : 0 - moveHorizontalY + ); const radian = parseRadian(angle - 180); const centerMoveVerticalDist = moveVerticalDist / 2; @@ -781,7 +843,10 @@ export function resizeElement( centerY = centerY - centerMoveHorizontalDist * Math.sin(radian); } else if (angle < 360) { moveVerticalDist = changeMoveDistDirect(moveVerticalDist, moveVerticalX); - moveHorizontalDist = changeMoveDistDirect(moveHorizontalDist, limitRatio ? moveVerticalDist : moveHorizontalX); + moveHorizontalDist = changeMoveDistDirect( + moveHorizontalDist, + limitRatio ? moveVerticalDist : moveHorizontalX + ); const radian = parseRadian(angle - 270); const centerMoveDist = moveVerticalDist / 2; @@ -865,7 +930,7 @@ export function getSelectedListArea( const indexes: number[] = []; const uuids: string[] = []; const elements: Element[] = []; - const { viewScaleInfo, viewSizeInfo, start, end } = opts; + const { viewScaleInfo, start, end } = opts; if (!(Array.isArray(data.elements) && start && end)) { return { indexes, uuids, elements }; diff --git a/packages/figma/package.json b/packages/figma/package.json index 9c3c977..cf5be46 100644 --- a/packages/figma/package.json +++ b/packages/figma/package.json @@ -1,6 +1,6 @@ { "name": "@idraw/figma", - "version": "0.4.0-beta.39", + "version": "0.4.0-beta.40", "description": "", "main": "dist/esm/index.js", "module": "dist/esm/index.js", @@ -11,8 +11,8 @@ "dist/**/*.js" ], "dependencies": { - "@idraw/types": "workspace:^0.4.0-beta.39", - "@idraw/util": "workspace:^0.4.0-beta.39", + "@idraw/types": "workspace:^0.4.0-beta.40", + "@idraw/util": "workspace:^0.4.0-beta.40", "kiwi-schema": "^0.5.0", "matrix-inverse": "^2.0.0", "pako": "^2.1.0", @@ -20,7 +20,7 @@ }, "devDependencies": { "@types/pako": "^2.0.3", - "@idraw/types": "workspace:^0.4.0-beta.39" + "@idraw/types": "workspace:^0.4.0-beta.40" }, "repository": { "type": "git", @@ -30,7 +30,7 @@ "url": "https://github.com/idrawjs/idraw/issues" }, "homepage": "https://github.com/idrawjs/idraw#readme", - "author": "chenshenhai", + "author": "idrawjs", "license": "MIT", "publishConfig": { "access": "public", diff --git a/packages/idraw/package.json b/packages/idraw/package.json index 155ffb0..81395fc 100644 --- a/packages/idraw/package.json +++ b/packages/idraw/package.json @@ -1,6 +1,6 @@ { "name": "idraw", - "version": "0.4.0-beta.39", + "version": "0.4.0-beta.40", "description": "", "main": "dist/esm/index.js", "module": "dist/esm/index.js", @@ -18,15 +18,14 @@ "url": "https://github.com/idrawjs/idraw/issues" }, "homepage": "https://github.com/idrawjs/idraw#readme", - "author": "chenshenhai", + "author": "idrawjs", "license": "MIT", "devDependencies": {}, "dependencies": { - "@idraw/board": "workspace:^0.4.0-beta.39", - "@idraw/core": "workspace:^0.4.0-beta.39", - "@idraw/renderer": "workspace:^0.4.0-beta.39", - "@idraw/types": "workspace:^0.4.0-beta.39", - "@idraw/util": "workspace:^0.4.0-beta.39" + "@idraw/core": "workspace:^0.4.0-beta.40", + "@idraw/renderer": "workspace:^0.4.0-beta.40", + "@idraw/types": "workspace:^0.4.0-beta.40", + "@idraw/util": "workspace:^0.4.0-beta.40" }, "publishConfig": { "access": "public", diff --git a/packages/idraw/src/file.ts b/packages/idraw/src/file.ts index 5d733ee..fbf5379 100644 --- a/packages/idraw/src/file.ts +++ b/packages/idraw/src/file.ts @@ -1,5 +1,4 @@ import { Renderer } from '@idraw/renderer'; -import { Calculator } from '@idraw/board'; import { createOffscreenContext2D } from '@idraw/util'; import type { Data, LoadItemMap, ViewContext2D, ViewScaleInfo, ViewSizeInfo } from '@idraw/types'; @@ -26,10 +25,9 @@ export type ExportImageFileResult = { export async function exportImageFileBlobURL(opts: ExportImageFileOptions): Promise { const { data, width, height, devicePixelRatio, viewScaleInfo, viewSizeInfo, loadItemMap } = opts; let viewContext: ViewContext2D | null = createOffscreenContext2D({ width, height, devicePixelRatio }); - let calculator: Calculator | null = new Calculator({ viewContext }); + // let calculator: Calculator | null = new Calculator({ viewContext }); let renderer: Renderer | null = new Renderer({ - viewContext, - calculator + viewContext }); renderer.setLoadItemMap(loadItemMap); renderer.drawData(data, { @@ -46,7 +44,6 @@ export async function exportImageFileBlobURL(opts: ExportImageFileOptions): Prom offScreenCanvas = null; viewContext = null; - calculator = null; renderer = null; return { diff --git a/packages/idraw/src/idraw.ts b/packages/idraw/src/idraw.ts index 957fcdc..c17bcc8 100644 --- a/packages/idraw/src/idraw.ts +++ b/packages/idraw/src/idraw.ts @@ -12,7 +12,8 @@ import type { Element, RecursivePartial, ElementPosition, - IDrawStorage + IDrawStorage, + DataLayout } from '@idraw/types'; import { createElement, @@ -25,9 +26,17 @@ import { filterCompactData, calcViewCenterContent, calcViewCenter, - Store + Store, + merge } from '@idraw/util'; -import { defaultSettings, getDefaultStorage, defaultMode, parseStyles, parseSettings } from './setting/config'; +import { + defaultSettings, + defaultOptions, + getDefaultStorage, + defaultMode, + parseStyles, + parseSettings +} from './setting/config'; import { exportImageFileBlobURL } from './file'; import type { ExportImageFileBaseOptions, ExportImageFileResult } from './file'; import type { IDrawEvent } from './event'; @@ -42,10 +51,10 @@ export class iDraw { }); constructor(mount: HTMLDivElement, options: IDrawOptions) { - const opts = { ...defaultSettings, ...options }; + const opts = { ...defaultSettings, ...defaultOptions, ...options }; this.#store.set('middlewareStyles', parseStyles(opts)); - const { width, height, devicePixelRatio, createCustomContext2D } = opts; - const core = new Core(mount, { width, height, devicePixelRatio, createCustomContext2D }); + const { width, height, devicePixelRatio } = opts; + const core = new Core(mount, { width, height, devicePixelRatio }); this.#core = core; this.#opts = opts; this.#init(); @@ -85,7 +94,7 @@ export class iDraw { const store = this.#store; const { mode, styles } = parseSettings(opts); let needFresh = false; - let newOpts: IDrawSettings = {}; + const newOpts: IDrawSettings = {}; store.clear(); if (mode) { changeMode(mode, core, store); @@ -181,20 +190,20 @@ export class iDraw { this.#core.trigger(name, e as IDrawEvent[T]); } - selectElement(uuid: string) { - this.selectElements([uuid]); + selectElement(uuid: string, opts?: { type?: string }) { + this.trigger(coreEventKeys.SELECT, { uuids: [uuid], type: opts?.type || 'selectElement' }); } - selectElements(uuids: string[]) { - this.trigger(coreEventKeys.SELECT, { uuids }); + selectElements(uuids: string[], opts?: { type?: string }) { + this.trigger(coreEventKeys.SELECT, { uuids, type: opts?.type || 'selectElements' }); } - selectElementByPosition(position: ElementPosition) { - this.selectElementsByPositions([position]); + selectElementByPosition(position: ElementPosition, opts?: { type?: string }) { + this.trigger(coreEventKeys.SELECT, { positions: [position], type: opts?.type || 'selectElementByPosition' }); } - selectElementsByPositions(positions: ElementPosition[]) { - this.trigger(coreEventKeys.SELECT, { positions }); + selectElementsByPositions(positions: ElementPosition[], opts?: { type?: string }) { + this.trigger(coreEventKeys.SELECT, { positions, type: opts?.type || 'selectElementsByPositions' }); } cancelElements() { @@ -230,6 +239,14 @@ export class iDraw { core.trigger(coreEventKeys.CHANGE, { data, type: 'updateElement' }); } + updateElementName(uuid: string, name: string) { + const core = this.#core; + const data: Data = core.getData() || { elements: [] }; + updateElementInList(uuid, { name }, data.elements); + core.setData(data); + core.trigger(coreEventKeys.CHANGE, { data, type: 'updateElementName' }); + } + addElement( element: Element, opts?: { @@ -241,7 +258,7 @@ export class iDraw { if (!opts || !opts?.position?.length) { data.elements.push(element); } else if (opts?.position) { - const position = [...opts?.position]; + const position = [...(opts?.position || [])]; insertElementToListByPosition(element, position, data.elements); } core.setData(data); @@ -270,6 +287,15 @@ export class iDraw { core.trigger(coreEventKeys.CHANGE, { data, type: 'moveElement' }); } + updateLayout(layout: Partial) { + const core = this.#core; + const data: Data = core.getData() || { elements: [] }; + data.layout = merge(data.layout || {}, layout) as DataLayout; + core.setData(data); + core.refresh(); + core.trigger(coreEventKeys.CHANGE, { data, type: 'updateLayout' }); + } + async getImageBlobURL(opts?: ExportImageFileBaseOptions): Promise { const data = this.getData() || { elements: [] }; const { devicePixelRatio } = opts || { devicePixelRatio: 1 }; diff --git a/packages/idraw/src/index.ts b/packages/idraw/src/index.ts index 975fc41..f69408f 100644 --- a/packages/idraw/src/index.ts +++ b/packages/idraw/src/index.ts @@ -1,6 +1,15 @@ export type * from '@idraw/types'; -export { Core, MiddlewareSelector, MiddlewareScroller, MiddlewareScaler, MiddlewareRuler, MiddlewareTextEditor, coreEventKeys } from '@idraw/core'; -export { Sharer, Calculator } from '@idraw/board'; +export { + Sharer, + Calculator, + Core, + MiddlewareSelector, + MiddlewareScroller, + MiddlewareScaler, + MiddlewareRuler, + MiddlewareTextEditor, + coreEventKeys +} from '@idraw/core'; export { Renderer } from '@idraw/renderer'; export { delay, @@ -23,6 +32,7 @@ export { isAssetId, createAssetId, deepClone, + deepCloneData, sortDataAsserts, istype, loadImage, @@ -111,10 +121,10 @@ export { modifyElement, calcElementViewRectInfo, calcElementOriginRectInfo, - calcElementViewRectInfoMap, - sortElementsViewVisiableInfoMap, flatElementList, - calcPointMoveElementInGroup + calcPointMoveElementInGroup, + merge, + omit } from '@idraw/util'; export { iDraw } from './idraw'; export { eventKeys } from './event'; diff --git a/packages/idraw/src/setting/config.ts b/packages/idraw/src/setting/config.ts index ea60790..b1fb9a0 100644 --- a/packages/idraw/src/setting/config.ts +++ b/packages/idraw/src/setting/config.ts @@ -1,4 +1,4 @@ -import type { IDrawSettings, IDrawStorage, IDrawMode } from '@idraw/types'; +import type { IDrawSettings, IDrawOptions, IDrawStorage, IDrawMode } from '@idraw/types'; import { istype } from '@idraw/util'; export const defaultMode: IDrawMode = 'select'; @@ -7,6 +7,10 @@ export const defaultSettings: Required> = { mode: defaultMode }; +export const defaultOptions: Required> = { + devicePixelRatio: window.devicePixelRatio +}; + export function getDefaultStorage(): IDrawStorage { const storage: IDrawStorage = { mode: defaultMode, diff --git a/packages/renderer/package.json b/packages/renderer/package.json index 139e981..f4bd140 100644 --- a/packages/renderer/package.json +++ b/packages/renderer/package.json @@ -1,6 +1,6 @@ { "name": "@idraw/renderer", - "version": "0.4.0-beta.39", + "version": "0.4.0-beta.40", "description": "", "main": "dist/esm/index.js", "module": "dist/esm/index.js", @@ -18,14 +18,14 @@ "url": "https://github.com/idrawjs/idraw/issues" }, "homepage": "https://github.com/idrawjs/idraw#readme", - "author": "chenshenhai", + "author": "idrawjs", "license": "MIT", "devDependencies": { - "@idraw/types": "workspace:^0.4.0-beta.39" + "@idraw/types": "workspace:^0.4.0-beta.40" }, "dependencies": {}, "peerDependencies": { - "@idraw/util": "workspace:^0.4.0-beta.39" + "@idraw/util": "workspace:^0.4.0-beta.40" }, "publishConfig": { "access": "public", diff --git a/packages/board/src/lib/calculator.ts b/packages/renderer/src/calculator.ts similarity index 74% rename from packages/board/src/lib/calculator.ts rename to packages/renderer/src/calculator.ts index eaf7339..8015c10 100644 --- a/packages/board/src/lib/calculator.ts +++ b/packages/renderer/src/calculator.ts @@ -7,34 +7,34 @@ import type { ViewCalculatorOptions, ViewScaleInfo, ViewSizeInfo, - ViewCalculatorStorage, + VirtualFlatStorage, ViewRectInfo, ModifyOptions, - ViewVisibleInfo + VirtualFlatItem } from '@idraw/types'; import { is, - isViewPointInElement, getViewPointAtElement, Store, - sortElementsViewVisiableInfoMap, - updateViewVisibleInfoMapStatus, calcViewPointSize, findElementFromListByPosition, getGroupQueueByElementPosition, calcElementOriginRectInfo, originRectInfoToRangeRectInfo + // elementToBoxInfo } from '@idraw/util'; +import { sortElementsViewVisiableInfoMap, updateVirtualFlatItemMapStatus } from './view-visible'; +import { calcVirtualFlatDetail } from './virtual-flat'; export class Calculator implements ViewCalculator { #opts: ViewCalculatorOptions; - #store: Store; + #store: Store; constructor(opts: ViewCalculatorOptions) { this.#opts = opts; - this.#store = new Store({ + this.#store = new Store({ defaultStorage: { - viewVisibleInfoMap: {}, + virtualFlatItemMap: {}, visibleCount: 0, invisibleCount: 0 } @@ -55,36 +55,23 @@ export class Calculator implements ViewCalculator { } needRender(elem: Element): boolean { - const viewVisibleInfoMap = this.#store.get('viewVisibleInfoMap'); - const info = viewVisibleInfoMap[elem.uuid]; + const virtualFlatItemMap = this.#store.get('virtualFlatItemMap'); + const info = virtualFlatItemMap[elem.uuid]; if (!info) { return true; } return info.isVisibleInView; } - /** - * @deprecated - */ - isPointInElement(p: Point, elem: Element, viewScaleInfo: ViewScaleInfo, viewSizeInfo: ViewSizeInfo): boolean { - const context2d = this.#opts.viewContext; - return isViewPointInElement(p, { - context2d, - element: elem, - viewScaleInfo, - viewSizeInfo - }); - } - getPointElement( p: Point, opts: { data: Data; viewScaleInfo: ViewScaleInfo; viewSizeInfo: ViewSizeInfo } ): { index: number; element: null | Element; groupQueueIndex: number } { - const context2d = this.#opts.viewContext; + const context2d = this.#opts.tempContext; return getViewPointAtElement(p, { ...opts, ...{ context2d } }); } - resetViewVisibleInfoMap( + resetVirtualFlatItemMap( data: Data, opts: { viewScaleInfo: ViewScaleInfo; @@ -92,16 +79,24 @@ export class Calculator implements ViewCalculator { } ): void { if (data) { - const { viewVisibleInfoMap, invisibleCount, visibleCount } = sortElementsViewVisiableInfoMap(data.elements, opts); - this.#store.set('viewVisibleInfoMap', viewVisibleInfoMap); + const { virtualFlatItemMap, invisibleCount, visibleCount } = sortElementsViewVisiableInfoMap(data.elements, { + ...opts, + ...{ + tempContext: this.#opts.tempContext + } + }); + this.#store.set('virtualFlatItemMap', virtualFlatItemMap); this.#store.set('invisibleCount', invisibleCount); this.#store.set('visibleCount', visibleCount); } } updateVisiableStatus(opts: { viewScaleInfo: ViewScaleInfo; viewSizeInfo: ViewSizeInfo }) { - const { viewVisibleInfoMap, invisibleCount, visibleCount } = updateViewVisibleInfoMapStatus(this.#store.get('viewVisibleInfoMap'), opts); - this.#store.set('viewVisibleInfoMap', viewVisibleInfoMap); + const { virtualFlatItemMap, invisibleCount, visibleCount } = updateVirtualFlatItemMapStatus( + this.#store.get('virtualFlatItemMap'), + opts + ); + this.#store.set('virtualFlatItemMap', virtualFlatItemMap); this.#store.set('invisibleCount', invisibleCount); this.#store.set('visibleCount', visibleCount); } @@ -114,7 +109,7 @@ export class Calculator implements ViewCalculator { viewSizeInfo: ViewSizeInfo; } ): ViewRectInfo | null { - const infoData = this.#store.get('viewVisibleInfoMap')[uuid]; + const infoData = this.#store.get('virtualFlatItemMap')[uuid]; if (!infoData?.originRectInfo) { return null; } @@ -148,7 +143,7 @@ export class Calculator implements ViewCalculator { viewSizeInfo: ViewSizeInfo; } ): ViewRectInfo | null { - const infoData = this.#store.get('viewVisibleInfoMap')[uuid]; + const infoData = this.#store.get('virtualFlatItemMap')[uuid]; if (!infoData?.originRectInfo) { return null; } @@ -174,7 +169,7 @@ export class Calculator implements ViewCalculator { return viewRectInfo; } - modifyViewVisibleInfoMap( + modifyVirtualFlatItemMap( data: Data, opts: { modifyOptions: ModifyOptions; // TODO @@ -185,7 +180,7 @@ export class Calculator implements ViewCalculator { const { modifyOptions, viewScaleInfo, viewSizeInfo } = opts; const { type, content } = modifyOptions; const list = data.elements; - const viewVisibleInfoMap = this.#store.get('viewVisibleInfoMap'); + const virtualFlatItemMap = this.#store.get('virtualFlatItemMap'); if (type === 'deleteElement') { const { element } = content as ModifyOptions<'deleteElement'>['content']; const uuids: string[] = []; @@ -199,13 +194,13 @@ export class Calculator implements ViewCalculator { }; _walk(element); uuids.forEach((uuid) => { - delete viewVisibleInfoMap[uuid]; + delete virtualFlatItemMap[uuid]; }); - this.#store.set('viewVisibleInfoMap', viewVisibleInfoMap); + this.#store.set('virtualFlatItemMap', virtualFlatItemMap); } // else if (type === 'updateElement') { // // TODO - // this.resetViewVisibleInfoMap(data, { viewScaleInfo, viewSizeInfo }); + // this.resetVirtualFlatItemMap(data, { viewScaleInfo, viewSizeInfo }); // } else if (type === 'addElement' || type === 'updateElement') { const { position } = content as ModifyOptions<'addElement'>['content']; @@ -214,27 +209,35 @@ export class Calculator implements ViewCalculator { if (element) { if (type === 'updateElement' && element.type === 'group') { // TODO - this.resetViewVisibleInfoMap(data, { viewScaleInfo, viewSizeInfo }); + this.resetVirtualFlatItemMap(data, { viewScaleInfo, viewSizeInfo }); } else { const originRectInfo = calcElementOriginRectInfo(element, { groupQueue: groupQueue || [] }); - const newViewVisibleInfo: ViewVisibleInfo = { + const newVirtualFlatItem: VirtualFlatItem = { + type: element.type, originRectInfo, rangeRectInfo: is.angle(element.angle) ? originRectInfoToRangeRectInfo(originRectInfo) : originRectInfo, isVisibleInView: true, - isGroup: element?.type === 'group', - position: [...position] + position: [...position], + ...calcVirtualFlatDetail(element, { + tempContext: this.#opts.tempContext + }) }; - viewVisibleInfoMap[element.uuid] = newViewVisibleInfo; - this.#store.set('viewVisibleInfoMap', viewVisibleInfoMap); + virtualFlatItemMap[element.uuid] = newVirtualFlatItem; + this.#store.set('virtualFlatItemMap', virtualFlatItemMap); if (type === 'updateElement') { this.updateVisiableStatus({ viewScaleInfo, viewSizeInfo }); } } } } else if (type === 'moveElement') { - this.resetViewVisibleInfoMap(data, { viewScaleInfo, viewSizeInfo }); + this.resetVirtualFlatItemMap(data, { viewScaleInfo, viewSizeInfo }); } } + + getVirtualFlatItem(uuid: string): VirtualFlatItem | null { + const itemMap = this.#store.get('virtualFlatItemMap'); + return itemMap[uuid] || null; + } } diff --git a/packages/renderer/src/draw/box.ts b/packages/renderer/src/draw/box.ts index 7281440..01bda23 100644 --- a/packages/renderer/src/draw/box.ts +++ b/packages/renderer/src/draw/box.ts @@ -1,5 +1,25 @@ -import { ViewContext2D, Element, ElementType, ElementSize, ViewScaleInfo, ViewSizeInfo, TransformAction } from '@idraw/types'; -import { istype, isColorStr, generateSVGPath, rotateElement, is, getDefaultElementDetailConfig, calcViewBoxSize } from '@idraw/util'; +import { + ViewContext2D, + Element, + ElementType, + ElementSize, + ViewScaleInfo, + ViewSizeInfo, + TransformAction + // PointSize +} from '@idraw/types'; +import { + istype, + isColorStr, + generateSVGPath, + rotateElement, + is, + getDefaultElementDetailConfig, + calcViewBoxSize + // elementToBoxInfo, + // calcViewPointSize +} from '@idraw/util'; +import { Calculator } from '../calculator'; import { createColorStyle } from './color'; const defaultElemConfig = getDefaultElementDetailConfig(); @@ -35,7 +55,7 @@ export function drawBox( ctx.globalAlpha = opacity; drawBoxBackground(ctx, viewElem, { pattern, viewScaleInfo, viewSizeInfo }); renderContent?.(); - drawBoxBorder(ctx, viewElem, { viewScaleInfo, viewSizeInfo }); + drawBoxBorder(ctx, viewElem, { originElem, viewScaleInfo, viewSizeInfo }); ctx.globalAlpha = parentOpacity; }; if (clipPath) { @@ -122,7 +142,14 @@ function drawClipPathStroke( const { renderContent, originElem, calcElemSize, viewSizeInfo, parentOpacity } = opts; const totalScale = viewSizeInfo.devicePixelRatio; const { clipPath, clipPathStrokeColor, clipPathStrokeWidth } = originElem?.detail || {}; - if (clipPath && calcElemSize && clipPath.commands && typeof clipPathStrokeWidth === 'number' && clipPathStrokeWidth > 0 && clipPathStrokeColor) { + if ( + clipPath && + calcElemSize && + clipPath.commands && + typeof clipPathStrokeWidth === 'number' && + clipPathStrokeWidth > 0 && + clipPathStrokeColor + ) { const { x, y, w, h } = calcElemSize; const { originW, originH, originX, originY } = clipPath; const scaleW = w / originW; @@ -217,7 +244,11 @@ export function drawBoxBackground( } } -export function drawBoxBorder(ctx: ViewContext2D, viewElem: Element, opts: { viewScaleInfo: ViewScaleInfo; viewSizeInfo: ViewSizeInfo }): void { +export function drawBoxBorder( + ctx: ViewContext2D, + viewElem: Element, + opts: { originElem: Element; viewScaleInfo: ViewScaleInfo; viewSizeInfo: ViewSizeInfo; calculator?: Calculator } +): void { if (viewElem.detail.borderWidth === 0) { return; } @@ -230,12 +261,18 @@ export function drawBoxBorder(ctx: ViewContext2D, viewElem: Element if (isColorStr(viewElem.detail.borderColor) === true) { borderColor = viewElem.detail.borderColor as string; } - const { borderWidth, borderRadius, borderDash, boxSizing = defaultElemConfig.boxSizing } = viewElem.detail; - let bw: number = 0; - if (typeof borderWidth === 'number') { - bw = borderWidth || 1; + + const { borderDash, borderWidth, borderRadius, boxSizing = defaultElemConfig.boxSizing } = viewElem.detail; + let viewBorderDash: number[] = []; + if (Array.isArray(borderDash) && borderDash.length > 0) { + viewBorderDash = borderDash.map((num) => Math.ceil(num * scale)); } - bw = bw * scale; + if (viewBorderDash.length > 0) { + ctx.lineCap = 'butt'; + } else { + ctx.lineCap = 'square'; + } + let radiusList: [number, number, number, number] = [0, 0, 0, 0]; if (typeof borderRadius === 'number') { const br = borderRadius * scale; @@ -243,11 +280,75 @@ export function drawBoxBorder(ctx: ViewContext2D, viewElem: Element } else if (Array.isArray(borderRadius) && borderRadius?.length === 4) { radiusList = [borderRadius[0] * scale, borderRadius[1] * scale, borderRadius[2] * scale, borderRadius[3] * scale]; } - ctx.strokeStyle = borderColor; - let viewBorderDash: number[] = []; - if (Array.isArray(borderDash) && borderDash.length > 0) { - viewBorderDash = borderDash.map((num) => Math.ceil(num * scale)); + + // // TODO + // const boxInfo = elementToBoxInfo(opts.originElem); + // const calcViewOpts = { viewScaleInfo, viewSizeInfo: opts.viewSizeInfo }; + // const op0: PointSize = calcViewPointSize(boxInfo.op0, calcViewOpts); + // const op1: PointSize = calcViewPointSize(boxInfo.op1, calcViewOpts); + // const op2: PointSize = calcViewPointSize(boxInfo.op2, calcViewOpts); + // const op3: PointSize = calcViewPointSize(boxInfo.op3, calcViewOpts); + // const op0s: PointSize = calcViewPointSize(boxInfo.op0s, calcViewOpts); + // const op0e: PointSize = calcViewPointSize(boxInfo.op0e, calcViewOpts); + // const op1s: PointSize = calcViewPointSize(boxInfo.op1s, calcViewOpts); + // const op1e: PointSize = calcViewPointSize(boxInfo.op1e, calcViewOpts); + // const op2s: PointSize = calcViewPointSize(boxInfo.op2s, calcViewOpts); + // const op2e: PointSize = calcViewPointSize(boxInfo.op2e, calcViewOpts); + // const op3s: PointSize = calcViewPointSize(boxInfo.op3s, calcViewOpts); + // const op3e: PointSize = calcViewPointSize(boxInfo.op3e, calcViewOpts); + + // const ip0: PointSize = calcViewPointSize(boxInfo.ip0, calcViewOpts); + // const ip1: PointSize = calcViewPointSize(boxInfo.ip1, calcViewOpts); + // const ip2: PointSize = calcViewPointSize(boxInfo.ip2, calcViewOpts); + // const ip3: PointSize = calcViewPointSize(boxInfo.ip3, calcViewOpts); + // const ip0s: PointSize = calcViewPointSize(boxInfo.ip0s, calcViewOpts); + // const ip0e: PointSize = calcViewPointSize(boxInfo.ip0e, calcViewOpts); + // const ip1s: PointSize = calcViewPointSize(boxInfo.ip1s, calcViewOpts); + // const ip1e: PointSize = calcViewPointSize(boxInfo.ip1e, calcViewOpts); + // const ip2s: PointSize = calcViewPointSize(boxInfo.ip2s, calcViewOpts); + // const ip2e: PointSize = calcViewPointSize(boxInfo.ip2e, calcViewOpts); + // const ip3s: PointSize = calcViewPointSize(boxInfo.ip3s, calcViewOpts); + // const ip3e: PointSize = calcViewPointSize(boxInfo.ip3e, calcViewOpts); + + // ctx.fillStyle = borderColor; + // ctx.beginPath(); + // ctx.moveTo(op0s.x, op0s.y); + // ctx.quadraticCurveTo(op0.x, op0.y, op0e.x, op0e.y); + // ctx.lineTo(op1s.x, op1s.y); + // ctx.quadraticCurveTo(op1.x, op1.y, op1e.x, op1e.y); + // ctx.lineTo(op2s.x, op2s.y); + // ctx.quadraticCurveTo(op2.x, op2.y, op2e.x, op2e.y); + // ctx.lineTo(op3s.x, op3s.y); + // ctx.quadraticCurveTo(op3.x, op3.y, op3e.x, op3e.y); + // ctx.lineTo(op0s.x, op0s.y); + // ctx.closePath(); + // ctx.fill(); + + // ctx.fillStyle = '#000000'; + // ctx.globalCompositeOperation = 'destination-out'; + // ctx.beginPath(); + // ctx.moveTo(ip0s.x, ip0s.y); + // ctx.quadraticCurveTo(ip0.x, ip0.y, ip0e.x, ip0e.y); + // ctx.lineTo(ip1s.x, ip1s.y); + // ctx.quadraticCurveTo(ip1.x, ip1.y, ip1e.x, ip1e.y); + // ctx.lineTo(ip2s.x, ip2s.y); + // ctx.quadraticCurveTo(ip2.x, ip2.y, ip2e.x, ip2e.y); + // ctx.lineTo(ip3s.x, ip3s.y); + // ctx.quadraticCurveTo(ip3.x, ip3.y, ip3e.x, ip3e.y); + // ctx.lineTo(ip0s.x, ip0s.y); + // ctx.closePath(); + // ctx.fill(); + // ctx.globalCompositeOperation = 'source-over'; + // return; + // // TODO + + let bw: number = 0; + if (typeof borderWidth === 'number') { + bw = borderWidth || 1; } + bw = bw * scale; + + ctx.strokeStyle = borderColor; let borderTop = 0; let borderRight = 0; @@ -338,11 +439,6 @@ export function drawBoxBorder(ctx: ViewContext2D, viewElem: Element // if (r < w / 2 && r < h / 2) { // r = r + bw / 2; // } - if (viewBorderDash.length > 0) { - ctx.lineCap = 'butt'; - } else { - ctx.lineCap = 'square'; - } // TODO w = Math.max(w, 1); diff --git a/packages/renderer/src/draw/circle.ts b/packages/renderer/src/draw/circle.ts index ef5009b..90239f4 100644 --- a/packages/renderer/src/draw/circle.ts +++ b/packages/renderer/src/draw/circle.ts @@ -33,8 +33,8 @@ export function drawCircle(ctx: ViewContext2D, elem: Element<'circle'>, opts: Re const radiusB = b; if (bw > 0) { if (boxSizing === 'content-box') { - a = a; - b = b; + // a = a; + // b = b; } else if (boxSizing === 'center-line') { a = a - bw / 2; b = b - bw / 2; diff --git a/packages/renderer/src/draw/group.ts b/packages/renderer/src/draw/group.ts index 804841d..bac066e 100644 --- a/packages/renderer/src/draw/group.ts +++ b/packages/renderer/src/draw/group.ts @@ -72,13 +72,15 @@ export function drawElement(ctx: ViewContext2D, elem: Element, opts } } } catch (err) { + // eslint-disable-next-line no-console console.error(err); } } export function drawGroup(ctx: ViewContext2D, elem: Element<'group'>, opts: RendererDrawElementOptions) { const { viewScaleInfo, viewSizeInfo, parentOpacity } = opts; - const { x, y, w, h, angle } = calcViewElementSize({ x: elem.x, y: elem.y, w: elem.w, h: elem.h, angle: elem.angle }, { viewScaleInfo }) || elem; + const { x, y, w, h, angle } = + calcViewElementSize({ x: elem.x, y: elem.y, w: elem.w, h: elem.h, angle: elem.angle }, { viewScaleInfo }) || elem; const viewElem = { ...elem, ...{ x, y, w, h, angle } }; rotateElement(ctx, { x, y, w, h, angle }, () => { ctx.globalAlpha = getOpacity(elem) * parentOpacity; @@ -141,6 +143,7 @@ export function drawGroup(ctx: ViewContext2D, elem: Element<'group'>, opts: Rend try { drawElement(ctx, child, { ...opts, ...{ parentOpacity: parentOpacity * getOpacity(elem) } }); } catch (err) { + // eslint-disable-next-line no-console console.error(err); } } diff --git a/packages/renderer/src/draw/layout.ts b/packages/renderer/src/draw/layout.ts index 80558e3..fbe7bb4 100644 --- a/packages/renderer/src/draw/layout.ts +++ b/packages/renderer/src/draw/layout.ts @@ -2,7 +2,12 @@ import type { RendererDrawElementOptions, ViewContext2D, DataLayout, Element } f import { calcViewElementSize, calcViewBoxSize } from '@idraw/util'; import { drawBoxShadow, drawBoxBackground, drawBoxBorder } from './box'; -export function drawLayout(ctx: ViewContext2D, layout: DataLayout, opts: RendererDrawElementOptions, renderContent: (ctx: ViewContext2D) => void) { +export function drawLayout( + ctx: ViewContext2D, + layout: DataLayout, + opts: RendererDrawElementOptions, + renderContent: (ctx: ViewContext2D) => void +) { const { viewScaleInfo, viewSizeInfo, parentOpacity } = opts; const elem: Element = { uuid: 'layout', type: 'group', ...layout } as Element; const { x, y, w, h } = calcViewElementSize(elem, { viewScaleInfo }) || elem; @@ -46,6 +51,6 @@ export function drawLayout(ctx: ViewContext2D, layout: DataLayout, opts: Rendere ctx.restore(); } - drawBoxBorder(ctx, viewElem, { viewScaleInfo, viewSizeInfo }); + drawBoxBorder(ctx, viewElem, { originElem: elem, viewScaleInfo, viewSizeInfo }); ctx.globalAlpha = parentOpacity; } diff --git a/packages/renderer/src/draw/text.ts b/packages/renderer/src/draw/text.ts index a18036f..66191e0 100644 --- a/packages/renderer/src/draw/text.ts +++ b/packages/renderer/src/draw/text.ts @@ -5,18 +5,8 @@ import { drawBox, drawBoxShadow } from './box'; const detailConfig = getDefaultElementDetailConfig(); -// TODO -function isTextWidthWithinErrorRange(w0: number, w1: number, scale: number): boolean { - if (scale < 0.5) { - if (w0 < w1 && (w0 - w1) / w0 > -0.15) { - return true; - } - } - return w0 >= w1; -} - export function drawText(ctx: ViewContext2D, elem: Element<'text'>, opts: RendererDrawElementOptions) { - const { viewScaleInfo, viewSizeInfo, parentOpacity } = opts; + const { viewScaleInfo, viewSizeInfo, parentOpacity, calculator } = opts; const { x, y, w, h, angle } = calcViewElementSize(elem, { viewScaleInfo }) || elem; const viewElem = { ...elem, ...{ x, y, w, h, angle } }; rotateElement(ctx, { x, y, w, h, angle }, () => { @@ -45,9 +35,6 @@ export function drawText(ctx: ViewContext2D, elem: Element<'text'>, opts: Render return; } - const originLineHeight = detail.lineHeight || originFontSize; - const lineHeight = originLineHeight * viewScaleInfo.scale; - ctx.fillStyle = elem.detail.color || detailConfig.color; ctx.textBaseline = 'top'; ctx.$setFont({ @@ -55,143 +42,28 @@ export function drawText(ctx: ViewContext2D, elem: Element<'text'>, opts: Render fontSize: fontSize, fontFamily: enhanceFontFamliy(detail.fontFamily) }); - let detailText = detail.text.replace(/\r\n/gi, '\n'); - if (detail.textTransform === 'lowercase') { - detailText = detailText.toLowerCase(); - } else if (detail.textTransform === 'uppercase') { - detailText = detailText.toUpperCase(); - } - const fontHeight = lineHeight; - const detailTextList = detailText.split('\n'); - const lines: { text: string; width: number }[] = []; - - let lineNum = 0; - detailTextList.forEach((itemText: string, idx: number) => { - if (detail.minInlineSize === 'maxContent') { - lines.push({ - text: itemText, - width: ctx.$undoPixelRatio(ctx.measureText(itemText).width) - }); - } else { - let lineText = ''; - let splitStr = ''; - let tempStrList: string[] = itemText.split(splitStr); - if (detail.wordBreak === 'normal') { - const splitStr = ' '; - const wordList = itemText.split(splitStr); - tempStrList = []; - wordList.forEach((word: string, idx: number) => { - tempStrList.push(word); - if (idx < wordList.length - 1) { - tempStrList.push(splitStr); - } - }); - } - - if (tempStrList.length === 1 && detail.overflow === 'visible') { - lines.push({ - text: tempStrList[0], - width: ctx.$undoPixelRatio(ctx.measureText(tempStrList[0]).width) - }); - } else if (tempStrList.length > 0) { - for (let i = 0; i < tempStrList.length; i++) { - if (isTextWidthWithinErrorRange(ctx.$doPixelRatio(w), ctx.measureText(lineText + tempStrList[i]).width, viewScaleInfo.scale)) { - lineText += tempStrList[i] || ''; - } else { - lines.push({ - text: lineText, - width: ctx.$undoPixelRatio(ctx.measureText(lineText).width) - }); - lineText = tempStrList[i] || ''; - lineNum++; - } - if ((lineNum + 1) * fontHeight > h && detail.overflow === 'hidden') { - break; - } - if (tempStrList.length - 1 === i) { - if ((lineNum + 1) * fontHeight <= h) { - lines.push({ - text: lineText, - width: ctx.$undoPixelRatio(ctx.measureText(lineText).width) - }); - if (idx < detailTextList.length - 1) { - lineNum++; - } - break; - } - } - } - } else { - lines.push({ - text: '', - width: 0 - }); - } - } - }); - - let startY = 0; - let eachLineStartY = 0; - if (fontHeight > fontSize) { - eachLineStartY = (fontHeight - fontSize) / 2; - } - if (lines.length * fontHeight < h) { - if (elem.detail.verticalAlign === 'top') { - startY = 0; - } else if (elem.detail.verticalAlign === 'bottom') { - startY += h - lines.length * fontHeight; - } else { - // middle and default - startY += (h - lines.length * fontHeight) / 2; - } - } - - // draw text lines { - const _y = y + startY; - if (detail.textShadowColor !== undefined && isColorStr(detail.textShadowColor)) { - ctx.shadowColor = detail.textShadowColor; - } - if (detail.textShadowOffsetX !== undefined && is.number(detail.textShadowOffsetX)) { - ctx.shadowOffsetX = detail.textShadowOffsetX; - } - if (detail.textShadowOffsetY !== undefined && is.number(detail.textShadowOffsetY)) { - ctx.shadowOffsetY = detail.textShadowOffsetY; - } - if (detail.textShadowBlur !== undefined && is.number(detail.textShadowBlur)) { - ctx.shadowBlur = detail.textShadowBlur; - } - lines.forEach((line, i) => { - let _x = x; - if (detail.textAlign === 'center') { - _x = x + (w - line.width) / 2; - } else if (detail.textAlign === 'right') { - _x = x + (w - line.width); + const virtualTextDetail = calculator.getVirtualFlatItem(elem.uuid); + if (Array.isArray(virtualTextDetail?.textLines) && virtualTextDetail?.textLines?.length > 0) { + if (detail.textShadowColor !== undefined && isColorStr(detail.textShadowColor)) { + ctx.shadowColor = detail.textShadowColor; + } + if (detail.textShadowOffsetX !== undefined && is.number(detail.textShadowOffsetX)) { + ctx.shadowOffsetX = detail.textShadowOffsetX; + } + if (detail.textShadowOffsetY !== undefined && is.number(detail.textShadowOffsetY)) { + ctx.shadowOffsetY = detail.textShadowOffsetY; + } + if (detail.textShadowBlur !== undefined && is.number(detail.textShadowBlur)) { + ctx.shadowBlur = detail.textShadowBlur; } - ctx.fillText(line.text, _x, _y + fontHeight * i + eachLineStartY); - }); - } - // // draw text stroke - // if (isColorStr(detail.strokeColor) && detail.strokeWidth !== undefined && detail.strokeWidth > 0) { - // const _y = y + startY; - // lines.forEach((line, i) => { - // let _x = x; - // if (detail.textAlign === 'center') { - // _x = x + (w - line.width) / 2; - // } else if (detail.textAlign === 'right') { - // _x = x + (w - line.width); - // } - // if (detail.strokeColor !== undefined) { - // ctx.strokeStyle = detail.strokeColor; - // } - // if (detail.strokeWidth !== undefined && detail.strokeWidth > 0) { - // ctx.lineWidth = detail.strokeWidth; - // } - // ctx.strokeText(line.text, _x, _y + fontHeight * i); - // }); - // } + virtualTextDetail?.textLines?.forEach((line) => { + ctx.fillText(line.text, x + line.x * viewScaleInfo.scale, y + line.y * viewScaleInfo.scale); + }); + } + } } }); } diff --git a/packages/renderer/src/index.ts b/packages/renderer/src/index.ts index d8b5cab..3b9e0b8 100644 --- a/packages/renderer/src/index.ts +++ b/packages/renderer/src/index.ts @@ -3,15 +3,21 @@ import type { DataLayout, LoadItemMap } from '@idraw/types'; import { drawElementList, drawLayout, drawGlobalBackground } from './draw/index'; import { Loader } from './loader'; import type { Data, BoardRenderer, RendererOptions, RendererEventMap, RendererDrawOptions } from '@idraw/types'; +import { Calculator } from './calculator'; +export { Calculator }; export class Renderer extends EventEmitter implements BoardRenderer { #opts: RendererOptions; #loader: Loader = new Loader(); + #calculator: Calculator; #hasDestroyed: boolean = false; constructor(opts: RendererOptions) { super(); this.#opts = opts; + this.#calculator = new Calculator({ + tempContext: opts.tempContext + }); this.#init(); } @@ -45,7 +51,8 @@ export class Renderer extends EventEmitter implements BoardRen drawData(data: Data, opts: RendererDrawOptions) { const loader = this.#loader; - const { calculator, sharer } = this.#opts; + const calculator = this.#calculator; + const { sharer } = this.#opts; const viewContext = this.#opts.viewContext; viewContext.clearRect(0, 0, viewContext.canvas.width, viewContext.canvas.height); const parentElementSize = { @@ -88,8 +95,18 @@ export class Renderer extends EventEmitter implements BoardRen // TODO return; } - const { data, offsetTop, offsetBottom, offsetLeft, offsetRight, width, height, contextHeight, contextWidth, devicePixelRatio } = - sharer.getActiveStoreSnapshot(); + const { + data, + offsetTop, + offsetBottom, + offsetLeft, + offsetRight, + width, + height, + contextHeight, + contextWidth, + devicePixelRatio + } = sharer.getActiveStoreSnapshot(); if (data) { this.drawData(data, { viewScaleInfo: { @@ -121,6 +138,10 @@ export class Renderer extends EventEmitter implements BoardRen getLoader(): Loader { return this.#loader; } + + getCalculator(): Calculator { + return this.#calculator; + } } export { diff --git a/packages/util/src/lib/view-visible.ts b/packages/renderer/src/view-visible/index.ts similarity index 56% rename from packages/util/src/lib/view-visible.ts rename to packages/renderer/src/view-visible/index.ts index b5dcf67..286f3b9 100644 --- a/packages/util/src/lib/view-visible.ts +++ b/packages/renderer/src/view-visible/index.ts @@ -1,61 +1,22 @@ -import { Element, ElementPosition, Elements, ViewScaleInfo, ViewSizeInfo, ViewRectInfo, ViewVisibleInfoMap, ViewVisibleInfo } from '@idraw/types'; -import { calcElementOriginRectInfo, originRectInfoToRangeRectInfo } from './view-calc'; -import { getGroupQueueByElementPosition } from './element'; -import { calcElementCenter } from './rotate'; -import { is } from './is'; +import { Elements, ViewScaleInfo, ViewSizeInfo, ViewRectInfo, VirtualFlatItemMap, ViewContext2D } from '@idraw/types'; +import { calcElementCenter } from '@idraw/util'; +import { elementsToVirtualFlatMap } from '../virtual-flat'; export function sortElementsViewVisiableInfoMap( elements: Elements, opts: { viewScaleInfo: ViewScaleInfo; viewSizeInfo: ViewSizeInfo; + tempContext: ViewContext2D; } ): { - viewVisibleInfoMap: ViewVisibleInfoMap; + virtualFlatItemMap: VirtualFlatItemMap; visibleCount: number; invisibleCount: number; } { - const visibleInfoMap: ViewVisibleInfoMap = {}; - const currentPosition: ElementPosition = []; - - const _walk = (elem: Element) => { - const baseInfo: Omit = { - isVisibleInView: true, - isGroup: elem.type === 'group', - position: [...currentPosition] - }; - let originRectInfo: ViewRectInfo | null = null; - - const groupQueue = getGroupQueueByElementPosition(elements, currentPosition); - - originRectInfo = calcElementOriginRectInfo(elem, { - groupQueue: groupQueue || [] - }); - - visibleInfoMap[elem.uuid] = { - ...baseInfo, - ...{ - originRectInfo: originRectInfo as ViewRectInfo, - rangeRectInfo: is.angle(elem.angle) ? originRectInfoToRangeRectInfo(originRectInfo as ViewRectInfo) : originRectInfo - } - }; - - if (elem.type === 'group') { - (elem as Element<'group'>).detail.children.forEach((ele, i) => { - currentPosition.push(i); - _walk(ele); - currentPosition.pop(); - }); - } - }; - - elements.forEach((elem, index) => { - currentPosition.push(index); - _walk(elem); - currentPosition.pop(); - }); - - return updateViewVisibleInfoMapStatus(visibleInfoMap, opts); + const { viewScaleInfo, viewSizeInfo, tempContext } = opts; + const visibleInfoMap: VirtualFlatItemMap = elementsToVirtualFlatMap(elements, { tempContext }); + return updateVirtualFlatItemMapStatus(visibleInfoMap, { viewScaleInfo, viewSizeInfo }); } function isRangeRectInfoCollide(info1: ViewRectInfo, info2: ViewRectInfo): boolean { @@ -79,10 +40,10 @@ function isRangeRectInfoCollide(info1: ViewRectInfo, info2: ViewRectInfo): boole return false; } -// function logViewVisibleInfoMapStatus(viewVisibleInfoMap: ViewVisibleInfoMap) { +// function logVirtualFlatItemMapStatus(virtualFlatItemMap: VirtualFlatItemMap) { // console.log('------------------------------------------------'); -// Object.keys(viewVisibleInfoMap).forEach((uuid) => { -// const item = viewVisibleInfoMap[uuid]; +// Object.keys(virtualFlatItemMap).forEach((uuid) => { +// const item = virtualFlatItemMap[uuid]; // const info = item.originRectInfo; // const rect = { // x: info.topLeft.x, @@ -94,31 +55,34 @@ function isRangeRectInfoCollide(info1: ViewRectInfo, info2: ViewRectInfo): boole // }); // } -export function updateViewVisibleInfoMapStatus( - viewVisibleInfoMap: ViewVisibleInfoMap, +export function updateVirtualFlatItemMapStatus( + virtualFlatItemMap: VirtualFlatItemMap, opts: { viewScaleInfo: ViewScaleInfo; viewSizeInfo: ViewSizeInfo } ): { - viewVisibleInfoMap: ViewVisibleInfoMap; + virtualFlatItemMap: VirtualFlatItemMap; visibleCount: number; invisibleCount: number; } { const canvasRectInfo = calcVisibleOriginCanvasRectInfo(opts); let visibleCount = 0; let invisibleCount = 0; - Object.keys(viewVisibleInfoMap).forEach((uuid) => { - const info = viewVisibleInfoMap[uuid]; + Object.keys(virtualFlatItemMap).forEach((uuid) => { + const info = virtualFlatItemMap[uuid]; info.isVisibleInView = isRangeRectInfoCollide(info.rangeRectInfo, canvasRectInfo); + // eslint-disable-next-line @typescript-eslint/no-unused-expressions info.isVisibleInView ? visibleCount++ : invisibleCount++; }); - // logViewVisibleInfoMapStatus(viewVisibleInfoMap); + // logVirtualFlatItemMapStatus(virtualFlatItemMap); - return { viewVisibleInfoMap, visibleCount, invisibleCount }; + return { virtualFlatItemMap, visibleCount, invisibleCount }; } -export function calcVisibleOriginCanvasRectInfo(opts: { viewScaleInfo: ViewScaleInfo; viewSizeInfo: ViewSizeInfo }): ViewRectInfo { +export function calcVisibleOriginCanvasRectInfo(opts: { + viewScaleInfo: ViewScaleInfo; + viewSizeInfo: ViewSizeInfo; +}): ViewRectInfo { const { viewScaleInfo, viewSizeInfo } = opts; - // console.log('xxx ===== ', viewScaleInfo, viewSizeInfo); const { scale, offsetTop, offsetLeft } = viewScaleInfo; const { width, height } = viewSizeInfo; diff --git a/packages/renderer/src/virtual-flat/index.ts b/packages/renderer/src/virtual-flat/index.ts new file mode 100644 index 0000000..66e7401 --- /dev/null +++ b/packages/renderer/src/virtual-flat/index.ts @@ -0,0 +1,75 @@ +import { + Element, + ElementPosition, + Elements, + ViewRectInfo, + VirtualFlatItemMap, + VirtualFlatItem, + VirtualFlatDetail, + ViewContext2D +} from '@idraw/types'; +import { + is, + getGroupQueueByElementPosition, + calcElementOriginRectInfo, + originRectInfoToRangeRectInfo +} from '@idraw/util'; + +import { calcVirtualTextDetail } from './text'; + +export function calcVirtualFlatDetail(elem: Element, opts: { tempContext: ViewContext2D }): VirtualFlatDetail { + let virtualDetail: VirtualFlatDetail = {}; + if (elem.type === 'text') { + virtualDetail = calcVirtualTextDetail(elem as Element<'text'>, opts); + } + return virtualDetail; +} + +export function elementsToVirtualFlatMap(elements: Elements, opts: { tempContext: ViewContext2D }): VirtualFlatItemMap { + const virtualFlatMap: VirtualFlatItemMap = {}; + const currentPosition: ElementPosition = []; + + const _walk = (elem: Element) => { + const baseInfo: Omit = { + type: elem.type, + isVisibleInView: true, + position: [...currentPosition] + }; + let originRectInfo: ViewRectInfo | null = null; + + const groupQueue = getGroupQueueByElementPosition(elements, currentPosition); + + originRectInfo = calcElementOriginRectInfo(elem, { + groupQueue: groupQueue || [] + }); + + const virtualItem: VirtualFlatItem = { + ...baseInfo, + ...{ + originRectInfo: originRectInfo as ViewRectInfo, + rangeRectInfo: is.angle(elem.angle) + ? originRectInfoToRangeRectInfo(originRectInfo as ViewRectInfo) + : originRectInfo + }, + ...calcVirtualFlatDetail(elem, opts) + }; + + virtualFlatMap[elem.uuid] = virtualItem; + + if (elem.type === 'group') { + (elem as Element<'group'>).detail.children.forEach((ele, i) => { + currentPosition.push(i); + _walk(ele); + currentPosition.pop(); + }); + } + }; + + elements.forEach((elem, index) => { + currentPosition.push(index); + _walk(elem); + currentPosition.pop(); + }); + + return virtualFlatMap; +} diff --git a/packages/renderer/src/virtual-flat/text.ts b/packages/renderer/src/virtual-flat/text.ts new file mode 100644 index 0000000..06492fb --- /dev/null +++ b/packages/renderer/src/virtual-flat/text.ts @@ -0,0 +1,163 @@ +import type { Element, CalcVirtualDetailOptions, VirtualFlatTextDetail, VirtualFlatTextLine } from '@idraw/types'; +import { enhanceFontFamliy, getDefaultElementDetailConfig } from '@idraw/util'; + +const detailConfig = getDefaultElementDetailConfig(); + +// TODO +function isTextWidthWithinErrorRange(w0: number, w1: number, scale: number): boolean { + if (scale < 0.5) { + if (w0 < w1 && (w0 - w1) / w0 > -0.15) { + return true; + } + } + return w0 >= w1; +} + +export function calcVirtualTextDetail(elem: Element<'text'>, opts: CalcVirtualDetailOptions): VirtualFlatTextDetail { + const { w, h } = elem; + const x = 0; + const y = 0; + const ctx = opts.tempContext; + + const lines: VirtualFlatTextLine[] = []; + const detail: Element<'text'>['detail'] = { + ...detailConfig, + ...elem.detail + }; + const originFontSize = detail.fontSize || detailConfig.fontSize; + const fontSize = originFontSize; + + if (fontSize < 2) { + return {}; + } + + const originLineHeight = detail.lineHeight || originFontSize; + const lineHeight = originLineHeight; + + ctx.textBaseline = 'top'; + ctx.$setFont({ + fontWeight: detail.fontWeight, + fontSize: fontSize, + fontFamily: enhanceFontFamliy(detail.fontFamily) + }); + let detailText = detail.text.replace(/\r\n/gi, '\n'); + if (detail.textTransform === 'lowercase') { + detailText = detailText.toLowerCase(); + } else if (detail.textTransform === 'uppercase') { + detailText = detailText.toUpperCase(); + } + + const fontHeight = lineHeight; + const detailTextList = detailText.split('\n'); + + let lineNum = 0; + detailTextList.forEach((itemText: string, idx: number) => { + if (detail.minInlineSize === 'maxContent') { + lines.push({ + x, + y: 0, // TODO + text: itemText, + width: ctx.$undoPixelRatio(ctx.measureText(itemText).width) + }); + } else { + let lineText = ''; + let splitStr = ''; + let tempStrList: string[] = itemText.split(splitStr); + if (detail.wordBreak === 'normal') { + splitStr = ' '; + const wordList = itemText.split(splitStr); + tempStrList = []; + wordList.forEach((word: string, idx: number) => { + tempStrList.push(word); + if (idx < wordList.length - 1) { + tempStrList.push(splitStr); + } + }); + } + + if (tempStrList.length === 1 && detail.overflow === 'visible') { + lines.push({ + x, + y: 0, // TODO + text: tempStrList[0], + width: ctx.$undoPixelRatio(ctx.measureText(tempStrList[0]).width) + }); + } else if (tempStrList.length > 0) { + for (let i = 0; i < tempStrList.length; i++) { + if (isTextWidthWithinErrorRange(ctx.$doPixelRatio(w), ctx.measureText(lineText + tempStrList[i]).width, 1)) { + lineText += tempStrList[i] || ''; + } else { + lines.push({ + x, + y: 0, // TODO + text: lineText, + width: ctx.$undoPixelRatio(ctx.measureText(lineText).width) + }); + lineText = tempStrList[i] || ''; + lineNum++; + } + if ((lineNum + 1) * fontHeight > h && detail.overflow === 'hidden') { + break; + } + if (tempStrList.length - 1 === i) { + if ((lineNum + 1) * fontHeight <= h) { + lines.push({ + x, + y: 0, // TODO + text: lineText, + width: ctx.$undoPixelRatio(ctx.measureText(lineText).width) + }); + if (idx < detailTextList.length - 1) { + lineNum++; + } + break; + } + } + } + } else { + lines.push({ + x, + y: 0, // TODO + text: '', + width: 0 + }); + } + } + }); + + let startY = 0; + let eachLineStartY = 0; + if (fontHeight > fontSize) { + eachLineStartY = (fontHeight - fontSize) / 2; + } + if (lines.length * fontHeight < h) { + if (elem.detail.verticalAlign === 'top') { + startY = 0; + } else if (elem.detail.verticalAlign === 'bottom') { + startY += h - lines.length * fontHeight; + } else { + // middle and default + startY += (h - lines.length * fontHeight) / 2; + } + } + + // draw text lines + { + const _y = y + startY; + lines.forEach((line, i) => { + let _x = x; + if (detail.textAlign === 'center') { + _x = x + (w - line.width) / 2; + } else if (detail.textAlign === 'right') { + _x = x + (w - line.width); + } + lines[i].x = _x; + lines[i].y = _y + fontHeight * i + eachLineStartY; + }); + } + + const virtualTextDetail: VirtualFlatTextDetail = { + textLines: lines + }; + return virtualTextDetail; +} diff --git a/packages/types/package.json b/packages/types/package.json index 3c2ad6a..359e3b1 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,11 +1,11 @@ { "name": "@idraw/types", - "version": "0.4.0-beta.39", + "version": "0.4.0-beta.40", "description": "", "main": "src/index.ts", "types": "src/index.ts", "scripts": {}, - "author": "chenshenhai", + "author": "idrawjs", "license": "MIT", "files": [ "src/**/*.ts", diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index a91c616..f358e57 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -1,5 +1,6 @@ export * from './lib/util'; export * from './lib/point'; +export * from './lib/box'; export * from './lib/data'; export * from './lib/element'; export * from './lib/view'; @@ -17,3 +18,4 @@ export * from './lib/html'; export * from './lib/svg-path'; export * from './lib/config'; export * from './lib/modify'; +export * from './lib/virtual-flat'; diff --git a/packages/types/src/lib/board.ts b/packages/types/src/lib/board.ts index 4d794df..966cd1d 100644 --- a/packages/types/src/lib/board.ts +++ b/packages/types/src/lib/board.ts @@ -88,7 +88,10 @@ export interface BoardMiddlewareObject = any clear?(e: BoardWatcherEventMap['clear']): void | boolean; } -export interface BoardMiddlewareOptions = Record, E extends BoardExtendEventMap = BoardExtendEventMap> { +export interface BoardMiddlewareOptions< + S extends Record = Record, + E extends BoardExtendEventMap = BoardExtendEventMap +> { boardContent: BoardContent; sharer: StoreSharer; viewer: BoardViewer; @@ -98,10 +101,11 @@ export interface BoardMiddlewareOptions = Re canvas?: HTMLCanvasElement; } -export type BoardMiddleware = any, E extends BoardExtendEventMap = BoardExtendEventMap, C extends any = undefined> = ( - opts: BoardMiddlewareOptions, - config?: C -) => BoardMiddlewareObject; +export type BoardMiddleware< + S extends Record = any, + E extends BoardExtendEventMap = BoardExtendEventMap, + C extends any = undefined +> = (opts: BoardMiddlewareOptions, config?: C) => BoardMiddlewareObject; export interface BoardOptions { boardContent: BoardContent; @@ -114,8 +118,7 @@ export interface BoardViewerFrameSnapshot = } export interface BoardViewerEventMap { - // eslint-disable-next-line @typescript-eslint/ban-types - drawFrame: {}; + drawFrame: object; } export interface BoardViewerOptions { @@ -128,24 +131,27 @@ export interface BoardViewerOptions { } // export interface BoardViewerStorage { -// viewVisibleInfoMap: ViewVisibleInfoMap; +// virtualFlatItemMap: VirtualFlatItemMap; // } export interface BoardViewer extends UtilEventEmitter { drawFrame(): void; - scale(opts: { scale: number; point: PointSize; ignoreUpdateVisibleStatus?: boolean }): { moveX: number; moveY: number }; + scale(opts: { scale: number; point: PointSize; ignoreUpdateVisibleStatus?: boolean }): { + moveX: number; + moveY: number; + }; scroll(opts: { moveX?: number; moveY?: number; ignoreUpdateVisibleStatus?: boolean }): ViewScaleInfo; resize(viewSize: Partial, opts?: { ignoreUpdateVisibleStatus?: boolean }): ViewSizeInfo; updateViewScaleInfo(opts: { scale: number; offsetX: number; offsetY: number }): ViewScaleInfo; - // resetViewVisibleInfoMap( + // resetVirtualFlatItemMap( // data: Data, // opts: { // viewScaleInfo: ViewScaleInfo; // viewSizeInfo: ViewSizeInfo; // } // ): void; - // modifyViewVisibleInfoMap( + // modifyVirtualFlatItemMap( // data: Data, // opts: { // modifyOptions: ModifyOptions; diff --git a/packages/types/src/lib/box.ts b/packages/types/src/lib/box.ts new file mode 100644 index 0000000..e8cccf4 --- /dev/null +++ b/packages/types/src/lib/box.ts @@ -0,0 +1,56 @@ +import type { PointSize } from './point'; + +export type BoxInfo = { + // p0: PointSize; // top-left + // p1: PointSize; // top-right + // p2: PointSize; // bottom-right + // p3: PointSize; // bottom-left + + btw: number; // border-top-width + brw: number; // border-right-width + bbw: number; // border-bottom-width + blw: number; // border-left-width + btlr: number; // border-top-left-radius + btrr: number; // border-top-right-radius + bblr: number; // border-bottom-left-radius + bbrr: number; // border-bottom-right-radius + + p0: PointSize; // pointer border-top-left + p1: PointSize; // pointer border-top-right + p2: PointSize; // pointer border-bottom-right + p3: PointSize; // pointer border-bottom-left + p0s: PointSize; // pointer border-top-left start + p0e: PointSize; // pointer border-top-left end + p1s: PointSize; // pointer border-top-right start + p1e: PointSize; // pointer border-top-right start + p2s: PointSize; // pointer border-bottom-right start + p2e: PointSize; // pointer border-bottom-right end + p3s: PointSize; // pointer border-bottom-left start + p3e: PointSize; // pointer border-bottom-left end + + op0: PointSize; // outer pointer border-top-left + op1: PointSize; // outer pointer border-top-right + op2: PointSize; // outer pointer border-bottom-right + op3: PointSize; // outer pointer border-bottom-left + op0s: PointSize; // outer pointer border-top-left start + op0e: PointSize; // outer pointer border-top-left end + op1s: PointSize; // outer pointer border-top-right start + op1e: PointSize; // outer pointer border-top-right start + op2s: PointSize; // outer pointer border-bottom-right start + op2e: PointSize; // outer pointer border-bottom-right end + op3s: PointSize; // outer pointer border-bottom-left start + op3e: PointSize; // outer pointer border-bottom-left end + + ip0: PointSize; // inner pointer border-top-left + ip1: PointSize; // inner pointer border-top-right + ip2: PointSize; // inner pointer border-bottom-right + ip3: PointSize; // inner pointer border-bottom-left + ip0s: PointSize; // inner pointer border-top-left start + ip0e: PointSize; // inner pointer border-top-left end + ip1s: PointSize; // inner pointer border-top-right start + ip1e: PointSize; // inner pointer border-top-right start + ip2s: PointSize; // inner pointer border-bottom-right start + ip2e: PointSize; // inner pointer border-bottom-right end + ip3s: PointSize; // inner pointer border-bottom-left start + ip3e: PointSize; // inner pointer border-bottom-left end +}; diff --git a/packages/types/src/lib/context2d.ts b/packages/types/src/lib/context2d.ts index f9ed7c1..b543584 100644 --- a/packages/types/src/lib/context2d.ts +++ b/packages/types/src/lib/context2d.ts @@ -31,6 +31,8 @@ export interface ViewContext2D { moveTo(x: number, y: number): void; lineTo(x: number, y: number): void; arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void; + bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void; + quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void; lineWidth: number; getLineDash(): number[]; setLineDash(segments: number[]): void; @@ -49,7 +51,17 @@ export interface ViewContext2D { scale(x: number, y: number): void; drawImage(image: CanvasImageSource, dx: number, dy: number): void; drawImage(image: CanvasImageSource, dx: number, dy: number, dw: number, dh: number): void; - drawImage(image: CanvasImageSource, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number): void; + drawImage( + image: CanvasImageSource, + sx: number, + sy: number, + sw: number, + sh: number, + dx: number, + dy: number, + dw: number, + dh: number + ): void; createPattern(image: CanvasImageSource, repetition: string | null): CanvasPattern | null; globalAlpha: number; globalCompositeOperation: GlobalCompositeOperation; @@ -57,7 +69,16 @@ export interface ViewContext2D { shadowColor: string; shadowOffsetX: number; shadowOffsetY: number; - circle(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void; + circle( + x: number, + y: number, + radiusX: number, + radiusY: number, + rotation: number, + startAngle: number, + endAngle: number, + counterclockwise?: boolean + ): void; isPointInPath(x: number, y: number, fillRule?: CanvasFillRule): boolean; clip(fillRule?: CanvasFillRule): void; clip(path: Path2D, fillRule?: CanvasFillRule): void; diff --git a/packages/types/src/lib/core.ts b/packages/types/src/lib/core.ts index 60c2a24..5a03b5a 100644 --- a/packages/types/src/lib/core.ts +++ b/packages/types/src/lib/core.ts @@ -1,14 +1,12 @@ import type { Element, ElementSize, ElementType, ElementPosition } from './element'; import type { ViewScaleInfo } from './view'; import type { Data } from './data'; -import type { ViewContext2D } from './context2d'; import type { BoardBaseEventMap } from './board'; export interface CoreOptions { width: number; height: number; devicePixelRatio?: number; - createCustomContext2D?: (opts: { width: number; height: number; devicePixelRatio: number }) => ViewContext2D; } export type CursorType = @@ -46,7 +44,9 @@ export interface CoreEventChange { | 'setData' | 'undo' | 'redo' - | 'changeLayout' // TODO + | 'dragLayout' + | 'updateLayout' + | 'updateElementName' | 'other'; selectedElements?: Element[] | null; hoverElement?: Element | null; @@ -82,7 +82,19 @@ export type CoreEventMap = BoardBaseEventMap & { change: CoreEventChange; ruler: { show: boolean; showGrid: boolean }; scale: { scale: number }; - select: { uuids?: string[]; positions?: ElementPosition[] }; + select: { + uuids?: string[]; + positions?: ElementPosition[]; + type?: + | 'clickCanvas' + | 'selectElement' + | 'selectElements' + | 'selectElementByPosition' + | 'selectElementsByPositions' + | 'other' + | string; + }; + selectLayout: void; // TODO clearSelect: { uuids?: string[] } | void; textEdit: CoreEventTextEdit; textChange: CoreEventTextChange; diff --git a/packages/types/src/lib/data.ts b/packages/types/src/lib/data.ts index 40ae62a..ef87813 100644 --- a/packages/types/src/lib/data.ts +++ b/packages/types/src/lib/data.ts @@ -1,20 +1,34 @@ -import type { Element, ElementType, ElementAssets, ElementSize, ElementGroupDetail, ElementGlobalDetail } from './element'; +import type { Element, ElementType, ElementAssets, ElementSize, ElementGroupDetail } from './element'; export type DataLayout = Pick & { detail: Pick< ElementGroupDetail, - 'background' | 'borderWidth' | 'overflow' | 'borderColor' | 'borderDash' | 'borderRadius' | 'shadowBlur' | 'shadowColor' | 'shadowOffsetX' | 'shadowOffsetY' + | 'background' + | 'borderWidth' + | 'overflow' + | 'borderColor' + | 'borderDash' + | 'borderRadius' + | 'shadowBlur' + | 'shadowColor' + | 'shadowOffsetX' + | 'shadowOffsetY' >; operations?: { position?: 'absolute' | 'relative'; }; }; +export interface DataGlobalDetail { + background?: string; +} + export type Data = Record> = { + name?: string; elements: Element[]; assets?: ElementAssets; layout?: DataLayout; - global?: ElementGlobalDetail; + global?: DataGlobalDetail; }; export type Matrix = [ diff --git a/packages/types/src/lib/element.ts b/packages/types/src/lib/element.ts index 4e606e0..7fa6179 100644 --- a/packages/types/src/lib/element.ts +++ b/packages/types/src/lib/element.ts @@ -44,7 +44,7 @@ export interface TransformScale { export type TransformAction = TransformMatrix | TransformTranslate | TransformRotate | TransformScale; export interface GradientStop { - offset: number; + offset: number; // [0, 1] eg. 0.5 color: string; } @@ -92,7 +92,7 @@ export interface ElementBaseDetail { // // background?: string; // } -export interface ElementRectDetail extends ElementBaseDetail {} +export type ElementRectDetail = ElementBaseDetail; export interface ElementTextDetail extends ElementBaseDetail { text: string; @@ -182,14 +182,15 @@ export interface ElementGlobalDetail { background?: string; } -export interface Element = Record> extends ElementSize { +export interface Element = Record> + extends ElementSize { uuid: string; name?: string; type: T; detail: ElementDetailMap[T]; operations?: ElementOperations; extends?: E; - global?: ElementGlobalDetail; + // global?: ElementGlobalDetail; } export type Elements = Element[]; diff --git a/packages/types/src/lib/renderer.ts b/packages/types/src/lib/renderer.ts index 134b0be..b32a7be 100644 --- a/packages/types/src/lib/renderer.ts +++ b/packages/types/src/lib/renderer.ts @@ -7,8 +7,8 @@ import { ViewContext2D } from '@idraw/types'; export interface RendererOptions { viewContext: ViewContext2D; + tempContext: ViewContext2D; sharer?: StoreSharer; - calculator?: ViewCalculator; } export interface RendererEvent { @@ -37,7 +37,7 @@ export interface RendererDrawOptions { export interface RendererDrawElementOptions extends RendererDrawOptions { loader: RendererLoader; - calculator?: ViewCalculator; + calculator: ViewCalculator; viewScaleInfo: ViewScaleInfo; viewSizeInfo: ViewSizeInfo; parentElementSize: ElementSize; diff --git a/packages/types/src/lib/view.ts b/packages/types/src/lib/view.ts index 3f6ee5b..7694d41 100644 --- a/packages/types/src/lib/view.ts +++ b/packages/types/src/lib/view.ts @@ -1,8 +1,10 @@ -import type { Element, ElementType, ElementPosition } from './element'; +import type { Element, ElementType } from './element'; import type { Point, PointSize } from './point'; import type { Data } from './data'; import type { ViewContext2D } from './context2d'; import type { ModifyOptions } from './modify'; +import { VirtualFlatItem } from './virtual-flat'; +// import type { BoxInfo } from './box'; export interface ViewScaleInfo { scale: number; @@ -28,31 +30,22 @@ export interface BoardContent { viewContext: ViewContext2D; overlayContext: ViewContext2D; underlayContext: ViewContext2D; + tempContext: ViewContext2D; drawView: () => void; } export interface ViewCalculatorOptions { // boardContent?: BoardContent; - viewContext: ViewContext2D; -} - -export interface ViewCalculatorStorage { - viewVisibleInfoMap: ViewVisibleInfoMap; - visibleCount: number; - invisibleCount: number; + tempContext: ViewContext2D; } export interface ViewCalculator { - /** - * @deprecated - */ - isPointInElement(p: Point, elem: Element, viewScaleInfo: ViewScaleInfo, viewSize: ViewSizeInfo): boolean; needRender(elem: Element): boolean; getPointElement( p: Point, opts: { data: Data; viewScaleInfo: ViewScaleInfo; viewSizeInfo: ViewSizeInfo; groupQueue?: Element<'group'>[] } ): { index: number; element: null | Element; groupQueueIndex: number }; - resetViewVisibleInfoMap( + resetVirtualFlatItemMap( data: Data, opts: { viewScaleInfo: ViewScaleInfo; @@ -76,7 +69,7 @@ export interface ViewCalculator { viewSizeInfo: ViewSizeInfo; } ): ViewRectInfo | null; - modifyViewVisibleInfoMap( + modifyVirtualFlatItemMap( data: Data, opts: { modifyOptions: ModifyOptions; @@ -86,6 +79,7 @@ export interface ViewCalculator { ): void; toGridNum(num: number, opts?: { ignore?: boolean }): number; + getVirtualFlatItem: (uuid: string) => VirtualFlatItem | null; } export type ViewRectVertexes = [PointSize, PointSize, PointSize, PointSize]; @@ -109,18 +103,3 @@ export type ViewRectInfo = { left: PointSize; center: PointSize; }; - -export type ViewRectInfoMap = { - originRectInfo: ViewRectInfo; - rangeRectInfo: ViewRectInfo; -}; - -export type ViewVisibleInfo = ViewRectInfoMap & { - isVisibleInView: boolean; - isGroup: boolean; - position: ElementPosition; -}; - -export type ViewVisibleInfoMap = { - [uuid: string]: ViewVisibleInfo; -}; diff --git a/packages/types/src/lib/virtual-flat.ts b/packages/types/src/lib/virtual-flat.ts new file mode 100644 index 0000000..3c7da2c --- /dev/null +++ b/packages/types/src/lib/virtual-flat.ts @@ -0,0 +1,39 @@ +import type { ViewRectInfo } from './view'; +import type { ElementPosition, ElementType } from './element'; +import type { ViewContext2D } from './context2d'; + +export type CalcVirtualDetailOptions = { + tempContext: ViewContext2D; +}; + +export type VirtualFlatTextLine = { + x: number; + y: number; + width: number; + text: string; +}; + +export type VirtualFlatTextDetail = { + textLines?: Array; +}; +export type VirtualFlatDetail = VirtualFlatTextDetail & { + // TODO +}; + +export type VirtualFlatItem = { + type: ElementType; + position: ElementPosition; + originRectInfo: ViewRectInfo; + rangeRectInfo: ViewRectInfo; + isVisibleInView: boolean; +} & VirtualFlatDetail; + +export type VirtualFlatItemMap = { + [uuid: string]: VirtualFlatItem; +}; + +export interface VirtualFlatStorage { + virtualFlatItemMap: VirtualFlatItemMap; + visibleCount: number; + invisibleCount: number; +} diff --git a/packages/util/package.json b/packages/util/package.json index 86f2cf3..d79bca3 100644 --- a/packages/util/package.json +++ b/packages/util/package.json @@ -1,6 +1,6 @@ { "name": "@idraw/util", - "version": "0.4.0-beta.39", + "version": "0.4.0-beta.40", "description": "", "main": "dist/esm/index.js", "module": "dist/esm/index.js", @@ -18,7 +18,7 @@ "url": "https://github.com/idrawjs/idraw/issues" }, "homepage": "https://github.com/idrawjs/idraw#readme", - "author": "chenshenhai", + "author": "idrawjs", "license": "MIT", "devDependencies": { "@idraw/types": "^0.4.0-alpha.0" diff --git a/packages/util/src/index.ts b/packages/util/src/index.ts index 931b584..68c9161 100644 --- a/packages/util/src/index.ts +++ b/packages/util/src/index.ts @@ -1,15 +1,37 @@ export { delay, compose, throttle, debounce } from './lib/time'; -export { downloadImageFromCanvas, parseFileToBase64, pickFile, parseFileToText, downloadFileFromText } from './lib/file'; -export { toColorHexStr, toColorHexNum, isColorStr, colorNameToHex, colorToCSS, colorToLinearGradientCSS, mergeHexColorAlpha } from './lib/color'; +export { + downloadImageFromCanvas, + parseFileToBase64, + pickFile, + parseFileToText, + downloadFileFromText +} from './lib/file'; +export { + toColorHexStr, + toColorHexNum, + isColorStr, + colorNameToHex, + colorToCSS, + colorToLinearGradientCSS, + mergeHexColorAlpha +} from './lib/color'; export { createUUID, isAssetId, createAssetId } from './lib/uuid'; -export { deepClone, sortDataAsserts, deepCloneElement, filterCompactData } from './lib/data'; +export { deepClone, sortDataAsserts, deepCloneElement, deepCloneData, filterCompactData } from './lib/data'; export { istype } from './lib/istype'; export { loadImage, loadSVG, loadHTML } from './lib/load'; export { is } from './lib/is'; export { check } from './lib/check'; export { createBoardContent, createContext2D, createOffscreenContext2D } from './lib/canvas'; export { EventEmitter } from './lib/event'; -export { calcDistance, calcSpeed, equalPoint, equalTouchPoint, vaildPoint, vaildTouchPoint, getCenterFromTwoPoints } from './lib/point'; +export { + calcDistance, + calcSpeed, + equalPoint, + equalTouchPoint, + vaildPoint, + vaildTouchPoint, + getCenterFromTwoPoints +} from './lib/point'; export { Store } from './lib/store'; export { getViewScaleInfoFromSnapshot, getViewSizeInfoFromSnapshot } from './lib/middleware'; export { Context2D } from './lib/context2d'; @@ -60,14 +82,17 @@ export { calcViewScaleInfo, calcElementViewRectInfo, calcElementOriginRectInfo, - calcElementViewRectInfoMap, originRectInfoToRangeRectInfo, isViewPointInElementSize, isViewPointInVertexes } from './lib/view-calc'; -export { sortElementsViewVisiableInfoMap, calcVisibleOriginCanvasRectInfo, updateViewVisibleInfoMapStatus } from './lib/view-visible'; export { rotatePoint, rotateVertexes, rotateByCenter } from './lib/rotate'; -export { getElementVertexes, calcElementVertexesInGroup, calcElementVertexesQueueInGroup, calcElementQueueVertexesQueueInGroup } from './lib/vertex'; +export { + getElementVertexes, + calcElementVertexesInGroup, + calcElementVertexesQueueInGroup, + calcElementQueueVertexesQueueInGroup +} from './lib/vertex'; export { calcElementSizeController, calcLayoutSizeController } from './lib/controller'; export { generateSVGPath, parseSVGPath } from './lib/svg-path'; export { generateHTML, parseHTML } from './lib/html'; @@ -93,3 +118,6 @@ export { enhanceFontFamliy } from './lib/text'; export { flatElementList } from './lib/flat'; export { groupElementsByPosition, ungroupElementsByPosition } from './lib/group'; export { calcPointMoveElementInGroup } from './lib/point-move-element'; +export { merge } from './lib/merge'; +export { omit } from './lib/omit'; +export { elementToBoxInfo } from './lib/box'; diff --git a/packages/util/src/lib/box.ts b/packages/util/src/lib/box.ts new file mode 100644 index 0000000..d7f5b8d --- /dev/null +++ b/packages/util/src/lib/box.ts @@ -0,0 +1,186 @@ +import type { BoxInfo, Element, PointSize } from '@idraw/types'; +import { is } from './is'; + +export function elementToBoxInfo(elem: Element): BoxInfo { + const { x, y, w, h, detail } = elem; + const { borderWidth, borderRadius, boxSizing } = detail; + let btw: number = 0; // border-top-width + let brw: number = 0; // border-right-width + let bbw: number = 0; // border-bottom-width + let blw: number = 0; // border-left-width + + let btlr: number = 0; // border-top-left-radius + let btrr: number = 0; // border-top-right-radius + let bblr: number = 0; // border-bottom-left-radius + let bbrr: number = 0; // border-bottom-right-radius + + if (typeof borderWidth === 'number' && borderWidth > 0) { + btw = borderWidth; + brw = borderWidth; + bbw = borderWidth; + blw = borderWidth; + } else if (Array.isArray(borderWidth)) { + btw = is.positiveNum(borderWidth[0]) ? borderWidth[0] : 0; + brw = is.positiveNum(borderWidth[1]) ? borderWidth[0] : 0; + bbw = is.positiveNum(borderWidth[2]) ? borderWidth[0] : 0; + blw = is.positiveNum(borderWidth[3]) ? borderWidth[0] : 0; + } + + if (typeof borderRadius === 'number' && borderRadius > 0) { + btlr = borderRadius; + btrr = borderRadius; + bblr = borderRadius; + bbrr = borderRadius; + } else if (Array.isArray(borderRadius)) { + btlr = is.positiveNum(borderRadius[0]) ? borderRadius[0] : 0; + btrr = is.positiveNum(borderRadius[0]) ? borderRadius[0] : 0; + bblr = is.positiveNum(borderRadius[0]) ? borderRadius[0] : 0; + bbrr = is.positiveNum(borderRadius[0]) ? borderRadius[0] : 0; + } + const p0: PointSize = { x: x, y: y }; // pointer border-top-left + const p1: PointSize = { x: x + w, y: y }; // pointer border-top-right + const p2: PointSize = { x: x + w, y: y + h }; // pointer border-bottom-right + const p3: PointSize = { x: x, y: y + h }; // pointer border-bottom-left + + const p0s: PointSize = { x: x, y: y + btlr }; // pointer border-top-left start + const p0e: PointSize = { x: x + btlr, y: y }; // pointer border-top-left end + const p1s: PointSize = { x: x + w - btrr, y: y }; // pointer border-top-right start + const p1e: PointSize = { x: x + w, y: y + btrr }; // pointer border-top-right start + const p2s: PointSize = { x: x + w, y: y + h - bbrr }; // pointer border-bottom-right start + const p2e: PointSize = { x: x + w - bbrr, y: y + h }; // pointer border-bottom-right end + const p3s: PointSize = { x: x + bblr, y: y + h }; // pointer border-bottom-left start + const p3e: PointSize = { x: x, y: y + h - bblr }; // pointer border-bottom-left end + + let op0: PointSize = { ...p0 }; // outer pointer border-top-left + let op1: PointSize = { ...p1 }; // outer pointer border-top-right + let op2: PointSize = { ...p2 }; // outer pointer border-bottom-right + let op3: PointSize = { ...p3 }; // outer pointer border-bottom-left + + let op0s: PointSize = { ...p0s }; // outer pointer border-top-left start + let op0e: PointSize = { ...p0e }; // outer pointer border-top-left end + let op1s: PointSize = { ...p1s }; // outer pointer border-top-right start + let op1e: PointSize = { ...p1e }; // outer pointer border-top-right start + let op2s: PointSize = { ...p2s }; // outer pointer border-bottom-right start + let op2e: PointSize = { ...p2e }; // outer pointer border-bottom-right end + let op3s: PointSize = { ...p3s }; // outer pointer border-bottom-left start + let op3e: PointSize = { ...p3e }; // outer pointer border-bottom-left end + + let ip0: PointSize = { ...p0 }; // inner pointer border-top-left + let ip1: PointSize = { ...p1 }; // inner pointer border-top-right + let ip2: PointSize = { ...p2 }; // inner pointer border-bottom-right + let ip3: PointSize = { ...p3 }; // inner pointer border-bottom-left + + let ip0s: PointSize = { ...p0s }; // inner pointer border-top-left start + let ip0e: PointSize = { ...p0e }; // inner pointer border-top-left end + let ip1s: PointSize = { ...p1s }; // inner pointer border-top-right start + let ip1e: PointSize = { ...p1e }; // inner pointer border-top-right start + let ip2s: PointSize = { ...p2s }; // inner pointer border-bottom-right start + let ip2e: PointSize = { ...p2e }; // inner pointer border-bottom-right end + let ip3s: PointSize = { ...p3s }; // inner pointer border-bottom-left start + let ip3e: PointSize = { ...p3e }; // inner pointer border-bottom-left end + + if (boxSizing === 'border-box') { + ip0 = { x: ip0.x + blw, y: ip0.y + btw }; + ip1 = { x: ip1.x - brw, y: ip1.y + btw }; + ip2 = { x: ip2.x - brw, y: ip2.y - bbw }; + ip3 = { x: ip3.x + blw, y: ip3.y - bbw }; + ip0s = { x: ip0s.x + blw, y: ip0s.y + btw }; + ip0e = { x: ip0e.x + blw, y: ip0e.y + btw }; + ip1s = { x: ip1s.x - brw, y: ip1s.y + btw }; + ip1e = { x: ip1e.x - brw, y: ip1e.y + btw }; + ip2s = { x: ip2s.x - brw, y: ip2s.y - bbw }; + ip2e = { x: ip2e.x - brw, y: ip2e.y - bbw }; + ip3s = { x: ip3s.x + blw, y: ip3s.y - bbw }; + ip3e = { x: ip3e.x + blw, y: ip3e.y - bbw }; + } else if (boxSizing === 'content-box') { + op0 = { x: op0.x - blw, y: op0.y - btw }; + op1 = { x: op1.x + brw, y: op1.y - btw }; + op2 = { x: op2.x + brw, y: op2.y + bbw }; + op3 = { x: op3.x - blw, y: op3.y + bbw }; + op0s = { x: op0s.x - blw, y: op0s.y - btw }; + op0e = { x: op0e.x - blw, y: op0e.y - btw }; + op1s = { x: op1s.x + brw, y: op1s.y - btw }; + op1e = { x: op1e.x + brw, y: op1e.y - btw }; + op2s = { x: op2s.x + brw, y: op2s.y + bbw }; + op2e = { x: op2e.x + brw, y: op2e.y + bbw }; + op3s = { x: op3s.x - blw, y: op3s.y + bbw }; + op3e = { x: op3e.x - blw, y: op3e.y + bbw }; + } else { + ip0 = { x: ip0.x + blw / 2, y: ip0.y + btw / 2 }; + ip1 = { x: ip1.x - brw / 2, y: ip1.y + btw / 2 }; + ip2 = { x: ip2.x - brw / 2, y: ip2.y - bbw / 2 }; + ip3 = { x: ip3.x + blw / 2, y: ip3.y - bbw / 2 }; + ip0s = { x: ip0s.x + blw / 2, y: ip0s.y + btw / 2 }; + ip0e = { x: ip0e.x + blw / 2, y: ip0e.y + btw / 2 }; + ip1s = { x: ip1s.x - brw / 2, y: ip1s.y + btw / 2 }; + ip1e = { x: ip1e.x - brw / 2, y: ip1e.y + btw / 2 }; + ip2s = { x: ip2s.x - brw / 2, y: ip2s.y - bbw / 2 }; + ip2e = { x: ip2e.x - brw / 2, y: ip2e.y - bbw / 2 }; + ip3s = { x: ip3s.x + blw / 2, y: ip3s.y - bbw / 2 }; + ip3e = { x: ip3e.x + blw / 2, y: ip3e.y - bbw / 2 }; + + op0 = { x: op0.x - blw / 2, y: op0.y - btw / 2 }; + op1 = { x: op1.x + brw / 2, y: op1.y - btw / 2 }; + op2 = { x: op2.x + brw / 2, y: op2.y + bbw / 2 }; + op3 = { x: op3.x - blw / 2, y: op3.y + bbw / 2 }; + op0s = { x: op0s.x - blw / 2, y: op0s.y - btw / 2 }; + op0e = { x: op0e.x - blw / 2, y: op0e.y - btw / 2 }; + op1s = { x: op1s.x + brw / 2, y: op1s.y - btw / 2 }; + op1e = { x: op1e.x + brw / 2, y: op1e.y - btw / 2 }; + op2s = { x: op2s.x + brw / 2, y: op2s.y + bbw / 2 }; + op2e = { x: op2e.x + brw / 2, y: op2e.y + bbw / 2 }; + op3s = { x: op3s.x - blw / 2, y: op3s.y + bbw / 2 }; + op3e = { x: op3e.x - blw / 2, y: op3e.y + bbw / 2 }; + } + + return { + btw, + brw, + bbw, + blw, + + btlr, + btrr, + bblr, + bbrr, + + p0, + p1, + p2, + p3, + p0s, + p0e, + p1s, + p1e, + p2s, + p2e, + p3s, + p3e, + + op0, + op1, + op2, + op3, + op0s, + op0e, + op1s, + op1e, + op2s, + op2e, + op3s, + op3e, + + ip0, + ip1, + ip2, + ip3, + ip0s, + ip0e, + ip1s, + ip1e, + ip2s, + ip2e, + ip3s, + ip3e + }; +} diff --git a/packages/util/src/lib/canvas.ts b/packages/util/src/lib/canvas.ts index 39cf9c3..6a646c6 100644 --- a/packages/util/src/lib/canvas.ts +++ b/packages/util/src/lib/canvas.ts @@ -1,7 +1,12 @@ -import type { BoardContent, ViewContext2D } from '@idraw/types'; +import type { BoardContent } from '@idraw/types'; import { Context2D } from './context2d'; -export function createContext2D(opts: { ctx?: CanvasRenderingContext2D; width: number; height: number; devicePixelRatio: number }): Context2D { +export function createContext2D(opts: { + ctx?: CanvasRenderingContext2D; + width: number; + height: number; + devicePixelRatio: number; +}): Context2D { const { width, height, ctx, devicePixelRatio } = opts; let context: CanvasRenderingContext2D | undefined = ctx; if (!context) { @@ -34,11 +39,9 @@ export function createBoardContent( width: number; height: number; devicePixelRatio: number; - offscreen?: boolean; - createCustomContext2D?: (opts: { width: number; height: number; devicePixelRatio: number }) => ViewContext2D; } ): BoardContent { - const { width, height, devicePixelRatio, offscreen, createCustomContext2D } = opts; + const { width, height, devicePixelRatio } = opts; const ctxOpts = { width, height, @@ -47,86 +50,32 @@ export function createBoardContent( const ctx = canvas.getContext('2d') as CanvasRenderingContext2D; - if (createCustomContext2D) { - // TODO - const viewContext = createCustomContext2D(ctxOpts); - const overlayContext = createCustomContext2D(ctxOpts); - const underlayContext = createCustomContext2D(ctxOpts); - const boardContext = createContext2D({ ctx, ...ctxOpts }); + // const ctx = canvas.getContext('2d') as CanvasRenderingContext2D; + const viewContext = createOffscreenContext2D(ctxOpts); + const overlayContext = createOffscreenContext2D(ctxOpts); + const underlayContext = createOffscreenContext2D(ctxOpts); + const boardContext = createContext2D({ ctx, ...ctxOpts }); + const tempContext = createOffscreenContext2D(ctxOpts); - const drawView = () => { - const { width: w, height: h } = viewContext.$getSize(); + const drawView = () => { + const { width: w, height: h } = viewContext.$getSize(); - boardContext.clearRect(0, 0, w, h); - boardContext.drawImage(underlayContext.canvas, 0, 0, w, h); - boardContext.drawImage(viewContext.canvas, 0, 0, w, h); - boardContext.drawImage(overlayContext.canvas, 0, 0, w, h); - underlayContext.clearRect(0, 0, w, h); - viewContext.clearRect(0, 0, w, h); - overlayContext.clearRect(0, 0, w, h); - }; + boardContext.clearRect(0, 0, w, h); + boardContext.drawImage(underlayContext.canvas, 0, 0, w, h); + boardContext.drawImage(viewContext.canvas, 0, 0, w, h); + boardContext.drawImage(overlayContext.canvas, 0, 0, w, h); + underlayContext.clearRect(0, 0, w, h); + viewContext.clearRect(0, 0, w, h); + overlayContext.clearRect(0, 0, w, h); + }; - const content: BoardContent = { - underlayContext, - viewContext, - overlayContext, - boardContext, - drawView - }; - return content; - } - - if (offscreen === true) { - // const ctx = canvas.getContext('2d') as CanvasRenderingContext2D; - const viewContext = createOffscreenContext2D(ctxOpts); - const overlayContext = createOffscreenContext2D(ctxOpts); - const underlayContext = createOffscreenContext2D(ctxOpts); - const boardContext = createContext2D({ ctx, ...ctxOpts }); - - const drawView = () => { - const { width: w, height: h } = viewContext.$getSize(); - - boardContext.clearRect(0, 0, w, h); - boardContext.drawImage(underlayContext.canvas, 0, 0, w, h); - boardContext.drawImage(viewContext.canvas, 0, 0, w, h); - boardContext.drawImage(overlayContext.canvas, 0, 0, w, h); - underlayContext.clearRect(0, 0, w, h); - viewContext.clearRect(0, 0, w, h); - overlayContext.clearRect(0, 0, w, h); - }; - - const content: BoardContent = { - underlayContext, - viewContext, - overlayContext, - boardContext, - drawView - }; - return content; - } else { - // const ctx = canvas.getContext('2d') as CanvasRenderingContext2D; - const viewContext = createContext2D(ctxOpts); - const overlayContext = createContext2D(ctxOpts); - const underlayContext = createContext2D(ctxOpts); - const boardContext = createContext2D({ ctx, ...ctxOpts }); - - const drawView = () => { - boardContext.clearRect(0, 0, width, height); - boardContext.drawImage(underlayContext.canvas, 0, 0, width, height); - boardContext.drawImage(viewContext.canvas, 0, 0, width, height); - boardContext.drawImage(overlayContext.canvas, 0, 0, width, height); - underlayContext.clearRect(0, 0, width, height); - viewContext.clearRect(0, 0, width, height); - overlayContext.clearRect(0, 0, width, height); - }; - - const content: BoardContent = { - underlayContext, - viewContext, - overlayContext, - boardContext, - drawView - }; - return content; - } + const content: BoardContent = { + underlayContext, + viewContext, + overlayContext, + boardContext, + tempContext, + drawView + }; + return content; } diff --git a/packages/util/src/lib/color.ts b/packages/util/src/lib/color.ts index a4311ee..42d70ea 100644 --- a/packages/util/src/lib/color.ts +++ b/packages/util/src/lib/color.ts @@ -1,7 +1,7 @@ import type { LinearGradientColor, RadialGradientColor } from '@idraw/types'; export function toColorHexNum(color: string): number { - return parseInt(color.replace(/^\#/, '0x')); + return parseInt(color.replace(/^#/, '0x')); } export function toColorHexStr(color: number): string { @@ -9,7 +9,9 @@ export function toColorHexStr(color: number): string { } export function isColorStr(color?: string): boolean { - return typeof color === 'string' && (/^\#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(color) || /^[a-z]{1,}$/i.test(color)); + return ( + typeof color === 'string' && (/^#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(color) || /^[a-z]{1,}$/i.test(color)) + ); } // https://stackoverflow.com/questions/1573053/javascript-function-to-convert-color-names-to-hex-codes @@ -170,6 +172,8 @@ export function colorToCSS(color?: string | LinearGradientColor | RadialGradient let css = 'transparent'; if (typeof color === 'string') { css = color; + } else if (color?.stops.length === 1) { + css = color.stops[0].color; } else if (color?.type === 'linear-gradient') { const items: string[] = []; if (typeof color.angle === 'number') { @@ -220,13 +224,13 @@ export function mergeHexColorAlpha(hex: string, alpha: number): string { return hex; } let hexAlpha = 1; - const regHex1 = /^\#[0-9a-f]{6,6}$/i; - const regHex2 = /^\#[0-9a-f]{8,8}$/i; + const regHex1 = /^#[0-9a-f]{6,6}$/i; + const regHex2 = /^#[0-9a-f]{8,8}$/i; let result = hex; if (regHex1.test(hex)) { - hexAlpha = parseInt(hex.substring(5, 7).replace(/^\#/, '0x')); + hexAlpha = parseInt(hex.substring(5, 7).replace(/^#/, '0x')); } else if (regHex2.test(hex)) { - hexAlpha = parseInt(hex.substring(7, 9).replace(/^\#/, '0x')); + hexAlpha = parseInt(hex.substring(7, 9).replace(/^#/, '0x')); result = hex.substring(0, 7); } hexAlpha = hexAlpha * alpha; diff --git a/packages/util/src/lib/context2d.ts b/packages/util/src/lib/context2d.ts index d1c96db..ed8ffe1 100644 --- a/packages/util/src/lib/context2d.ts +++ b/packages/util/src/lib/context2d.ts @@ -175,8 +175,22 @@ export class Context2D implements ViewContext2D { return this.#ctx.fill(...(args as [path: Path2D, fillRule?: CanvasFillRule | undefined])); } - arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean | undefined): void { - return this.#ctx.arc(this.$doPixelRatio(x), this.$doPixelRatio(y), this.$doPixelRatio(radius), startAngle, endAngle, anticlockwise); + arc( + x: number, + y: number, + radius: number, + startAngle: number, + endAngle: number, + anticlockwise?: boolean | undefined + ): void { + return this.#ctx.arc( + this.$doPixelRatio(x), + this.$doPixelRatio(y), + this.$doPixelRatio(radius), + startAngle, + endAngle, + anticlockwise + ); } rect(x: number, y: number, w: number, h: number) { @@ -184,11 +198,21 @@ export class Context2D implements ViewContext2D { } fillRect(x: number, y: number, w: number, h: number) { - return this.#ctx.fillRect(this.$doPixelRatio(x), this.$doPixelRatio(y), this.$doPixelRatio(w), this.$doPixelRatio(h)); + return this.#ctx.fillRect( + this.$doPixelRatio(x), + this.$doPixelRatio(y), + this.$doPixelRatio(w), + this.$doPixelRatio(h) + ); } clearRect(x: number, y: number, w: number, h: number) { - return this.#ctx.clearRect(this.$doPixelRatio(x), this.$doPixelRatio(y), this.$doPixelRatio(w), this.$doPixelRatio(h)); + return this.#ctx.clearRect( + this.$doPixelRatio(x), + this.$doPixelRatio(y), + this.$doPixelRatio(w), + this.$doPixelRatio(h) + ); } beginPath() { @@ -208,7 +232,32 @@ export class Context2D implements ViewContext2D { } arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void { - return this.#ctx.arcTo(this.$doPixelRatio(x1), this.$doPixelRatio(y1), this.$doPixelRatio(x2), this.$doPixelRatio(y2), this.$doPixelRatio(radius)); + return this.#ctx.arcTo( + this.$doPixelRatio(x1), + this.$doPixelRatio(y1), + this.$doPixelRatio(x2), + this.$doPixelRatio(y2), + this.$doPixelRatio(radius) + ); + } + + bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void { + return this.#ctx.bezierCurveTo( + this.$doPixelRatio(cp1x), + this.$doPixelRatio(cp1y), + this.$doPixelRatio(cp2x), + this.$doPixelRatio(cp2y), + this.$doPixelRatio(x), + this.$doPixelRatio(y) + ); + } + quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void { + return this.#ctx.quadraticCurveTo( + this.$doPixelRatio(cpx), + this.$doPixelRatio(cpy), + this.$doPixelRatio(x), + this.$doPixelRatio(y) + ); } getLineDash() { @@ -257,7 +306,13 @@ export class Context2D implements ViewContext2D { this.$doPixelRatio(dh) ); } else { - return this.#ctx.drawImage(image, this.$doPixelRatio(dx), this.$doPixelRatio(dy), this.$doPixelRatio(dw), this.$doPixelRatio(dh)); + return this.#ctx.drawImage( + image, + this.$doPixelRatio(dx), + this.$doPixelRatio(dy), + this.$doPixelRatio(dw), + this.$doPixelRatio(dh) + ); } } @@ -338,7 +393,12 @@ export class Context2D implements ViewContext2D { } createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient { - return this.#ctx.createLinearGradient(this.$doPixelRatio(x0), this.$doPixelRatio(y0), this.$doPixelRatio(x1), this.$doPixelRatio(y1)); + return this.#ctx.createLinearGradient( + this.$doPixelRatio(x0), + this.$doPixelRatio(y0), + this.$doPixelRatio(x1), + this.$doPixelRatio(y1) + ); } createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient { return this.#ctx.createRadialGradient( diff --git a/packages/util/src/lib/data.ts b/packages/util/src/lib/data.ts index e899ac6..e4dc667 100644 --- a/packages/util/src/lib/data.ts +++ b/packages/util/src/lib/data.ts @@ -42,11 +42,24 @@ export function deepCloneElement(element: T): T { return elem; } +export function deepCloneData(data: Data): Data { + const { elements, ...restData } = data; + return { + ...deepClone(restData), + ...{ + elements: elements.map((elem) => deepCloneElement(elem)) + } + }; +} + function is(target: any): string { - return Object.prototype.toString - .call(target) - .replace(/[\]|\[]{1,1}/gi, '') - .split(' ')[1]; + return ( + Object.prototype.toString + .call(target) + // eslint-disable-next-line no-useless-escape + .replace(/[\]|\[]{1,1}/gi, '') + .split(' ')[1] + ); } export function sortDataAsserts(data: Data, opts?: { clone?: boolean }): Data { diff --git a/packages/util/src/lib/is.ts b/packages/util/src/lib/is.ts index 881844f..9521a3d 100644 --- a/packages/util/src/lib/is.ts +++ b/packages/util/src/lib/is.ts @@ -1,5 +1,9 @@ import { isColorStr } from './color'; +function positiveNum(value: any) { + return typeof value === 'number' && value >= 0; +} + function number(value: any) { return typeof value === 'number' && (value > 0 || value <= 0); } @@ -13,11 +17,11 @@ function y(value: any) { } function w(value: any) { - return typeof value === 'number' && value >= 0; + return positiveNum(value); } function h(value: any) { - return typeof value === 'number' && value >= 0; + return positiveNum(value); } function angle(value: any) { @@ -25,11 +29,25 @@ function angle(value: any) { } function borderWidth(value: any) { - return w(value); + return ( + positiveNum(value) || + (Array.isArray(value) && + positiveNum(value[0]) && + positiveNum(value[1]) && + positiveNum(value[2]) && + positiveNum(value[3])) + ); } function borderRadius(value: any) { - return number(value) && value >= 0; + return ( + positiveNum(value) || + (Array.isArray(value) && + positiveNum(value[0]) && + positiveNum(value[1]) && + positiveNum(value[2]) && + positiveNum(value[3])) + ); } function color(value: any) { @@ -49,7 +67,11 @@ function imageSrc(value: any) { } function svg(value: any) { - return typeof value === 'string' && /^()/i.test(`${value}`.trim()) && /<\/[\s]{0,}svg>$/i.test(`${value}`.trim()); + return ( + typeof value === 'string' && + /^()/i.test(`${value}`.trim()) && + /<\/[\s]{0,}svg>$/i.test(`${value}`.trim()) + ); } function html(value: any) { @@ -98,6 +120,7 @@ function numberStr(value: any): boolean { } export const is = { + positiveNum, x, y, w, diff --git a/packages/util/src/lib/merge.ts b/packages/util/src/lib/merge.ts new file mode 100644 index 0000000..5ddc5aa --- /dev/null +++ b/packages/util/src/lib/merge.ts @@ -0,0 +1,22 @@ +export function merge = any, U extends Record = any>( + target: T, + source: U +): T & U { + type Result = T & U; + const result: Result = target as Result; + for (const key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + if ( + typeof source[key] === 'object' && + source[key] !== null && + typeof result[key] === 'object' && + result[key] !== null + ) { + result[key] = merge(result[key] as object, source[key] as object) as any; + } else { + result[key] = source[key] as any; + } + } + } + return target as T & U; +} diff --git a/packages/util/src/lib/omit.ts b/packages/util/src/lib/omit.ts new file mode 100644 index 0000000..d14d062 --- /dev/null +++ b/packages/util/src/lib/omit.ts @@ -0,0 +1,11 @@ +export function omit, K extends keyof T>(obj: T, keys: K[]): Omit { + // Create a shallow copy of the object + const result = { ...obj }; + + // Remove the specified keys + for (const key of keys) { + delete result[key]; + } + + return result; +} diff --git a/packages/util/src/lib/view-box.ts b/packages/util/src/lib/view-box.ts index f98fe73..a75967d 100644 --- a/packages/util/src/lib/view-box.ts +++ b/packages/util/src/lib/view-box.ts @@ -2,10 +2,14 @@ import type { Element, ViewScaleInfo, ViewSizeInfo, ViewBoxSize } from '@idraw/t import { getDefaultElementDetailConfig } from './config'; const defaultElemConfig = getDefaultElementDetailConfig(); -export function calcViewBoxSize(viewElem: Element, opts: { viewScaleInfo: ViewScaleInfo; viewSizeInfo: ViewSizeInfo }): ViewBoxSize { +export function calcViewBoxSize( + viewElem: Element, + opts: { viewScaleInfo: ViewScaleInfo; viewSizeInfo: ViewSizeInfo } +): ViewBoxSize { const { viewScaleInfo } = opts; const { scale } = viewScaleInfo; - let { borderRadius, borderDash } = viewElem.detail; + let { borderRadius } = viewElem.detail; + const { borderDash } = viewElem.detail; const hasBorderDash = Array.isArray(borderDash) && borderDash.length > 0; const { boxSizing = defaultElemConfig.boxSizing, borderWidth } = viewElem.detail; diff --git a/packages/util/src/lib/view-calc.ts b/packages/util/src/lib/view-calc.ts index db82504..ed9cf5a 100644 --- a/packages/util/src/lib/view-calc.ts +++ b/packages/util/src/lib/view-calc.ts @@ -9,15 +9,17 @@ import { ElementSize, ViewContext2D, ViewRectVertexes, - ViewRectInfo, - ViewRectInfoMap + ViewRectInfo } from '@idraw/types'; import { rotateElementVertexes } from './rotate'; import { checkRectIntersect } from './rect'; import { calcElementVertexesInGroup, calcElementVertexes } from './vertex'; import { getCenterFromTwoPoints } from './point'; -export function calcViewScaleInfo(info: { scale: number; offsetX: number; offsetY: number }, opts: { viewSizeInfo: ViewSizeInfo }): ViewScaleInfo { +export function calcViewScaleInfo( + info: { scale: number; offsetX: number; offsetY: number }, + opts: { viewSizeInfo: ViewSizeInfo } +): ViewScaleInfo { const { scale, offsetX, offsetY } = info; const { viewSizeInfo } = opts; const { width, height, contextWidth, contextHeight } = viewSizeInfo; @@ -38,7 +40,12 @@ export function calcViewScaleInfo(info: { scale: number; offsetX: number; offset return newScaleInfo; } -export function viewScale(opts: { scale: number; point: PointSize; viewScaleInfo: ViewScaleInfo; viewSizeInfo: ViewSizeInfo }): { +export function viewScale(opts: { + scale: number; + point: PointSize; + viewScaleInfo: ViewScaleInfo; + viewSizeInfo: ViewSizeInfo; +}): { moveX: number; moveY: number; } { @@ -55,7 +62,12 @@ export function viewScale(opts: { scale: number; point: PointSize; viewScaleInfo }; } -export function viewScroll(opts: { moveX?: number; moveY?: number; viewScaleInfo: ViewScaleInfo; viewSizeInfo: ViewSizeInfo }): ViewScaleInfo { +export function viewScroll(opts: { + moveX?: number; + moveY?: number; + viewScaleInfo: ViewScaleInfo; + viewSizeInfo: ViewSizeInfo; +}): ViewScaleInfo { const { moveX = 0, moveY = 0, viewScaleInfo, viewSizeInfo } = opts; const { scale } = viewScaleInfo; @@ -110,7 +122,10 @@ export function calcViewPointSize(size: PointSize, opts: { viewScaleInfo: ViewSc return newSize; } -export function calcViewVertexes(vertexes: ViewRectVertexes, opts: { viewScaleInfo: ViewScaleInfo; viewSizeInfo: ViewSizeInfo }): ViewRectVertexes { +export function calcViewVertexes( + vertexes: ViewRectVertexes, + opts: { viewScaleInfo: ViewScaleInfo; viewSizeInfo: ViewSizeInfo } +): ViewRectVertexes { return [ calcViewPointSize(vertexes[0], opts), calcViewPointSize(vertexes[1], opts), @@ -264,7 +279,10 @@ export function getViewPointAtElement( /** * @deprecated */ -export function isElementInView(elem: ElementSize, opts: { viewScaleInfo: ViewScaleInfo; viewSizeInfo: ViewSizeInfo }): boolean { +export function isElementInView( + elem: ElementSize, + opts: { viewScaleInfo: ViewScaleInfo; viewSizeInfo: ViewSizeInfo } +): boolean { const { viewSizeInfo, viewScaleInfo } = opts; const { width, height } = viewSizeInfo; const { angle } = elem; @@ -325,10 +343,30 @@ export function calcElementOriginRectInfo( } export function originRectInfoToRangeRectInfo(originRectInfo: ViewRectInfo): ViewRectInfo { - const rangeMaxX = Math.max(originRectInfo.topLeft.x, originRectInfo.topRight.x, originRectInfo.bottomRight.x, originRectInfo.bottomLeft.x); - const rangeMaxY = Math.max(originRectInfo.topLeft.y, originRectInfo.topRight.y, originRectInfo.bottomRight.y, originRectInfo.bottomLeft.y); - const rangeMinX = Math.min(originRectInfo.topLeft.x, originRectInfo.topRight.x, originRectInfo.bottomRight.x, originRectInfo.bottomLeft.x); - const rangeMinY = Math.min(originRectInfo.topLeft.y, originRectInfo.topRight.y, originRectInfo.bottomRight.y, originRectInfo.bottomLeft.y); + const rangeMaxX = Math.max( + originRectInfo.topLeft.x, + originRectInfo.topRight.x, + originRectInfo.bottomRight.x, + originRectInfo.bottomLeft.x + ); + const rangeMaxY = Math.max( + originRectInfo.topLeft.y, + originRectInfo.topRight.y, + originRectInfo.bottomRight.y, + originRectInfo.bottomLeft.y + ); + const rangeMinX = Math.min( + originRectInfo.topLeft.x, + originRectInfo.topRight.x, + originRectInfo.bottomRight.x, + originRectInfo.bottomLeft.x + ); + const rangeMinY = Math.min( + originRectInfo.topLeft.y, + originRectInfo.topRight.y, + originRectInfo.bottomRight.y, + originRectInfo.bottomLeft.y + ); const rangeCenter = { x: originRectInfo.center.x, y: originRectInfo.center.y }; const rangeTopLeft = { x: rangeMinX, y: rangeMinY }; @@ -384,10 +422,30 @@ export function calcElementViewRectInfo( if (range === true) { // Range RectInfo - const viewMaxX = Math.max(viewRectInfo.topLeft.x, viewRectInfo.topRight.x, viewRectInfo.bottomRight.x, viewRectInfo.bottomLeft.x); - const viewMaxY = Math.max(viewRectInfo.topLeft.y, viewRectInfo.topRight.y, viewRectInfo.bottomRight.y, viewRectInfo.bottomLeft.y); - const viewMinX = Math.min(viewRectInfo.topLeft.x, viewRectInfo.topRight.x, viewRectInfo.bottomRight.x, viewRectInfo.bottomLeft.x); - const viewMinY = Math.min(viewRectInfo.topLeft.y, viewRectInfo.topRight.y, viewRectInfo.bottomRight.y, viewRectInfo.bottomLeft.y); + const viewMaxX = Math.max( + viewRectInfo.topLeft.x, + viewRectInfo.topRight.x, + viewRectInfo.bottomRight.x, + viewRectInfo.bottomLeft.x + ); + const viewMaxY = Math.max( + viewRectInfo.topLeft.y, + viewRectInfo.topRight.y, + viewRectInfo.bottomRight.y, + viewRectInfo.bottomLeft.y + ); + const viewMinX = Math.min( + viewRectInfo.topLeft.x, + viewRectInfo.topRight.x, + viewRectInfo.bottomRight.x, + viewRectInfo.bottomLeft.x + ); + const viewMinY = Math.min( + viewRectInfo.topLeft.y, + viewRectInfo.topRight.y, + viewRectInfo.bottomRight.y, + viewRectInfo.bottomLeft.y + ); const rangeCenter = { x: viewRectInfo.center.x, y: viewRectInfo.center.y }; const rangeTopLeft = { x: viewMinX, y: viewMinY }; @@ -416,65 +474,3 @@ export function calcElementViewRectInfo( return viewRectInfo; } - -export function calcElementViewRectInfoMap( - elemSize: ElementSize, - opts: { - groupQueue: Element<'group'>[]; - viewScaleInfo: ViewScaleInfo; - } -): ViewRectInfoMap { - const { groupQueue, viewScaleInfo } = opts; - - // Original RectInfo - const originRectInfo = calcElementOriginRectInfo(elemSize, { groupQueue }); - const { center, top, bottom, left, right, topLeft, topRight, bottomLeft, bottomRight } = originRectInfo; - - // View RectInfo - const viewRectInfo: ViewRectInfo = { - center: calcViewPointSize(center, { viewScaleInfo }), - topLeft: calcViewPointSize(topLeft, { viewScaleInfo }), - topRight: calcViewPointSize(topRight, { viewScaleInfo }), - bottomLeft: calcViewPointSize(bottomLeft, { viewScaleInfo }), - bottomRight: calcViewPointSize(bottomRight, { viewScaleInfo }), - top: calcViewPointSize(top, { viewScaleInfo }), - right: calcViewPointSize(right, { viewScaleInfo }), - left: calcViewPointSize(left, { viewScaleInfo }), - bottom: calcViewPointSize(bottom, { viewScaleInfo }) - }; - - // Range RectInfo - const viewMaxX = Math.max(viewRectInfo.topLeft.x, viewRectInfo.topRight.x, viewRectInfo.bottomRight.x, viewRectInfo.bottomLeft.x); - const viewMaxY = Math.max(viewRectInfo.topLeft.y, viewRectInfo.topRight.y, viewRectInfo.bottomRight.y, viewRectInfo.bottomLeft.y); - const viewMinX = Math.min(viewRectInfo.topLeft.x, viewRectInfo.topRight.x, viewRectInfo.bottomRight.x, viewRectInfo.bottomLeft.x); - const viewMinY = Math.min(viewRectInfo.topLeft.y, viewRectInfo.topRight.y, viewRectInfo.bottomRight.y, viewRectInfo.bottomLeft.y); - - const rangeCenter = { x: viewRectInfo.center.x, y: viewRectInfo.center.y }; - const rangeTopLeft = { x: viewMinX, y: viewMinY }; - const rangeTopRight = { x: viewMaxX, y: viewMinY }; - const rangeBottomRight = { x: viewMaxX, y: viewMaxY }; - const rangeBottomLeft = { x: viewMinX, y: viewMaxY }; - - const rangeTop = getCenterFromTwoPoints(rangeTopLeft, rangeTopRight); - const rangeBottom = getCenterFromTwoPoints(rangeBottomLeft, rangeBottomRight); - const rangeLeft = getCenterFromTwoPoints(rangeTopLeft, rangeBottomLeft); - const rangeRight = getCenterFromTwoPoints(rangeTopRight, rangeBottomRight); - - const rangeRectInfo: ViewRectInfo = { - center: rangeCenter, - topLeft: rangeTopLeft, - topRight: rangeTopRight, - bottomLeft: rangeBottomLeft, - bottomRight: rangeBottomRight, - top: rangeTop, - right: rangeRight, - left: rangeLeft, - bottom: rangeBottom - }; - - return { - originRectInfo, - // viewRectInfo, - rangeRectInfo - }; -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ba63836..c319d70 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,77 +9,77 @@ importers: .: devDependencies: '@babel/core': - specifier: ^7.25.2 - version: 7.25.2 + specifier: ^7.26.10 + version: 7.26.10 '@babel/preset-env': - specifier: ^7.25.3 - version: 7.25.3(@babel/core@7.25.2) + specifier: ^7.26.9 + version: 7.26.9(@babel/core@7.26.10) '@babel/preset-typescript': - specifier: ^7.24.7 - version: 7.24.7(@babel/core@7.25.2) + specifier: ^7.27.0 + version: 7.27.0(@babel/core@7.26.10) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.20.0) + version: 6.1.0(rollup@4.40.0) '@types/glob': specifier: ^8.1.0 version: 8.1.0 '@types/jest': - specifier: ^29.5.12 - version: 29.5.12 + specifier: ^29.5.14 + version: 29.5.14 '@types/koa-compose': specifier: ^3.2.8 version: 3.2.8 '@types/node': - specifier: ^22.1.0 - version: 22.1.0 + specifier: ^22.14.1 + version: 22.14.1 '@types/serve-handler': specifier: ^6.1.4 version: 6.1.4 '@typescript-eslint/eslint-plugin': - specifier: ^8.0.0 - version: 8.0.0(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4) + specifier: ^8.29.1 + version: 8.29.1(@typescript-eslint/parser@8.29.1(eslint@9.24.0)(typescript@5.8.3))(eslint@9.24.0)(typescript@5.8.3) '@typescript-eslint/parser': - specifier: ^8.0.0 - version: 8.0.0(eslint@9.8.0)(typescript@5.5.4) + specifier: ^8.29.1 + version: 8.29.1(eslint@9.24.0)(typescript@5.8.3) '@vitejs/plugin-react': - specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@22.1.0)(less@4.2.0)(terser@5.31.3)) + specifier: ^4.3.4 + version: 4.3.4(vite@6.2.6(@types/node@22.14.1)(less@4.3.0)(terser@5.39.0)) babel-jest: specifier: ^29.7.0 - version: 29.7.0(@babel/core@7.25.2) + version: 29.7.0(@babel/core@7.26.10) chalk: - specifier: ^5.3.0 - version: 5.3.0 + specifier: ^5.4.1 + version: 5.4.1 dotenv: - specifier: ^16.4.5 - version: 16.4.5 + specifier: ^16.5.0 + version: 16.5.0 enquirer: specifier: ^2.4.1 version: 2.4.1 esbuild: - specifier: ^0.23.0 - version: 0.23.0 + specifier: ^0.25.2 + version: 0.25.2 eslint: - specifier: ^9.8.0 - version: 9.8.0 + specifier: ^9.24.0 + version: 9.24.0 execa: - specifier: ^9.3.0 - version: 9.3.0 + specifier: ^9.5.2 + version: 9.5.2 fs-extra: - specifier: ^11.2.0 - version: 11.2.0 + specifier: ^11.3.0 + version: 11.3.0 glob: - specifier: ^11.0.0 - version: 11.0.0 + specifier: ^11.0.1 + version: 11.0.1 http-server: specifier: ^14.1.1 version: 14.1.1 husky: - specifier: ^9.1.4 - version: 9.1.4 + specifier: ^9.1.7 + version: 9.1.7 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.1.0)(ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4)) + version: 29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.8.3)) jest-canvas-mock: specifier: ^2.5.2 version: 2.5.2 @@ -87,90 +87,74 @@ importers: specifier: ^29.7.0 version: 29.7.0 jimp: - specifier: ^0.22.12 - version: 0.22.12 + specifier: ^1.6.0 + version: 1.6.0 koa-compose: specifier: ^4.1.0 version: 4.1.0 less: - specifier: ^4.2.0 - version: 4.2.0 + specifier: ^4.3.0 + version: 4.3.0 pixelmatch: - specifier: ^6.0.0 - version: 6.0.0 + specifier: ^7.1.0 + version: 7.1.0 pngjs: specifier: ^7.0.0 version: 7.0.0 puppeteer: - specifier: ^22.6.4 - version: 22.9.0(typescript@5.5.4) + specifier: ^24.6.1 + version: 24.6.1(typescript@5.8.3) rollup: - specifier: ^4.20.0 - version: 4.20.0 + specifier: ^4.40.0 + version: 4.40.0 rollup-plugin-dts: - specifier: ^6.1.1 - version: 6.1.1(rollup@4.20.0)(typescript@5.5.4) + specifier: ^6.2.1 + version: 6.2.1(rollup@4.40.0)(typescript@5.8.3) rollup-plugin-esbuild: - specifier: ^6.1.1 - version: 6.1.1(esbuild@0.23.0)(rollup@4.20.0) + specifier: ^6.2.1 + version: 6.2.1(esbuild@0.25.2)(rollup@4.40.0) serve-handler: - specifier: ^6.1.5 - version: 6.1.5 + specifier: ^6.1.6 + version: 6.1.6 terser: - specifier: ^5.31.3 - version: 5.31.3 + specifier: ^5.39.0 + version: 5.39.0 ts-morph: - specifier: ^23.0.0 - version: 23.0.0 + specifier: ^25.0.1 + version: 25.0.1 ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@22.1.0)(typescript@5.5.4) + version: 10.9.2(@types/node@22.14.1)(typescript@5.8.3) tslib: - specifier: ^2.6.3 - version: 2.6.3 + specifier: ^2.8.1 + version: 2.8.1 typescript: - specifier: ^5.5.4 - version: 5.5.4 + specifier: ^5.8.3 + version: 5.8.3 vite: - specifier: ^5.3.5 - version: 5.3.5(@types/node@22.1.0)(less@4.2.0)(terser@5.31.3) - - packages/board: - dependencies: - '@idraw/renderer': - specifier: workspace:^0.4.0-beta.39 - version: link:../renderer - '@idraw/util': - specifier: workspace:^0.4.0-beta.39 - version: link:../util - devDependencies: - '@idraw/types': - specifier: workspace:^0.4.0-beta.39 - version: link:../types + specifier: ^6.2.6 + version: 6.2.6(@types/node@22.14.1)(less@4.3.0)(terser@5.39.0) packages/core: dependencies: - '@idraw/board': - specifier: workspace:^0.4.0-beta.39 - version: link:../board '@idraw/renderer': - specifier: workspace:^0.4.0-beta.39 + specifier: workspace:^0.4.0-beta.40 version: link:../renderer '@idraw/util': - specifier: workspace:^0.4.0-beta.39 + specifier: workspace:^0.4.0-beta.40 version: link:../util devDependencies: '@idraw/types': - specifier: workspace:^0.4.0-beta.39 + specifier: workspace:^0.4.0-beta.40 version: link:../types packages/figma: dependencies: '@idraw/types': - specifier: workspace:^0.4.0-beta.39 + specifier: workspace:^0.4.0-beta.40 version: link:../types '@idraw/util': - specifier: workspace:^0.4.0-beta.39 + specifier: workspace:^0.4.0-beta.40 version: link:../util kiwi-schema: specifier: ^0.5.0 @@ -191,30 +175,27 @@ importers: packages/idraw: dependencies: - '@idraw/board': - specifier: workspace:^0.4.0-beta.39 - version: link:../board '@idraw/core': - specifier: workspace:^0.4.0-beta.39 + specifier: workspace:^0.4.0-beta.40 version: link:../core '@idraw/renderer': - specifier: workspace:^0.4.0-beta.39 + specifier: workspace:^0.4.0-beta.40 version: link:../renderer '@idraw/types': - specifier: workspace:^0.4.0-beta.39 + specifier: workspace:^0.4.0-beta.40 version: link:../types '@idraw/util': - specifier: workspace:^0.4.0-beta.39 + specifier: workspace:^0.4.0-beta.40 version: link:../util packages/renderer: dependencies: '@idraw/util': - specifier: workspace:^0.4.0-beta.39 + specifier: workspace:^0.4.0-beta.40 version: link:../util devDependencies: '@idraw/types': - specifier: workspace:^0.4.0-beta.39 + specifier: workspace:^0.4.0-beta.40 version: link:../types packages/types: {} @@ -231,54 +212,44 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@babel/code-frame@7.24.2': - resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} - engines: {node: '>=6.9.0'} - '@babel/code-frame@7.24.7': resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.25.2': - resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} - '@babel/core@7.25.2': - resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} + '@babel/compat-data@7.26.8': + resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} engines: {node: '>=6.9.0'} - '@babel/generator@7.24.5': - resolution: {integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==} + '@babel/core@7.26.10': + resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} engines: {node: '>=6.9.0'} '@babel/generator@7.25.0': resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.22.5': - resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + '@babel/generator@7.27.0': + resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.24.7': resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} engines: {node: '>=6.9.0'} - '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': - resolution: {integrity: sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==} + '@babel/helper-annotate-as-pure@7.25.9': + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.25.2': - resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} + '@babel/helper-compilation-targets@7.27.0': + resolution: {integrity: sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.25.0': - resolution: {integrity: sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-create-regexp-features-plugin@7.22.15': - resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + '@babel/helper-create-class-features-plugin@7.27.0': + resolution: {integrity: sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -289,129 +260,132 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-create-regexp-features-plugin@7.27.0': + resolution: {integrity: sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-define-polyfill-provider@0.6.2': resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - '@babel/helper-member-expression-to-functions@7.24.8': - resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} + '@babel/helper-define-polyfill-provider@0.6.4': + resolution: {integrity: sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-member-expression-to-functions@7.25.9': + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.24.7': - resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.25.2': - resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-optimise-call-expression@7.24.7': - resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} - engines: {node: '>=6.9.0'} - - '@babel/helper-plugin-utils@7.24.5': - resolution: {integrity: sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==} + '@babel/helper-optimise-call-expression@7.25.9': + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} engines: {node: '>=6.9.0'} '@babel/helper-plugin-utils@7.24.8': resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} engines: {node: '>=6.9.0'} - '@babel/helper-remap-async-to-generator@7.25.0': - resolution: {integrity: sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==} + '@babel/helper-plugin-utils@7.26.5': + resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.25.9': + resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-replace-supers@7.25.0': - resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==} + '@babel/helper-replace-supers@7.26.5': + resolution: {integrity: sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-simple-access@7.24.7': - resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-skip-transparent-expression-wrappers@7.24.7': - resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.24.1': - resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} engines: {node: '>=6.9.0'} '@babel/helper-string-parser@7.24.8': resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.24.5': - resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==} + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} '@babel/helper-validator-identifier@7.24.7': resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.24.8': - resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.25.0': - resolution: {integrity: sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==} + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.25.0': - resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} + '@babel/helper-wrap-function@7.25.9': + resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} engines: {node: '>=6.9.0'} - '@babel/highlight@7.24.5': - resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==} + '@babel/helpers@7.27.0': + resolution: {integrity: sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==} engines: {node: '>=6.9.0'} '@babel/highlight@7.24.7': resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.24.5': - resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.25.3': resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3': - resolution: {integrity: sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==} + '@babel/parser@7.27.0': + resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': + resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.0': - resolution: {integrity: sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==} + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9': + resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0': - resolution: {integrity: sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==} + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9': + resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7': - resolution: {integrity: sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==} + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9': + resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.0': - resolution: {integrity: sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==} + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9': + resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -437,30 +411,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-class-static-block@7.14.5': - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + '@babel/plugin-syntax-import-assertions@7.26.0': + resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-dynamic-import@7.8.3': - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-export-namespace-from@7.8.3': - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-assertions@7.24.7': - resolution: {integrity: sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-attributes@7.24.7': - resolution: {integrity: sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==} + '@babel/plugin-syntax-import-attributes@7.26.0': + resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -475,14 +433,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-jsx@7.24.1': - resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} + '@babel/plugin-syntax-jsx@7.24.7': + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-jsx@7.24.7': - resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} + '@babel/plugin-syntax-jsx@7.25.9': + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -517,350 +475,350 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-private-property-in-object@7.14.5': - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-top-level-await@7.14.5': resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.24.1': - resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.24.7': resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-typescript@7.25.9': + resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-arrow-functions@7.24.7': - resolution: {integrity: sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==} + '@babel/plugin-transform-arrow-functions@7.25.9': + resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-generator-functions@7.25.0': - resolution: {integrity: sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==} + '@babel/plugin-transform-async-generator-functions@7.26.8': + resolution: {integrity: sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-to-generator@7.24.7': - resolution: {integrity: sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==} + '@babel/plugin-transform-async-to-generator@7.25.9': + resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoped-functions@7.24.7': - resolution: {integrity: sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==} + '@babel/plugin-transform-block-scoped-functions@7.26.5': + resolution: {integrity: sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.25.0': - resolution: {integrity: sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==} + '@babel/plugin-transform-block-scoping@7.27.0': + resolution: {integrity: sha512-u1jGphZ8uDI2Pj/HJj6YQ6XQLZCNjOlprjxB5SVz6rq2T6SwAR+CdrWK0CP7F+9rDVMXdB0+r6Am5G5aobOjAQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-properties@7.24.7': - resolution: {integrity: sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==} + '@babel/plugin-transform-class-properties@7.25.9': + resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-static-block@7.24.7': - resolution: {integrity: sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==} + '@babel/plugin-transform-class-static-block@7.26.0': + resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 - '@babel/plugin-transform-classes@7.25.0': - resolution: {integrity: sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==} + '@babel/plugin-transform-classes@7.25.9': + resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-computed-properties@7.24.7': - resolution: {integrity: sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==} + '@babel/plugin-transform-computed-properties@7.25.9': + resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-destructuring@7.24.8': - resolution: {integrity: sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==} + '@babel/plugin-transform-destructuring@7.25.9': + resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-dotall-regex@7.24.7': - resolution: {integrity: sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==} + '@babel/plugin-transform-dotall-regex@7.25.9': + resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-duplicate-keys@7.24.7': - resolution: {integrity: sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==} + '@babel/plugin-transform-duplicate-keys@7.25.9': + resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.0': - resolution: {integrity: sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==} + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-dynamic-import@7.24.7': - resolution: {integrity: sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==} + '@babel/plugin-transform-dynamic-import@7.25.9': + resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-exponentiation-operator@7.24.7': - resolution: {integrity: sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==} + '@babel/plugin-transform-exponentiation-operator@7.26.3': + resolution: {integrity: sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-export-namespace-from@7.24.7': - resolution: {integrity: sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==} + '@babel/plugin-transform-export-namespace-from@7.25.9': + resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-for-of@7.24.7': - resolution: {integrity: sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==} + '@babel/plugin-transform-for-of@7.26.9': + resolution: {integrity: sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-function-name@7.25.1': - resolution: {integrity: sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==} + '@babel/plugin-transform-function-name@7.25.9': + resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-json-strings@7.24.7': - resolution: {integrity: sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==} + '@babel/plugin-transform-json-strings@7.25.9': + resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-literals@7.25.2': - resolution: {integrity: sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==} + '@babel/plugin-transform-literals@7.25.9': + resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-logical-assignment-operators@7.24.7': - resolution: {integrity: sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==} + '@babel/plugin-transform-logical-assignment-operators@7.25.9': + resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-member-expression-literals@7.24.7': - resolution: {integrity: sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==} + '@babel/plugin-transform-member-expression-literals@7.25.9': + resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-amd@7.24.7': - resolution: {integrity: sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==} + '@babel/plugin-transform-modules-amd@7.25.9': + resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-commonjs@7.24.8': - resolution: {integrity: sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==} + '@babel/plugin-transform-modules-commonjs@7.26.3': + resolution: {integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-systemjs@7.25.0': - resolution: {integrity: sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==} + '@babel/plugin-transform-modules-systemjs@7.25.9': + resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-umd@7.24.7': - resolution: {integrity: sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==} + '@babel/plugin-transform-modules-umd@7.25.9': + resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-named-capturing-groups-regex@7.24.7': - resolution: {integrity: sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==} + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-new-target@7.24.7': - resolution: {integrity: sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==} + '@babel/plugin-transform-new-target@7.25.9': + resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-nullish-coalescing-operator@7.24.7': - resolution: {integrity: sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==} + '@babel/plugin-transform-nullish-coalescing-operator@7.26.6': + resolution: {integrity: sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-numeric-separator@7.24.7': - resolution: {integrity: sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==} + '@babel/plugin-transform-numeric-separator@7.25.9': + resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-rest-spread@7.24.7': - resolution: {integrity: sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==} + '@babel/plugin-transform-object-rest-spread@7.25.9': + resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-super@7.24.7': - resolution: {integrity: sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==} + '@babel/plugin-transform-object-super@7.25.9': + resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-catch-binding@7.24.7': - resolution: {integrity: sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==} + '@babel/plugin-transform-optional-catch-binding@7.25.9': + resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-chaining@7.24.8': - resolution: {integrity: sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==} + '@babel/plugin-transform-optional-chaining@7.25.9': + resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-parameters@7.24.7': - resolution: {integrity: sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==} + '@babel/plugin-transform-parameters@7.25.9': + resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-methods@7.24.7': - resolution: {integrity: sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==} + '@babel/plugin-transform-private-methods@7.25.9': + resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-property-in-object@7.24.7': - resolution: {integrity: sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==} + '@babel/plugin-transform-private-property-in-object@7.25.9': + resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-property-literals@7.24.7': - resolution: {integrity: sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==} + '@babel/plugin-transform-property-literals@7.25.9': + resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-self@7.24.5': - resolution: {integrity: sha512-RtCJoUO2oYrYwFPtR1/jkoBEcFuI1ae9a9IMxeyAVa3a1Ap4AnxmyIKG2b2FaJKqkidw/0cxRbWN+HOs6ZWd1w==} + '@babel/plugin-transform-react-jsx-self@7.25.9': + resolution: {integrity: sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx-source@7.24.1': - resolution: {integrity: sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==} + '@babel/plugin-transform-react-jsx-source@7.25.9': + resolution: {integrity: sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.24.7': - resolution: {integrity: sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==} + '@babel/plugin-transform-regenerator@7.27.0': + resolution: {integrity: sha512-LX/vCajUJQDqE7Aum/ELUMZAY19+cDpghxrnyt5I1tV6X5PyC86AOoWXWFYFeIvauyeSA6/ktn4tQVn/3ZifsA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-reserved-words@7.24.7': - resolution: {integrity: sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-shorthand-properties@7.24.7': - resolution: {integrity: sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-spread@7.24.7': - resolution: {integrity: sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-sticky-regex@7.24.7': - resolution: {integrity: sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-template-literals@7.24.7': - resolution: {integrity: sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typeof-symbol@7.24.8': - resolution: {integrity: sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typescript@7.25.2': - resolution: {integrity: sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-escapes@7.24.7': - resolution: {integrity: sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-property-regex@7.24.7': - resolution: {integrity: sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-regex@7.24.7': - resolution: {integrity: sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-sets-regex@7.24.7': - resolution: {integrity: sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==} + '@babel/plugin-transform-regexp-modifiers@7.26.0': + resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.25.3': - resolution: {integrity: sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g==} + '@babel/plugin-transform-reserved-words@7.25.9': + resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.25.9': + resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.25.9': + resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.25.9': + resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.26.8': + resolution: {integrity: sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.27.0': + resolution: {integrity: sha512-+LLkxA9rKJpNoGsbLnAgOCdESl73vwYn+V6b+5wHbrE7OGKVDPHIQvbFSzqE6rwqaCw2RE+zdJrlLkcf8YOA0w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.27.0': + resolution: {integrity: sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.25.9': + resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.25.9': + resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.25.9': + resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.25.9': + resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.26.9': + resolution: {integrity: sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -870,8 +828,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - '@babel/preset-typescript@7.24.7': - resolution: {integrity: sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==} + '@babel/preset-typescript@7.27.0': + resolution: {integrity: sha512-vxaPFfJtHhgeOVXRKuHpHPAOgymmy8V8I65T1q53R7GCZlefKeCaTyDs3zOPHTTbmquvNlQYC5klEvWsBAtrBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -883,26 +841,26 @@ packages: resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==} engines: {node: '>=6.9.0'} - '@babel/template@7.24.0': - resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} - engines: {node: '>=6.9.0'} - '@babel/template@7.25.0': resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.25.3': - resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} + '@babel/template@7.27.0': + resolution: {integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==} engines: {node: '>=6.9.0'} - '@babel/types@7.24.5': - resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==} + '@babel/traverse@7.27.0': + resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} engines: {node: '>=6.9.0'} '@babel/types@7.25.2': resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} engines: {node: '>=6.9.0'} + '@babel/types@7.27.0': + resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} + engines: {node: '>=6.9.0'} + '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -910,284 +868,152 @@ packages: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} - '@esbuild/aix-ppc64@0.21.5': - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - - '@esbuild/aix-ppc64@0.23.0': - resolution: {integrity: sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==} + '@esbuild/aix-ppc64@0.25.2': + resolution: {integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.21.5': - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.23.0': - resolution: {integrity: sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==} + '@esbuild/android-arm64@0.25.2': + resolution: {integrity: sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.21.5': - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.23.0': - resolution: {integrity: sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==} + '@esbuild/android-arm@0.25.2': + resolution: {integrity: sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.23.0': - resolution: {integrity: sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==} + '@esbuild/android-x64@0.25.2': + resolution: {integrity: sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.21.5': - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.23.0': - resolution: {integrity: sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==} + '@esbuild/darwin-arm64@0.25.2': + resolution: {integrity: sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.21.5': - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.23.0': - resolution: {integrity: sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==} + '@esbuild/darwin-x64@0.25.2': + resolution: {integrity: sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.21.5': - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.23.0': - resolution: {integrity: sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==} + '@esbuild/freebsd-arm64@0.25.2': + resolution: {integrity: sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.21.5': - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.23.0': - resolution: {integrity: sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==} + '@esbuild/freebsd-x64@0.25.2': + resolution: {integrity: sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.21.5': - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.23.0': - resolution: {integrity: sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==} + '@esbuild/linux-arm64@0.25.2': + resolution: {integrity: sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.21.5': - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.23.0': - resolution: {integrity: sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==} + '@esbuild/linux-arm@0.25.2': + resolution: {integrity: sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.23.0': - resolution: {integrity: sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==} + '@esbuild/linux-ia32@0.25.2': + resolution: {integrity: sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.21.5': - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.23.0': - resolution: {integrity: sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==} + '@esbuild/linux-loong64@0.25.2': + resolution: {integrity: sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.21.5': - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.23.0': - resolution: {integrity: sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==} + '@esbuild/linux-mips64el@0.25.2': + resolution: {integrity: sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.21.5': - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.23.0': - resolution: {integrity: sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==} + '@esbuild/linux-ppc64@0.25.2': + resolution: {integrity: sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.21.5': - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.23.0': - resolution: {integrity: sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==} + '@esbuild/linux-riscv64@0.25.2': + resolution: {integrity: sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.23.0': - resolution: {integrity: sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==} + '@esbuild/linux-s390x@0.25.2': + resolution: {integrity: sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.23.0': - resolution: {integrity: sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==} + '@esbuild/linux-x64@0.25.2': + resolution: {integrity: sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.21.5': - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/netbsd-arm64@0.25.2': + resolution: {integrity: sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==} + engines: {node: '>=18'} + cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.23.0': - resolution: {integrity: sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==} + '@esbuild/netbsd-x64@0.25.2': + resolution: {integrity: sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.23.0': - resolution: {integrity: sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==} + '@esbuild/openbsd-arm64@0.25.2': + resolution: {integrity: sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.23.0': - resolution: {integrity: sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==} + '@esbuild/openbsd-x64@0.25.2': + resolution: {integrity: sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.21.5': - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.23.0': - resolution: {integrity: sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==} + '@esbuild/sunos-x64@0.25.2': + resolution: {integrity: sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.21.5': - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.23.0': - resolution: {integrity: sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==} + '@esbuild/win32-arm64@0.25.2': + resolution: {integrity: sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.21.5': - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.23.0': - resolution: {integrity: sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==} + '@esbuild/win32-ia32@0.25.2': + resolution: {integrity: sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.21.5': - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.23.0': - resolution: {integrity: sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==} + '@esbuild/win32-x64@0.25.2': + resolution: {integrity: sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -1198,30 +1024,54 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.10.0': - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-community/regexpp@4.11.0': resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.17.1': - resolution: {integrity: sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==} + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.20.0': + resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@3.1.0': - resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} + '@eslint/config-helpers@0.2.1': + resolution: {integrity: sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.8.0': - resolution: {integrity: sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==} + '@eslint/core@0.12.0': + resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/object-schema@2.1.4': - resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + '@eslint/core@0.13.0': + resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.24.0': + resolution: {integrity: sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.8': + resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} @@ -1230,6 +1080,10 @@ packages: resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} engines: {node: '>=18.18'} + '@humanwhocodes/retry@0.4.2': + resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} + engines: {node: '>=18.18'} + '@idraw/types@0.4.0-beta.22': resolution: {integrity: sha512-4fc/H1Y9MqdQJT2anOM8jTGR4796g8rkWadppEkadctLe/0OZ6neGQdux3wl6Vbai39F1tW5GyErzks/xEqzLQ==} @@ -1311,170 +1165,117 @@ packages: resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jimp/bmp@0.22.12': - resolution: {integrity: sha512-aeI64HD0npropd+AR76MCcvvRaa+Qck6loCOS03CkkxGHN5/r336qTM5HPUdHKMDOGzqknuVPA8+kK1t03z12g==} - peerDependencies: - '@jimp/custom': '>=0.3.5' + '@jimp/core@1.6.0': + resolution: {integrity: sha512-EQQlKU3s9QfdJqiSrZWNTxBs3rKXgO2W+GxNXDtwchF3a4IqxDheFX1ti+Env9hdJXDiYLp2jTRjlxhPthsk8w==} + engines: {node: '>=18'} - '@jimp/core@0.22.12': - resolution: {integrity: sha512-l0RR0dOPyzMKfjUW1uebzueFEDtCOj9fN6pyTYWWOM/VS4BciXQ1VVrJs8pO3kycGYZxncRKhCoygbNr8eEZQA==} + '@jimp/diff@1.6.0': + resolution: {integrity: sha512-+yUAQ5gvRC5D1WHYxjBHZI7JBRusGGSLf8AmPRPCenTzh4PA+wZ1xv2+cYqQwTfQHU5tXYOhA0xDytfHUf1Zyw==} + engines: {node: '>=18'} - '@jimp/custom@0.22.12': - resolution: {integrity: sha512-xcmww1O/JFP2MrlGUMd3Q78S3Qu6W3mYTXYuIqFq33EorgYHV/HqymHfXy9GjiCJ7OI+7lWx6nYFOzU7M4rd1Q==} + '@jimp/file-ops@1.6.0': + resolution: {integrity: sha512-Dx/bVDmgnRe1AlniRpCKrGRm5YvGmUwbDzt+MAkgmLGf+jvBT75hmMEZ003n9HQI/aPnm/YKnXjg/hOpzNCpHQ==} + engines: {node: '>=18'} - '@jimp/gif@0.22.12': - resolution: {integrity: sha512-y6BFTJgch9mbor2H234VSjd9iwAhaNf/t3US5qpYIs0TSbAvM02Fbc28IaDETj9+4YB4676sz4RcN/zwhfu1pg==} - peerDependencies: - '@jimp/custom': '>=0.3.5' + '@jimp/js-bmp@1.6.0': + resolution: {integrity: sha512-FU6Q5PC/e3yzLyBDXupR3SnL3htU7S3KEs4e6rjDP6gNEOXRFsWs6YD3hXuXd50jd8ummy+q2WSwuGkr8wi+Gw==} + engines: {node: '>=18'} - '@jimp/jpeg@0.22.12': - resolution: {integrity: sha512-Rq26XC/uQWaQKyb/5lksCTCxXhtY01NJeBN+dQv5yNYedN0i7iYu+fXEoRsfaJ8xZzjoANH8sns7rVP4GE7d/Q==} - peerDependencies: - '@jimp/custom': '>=0.3.5' + '@jimp/js-gif@1.6.0': + resolution: {integrity: sha512-N9CZPHOrJTsAUoWkWZstLPpwT5AwJ0wge+47+ix3++SdSL/H2QzyMqxbcDYNFe4MoI5MIhATfb0/dl/wmX221g==} + engines: {node: '>=18'} - '@jimp/plugin-blit@0.22.12': - resolution: {integrity: sha512-xslz2ZoFZOPLY8EZ4dC29m168BtDx95D6K80TzgUi8gqT7LY6CsajWO0FAxDwHz6h0eomHMfyGX0stspBrTKnQ==} - peerDependencies: - '@jimp/custom': '>=0.3.5' + '@jimp/js-jpeg@1.6.0': + resolution: {integrity: sha512-6vgFDqeusblf5Pok6B2DUiMXplH8RhIKAryj1yn+007SIAQ0khM1Uptxmpku/0MfbClx2r7pnJv9gWpAEJdMVA==} + engines: {node: '>=18'} - '@jimp/plugin-blur@0.22.12': - resolution: {integrity: sha512-S0vJADTuh1Q9F+cXAwFPlrKWzDj2F9t/9JAbUvaaDuivpyWuImEKXVz5PUZw2NbpuSHjwssbTpOZ8F13iJX4uw==} - peerDependencies: - '@jimp/custom': '>=0.3.5' + '@jimp/js-png@1.6.0': + resolution: {integrity: sha512-AbQHScy3hDDgMRNfG0tPjL88AV6qKAILGReIa3ATpW5QFjBKpisvUaOqhzJ7Reic1oawx3Riyv152gaPfqsBVg==} + engines: {node: '>=18'} - '@jimp/plugin-circle@0.22.12': - resolution: {integrity: sha512-SWVXx1yiuj5jZtMijqUfvVOJBwOifFn0918ou4ftoHgegc5aHWW5dZbYPjvC9fLpvz7oSlptNl2Sxr1zwofjTg==} - peerDependencies: - '@jimp/custom': '>=0.3.5' + '@jimp/js-tiff@1.6.0': + resolution: {integrity: sha512-zhReR8/7KO+adijj3h0ZQUOiun3mXUv79zYEAKvE0O+rP7EhgtKvWJOZfRzdZSNv0Pu1rKtgM72qgtwe2tFvyw==} + engines: {node: '>=18'} - '@jimp/plugin-color@0.22.12': - resolution: {integrity: sha512-xImhTE5BpS8xa+mAN6j4sMRWaUgUDLoaGHhJhpC+r7SKKErYDR0WQV4yCE4gP+N0gozD0F3Ka1LUSaMXrn7ZIA==} - peerDependencies: - '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blit@1.6.0': + resolution: {integrity: sha512-M+uRWl1csi7qilnSK8uxK4RJMSuVeBiO1AY0+7APnfUbQNZm6hCe0CCFv1Iyw1D/Dhb8ph8fQgm5mwM0eSxgVA==} + engines: {node: '>=18'} - '@jimp/plugin-contain@0.22.12': - resolution: {integrity: sha512-Eo3DmfixJw3N79lWk8q/0SDYbqmKt1xSTJ69yy8XLYQj9svoBbyRpSnHR+n9hOw5pKXytHwUW6nU4u1wegHNoQ==} - peerDependencies: - '@jimp/custom': '>=0.3.5' - '@jimp/plugin-blit': '>=0.3.5' - '@jimp/plugin-resize': '>=0.3.5' - '@jimp/plugin-scale': '>=0.3.5' + '@jimp/plugin-blur@1.6.0': + resolution: {integrity: sha512-zrM7iic1OTwUCb0g/rN5y+UnmdEsT3IfuCXCJJNs8SZzP0MkZ1eTvuwK9ZidCuMo4+J3xkzCidRwYXB5CyGZTw==} + engines: {node: '>=18'} - '@jimp/plugin-cover@0.22.12': - resolution: {integrity: sha512-z0w/1xH/v/knZkpTNx+E8a7fnasQ2wHG5ze6y5oL2dhH1UufNua8gLQXlv8/W56+4nJ1brhSd233HBJCo01BXA==} - peerDependencies: - '@jimp/custom': '>=0.3.5' - '@jimp/plugin-crop': '>=0.3.5' - '@jimp/plugin-resize': '>=0.3.5' - '@jimp/plugin-scale': '>=0.3.5' + '@jimp/plugin-circle@1.6.0': + resolution: {integrity: sha512-xt1Gp+LtdMKAXfDp3HNaG30SPZW6AQ7dtAtTnoRKorRi+5yCJjKqXRgkewS5bvj8DEh87Ko1ydJfzqS3P2tdWw==} + engines: {node: '>=18'} - '@jimp/plugin-crop@0.22.12': - resolution: {integrity: sha512-FNuUN0OVzRCozx8XSgP9MyLGMxNHHJMFt+LJuFjn1mu3k0VQxrzqbN06yIl46TVejhyAhcq5gLzqmSCHvlcBVw==} - peerDependencies: - '@jimp/custom': '>=0.3.5' + '@jimp/plugin-color@1.6.0': + resolution: {integrity: sha512-J5q8IVCpkBsxIXM+45XOXTrsyfblyMZg3a9eAo0P7VPH4+CrvyNQwaYatbAIamSIN1YzxmO3DkIZXzRjFSz1SA==} + engines: {node: '>=18'} - '@jimp/plugin-displace@0.22.12': - resolution: {integrity: sha512-qpRM8JRicxfK6aPPqKZA6+GzBwUIitiHaZw0QrJ64Ygd3+AsTc7BXr+37k2x7QcyCvmKXY4haUrSIsBug4S3CA==} - peerDependencies: - '@jimp/custom': '>=0.3.5' + '@jimp/plugin-contain@1.6.0': + resolution: {integrity: sha512-oN/n+Vdq/Qg9bB4yOBOxtY9IPAtEfES8J1n9Ddx+XhGBYT1/QTU/JYkGaAkIGoPnyYvmLEDqMz2SGihqlpqfzQ==} + engines: {node: '>=18'} - '@jimp/plugin-dither@0.22.12': - resolution: {integrity: sha512-jYgGdSdSKl1UUEanX8A85v4+QUm+PE8vHFwlamaKk89s+PXQe7eVE3eNeSZX4inCq63EHL7cX580dMqkoC3ZLw==} - peerDependencies: - '@jimp/custom': '>=0.3.5' + '@jimp/plugin-cover@1.6.0': + resolution: {integrity: sha512-Iow0h6yqSC269YUJ8HC3Q/MpCi2V55sMlbkkTTx4zPvd8mWZlC0ykrNDeAy9IJegrQ7v5E99rJwmQu25lygKLA==} + engines: {node: '>=18'} - '@jimp/plugin-fisheye@0.22.12': - resolution: {integrity: sha512-LGuUTsFg+fOp6KBKrmLkX4LfyCy8IIsROwoUvsUPKzutSqMJnsm3JGDW2eOmWIS/jJpPaeaishjlxvczjgII+Q==} - peerDependencies: - '@jimp/custom': '>=0.3.5' + '@jimp/plugin-crop@1.6.0': + resolution: {integrity: sha512-KqZkEhvs+21USdySCUDI+GFa393eDIzbi1smBqkUPTE+pRwSWMAf01D5OC3ZWB+xZsNla93BDS9iCkLHA8wang==} + engines: {node: '>=18'} - '@jimp/plugin-flip@0.22.12': - resolution: {integrity: sha512-m251Rop7GN8W0Yo/rF9LWk6kNclngyjIJs/VXHToGQ6EGveOSTSQaX2Isi9f9lCDLxt+inBIb7nlaLLxnvHX8Q==} - peerDependencies: - '@jimp/custom': '>=0.3.5' - '@jimp/plugin-rotate': '>=0.3.5' + '@jimp/plugin-displace@1.6.0': + resolution: {integrity: sha512-4Y10X9qwr5F+Bo5ME356XSACEF55485j5nGdiyJ9hYzjQP9nGgxNJaZ4SAOqpd+k5sFaIeD7SQ0Occ26uIng5Q==} + engines: {node: '>=18'} - '@jimp/plugin-gaussian@0.22.12': - resolution: {integrity: sha512-sBfbzoOmJ6FczfG2PquiK84NtVGeScw97JsCC3rpQv1PHVWyW+uqWFF53+n3c8Y0P2HWlUjflEla2h/vWShvhg==} - peerDependencies: - '@jimp/custom': '>=0.3.5' + '@jimp/plugin-dither@1.6.0': + resolution: {integrity: sha512-600d1RxY0pKwgyU0tgMahLNKsqEcxGdbgXadCiVCoGd6V6glyCvkNrnnwC0n5aJ56Htkj88PToSdF88tNVZEEQ==} + engines: {node: '>=18'} - '@jimp/plugin-invert@0.22.12': - resolution: {integrity: sha512-N+6rwxdB+7OCR6PYijaA/iizXXodpxOGvT/smd/lxeXsZ/empHmFFFJ/FaXcYh19Tm04dGDaXcNF/dN5nm6+xQ==} - peerDependencies: - '@jimp/custom': '>=0.3.5' + '@jimp/plugin-fisheye@1.6.0': + resolution: {integrity: sha512-E5QHKWSCBFtpgZarlmN3Q6+rTQxjirFqo44ohoTjzYVrDI6B6beXNnPIThJgPr0Y9GwfzgyarKvQuQuqCnnfbA==} + engines: {node: '>=18'} - '@jimp/plugin-mask@0.22.12': - resolution: {integrity: sha512-4AWZg+DomtpUA099jRV8IEZUfn1wLv6+nem4NRJC7L/82vxzLCgXKTxvNvBcNmJjT9yS1LAAmiJGdWKXG63/NA==} - peerDependencies: - '@jimp/custom': '>=0.3.5' + '@jimp/plugin-flip@1.6.0': + resolution: {integrity: sha512-/+rJVDuBIVOgwoyVkBjUFHtP+wmW0r+r5OQ2GpatQofToPVbJw1DdYWXlwviSx7hvixTWLKVgRWQ5Dw862emDg==} + engines: {node: '>=18'} - '@jimp/plugin-normalize@0.22.12': - resolution: {integrity: sha512-0So0rexQivnWgnhacX4cfkM2223YdExnJTTy6d06WbkfZk5alHUx8MM3yEzwoCN0ErO7oyqEWRnEkGC+As1FtA==} - peerDependencies: - '@jimp/custom': '>=0.3.5' + '@jimp/plugin-hash@1.6.0': + resolution: {integrity: sha512-wWzl0kTpDJgYVbZdajTf+4NBSKvmI3bRI8q6EH9CVeIHps9VWVsUvEyb7rpbcwVLWYuzDtP2R0lTT6WeBNQH9Q==} + engines: {node: '>=18'} - '@jimp/plugin-print@0.22.12': - resolution: {integrity: sha512-c7TnhHlxm87DJeSnwr/XOLjJU/whoiKYY7r21SbuJ5nuH+7a78EW1teOaj5gEr2wYEd7QtkFqGlmyGXY/YclyQ==} - peerDependencies: - '@jimp/custom': '>=0.3.5' - '@jimp/plugin-blit': '>=0.3.5' + '@jimp/plugin-mask@1.6.0': + resolution: {integrity: sha512-Cwy7ExSJMZszvkad8NV8o/Z92X2kFUFM8mcDAhNVxU0Q6tA0op2UKRJY51eoK8r6eds/qak3FQkXakvNabdLnA==} + engines: {node: '>=18'} - '@jimp/plugin-resize@0.22.12': - resolution: {integrity: sha512-3NyTPlPbTnGKDIbaBgQ3HbE6wXbAlFfxHVERmrbqAi8R3r6fQPxpCauA8UVDnieg5eo04D0T8nnnNIX//i/sXg==} - peerDependencies: - '@jimp/custom': '>=0.3.5' + '@jimp/plugin-print@1.6.0': + resolution: {integrity: sha512-zarTIJi8fjoGMSI/M3Xh5yY9T65p03XJmPsuNet19K/Q7mwRU6EV2pfj+28++2PV2NJ+htDF5uecAlnGyxFN2A==} + engines: {node: '>=18'} - '@jimp/plugin-rotate@0.22.12': - resolution: {integrity: sha512-9YNEt7BPAFfTls2FGfKBVgwwLUuKqy+E8bDGGEsOqHtbuhbshVGxN2WMZaD4gh5IDWvR+emmmPPWGgaYNYt1gA==} - peerDependencies: - '@jimp/custom': '>=0.3.5' - '@jimp/plugin-blit': '>=0.3.5' - '@jimp/plugin-crop': '>=0.3.5' - '@jimp/plugin-resize': '>=0.3.5' + '@jimp/plugin-quantize@1.6.0': + resolution: {integrity: sha512-EmzZ/s9StYQwbpG6rUGBCisc3f64JIhSH+ncTJd+iFGtGo0YvSeMdAd+zqgiHpfZoOL54dNavZNjF4otK+mvlg==} + engines: {node: '>=18'} - '@jimp/plugin-scale@0.22.12': - resolution: {integrity: sha512-dghs92qM6MhHj0HrV2qAwKPMklQtjNpoYgAB94ysYpsXslhRTiPisueSIELRwZGEr0J0VUxpUY7HgJwlSIgGZw==} - peerDependencies: - '@jimp/custom': '>=0.3.5' - '@jimp/plugin-resize': '>=0.3.5' + '@jimp/plugin-resize@1.6.0': + resolution: {integrity: sha512-uSUD1mqXN9i1SGSz5ov3keRZ7S9L32/mAQG08wUwZiEi5FpbV0K8A8l1zkazAIZi9IJzLlTauRNU41Mi8IF9fA==} + engines: {node: '>=18'} - '@jimp/plugin-shadow@0.22.12': - resolution: {integrity: sha512-FX8mTJuCt7/3zXVoeD/qHlm4YH2bVqBuWQHXSuBK054e7wFRnRnbSLPUqAwSeYP3lWqpuQzJtgiiBxV3+WWwTg==} - peerDependencies: - '@jimp/custom': '>=0.3.5' - '@jimp/plugin-blur': '>=0.3.5' - '@jimp/plugin-resize': '>=0.3.5' + '@jimp/plugin-rotate@1.6.0': + resolution: {integrity: sha512-JagdjBLnUZGSG4xjCLkIpQOZZ3Mjbg8aGCCi4G69qR+OjNpOeGI7N2EQlfK/WE8BEHOW5vdjSyglNqcYbQBWRw==} + engines: {node: '>=18'} - '@jimp/plugin-threshold@0.22.12': - resolution: {integrity: sha512-4x5GrQr1a/9L0paBC/MZZJjjgjxLYrqSmWd+e+QfAEPvmRxdRoQ5uKEuNgXnm9/weHQBTnQBQsOY2iFja+XGAw==} - peerDependencies: - '@jimp/custom': '>=0.3.5' - '@jimp/plugin-color': '>=0.8.0' - '@jimp/plugin-resize': '>=0.8.0' + '@jimp/plugin-threshold@1.6.0': + resolution: {integrity: sha512-M59m5dzLoHOVWdM41O8z9SyySzcDn43xHseOH0HavjsfQsT56GGCC4QzU1banJidbUrePhzoEdS42uFE8Fei8w==} + engines: {node: '>=18'} - '@jimp/plugins@0.22.12': - resolution: {integrity: sha512-yBJ8vQrDkBbTgQZLty9k4+KtUQdRjsIDJSPjuI21YdVeqZxYywifHl4/XWILoTZsjTUASQcGoH0TuC0N7xm3ww==} - peerDependencies: - '@jimp/custom': '>=0.3.5' + '@jimp/types@1.6.0': + resolution: {integrity: sha512-7UfRsiKo5GZTAATxm2qQ7jqmUXP0DxTArztllTcYdyw6Xi5oT4RaoXynVtCD4UyLK5gJgkZJcwonoijrhYFKfg==} + engines: {node: '>=18'} - '@jimp/png@0.22.12': - resolution: {integrity: sha512-Mrp6dr3UTn+aLK8ty/dSKELz+Otdz1v4aAXzV5q53UDD2rbB5joKVJ/ChY310B+eRzNxIovbUF1KVrUsYdE8Hg==} - peerDependencies: - '@jimp/custom': '>=0.3.5' - - '@jimp/tiff@0.22.12': - resolution: {integrity: sha512-E1LtMh4RyJsoCAfAkBRVSYyZDTtLq9p9LUiiYP0vPtXyxX4BiYBUYihTLSBlCQg5nF2e4OpQg7SPrLdJ66u7jg==} - peerDependencies: - '@jimp/custom': '>=0.3.5' - - '@jimp/types@0.22.12': - resolution: {integrity: sha512-wwKYzRdElE1MBXFREvCto5s699izFHNVvALUv79GXNbsOVqlwlOxlWJ8DuyOGIXoLP4JW/m30YyuTtfUJgMRMA==} - peerDependencies: - '@jimp/custom': '>=0.3.5' - - '@jimp/utils@0.22.12': - resolution: {integrity: sha512-yJ5cWUknGnilBq97ZXOyOS0HhsHOyAyjHwYfHxGbSyMTohgQI6sVyE8KPgDwH8HHW/nMKXk8TrSwAE71zt716Q==} + '@jimp/utils@1.6.0': + resolution: {integrity: sha512-gqFTGEosKbOkYF/WFj26jMHOI5OH2jeP1MmC/zbK6BF6VJBf8rIC5898dPfSzZEbSA0wbbV5slbntWVc5PKLFA==} + engines: {node: '>=18'} '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} @@ -1494,6 +1295,9 @@ packages: '@jridgewell/sourcemap-codec@1.4.15': resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} @@ -1516,8 +1320,8 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@puppeteer/browsers@2.2.3': - resolution: {integrity: sha512-bJ0UBsk0ESOs6RFcLXOt99a3yTDcOKlzfjad+rhFwdaG1Lu/Wzq58GHYCDTlZ9z6mldf4g+NTb+TXEfe0PpnsQ==} + '@puppeteer/browsers@2.10.0': + resolution: {integrity: sha512-HdHF4rny4JCvIcm7V1dpvpctIGqM3/Me255CB44vW7hDG1zYMmcBMjpNqZEDxdCfXGLkx5kP0+Jz5DUS+ukqtA==} engines: {node: '>=18'} hasBin: true @@ -1539,92 +1343,103 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.20.0': - resolution: {integrity: sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==} + '@rollup/rollup-android-arm-eabi@4.40.0': + resolution: {integrity: sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.20.0': - resolution: {integrity: sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==} + '@rollup/rollup-android-arm64@4.40.0': + resolution: {integrity: sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.20.0': - resolution: {integrity: sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==} + '@rollup/rollup-darwin-arm64@4.40.0': + resolution: {integrity: sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.20.0': - resolution: {integrity: sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==} + '@rollup/rollup-darwin-x64@4.40.0': + resolution: {integrity: sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==} cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.20.0': - resolution: {integrity: sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==} + '@rollup/rollup-freebsd-arm64@4.40.0': + resolution: {integrity: sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.40.0': + resolution: {integrity: sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.40.0': + resolution: {integrity: sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==} cpu: [arm] os: [linux] - libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.20.0': - resolution: {integrity: sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==} + '@rollup/rollup-linux-arm-musleabihf@4.40.0': + resolution: {integrity: sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==} cpu: [arm] os: [linux] - libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.20.0': - resolution: {integrity: sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==} + '@rollup/rollup-linux-arm64-gnu@4.40.0': + resolution: {integrity: sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==} cpu: [arm64] os: [linux] - libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.20.0': - resolution: {integrity: sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==} + '@rollup/rollup-linux-arm64-musl@4.40.0': + resolution: {integrity: sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==} cpu: [arm64] os: [linux] - libc: [musl] - '@rollup/rollup-linux-powerpc64le-gnu@4.20.0': - resolution: {integrity: sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==} + '@rollup/rollup-linux-loongarch64-gnu@4.40.0': + resolution: {integrity: sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.40.0': + resolution: {integrity: sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==} cpu: [ppc64] os: [linux] - libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.20.0': - resolution: {integrity: sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==} + '@rollup/rollup-linux-riscv64-gnu@4.40.0': + resolution: {integrity: sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==} cpu: [riscv64] os: [linux] - libc: [glibc] - '@rollup/rollup-linux-s390x-gnu@4.20.0': - resolution: {integrity: sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==} + '@rollup/rollup-linux-riscv64-musl@4.40.0': + resolution: {integrity: sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.40.0': + resolution: {integrity: sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==} cpu: [s390x] os: [linux] - libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.20.0': - resolution: {integrity: sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==} + '@rollup/rollup-linux-x64-gnu@4.40.0': + resolution: {integrity: sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==} cpu: [x64] os: [linux] - libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.20.0': - resolution: {integrity: sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==} + '@rollup/rollup-linux-x64-musl@4.40.0': + resolution: {integrity: sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==} cpu: [x64] os: [linux] - libc: [musl] - '@rollup/rollup-win32-arm64-msvc@4.20.0': - resolution: {integrity: sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==} + '@rollup/rollup-win32-arm64-msvc@4.40.0': + resolution: {integrity: sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.20.0': - resolution: {integrity: sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==} + '@rollup/rollup-win32-ia32-msvc@4.40.0': + resolution: {integrity: sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.20.0': - resolution: {integrity: sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==} + '@rollup/rollup-win32-x64-msvc@4.40.0': + resolution: {integrity: sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==} cpu: [x64] os: [win32] @@ -1654,8 +1469,8 @@ packages: '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - '@ts-morph/common@0.24.0': - resolution: {integrity: sha512-c1xMmNHWpNselmpIqursHeOHHBTIsJLbB+NuovbTTRCNiTLEr/U9dbJ8qy0jd/O2x5pc3seWuOUN5R2IoOTp8A==} + '@ts-morph/common@0.26.1': + resolution: {integrity: sha512-Sn28TGl/4cFpcM+jwsH1wLncYq3FtN/BIpem+HOygfBWPT5pAeS5dB4VFVzV8FbnOKHpDLZmvAl4AjPEev5idA==} '@tsconfig/node10@1.0.11': resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} @@ -1699,6 +1514,9 @@ packages: '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/express-serve-static-core@4.19.0': resolution: {integrity: sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==} @@ -1726,12 +1544,15 @@ packages: '@types/istanbul-reports@3.0.4': resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - '@types/jest@29.5.12': - resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} + '@types/jest@29.5.14': + resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} '@types/jsdom@20.0.1': resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/keygrip@1.0.6': resolution: {integrity: sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==} @@ -1750,8 +1571,8 @@ packages: '@types/node@16.9.1': resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==} - '@types/node@22.1.0': - resolution: {integrity: sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw==} + '@types/node@22.14.1': + resolution: {integrity: sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==} '@types/pako@2.0.3': resolution: {integrity: sha512-bq0hMV9opAcrmE0Byyo0fY3Ew4tgOevJmQ9grUhpXQhYfyLJ1Kqg3P33JT5fdbT2AjeAjR51zqqVjAL/HMkx7Q==} @@ -1786,68 +1607,58 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.0.0': - resolution: {integrity: sha512-STIZdwEQRXAHvNUS6ILDf5z3u95Gc8jzywunxSNqX00OooIemaaNIA0vEgynJlycL5AjabYLLrIyHd4iazyvtg==} + '@typescript-eslint/eslint-plugin@8.29.1': + resolution: {integrity: sha512-ba0rr4Wfvg23vERs3eB+P3lfj2E+2g3lhWcCVukUuhtcdUx5lSIFZlGFEBHKr+3zizDa/TvZTptdNHVZWAkSBg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.0.0': - resolution: {integrity: sha512-pS1hdZ+vnrpDIxuFXYQpLTILglTjSYJ9MbetZctrUawogUsPdz31DIIRZ9+rab0LhYNTsk88w4fIzVheiTbWOQ==} + '@typescript-eslint/parser@8.29.1': + resolution: {integrity: sha512-zczrHVEqEaTwh12gWBIJWj8nx+ayDcCJs06yoNMY0kwjMWDM6+kppljY+BxWI06d2Ja+h4+WdufDcwMnnMEWmg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/scope-manager@8.0.0': - resolution: {integrity: sha512-V0aa9Csx/ZWWv2IPgTfY7T4agYwJyILESu/PVqFtTFz9RIS823mAze+NbnBI8xiwdX3iqeQbcTYlvB04G9wyQw==} + '@typescript-eslint/scope-manager@8.29.1': + resolution: {integrity: sha512-2nggXGX5F3YrsGN08pw4XpMLO1Rgtnn4AzTegC2MDesv6q3QaTU5yU7IbS1tf1IwCR0Hv/1EFygLn9ms6LIpDA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.0.0': - resolution: {integrity: sha512-mJAFP2mZLTBwAn5WI4PMakpywfWFH5nQZezUQdSKV23Pqo6o9iShQg1hP2+0hJJXP2LnZkWPphdIq4juYYwCeg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/types@8.0.0': - resolution: {integrity: sha512-wgdSGs9BTMWQ7ooeHtu5quddKKs5Z5dS+fHLbrQI+ID0XWJLODGMHRfhwImiHoeO2S5Wir2yXuadJN6/l4JRxw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@8.0.0': - resolution: {integrity: sha512-5b97WpKMX+Y43YKi4zVcCVLtK5F98dFls3Oxui8LbnmRsseKenbbDinmvxrWegKDMmlkIq/XHuyy0UGLtpCDKg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/utils@8.0.0': - resolution: {integrity: sha512-k/oS/A/3QeGLRvOWCg6/9rATJL5rec7/5s1YmdS0ZU6LHveJyGFwBvLhSRBv6i9xaj7etmosp+l+ViN1I9Aj/Q==} + '@typescript-eslint/type-utils@8.29.1': + resolution: {integrity: sha512-DkDUSDwZVCYN71xA4wzySqqcZsHKic53A4BLqmrWFFpOpNSoxX233lwGu/2135ymTCR04PoKiEEEvN1gFYg4Tw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/visitor-keys@8.0.0': - resolution: {integrity: sha512-oN0K4nkHuOyF3PVMyETbpP5zp6wfyOvm7tWhTMfoqxSSsPmJIh6JNASuZDlODE8eE+0EB9uar+6+vxr9DBTYOA==} + '@typescript-eslint/types@8.29.1': + resolution: {integrity: sha512-VT7T1PuJF1hpYC3AGm2rCgJBjHL3nc+A/bhOp9sGMKfi5v0WufsX/sHCFBfNTx2F+zA6qBc/PD0/kLRLjdt8mQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@vitejs/plugin-react@4.3.1': - resolution: {integrity: sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==} + '@typescript-eslint/typescript-estree@8.29.1': + resolution: {integrity: sha512-l1enRoSaUkQxOQnbi0KPUtqeZkSiFlqrx9/3ns2rEDhGKfTa+88RmXqedC1zmVTOWrLc2e6DEJrTA51C9iLH5g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/utils@8.29.1': + resolution: {integrity: sha512-QAkFEbytSaB8wnmB+DflhUPz6CLbFWE2SnSCrRMEa+KnXIzDYbpsn++1HGvnfAsUY44doDXmvRkO5shlM/3UfA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/visitor-keys@8.29.1': + resolution: {integrity: sha512-RGLh5CRaUEf02viP5c1Vh1cMGffQscyHe7HPAzGpfmfflFg1wUz2rYxd+OZqwpeypYvZ8UxSxuIpF++fmOzEcg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@vitejs/plugin-react@4.3.4': + resolution: {integrity: sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - vite: ^4.2.0 || ^5.0.0 + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 abab@2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} @@ -1875,12 +1686,17 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} - agent-base@7.1.1: - resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} + agent-base@7.1.3: + resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} engines: {node: '>= 14'} ajv@6.12.6: @@ -1934,10 +1750,6 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - ast-types@0.13.4: resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} engines: {node: '>=4'} @@ -1948,6 +1760,10 @@ packages: asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + await-to-js@3.0.0: + resolution: {integrity: sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g==} + engines: {node: '>=6.0.0'} + b4a@1.6.6: resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} @@ -1970,8 +1786,8 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-corejs3@0.10.4: - resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} + babel-plugin-polyfill-corejs3@0.11.1: + resolution: {integrity: sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -1997,20 +1813,35 @@ packages: bare-events@2.2.2: resolution: {integrity: sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==} - bare-fs@2.3.0: - resolution: {integrity: sha512-TNFqa1B4N99pds2a5NYHR15o0ZpdNKbAeKTE/+G6ED/UeOavv8RY3dr/Fu99HW3zU3pXpo2kDNO8Sjsm2esfOw==} + bare-events@2.5.4: + resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==} - bare-os@2.3.0: - resolution: {integrity: sha512-oPb8oMM1xZbhRQBngTgpcQ5gXw6kjOaRsSWsIeNyRxGed2w/ARyP7ScBYpWR1qfX2E5rS3gBw6OWcSQo+s+kUg==} + bare-fs@4.1.2: + resolution: {integrity: sha512-8wSeOia5B7LwD4+h465y73KOdj5QHsbbuoUfPBi+pXgFJIPuG7SsiOdJuijWMyfid49eD+WivpfY7KT8gbAzBA==} + engines: {bare: '>=1.16.0'} + peerDependencies: + bare-buffer: '*' + peerDependenciesMeta: + bare-buffer: + optional: true - bare-path@2.1.2: - resolution: {integrity: sha512-o7KSt4prEphWUHa3QUwCxUI00R86VdjiuxmJK0iNVDHYPGo+HsDaVCnqCmPbf/MiW1ok8F4p3m8RTHlWk8K2ig==} + bare-os@3.6.1: + resolution: {integrity: sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==} + engines: {bare: '>=1.14.0'} - bare-stream@1.0.0: - resolution: {integrity: sha512-KhNUoDL40iP4gFaLSsoGE479t0jHijfYdIcxRn/XtezA2BaUD0NRf/JGRpsMq6dMNM+SrCrB0YSSo/5wBY4rOQ==} + bare-path@3.0.0: + resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==} - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + bare-stream@2.6.5: + resolution: {integrity: sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==} + peerDependencies: + bare-buffer: '*' + bare-events: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + bare-events: + optional: true basic-auth@2.0.1: resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} @@ -2020,8 +1851,8 @@ packages: resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} engines: {node: '>=10.0.0'} - bmp-js@0.1.0: - resolution: {integrity: sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==} + bmp-ts@1.0.9: + resolution: {integrity: sha512-cTEHk2jLrPyi+12M3dhpEbnnPOsaZuq7C45ylbbQIiWgDFZq4UVYPEY5mlqjvsj/6gJv9qX5sa+ebDzLXT28Vw==} brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -2033,13 +1864,8 @@ packages: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} - browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - browserslist@4.23.3: - resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} + browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -2049,16 +1875,9 @@ packages: buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - buffer-equal@0.0.1: - resolution: {integrity: sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==} - engines: {node: '>=0.4.0'} - buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} @@ -2079,11 +1898,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001620: - resolution: {integrity: sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew==} - - caniuse-lite@1.0.30001647: - resolution: {integrity: sha512-n83xdNiyeNcHpzWY+1aFbqCK7LuLfBricc4+alSQL2Xb6OR3XpnQAmlDG+pQcdTfiHRuLcQ96VOfrPSGiNJYSg==} + caniuse-lite@1.0.30001713: + resolution: {integrity: sha512-wCIWIg+A4Xr7NfhTuHdX+/FKh3+Op3LBbSp2N5Pfx6T/LhdQy3GTyoTg48BReaW/MyMNZAkTadsBtai3ldWK0Q==} chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -2093,16 +1909,16 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} - chromium-bidi@0.5.19: - resolution: {integrity: sha512-UA6zL77b7RYCjJkZBsZ0wlvCTD+jTjllZ8f6wdO4buevXgTZYjV+XLB9CiEa2OuuTGGTLnI7eN9I60YxuALGQg==} + chromium-bidi@3.0.0: + resolution: {integrity: sha512-ZOGRDAhBMX1uxL2Cm2TDuhImbrsEz5A/tTcVU6RpXEWaTNUNwsHW6njUXizh51Ir6iqHbKAfhA2XK33uBcLo5A==} peerDependencies: devtools-protocol: '*' @@ -2121,8 +1937,8 @@ packages: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - code-block-writer@13.0.1: - resolution: {integrity: sha512-c5or4P6erEA69TxaxTNcHUNcIn+oyxSRTOWV+pSYF+z4epXqNvwvJ70XPGjPNgue83oAFAPBRQYwpAJ/Hpe/Sg==} + code-block-writer@13.0.3: + resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==} collect-v8-coverage@1.0.2: resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} @@ -2160,8 +1976,8 @@ packages: copy-anything@2.0.6: resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} - core-js-compat@3.37.1: - resolution: {integrity: sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==} + core-js-compat@3.41.0: + resolution: {integrity: sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==} corser@2.0.1: resolution: {integrity: sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==} @@ -2188,6 +2004,10 @@ packages: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + cssfontparser@1.2.1: resolution: {integrity: sha512-6tun4LoZnj7VN6YeegOVb67KBX/7JJsqvj+pv3ZA7F878/eN33AbGa5b/S/wXxS/tcp8nc40xRUrsPlxIyNUPg==} @@ -2226,6 +2046,15 @@ packages: supports-color: optional: true + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} @@ -2260,8 +2089,8 @@ packages: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} - devtools-protocol@0.0.1286932: - resolution: {integrity: sha512-wu58HMQll9voDjR4NlPyoDEw1syfzaBNHymMMZ/QOXiHRNluOnDgu9hp1yHOKYoMlxCh4lSSiugLITe6Fvu1eA==} + devtools-protocol@0.0.1425554: + resolution: {integrity: sha512-uRfxR6Nlzdzt0ihVIkV+sLztKgs7rgquY/Mhcv1YNCWDh5IZgl5mnn2aeEnW5stYTE0wwiF4RYVz8eMEpV1SEw==} diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} @@ -2271,30 +2100,20 @@ packages: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - dom-walk@0.1.2: - resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} - domexception@4.0.0: resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} engines: {node: '>=12'} deprecated: Use your platform's native DOMException instead - dotenv@16.4.5: - resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + dotenv@16.5.0: + resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} engines: {node: '>=12'} eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.4.774: - resolution: {integrity: sha512-132O1XCd7zcTkzS3FgkAzKmnBuNJjK8WjcTtNuoylj7MYbqw5eXehjQ5OK91g0zm7OTKIPeaAG4CPoRfD9M1Mg==} - - electron-to-chromium@1.5.4: - resolution: {integrity: sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==} + electron-to-chromium@1.5.136: + resolution: {integrity: sha512-kL4+wUTD7RSA5FHx5YwWtjDnEEkIIikFgWHR4P6fqjw1PPLlqYkxeOb++wAauAssat0YClCy8Y3C5SxgSkjibQ==} emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -2336,16 +2155,11 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-module-lexer@1.5.3: - resolution: {integrity: sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==} + es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} - esbuild@0.21.5: - resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} - engines: {node: '>=12'} - hasBin: true - - esbuild@0.23.0: - resolution: {integrity: sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==} + esbuild@0.25.2: + resolution: {integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==} engines: {node: '>=18'} hasBin: true @@ -2353,6 +2167,10 @@ packages: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} @@ -2370,25 +2188,30 @@ packages: engines: {node: '>=6.0'} hasBin: true - eslint-scope@8.0.2: - resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} + eslint-scope@8.3.0: + resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@4.0.0: - resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.8.0: - resolution: {integrity: sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A==} + eslint@9.24.0: + resolution: {integrity: sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true - espree@10.1.0: - resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} esprima@4.0.1: @@ -2422,8 +2245,8 @@ packages: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} - execa@9.3.0: - resolution: {integrity: sha512-l6JFbqnHEadBoVAVpN5dl2yCyfX28WoBAGaoQcNmLLSedOxTxcn2Qa83s8I/PA5i56vWru2OHOtrwF7Om2vqlg==} + execa@9.5.2: + resolution: {integrity: sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==} engines: {node: ^18.19.0 || >=20.5.0} exif-parser@0.1.12: @@ -2458,9 +2281,6 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-url-parser@1.1.3: - resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} - fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} @@ -2518,8 +2338,8 @@ packages: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} - fs-extra@11.2.0: - resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + fs-extra@11.3.0: + resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} engines: {node: '>=14.14'} fs.realpath@1.0.0: @@ -2561,8 +2381,8 @@ packages: resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} engines: {node: '>=18'} - get-tsconfig@4.7.5: - resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} + get-tsconfig@4.10.0: + resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} get-uri@6.0.3: resolution: {integrity: sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==} @@ -2579,8 +2399,8 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob@11.0.0: - resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} + glob@11.0.1: + resolution: {integrity: sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==} engines: {node: 20 || >=22} hasBin: true @@ -2588,9 +2408,6 @@ packages: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported - global@4.4.0: - resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} - globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -2599,10 +2416,6 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} @@ -2667,20 +2480,20 @@ packages: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} - https-proxy-agent@7.0.4: - resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} - human-signals@7.0.0: - resolution: {integrity: sha512-74kytxOUSvNbjrT9KisAbaTZ/eJwD/LrbM/kh5j0IhPuJzwuA19dWvniFGwBzN9rVjg+O/e+F310PjObDXS+9Q==} + human-signals@8.0.1: + resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} engines: {node: '>=18.18.0'} - husky@9.1.4: - resolution: {integrity: sha512-bho94YyReb4JV7LYWRWxZ/xr6TtOTt8cMfmQ39MQYJ7f/YE268s3GdghGwi+y4zAeqewE5zYLvuhV0M0ijsDEA==} + husky@9.1.7: + resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} engines: {node: '>=18'} hasBin: true @@ -2740,9 +2553,6 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-function@1.0.2: - resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==} - is-generator-fn@2.1.0: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} engines: {node: '>=6'} @@ -2755,10 +2565,6 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} @@ -2784,9 +2590,6 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - isomorphic-fetch@3.0.0: - resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==} - istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} @@ -2956,8 +2759,9 @@ packages: node-notifier: optional: true - jimp@0.22.12: - resolution: {integrity: sha512-R5jZaYDnfkxKJy1dwLpj/7cvyjxiclxU3F4TrI/J4j2rS0niq6YDUMoPn5hs8GDpO+OZGo7Ky057CRtWesyhfg==} + jimp@1.6.0: + resolution: {integrity: sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg==} + engines: {node: '>=18'} jpeg-js@0.4.4: resolution: {integrity: sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==} @@ -2994,6 +2798,16 @@ packages: engines: {node: '>=4'} hasBin: true + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -3028,9 +2842,9 @@ packages: koa-compose@4.1.0: resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} - less@4.2.0: - resolution: {integrity: sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==} - engines: {node: '>=6'} + less@4.3.0: + resolution: {integrity: sha512-X9RyH9fvemArzfdP8Pi3irr7lor2Ok4rOttDXBhlwDg+wKQsXOXgHWduAJE1EsF7JJx0w0bcO6BC6tCKKYnXKA==} + engines: {node: '>=14'} hasBin: true leven@3.1.0: @@ -3044,9 +2858,6 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - load-bmfont@1.4.1: - resolution: {integrity: sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==} - locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -3071,16 +2882,12 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - lru-cache@7.18.3: resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} engines: {node: '>=12'} - magic-string@0.30.10: - resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} @@ -3131,13 +2938,15 @@ packages: engines: {node: '>=4'} hasBin: true + mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - min-document@2.19.0: - resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} - minimatch@10.0.1: resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} engines: {node: 20 || >=22} @@ -3163,11 +2972,6 @@ packages: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true - mkdirp@3.0.1: - resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} - engines: {node: '>=10'} - hasBin: true - moo-color@1.0.3: resolution: {integrity: sha512-i/+ZKXMDf6aqYtBhuOcej71YSlbjT3wCO/4H1j8rPvxDJEifdwgg5MaFyu6iYAT8GBZJg2z0dkgK4YMzvURALQ==} @@ -3177,8 +2981,8 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -3194,23 +2998,11 @@ packages: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - - node-releases@2.0.18: - resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} @@ -3220,9 +3012,9 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + npm-run-path@6.0.0: + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + engines: {node: '>=18'} nwsapi@2.2.10: resolution: {integrity: sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==} @@ -3268,8 +3060,8 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - pac-proxy-agent@7.0.1: - resolution: {integrity: sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==} + pac-proxy-agent@7.2.0: + resolution: {integrity: sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==} engines: {node: '>= 14'} pac-resolver@7.0.1: @@ -3298,9 +3090,6 @@ packages: parse-bmfont-xml@1.1.6: resolution: {integrity: sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==} - parse-headers@2.0.5: - resolution: {integrity: sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==} - parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -3345,12 +3134,11 @@ packages: resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} engines: {node: 20 || >=22} - path-to-regexp@2.2.1: - resolution: {integrity: sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==} + path-to-regexp@3.3.0: + resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==} - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} peek-readable@4.1.0: resolution: {integrity: sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==} @@ -3359,17 +3147,20 @@ packages: pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - phin@2.9.3: - resolution: {integrity: sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - picocolors@1.0.1: resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} @@ -3378,22 +3169,18 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} - pixelmatch@4.0.2: - resolution: {integrity: sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==} + pixelmatch@5.3.0: + resolution: {integrity: sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==} hasBin: true - pixelmatch@6.0.0: - resolution: {integrity: sha512-FYpL4XiIWakTnIqLqvt3uN4L9B3TsuHIvhLILzTiJZMJUsGvmKNeL4H3b6I99LRyerK9W4IuOXw+N28AtRgK2g==} + pixelmatch@7.1.0: + resolution: {integrity: sha512-1wrVzJ2STrpmONHKBy228LM1b84msXDUoAzVEl0R8Mz4Ce6EPr+IVtxm8+yvrqLYMHswREkjYFaMxnyGnaY3Ng==} hasBin: true pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} - pngjs@3.4.0: - resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} - engines: {node: '>=4.0.0'} - pngjs@6.0.0: resolution: {integrity: sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==} engines: {node: '>=12.13.0'} @@ -3406,8 +3193,8 @@ packages: resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} engines: {node: '>= 0.12.0'} - postcss@8.4.40: - resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -3422,10 +3209,6 @@ packages: resolution: {integrity: sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==} engines: {node: '>=18'} - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} @@ -3434,8 +3217,8 @@ packages: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} - proxy-agent@6.4.0: - resolution: {integrity: sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==} + proxy-agent@6.5.0: + resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==} engines: {node: '>= 14'} proxy-from-env@1.1.0: @@ -3450,19 +3233,16 @@ packages: pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - punycode@1.4.1: - resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - puppeteer-core@22.9.0: - resolution: {integrity: sha512-Q2SYVZ1SIE7jCd/Pp+1/mNLFtdJfGvAF+CqOTDG8HcCNCiBvoXfopXfOfMHQ/FueXhGfJW/I6DartWv6QzpNGg==} + puppeteer-core@24.6.1: + resolution: {integrity: sha512-sMCxsY+OPWO2fecBrhIeCeJbWWXJ6UaN997sTid6whY0YT9XM0RnxEwLeUibluIS5/fRmuxe1efjb5RMBsky7g==} engines: {node: '>=18'} - puppeteer@22.9.0: - resolution: {integrity: sha512-yNux2cm6Sfik4lNLNjJ25Cdn9spJRbMXxl1YZtVZCEhEeej1sFlCvZ/Cr64LhgyJOuvz3iq2uk+RLFpQpGwrjw==} + puppeteer@24.6.1: + resolution: {integrity: sha512-/4ocGfu8LNvDbWUqJZV2VmwEWpbOdJa69y2Jivd213tV0ekAtUh/bgT1hhW63SDN/CtrEucOPwoomZ+9M+eBEg==} engines: {node: '>=18'} hasBin: true @@ -3505,12 +3285,13 @@ packages: resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} engines: {node: '>=4'} + regenerate-unicode-properties@10.2.0: + resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} + engines: {node: '>=4'} + regenerate@1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} @@ -3521,6 +3302,17 @@ packages: resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} engines: {node: '>=4'} + regexpu-core@6.2.0: + resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} + engines: {node: '>=4'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + + regjsparser@0.12.0: + resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} + hasBin: true + regjsparser@0.9.1: resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} hasBin: true @@ -3559,22 +3351,22 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rollup-plugin-dts@6.1.1: - resolution: {integrity: sha512-aSHRcJ6KG2IHIioYlvAOcEq6U99sVtqDDKVhnwt70rW6tsz3tv5OSjEiWcgzfsHdLyGXZ/3b/7b/+Za3Y6r1XA==} + rollup-plugin-dts@6.2.1: + resolution: {integrity: sha512-sR3CxYUl7i2CHa0O7bA45mCrgADyAQ0tVtGSqi3yvH28M+eg1+g5d7kQ9hLvEz5dorK3XVsH5L2jwHLQf72DzA==} engines: {node: '>=16'} peerDependencies: rollup: ^3.29.4 || ^4 typescript: ^4.5 || ^5.0 - rollup-plugin-esbuild@6.1.1: - resolution: {integrity: sha512-CehMY9FAqJD5OUaE/Mi1r5z0kNeYxItmRO2zG4Qnv2qWKF09J2lTy5GUzjJR354ZPrLkCj4fiBN41lo8PzBUhw==} + rollup-plugin-esbuild@6.2.1: + resolution: {integrity: sha512-jTNOMGoMRhs0JuueJrJqbW8tOwxumaWYq+V5i+PD+8ecSCVkuX27tGW7BXqDgoULQ55rO7IdNxPcnsWtshz3AA==} engines: {node: '>=14.18.0'} peerDependencies: esbuild: '>=0.18.0' rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 - rollup@4.20.0: - resolution: {integrity: sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==} + rollup@4.40.0: + resolution: {integrity: sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -3608,18 +3400,18 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true - semver@7.6.2: resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} engines: {node: '>=10'} hasBin: true - serve-handler@6.1.5: - resolution: {integrity: sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==} + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + + serve-handler@6.1.6: + resolution: {integrity: sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==} set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} @@ -3644,6 +3436,10 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + simple-xml-to-json@1.2.3: + resolution: {integrity: sha512-kWJDCr9EWtZ+/EYYM5MareWj2cRnZGF93YDNpH4jQiHB+hBIZnfPFSQiVMzZOdk+zXWqTZ/9fTeQNu2DqeiudA==} + engines: {node: '>=20.12.2'} + sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -3655,16 +3451,16 @@ packages: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - socks-proxy-agent@8.0.3: - resolution: {integrity: sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==} + socks-proxy-agent@8.0.5: + resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} engines: {node: '>= 14'} socks@2.8.3: resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} source-map-support@0.5.13: @@ -3690,6 +3486,9 @@ packages: streamx@2.16.1: resolution: {integrity: sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==} + streamx@2.22.0: + resolution: {integrity: sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==} + string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} @@ -3752,14 +3551,14 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - tar-fs@3.0.5: - resolution: {integrity: sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==} + tar-fs@3.0.8: + resolution: {integrity: sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==} tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - terser@5.31.3: - resolution: {integrity: sha512-pAfYn3NIZLyZpa83ZKigvj6Rn9c/vd5KfYGX7cN1mnzqgDcxWvrU5ZtAfIKhEXz9nRecw4z3LXkjaq96/qZqAA==} + terser@5.39.0: + resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} engines: {node: '>=10'} hasBin: true @@ -3767,14 +3566,8 @@ packages: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - timm@1.7.1: - resolution: {integrity: sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==} + text-decoder@1.2.3: + resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} tinycolor2@1.6.0: resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} @@ -3798,21 +3591,18 @@ packages: resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} engines: {node: '>=6'} - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@3.0.0: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} - ts-api-utils@1.3.0: - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} peerDependencies: - typescript: '>=4.2.0' + typescript: '>=4.8.4' - ts-morph@23.0.0: - resolution: {integrity: sha512-FcvFx7a9E8TUe6T3ShihXJLiJOiqyafzFKUO4aqIHDUCIvADdGNShcbc2W5PMr3LerXRv7mafvFZ9lRENxJmug==} + ts-morph@25.0.1: + resolution: {integrity: sha512-QJEiTdnz1YjrB3JFhd626gX4rKHDLSjSVMvGGG4v7ONc3RBwa0Eei98G9AT9uNFDMtV54JyuXsFeC+OH0n6bXQ==} ts-node@10.9.2: resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} @@ -3828,8 +3618,8 @@ packages: '@swc/wasm': optional: true - tslib@2.6.3: - resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} @@ -3843,16 +3633,16 @@ packages: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} - typescript@5.5.4: - resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} + typed-query-selector@2.12.0: + resolution: {integrity: sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==} + + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} hasBin: true - unbzip2-stream@1.4.3: - resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} - - undici-types@6.13.0: - resolution: {integrity: sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==} + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} @@ -3870,6 +3660,10 @@ packages: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + union@0.5.0: resolution: {integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==} engines: {node: '>= 0.8.0'} @@ -3882,14 +3676,12 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - update-browserslist-db@1.0.16: - resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + unplugin-utils@0.2.4: + resolution: {integrity: sha512-8U/MtpkPkkk3Atewj1+RcKIjb5WBimZ/WSLhhR3w6SsIj8XJuKTacSP8g+2JhfSGw0Cb125Y+2zA/IzJZDVbhA==} + engines: {node: '>=18.12.0'} - update-browserslist-db@1.1.0: - resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -3903,9 +3695,6 @@ packages: url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - urlpattern-polyfill@10.0.0: - resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==} - utif2@4.1.0: resolution: {integrity: sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w==} @@ -3922,33 +3711,45 @@ packages: resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} engines: {node: '>=10.12.0'} - vite@5.3.5: - resolution: {integrity: sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==} - engines: {node: ^18.0.0 || >=20.0.0} + vite@6.2.6: + resolution: {integrity: sha512-9xpjNl3kR4rVDZgPNdTL0/c6ao4km69a/2ihNQbcANz8RuCOK3hQBmLSJf3bRKVQjVMda+YvizNE8AwvogcPbw==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' less: '*' lightningcss: ^1.21.0 sass: '*' + sass-embedded: '*' stylus: '*' sugarss: '*' - terser: ^5.4.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 peerDependenciesMeta: '@types/node': optional: true + jiti: + optional: true less: optional: true lightningcss: optional: true sass: optional: true + sass-embedded: + optional: true stylus: optional: true sugarss: optional: true terser: optional: true + tsx: + optional: true + yaml: + optional: true w3c-xmlserializer@4.0.0: resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} @@ -3957,9 +3758,6 @@ packages: walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} @@ -3968,9 +3766,6 @@ packages: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} - whatwg-fetch@3.6.20: - resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} - whatwg-mimetype@3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} @@ -3979,9 +3774,6 @@ packages: resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} engines: {node: '>=12'} - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -4018,8 +3810,17 @@ packages: utf-8-validate: optional: true - xhr@2.6.0: - resolution: {integrity: sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==} + ws@8.18.1: + resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} @@ -4039,10 +3840,6 @@ packages: xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -4050,9 +3847,6 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} @@ -4076,8 +3870,8 @@ packages: resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} engines: {node: '>=18'} - zod@3.22.4: - resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + zod@3.24.2: + resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==} snapshots: @@ -4086,30 +3880,31 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@babel/code-frame@7.24.2': - dependencies: - '@babel/highlight': 7.24.5 - picocolors: 1.0.1 - '@babel/code-frame@7.24.7': dependencies: '@babel/highlight': 7.24.7 picocolors: 1.0.1 - '@babel/compat-data@7.25.2': {} + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.0.1 - '@babel/core@7.25.2': + '@babel/compat-data@7.26.8': {} + + '@babel/core@7.26.10': dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.0 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helpers': 7.25.0 - '@babel/parser': 7.25.3 - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.27.0 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) + '@babel/helpers': 7.27.0 + '@babel/parser': 7.27.0 + '@babel/template': 7.27.0 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -4118,13 +3913,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.24.5': - dependencies: - '@babel/types': 7.24.5 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - '@babel/generator@7.25.0': dependencies: '@babel/types': 7.25.2 @@ -4132,160 +3920,157 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - '@babel/helper-annotate-as-pure@7.22.5': + '@babel/generator@7.27.0': dependencies: - '@babel/types': 7.24.5 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 '@babel/helper-annotate-as-pure@7.24.7': dependencies: '@babel/types': 7.25.2 - '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': + '@babel/helper-annotate-as-pure@7.25.9': dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 - transitivePeerDependencies: - - supports-color + '@babel/types': 7.27.0 - '@babel/helper-compilation-targets@7.25.2': + '@babel/helper-compilation-targets@7.27.0': dependencies: - '@babel/compat-data': 7.25.2 - '@babel/helper-validator-option': 7.24.8 - browserslist: 4.23.3 + '@babel/compat-data': 7.26.8 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.4 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.25.0(@babel/core@7.25.2)': + '@babel/helper-create-class-features-plugin@7.27.0(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-member-expression-to-functions': 7.24.8 - '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/traverse': 7.25.3 + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.27.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.25.2)': + '@babel/helper-create-regexp-features-plugin@7.25.2(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.22.5 - regexpu-core: 5.3.2 - semver: 6.3.1 - - '@babel/helper-create-regexp-features-plugin@7.25.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.10 '@babel/helper-annotate-as-pure': 7.24.7 regexpu-core: 5.3.2 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.25.2)': + '@babel/helper-create-regexp-features-plugin@7.27.0(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + regexpu-core: 6.2.0 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-plugin-utils': 7.26.5 debug: 4.3.4 lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: - supports-color - '@babel/helper-member-expression-to-functions@7.24.8': + '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.26.10)': dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/core': 7.26.10 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-plugin-utils': 7.26.5 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.8 transitivePeerDependencies: - supports-color - '@babel/helper-module-imports@7.24.7': + '@babel/helper-member-expression-to-functions@7.25.9': dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': + '@babel/helper-module-imports@7.25.9': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.3 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color - '@babel/helper-optimise-call-expression@7.24.7': + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.10)': dependencies: - '@babel/types': 7.25.2 + '@babel/core': 7.26.10 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.27.0 + transitivePeerDependencies: + - supports-color - '@babel/helper-plugin-utils@7.24.5': {} + '@babel/helper-optimise-call-expression@7.25.9': + dependencies: + '@babel/types': 7.27.0 '@babel/helper-plugin-utils@7.24.8': {} - '@babel/helper-remap-async-to-generator@7.25.0(@babel/core@7.25.2)': + '@babel/helper-plugin-utils@7.26.5': {} + + '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-wrap-function': 7.25.0 - '@babel/traverse': 7.25.3 + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-wrap-function': 7.25.9 + '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.25.0(@babel/core@7.25.2)': + '@babel/helper-replace-supers@7.26.5(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-member-expression-to-functions': 7.24.8 - '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/traverse': 7.25.3 + '@babel/core': 7.26.10 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color - '@babel/helper-simple-access@7.24.7': + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color - '@babel/helper-skip-transparent-expression-wrappers@7.24.7': - dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 - transitivePeerDependencies: - - supports-color - - '@babel/helper-string-parser@7.24.1': {} - '@babel/helper-string-parser@7.24.8': {} - '@babel/helper-validator-identifier@7.24.5': {} + '@babel/helper-string-parser@7.25.9': {} '@babel/helper-validator-identifier@7.24.7': {} - '@babel/helper-validator-option@7.24.8': {} + '@babel/helper-validator-identifier@7.25.9': {} - '@babel/helper-wrap-function@7.25.0': + '@babel/helper-validator-option@7.25.9': {} + + '@babel/helper-wrap-function@7.25.9': dependencies: - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/template': 7.27.0 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color - '@babel/helpers@7.25.0': + '@babel/helpers@7.27.0': dependencies: - '@babel/template': 7.25.0 - '@babel/types': 7.25.2 - - '@babel/highlight@7.24.5': - dependencies: - '@babel/helper-validator-identifier': 7.24.5 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.0.1 + '@babel/template': 7.27.0 + '@babel/types': 7.27.0 '@babel/highlight@7.24.7': dependencies: @@ -4294,623 +4079,579 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.0.1 - '@babel/parser@7.24.5': - dependencies: - '@babel/types': 7.24.5 - '@babel/parser@7.25.3': dependencies: '@babel/types': 7.25.2 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3(@babel/core@7.25.2)': + '@babel/parser@7.27.0': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.3 + '@babel/types': 7.27.0 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.0(@babel/core@7.25.2)': + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0(@babel/core@7.25.2)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2) + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.10) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.0(@babel/core@7.25.2)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.3 + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.10 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.25.2)': + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.2)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.2)': + '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.25.2)': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.25.2)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2)': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2)': + '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2)': + '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2)': + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.2)': + '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2)': + '@babel/plugin-transform-async-generator-functions@7.26.8(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-async-generator-functions@7.25.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - '@babel/traverse': 7.25.3 + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.10) + '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) + '@babel/core': 7.26.10 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.10) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-block-scoped-functions@7.26.5(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-block-scoping@7.25.0(@babel/core@7.25.2)': + '@babel/plugin-transform-block-scoping@7.27.0(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) + '@babel/core': 7.26.10 + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.25.0(@babel/core@7.25.2)': + '@babel/plugin-transform-classes@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) - '@babel/traverse': 7.25.3 + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10) + '@babel/traverse': 7.27.0 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/template': 7.25.0 + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/template': 7.27.0 - '@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.25.2)': + '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.0(@babel/core@7.25.2)': + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-exponentiation-operator@7.26.3(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-for-of@7.26.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) - - '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/core': 7.26.10 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-function-name@7.25.1(@babel/core@7.25.2)': + '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.3 + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) - - '@babel/plugin-transform-literals@7.25.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - - '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.25.2)': + '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-simple-access': 7.24.7 + '@babel/core': 7.26.10 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.25.0(@babel/core@7.25.2)': + '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.3 + '@babel/core': 7.26.10 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-nullish-coalescing-operator@7.26.6(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.10) + + '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-new-target@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - - '@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) - - '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) - - '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-optional-chaining@7.24.8(@babel/core@7.25.2)': + '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) + '@babel/core': 7.26.10 + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-react-jsx-self@7.24.5(@babel/core@7.25.2)': + '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.25.2)': + '@babel/plugin-transform-regenerator@7.27.0(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 regenerator-transform: 0.15.2 - '@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-spread@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-template-literals@7.26.8(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-typeof-symbol@7.24.8(@babel/core@7.25.2)': + '@babel/plugin-transform-typeof-symbol@7.27.0(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-typescript@7.25.2(@babel/core@7.25.2)': + '@babel/plugin-transform-typescript@7.27.0(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 - '@babel/preset-env@7.25.3(@babel/core@7.25.2)': + '@babel/preset-env@7.26.9(@babel/core@7.26.10)': dependencies: - '@babel/compat-data': 7.25.2 - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.3(@babel/core@7.25.2) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-import-assertions': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-async-generator-functions': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-classes': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-duplicate-keys': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-dynamic-import': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-exponentiation-operator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.25.2) - '@babel/plugin-transform-json-strings': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.25.2) - '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-amd': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-modules-systemjs': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-modules-umd': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-new-target': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-reserved-words': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-typeof-symbol': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-sets-regex': 7.24.7(@babel/core@7.25.2) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.25.2) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.2) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.25.2) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.2) - core-js-compat: 3.37.1 + '@babel/compat-data': 7.26.8 + '@babel/core': 7.26.10 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.10) + '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.10) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.10) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.10) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-async-generator-functions': 7.26.8(@babel/core@7.26.10) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-block-scoped-functions': 7.26.5(@babel/core@7.26.10) + '@babel/plugin-transform-block-scoping': 7.27.0(@babel/core@7.26.10) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.10) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-exponentiation-operator': 7.26.3(@babel/core@7.26.10) + '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-for-of': 7.26.9(@babel/core@7.26.10) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.10) + '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-nullish-coalescing-operator': 7.26.6(@babel/core@7.26.10) + '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-regenerator': 7.27.0(@babel/core@7.26.10) + '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.26.10) + '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-template-literals': 7.26.8(@babel/core@7.26.10) + '@babel/plugin-transform-typeof-symbol': 7.27.0(@babel/core@7.26.10) + '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.26.10) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.10) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.10) + babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.26.10) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.26.10) + core-js-compat: 3.41.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.25.2)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/types': 7.24.5 + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/types': 7.25.2 esutils: 2.0.3 - '@babel/preset-typescript@7.24.7(@babel/core@7.25.2)': + '@babel/preset-typescript@7.27.0(@babel/core@7.26.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.10) + '@babel/plugin-transform-typescript': 7.27.0(@babel/core@7.26.10) transitivePeerDependencies: - supports-color @@ -4920,211 +4661,154 @@ snapshots: dependencies: regenerator-runtime: 0.14.1 - '@babel/template@7.24.0': - dependencies: - '@babel/code-frame': 7.24.2 - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 - '@babel/template@7.25.0': dependencies: '@babel/code-frame': 7.24.7 '@babel/parser': 7.25.3 '@babel/types': 7.25.2 - '@babel/traverse@7.25.3': + '@babel/template@7.27.0': dependencies: - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.0 - '@babel/parser': 7.25.3 - '@babel/template': 7.25.0 - '@babel/types': 7.25.2 + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 + + '@babel/traverse@7.27.0': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.27.0 + '@babel/parser': 7.27.0 + '@babel/template': 7.27.0 + '@babel/types': 7.27.0 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.24.5': - dependencies: - '@babel/helper-string-parser': 7.24.1 - '@babel/helper-validator-identifier': 7.24.5 - to-fast-properties: 2.0.0 - '@babel/types@7.25.2': dependencies: '@babel/helper-string-parser': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 + '@babel/types@7.27.0': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@bcoe/v8-coverage@0.2.3': {} '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@esbuild/aix-ppc64@0.21.5': + '@esbuild/aix-ppc64@0.25.2': optional: true - '@esbuild/aix-ppc64@0.23.0': + '@esbuild/android-arm64@0.25.2': optional: true - '@esbuild/android-arm64@0.21.5': + '@esbuild/android-arm@0.25.2': optional: true - '@esbuild/android-arm64@0.23.0': + '@esbuild/android-x64@0.25.2': optional: true - '@esbuild/android-arm@0.21.5': + '@esbuild/darwin-arm64@0.25.2': optional: true - '@esbuild/android-arm@0.23.0': + '@esbuild/darwin-x64@0.25.2': optional: true - '@esbuild/android-x64@0.21.5': + '@esbuild/freebsd-arm64@0.25.2': optional: true - '@esbuild/android-x64@0.23.0': + '@esbuild/freebsd-x64@0.25.2': optional: true - '@esbuild/darwin-arm64@0.21.5': + '@esbuild/linux-arm64@0.25.2': optional: true - '@esbuild/darwin-arm64@0.23.0': + '@esbuild/linux-arm@0.25.2': optional: true - '@esbuild/darwin-x64@0.21.5': + '@esbuild/linux-ia32@0.25.2': optional: true - '@esbuild/darwin-x64@0.23.0': + '@esbuild/linux-loong64@0.25.2': optional: true - '@esbuild/freebsd-arm64@0.21.5': + '@esbuild/linux-mips64el@0.25.2': optional: true - '@esbuild/freebsd-arm64@0.23.0': + '@esbuild/linux-ppc64@0.25.2': optional: true - '@esbuild/freebsd-x64@0.21.5': + '@esbuild/linux-riscv64@0.25.2': optional: true - '@esbuild/freebsd-x64@0.23.0': + '@esbuild/linux-s390x@0.25.2': optional: true - '@esbuild/linux-arm64@0.21.5': + '@esbuild/linux-x64@0.25.2': optional: true - '@esbuild/linux-arm64@0.23.0': + '@esbuild/netbsd-arm64@0.25.2': optional: true - '@esbuild/linux-arm@0.21.5': + '@esbuild/netbsd-x64@0.25.2': optional: true - '@esbuild/linux-arm@0.23.0': + '@esbuild/openbsd-arm64@0.25.2': optional: true - '@esbuild/linux-ia32@0.21.5': + '@esbuild/openbsd-x64@0.25.2': optional: true - '@esbuild/linux-ia32@0.23.0': + '@esbuild/sunos-x64@0.25.2': optional: true - '@esbuild/linux-loong64@0.21.5': + '@esbuild/win32-arm64@0.25.2': optional: true - '@esbuild/linux-loong64@0.23.0': + '@esbuild/win32-ia32@0.25.2': optional: true - '@esbuild/linux-mips64el@0.21.5': + '@esbuild/win32-x64@0.25.2': optional: true - '@esbuild/linux-mips64el@0.23.0': - optional: true - - '@esbuild/linux-ppc64@0.21.5': - optional: true - - '@esbuild/linux-ppc64@0.23.0': - optional: true - - '@esbuild/linux-riscv64@0.21.5': - optional: true - - '@esbuild/linux-riscv64@0.23.0': - optional: true - - '@esbuild/linux-s390x@0.21.5': - optional: true - - '@esbuild/linux-s390x@0.23.0': - optional: true - - '@esbuild/linux-x64@0.21.5': - optional: true - - '@esbuild/linux-x64@0.23.0': - optional: true - - '@esbuild/netbsd-x64@0.21.5': - optional: true - - '@esbuild/netbsd-x64@0.23.0': - optional: true - - '@esbuild/openbsd-arm64@0.23.0': - optional: true - - '@esbuild/openbsd-x64@0.21.5': - optional: true - - '@esbuild/openbsd-x64@0.23.0': - optional: true - - '@esbuild/sunos-x64@0.21.5': - optional: true - - '@esbuild/sunos-x64@0.23.0': - optional: true - - '@esbuild/win32-arm64@0.21.5': - optional: true - - '@esbuild/win32-arm64@0.23.0': - optional: true - - '@esbuild/win32-ia32@0.21.5': - optional: true - - '@esbuild/win32-ia32@0.23.0': - optional: true - - '@esbuild/win32-x64@0.21.5': - optional: true - - '@esbuild/win32-x64@0.23.0': - optional: true - - '@eslint-community/eslint-utils@4.4.0(eslint@9.8.0)': + '@eslint-community/eslint-utils@4.4.0(eslint@9.24.0)': dependencies: - eslint: 9.8.0 + eslint: 9.24.0 eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.10.0': {} - '@eslint-community/regexpp@4.11.0': {} - '@eslint/config-array@0.17.1': + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/config-array@0.20.0': dependencies: - '@eslint/object-schema': 2.1.4 + '@eslint/object-schema': 2.1.6 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - '@eslint/eslintrc@3.1.0': + '@eslint/config-helpers@0.2.1': {} + + '@eslint/core@0.12.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/core@0.13.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 10.1.0 + espree: 10.3.0 globals: 14.0.0 ignore: 5.3.1 import-fresh: 3.3.0 @@ -5134,14 +4818,28 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.8.0': {} + '@eslint/js@9.24.0': {} - '@eslint/object-schema@2.1.4': {} + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.2.8': + dependencies: + '@eslint/core': 0.13.0 + levn: 0.4.1 + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.0 '@humanwhocodes/module-importer@1.0.1': {} '@humanwhocodes/retry@0.3.0': {} + '@humanwhocodes/retry@0.4.2': {} + '@idraw/types@0.4.0-beta.22': {} '@isaacs/cliui@8.0.2': @@ -5166,27 +4864,27 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 22.1.0 + '@types/node': 22.14.1 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4))': + '@jest/core@29.7.0(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.8.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.1.0 + '@types/node': 22.14.1 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.1.0)(ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4)) + jest-config: 29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.8.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -5211,7 +4909,7 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.1.0 + '@types/node': 22.14.1 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -5229,7 +4927,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.1.0 + '@types/node': 22.14.1 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -5251,7 +4949,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 22.1.0 + '@types/node': 22.14.1 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -5298,7 +4996,7 @@ snapshots: '@jest/transform@29.7.0': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.10 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 babel-plugin-istanbul: 6.1.1 @@ -5321,221 +5019,198 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.1.0 + '@types/node': 22.14.1 '@types/yargs': 17.0.32 chalk: 4.1.2 - '@jimp/bmp@0.22.12(@jimp/custom@0.22.12)': + '@jimp/core@1.6.0': dependencies: - '@jimp/custom': 0.22.12 - '@jimp/utils': 0.22.12 - bmp-js: 0.1.0 - - '@jimp/core@0.22.12': - dependencies: - '@jimp/utils': 0.22.12 - any-base: 1.1.0 - buffer: 5.7.1 + '@jimp/file-ops': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + await-to-js: 3.0.0 exif-parser: 0.1.12 file-type: 16.5.4 - isomorphic-fetch: 3.0.0 - pixelmatch: 4.0.2 - tinycolor2: 1.6.0 - transitivePeerDependencies: - - encoding + mime: 3.0.0 - '@jimp/custom@0.22.12': + '@jimp/diff@1.6.0': dependencies: - '@jimp/core': 0.22.12 - transitivePeerDependencies: - - encoding + '@jimp/plugin-resize': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + pixelmatch: 5.3.0 - '@jimp/gif@0.22.12(@jimp/custom@0.22.12)': + '@jimp/file-ops@1.6.0': {} + + '@jimp/js-bmp@1.6.0': dependencies: - '@jimp/custom': 0.22.12 - '@jimp/utils': 0.22.12 + '@jimp/core': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + bmp-ts: 1.0.9 + + '@jimp/js-gif@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/types': 1.6.0 gifwrap: 0.10.1 omggif: 1.0.10 - '@jimp/jpeg@0.22.12(@jimp/custom@0.22.12)': + '@jimp/js-jpeg@1.6.0': dependencies: - '@jimp/custom': 0.22.12 - '@jimp/utils': 0.22.12 + '@jimp/core': 1.6.0 + '@jimp/types': 1.6.0 jpeg-js: 0.4.4 - '@jimp/plugin-blit@0.22.12(@jimp/custom@0.22.12)': + '@jimp/js-png@1.6.0': dependencies: - '@jimp/custom': 0.22.12 - '@jimp/utils': 0.22.12 + '@jimp/core': 1.6.0 + '@jimp/types': 1.6.0 + pngjs: 7.0.0 - '@jimp/plugin-blur@0.22.12(@jimp/custom@0.22.12)': + '@jimp/js-tiff@1.6.0': dependencies: - '@jimp/custom': 0.22.12 - '@jimp/utils': 0.22.12 - - '@jimp/plugin-circle@0.22.12(@jimp/custom@0.22.12)': - dependencies: - '@jimp/custom': 0.22.12 - '@jimp/utils': 0.22.12 - - '@jimp/plugin-color@0.22.12(@jimp/custom@0.22.12)': - dependencies: - '@jimp/custom': 0.22.12 - '@jimp/utils': 0.22.12 - tinycolor2: 1.6.0 - - '@jimp/plugin-contain@0.22.12(@jimp/custom@0.22.12)(@jimp/plugin-blit@0.22.12(@jimp/custom@0.22.12))(@jimp/plugin-resize@0.22.12(@jimp/custom@0.22.12))(@jimp/plugin-scale@0.22.12(@jimp/custom@0.22.12)(@jimp/plugin-resize@0.22.12(@jimp/custom@0.22.12)))': - dependencies: - '@jimp/custom': 0.22.12 - '@jimp/plugin-blit': 0.22.12(@jimp/custom@0.22.12) - '@jimp/plugin-resize': 0.22.12(@jimp/custom@0.22.12) - '@jimp/plugin-scale': 0.22.12(@jimp/custom@0.22.12)(@jimp/plugin-resize@0.22.12(@jimp/custom@0.22.12)) - '@jimp/utils': 0.22.12 - - '@jimp/plugin-cover@0.22.12(@jimp/custom@0.22.12)(@jimp/plugin-crop@0.22.12(@jimp/custom@0.22.12))(@jimp/plugin-resize@0.22.12(@jimp/custom@0.22.12))(@jimp/plugin-scale@0.22.12(@jimp/custom@0.22.12)(@jimp/plugin-resize@0.22.12(@jimp/custom@0.22.12)))': - dependencies: - '@jimp/custom': 0.22.12 - '@jimp/plugin-crop': 0.22.12(@jimp/custom@0.22.12) - '@jimp/plugin-resize': 0.22.12(@jimp/custom@0.22.12) - '@jimp/plugin-scale': 0.22.12(@jimp/custom@0.22.12)(@jimp/plugin-resize@0.22.12(@jimp/custom@0.22.12)) - '@jimp/utils': 0.22.12 - - '@jimp/plugin-crop@0.22.12(@jimp/custom@0.22.12)': - dependencies: - '@jimp/custom': 0.22.12 - '@jimp/utils': 0.22.12 - - '@jimp/plugin-displace@0.22.12(@jimp/custom@0.22.12)': - dependencies: - '@jimp/custom': 0.22.12 - '@jimp/utils': 0.22.12 - - '@jimp/plugin-dither@0.22.12(@jimp/custom@0.22.12)': - dependencies: - '@jimp/custom': 0.22.12 - '@jimp/utils': 0.22.12 - - '@jimp/plugin-fisheye@0.22.12(@jimp/custom@0.22.12)': - dependencies: - '@jimp/custom': 0.22.12 - '@jimp/utils': 0.22.12 - - '@jimp/plugin-flip@0.22.12(@jimp/custom@0.22.12)(@jimp/plugin-rotate@0.22.12(@jimp/custom@0.22.12)(@jimp/plugin-blit@0.22.12(@jimp/custom@0.22.12))(@jimp/plugin-crop@0.22.12(@jimp/custom@0.22.12))(@jimp/plugin-resize@0.22.12(@jimp/custom@0.22.12)))': - dependencies: - '@jimp/custom': 0.22.12 - '@jimp/plugin-rotate': 0.22.12(@jimp/custom@0.22.12)(@jimp/plugin-blit@0.22.12(@jimp/custom@0.22.12))(@jimp/plugin-crop@0.22.12(@jimp/custom@0.22.12))(@jimp/plugin-resize@0.22.12(@jimp/custom@0.22.12)) - '@jimp/utils': 0.22.12 - - '@jimp/plugin-gaussian@0.22.12(@jimp/custom@0.22.12)': - dependencies: - '@jimp/custom': 0.22.12 - '@jimp/utils': 0.22.12 - - '@jimp/plugin-invert@0.22.12(@jimp/custom@0.22.12)': - dependencies: - '@jimp/custom': 0.22.12 - '@jimp/utils': 0.22.12 - - '@jimp/plugin-mask@0.22.12(@jimp/custom@0.22.12)': - dependencies: - '@jimp/custom': 0.22.12 - '@jimp/utils': 0.22.12 - - '@jimp/plugin-normalize@0.22.12(@jimp/custom@0.22.12)': - dependencies: - '@jimp/custom': 0.22.12 - '@jimp/utils': 0.22.12 - - '@jimp/plugin-print@0.22.12(@jimp/custom@0.22.12)(@jimp/plugin-blit@0.22.12(@jimp/custom@0.22.12))': - dependencies: - '@jimp/custom': 0.22.12 - '@jimp/plugin-blit': 0.22.12(@jimp/custom@0.22.12) - '@jimp/utils': 0.22.12 - load-bmfont: 1.4.1 - - '@jimp/plugin-resize@0.22.12(@jimp/custom@0.22.12)': - dependencies: - '@jimp/custom': 0.22.12 - '@jimp/utils': 0.22.12 - - '@jimp/plugin-rotate@0.22.12(@jimp/custom@0.22.12)(@jimp/plugin-blit@0.22.12(@jimp/custom@0.22.12))(@jimp/plugin-crop@0.22.12(@jimp/custom@0.22.12))(@jimp/plugin-resize@0.22.12(@jimp/custom@0.22.12))': - dependencies: - '@jimp/custom': 0.22.12 - '@jimp/plugin-blit': 0.22.12(@jimp/custom@0.22.12) - '@jimp/plugin-crop': 0.22.12(@jimp/custom@0.22.12) - '@jimp/plugin-resize': 0.22.12(@jimp/custom@0.22.12) - '@jimp/utils': 0.22.12 - - '@jimp/plugin-scale@0.22.12(@jimp/custom@0.22.12)(@jimp/plugin-resize@0.22.12(@jimp/custom@0.22.12))': - dependencies: - '@jimp/custom': 0.22.12 - '@jimp/plugin-resize': 0.22.12(@jimp/custom@0.22.12) - '@jimp/utils': 0.22.12 - - '@jimp/plugin-shadow@0.22.12(@jimp/custom@0.22.12)(@jimp/plugin-blur@0.22.12(@jimp/custom@0.22.12))(@jimp/plugin-resize@0.22.12(@jimp/custom@0.22.12))': - dependencies: - '@jimp/custom': 0.22.12 - '@jimp/plugin-blur': 0.22.12(@jimp/custom@0.22.12) - '@jimp/plugin-resize': 0.22.12(@jimp/custom@0.22.12) - '@jimp/utils': 0.22.12 - - '@jimp/plugin-threshold@0.22.12(@jimp/custom@0.22.12)(@jimp/plugin-color@0.22.12(@jimp/custom@0.22.12))(@jimp/plugin-resize@0.22.12(@jimp/custom@0.22.12))': - dependencies: - '@jimp/custom': 0.22.12 - '@jimp/plugin-color': 0.22.12(@jimp/custom@0.22.12) - '@jimp/plugin-resize': 0.22.12(@jimp/custom@0.22.12) - '@jimp/utils': 0.22.12 - - '@jimp/plugins@0.22.12(@jimp/custom@0.22.12)': - dependencies: - '@jimp/custom': 0.22.12 - '@jimp/plugin-blit': 0.22.12(@jimp/custom@0.22.12) - '@jimp/plugin-blur': 0.22.12(@jimp/custom@0.22.12) - '@jimp/plugin-circle': 0.22.12(@jimp/custom@0.22.12) - '@jimp/plugin-color': 0.22.12(@jimp/custom@0.22.12) - '@jimp/plugin-contain': 0.22.12(@jimp/custom@0.22.12)(@jimp/plugin-blit@0.22.12(@jimp/custom@0.22.12))(@jimp/plugin-resize@0.22.12(@jimp/custom@0.22.12))(@jimp/plugin-scale@0.22.12(@jimp/custom@0.22.12)(@jimp/plugin-resize@0.22.12(@jimp/custom@0.22.12))) - '@jimp/plugin-cover': 0.22.12(@jimp/custom@0.22.12)(@jimp/plugin-crop@0.22.12(@jimp/custom@0.22.12))(@jimp/plugin-resize@0.22.12(@jimp/custom@0.22.12))(@jimp/plugin-scale@0.22.12(@jimp/custom@0.22.12)(@jimp/plugin-resize@0.22.12(@jimp/custom@0.22.12))) - '@jimp/plugin-crop': 0.22.12(@jimp/custom@0.22.12) - '@jimp/plugin-displace': 0.22.12(@jimp/custom@0.22.12) - '@jimp/plugin-dither': 0.22.12(@jimp/custom@0.22.12) - '@jimp/plugin-fisheye': 0.22.12(@jimp/custom@0.22.12) - '@jimp/plugin-flip': 0.22.12(@jimp/custom@0.22.12)(@jimp/plugin-rotate@0.22.12(@jimp/custom@0.22.12)(@jimp/plugin-blit@0.22.12(@jimp/custom@0.22.12))(@jimp/plugin-crop@0.22.12(@jimp/custom@0.22.12))(@jimp/plugin-resize@0.22.12(@jimp/custom@0.22.12))) - '@jimp/plugin-gaussian': 0.22.12(@jimp/custom@0.22.12) - '@jimp/plugin-invert': 0.22.12(@jimp/custom@0.22.12) - '@jimp/plugin-mask': 0.22.12(@jimp/custom@0.22.12) - '@jimp/plugin-normalize': 0.22.12(@jimp/custom@0.22.12) - '@jimp/plugin-print': 0.22.12(@jimp/custom@0.22.12)(@jimp/plugin-blit@0.22.12(@jimp/custom@0.22.12)) - '@jimp/plugin-resize': 0.22.12(@jimp/custom@0.22.12) - '@jimp/plugin-rotate': 0.22.12(@jimp/custom@0.22.12)(@jimp/plugin-blit@0.22.12(@jimp/custom@0.22.12))(@jimp/plugin-crop@0.22.12(@jimp/custom@0.22.12))(@jimp/plugin-resize@0.22.12(@jimp/custom@0.22.12)) - '@jimp/plugin-scale': 0.22.12(@jimp/custom@0.22.12)(@jimp/plugin-resize@0.22.12(@jimp/custom@0.22.12)) - '@jimp/plugin-shadow': 0.22.12(@jimp/custom@0.22.12)(@jimp/plugin-blur@0.22.12(@jimp/custom@0.22.12))(@jimp/plugin-resize@0.22.12(@jimp/custom@0.22.12)) - '@jimp/plugin-threshold': 0.22.12(@jimp/custom@0.22.12)(@jimp/plugin-color@0.22.12(@jimp/custom@0.22.12))(@jimp/plugin-resize@0.22.12(@jimp/custom@0.22.12)) - timm: 1.7.1 - - '@jimp/png@0.22.12(@jimp/custom@0.22.12)': - dependencies: - '@jimp/custom': 0.22.12 - '@jimp/utils': 0.22.12 - pngjs: 6.0.0 - - '@jimp/tiff@0.22.12(@jimp/custom@0.22.12)': - dependencies: - '@jimp/custom': 0.22.12 + '@jimp/core': 1.6.0 + '@jimp/types': 1.6.0 utif2: 4.1.0 - '@jimp/types@0.22.12(@jimp/custom@0.22.12)': + '@jimp/plugin-blit@1.6.0': dependencies: - '@jimp/bmp': 0.22.12(@jimp/custom@0.22.12) - '@jimp/custom': 0.22.12 - '@jimp/gif': 0.22.12(@jimp/custom@0.22.12) - '@jimp/jpeg': 0.22.12(@jimp/custom@0.22.12) - '@jimp/png': 0.22.12(@jimp/custom@0.22.12) - '@jimp/tiff': 0.22.12(@jimp/custom@0.22.12) - timm: 1.7.1 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + zod: 3.24.2 - '@jimp/utils@0.22.12': + '@jimp/plugin-blur@1.6.0': dependencies: - regenerator-runtime: 0.13.11 + '@jimp/core': 1.6.0 + '@jimp/utils': 1.6.0 + + '@jimp/plugin-circle@1.6.0': + dependencies: + '@jimp/types': 1.6.0 + zod: 3.24.2 + + '@jimp/plugin-color@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + tinycolor2: 1.6.0 + zod: 3.24.2 + + '@jimp/plugin-contain@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/plugin-blit': 1.6.0 + '@jimp/plugin-resize': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + zod: 3.24.2 + + '@jimp/plugin-cover@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/plugin-crop': 1.6.0 + '@jimp/plugin-resize': 1.6.0 + '@jimp/types': 1.6.0 + zod: 3.24.2 + + '@jimp/plugin-crop@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + zod: 3.24.2 + + '@jimp/plugin-displace@1.6.0': + dependencies: + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + zod: 3.24.2 + + '@jimp/plugin-dither@1.6.0': + dependencies: + '@jimp/types': 1.6.0 + + '@jimp/plugin-fisheye@1.6.0': + dependencies: + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + zod: 3.24.2 + + '@jimp/plugin-flip@1.6.0': + dependencies: + '@jimp/types': 1.6.0 + zod: 3.24.2 + + '@jimp/plugin-hash@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/js-bmp': 1.6.0 + '@jimp/js-jpeg': 1.6.0 + '@jimp/js-png': 1.6.0 + '@jimp/js-tiff': 1.6.0 + '@jimp/plugin-color': 1.6.0 + '@jimp/plugin-resize': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + any-base: 1.1.0 + + '@jimp/plugin-mask@1.6.0': + dependencies: + '@jimp/types': 1.6.0 + zod: 3.24.2 + + '@jimp/plugin-print@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/js-jpeg': 1.6.0 + '@jimp/js-png': 1.6.0 + '@jimp/plugin-blit': 1.6.0 + '@jimp/types': 1.6.0 + parse-bmfont-ascii: 1.0.6 + parse-bmfont-binary: 1.0.6 + parse-bmfont-xml: 1.1.6 + simple-xml-to-json: 1.2.3 + zod: 3.24.2 + + '@jimp/plugin-quantize@1.6.0': + dependencies: + image-q: 4.0.0 + zod: 3.24.2 + + '@jimp/plugin-resize@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/types': 1.6.0 + zod: 3.24.2 + + '@jimp/plugin-rotate@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/plugin-crop': 1.6.0 + '@jimp/plugin-resize': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + zod: 3.24.2 + + '@jimp/plugin-threshold@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/plugin-color': 1.6.0 + '@jimp/plugin-hash': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + zod: 3.24.2 + + '@jimp/types@1.6.0': + dependencies: + zod: 3.24.2 + + '@jimp/utils@1.6.0': + dependencies: + '@jimp/types': 1.6.0 + tinycolor2: 1.6.0 '@jridgewell/gen-mapping@0.3.5': dependencies: @@ -5554,6 +5229,8 @@ snapshots: '@jridgewell/sourcemap-codec@1.4.15': {} + '@jridgewell/sourcemap-codec@1.5.0': {} + '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 @@ -5579,79 +5256,91 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@puppeteer/browsers@2.2.3': + '@puppeteer/browsers@2.10.0': dependencies: - debug: 4.3.4 + debug: 4.4.0 extract-zip: 2.0.1 progress: 2.0.3 - proxy-agent: 6.4.0 - semver: 7.6.0 - tar-fs: 3.0.5 - unbzip2-stream: 1.4.3 + proxy-agent: 6.5.0 + semver: 7.7.1 + tar-fs: 3.0.8 yargs: 17.7.2 transitivePeerDependencies: + - bare-buffer - supports-color - '@rollup/plugin-json@6.1.0(rollup@4.20.0)': + '@rollup/plugin-json@6.1.0(rollup@4.40.0)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.20.0) + '@rollup/pluginutils': 5.1.0(rollup@4.40.0) optionalDependencies: - rollup: 4.20.0 + rollup: 4.40.0 - '@rollup/pluginutils@5.1.0(rollup@4.20.0)': + '@rollup/pluginutils@5.1.0(rollup@4.40.0)': dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 4.20.0 + rollup: 4.40.0 - '@rollup/rollup-android-arm-eabi@4.20.0': + '@rollup/rollup-android-arm-eabi@4.40.0': optional: true - '@rollup/rollup-android-arm64@4.20.0': + '@rollup/rollup-android-arm64@4.40.0': optional: true - '@rollup/rollup-darwin-arm64@4.20.0': + '@rollup/rollup-darwin-arm64@4.40.0': optional: true - '@rollup/rollup-darwin-x64@4.20.0': + '@rollup/rollup-darwin-x64@4.40.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.20.0': + '@rollup/rollup-freebsd-arm64@4.40.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.20.0': + '@rollup/rollup-freebsd-x64@4.40.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.20.0': + '@rollup/rollup-linux-arm-gnueabihf@4.40.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.20.0': + '@rollup/rollup-linux-arm-musleabihf@4.40.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.20.0': + '@rollup/rollup-linux-arm64-gnu@4.40.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.20.0': + '@rollup/rollup-linux-arm64-musl@4.40.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.20.0': + '@rollup/rollup-linux-loongarch64-gnu@4.40.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.20.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.40.0': optional: true - '@rollup/rollup-linux-x64-musl@4.20.0': + '@rollup/rollup-linux-riscv64-gnu@4.40.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.20.0': + '@rollup/rollup-linux-riscv64-musl@4.40.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.20.0': + '@rollup/rollup-linux-s390x-gnu@4.40.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.20.0': + '@rollup/rollup-linux-x64-gnu@4.40.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.40.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.40.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.40.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.40.0': optional: true '@sec-ant/readable-stream@0.4.1': {} @@ -5674,11 +5363,10 @@ snapshots: '@tootallnate/quickjs-emscripten@0.23.0': {} - '@ts-morph/common@0.24.0': + '@ts-morph/common@0.26.1': dependencies: fast-glob: 3.3.2 minimatch: 9.0.4 - mkdirp: 3.0.1 path-browserify: 1.0.1 '@tsconfig/node10@1.0.11': {} @@ -5691,37 +5379,37 @@ snapshots: '@types/accepts@1.3.7': dependencies: - '@types/node': 22.1.0 + '@types/node': 22.14.1 '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.5 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.25.2 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 '@types/babel__traverse@7.20.5': dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.25.2 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.1.0 + '@types/node': 22.14.1 '@types/connect@3.4.38': dependencies: - '@types/node': 22.1.0 + '@types/node': 22.14.1 '@types/content-disposition@0.5.8': {} @@ -5730,13 +5418,15 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 - '@types/node': 22.1.0 + '@types/node': 22.14.1 '@types/estree@1.0.5': {} + '@types/estree@1.0.7': {} + '@types/express-serve-static-core@4.19.0': dependencies: - '@types/node': 22.1.0 + '@types/node': 22.14.1 '@types/qs': 6.9.15 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -5751,11 +5441,11 @@ snapshots: '@types/glob@8.1.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.1.0 + '@types/node': 22.14.1 '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.1.0 + '@types/node': 22.14.1 '@types/http-assert@1.5.5': {} @@ -5771,17 +5461,19 @@ snapshots: dependencies: '@types/istanbul-lib-report': 3.0.3 - '@types/jest@29.5.12': + '@types/jest@29.5.14': dependencies: expect: 29.7.0 pretty-format: 29.7.0 '@types/jsdom@20.0.1': dependencies: - '@types/node': 22.1.0 + '@types/node': 22.14.1 '@types/tough-cookie': 4.0.5 parse5: 7.1.2 + '@types/json-schema@7.0.15': {} + '@types/keygrip@1.0.6': {} '@types/koa-compose@3.2.8': @@ -5797,7 +5489,7 @@ snapshots: '@types/http-errors': 2.0.4 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.8 - '@types/node': 22.1.0 + '@types/node': 22.14.1 '@types/mime@1.3.5': {} @@ -5805,9 +5497,9 @@ snapshots: '@types/node@16.9.1': {} - '@types/node@22.1.0': + '@types/node@22.14.1': dependencies: - undici-types: 6.13.0 + undici-types: 6.21.0 '@types/pako@2.0.3': {} @@ -5818,16 +5510,16 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.1.0 + '@types/node': 22.14.1 '@types/serve-handler@6.1.4': dependencies: - '@types/node': 22.1.0 + '@types/node': 22.14.1 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.1.0 + '@types/node': 22.14.1 '@types/send': 0.17.4 '@types/stack-utils@2.0.3': {} @@ -5842,98 +5534,94 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.1.0 + '@types/node': 22.14.1 optional: true - '@typescript-eslint/eslint-plugin@8.0.0(@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@8.29.1(@typescript-eslint/parser@8.29.1(eslint@9.24.0)(typescript@5.8.3))(eslint@9.24.0)(typescript@5.8.3)': dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 8.0.0(eslint@9.8.0)(typescript@5.5.4) - '@typescript-eslint/scope-manager': 8.0.0 - '@typescript-eslint/type-utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4) - '@typescript-eslint/utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.0.0 - eslint: 9.8.0 + '@eslint-community/regexpp': 4.11.0 + '@typescript-eslint/parser': 8.29.1(eslint@9.24.0)(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.29.1 + '@typescript-eslint/type-utils': 8.29.1(eslint@9.24.0)(typescript@5.8.3) + '@typescript-eslint/utils': 8.29.1(eslint@9.24.0)(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.29.1 + eslint: 9.24.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.5.4) - optionalDependencies: - typescript: 5.5.4 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.0.0(eslint@9.8.0)(typescript@5.5.4)': + '@typescript-eslint/parser@8.29.1(eslint@9.24.0)(typescript@5.8.3)': dependencies: - '@typescript-eslint/scope-manager': 8.0.0 - '@typescript-eslint/types': 8.0.0 - '@typescript-eslint/typescript-estree': 8.0.0(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.0.0 + '@typescript-eslint/scope-manager': 8.29.1 + '@typescript-eslint/types': 8.29.1 + '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.29.1 debug: 4.3.4 - eslint: 9.8.0 - optionalDependencies: - typescript: 5.5.4 + eslint: 9.24.0 + typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.0.0': + '@typescript-eslint/scope-manager@8.29.1': dependencies: - '@typescript-eslint/types': 8.0.0 - '@typescript-eslint/visitor-keys': 8.0.0 + '@typescript-eslint/types': 8.29.1 + '@typescript-eslint/visitor-keys': 8.29.1 - '@typescript-eslint/type-utils@8.0.0(eslint@9.8.0)(typescript@5.5.4)': + '@typescript-eslint/type-utils@8.29.1(eslint@9.24.0)(typescript@5.8.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.0.0(typescript@5.5.4) - '@typescript-eslint/utils': 8.0.0(eslint@9.8.0)(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.8.3) + '@typescript-eslint/utils': 8.29.1(eslint@9.24.0)(typescript@5.8.3) debug: 4.3.4 - ts-api-utils: 1.3.0(typescript@5.5.4) - optionalDependencies: - typescript: 5.5.4 + eslint: 9.24.0 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 transitivePeerDependencies: - - eslint - supports-color - '@typescript-eslint/types@8.0.0': {} + '@typescript-eslint/types@8.29.1': {} - '@typescript-eslint/typescript-estree@8.0.0(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@8.29.1(typescript@5.8.3)': dependencies: - '@typescript-eslint/types': 8.0.0 - '@typescript-eslint/visitor-keys': 8.0.0 + '@typescript-eslint/types': 8.29.1 + '@typescript-eslint/visitor-keys': 8.29.1 debug: 4.3.4 - globby: 11.1.0 + fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.4 semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.5.4) - optionalDependencies: - typescript: 5.5.4 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.0.0(eslint@9.8.0)(typescript@5.5.4)': + '@typescript-eslint/utils@8.29.1(eslint@9.24.0)(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) - '@typescript-eslint/scope-manager': 8.0.0 - '@typescript-eslint/types': 8.0.0 - '@typescript-eslint/typescript-estree': 8.0.0(typescript@5.5.4) - eslint: 9.8.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.24.0) + '@typescript-eslint/scope-manager': 8.29.1 + '@typescript-eslint/types': 8.29.1 + '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.8.3) + eslint: 9.24.0 + typescript: 5.8.3 transitivePeerDependencies: - supports-color - - typescript - '@typescript-eslint/visitor-keys@8.0.0': + '@typescript-eslint/visitor-keys@8.29.1': dependencies: - '@typescript-eslint/types': 8.0.0 - eslint-visitor-keys: 3.4.3 + '@typescript-eslint/types': 8.29.1 + eslint-visitor-keys: 4.2.0 - '@vitejs/plugin-react@4.3.1(vite@5.3.5(@types/node@22.1.0)(less@4.2.0)(terser@5.31.3))': + '@vitejs/plugin-react@4.3.4(vite@6.2.6(@types/node@22.14.1)(less@4.3.0)(terser@5.39.0))': dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-transform-react-jsx-self': 7.24.5(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.25.2) + '@babel/core': 7.26.10 + '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.3.5(@types/node@22.1.0)(less@4.2.0)(terser@5.31.3) + vite: 6.2.6(@types/node@22.14.1)(less@4.3.0)(terser@5.39.0) transitivePeerDependencies: - supports-color @@ -5941,12 +5629,12 @@ snapshots: acorn-globals@7.0.1: dependencies: - acorn: 8.11.3 + acorn: 8.12.1 acorn-walk: 8.3.2 - acorn-jsx@5.3.2(acorn@8.12.1): + acorn-jsx@5.3.2(acorn@8.14.1): dependencies: - acorn: 8.12.1 + acorn: 8.14.1 acorn-walk@8.3.2: {} @@ -5954,17 +5642,15 @@ snapshots: acorn@8.12.1: {} + acorn@8.14.1: {} + agent-base@6.0.2: dependencies: debug: 4.3.4 transitivePeerDependencies: - supports-color - agent-base@7.1.1: - dependencies: - debug: 4.3.4 - transitivePeerDependencies: - - supports-color + agent-base@7.1.3: {} ajv@6.12.6: dependencies: @@ -6010,11 +5696,9 @@ snapshots: argparse@2.0.1: {} - array-union@2.1.0: {} - ast-types@0.13.4: dependencies: - tslib: 2.6.3 + tslib: 2.8.1 async@2.6.4: dependencies: @@ -6022,15 +5706,17 @@ snapshots: asynckit@0.4.0: {} + await-to-js@3.0.0: {} + b4a@1.6.6: {} - babel-jest@29.7.0(@babel/core@7.25.2): + babel-jest@29.7.0(@babel/core@7.26.10): dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.10 '@jest/transform': 29.7.0 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.25.2) + babel-preset-jest: 29.6.3(@babel/core@7.26.10) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -6039,7 +5725,7 @@ snapshots: babel-plugin-istanbul@6.1.1: dependencies: - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.24.8 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 @@ -6049,91 +5735,94 @@ snapshots: babel-plugin-jest-hoist@29.6.3: dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.24.5 + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.5 - babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.2): + babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.26.10): dependencies: - '@babel/compat-data': 7.25.2 - '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) + '@babel/compat-data': 7.26.8 + '@babel/core': 7.26.10 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.10) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.25.2): + babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.26.10): dependencies: - '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) - core-js-compat: 3.37.1 + '@babel/core': 7.26.10 + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.26.10) + core-js-compat: 3.41.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.25.2): + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.26.10): dependencies: - '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) + '@babel/core': 7.26.10 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.10) transitivePeerDependencies: - supports-color - babel-preset-current-node-syntax@1.0.1(@babel/core@7.25.2): + babel-preset-current-node-syntax@1.0.1(@babel/core@7.26.10): dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) + '@babel/core': 7.26.10 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.10) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.10) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.10) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.10) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.10) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.10) - babel-preset-jest@29.6.3(@babel/core@7.25.2): + babel-preset-jest@29.6.3(@babel/core@7.26.10): dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.10 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.25.2) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.26.10) balanced-match@1.0.2: {} bare-events@2.2.2: optional: true - bare-fs@2.3.0: + bare-events@2.5.4: + optional: true + + bare-fs@4.1.2: dependencies: - bare-events: 2.2.2 - bare-path: 2.1.2 - bare-stream: 1.0.0 + bare-events: 2.5.4 + bare-path: 3.0.0 + bare-stream: 2.6.5(bare-events@2.5.4) optional: true - bare-os@2.3.0: + bare-os@3.6.1: optional: true - bare-path@2.1.2: + bare-path@3.0.0: dependencies: - bare-os: 2.3.0 + bare-os: 3.6.1 optional: true - bare-stream@1.0.0: + bare-stream@2.6.5(bare-events@2.5.4): dependencies: - streamx: 2.16.1 + streamx: 2.22.0 + optionalDependencies: + bare-events: 2.5.4 optional: true - base64-js@1.5.1: {} - basic-auth@2.0.1: dependencies: safe-buffer: 5.1.2 basic-ftp@5.0.5: {} - bmp-js@0.1.0: {} + bmp-ts@1.0.9: {} brace-expansion@1.1.11: dependencies: @@ -6148,19 +5837,12 @@ snapshots: dependencies: fill-range: 7.0.1 - browserslist@4.23.0: + browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001620 - electron-to-chromium: 1.4.774 - node-releases: 2.0.14 - update-browserslist-db: 1.0.16(browserslist@4.23.0) - - browserslist@4.23.3: - dependencies: - caniuse-lite: 1.0.30001647 - electron-to-chromium: 1.5.4 - node-releases: 2.0.18 - update-browserslist-db: 1.1.0(browserslist@4.23.3) + caniuse-lite: 1.0.30001713 + electron-to-chromium: 1.5.136 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.24.4) bser@2.1.1: dependencies: @@ -6168,15 +5850,8 @@ snapshots: buffer-crc32@0.2.13: {} - buffer-equal@0.0.1: {} - buffer-from@1.1.2: {} - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - bytes@3.0.0: {} call-bind@1.0.7: @@ -6193,9 +5868,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001620: {} - - caniuse-lite@1.0.30001647: {} + caniuse-lite@1.0.30001713: {} chalk@2.4.2: dependencies: @@ -6208,16 +5881,15 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.3.0: {} + chalk@5.4.1: {} char-regex@1.0.2: {} - chromium-bidi@0.5.19(devtools-protocol@0.0.1286932): + chromium-bidi@3.0.0(devtools-protocol@0.0.1425554): dependencies: - devtools-protocol: 0.0.1286932 + devtools-protocol: 0.0.1425554 mitt: 3.0.1 - urlpattern-polyfill: 10.0.0 - zod: 3.22.4 + zod: 3.24.2 ci-info@3.9.0: {} @@ -6231,7 +5903,7 @@ snapshots: co@4.6.0: {} - code-block-writer@13.0.1: {} + code-block-writer@13.0.3: {} collect-v8-coverage@1.0.2: {} @@ -6263,28 +5935,28 @@ snapshots: dependencies: is-what: 3.14.1 - core-js-compat@3.37.1: + core-js-compat@3.41.0: dependencies: - browserslist: 4.23.0 + browserslist: 4.24.4 corser@2.0.1: {} - cosmiconfig@9.0.0(typescript@5.5.4): + cosmiconfig@9.0.0(typescript@5.8.3): dependencies: env-paths: 2.2.1 import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 optionalDependencies: - typescript: 5.5.4 + typescript: 5.8.3 - create-jest@29.7.0(@types/node@22.1.0)(ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4)): + create-jest@29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.8.3)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.1.0)(ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4)) + jest-config: 29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.8.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -6301,6 +5973,12 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + cssfontparser@1.2.1: {} cssom@0.3.8: {} @@ -6327,6 +6005,10 @@ snapshots: dependencies: ms: 2.1.2 + debug@4.4.0: + dependencies: + ms: 2.1.3 + decimal.js@10.4.3: {} dedent@1.5.3: {} @@ -6351,29 +6033,21 @@ snapshots: detect-newline@3.1.0: {} - devtools-protocol@0.0.1286932: {} + devtools-protocol@0.0.1425554: {} diff-sequences@29.6.3: {} diff@4.0.2: {} - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 - - dom-walk@0.1.2: {} - domexception@4.0.0: dependencies: webidl-conversions: 7.0.0 - dotenv@16.4.5: {} + dotenv@16.5.0: {} eastasianwidth@0.2.0: {} - electron-to-chromium@1.4.774: {} - - electron-to-chromium@1.5.4: {} + electron-to-chromium@1.5.136: {} emittery@0.13.1: {} @@ -6409,63 +6083,40 @@ snapshots: es-errors@1.3.0: {} - es-module-lexer@1.5.3: {} + es-module-lexer@1.6.0: {} - esbuild@0.21.5: + esbuild@0.25.2: optionalDependencies: - '@esbuild/aix-ppc64': 0.21.5 - '@esbuild/android-arm': 0.21.5 - '@esbuild/android-arm64': 0.21.5 - '@esbuild/android-x64': 0.21.5 - '@esbuild/darwin-arm64': 0.21.5 - '@esbuild/darwin-x64': 0.21.5 - '@esbuild/freebsd-arm64': 0.21.5 - '@esbuild/freebsd-x64': 0.21.5 - '@esbuild/linux-arm': 0.21.5 - '@esbuild/linux-arm64': 0.21.5 - '@esbuild/linux-ia32': 0.21.5 - '@esbuild/linux-loong64': 0.21.5 - '@esbuild/linux-mips64el': 0.21.5 - '@esbuild/linux-ppc64': 0.21.5 - '@esbuild/linux-riscv64': 0.21.5 - '@esbuild/linux-s390x': 0.21.5 - '@esbuild/linux-x64': 0.21.5 - '@esbuild/netbsd-x64': 0.21.5 - '@esbuild/openbsd-x64': 0.21.5 - '@esbuild/sunos-x64': 0.21.5 - '@esbuild/win32-arm64': 0.21.5 - '@esbuild/win32-ia32': 0.21.5 - '@esbuild/win32-x64': 0.21.5 - - esbuild@0.23.0: - optionalDependencies: - '@esbuild/aix-ppc64': 0.23.0 - '@esbuild/android-arm': 0.23.0 - '@esbuild/android-arm64': 0.23.0 - '@esbuild/android-x64': 0.23.0 - '@esbuild/darwin-arm64': 0.23.0 - '@esbuild/darwin-x64': 0.23.0 - '@esbuild/freebsd-arm64': 0.23.0 - '@esbuild/freebsd-x64': 0.23.0 - '@esbuild/linux-arm': 0.23.0 - '@esbuild/linux-arm64': 0.23.0 - '@esbuild/linux-ia32': 0.23.0 - '@esbuild/linux-loong64': 0.23.0 - '@esbuild/linux-mips64el': 0.23.0 - '@esbuild/linux-ppc64': 0.23.0 - '@esbuild/linux-riscv64': 0.23.0 - '@esbuild/linux-s390x': 0.23.0 - '@esbuild/linux-x64': 0.23.0 - '@esbuild/netbsd-x64': 0.23.0 - '@esbuild/openbsd-arm64': 0.23.0 - '@esbuild/openbsd-x64': 0.23.0 - '@esbuild/sunos-x64': 0.23.0 - '@esbuild/win32-arm64': 0.23.0 - '@esbuild/win32-ia32': 0.23.0 - '@esbuild/win32-x64': 0.23.0 + '@esbuild/aix-ppc64': 0.25.2 + '@esbuild/android-arm': 0.25.2 + '@esbuild/android-arm64': 0.25.2 + '@esbuild/android-x64': 0.25.2 + '@esbuild/darwin-arm64': 0.25.2 + '@esbuild/darwin-x64': 0.25.2 + '@esbuild/freebsd-arm64': 0.25.2 + '@esbuild/freebsd-x64': 0.25.2 + '@esbuild/linux-arm': 0.25.2 + '@esbuild/linux-arm64': 0.25.2 + '@esbuild/linux-ia32': 0.25.2 + '@esbuild/linux-loong64': 0.25.2 + '@esbuild/linux-mips64el': 0.25.2 + '@esbuild/linux-ppc64': 0.25.2 + '@esbuild/linux-riscv64': 0.25.2 + '@esbuild/linux-s390x': 0.25.2 + '@esbuild/linux-x64': 0.25.2 + '@esbuild/netbsd-arm64': 0.25.2 + '@esbuild/netbsd-x64': 0.25.2 + '@esbuild/openbsd-arm64': 0.25.2 + '@esbuild/openbsd-x64': 0.25.2 + '@esbuild/sunos-x64': 0.25.2 + '@esbuild/win32-arm64': 0.25.2 + '@esbuild/win32-ia32': 0.25.2 + '@esbuild/win32-x64': 0.25.2 escalade@3.1.2: {} + escalade@3.2.0: {} + escape-string-regexp@1.0.5: {} escape-string-regexp@2.0.0: {} @@ -6480,33 +6131,38 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-scope@8.0.2: + eslint-scope@8.3.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.0.0: {} + eslint-visitor-keys@4.2.0: {} - eslint@9.8.0: + eslint@9.24.0: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) - '@eslint-community/regexpp': 4.11.0 - '@eslint/config-array': 0.17.1 - '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.8.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.24.0) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.20.0 + '@eslint/config-helpers': 0.2.1 + '@eslint/core': 0.12.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.24.0 + '@eslint/plugin-kit': 0.2.8 + '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.3.0 - '@nodelib/fs.walk': 1.2.8 + '@humanwhocodes/retry': 0.4.2 + '@types/estree': 1.0.7 + '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 debug: 4.3.4 escape-string-regexp: 4.0.0 - eslint-scope: 8.0.2 - eslint-visitor-keys: 4.0.0 - espree: 10.1.0 + eslint-scope: 8.3.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -6516,23 +6172,19 @@ snapshots: ignore: 5.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 - is-path-inside: 3.0.3 json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 - strip-ansi: 6.0.1 - text-table: 0.2.0 transitivePeerDependencies: - supports-color - espree@10.1.0: + espree@10.3.0: dependencies: - acorn: 8.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) - eslint-visitor-keys: 4.0.0 + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint-visitor-keys: 4.2.0 esprima@4.0.1: {} @@ -6564,16 +6216,16 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - execa@9.3.0: + execa@9.5.2: dependencies: '@sindresorhus/merge-streams': 4.0.0 cross-spawn: 7.0.3 figures: 6.1.0 get-stream: 9.0.1 - human-signals: 7.0.0 + human-signals: 8.0.1 is-plain-obj: 4.1.0 is-stream: 4.0.1 - npm-run-path: 5.3.0 + npm-run-path: 6.0.0 pretty-ms: 9.1.0 signal-exit: 4.1.0 strip-final-newline: 4.0.0 @@ -6593,7 +6245,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.0 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -6617,10 +6269,6 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-url-parser@1.1.3: - dependencies: - punycode: 1.4.1 - fastq@1.17.1: dependencies: reusify: 1.0.4 @@ -6681,7 +6329,7 @@ snapshots: combined-stream: 1.0.8 mime-types: 2.1.35 - fs-extra@11.2.0: + fs-extra@11.3.0: dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 @@ -6719,7 +6367,7 @@ snapshots: '@sec-ant/readable-stream': 0.4.1 is-stream: 4.0.1 - get-tsconfig@4.7.5: + get-tsconfig@4.10.0: dependencies: resolve-pkg-maps: 1.0.0 @@ -6727,8 +6375,8 @@ snapshots: dependencies: basic-ftp: 5.0.5 data-uri-to-buffer: 6.0.2 - debug: 4.3.4 - fs-extra: 11.2.0 + debug: 4.4.0 + fs-extra: 11.3.0 transitivePeerDependencies: - supports-color @@ -6745,7 +6393,7 @@ snapshots: dependencies: is-glob: 4.0.3 - glob@11.0.0: + glob@11.0.1: dependencies: foreground-child: 3.1.1 jackspeak: 4.0.1 @@ -6763,24 +6411,10 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - global@4.4.0: - dependencies: - min-document: 2.19.0 - process: 0.11.10 - globals@11.12.0: {} globals@14.0.0: {} - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.1 - merge2: 1.4.1 - slash: 3.0.0 - gopd@1.0.1: dependencies: get-intrinsic: 1.2.4 @@ -6823,8 +6457,8 @@ snapshots: http-proxy-agent@7.0.2: dependencies: - agent-base: 7.1.1 - debug: 4.3.4 + agent-base: 7.1.3 + debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -6862,18 +6496,18 @@ snapshots: transitivePeerDependencies: - supports-color - https-proxy-agent@7.0.4: + https-proxy-agent@7.0.6: dependencies: - agent-base: 7.1.1 - debug: 4.3.4 + agent-base: 7.1.3 + debug: 4.4.0 transitivePeerDependencies: - supports-color human-signals@2.1.0: {} - human-signals@7.0.0: {} + human-signals@8.0.1: {} - husky@9.1.4: {} + husky@9.1.7: {} iconv-lite@0.6.3: dependencies: @@ -6924,8 +6558,6 @@ snapshots: is-fullwidth-code-point@3.0.0: {} - is-function@1.0.2: {} - is-generator-fn@2.1.0: {} is-glob@4.0.3: @@ -6934,8 +6566,6 @@ snapshots: is-number@7.0.0: {} - is-path-inside@3.0.3: {} - is-plain-obj@4.1.0: {} is-potential-custom-element-name@1.0.1: {} @@ -6950,19 +6580,12 @@ snapshots: isexe@2.0.0: {} - isomorphic-fetch@3.0.0: - dependencies: - node-fetch: 2.7.0 - whatwg-fetch: 3.6.20 - transitivePeerDependencies: - - encoding - istanbul-lib-coverage@3.2.2: {} istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.25.2 - '@babel/parser': 7.24.5 + '@babel/core': 7.26.10 + '@babel/parser': 7.25.3 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -6971,8 +6594,8 @@ snapshots: istanbul-lib-instrument@6.0.2: dependencies: - '@babel/core': 7.25.2 - '@babel/parser': 7.24.5 + '@babel/core': 7.26.10 + '@babel/parser': 7.25.3 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.6.2 @@ -7021,7 +6644,7 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.1.0 + '@types/node': 22.14.1 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.3 @@ -7041,16 +6664,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@22.1.0)(ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4)): + jest-cli@29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.8.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4)) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.8.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.1.0)(ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4)) + create-jest: 29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.8.3)) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@22.1.0)(ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4)) + jest-config: 29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.8.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -7060,12 +6683,12 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@22.1.0)(ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4)): + jest-config@29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.8.3)): dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.10 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.25.2) + babel-jest: 29.7.0(@babel/core@7.26.10) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -7085,8 +6708,8 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 22.1.0 - ts-node: 10.9.2(@types/node@22.1.0)(typescript@5.5.4) + '@types/node': 22.14.1 + ts-node: 10.9.2(@types/node@22.14.1)(typescript@5.8.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -7116,7 +6739,7 @@ snapshots: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/jsdom': 20.0.1 - '@types/node': 22.1.0 + '@types/node': 22.14.1 jest-mock: 29.7.0 jest-util: 29.7.0 jsdom: 20.0.3 @@ -7130,7 +6753,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.1.0 + '@types/node': 22.14.1 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -7140,7 +6763,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 22.1.0 + '@types/node': 22.14.1 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -7166,7 +6789,7 @@ snapshots: jest-message-util@29.7.0: dependencies: - '@babel/code-frame': 7.24.2 + '@babel/code-frame': 7.24.7 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -7179,7 +6802,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.1.0 + '@types/node': 22.14.1 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -7214,7 +6837,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.1.0 + '@types/node': 22.14.1 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -7242,7 +6865,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.1.0 + '@types/node': 22.14.1 chalk: 4.1.2 cjs-module-lexer: 1.3.1 collect-v8-coverage: 1.0.2 @@ -7262,15 +6885,15 @@ snapshots: jest-snapshot@29.7.0: dependencies: - '@babel/core': 7.25.2 - '@babel/generator': 7.24.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.25.2) - '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.25.2) - '@babel/types': 7.24.5 + '@babel/core': 7.26.10 + '@babel/generator': 7.25.0 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.26.10) + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.26.10) + '@babel/types': 7.25.2 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.25.2) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.26.10) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -7288,7 +6911,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.1.0 + '@types/node': 22.14.1 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -7307,7 +6930,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.1.0 + '@types/node': 22.14.1 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7316,31 +6939,52 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 22.1.0 + '@types/node': 22.14.1 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@22.1.0)(ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4)): + jest@29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.8.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4)) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.8.3)) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@22.1.0)(ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4)) + jest-cli: 29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.8.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros - supports-color - ts-node - jimp@0.22.12: + jimp@1.6.0: dependencies: - '@jimp/custom': 0.22.12 - '@jimp/plugins': 0.22.12(@jimp/custom@0.22.12) - '@jimp/types': 0.22.12(@jimp/custom@0.22.12) - regenerator-runtime: 0.13.11 - transitivePeerDependencies: - - encoding + '@jimp/core': 1.6.0 + '@jimp/diff': 1.6.0 + '@jimp/js-bmp': 1.6.0 + '@jimp/js-gif': 1.6.0 + '@jimp/js-jpeg': 1.6.0 + '@jimp/js-png': 1.6.0 + '@jimp/js-tiff': 1.6.0 + '@jimp/plugin-blit': 1.6.0 + '@jimp/plugin-blur': 1.6.0 + '@jimp/plugin-circle': 1.6.0 + '@jimp/plugin-color': 1.6.0 + '@jimp/plugin-contain': 1.6.0 + '@jimp/plugin-cover': 1.6.0 + '@jimp/plugin-crop': 1.6.0 + '@jimp/plugin-displace': 1.6.0 + '@jimp/plugin-dither': 1.6.0 + '@jimp/plugin-fisheye': 1.6.0 + '@jimp/plugin-flip': 1.6.0 + '@jimp/plugin-hash': 1.6.0 + '@jimp/plugin-mask': 1.6.0 + '@jimp/plugin-print': 1.6.0 + '@jimp/plugin-quantize': 1.6.0 + '@jimp/plugin-resize': 1.6.0 + '@jimp/plugin-rotate': 1.6.0 + '@jimp/plugin-threshold': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 jpeg-js@0.4.4: {} @@ -7360,7 +7004,7 @@ snapshots: jsdom@20.0.3: dependencies: abab: 2.0.6 - acorn: 8.11.3 + acorn: 8.12.1 acorn-globals: 7.0.1 cssom: 0.5.0 cssstyle: 2.3.0 @@ -7394,6 +7038,10 @@ snapshots: jsesc@2.5.2: {} + jsesc@3.0.2: {} + + jsesc@3.1.0: {} + json-buffer@3.0.1: {} json-parse-even-better-errors@2.3.1: {} @@ -7420,11 +7068,11 @@ snapshots: koa-compose@4.1.0: {} - less@4.2.0: + less@4.3.0: dependencies: copy-anything: 2.0.6 parse-node-version: 1.0.1 - tslib: 2.6.3 + tslib: 2.8.1 optionalDependencies: errno: 0.1.8 graceful-fs: 4.2.11 @@ -7443,17 +7091,6 @@ snapshots: lines-and-columns@1.2.4: {} - load-bmfont@1.4.1: - dependencies: - buffer-equal: 0.0.1 - mime: 1.6.0 - parse-bmfont-ascii: 1.0.6 - parse-bmfont-binary: 1.0.6 - parse-bmfont-xml: 1.1.6 - phin: 2.9.3 - xhr: 2.6.0 - xtend: 4.0.2 - locate-path@5.0.0: dependencies: p-locate: 4.1.0 @@ -7474,15 +7111,11 @@ snapshots: dependencies: yallist: 3.1.1 - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - lru-cache@7.18.3: {} - magic-string@0.30.10: + magic-string@0.30.17: dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 make-dir@2.1.0: dependencies: @@ -7525,11 +7158,9 @@ snapshots: mime@1.6.0: {} - mimic-fn@2.1.0: {} + mime@3.0.0: {} - min-document@2.19.0: - dependencies: - dom-walk: 0.1.2 + mimic-fn@2.1.0: {} minimatch@10.0.1: dependencies: @@ -7553,8 +7184,6 @@ snapshots: dependencies: minimist: 1.2.8 - mkdirp@3.0.1: {} - moo-color@1.0.3: dependencies: color-name: 1.1.4 @@ -7563,7 +7192,7 @@ snapshots: ms@2.1.3: {} - nanoid@3.3.7: {} + nanoid@3.3.11: {} natural-compare@1.4.0: {} @@ -7575,15 +7204,9 @@ snapshots: netmask@2.0.2: {} - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - node-int64@0.4.0: {} - node-releases@2.0.14: {} - - node-releases@2.0.18: {} + node-releases@2.0.19: {} normalize-path@3.0.0: {} @@ -7591,9 +7214,10 @@ snapshots: dependencies: path-key: 3.1.1 - npm-run-path@5.3.0: + npm-run-path@6.0.0: dependencies: path-key: 4.0.0 + unicorn-magic: 0.3.0 nwsapi@2.2.10: {} @@ -7638,16 +7262,16 @@ snapshots: p-try@2.2.0: {} - pac-proxy-agent@7.0.1: + pac-proxy-agent@7.2.0: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 - agent-base: 7.1.1 - debug: 4.3.4 + agent-base: 7.1.3 + debug: 4.4.0 get-uri: 6.0.3 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.4 + https-proxy-agent: 7.0.6 pac-resolver: 7.0.1 - socks-proxy-agent: 8.0.3 + socks-proxy-agent: 8.0.5 transitivePeerDependencies: - supports-color @@ -7675,11 +7299,9 @@ snapshots: xml-parse-from-string: 1.0.1 xml2js: 0.5.0 - parse-headers@2.0.5: {} - parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.24.2 + '@babel/code-frame': 7.24.7 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -7711,30 +7333,32 @@ snapshots: lru-cache: 11.0.0 minipass: 7.1.2 - path-to-regexp@2.2.1: {} + path-to-regexp@3.3.0: {} - path-type@4.0.0: {} + pathe@2.0.3: {} peek-readable@4.1.0: {} pend@1.2.0: {} - phin@2.9.3: {} - picocolors@1.0.1: {} + picocolors@1.1.1: {} + picomatch@2.3.1: {} + picomatch@4.0.2: {} + pify@4.0.1: optional: true pirates@4.0.6: {} - pixelmatch@4.0.2: + pixelmatch@5.3.0: dependencies: - pngjs: 3.4.0 + pngjs: 6.0.0 - pixelmatch@6.0.0: + pixelmatch@7.1.0: dependencies: pngjs: 7.0.0 @@ -7742,8 +7366,6 @@ snapshots: dependencies: find-up: 4.1.0 - pngjs@3.4.0: {} - pngjs@6.0.0: {} pngjs@7.0.0: {} @@ -7756,11 +7378,11 @@ snapshots: transitivePeerDependencies: - supports-color - postcss@8.4.40: + postcss@8.5.3: dependencies: - nanoid: 3.3.7 - picocolors: 1.0.1 - source-map-js: 1.2.0 + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 prelude-ls@1.2.1: {} @@ -7774,8 +7396,6 @@ snapshots: dependencies: parse-ms: 4.0.0 - process@0.11.10: {} - progress@2.0.3: {} prompts@2.4.2: @@ -7783,16 +7403,16 @@ snapshots: kleur: 3.0.3 sisteransi: 1.0.5 - proxy-agent@6.4.0: + proxy-agent@6.5.0: dependencies: - agent-base: 7.1.1 - debug: 4.3.4 + agent-base: 7.1.3 + debug: 4.4.0 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.4 + https-proxy-agent: 7.0.6 lru-cache: 7.18.3 - pac-proxy-agent: 7.0.1 + pac-proxy-agent: 7.2.0 proxy-from-env: 1.1.0 - socks-proxy-agent: 8.0.3 + socks-proxy-agent: 8.0.5 transitivePeerDependencies: - supports-color @@ -7808,29 +7428,32 @@ snapshots: end-of-stream: 1.4.4 once: 1.4.0 - punycode@1.4.1: {} - punycode@2.3.1: {} - puppeteer-core@22.9.0: + puppeteer-core@24.6.1: dependencies: - '@puppeteer/browsers': 2.2.3 - chromium-bidi: 0.5.19(devtools-protocol@0.0.1286932) - debug: 4.3.4 - devtools-protocol: 0.0.1286932 - ws: 8.17.0 + '@puppeteer/browsers': 2.10.0 + chromium-bidi: 3.0.0(devtools-protocol@0.0.1425554) + debug: 4.4.0 + devtools-protocol: 0.0.1425554 + typed-query-selector: 2.12.0 + ws: 8.18.1 transitivePeerDependencies: + - bare-buffer - bufferutil - supports-color - utf-8-validate - puppeteer@22.9.0(typescript@5.5.4): + puppeteer@24.6.1(typescript@5.8.3): dependencies: - '@puppeteer/browsers': 2.2.3 - cosmiconfig: 9.0.0(typescript@5.5.4) - devtools-protocol: 0.0.1286932 - puppeteer-core: 22.9.0 + '@puppeteer/browsers': 2.10.0 + chromium-bidi: 3.0.0(devtools-protocol@0.0.1425554) + cosmiconfig: 9.0.0(typescript@5.8.3) + devtools-protocol: 0.0.1425554 + puppeteer-core: 24.6.1 + typed-query-selector: 2.12.0 transitivePeerDependencies: + - bare-buffer - bufferutil - supports-color - typescript @@ -7868,9 +7491,11 @@ snapshots: dependencies: regenerate: 1.4.2 - regenerate@1.4.2: {} + regenerate-unicode-properties@10.2.0: + dependencies: + regenerate: 1.4.2 - regenerator-runtime@0.13.11: {} + regenerate@1.4.2: {} regenerator-runtime@0.14.1: {} @@ -7887,6 +7512,21 @@ snapshots: unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 + regexpu-core@6.2.0: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.0 + regjsgen: 0.8.0 + regjsparser: 0.12.0 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + + regjsgen@0.8.0: {} + + regjsparser@0.12.0: + dependencies: + jsesc: 3.0.2 + regjsparser@0.9.1: dependencies: jsesc: 0.5.0 @@ -7915,45 +7555,49 @@ snapshots: reusify@1.0.4: {} - rollup-plugin-dts@6.1.1(rollup@4.20.0)(typescript@5.5.4): + rollup-plugin-dts@6.2.1(rollup@4.40.0)(typescript@5.8.3): dependencies: - magic-string: 0.30.10 - rollup: 4.20.0 - typescript: 5.5.4 + magic-string: 0.30.17 + rollup: 4.40.0 + typescript: 5.8.3 optionalDependencies: - '@babel/code-frame': 7.24.2 + '@babel/code-frame': 7.26.2 - rollup-plugin-esbuild@6.1.1(esbuild@0.23.0)(rollup@4.20.0): + rollup-plugin-esbuild@6.2.1(esbuild@0.25.2)(rollup@4.40.0): dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.20.0) - debug: 4.3.4 - es-module-lexer: 1.5.3 - esbuild: 0.23.0 - get-tsconfig: 4.7.5 - rollup: 4.20.0 + debug: 4.4.0 + es-module-lexer: 1.6.0 + esbuild: 0.25.2 + get-tsconfig: 4.10.0 + rollup: 4.40.0 + unplugin-utils: 0.2.4 transitivePeerDependencies: - supports-color - rollup@4.20.0: + rollup@4.40.0: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.7 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.20.0 - '@rollup/rollup-android-arm64': 4.20.0 - '@rollup/rollup-darwin-arm64': 4.20.0 - '@rollup/rollup-darwin-x64': 4.20.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.20.0 - '@rollup/rollup-linux-arm-musleabihf': 4.20.0 - '@rollup/rollup-linux-arm64-gnu': 4.20.0 - '@rollup/rollup-linux-arm64-musl': 4.20.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.20.0 - '@rollup/rollup-linux-riscv64-gnu': 4.20.0 - '@rollup/rollup-linux-s390x-gnu': 4.20.0 - '@rollup/rollup-linux-x64-gnu': 4.20.0 - '@rollup/rollup-linux-x64-musl': 4.20.0 - '@rollup/rollup-win32-arm64-msvc': 4.20.0 - '@rollup/rollup-win32-ia32-msvc': 4.20.0 - '@rollup/rollup-win32-x64-msvc': 4.20.0 + '@rollup/rollup-android-arm-eabi': 4.40.0 + '@rollup/rollup-android-arm64': 4.40.0 + '@rollup/rollup-darwin-arm64': 4.40.0 + '@rollup/rollup-darwin-x64': 4.40.0 + '@rollup/rollup-freebsd-arm64': 4.40.0 + '@rollup/rollup-freebsd-x64': 4.40.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.40.0 + '@rollup/rollup-linux-arm-musleabihf': 4.40.0 + '@rollup/rollup-linux-arm64-gnu': 4.40.0 + '@rollup/rollup-linux-arm64-musl': 4.40.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.40.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.40.0 + '@rollup/rollup-linux-riscv64-gnu': 4.40.0 + '@rollup/rollup-linux-riscv64-musl': 4.40.0 + '@rollup/rollup-linux-s390x-gnu': 4.40.0 + '@rollup/rollup-linux-x64-gnu': 4.40.0 + '@rollup/rollup-linux-x64-musl': 4.40.0 + '@rollup/rollup-win32-arm64-msvc': 4.40.0 + '@rollup/rollup-win32-ia32-msvc': 4.40.0 + '@rollup/rollup-win32-x64-msvc': 4.40.0 fsevents: 2.3.3 run-parallel@1.2.0: @@ -7979,21 +7623,18 @@ snapshots: semver@6.3.1: {} - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 - semver@7.6.2: {} - serve-handler@6.1.5: + semver@7.7.1: {} + + serve-handler@6.1.6: dependencies: bytes: 3.0.0 content-disposition: 0.5.2 - fast-url-parser: 1.1.3 mime-types: 2.1.18 minimatch: 3.1.2 path-is-inside: 1.0.2 - path-to-regexp: 2.2.1 + path-to-regexp: 3.3.0 range-parser: 1.2.0 set-function-length@1.2.2: @@ -8022,16 +7663,18 @@ snapshots: signal-exit@4.1.0: {} + simple-xml-to-json@1.2.3: {} + sisteransi@1.0.5: {} slash@3.0.0: {} smart-buffer@4.2.0: {} - socks-proxy-agent@8.0.3: + socks-proxy-agent@8.0.5: dependencies: - agent-base: 7.1.1 - debug: 4.3.4 + agent-base: 7.1.3 + debug: 4.4.0 socks: 2.8.3 transitivePeerDependencies: - supports-color @@ -8041,7 +7684,7 @@ snapshots: ip-address: 9.0.5 smart-buffer: 4.2.0 - source-map-js@1.2.0: {} + source-map-js@1.2.1: {} source-map-support@0.5.13: dependencies: @@ -8070,6 +7713,14 @@ snapshots: optionalDependencies: bare-events: 2.2.2 + streamx@2.22.0: + dependencies: + fast-fifo: 1.3.2 + text-decoder: 1.2.3 + optionalDependencies: + bare-events: 2.5.4 + optional: true + string-length@4.0.2: dependencies: char-regex: 1.0.2 @@ -8128,13 +7779,15 @@ snapshots: symbol-tree@3.2.4: {} - tar-fs@3.0.5: + tar-fs@3.0.8: dependencies: pump: 3.0.0 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 2.3.0 - bare-path: 2.1.2 + bare-fs: 4.1.2 + bare-path: 3.0.0 + transitivePeerDependencies: + - bare-buffer tar-stream@3.1.7: dependencies: @@ -8142,10 +7795,10 @@ snapshots: fast-fifo: 1.3.2 streamx: 2.16.1 - terser@5.31.3: + terser@5.39.0: dependencies: '@jridgewell/source-map': 0.3.6 - acorn: 8.11.3 + acorn: 8.12.1 commander: 2.20.3 source-map-support: 0.5.21 @@ -8155,11 +7808,10 @@ snapshots: glob: 7.2.3 minimatch: 3.1.2 - text-table@0.2.0: {} - - through@2.3.8: {} - - timm@1.7.1: {} + text-decoder@1.2.3: + dependencies: + b4a: 1.6.6 + optional: true tinycolor2@1.6.0: {} @@ -8183,40 +7835,38 @@ snapshots: universalify: 0.2.0 url-parse: 1.5.10 - tr46@0.0.3: {} - tr46@3.0.0: dependencies: punycode: 2.3.1 - ts-api-utils@1.3.0(typescript@5.5.4): + ts-api-utils@2.1.0(typescript@5.8.3): dependencies: - typescript: 5.5.4 + typescript: 5.8.3 - ts-morph@23.0.0: + ts-morph@25.0.1: dependencies: - '@ts-morph/common': 0.24.0 - code-block-writer: 13.0.1 + '@ts-morph/common': 0.26.1 + code-block-writer: 13.0.3 - ts-node@10.9.2(@types/node@22.1.0)(typescript@5.5.4): + ts-node@10.9.2(@types/node@22.14.1)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.1.0 + '@types/node': 22.14.1 acorn: 8.11.3 acorn-walk: 8.3.2 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.5.4 + typescript: 5.8.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - tslib@2.6.3: {} + tslib@2.8.1: {} type-check@0.4.0: dependencies: @@ -8226,14 +7876,11 @@ snapshots: type-fest@0.21.3: {} - typescript@5.5.4: {} + typed-query-selector@2.12.0: {} - unbzip2-stream@1.4.3: - dependencies: - buffer: 5.7.1 - through: 2.3.8 + typescript@5.8.3: {} - undici-types@6.13.0: {} + undici-types@6.21.0: {} unicode-canonical-property-names-ecmascript@2.0.0: {} @@ -8246,6 +7893,8 @@ snapshots: unicode-property-aliases-ecmascript@2.1.0: {} + unicorn-magic@0.3.0: {} + union@0.5.0: dependencies: qs: 6.12.1 @@ -8254,17 +7903,16 @@ snapshots: universalify@2.0.1: {} - update-browserslist-db@1.0.16(browserslist@4.23.0): + unplugin-utils@0.2.4: dependencies: - browserslist: 4.23.0 - escalade: 3.1.2 - picocolors: 1.0.1 + pathe: 2.0.3 + picomatch: 4.0.2 - update-browserslist-db@1.1.0(browserslist@4.23.3): + update-browserslist-db@1.1.3(browserslist@4.24.4): dependencies: - browserslist: 4.23.3 - escalade: 3.1.2 - picocolors: 1.0.1 + browserslist: 4.24.4 + escalade: 3.2.0 + picocolors: 1.1.1 uri-js@4.4.1: dependencies: @@ -8277,8 +7925,6 @@ snapshots: querystringify: 2.2.0 requires-port: 1.0.0 - urlpattern-polyfill@10.0.0: {} - utif2@4.1.0: dependencies: pako: 1.0.11 @@ -8295,16 +7941,16 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 - vite@5.3.5(@types/node@22.1.0)(less@4.2.0)(terser@5.31.3): + vite@6.2.6(@types/node@22.14.1)(less@4.3.0)(terser@5.39.0): dependencies: - esbuild: 0.21.5 - postcss: 8.4.40 - rollup: 4.20.0 + esbuild: 0.25.2 + postcss: 8.5.3 + rollup: 4.40.0 optionalDependencies: - '@types/node': 22.1.0 + '@types/node': 22.14.1 fsevents: 2.3.3 - less: 4.2.0 - terser: 5.31.3 + less: 4.3.0 + terser: 5.39.0 w3c-xmlserializer@4.0.0: dependencies: @@ -8314,16 +7960,12 @@ snapshots: dependencies: makeerror: 1.0.12 - webidl-conversions@3.0.1: {} - webidl-conversions@7.0.0: {} whatwg-encoding@2.0.0: dependencies: iconv-lite: 0.6.3 - whatwg-fetch@3.6.20: {} - whatwg-mimetype@3.0.0: {} whatwg-url@11.0.0: @@ -8331,11 +7973,6 @@ snapshots: tr46: 3.0.0 webidl-conversions: 7.0.0 - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - which@2.0.2: dependencies: isexe: 2.0.0 @@ -8363,12 +8000,7 @@ snapshots: ws@8.17.0: {} - xhr@2.6.0: - dependencies: - global: 4.4.0 - is-function: 1.0.2 - parse-headers: 2.0.5 - xtend: 4.0.2 + ws@8.18.1: {} xml-name-validator@4.0.0: {} @@ -8383,14 +8015,10 @@ snapshots: xmlchars@2.2.0: {} - xtend@4.0.2: {} - y18n@5.0.8: {} yallist@3.1.1: {} - yallist@4.0.0: {} - yargs-parser@21.1.1: {} yargs@17.7.2: @@ -8414,4 +8042,4 @@ snapshots: yoctocolors@2.1.1: {} - zod@3.22.4: {} + zod@3.24.2: {} diff --git a/scripts/config.ts b/scripts/config.ts index 7cac7ca..40a7eeb 100644 --- a/scripts/config.ts +++ b/scripts/config.ts @@ -5,10 +5,6 @@ const packages = [ dirName: 'util', globalName: 'iDrawUtil' }, - { - dirName: 'board', - globalName: 'iDrawBoard' - }, { dirName: 'renderer', globalName: 'iDrawRenderer'