diff --git a/.gemini/settings.json b/.gemini/settings.json index 9b81c269ff7..407029a35b7 100644 --- a/.gemini/settings.json +++ b/.gemini/settings.json @@ -1,13 +1,13 @@ { - "mcpServers": { - "nx-mcp": { - "type": "stdio", - "command": "npx", - "args": [ - "nx", - "mcp" - ] - } - }, - "contextFileName": "AGENTS.md" + "mcpServers": { + "nx-mcp": { + "type": "stdio", + "command": "npx", + "args": [ + "nx", + "mcp" + ] + } + }, + "contextFileName": "AGENTS.md" } diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 67bfeef2bc3..a905309d5cf 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -29,22 +29,29 @@ jobs: - run: pnpm install + - name: Build All Packages + run: pnpm run build:ci + env: + CI: true + - name: Publish run: | + npm config set //registry.npmjs.org/:_authToken "" + TAG="${GITHUB_REF#refs/tags/}" + + BASE_CMD="lerna publish from-package --ignore-scripts --loglevel verbose" if [[ "$TAG" == *"-alpha."* ]]; then - pnpm run publish:alpha + $BASE_CMD --pre-dist-tag alpha --preid alpha elif [[ "$TAG" == *"-beta."* ]]; then - pnpm run publish:beta + $BASE_CMD --pre-dist-tag beta --preid beta + elif [[ "$TAG" == v1* ]]; then + $BASE_CMD --dist-tag v1 + elif [[ "$TAG" == v2* ]]; then + $BASE_CMD --dist-tag v2 + elif [[ "$TAG" == v3* ]]; then + $BASE_CMD --dist-tag v3 else - if [[ "$TAG" == v1* ]]; then - pnpm run publish:v1 - elif [[ "$TAG" == v2* ]]; then - pnpm run publish:v2 - elif [[ "$TAG" == v3* ]]; then - pnpm run publish:v3 - else - pnpm run publish:next - fi + $BASE_CMD fi diff --git a/.mcp.json b/.mcp.json index 06f7d6e8372..d20c98718f6 100644 --- a/.mcp.json +++ b/.mcp.json @@ -1,12 +1,12 @@ { - "mcpServers": { - "nx-mcp": { - "type": "stdio", - "command": "npx", - "args": [ - "nx", - "mcp" - ] - } + "mcpServers": { + "nx-mcp": { + "type": "stdio", + "command": "npx", + "args": [ + "nx", + "mcp" + ] } + } } diff --git a/AGENTS.md b/AGENTS.md index 91e8232c569..ec27f8330ef 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -9,5 +9,6 @@ - When working in individual projects, use the `nx_project_details` mcp tool to analyze and understand the specific project structure and dependencies - For questions around nx configuration, best practices or if you're unsure, use the `nx_docs` tool to get relevant, up-to-date docs. Always use this instead of assuming things about nx configuration - If the user needs help with an Nx configuration or project graph error, use the `nx_workspace` tool to get any errors +- For Nx plugin best practices, check `node_modules/@nx//PLUGIN.md`. Not all plugins have this file - proceed without it if unavailable. diff --git a/CHANGELOG.md b/CHANGELOG.md index 4cf842db6b0..50253b6672e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,59 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/workspace + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +### Bug Fixes + +- fixed some issues with emitters/absorbers life ([76f95ad](https://github.com/tsparticles/tsparticles/commit/76f95ad53bb9f7a9bc36e1cb725a4dac9e549d4e)) + +# [4.0.0-alpha.12](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.11...v4.0.0-alpha.12) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/workspace + +# [4.0.0-alpha.11](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.10...v4.0.0-alpha.11) (2026-02-02) + +### Bug Fixes + +- small fixes ([ea234fc](https://github.com/tsparticles/tsparticles/commit/ea234fc0bf5d373ccfc1b1d259ccea6a66934426)) +- small fixes ([c4e6d06](https://github.com/tsparticles/tsparticles/commit/c4e6d0691b9055165fb745eb6a77d6601dcebae2)) + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/workspace + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Bug Fixes + +- add particle to pool when unable to add to the canvas ([90343c7](https://github.com/tsparticles/tsparticles/commit/90343c7d933eabe5862cd44c49dac0e443a4328b)) +- change break to continue in default case for better flow ([c397377](https://github.com/tsparticles/tsparticles/commit/c3973771e2485627cba03f1b563861a6c24278da)) +- clear all relevant plugin types from container in clearPlugins method ([9c582ee](https://github.com/tsparticles/tsparticles/commit/9c582ee8801696cc84f9772a506f617e21aa36d7)) +- fixed performance picking only the used path generators ([8426714](https://github.com/tsparticles/tsparticles/commit/842671431c14336ee8182532361e35f64660edb5)) +- fixed some plugins initializations and cleanup ([f58601c](https://github.com/tsparticles/tsparticles/commit/f58601c61cf71509ec51f321a1aa9cbfaa55877d)) +- improved roll angle calculation and logic ([a886da3](https://github.com/tsparticles/tsparticles/commit/a886da36443ca811fdb5ec09cdfe0ebb9e8bf870)) +- remove unnecessary comment in Engine.ts ([fdee2c8](https://github.com/tsparticles/tsparticles/commit/fdee2c87727d24e32ed1808ebf801302e34e5015)) +- update getCacheKey function to include hdr parameter ([8dfa161](https://github.com/tsparticles/tsparticles/commit/8dfa16101a63de4d5d7df4c4073feb74ec6bce90)) +- update path generator reference in Particles.ts ([97dbfca](https://github.com/tsparticles/tsparticles/commit/97dbfca7751664a5207390e777a36fe47a41b29a)) + +### Features + +- add branches path generator and related configurations ([41de076](https://github.com/tsparticles/tsparticles/commit/41de07658b1d5ab92f566520ac197fcacc17ac18)) +- add brownian path generator and related configurations ([d42ccaf](https://github.com/tsparticles/tsparticles/commit/d42ccaf6903309bc3c9c55ca7e4d501f767c6bcb)) +- add effect particles with configuration and drawing logic ([dee10d8](https://github.com/tsparticles/tsparticles/commit/dee10d847b4339f38432906cd36e4a5c51679f7a)) +- add full card shape, and utilities for path drawing ([f4a985f](https://github.com/tsparticles/tsparticles/commit/f4a985f092e7da94e6f8bd211c3007246d0488b3)) +- add grid and maze path options for particle movement ([400a6f6](https://github.com/tsparticles/tsparticles/commit/400a6f652de8bbd192ceda25a37517f25e3f01d2)) +- add grid path generator and related files ([5d2a1c8](https://github.com/tsparticles/tsparticles/commit/5d2a1c869fb5b9fcfba07a31214c4b68455c59c7)) +- add Levy path generator and related configurations ([ae59df8](https://github.com/tsparticles/tsparticles/commit/ae59df81081c2436be6d38afb6f2c5997820d1fb)) +- add life management to Absorber with new AbsorberLife class ([78b5126](https://github.com/tsparticles/tsparticles/commit/78b512680df568a196c80ce4afceeb5916906f41)) +- add spiral path generator and related files ([5aeeb58](https://github.com/tsparticles/tsparticles/commit/5aeeb58c6413db6cee187c43c2d95620c866b409)) +- initialize plugin arrays for particle updates ([d0cd05d](https://github.com/tsparticles/tsparticles/commit/d0cd05d06f629bb4e51682bbe9c373e8987ee72b)) +- refactor path generators to use container-specific options and add spiral path generator ([3aa87c3](https://github.com/tsparticles/tsparticles/commit/3aa87c39c5a70adfb146cd281b62a229623e3412)) + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/workspace diff --git a/CLAUDE.md b/CLAUDE.md index 91e8232c569..ec27f8330ef 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -9,5 +9,6 @@ - When working in individual projects, use the `nx_project_details` mcp tool to analyze and understand the specific project structure and dependencies - For questions around nx configuration, best practices or if you're unsure, use the `nx_docs` tool to get relevant, up-to-date docs. Always use this instead of assuming things about nx configuration - If the user needs help with an Nx configuration or project graph error, use the `nx_workspace` tool to get any errors +- For Nx plugin best practices, check `node_modules/@nx//PLUGIN.md`. Not all plugins have this file - proceed without it if unavailable. diff --git a/bundles/all/CHANGELOG.md b/bundles/all/CHANGELOG.md index 99af95ebe7e..f47582a6615 100644 --- a/bundles/all/CHANGELOG.md +++ b/bundles/all/CHANGELOG.md @@ -3,6 +3,33 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/all + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/all + +# [4.0.0-alpha.11](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.10...v4.0.0-alpha.11) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/all + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/all + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Features + +- add branches path generator and related configurations ([41de076](https://github.com/tsparticles/tsparticles/commit/41de07658b1d5ab92f566520ac197fcacc17ac18)) +- add brownian path generator and related configurations ([d42ccaf](https://github.com/tsparticles/tsparticles/commit/d42ccaf6903309bc3c9c55ca7e4d501f767c6bcb)) +- add effect particles with configuration and drawing logic ([dee10d8](https://github.com/tsparticles/tsparticles/commit/dee10d847b4339f38432906cd36e4a5c51679f7a)) +- add grid path generator and related files ([5d2a1c8](https://github.com/tsparticles/tsparticles/commit/5d2a1c869fb5b9fcfba07a31214c4b68455c59c7)) +- add Levy path generator and related configurations ([ae59df8](https://github.com/tsparticles/tsparticles/commit/ae59df81081c2436be6d38afb6f2c5997820d1fb)) +- add spiral path generator and related files ([5aeeb58](https://github.com/tsparticles/tsparticles/commit/5aeeb58c6413db6cee187c43c2d95620c866b409)) + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/all diff --git a/bundles/all/package.dist.json b/bundles/all/package.dist.json index 16341dc2b86..284aae25095 100644 --- a/bundles/all/package.dist.json +++ b/bundles/all/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/all", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "Easily create highly customizable particle animations and use them as animated backgrounds for your website. Ready to use components available also for React, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Riot.js, Inferno.", "homepage": "https://particles.js.org", "repository": { @@ -99,72 +99,78 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/effect-bubble": "4.0.0-alpha.8", - "@tsparticles/effect-shadow": "4.0.0-alpha.8", - "@tsparticles/effect-trail": "4.0.0-alpha.8", - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/interaction-external-particle": "4.0.0-alpha.8", - "@tsparticles/interaction-external-pop": "4.0.0-alpha.8", - "@tsparticles/interaction-light": "4.0.0-alpha.8", - "@tsparticles/interaction-particles-repulse": "4.0.0-alpha.8", - "@tsparticles/path-curl-noise": "4.0.0-alpha.8", - "@tsparticles/path-curves": "4.0.0-alpha.8", - "@tsparticles/path-fractal-noise": "4.0.0-alpha.8", - "@tsparticles/path-perlin-noise": "4.0.0-alpha.8", - "@tsparticles/path-polygon": "4.0.0-alpha.8", - "@tsparticles/path-simplex-noise": "4.0.0-alpha.8", - "@tsparticles/path-svg": "4.0.0-alpha.8", - "@tsparticles/path-zig-zag": "4.0.0-alpha.8", - "@tsparticles/plugin-background-mask": "4.0.0-alpha.8", - "@tsparticles/plugin-blend": "4.0.0-alpha.8", - "@tsparticles/plugin-canvas-mask": "4.0.0-alpha.8", - "@tsparticles/plugin-easing-back": "4.0.0-alpha.8", - "@tsparticles/plugin-easing-bounce": "4.0.0-alpha.8", - "@tsparticles/plugin-easing-circ": "4.0.0-alpha.8", - "@tsparticles/plugin-easing-cubic": "4.0.0-alpha.8", - "@tsparticles/plugin-easing-elastic": "4.0.0-alpha.8", - "@tsparticles/plugin-easing-expo": "4.0.0-alpha.8", - "@tsparticles/plugin-easing-gaussian": "4.0.0-alpha.8", - "@tsparticles/plugin-easing-linear": "4.0.0-alpha.8", - "@tsparticles/plugin-easing-quart": "4.0.0-alpha.8", - "@tsparticles/plugin-easing-quint": "4.0.0-alpha.8", - "@tsparticles/plugin-easing-sigmoid": "4.0.0-alpha.8", - "@tsparticles/plugin-easing-sine": "4.0.0-alpha.8", - "@tsparticles/plugin-easing-smoothstep": "4.0.0-alpha.8", - "@tsparticles/plugin-emitters-shape-canvas": "4.0.0-alpha.8", - "@tsparticles/plugin-emitters-shape-path": "4.0.0-alpha.8", - "@tsparticles/plugin-emitters-shape-polygon": "4.0.0-alpha.8", - "@tsparticles/plugin-export-image": "4.0.0-alpha.8", - "@tsparticles/plugin-export-json": "4.0.0-alpha.8", - "@tsparticles/plugin-export-video": "4.0.0-alpha.8", - "@tsparticles/plugin-hsv-color": "4.0.0-alpha.8", - "@tsparticles/plugin-hwb-color": "4.0.0-alpha.8", - "@tsparticles/plugin-infection": "4.0.0-alpha.8", - "@tsparticles/plugin-lab-color": "4.0.0-alpha.8", - "@tsparticles/plugin-lch-color": "4.0.0-alpha.8", - "@tsparticles/plugin-manual-particles": "4.0.0-alpha.8", - "@tsparticles/plugin-motion": "4.0.0-alpha.8", - "@tsparticles/plugin-named-color": "4.0.0-alpha.8", - "@tsparticles/plugin-oklab-color": "4.0.0-alpha.8", - "@tsparticles/plugin-oklch-color": "4.0.0-alpha.8", - "@tsparticles/plugin-poisson-disc": "4.0.0-alpha.8", - "@tsparticles/plugin-polygon-mask": "4.0.0-alpha.8", - "@tsparticles/plugin-responsive": "4.0.0-alpha.8", - "@tsparticles/plugin-sounds": "4.0.0-alpha.8", - "@tsparticles/plugin-themes": "4.0.0-alpha.8", - "@tsparticles/plugin-trail": "4.0.0-alpha.8", - "@tsparticles/shape-arrow": "4.0.0-alpha.8", - "@tsparticles/shape-cards": "4.0.0-alpha.8", - "@tsparticles/shape-cog": "4.0.0-alpha.8", - "@tsparticles/shape-heart": "4.0.0-alpha.8", - "@tsparticles/shape-infinity": "4.0.0-alpha.8", - "@tsparticles/shape-path": "4.0.0-alpha.8", - "@tsparticles/shape-rounded-polygon": "4.0.0-alpha.8", - "@tsparticles/shape-rounded-rect": "4.0.0-alpha.8", - "@tsparticles/shape-spiral": "4.0.0-alpha.8", - "@tsparticles/updater-gradient": "4.0.0-alpha.8", - "@tsparticles/updater-orbit": "4.0.0-alpha.8", - "tsparticles": "4.0.0-alpha.8" + "@tsparticles/effect-bubble": "4.0.0-alpha.14", + "@tsparticles/effect-particles": "4.0.0-alpha.14", + "@tsparticles/effect-shadow": "4.0.0-alpha.14", + "@tsparticles/effect-trail": "4.0.0-alpha.14", + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/interaction-external-particle": "4.0.0-alpha.14", + "@tsparticles/interaction-external-pop": "4.0.0-alpha.14", + "@tsparticles/interaction-light": "4.0.0-alpha.14", + "@tsparticles/interaction-particles-repulse": "4.0.0-alpha.14", + "@tsparticles/path-branches": "4.0.0-alpha.14", + "@tsparticles/path-brownian": "4.0.0-alpha.14", + "@tsparticles/path-curl-noise": "4.0.0-alpha.14", + "@tsparticles/path-curves": "4.0.0-alpha.14", + "@tsparticles/path-fractal-noise": "4.0.0-alpha.14", + "@tsparticles/path-grid": "4.0.0-alpha.14", + "@tsparticles/path-levy": "4.0.0-alpha.14", + "@tsparticles/path-perlin-noise": "4.0.0-alpha.14", + "@tsparticles/path-polygon": "4.0.0-alpha.14", + "@tsparticles/path-simplex-noise": "4.0.0-alpha.14", + "@tsparticles/path-spiral": "4.0.0-alpha.14", + "@tsparticles/path-svg": "4.0.0-alpha.14", + "@tsparticles/path-zig-zag": "4.0.0-alpha.14", + "@tsparticles/plugin-background-mask": "4.0.0-alpha.14", + "@tsparticles/plugin-blend": "4.0.0-alpha.14", + "@tsparticles/plugin-canvas-mask": "4.0.0-alpha.14", + "@tsparticles/plugin-easing-back": "4.0.0-alpha.14", + "@tsparticles/plugin-easing-bounce": "4.0.0-alpha.14", + "@tsparticles/plugin-easing-circ": "4.0.0-alpha.14", + "@tsparticles/plugin-easing-cubic": "4.0.0-alpha.14", + "@tsparticles/plugin-easing-elastic": "4.0.0-alpha.14", + "@tsparticles/plugin-easing-expo": "4.0.0-alpha.14", + "@tsparticles/plugin-easing-gaussian": "4.0.0-alpha.14", + "@tsparticles/plugin-easing-linear": "4.0.0-alpha.14", + "@tsparticles/plugin-easing-quart": "4.0.0-alpha.14", + "@tsparticles/plugin-easing-quint": "4.0.0-alpha.14", + "@tsparticles/plugin-easing-sigmoid": "4.0.0-alpha.14", + "@tsparticles/plugin-easing-sine": "4.0.0-alpha.14", + "@tsparticles/plugin-easing-smoothstep": "4.0.0-alpha.14", + "@tsparticles/plugin-emitters-shape-canvas": "4.0.0-alpha.14", + "@tsparticles/plugin-emitters-shape-path": "4.0.0-alpha.14", + "@tsparticles/plugin-emitters-shape-polygon": "4.0.0-alpha.14", + "@tsparticles/plugin-export-image": "4.0.0-alpha.14", + "@tsparticles/plugin-export-json": "4.0.0-alpha.14", + "@tsparticles/plugin-export-video": "4.0.0-alpha.14", + "@tsparticles/plugin-hsv-color": "4.0.0-alpha.14", + "@tsparticles/plugin-hwb-color": "4.0.0-alpha.14", + "@tsparticles/plugin-infection": "4.0.0-alpha.14", + "@tsparticles/plugin-lab-color": "4.0.0-alpha.14", + "@tsparticles/plugin-lch-color": "4.0.0-alpha.14", + "@tsparticles/plugin-manual-particles": "4.0.0-alpha.14", + "@tsparticles/plugin-motion": "4.0.0-alpha.14", + "@tsparticles/plugin-named-color": "4.0.0-alpha.14", + "@tsparticles/plugin-oklab-color": "4.0.0-alpha.14", + "@tsparticles/plugin-oklch-color": "4.0.0-alpha.14", + "@tsparticles/plugin-poisson-disc": "4.0.0-alpha.14", + "@tsparticles/plugin-polygon-mask": "4.0.0-alpha.14", + "@tsparticles/plugin-responsive": "4.0.0-alpha.14", + "@tsparticles/plugin-sounds": "4.0.0-alpha.14", + "@tsparticles/plugin-themes": "4.0.0-alpha.14", + "@tsparticles/plugin-trail": "4.0.0-alpha.14", + "@tsparticles/shape-arrow": "4.0.0-alpha.14", + "@tsparticles/shape-cards": "4.0.0-alpha.14", + "@tsparticles/shape-cog": "4.0.0-alpha.14", + "@tsparticles/shape-heart": "4.0.0-alpha.14", + "@tsparticles/shape-infinity": "4.0.0-alpha.14", + "@tsparticles/shape-path": "4.0.0-alpha.14", + "@tsparticles/shape-rounded-polygon": "4.0.0-alpha.14", + "@tsparticles/shape-rounded-rect": "4.0.0-alpha.14", + "@tsparticles/shape-spiral": "4.0.0-alpha.14", + "@tsparticles/updater-gradient": "4.0.0-alpha.14", + "@tsparticles/updater-orbit": "4.0.0-alpha.14", + "tsparticles": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/bundles/all/package.json b/bundles/all/package.json index a4abf5f7b6c..f6631e6d6da 100644 --- a/bundles/all/package.json +++ b/bundles/all/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/all", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "Easily create highly customizable particle animations and use them as animated backgrounds for your website. Ready to use components available also for React, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Riot.js, Inferno.", "homepage": "https://particles.js.org", "scripts": { @@ -107,72 +107,78 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/effect-bubble": "workspace:4.0.0-alpha.8", - "@tsparticles/effect-shadow": "workspace:4.0.0-alpha.8", - "@tsparticles/effect-trail": "workspace:4.0.0-alpha.8", - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-particle": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-pop": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-light": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-particles-repulse": "workspace:4.0.0-alpha.8", - "@tsparticles/path-curl-noise": "workspace:4.0.0-alpha.8", - "@tsparticles/path-curves": "workspace:4.0.0-alpha.8", - "@tsparticles/path-fractal-noise": "workspace:4.0.0-alpha.8", - "@tsparticles/path-perlin-noise": "workspace:4.0.0-alpha.8", - "@tsparticles/path-polygon": "workspace:4.0.0-alpha.8", - "@tsparticles/path-simplex-noise": "workspace:4.0.0-alpha.8", - "@tsparticles/path-svg": "workspace:4.0.0-alpha.8", - "@tsparticles/path-zig-zag": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-background-mask": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-blend": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-canvas-mask": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-back": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-bounce": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-circ": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-cubic": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-elastic": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-expo": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-gaussian": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-linear": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-quart": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-quint": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-sigmoid": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-sine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-smoothstep": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-emitters-shape-canvas": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-emitters-shape-path": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-emitters-shape-polygon": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-export-image": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-export-json": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-export-video": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-hsv-color": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-hwb-color": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-infection": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-lab-color": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-lch-color": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-manual-particles": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-motion": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-named-color": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-oklab-color": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-oklch-color": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-poisson-disc": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-polygon-mask": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-responsive": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-sounds": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-themes": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-trail": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-arrow": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-cards": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-cog": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-heart": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-infinity": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-path": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-rounded-polygon": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-rounded-rect": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-spiral": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-gradient": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-orbit": "workspace:4.0.0-alpha.8", - "tsparticles": "workspace:4.0.0-alpha.8" + "@tsparticles/effect-bubble": "workspace:4.0.0-alpha.14", + "@tsparticles/effect-particles": "workspace:4.0.0-alpha.14", + "@tsparticles/effect-shadow": "workspace:4.0.0-alpha.14", + "@tsparticles/effect-trail": "workspace:4.0.0-alpha.14", + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-particle": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-pop": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-light": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-particles-repulse": "workspace:4.0.0-alpha.14", + "@tsparticles/path-branches": "workspace:4.0.0-alpha.14", + "@tsparticles/path-brownian": "workspace:4.0.0-alpha.14", + "@tsparticles/path-curl-noise": "workspace:4.0.0-alpha.14", + "@tsparticles/path-curves": "workspace:4.0.0-alpha.14", + "@tsparticles/path-fractal-noise": "workspace:4.0.0-alpha.14", + "@tsparticles/path-grid": "workspace:4.0.0-alpha.14", + "@tsparticles/path-levy": "workspace:4.0.0-alpha.14", + "@tsparticles/path-perlin-noise": "workspace:4.0.0-alpha.14", + "@tsparticles/path-polygon": "workspace:4.0.0-alpha.14", + "@tsparticles/path-simplex-noise": "workspace:4.0.0-alpha.14", + "@tsparticles/path-spiral": "workspace:4.0.0-alpha.14", + "@tsparticles/path-svg": "workspace:4.0.0-alpha.14", + "@tsparticles/path-zig-zag": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-background-mask": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-blend": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-canvas-mask": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-back": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-bounce": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-circ": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-cubic": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-elastic": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-expo": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-gaussian": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-linear": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-quart": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-quint": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-sigmoid": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-sine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-smoothstep": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-emitters-shape-canvas": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-emitters-shape-path": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-emitters-shape-polygon": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-export-image": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-export-json": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-export-video": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-hsv-color": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-hwb-color": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-infection": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-lab-color": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-lch-color": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-manual-particles": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-motion": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-named-color": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-oklab-color": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-oklch-color": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-poisson-disc": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-polygon-mask": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-responsive": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-sounds": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-themes": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-trail": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-arrow": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-cards": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-cog": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-heart": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-infinity": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-path": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-rounded-polygon": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-rounded-rect": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-spiral": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-gradient": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-orbit": "workspace:4.0.0-alpha.14", + "tsparticles": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/bundles/all/src/bundle.ts b/bundles/all/src/bundle.ts index ff1821e1e9e..fb4f1f806f7 100644 --- a/bundles/all/src/bundle.ts +++ b/bundles/all/src/bundle.ts @@ -1,5 +1,2 @@ -import { loadAll } from "./index.js"; - -export { loadAll }; - export * from "@tsparticles/engine"; +export { loadAll } from "./index.js"; diff --git a/bundles/all/src/index.ts b/bundles/all/src/index.ts index 416f772f75e..d9d37bba36b 100644 --- a/bundles/all/src/index.ts +++ b/bundles/all/src/index.ts @@ -57,8 +57,13 @@ export async function loadAll(engine: Engine): Promise { { loadGradientUpdater } = await import("@tsparticles/updater-gradient"), { loadHeartShape } = await import("@tsparticles/shape-heart"), { loadInfinityShape } = await import("@tsparticles/shape-infinity"), + { loadBranchesPath } = await import("@tsparticles/path-branches"), + { loadBrownianPath } = await import("@tsparticles/path-brownian"), + { loadGridPath } = await import("@tsparticles/path-grid"), + { loadLevyPath } = await import("@tsparticles/path-levy"), { loadPathShape } = await import("@tsparticles/shape-path"), { loadPolygonPath } = await import("@tsparticles/path-polygon"), + { loadSpiralPath } = await import("@tsparticles/path-spiral"), { loadRoundedPolygonShape } = await import("@tsparticles/shape-rounded-polygon"), { loadRoundedRectShape } = await import("@tsparticles/shape-rounded-rect"), { loadSpiralShape } = await import("@tsparticles/shape-spiral"), @@ -74,6 +79,7 @@ export async function loadAll(engine: Engine): Promise { { loadPerlinNoisePath } = await import("@tsparticles/path-perlin-noise"), { loadSimplexNoisePath } = await import("@tsparticles/path-simplex-noise"), { loadBubbleEffect } = await import("@tsparticles/effect-bubble"), + { loadParticlesEffect } = await import("@tsparticles/effect-particles"), { loadShadowEffect } = await import("@tsparticles/effect-shadow"), { loadTrailEffect } = await import("@tsparticles/effect-trail"), { loadEmittersShapeCanvas } = await import("@tsparticles/plugin-emitters-shape-canvas"), @@ -135,16 +141,22 @@ export async function loadAll(engine: Engine): Promise { await loadGradientUpdater(e); await loadOrbitUpdater(e); + await loadBranchesPath(e); + await loadBrownianPath(e); await loadCurlNoisePath(e); await loadCurvesPath(e); await loadFractalNoisePath(e); + await loadGridPath(e); + await loadLevyPath(e); await loadPerlinNoisePath(e); await loadPolygonPath(e); await loadSVGPath(e); + await loadSpiralPath(e); await loadZigZagPath(e); await loadSimplexNoisePath(e); await loadBubbleEffect(e); + await loadParticlesEffect(e); await loadShadowEffect(e); await loadTrailEffect(e); diff --git a/bundles/basic/CHANGELOG.md b/bundles/basic/CHANGELOG.md index c3f72ae7870..de373399bed 100644 --- a/bundles/basic/CHANGELOG.md +++ b/bundles/basic/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/basic + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/basic + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/basic + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/basic diff --git a/bundles/basic/package.dist.json b/bundles/basic/package.dist.json index e96a2766cdc..65ed98dbc37 100644 --- a/bundles/basic/package.dist.json +++ b/bundles/basic/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/basic", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "Easily create highly customizable particle animations and use them as animated backgrounds for your website. Ready to use components available also for React, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Riot.js, Inferno.", "homepage": "https://particles.js.org", "repository": { @@ -99,16 +99,16 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/move-base": "4.0.0-alpha.8", - "@tsparticles/plugin-hex-color": "4.0.0-alpha.8", - "@tsparticles/plugin-hsl-color": "4.0.0-alpha.8", - "@tsparticles/plugin-rgb-color": "4.0.0-alpha.8", - "@tsparticles/shape-circle": "4.0.0-alpha.8", - "@tsparticles/updater-color": "4.0.0-alpha.8", - "@tsparticles/updater-opacity": "4.0.0-alpha.8", - "@tsparticles/updater-out-modes": "4.0.0-alpha.8", - "@tsparticles/updater-size": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/move-base": "4.0.0-alpha.14", + "@tsparticles/plugin-hex-color": "4.0.0-alpha.14", + "@tsparticles/plugin-hsl-color": "4.0.0-alpha.14", + "@tsparticles/plugin-rgb-color": "4.0.0-alpha.14", + "@tsparticles/shape-circle": "4.0.0-alpha.14", + "@tsparticles/updater-color": "4.0.0-alpha.14", + "@tsparticles/updater-opacity": "4.0.0-alpha.14", + "@tsparticles/updater-out-modes": "4.0.0-alpha.14", + "@tsparticles/updater-size": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/bundles/basic/package.json b/bundles/basic/package.json index f7268f37335..515e1a530aa 100644 --- a/bundles/basic/package.json +++ b/bundles/basic/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/basic", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "Easily create highly customizable particle animations and use them as animated backgrounds for your website. Ready to use components available also for React, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Riot.js, Inferno.", "homepage": "https://particles.js.org", "scripts": { @@ -107,16 +107,16 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/move-base": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-hex-color": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-hsl-color": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-rgb-color": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-circle": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-color": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-opacity": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-out-modes": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-size": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/move-base": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-hex-color": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-hsl-color": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-rgb-color": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-circle": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-color": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-opacity": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-out-modes": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-size": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/bundles/basic/src/bundle.ts b/bundles/basic/src/bundle.ts index 8341dfe0dfb..1458e2fc12a 100644 --- a/bundles/basic/src/bundle.ts +++ b/bundles/basic/src/bundle.ts @@ -1,4 +1,2 @@ -import { loadBasic } from "./index.js"; - -export { loadBasic }; export * from "@tsparticles/engine"; +export { loadBasic } from "./index.js"; diff --git a/bundles/confetti/CHANGELOG.md b/bundles/confetti/CHANGELOG.md index db1962dbb00..0cc04a65bea 100644 --- a/bundles/confetti/CHANGELOG.md +++ b/bundles/confetti/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/confetti + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/confetti + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/confetti + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/confetti + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/confetti diff --git a/bundles/confetti/package.dist.json b/bundles/confetti/package.dist.json index 189f1307f04..ad624391764 100644 --- a/bundles/confetti/package.dist.json +++ b/bundles/confetti/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/confetti", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "Easily create highly customizable particle animations and use them as animated backgrounds for your website. Ready to use components available also for React, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Riot.js, Inferno.", "homepage": "https://particles.js.org", "repository": { @@ -99,22 +99,22 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/basic": "4.0.0-alpha.8", - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-emitters": "4.0.0-alpha.8", - "@tsparticles/plugin-motion": "4.0.0-alpha.8", - "@tsparticles/shape-cards": "4.0.0-alpha.8", - "@tsparticles/shape-emoji": "4.0.0-alpha.8", - "@tsparticles/shape-heart": "4.0.0-alpha.8", - "@tsparticles/shape-image": "4.0.0-alpha.8", - "@tsparticles/shape-polygon": "4.0.0-alpha.8", - "@tsparticles/shape-square": "4.0.0-alpha.8", - "@tsparticles/shape-star": "4.0.0-alpha.8", - "@tsparticles/updater-life": "4.0.0-alpha.8", - "@tsparticles/updater-roll": "4.0.0-alpha.8", - "@tsparticles/updater-rotate": "4.0.0-alpha.8", - "@tsparticles/updater-tilt": "4.0.0-alpha.8", - "@tsparticles/updater-wobble": "4.0.0-alpha.8" + "@tsparticles/basic": "4.0.0-alpha.14", + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-emitters": "4.0.0-alpha.14", + "@tsparticles/plugin-motion": "4.0.0-alpha.14", + "@tsparticles/shape-cards": "4.0.0-alpha.14", + "@tsparticles/shape-emoji": "4.0.0-alpha.14", + "@tsparticles/shape-heart": "4.0.0-alpha.14", + "@tsparticles/shape-image": "4.0.0-alpha.14", + "@tsparticles/shape-polygon": "4.0.0-alpha.14", + "@tsparticles/shape-square": "4.0.0-alpha.14", + "@tsparticles/shape-star": "4.0.0-alpha.14", + "@tsparticles/updater-life": "4.0.0-alpha.14", + "@tsparticles/updater-roll": "4.0.0-alpha.14", + "@tsparticles/updater-rotate": "4.0.0-alpha.14", + "@tsparticles/updater-tilt": "4.0.0-alpha.14", + "@tsparticles/updater-wobble": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/bundles/confetti/package.json b/bundles/confetti/package.json index cc038c48622..17f8d9e8ed4 100644 --- a/bundles/confetti/package.json +++ b/bundles/confetti/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/confetti", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "Easily create highly customizable particle animations and use them as animated backgrounds for your website. Ready to use components available also for React, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Riot.js, Inferno.", "homepage": "https://particles.js.org", "scripts": { @@ -107,22 +107,22 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/basic": "workspace:4.0.0-alpha.8", - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-emitters": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-motion": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-cards": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-emoji": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-heart": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-image": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-polygon": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-square": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-star": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-life": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-roll": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-rotate": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-tilt": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-wobble": "workspace:4.0.0-alpha.8" + "@tsparticles/basic": "workspace:4.0.0-alpha.14", + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-emitters": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-motion": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-cards": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-emoji": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-heart": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-image": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-polygon": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-square": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-star": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-life": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-roll": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-rotate": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-tilt": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-wobble": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/bundles/confetti/src/ConfettiOptions.ts b/bundles/confetti/src/ConfettiOptions.ts index 8a7e64e40b3..14946698562 100644 --- a/bundles/confetti/src/ConfettiOptions.ts +++ b/bundles/confetti/src/ConfettiOptions.ts @@ -208,8 +208,8 @@ export class ConfettiOptions implements IConfettiOptions, IOptionLoader; - declare global { /** * @@ -47,10 +35,21 @@ declare global { }; } -let initialized = false; -let initializing = false; +/** + * + */ +export type ConfettiFirstParam = string | RecursivePartial; + +let initialized = false, + initializing = false; -const ids = new Map(); +const ids = new Map(), + defaultGravity = 9.81, + sizeFactor = 5, + speedFactor = 3, + decayOffset = 1, + disableRotate = 0, + disableTilt = 0; /** * The {@link confetti} parameter object definition @@ -426,8 +425,7 @@ export async function confetti( ): Promise { await initPlugins(tsParticles); - let options: RecursivePartial; - let id: string; + let options: RecursivePartial, id: string; if (isString(idOrOptions)) { id = idOrOptions; @@ -463,8 +461,7 @@ confetti.create = async ( idOrOptions: ConfettiFirstParam, confettiOptions?: RecursivePartial, ): Promise => { - let subOptions: RecursivePartial; - let subId: string; + let subOptions: RecursivePartial, subId: string; if (isString(idOrOptions)) { subId = idOrOptions; diff --git a/bundles/fireworks/CHANGELOG.md b/bundles/fireworks/CHANGELOG.md index e1069d95398..55f8253a069 100644 --- a/bundles/fireworks/CHANGELOG.md +++ b/bundles/fireworks/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/fireworks + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/fireworks + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/fireworks + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/fireworks + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/fireworks diff --git a/bundles/fireworks/package.dist.json b/bundles/fireworks/package.dist.json index 90b13b23ae9..8199b4210aa 100644 --- a/bundles/fireworks/package.dist.json +++ b/bundles/fireworks/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/fireworks", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "Easily create highly customizable particle animations and use them as animated backgrounds for your website. Ready to use components available also for React, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Riot.js, Inferno.", "homepage": "https://particles.js.org", "repository": { @@ -99,15 +99,15 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/basic": "4.0.0-alpha.8", - "@tsparticles/effect-trail": "4.0.0-alpha.8", - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-emitters": "4.0.0-alpha.8", - "@tsparticles/plugin-emitters-shape-square": "4.0.0-alpha.8", - "@tsparticles/plugin-sounds": "4.0.0-alpha.8", - "@tsparticles/updater-destroy": "4.0.0-alpha.8", - "@tsparticles/updater-life": "4.0.0-alpha.8", - "@tsparticles/updater-rotate": "4.0.0-alpha.8" + "@tsparticles/basic": "4.0.0-alpha.14", + "@tsparticles/effect-trail": "4.0.0-alpha.14", + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-emitters": "4.0.0-alpha.14", + "@tsparticles/plugin-emitters-shape-square": "4.0.0-alpha.14", + "@tsparticles/plugin-sounds": "4.0.0-alpha.14", + "@tsparticles/updater-destroy": "4.0.0-alpha.14", + "@tsparticles/updater-life": "4.0.0-alpha.14", + "@tsparticles/updater-rotate": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/bundles/fireworks/package.json b/bundles/fireworks/package.json index 88d2d392f03..4c4d3e4ae81 100644 --- a/bundles/fireworks/package.json +++ b/bundles/fireworks/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/fireworks", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "Easily create highly customizable particle animations and use them as animated backgrounds for your website. Ready to use components available also for React, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Riot.js, Inferno.", "homepage": "https://particles.js.org", "scripts": { @@ -107,15 +107,15 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/basic": "workspace:4.0.0-alpha.8", - "@tsparticles/effect-trail": "workspace:4.0.0-alpha.8", - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-emitters": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-emitters-shape-square": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-sounds": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-destroy": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-life": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-rotate": "workspace:4.0.0-alpha.8" + "@tsparticles/basic": "workspace:4.0.0-alpha.14", + "@tsparticles/effect-trail": "workspace:4.0.0-alpha.14", + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-emitters": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-emitters-shape-square": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-sounds": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-destroy": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-life": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-rotate": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/bundles/fireworks/src/fireworks.ts b/bundles/fireworks/src/fireworks.ts index c0b88c6aab4..f127717bc88 100644 --- a/bundles/fireworks/src/fireworks.ts +++ b/bundles/fireworks/src/fireworks.ts @@ -22,10 +22,10 @@ import type { IFireworkOptions } from "./IFireworkOptions.js"; declare const __VERSION__: string; -const minSplitCount = 2; +let initialized = false, + initializing = false; -let initialized = false; -let initializing = false; +const minSplitCount = 2; type FireworksFunc = (( idOrOptions: string | RecursivePartial, @@ -358,8 +358,7 @@ export async function fireworks( idOrOptions?: string | RecursivePartial, sourceOptions?: RecursivePartial, ): Promise { - let id: string; - let options: RecursivePartial; + let id: string, options: RecursivePartial; if (isString(idOrOptions)) { id = idOrOptions; diff --git a/bundles/full/CHANGELOG.md b/bundles/full/CHANGELOG.md index 362e6667970..5ae0041282c 100644 --- a/bundles/full/CHANGELOG.md +++ b/bundles/full/CHANGELOG.md @@ -3,6 +3,26 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package tsparticles + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package tsparticles + +# [4.0.0-alpha.11](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.10...v4.0.0-alpha.11) (2026-02-02) + +**Note:** Version bump only for package tsparticles + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package tsparticles + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package tsparticles + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package tsparticles diff --git a/bundles/full/package.dist.json b/bundles/full/package.dist.json index c76fc6abcc9..adeef57942f 100644 --- a/bundles/full/package.dist.json +++ b/bundles/full/package.dist.json @@ -1,6 +1,6 @@ { "name": "tsparticles", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "Easily create highly customizable particle animations and use them as animated backgrounds for your website. Ready to use components available also for React, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Riot.js, Inferno.", "homepage": "https://particles.js.org", "repository": { @@ -99,19 +99,19 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/interaction-external-trail": "4.0.0-alpha.8", - "@tsparticles/plugin-absorbers": "4.0.0-alpha.8", - "@tsparticles/plugin-emitters": "4.0.0-alpha.8", - "@tsparticles/plugin-emitters-shape-circle": "4.0.0-alpha.8", - "@tsparticles/plugin-emitters-shape-square": "4.0.0-alpha.8", - "@tsparticles/shape-text": "4.0.0-alpha.8", - "@tsparticles/slim": "4.0.0-alpha.8", - "@tsparticles/updater-destroy": "4.0.0-alpha.8", - "@tsparticles/updater-roll": "4.0.0-alpha.8", - "@tsparticles/updater-tilt": "4.0.0-alpha.8", - "@tsparticles/updater-twinkle": "4.0.0-alpha.8", - "@tsparticles/updater-wobble": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/interaction-external-trail": "4.0.0-alpha.14", + "@tsparticles/plugin-absorbers": "4.0.0-alpha.14", + "@tsparticles/plugin-emitters": "4.0.0-alpha.14", + "@tsparticles/plugin-emitters-shape-circle": "4.0.0-alpha.14", + "@tsparticles/plugin-emitters-shape-square": "4.0.0-alpha.14", + "@tsparticles/shape-text": "4.0.0-alpha.14", + "@tsparticles/slim": "4.0.0-alpha.14", + "@tsparticles/updater-destroy": "4.0.0-alpha.14", + "@tsparticles/updater-roll": "4.0.0-alpha.14", + "@tsparticles/updater-tilt": "4.0.0-alpha.14", + "@tsparticles/updater-twinkle": "4.0.0-alpha.14", + "@tsparticles/updater-wobble": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/bundles/full/package.json b/bundles/full/package.json index c8b6f820d70..d98090db4df 100644 --- a/bundles/full/package.json +++ b/bundles/full/package.json @@ -1,6 +1,6 @@ { "name": "tsparticles", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "Easily create highly customizable particle animations and use them as animated backgrounds for your website. Ready to use components available also for React, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Riot.js, Inferno.", "homepage": "https://particles.js.org", "scripts": { @@ -107,19 +107,19 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-trail": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-absorbers": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-emitters": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-emitters-shape-circle": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-emitters-shape-square": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-text": "workspace:4.0.0-alpha.8", - "@tsparticles/slim": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-destroy": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-roll": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-tilt": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-twinkle": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-wobble": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-trail": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-absorbers": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-emitters": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-emitters-shape-circle": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-emitters-shape-square": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-text": "workspace:4.0.0-alpha.14", + "@tsparticles/slim": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-destroy": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-roll": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-tilt": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-twinkle": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-wobble": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/bundles/full/src/bundle.ts b/bundles/full/src/bundle.ts index f577855f372..4eb9d25cd38 100644 --- a/bundles/full/src/bundle.ts +++ b/bundles/full/src/bundle.ts @@ -1,5 +1,2 @@ -import { loadFull } from "./index.js"; - -export { loadFull }; - export * from "@tsparticles/engine"; +export { loadFull } from "./index.js"; diff --git a/bundles/pjs/CHANGELOG.md b/bundles/pjs/CHANGELOG.md index 3a20307a51c..ac8ccd11454 100644 --- a/bundles/pjs/CHANGELOG.md +++ b/bundles/pjs/CHANGELOG.md @@ -3,6 +3,28 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/pjs + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/pjs + +# [4.0.0-alpha.11](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.10...v4.0.0-alpha.11) (2026-02-02) + +### Bug Fixes + +- small fixes ([c4e6d06](https://github.com/tsparticles/tsparticles/commit/c4e6d0691b9055165fb745eb6a77d6601dcebae2)) + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/pjs + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/pjs + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/pjs diff --git a/bundles/pjs/package.dist.json b/bundles/pjs/package.dist.json index f434ee1503d..f31740e663a 100644 --- a/bundles/pjs/package.dist.json +++ b/bundles/pjs/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/pjs", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "Easily create highly customizable particle animations and use them as animated backgrounds for your website. Ready to use components available also for React, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Riot.js, Inferno.", "homepage": "https://particles.js.org", "repository": { @@ -99,9 +99,9 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-responsive": "4.0.0-alpha.8", - "tsparticles": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-responsive": "4.0.0-alpha.14", + "tsparticles": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/bundles/pjs/package.json b/bundles/pjs/package.json index 3b95d2d0c03..332ad80a650 100644 --- a/bundles/pjs/package.json +++ b/bundles/pjs/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/pjs", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "Easily create highly customizable particle animations and use them as animated backgrounds for your website. Ready to use components available also for React, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Riot.js, Inferno.", "homepage": "https://particles.js.org", "scripts": { @@ -107,12 +107,12 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-responsive": "workspace:4.0.0-alpha.8", - "tsparticles": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-responsive": "workspace:4.0.0-alpha.14", + "tsparticles": "workspace:4.0.0-alpha.14" }, "devDependencies": { - "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.8" + "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/bundles/pjs/src/VincentGarreau/particles.ts b/bundles/pjs/src/VincentGarreau/particles.ts index 78f78db3025..0605b4db873 100644 --- a/bundles/pjs/src/VincentGarreau/particles.ts +++ b/bundles/pjs/src/VincentGarreau/particles.ts @@ -114,215 +114,212 @@ const defaultMinOpacity = 0, }, }, retina_detect: false, - }; - -const initParticlesJS = ( - engine: InteractivityEngine, -): { - /** - * @deprecated this method is obsolete, please use the new {@link Engine.dom | tsParticles.dom} - * The particles.js compatibility dom array - */ - pJSDom: Container[]; + }, + initParticlesJS = ( + engine: InteractivityEngine, + ): { + /** + * @deprecated this method is obsolete, please use the new {@link Engine.dom | tsParticles.dom} + * The particles.js compatibility dom array + */ + pJSDom: Container[]; - /** - * @deprecated this method is obsolete, please use the new {@link Engine.load | tsParticles.load} - * The particles.js compatibility instance - */ - particlesJS: IParticlesJS; -} => { - /** - * Loads the provided options to create a {@link Container} object. - * @deprecated this method is obsolete, please use the new tsParticles.load - * @param tagId - the particles container element id - * @param options - the options object to initialize the {@link Container} - * @returns the loaded container - */ - const particlesJS = async ( - tagId: string, - options: RecursivePartial, - ): Promise => { - const fixedOptions = deepExtend({}, defaultPjsOptions, options) as IParticlesJSOptions; + /** + * @deprecated this method is obsolete, please use the new {@link Engine.load | tsParticles.load} + * The particles.js compatibility instance + */ + particlesJS: IParticlesJS; + } => { + /** + * Loads the provided options to create a {@link Container} object. + * @deprecated this method is obsolete, please use the new tsParticles.load + * @param tagId - the particles container element id + * @param options - the options object to initialize the {@link Container} + * @returns the loaded container + */ + const particlesJS = async ( + tagId: string, + options: RecursivePartial, + ): Promise => { + const fixedOptions = deepExtend({}, defaultPjsOptions, options) as IParticlesJSOptions; - return await engine.load({ - id: tagId, - options: { - fullScreen: { - enable: false, - }, - detectRetina: fixedOptions.retina_detect, - smooth: true, - interactivity: { - detectsOn: fixedOptions.interactivity.detect_on, - events: { - onHover: { - enable: fixedOptions.interactivity.events.onhover.enable, - mode: fixedOptions.interactivity.events.onhover.mode, - }, - onClick: { - enable: fixedOptions.interactivity.events.onclick.enable, - mode: fixedOptions.interactivity.events.onclick.mode, - }, + return await engine.load({ + id: tagId, + options: { + fullScreen: { + enable: false, }, - modes: { - grab: { - distance: fixedOptions.interactivity.modes.grab.distance, - links: { - opacity: fixedOptions.interactivity.modes.grab.line_linked.opacity, + detectRetina: fixedOptions.retina_detect, + smooth: true, + interactivity: { + detectsOn: fixedOptions.interactivity.detect_on, + events: { + onHover: { + enable: fixedOptions.interactivity.events.onhover.enable, + mode: fixedOptions.interactivity.events.onhover.mode, + }, + onClick: { + enable: fixedOptions.interactivity.events.onclick.enable, + mode: fixedOptions.interactivity.events.onclick.mode, }, }, - bubble: { - distance: fixedOptions.interactivity.modes.bubble.distance, - size: fixedOptions.interactivity.modes.bubble.size, - duration: fixedOptions.interactivity.modes.bubble.duration, - opacity: fixedOptions.interactivity.modes.bubble.opacity, - speed: fixedOptions.interactivity.modes.bubble.speed, - }, - repulse: { - distance: fixedOptions.interactivity.modes.repulse.distance, - duration: fixedOptions.interactivity.modes.repulse.duration, - }, - push: { - quantity: fixedOptions.interactivity.modes.push.particles_nb, - }, - remove: { - quantity: fixedOptions.interactivity.modes.remove.particles_nb, + modes: { + grab: { + distance: fixedOptions.interactivity.modes.grab.distance, + links: { + opacity: fixedOptions.interactivity.modes.grab.line_linked.opacity, + }, + }, + bubble: { + distance: fixedOptions.interactivity.modes.bubble.distance, + size: fixedOptions.interactivity.modes.bubble.size, + duration: fixedOptions.interactivity.modes.bubble.duration, + opacity: fixedOptions.interactivity.modes.bubble.opacity, + speed: fixedOptions.interactivity.modes.bubble.speed, + }, + repulse: { + distance: fixedOptions.interactivity.modes.repulse.distance, + duration: fixedOptions.interactivity.modes.repulse.duration, + }, + push: { + quantity: fixedOptions.interactivity.modes.push.particles_nb, + }, + remove: { + quantity: fixedOptions.interactivity.modes.remove.particles_nb, + }, }, }, - }, - particles: { - collisions: { - enable: fixedOptions.particles.move.bounce, - }, - number: { - value: fixedOptions.particles.number.value, - density: { - enable: fixedOptions.particles.number.density.enable, - width: fixedOptions.particles.number.density.value_area, + particles: { + collisions: { + enable: fixedOptions.particles.move.bounce, + }, + number: { + value: fixedOptions.particles.number.value, + density: { + enable: fixedOptions.particles.number.density.enable, + width: fixedOptions.particles.number.density.value_area, + }, }, - }, - color: { - value: fixedOptions.particles.color.value, - }, - stroke: { - width: fixedOptions.particles.shape.stroke.width, color: { - value: fixedOptions.particles.shape.stroke.color, + value: fixedOptions.particles.color.value, }, - }, - shape: { - type: fixedOptions.particles.shape.type, - options: { - polygon: { - sides: fixedOptions.particles.shape.polygon.nb_sides, + stroke: { + width: fixedOptions.particles.shape.stroke.width, + color: { + value: fixedOptions.particles.shape.stroke.color, }, - image: { - src: fixedOptions.particles.shape.image.src, - width: fixedOptions.particles.shape.image.width, - height: fixedOptions.particles.shape.image.height, + }, + shape: { + type: fixedOptions.particles.shape.type, + options: { + polygon: { + sides: fixedOptions.particles.shape.polygon.nb_sides, + }, + image: { + src: fixedOptions.particles.shape.image.src, + width: fixedOptions.particles.shape.image.width, + height: fixedOptions.particles.shape.image.height, + }, }, }, - }, - opacity: { - value: fixedOptions.particles.opacity.random - ? { - min: fixedOptions.particles.opacity.anim.enable - ? fixedOptions.particles.opacity.anim.opacity_min - : defaultMinOpacity, - max: fixedOptions.particles.opacity.value, - } - : fixedOptions.particles.opacity.value, - animation: { - enable: fixedOptions.particles.opacity.anim.enable, - speed: fixedOptions.particles.opacity.anim.speed, - sync: fixedOptions.particles.opacity.anim.sync, + opacity: { + value: fixedOptions.particles.opacity.random + ? { + min: fixedOptions.particles.opacity.anim.enable + ? fixedOptions.particles.opacity.anim.opacity_min + : defaultMinOpacity, + max: fixedOptions.particles.opacity.value, + } + : fixedOptions.particles.opacity.value, + animation: { + enable: fixedOptions.particles.opacity.anim.enable, + speed: fixedOptions.particles.opacity.anim.speed, + sync: fixedOptions.particles.opacity.anim.sync, + }, }, - }, - size: { - value: fixedOptions.particles.size.random - ? { - min: fixedOptions.particles.size.anim.enable - ? fixedOptions.particles.size.anim.size_min - : defaultMinSize, - max: fixedOptions.particles.size.value, - } - : fixedOptions.particles.size.value, - animation: { - enable: fixedOptions.particles.size.anim.enable, - speed: fixedOptions.particles.size.anim.speed, - sync: fixedOptions.particles.size.anim.sync, + size: { + value: fixedOptions.particles.size.random + ? { + min: fixedOptions.particles.size.anim.enable + ? fixedOptions.particles.size.anim.size_min + : defaultMinSize, + max: fixedOptions.particles.size.value, + } + : fixedOptions.particles.size.value, + animation: { + enable: fixedOptions.particles.size.anim.enable, + speed: fixedOptions.particles.size.anim.speed, + sync: fixedOptions.particles.size.anim.sync, + }, }, - }, - links: { - enable: fixedOptions.particles.line_linked.enable, - distance: fixedOptions.particles.line_linked.distance, - color: fixedOptions.particles.line_linked.color, - opacity: fixedOptions.particles.line_linked.opacity, - width: fixedOptions.particles.line_linked.width, - }, - move: { - enable: fixedOptions.particles.move.enable, - speed: fixedOptions.particles.move.speed / speedFactor, - direction: fixedOptions.particles.move.direction, - random: fixedOptions.particles.move.random, - straight: fixedOptions.particles.move.straight, - outModes: fixedOptions.particles.move.out_mode, - attract: { - enable: fixedOptions.particles.move.attract.enable, - rotate: { - x: fixedOptions.particles.move.attract.rotateX, - y: fixedOptions.particles.move.attract.rotateY, + links: { + enable: fixedOptions.particles.line_linked.enable, + distance: fixedOptions.particles.line_linked.distance, + color: fixedOptions.particles.line_linked.color, + opacity: fixedOptions.particles.line_linked.opacity, + width: fixedOptions.particles.line_linked.width, + }, + move: { + enable: fixedOptions.particles.move.enable, + speed: fixedOptions.particles.move.speed / speedFactor, + direction: fixedOptions.particles.move.direction, + random: fixedOptions.particles.move.random, + straight: fixedOptions.particles.move.straight, + outModes: fixedOptions.particles.move.out_mode, + attract: { + enable: fixedOptions.particles.move.attract.enable, + rotate: { + x: fixedOptions.particles.move.attract.rotateX, + y: fixedOptions.particles.move.attract.rotateY, + }, }, }, }, + resize: { + enable: fixedOptions.interactivity.events.resize, + }, }, - resize: { - enable: fixedOptions.interactivity.events.resize, - }, - }, - }); - }; + }); + }; - /** - * Loads the provided json with a GET request. - * The content will be used to create a {@link Container} object. - * @deprecated this method is obsolete, please use the new tsParticles.load - * @param tagId - the particles container element id - * @param pathConfigJson - the json path to use in the GET request - * @param callback - called after the {@link Container} is loaded and it will be passed as a parameter - */ - // eslint-disable-next-line @typescript-eslint/no-deprecated - particlesJS.load = (tagId: string, pathConfigJson: string, callback: (container?: Container) => void): void => { - engine - .load({ id: tagId, url: pathConfigJson }) - .then(container => { - if (container) { + /** + * Loads the provided json with a GET request. + * The content will be used to create a {@link Container} object. + * @deprecated this method is obsolete, please use the new tsParticles.load + * @param tagId - the particles container element id + * @param pathConfigJson - the json path to use in the GET request + * @param callback - called after the {@link Container} is loaded and it will be passed as a parameter + */ + // eslint-disable-next-line @typescript-eslint/no-deprecated + particlesJS.load = (tagId: string, pathConfigJson: string, callback: (container?: Container) => void): void => { + engine + .load({ id: tagId, url: pathConfigJson }) + .then(container => { callback(container); - } - }) - .catch(() => { - callback(undefined); - }); - }; + }) + .catch(() => { + callback(undefined); + }); + }; - /** - * Adds a click handler to all the loaded {@link Container} objects. - * @deprecated this method is obsolete, please use the new tsParticles.setOnClickHandler - * @param callback - the function called after the click event is fired - */ - // eslint-disable-next-line @typescript-eslint/no-deprecated - particlesJS.setOnClickHandler = (callback: (e: Event, particles?: Particle[]) => void): void => { - engine.setOnClickHandler?.(callback); - }; + /** + * Adds a click handler to all the loaded {@link Container} objects. + * @deprecated this method is obsolete, please use the new tsParticles.setOnClickHandler + * @param callback - the function called after the click event is fired + */ + // eslint-disable-next-line @typescript-eslint/no-deprecated + particlesJS.setOnClickHandler = (callback: (e: Event, particles?: Particle[]) => void): void => { + engine.setOnClickHandler?.(callback); + }; - /** - * All the {@link Container} objects loaded - * @deprecated this method is obsolete, please use the new {@link Engine.dom | tsParticles.dom} - */ - const pJSDom = engine.items; + /** + * All the {@link Container} objects loaded + * @deprecated this method is obsolete, please use the new {@link Engine.dom | tsParticles.dom} + */ + const pJSDom = engine.items; - // eslint-disable-next-line @typescript-eslint/no-deprecated - return { particlesJS, pJSDom }; -}; + // eslint-disable-next-line @typescript-eslint/no-deprecated + return { particlesJS, pJSDom }; + }; export { initParticlesJS }; diff --git a/bundles/pjs/src/bundle.ts b/bundles/pjs/src/bundle.ts index 81f26a38329..abc62c8ebec 100644 --- a/bundles/pjs/src/bundle.ts +++ b/bundles/pjs/src/bundle.ts @@ -1,5 +1,2 @@ -import { initPjs } from "./index.js"; - export * from "@tsparticles/engine"; - -export { initPjs }; +export { initPjs } from "./index.js"; diff --git a/bundles/pjs/src/index.ts b/bundles/pjs/src/index.ts index fa732515f34..972f5ae81ce 100644 --- a/bundles/pjs/src/index.ts +++ b/bundles/pjs/src/index.ts @@ -13,19 +13,17 @@ declare global { * @deprecated this method is obsolete, please use the new {@link Engine.load | tsParticles.load} * The particles.js compatibility object */ - var Particles: typeof MBParticles; - - /** - * @deprecated this method is obsolete, please use the new {@link Engine.dom | tsParticles.dom} - * The particles.js compatibility dom array - */ - var pJSDom: Container[]; - - /** - * @deprecated this method is obsolete, please use the new {@link Engine.load | tsParticles.load} - * The particles.js compatibility instance - */ - var particlesJS: IParticlesJS; + var Particles: typeof MBParticles, + /** + * @deprecated this method is obsolete, please use the new {@link Engine.dom | tsParticles.dom} + * The particles.js compatibility dom array + */ + pJSDom: Container[], + /** + * @deprecated this method is obsolete, please use the new {@link Engine.load | tsParticles.load} + * The particles.js compatibility instance + */ + particlesJS: IParticlesJS; } /** diff --git a/bundles/slim/CHANGELOG.md b/bundles/slim/CHANGELOG.md index 18a90213359..8d1e3634335 100644 --- a/bundles/slim/CHANGELOG.md +++ b/bundles/slim/CHANGELOG.md @@ -3,6 +3,26 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/slim + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/slim + +# [4.0.0-alpha.11](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.10...v4.0.0-alpha.11) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/slim + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/slim + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/slim + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/slim diff --git a/bundles/slim/package.dist.json b/bundles/slim/package.dist.json index 917c8bdbfc7..df850a635fa 100644 --- a/bundles/slim/package.dist.json +++ b/bundles/slim/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/slim", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "Easily create highly customizable particle animations and use them as animated backgrounds for your website. Ready to use components available also for React, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Riot.js, Inferno.", "homepage": "https://particles.js.org", "repository": { @@ -99,32 +99,32 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/basic": "4.0.0-alpha.8", - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/interaction-external-attract": "4.0.0-alpha.8", - "@tsparticles/interaction-external-bounce": "4.0.0-alpha.8", - "@tsparticles/interaction-external-bubble": "4.0.0-alpha.8", - "@tsparticles/interaction-external-connect": "4.0.0-alpha.8", - "@tsparticles/interaction-external-grab": "4.0.0-alpha.8", - "@tsparticles/interaction-external-parallax": "4.0.0-alpha.8", - "@tsparticles/interaction-external-pause": "4.0.0-alpha.8", - "@tsparticles/interaction-external-push": "4.0.0-alpha.8", - "@tsparticles/interaction-external-remove": "4.0.0-alpha.8", - "@tsparticles/interaction-external-repulse": "4.0.0-alpha.8", - "@tsparticles/interaction-external-slow": "4.0.0-alpha.8", - "@tsparticles/interaction-particles-attract": "4.0.0-alpha.8", - "@tsparticles/interaction-particles-collisions": "4.0.0-alpha.8", - "@tsparticles/interaction-particles-links": "4.0.0-alpha.8", - "@tsparticles/plugin-easing-quad": "4.0.0-alpha.8", - "@tsparticles/shape-emoji": "4.0.0-alpha.8", - "@tsparticles/shape-image": "4.0.0-alpha.8", - "@tsparticles/shape-line": "4.0.0-alpha.8", - "@tsparticles/shape-polygon": "4.0.0-alpha.8", - "@tsparticles/shape-square": "4.0.0-alpha.8", - "@tsparticles/shape-star": "4.0.0-alpha.8", - "@tsparticles/updater-life": "4.0.0-alpha.8", - "@tsparticles/updater-rotate": "4.0.0-alpha.8", - "@tsparticles/updater-stroke-color": "4.0.0-alpha.8" + "@tsparticles/basic": "4.0.0-alpha.14", + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/interaction-external-attract": "4.0.0-alpha.14", + "@tsparticles/interaction-external-bounce": "4.0.0-alpha.14", + "@tsparticles/interaction-external-bubble": "4.0.0-alpha.14", + "@tsparticles/interaction-external-connect": "4.0.0-alpha.14", + "@tsparticles/interaction-external-grab": "4.0.0-alpha.14", + "@tsparticles/interaction-external-parallax": "4.0.0-alpha.14", + "@tsparticles/interaction-external-pause": "4.0.0-alpha.14", + "@tsparticles/interaction-external-push": "4.0.0-alpha.14", + "@tsparticles/interaction-external-remove": "4.0.0-alpha.14", + "@tsparticles/interaction-external-repulse": "4.0.0-alpha.14", + "@tsparticles/interaction-external-slow": "4.0.0-alpha.14", + "@tsparticles/interaction-particles-attract": "4.0.0-alpha.14", + "@tsparticles/interaction-particles-collisions": "4.0.0-alpha.14", + "@tsparticles/interaction-particles-links": "4.0.0-alpha.14", + "@tsparticles/plugin-easing-quad": "4.0.0-alpha.14", + "@tsparticles/shape-emoji": "4.0.0-alpha.14", + "@tsparticles/shape-image": "4.0.0-alpha.14", + "@tsparticles/shape-line": "4.0.0-alpha.14", + "@tsparticles/shape-polygon": "4.0.0-alpha.14", + "@tsparticles/shape-square": "4.0.0-alpha.14", + "@tsparticles/shape-star": "4.0.0-alpha.14", + "@tsparticles/updater-life": "4.0.0-alpha.14", + "@tsparticles/updater-rotate": "4.0.0-alpha.14", + "@tsparticles/updater-stroke-color": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/bundles/slim/package.json b/bundles/slim/package.json index e4466528b49..ce1dd36390a 100644 --- a/bundles/slim/package.json +++ b/bundles/slim/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/slim", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "Easily create highly customizable particle animations and use them as animated backgrounds for your website. Ready to use components available also for React, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Riot.js, Inferno.", "homepage": "https://particles.js.org", "scripts": { @@ -107,32 +107,32 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/basic": "workspace:4.0.0-alpha.8", - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-attract": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-bounce": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-bubble": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-connect": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-grab": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-parallax": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-pause": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-push": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-remove": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-repulse": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-slow": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-particles-attract": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-particles-collisions": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-particles-links": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-quad": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-emoji": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-image": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-line": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-polygon": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-square": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-star": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-life": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-rotate": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-stroke-color": "workspace:4.0.0-alpha.8" + "@tsparticles/basic": "workspace:4.0.0-alpha.14", + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-attract": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-bounce": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-bubble": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-connect": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-grab": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-parallax": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-pause": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-push": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-remove": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-repulse": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-slow": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-particles-attract": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-particles-collisions": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-particles-links": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-quad": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-emoji": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-image": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-line": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-polygon": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-square": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-star": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-life": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-rotate": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-stroke-color": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/bundles/slim/src/bundle.ts b/bundles/slim/src/bundle.ts index 72d4145e580..a8a43969cc3 100644 --- a/bundles/slim/src/bundle.ts +++ b/bundles/slim/src/bundle.ts @@ -1,5 +1,2 @@ -import { loadSlim } from "./index.js"; - -export { loadSlim }; - export * from "@tsparticles/engine"; +export { loadSlim } from "./index.js"; diff --git a/demo/electron/CHANGELOG.md b/demo/electron/CHANGELOG.md index fbf4e9dca55..ec57f1daed8 100644 --- a/demo/electron/CHANGELOG.md +++ b/demo/electron/CHANGELOG.md @@ -3,6 +3,30 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/electron-demo + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/electron-demo + +# [4.0.0-alpha.12](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.11...v4.0.0-alpha.12) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/electron-demo + +# [4.0.0-alpha.11](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.10...v4.0.0-alpha.11) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/electron-demo + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/electron-demo + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/electron-demo + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/electron-demo diff --git a/demo/electron/package.json b/demo/electron/package.json index 5fa571be75c..5b443aedcbd 100644 --- a/demo/electron/package.json +++ b/demo/electron/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/electron-demo", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "", "main": "app/index.js", "private": true, @@ -14,12 +14,12 @@ "author": "Matteo Bruni ", "license": "MIT", "dependencies": { - "@tsparticles/configs": "workspace:4.0.0-alpha.8", - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "tsparticles": "workspace:4.0.0-alpha.8" + "@tsparticles/configs": "workspace:4.0.0-alpha.14", + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "tsparticles": "workspace:4.0.0-alpha.14" }, "devDependencies": { - "electron": "^40.0.0" + "electron": "^40.1.0" }, "type": "module" } diff --git a/demo/vanilla/CHANGELOG.md b/demo/vanilla/CHANGELOG.md index def93f20c8b..12e07cc486e 100644 --- a/demo/vanilla/CHANGELOG.md +++ b/demo/vanilla/CHANGELOG.md @@ -3,6 +3,38 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/demo + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/demo + +# [4.0.0-alpha.12](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.11...v4.0.0-alpha.12) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/demo + +# [4.0.0-alpha.11](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.10...v4.0.0-alpha.11) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/demo + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/demo + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Features + +- add branches path generator and related configurations ([41de076](https://github.com/tsparticles/tsparticles/commit/41de07658b1d5ab92f566520ac197fcacc17ac18)) +- add brownian path generator and related configurations ([d42ccaf](https://github.com/tsparticles/tsparticles/commit/d42ccaf6903309bc3c9c55ca7e4d501f767c6bcb)) +- add effect particles with configuration and drawing logic ([dee10d8](https://github.com/tsparticles/tsparticles/commit/dee10d847b4339f38432906cd36e4a5c51679f7a)) +- add full card shape, and utilities for path drawing ([f4a985f](https://github.com/tsparticles/tsparticles/commit/f4a985f092e7da94e6f8bd211c3007246d0488b3)) +- add grid path generator and related files ([5d2a1c8](https://github.com/tsparticles/tsparticles/commit/5d2a1c869fb5b9fcfba07a31214c4b68455c59c7)) +- add Levy path generator and related configurations ([ae59df8](https://github.com/tsparticles/tsparticles/commit/ae59df81081c2436be6d38afb6f2c5997820d1fb)) +- add spiral path generator and related files ([5aeeb58](https://github.com/tsparticles/tsparticles/commit/5aeeb58c6413db6cee187c43c2d95620c866b409)) + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/demo diff --git a/demo/vanilla/app.ts b/demo/vanilla/app.ts index b1542e47af5..41a764d3d06 100644 --- a/demo/vanilla/app.ts +++ b/demo/vanilla/app.ts @@ -72,6 +72,8 @@ app.use("/tsparticles-confetti", express.static("./node_modules/@tsparticles/con app.use("/tsparticles-fireworks", express.static("./node_modules/@tsparticles/fireworks")); app.use("/tsparticles", express.static("./node_modules/tsparticles")); app.use("/tsparticles-configs", express.static("./node_modules/@tsparticles/configs")); +app.use("/canvas-utils", express.static("./node_modules/@tsparticles/canvas-utils")); +app.use("/path-utils", express.static("./node_modules/@tsparticles/path-utils")); app.use("/interaction-external-attract", express.static("./node_modules/@tsparticles/interaction-external-attract")); app.use("/interaction-external-bounce", express.static("./node_modules/@tsparticles/interaction-external-bounce")); app.use("/interaction-external-bubble", express.static("./node_modules/@tsparticles/interaction-external-bubble")); @@ -122,12 +124,17 @@ app.use("/interaction-particles-repulse", express.static("./node_modules/@tspart app.use("/updater-gradient", express.static("./node_modules/@tsparticles/updater-gradient")); app.use("/updater-orbit", express.static("./node_modules/@tsparticles/updater-orbit")); app.use("/move-base", express.static("./node_modules/@tsparticles/move-base")); +app.use("/path-branches", express.static("./node_modules/@tsparticles/path-branches")); +app.use("/path-brownian", express.static("./node_modules/@tsparticles/path-brownian")); app.use("/path-curves", express.static("./node_modules/@tsparticles/path-curves")); app.use("/path-curl-noise", express.static("./node_modules/@tsparticles/path-curl-noise")); app.use("/path-fractal-noise", express.static("./node_modules/@tsparticles/path-fractal-noise")); +app.use("/path-grid", express.static("./node_modules/@tsparticles/path-grid")); +app.use("/path-levy", express.static("./node_modules/@tsparticles/path-levy")); app.use("/path-perlin-noise", express.static("./node_modules/@tsparticles/path-perlin-noise")); app.use("/path-polygon", express.static("./node_modules/@tsparticles/path-polygon")); app.use("/path-simplex-noise", express.static("./node_modules/@tsparticles/path-simplex-noise")); +app.use("/path-spiral", express.static("./node_modules/@tsparticles/path-spiral")); app.use("/path-svg", express.static("./node_modules/@tsparticles/path-svg")); app.use("/path-utils", express.static("./node_modules/@tsparticles/path-utils")); app.use("/path-zig-zag", express.static("./node_modules/@tsparticles/path-zig-zag")); @@ -174,6 +181,7 @@ app.use("/plugin-sounds", express.static("./node_modules/@tsparticles/plugin-sou app.use("/plugin-themes", express.static("./node_modules/@tsparticles/plugin-themes")); app.use("/plugin-trail", express.static("./node_modules/@tsparticles/plugin-trail")); app.use("/effect-bubble", express.static("./node_modules/@tsparticles/effect-bubble")); +app.use("/effect-particles", express.static("./node_modules/@tsparticles/effect-particles")); app.use("/effect-shadow", express.static("./node_modules/@tsparticles/effect-shadow")); app.use("/effect-trail", express.static("./node_modules/@tsparticles/effect-trail")); app.use("/shape-arrow", express.static("./node_modules/@tsparticles/shape-arrow")); diff --git a/demo/vanilla/package.json b/demo/vanilla/package.json index 69ea5b5883f..3cf195b1cf4 100644 --- a/demo/vanilla/package.json +++ b/demo/vanilla/package.json @@ -1,7 +1,7 @@ { "name": "@tsparticles/demo", "private": true, - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "> TODO: description", "author": "Matteo Bruni ", "homepage": "https://particles.js.org", @@ -29,9 +29,9 @@ "@types/connect-livereload": "^0.6.3", "@types/express": "^5.0.6", "@types/livereload": "^0.9.5", - "@types/node": "^25.0.10", + "@types/node": "^25.2.0", "@types/stylus": "^0.48.43", - "ace-builds": "^1.43.5", + "ace-builds": "^1.43.6", "bootstrap": "^5.3.8", "concurrently": "^9.2.1", "connect-livereload": "^0.6.1", @@ -50,130 +50,137 @@ "winston": "^3.19.0" }, "dependencies": { - "@tsparticles/all": "workspace:4.0.0-alpha.8", - "@tsparticles/basic": "workspace:4.0.0-alpha.8", - "@tsparticles/confetti": "workspace:4.0.0-alpha.8", - "@tsparticles/configs": "workspace:4.0.0-alpha.8", - "@tsparticles/effect-bubble": "workspace:4.0.0-alpha.8", - "@tsparticles/effect-shadow": "workspace:4.0.0-alpha.8", - "@tsparticles/effect-trail": "workspace:4.0.0-alpha.8", - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/fireworks": "workspace:4.0.0-alpha.8", - "@tsparticles/fractal-noise": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-attract": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-bounce": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-bubble": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-connect": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-grab": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-parallax": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-particle": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-pause": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-pop": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-push": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-remove": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-repulse": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-slow": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-external-trail": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-light": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-particles-attract": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-particles-collisions": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-particles-links": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-particles-repulse": "workspace:4.0.0-alpha.8", - "@tsparticles/move-base": "workspace:4.0.0-alpha.8", - "@tsparticles/noise-field": "workspace:4.0.0-alpha.8", - "@tsparticles/path-curl-noise": "workspace:4.0.0-alpha.8", - "@tsparticles/path-curves": "workspace:4.0.0-alpha.8", - "@tsparticles/path-fractal-noise": "workspace:4.0.0-alpha.8", - "@tsparticles/path-perlin-noise": "workspace:4.0.0-alpha.8", - "@tsparticles/path-polygon": "workspace:4.0.0-alpha.8", - "@tsparticles/path-simplex-noise": "workspace:4.0.0-alpha.8", - "@tsparticles/path-svg": "workspace:4.0.0-alpha.8", - "@tsparticles/path-utils": "workspace:4.0.0-alpha.8", - "@tsparticles/path-zig-zag": "workspace:4.0.0-alpha.8", - "@tsparticles/perlin-noise": "workspace:4.0.0-alpha.8", - "@tsparticles/pjs": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-absorbers": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-background-mask": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-blend": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-canvas-mask": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-back": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-bounce": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-circ": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-cubic": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-elastic": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-expo": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-gaussian": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-linear": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-quad": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-quart": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-quint": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-sigmoid": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-sine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-easing-smoothstep": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-emitters": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-emitters-shape-canvas": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-emitters-shape-circle": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-emitters-shape-path": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-emitters-shape-polygon": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-emitters-shape-square": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-export-image": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-export-json": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-export-video": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-hex-color": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-hsl-color": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-hsv-color": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-hwb-color": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-infection": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-lab-color": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-lch-color": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-manual-particles": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-motion": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-named-color": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-oklab-color": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-oklch-color": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-poisson-disc": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-polygon-mask": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-responsive": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-rgb-color": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-sounds": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-themes": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-trail": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-arrow": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-cards": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-circle": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-cog": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-emoji": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-heart": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-image": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-infinity": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-line": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-path": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-polygon": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-rounded-polygon": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-rounded-rect": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-spiral": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-square": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-star": "workspace:4.0.0-alpha.8", - "@tsparticles/shape-text": "workspace:4.0.0-alpha.8", - "@tsparticles/simplex-noise": "workspace:4.0.0-alpha.8", - "@tsparticles/slim": "workspace:4.0.0-alpha.8", - "@tsparticles/smooth-value-noise": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-color": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-destroy": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-gradient": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-life": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-opacity": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-orbit": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-out-modes": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-roll": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-rotate": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-size": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-stroke-color": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-tilt": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-twinkle": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-wobble": "workspace:4.0.0-alpha.8", - "tsparticles": "workspace:4.0.0-alpha.8" + "@tsparticles/all": "workspace:4.0.0-alpha.14", + "@tsparticles/basic": "workspace:4.0.0-alpha.14", + "@tsparticles/canvas-utils": "workspace:4.0.0-alpha.14", + "@tsparticles/confetti": "workspace:4.0.0-alpha.14", + "@tsparticles/configs": "workspace:4.0.0-alpha.14", + "@tsparticles/effect-bubble": "workspace:4.0.0-alpha.14", + "@tsparticles/effect-particles": "workspace:4.0.0-alpha.14", + "@tsparticles/effect-shadow": "workspace:4.0.0-alpha.14", + "@tsparticles/effect-trail": "workspace:4.0.0-alpha.14", + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/fireworks": "workspace:4.0.0-alpha.14", + "@tsparticles/fractal-noise": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-attract": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-bounce": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-bubble": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-connect": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-grab": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-parallax": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-particle": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-pause": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-pop": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-push": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-remove": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-repulse": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-slow": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-external-trail": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-light": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-particles-attract": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-particles-collisions": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-particles-links": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-particles-repulse": "workspace:4.0.0-alpha.14", + "@tsparticles/move-base": "workspace:4.0.0-alpha.14", + "@tsparticles/noise-field": "workspace:4.0.0-alpha.14", + "@tsparticles/path-branches": "workspace:4.0.0-alpha.14", + "@tsparticles/path-brownian": "workspace:4.0.0-alpha.14", + "@tsparticles/path-curl-noise": "workspace:4.0.0-alpha.14", + "@tsparticles/path-curves": "workspace:4.0.0-alpha.14", + "@tsparticles/path-fractal-noise": "workspace:4.0.0-alpha.14", + "@tsparticles/path-grid": "workspace:4.0.0-alpha.14", + "@tsparticles/path-levy": "workspace:4.0.0-alpha.14", + "@tsparticles/path-perlin-noise": "workspace:4.0.0-alpha.14", + "@tsparticles/path-polygon": "workspace:4.0.0-alpha.14", + "@tsparticles/path-simplex-noise": "workspace:4.0.0-alpha.14", + "@tsparticles/path-spiral": "workspace:4.0.0-alpha.14", + "@tsparticles/path-svg": "workspace:4.0.0-alpha.14", + "@tsparticles/path-utils": "workspace:4.0.0-alpha.14", + "@tsparticles/path-zig-zag": "workspace:4.0.0-alpha.14", + "@tsparticles/perlin-noise": "workspace:4.0.0-alpha.14", + "@tsparticles/pjs": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-absorbers": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-background-mask": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-blend": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-canvas-mask": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-back": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-bounce": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-circ": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-cubic": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-elastic": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-expo": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-gaussian": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-linear": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-quad": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-quart": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-quint": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-sigmoid": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-sine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-easing-smoothstep": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-emitters": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-emitters-shape-canvas": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-emitters-shape-circle": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-emitters-shape-path": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-emitters-shape-polygon": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-emitters-shape-square": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-export-image": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-export-json": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-export-video": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-hex-color": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-hsl-color": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-hsv-color": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-hwb-color": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-infection": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-lab-color": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-lch-color": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-manual-particles": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-motion": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-named-color": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-oklab-color": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-oklch-color": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-poisson-disc": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-polygon-mask": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-responsive": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-rgb-color": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-sounds": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-themes": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-trail": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-arrow": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-cards": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-circle": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-cog": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-emoji": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-heart": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-image": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-infinity": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-line": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-path": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-polygon": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-rounded-polygon": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-rounded-rect": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-spiral": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-square": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-star": "workspace:4.0.0-alpha.14", + "@tsparticles/shape-text": "workspace:4.0.0-alpha.14", + "@tsparticles/simplex-noise": "workspace:4.0.0-alpha.14", + "@tsparticles/slim": "workspace:4.0.0-alpha.14", + "@tsparticles/smooth-value-noise": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-color": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-destroy": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-gradient": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-life": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-opacity": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-orbit": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-out-modes": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-roll": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-rotate": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-size": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-stroke-color": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-tilt": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-twinkle": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-wobble": "workspace:4.0.0-alpha.14", + "tsparticles": "workspace:4.0.0-alpha.14" }, "type": "module" } diff --git a/demo/vanilla/views/index.pug b/demo/vanilla/views/index.pug index 47554ac8eea..af3fb386297 100644 --- a/demo/vanilla/views/index.pug +++ b/demo/vanilla/views/index.pug @@ -116,6 +116,8 @@ html(lang="en") script(src="/tsparticles-simplex-noise/tsparticles.simplex.noise.min.js") script(src="/tsparticles-fractal-noise/tsparticles.fractal.noise.min.js") script(src="/tsparticles-engine/tsparticles.engine.min.js") + script(src="/canvas-utils/tsparticles.canvas.utils.min.js") + script(src="/path-utils/tsparticles.path.utils.min.js") script(src="/path-utils/tsparticles.path.utils.min.js") script(src="/tsparticles-noise-field/tsparticles.noise.field.min.js") script(src="/tsparticles-configs/tsparticles.configs.min.js") @@ -212,6 +214,7 @@ html(lang="en") script(src="/plugin-themes/tsparticles.plugin.themes.min.js") script(src="/plugin-trail/tsparticles.plugin.trail.min.js") script(src="/effect-bubble/tsparticles.effect.bubble.min.js") + script(src="/effect-particles/tsparticles.effect.particles.min.js") script(src="/effect-shadow/tsparticles.effect.shadow.min.js") script(src="/effect-trail/tsparticles.effect.trail.min.js") script(src="/shape-arrow/tsparticles.shape.arrow.min.js") @@ -224,12 +227,17 @@ html(lang="en") script(src="/shape-rounded-polygon/tsparticles.shape.rounded-polygon.min.js") script(src="/shape-rounded-rect/tsparticles.shape.rounded-rect.min.js") script(src="/shape-spiral/tsparticles.shape.spiral.min.js") + script(src="/path-branches/tsparticles.path.branches.min.js") + script(src="/path-brownian/tsparticles.path.brownian.min.js") script(src="/path-curves/tsparticles.path.curves.min.js") script(src="/path-curl-noise/tsparticles.path.curl.noise.min.js") script(src="/path-fractal-noise/tsparticles.path.fractal.noise.min.js") + script(src="/path-grid/tsparticles.path.grid.min.js") + script(src="/path-levy/tsparticles.path.levy.min.js") script(src="/path-perlin-noise/tsparticles.path.perlin.noise.min.js") script(src="/path-polygon/tsparticles.path.polygon.min.js") script(src="/path-simplex-noise/tsparticles.path.simplex.noise.min.js") + script(src="/path-spiral/tsparticles.path.spiral.min.js") script(src="/path-svg/tsparticles.path.svg.min.js") script(src="/path-zig-zag/tsparticles.path.zigzag.min.js") script(src="/javascripts/demo.js") diff --git a/demo/vanilla_new/CHANGELOG.md b/demo/vanilla_new/CHANGELOG.md index a989fef22a3..a1bc25b2cbb 100644 --- a/demo/vanilla_new/CHANGELOG.md +++ b/demo/vanilla_new/CHANGELOG.md @@ -3,6 +3,30 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/demo-new + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/demo-new + +# [4.0.0-alpha.12](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.11...v4.0.0-alpha.12) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/demo-new + +# [4.0.0-alpha.11](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.10...v4.0.0-alpha.11) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/demo-new + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/demo-new + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/demo-new + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/demo-new diff --git a/demo/vanilla_new/package.json b/demo/vanilla_new/package.json index d8745966692..3209b9a983b 100644 --- a/demo/vanilla_new/package.json +++ b/demo/vanilla_new/package.json @@ -1,7 +1,7 @@ { "name": "@tsparticles/demo-new", "private": true, - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles Demo Website", "main": "index.html", "scripts": { @@ -34,24 +34,24 @@ }, "homepage": "https://particles.js.org", "devDependencies": { - "@swc/core": "^1.15.10", + "@swc/core": "^1.15.11", "fs-extra": "^11.3.3", "minify": "^15.0.1", "sass": "^1.97.3" }, "dependencies": { - "@tsparticles/configs": "workspace:4.0.0-alpha.8", - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-light": "workspace:4.0.0-alpha.8", - "@tsparticles/interaction-particles-repulse": "workspace:4.0.0-alpha.8", - "@tsparticles/path-curves": "workspace:4.0.0-alpha.8", - "@tsparticles/path-perlin-noise": "workspace:4.0.0-alpha.8", - "@tsparticles/path-polygon": "workspace:4.0.0-alpha.8", - "@tsparticles/path-simplex-noise": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-infection": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-gradient": "workspace:4.0.0-alpha.8", - "@tsparticles/updater-orbit": "workspace:4.0.0-alpha.8", - "tsparticles": "workspace:4.0.0-alpha.8" + "@tsparticles/configs": "workspace:4.0.0-alpha.14", + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-light": "workspace:4.0.0-alpha.14", + "@tsparticles/interaction-particles-repulse": "workspace:4.0.0-alpha.14", + "@tsparticles/path-curves": "workspace:4.0.0-alpha.14", + "@tsparticles/path-perlin-noise": "workspace:4.0.0-alpha.14", + "@tsparticles/path-polygon": "workspace:4.0.0-alpha.14", + "@tsparticles/path-simplex-noise": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-infection": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-gradient": "workspace:4.0.0-alpha.14", + "@tsparticles/updater-orbit": "workspace:4.0.0-alpha.14", + "tsparticles": "workspace:4.0.0-alpha.14" }, "type": "module" } diff --git a/demo/vite/CHANGELOG.md b/demo/vite/CHANGELOG.md index df47f25789c..36536579e44 100644 --- a/demo/vite/CHANGELOG.md +++ b/demo/vite/CHANGELOG.md @@ -3,6 +3,26 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/vite-demo + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/vite-demo + +# [4.0.0-alpha.11](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.10...v4.0.0-alpha.11) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/vite-demo + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/vite-demo + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/vite-demo + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/vite-demo diff --git a/demo/vite/package.json b/demo/vite/package.json index 4f86bf97bff..9464235009f 100644 --- a/demo/vite/package.json +++ b/demo/vite/package.json @@ -1,7 +1,7 @@ { "name": "@tsparticles/vite-demo", "private": true, - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "type": "module", "scripts": { "dev": "vite", @@ -9,9 +9,9 @@ "preview": "vite preview" }, "dependencies": { - "@tsparticles/all": "workspace:4.0.0-alpha.8", - "@tsparticles/configs": "workspace:4.0.0-alpha.8", - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/all": "workspace:4.0.0-alpha.14", + "@tsparticles/configs": "workspace:4.0.0-alpha.14", + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "devDependencies": { "typescript": "^5.9.3", diff --git a/effects/bubble/CHANGELOG.md b/effects/bubble/CHANGELOG.md index b9c38c2687c..cce51b7766d 100644 --- a/effects/bubble/CHANGELOG.md +++ b/effects/bubble/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/effect-bubble + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/effect-bubble + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/effect-bubble + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/effect-bubble diff --git a/effects/bubble/package.dist.json b/effects/bubble/package.dist.json index acf0b709769..d1fda67d3ce 100644 --- a/effects/bubble/package.dist.json +++ b/effects/bubble/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/effect-bubble", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles bubble effect", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/effects/bubble/package.json b/effects/bubble/package.json index 53fbcbde330..a8930f9ecf2 100644 --- a/effects/bubble/package.json +++ b/effects/bubble/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/effect-bubble", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles bubble effect", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/effects/bubble/src/index.ts b/effects/bubble/src/index.ts index dab571d175d..563498ee244 100644 --- a/effects/bubble/src/index.ts +++ b/effects/bubble/src/index.ts @@ -8,9 +8,11 @@ declare const __VERSION__: string; export async function loadBubbleEffect(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { BubbleDrawer } = await import("./BubbleDrawer.js"); + await engine.register(e => { + e.addEffect("bubble", async () => { + const { BubbleDrawer } = await import("./BubbleDrawer.js"); - e.addEffect("bubble", new BubbleDrawer()); + return new BubbleDrawer(); + }); }); } diff --git a/effects/particles/.browserslistrc b/effects/particles/.browserslistrc new file mode 100644 index 00000000000..fb811e7a9d2 --- /dev/null +++ b/effects/particles/.browserslistrc @@ -0,0 +1,2 @@ +since 2021 +not dead diff --git a/effects/particles/CHANGELOG.md b/effects/particles/CHANGELOG.md new file mode 100644 index 00000000000..c8741569245 --- /dev/null +++ b/effects/particles/CHANGELOG.md @@ -0,0 +1,24 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/effect-particles + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +### Bug Fixes + +- fixed some issues with emitters/absorbers life ([76f95ad](https://github.com/tsparticles/tsparticles/commit/76f95ad53bb9f7a9bc36e1cb725a4dac9e549d4e)) + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/effect-particles + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Features + +- add effect particles with configuration and drawing logic ([dee10d8](https://github.com/tsparticles/tsparticles/commit/dee10d847b4339f38432906cd36e4a5c51679f7a)) diff --git a/effects/particles/LICENSE b/effects/particles/LICENSE new file mode 100644 index 00000000000..bdc05f528fa --- /dev/null +++ b/effects/particles/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Matteo Bruni + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/effects/particles/README.md b/effects/particles/README.md new file mode 100644 index 00000000000..16059f4bba4 --- /dev/null +++ b/effects/particles/README.md @@ -0,0 +1,75 @@ +[![banner](https://particles.js.org/images/banner3.png)](https://particles.js.org) + +# tsParticles Particles Effect + +[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/effect-particles/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/effect-particles) +[![npmjs](https://badge.fury.io/js/@tsparticles/effect-particles.svg)](https://www.npmjs.com/package/@tsparticles/effect-particles) +[![npmjs](https://img.shields.io/npm/dt/@tsparticles/effect-particles)](https://www.npmjs.com/package/@tsparticles/effect-particles) [![GitHub Sponsors](https://img.shields.io/github/sponsors/matteobruni)](https://github.com/sponsors/matteobruni) + +[tsParticles](https://github.com/tsparticles/tsparticles) additional particles effect. + +## How to use it + +### CDN / Vanilla JS / jQuery + +The CDN/Vanilla version JS has one required file in vanilla configuration: + +Including the `tsparticles.effect.particles.min.js` file will export the function to load the effect: + +```text +loadParticlesEffect +``` + +### Usage + +Once the scripts are loaded you can set up `tsParticles` and the effect like this: + +```javascript +(async () => { + await loadParticlesEffect(tsParticles); + + await tsParticles.load({ + id: "tsparticles", + options: { + /* options */ + /* here you can use particles.effect.type: "particles" */ + }, + }); +})(); +``` + +### ESM / CommonJS + +This package is compatible also with ES or CommonJS modules, firstly this needs to be installed, like this: + +```shell +$ npm install @tsparticles/effect-particles +``` + +or + +```shell +$ yarn add @tsparticles/effect-particles +``` + +Then you need to import it in the app, like this: + +```javascript +const { tsParticles } = require("@tsparticles/engine"); +const { loadParticlesEffect } = require("@tsparticles/effect-particles"); + +(async () => { + await loadParticlesEffect(tsParticles); +})(); +``` + +or + +```javascript +import { tsParticles } from "@tsparticles/engine"; +import { loadParticlesEffect } from "@tsparticles/effect-particles"; + +(async () => { + await loadParticlesEffect(tsParticles); +})(); +``` diff --git a/effects/particles/eslint.config.js b/effects/particles/eslint.config.js new file mode 100644 index 00000000000..a461ddbce48 --- /dev/null +++ b/effects/particles/eslint.config.js @@ -0,0 +1,6 @@ +import tsParticlesESLintConfig from "@tsparticles/eslint-config"; +import { defineConfig } from "eslint/config"; + +export default defineConfig([ + tsParticlesESLintConfig, +]); diff --git a/effects/particles/package.dist.json b/effects/particles/package.dist.json new file mode 100644 index 00000000000..fcdfd819a1a --- /dev/null +++ b/effects/particles/package.dist.json @@ -0,0 +1,109 @@ +{ + "name": "@tsparticles/effect-particles", + "version": "4.0.0-alpha.14", + "description": "tsParticles particles effect", + "homepage": "https://particles.js.org", + "repository": { + "type": "git", + "url": "git+https://github.com/tsparticles/tsparticles.git", + "directory": "effects/particles" + }, + "keywords": [ + "front-end", + "frontend", + "tsparticles", + "particles.js", + "particlesjs", + "particles", + "particle", + "canvas", + "jsparticles", + "xparticles", + "particles-js", + "particles-bg", + "particles-bg-vue", + "particles-ts", + "particles.ts", + "react-particles-js", + "react-particles.js", + "react-particles", + "react", + "reactjs", + "vue-particles", + "ngx-particles", + "angular-particles", + "particleground", + "vue", + "vuejs", + "preact", + "preactjs", + "jquery", + "angularjs", + "angular", + "typescript", + "javascript", + "animation", + "web", + "html5", + "web-design", + "webdesign", + "css", + "html", + "css3", + "animated", + "background", + "confetti", + "canvas", + "fireworks", + "fireworks-js", + "confetti-js", + "confettijs", + "fireworksjs", + "canvas-confetti", + "tsparticles-effect" + ], + "author": "Matteo Bruni ", + "license": "MIT", + "bugs": { + "url": "https://github.com/tsparticles/tsparticles/issues" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "sideEffects": false, + "jsdelivr": "tsparticles.effect.particles.min.js", + "unpkg": "tsparticles.effect.particles.min.js", + "browser": "browser/index.js", + "main": "cjs/index.js", + "module": "esm/index.js", + "types": "types/index.d.ts", + "exports": { + ".": { + "types": "./types/index.d.ts", + "browser": "./browser/index.js", + "import": "./esm/index.js", + "require": "./cjs/index.js", + "umd": "./umd/index.js", + "default": "./cjs/index.js" + }, + "./package.json": "./package.json" + }, + "dependencies": { + "@tsparticles/engine": "4.0.0-alpha.14" + }, + "publishConfig": { + "access": "public" + }, + "type": "module" +} diff --git a/effects/particles/package.json b/effects/particles/package.json new file mode 100644 index 00000000000..caecf7500ad --- /dev/null +++ b/effects/particles/package.json @@ -0,0 +1,119 @@ +{ + "name": "@tsparticles/effect-particles", + "version": "4.0.0-alpha.14", + "description": "tsParticles particles effect", + "homepage": "https://particles.js.org", + "scripts": { + "build": "tsparticles-cli build", + "build:ci": "tsparticles-cli build --ci", + "version": "tsparticles-cli build -d && git add package.dist.json && tsparticles-cli build -p -l && git add .", + "prepack": "pnpm run build" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/tsparticles/tsparticles.git", + "directory": "effects/particles" + }, + "keywords": [ + "front-end", + "frontend", + "tsparticles", + "particles.js", + "particlesjs", + "particles", + "particle", + "canvas", + "jsparticles", + "xparticles", + "particles-js", + "particles-bg", + "particles-bg-vue", + "particles-ts", + "particles.ts", + "react-particles-js", + "react-particles.js", + "react-particles", + "react", + "reactjs", + "vue-particles", + "ngx-particles", + "angular-particles", + "particleground", + "vue", + "vuejs", + "preact", + "preactjs", + "jquery", + "angularjs", + "angular", + "typescript", + "javascript", + "animation", + "web", + "html5", + "web-design", + "webdesign", + "css", + "html", + "css3", + "animated", + "background", + "confetti", + "canvas", + "fireworks", + "fireworks-js", + "confetti-js", + "confettijs", + "fireworksjs", + "canvas-confetti", + "tsparticles-effect" + ], + "author": "Matteo Bruni ", + "license": "MIT", + "bugs": { + "url": "https://github.com/tsparticles/tsparticles/issues" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "prettier": "@tsparticles/prettier-config", + "files": [ + "dist" + ], + "sideEffects": false, + "browser": "dist/browser/index.js", + "main": "dist/cjs/index.js", + "module": "dist/esm/index.js", + "types": "dist/types/index.d.ts", + "exports": { + ".": { + "types": "./dist/types/index.d.ts", + "browser": "./dist/browser/index.js", + "import": "./dist/esm/index.js", + "require": "./dist/cjs/index.js", + "umd": "./dist/umd/index.js", + "default": "./dist/cjs/index.js" + }, + "./package.json": "./dist/package.json" + }, + "dependencies": { + "@tsparticles/engine": "workspace:4.0.0-alpha.14" + }, + "publishConfig": { + "access": "public", + "directory": "dist", + "linkDirectory": true + }, + "type": "module" +} diff --git a/effects/particles/src/ParticlesDrawer.ts b/effects/particles/src/ParticlesDrawer.ts new file mode 100644 index 00000000000..089eb185a96 --- /dev/null +++ b/effects/particles/src/ParticlesDrawer.ts @@ -0,0 +1,76 @@ +import { + type Container, + type IEffectDrawer, + type IParticlesOptions, + type IShapeDrawData, + type IShapeValues, + type Particle, + type RangeValue, + type RecursivePartial, + deepExtend, + getRangeValue, + millisecondsToSeconds, +} from "@tsparticles/engine"; + +const minSpawnRate = 0, + defaultSpawnRate = 1, + defaultSpawnQuantity = 1; + +interface IParticlesRateData { + delay: RangeValue; + quantity: RangeValue; +} + +interface ISpanParticlesData { + particles?: RecursivePartial; + rate?: IParticlesRateData; +} + +interface IParticlesData extends IShapeValues { + spawn?: ISpanParticlesData; +} + +type ParticlesParticle = Particle & { + particlesData?: IParticlesData; + particlesNextSpawn?: number; + particlesSpawnQuantity?: number; + particlesSpawnRate?: number; +}; + +export class ParticlesDrawer implements IEffectDrawer { + drawAfter(data: IShapeDrawData): void { + const { particle } = data, + { container } = particle; + + if (!particle.particlesNextSpawn) { + return; + } + + const currentTime = performance.now(); + + if (currentTime < particle.particlesNextSpawn) { + return; + } + + particle.particlesNextSpawn = + currentTime + (particle.particlesSpawnRate ?? defaultSpawnRate * millisecondsToSeconds); + + const quantity = particle.particlesSpawnQuantity ?? defaultSpawnQuantity, + pOptions = deepExtend({}, particle.particlesData?.spawn?.particles) as RecursivePartial, + pos = { ...particle.getPosition() }; + + for (let i = 0; i < quantity; i++) { + container.particles.addParticle(pos, pOptions); + } + } + + particleInit(_container: Container, particle: ParticlesParticle): void { + const effectData = particle.effectData as IParticlesData | undefined, + spawnRate = getRangeValue(effectData?.spawn?.rate?.delay ?? defaultSpawnRate); + + particle.particlesSpawnQuantity = getRangeValue(effectData?.spawn?.rate?.quantity ?? defaultSpawnQuantity); + particle.particlesSpawnRate = (spawnRate > minSpawnRate ? spawnRate : defaultSpawnRate) * millisecondsToSeconds; + particle.particlesNextSpawn = performance.now() + particle.particlesSpawnRate; + particle.particlesData = effectData; + } +} diff --git a/effects/particles/src/index.ts b/effects/particles/src/index.ts new file mode 100644 index 00000000000..9a8ea328173 --- /dev/null +++ b/effects/particles/src/index.ts @@ -0,0 +1,18 @@ +import { type Engine } from "@tsparticles/engine"; + +declare const __VERSION__: string; + +/** + * @param engine - + */ +export async function loadParticlesEffect(engine: Engine): Promise { + engine.checkVersion(__VERSION__); + + await engine.register(e => { + e.addEffect("particles", async () => { + const { ParticlesDrawer } = await import("./ParticlesDrawer.js"); + + return new ParticlesDrawer(); + }); + }); +} diff --git a/effects/particles/tsconfig.base.json b/effects/particles/tsconfig.base.json new file mode 100644 index 00000000000..d43f4eba9bd --- /dev/null +++ b/effects/particles/tsconfig.base.json @@ -0,0 +1,9 @@ +{ + "extends": "@tsparticles/tsconfig/tsconfig.base.json", + "compilerOptions": { + "rootDir": "./src" + }, + "include": [ + "./src" + ] +} diff --git a/effects/particles/tsconfig.browser.json b/effects/particles/tsconfig.browser.json new file mode 100644 index 00000000000..3bb4173186c --- /dev/null +++ b/effects/particles/tsconfig.browser.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.browser.json"], + "compilerOptions": { + "outDir": "./dist/browser" + } +} diff --git a/effects/particles/tsconfig.json b/effects/particles/tsconfig.json new file mode 100644 index 00000000000..4c843651531 --- /dev/null +++ b/effects/particles/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.json"], + "compilerOptions": { + "outDir": "./dist/cjs" + } +} diff --git a/effects/particles/tsconfig.module.json b/effects/particles/tsconfig.module.json new file mode 100644 index 00000000000..fa94c2a6293 --- /dev/null +++ b/effects/particles/tsconfig.module.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.module.json"], + "compilerOptions": { + "outDir": "./dist/esm" + } +} diff --git a/effects/particles/tsconfig.types.json b/effects/particles/tsconfig.types.json new file mode 100644 index 00000000000..8ec1d3edd57 --- /dev/null +++ b/effects/particles/tsconfig.types.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.types.json"], + "compilerOptions": { + "outDir": "./dist/types" + } +} diff --git a/effects/particles/tsconfig.umd.json b/effects/particles/tsconfig.umd.json new file mode 100644 index 00000000000..41b78634d8c --- /dev/null +++ b/effects/particles/tsconfig.umd.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.umd.json"], + "compilerOptions": { + "outDir": "./dist/umd" + } +} diff --git a/effects/particles/typedoc.json b/effects/particles/typedoc.json new file mode 100644 index 00000000000..9bdc12d6998 --- /dev/null +++ b/effects/particles/typedoc.json @@ -0,0 +1,15 @@ +{ + "projectDocuments": ["../markdown/**/*.md"], + "entryPoints": [ + "./src/" + ], + "entryPointStrategy": "expand", + "name": "tsParticles Particles Effect", + "includeVersion": true, + "hideGenerator": true, + "out": "./docs", + "validation": { + "invalidLink": true, + "notDocumented": true + } +} diff --git a/effects/particles/webpack.config.js b/effects/particles/webpack.config.js new file mode 100644 index 00000000000..e9fcab612f3 --- /dev/null +++ b/effects/particles/webpack.config.js @@ -0,0 +1,12 @@ +import { loadParticlesEffect } from "@tsparticles/webpack-plugin"; +import { fileURLToPath } from "url"; +import fs from "fs-extra"; +import path from "path"; + +const __filename = fileURLToPath(import.meta.url), + __dirname = path.dirname(__filename), + rootPkgPath = path.join(__dirname, "package.json"), + pkg = await fs.readJson(rootPkgPath), + version = pkg.version; + +export default loadParticlesEffect({ moduleName: "particles", effectName: "Particles", version, dir: __dirname }); diff --git a/effects/shadow/CHANGELOG.md b/effects/shadow/CHANGELOG.md index ae12ac3d739..65e78260486 100644 --- a/effects/shadow/CHANGELOG.md +++ b/effects/shadow/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/effect-shadow + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/effect-shadow + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/effect-shadow + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/effect-shadow diff --git a/effects/shadow/package.dist.json b/effects/shadow/package.dist.json index 3c13c90d78b..85f5439ac3d 100644 --- a/effects/shadow/package.dist.json +++ b/effects/shadow/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/effect-shadow", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles shadow effect", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/effects/shadow/package.json b/effects/shadow/package.json index f2249d42d4d..0fcb8abe1aa 100644 --- a/effects/shadow/package.json +++ b/effects/shadow/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/effect-shadow", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles shadow effect", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/effects/shadow/src/index.ts b/effects/shadow/src/index.ts index c551052eb34..ccff5e6affc 100644 --- a/effects/shadow/src/index.ts +++ b/effects/shadow/src/index.ts @@ -8,9 +8,11 @@ declare const __VERSION__: string; export async function loadShadowEffect(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { ShadowDrawer } = await import("./ShadowDrawer.js"); + await engine.register(e => { + e.addEffect("shadow", async () => { + const { ShadowDrawer } = await import("./ShadowDrawer.js"); - e.addEffect("shadow", new ShadowDrawer(e)); + return new ShadowDrawer(e); + }); }); } diff --git a/effects/trail/CHANGELOG.md b/effects/trail/CHANGELOG.md index 885725470c2..d1e000b9486 100644 --- a/effects/trail/CHANGELOG.md +++ b/effects/trail/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/effect-trail + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/effect-trail + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/effect-trail + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/effect-trail diff --git a/effects/trail/package.dist.json b/effects/trail/package.dist.json index 758d2fcb41f..52fcaca1f4e 100644 --- a/effects/trail/package.dist.json +++ b/effects/trail/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/effect-trail", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles trail effect", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/effects/trail/package.json b/effects/trail/package.json index 0c6f9dd3054..c36c12fd048 100644 --- a/effects/trail/package.json +++ b/effects/trail/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/effect-trail", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles trail effect", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/effects/trail/src/TrailDrawer.ts b/effects/trail/src/TrailDrawer.ts index 5ec0b57fec1..d7ba3c694fa 100644 --- a/effects/trail/src/TrailDrawer.ts +++ b/effects/trail/src/TrailDrawer.ts @@ -89,9 +89,8 @@ export class TrailDrawer implements IEffectDrawer { canvasSize = { width: particle.container.canvas.size.width + diameter, height: particle.container.canvas.size.height + diameter, - }; - - const trailPos = trail[trailLength - trailLengthOffset]; + }, + trailPos = trail[trailLength - trailLengthOffset]; if (!trailPos) { return; diff --git a/effects/trail/src/index.ts b/effects/trail/src/index.ts index 0dd23635e88..1918809047b 100644 --- a/effects/trail/src/index.ts +++ b/effects/trail/src/index.ts @@ -8,9 +8,11 @@ declare const __VERSION__: string; export async function loadTrailEffect(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { TrailDrawer } = await import("./TrailDrawer.js"); + await engine.register(e => { + e.addEffect("trail", async () => { + const { TrailDrawer } = await import("./TrailDrawer.js"); - e.addEffect("trail", new TrailDrawer()); + return new TrailDrawer(); + }); }); } diff --git a/engine/CHANGELOG.md b/engine/CHANGELOG.md index 1f54bd24b6b..213dff785e1 100644 --- a/engine/CHANGELOG.md +++ b/engine/CHANGELOG.md @@ -3,6 +3,32 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/engine + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/engine + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Bug Fixes + +- add particle to pool when unable to add to the canvas ([90343c7](https://github.com/tsparticles/tsparticles/commit/90343c7d933eabe5862cd44c49dac0e443a4328b)) +- clear all relevant plugin types from container in clearPlugins method ([9c582ee](https://github.com/tsparticles/tsparticles/commit/9c582ee8801696cc84f9772a506f617e21aa36d7)) +- fixed performance picking only the used path generators ([8426714](https://github.com/tsparticles/tsparticles/commit/842671431c14336ee8182532361e35f64660edb5)) +- fixed some plugins initializations and cleanup ([f58601c](https://github.com/tsparticles/tsparticles/commit/f58601c61cf71509ec51f321a1aa9cbfaa55877d)) +- improved roll angle calculation and logic ([a886da3](https://github.com/tsparticles/tsparticles/commit/a886da36443ca811fdb5ec09cdfe0ebb9e8bf870)) +- remove unnecessary comment in Engine.ts ([fdee2c8](https://github.com/tsparticles/tsparticles/commit/fdee2c87727d24e32ed1808ebf801302e34e5015)) +- update path generator reference in Particles.ts ([97dbfca](https://github.com/tsparticles/tsparticles/commit/97dbfca7751664a5207390e777a36fe47a41b29a)) + +### Features + +- add effect particles with configuration and drawing logic ([dee10d8](https://github.com/tsparticles/tsparticles/commit/dee10d847b4339f38432906cd36e4a5c51679f7a)) +- add full card shape, and utilities for path drawing ([f4a985f](https://github.com/tsparticles/tsparticles/commit/f4a985f092e7da94e6f8bd211c3007246d0488b3)) +- initialize plugin arrays for particle updates ([d0cd05d](https://github.com/tsparticles/tsparticles/commit/d0cd05d06f629bb4e51682bbe9c373e8987ee72b)) + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/engine diff --git a/engine/package.dist.json b/engine/package.dist.json index a2243d05528..a2b89ee4272 100644 --- a/engine/package.dist.json +++ b/engine/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/engine", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "Easily create highly customizable particle, confetti and fireworks animations and use them as animated backgrounds for your website. Ready to use components available also for React, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Riot.js, Inferno.", "homepage": "https://particles.js.org", "scripts": { diff --git a/engine/package.json b/engine/package.json index 56a83649c37..a5fe41d67ab 100644 --- a/engine/package.json +++ b/engine/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/engine", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "Easily create highly customizable particle, confetti and fireworks animations and use them as animated backgrounds for your website. Ready to use components available also for React, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Riot.js, Inferno.", "homepage": "https://particles.js.org", "scripts": { diff --git a/engine/src/Core/Canvas.ts b/engine/src/Core/Canvas.ts index 729ff089af2..953450c7b62 100644 --- a/engine/src/Core/Canvas.ts +++ b/engine/src/Core/Canvas.ts @@ -93,12 +93,21 @@ export class Canvas { */ readonly size: IDimension; + private _canvasClearPlugins: IContainerPlugin[]; + private _canvasPaintPlugins: IContainerPlugin[]; + private _canvasSettings?: CanvasRenderingContext2DSettings; + private _clearDrawPlugins: IContainerPlugin[]; private _colorPlugins: IContainerPlugin[]; - /** * The particles canvas context */ private _context: CanvasRenderingContext2D | null; + private _drawParticlePlugins: IContainerPlugin[]; + private _drawParticlesCleanupPlugins: IContainerPlugin[]; + private _drawParticlesSetupPlugins: IContainerPlugin[]; + private _drawPlugins: IContainerPlugin[]; + private _drawSettingsCleanupPlugins: IContainerPlugin[]; + private _drawSettingsSetupPlugins: IContainerPlugin[]; private readonly _engine; private _generated; private _mutationObserver?: MutationObserver; @@ -141,9 +150,22 @@ export class Canvas { this._postDrawUpdaters = []; this._resizePlugins = []; this._colorPlugins = []; + this._canvasClearPlugins = []; + this._canvasPaintPlugins = []; + this._clearDrawPlugins = []; + this._drawParticlePlugins = []; + this._drawParticlesCleanupPlugins = []; + this._drawParticlesSetupPlugins = []; + this._drawPlugins = []; + this._drawSettingsSetupPlugins = []; + this._drawSettingsCleanupPlugins = []; this._pointerEvents = "none"; } + get settings(): CanvasRenderingContext2DSettings | undefined { + return this._canvasSettings; + } + private get _fullScreen(): boolean { return this.container.actualOptions.fullScreen.enable; } @@ -164,9 +186,11 @@ export class Canvas { clear(): void { let pluginHandled = false; - for (const plugin of this.container.plugins) { - if (!pluginHandled && plugin.canvasClear) { - pluginHandled = plugin.canvasClear(); + for (const plugin of this._canvasClearPlugins) { + pluginHandled = plugin.canvasClear?.() ?? false; + + if (pluginHandled) { + break; } } @@ -197,6 +221,15 @@ export class Canvas { this._postDrawUpdaters = []; this._resizePlugins = []; this._colorPlugins = []; + this._canvasClearPlugins = []; + this._canvasPaintPlugins = []; + this._clearDrawPlugins = []; + this._drawParticlePlugins = []; + this._drawParticlesCleanupPlugins = []; + this._drawParticlesSetupPlugins = []; + this._drawPlugins = []; + this._drawSettingsSetupPlugins = []; + this._drawSettingsCleanupPlugins = []; } /** @@ -257,10 +290,8 @@ export class Canvas { colorStyles.stroke = stroke; this.draw((context): void => { - for (const plugin of container.plugins) { - if (plugin.drawParticleSetup) { - plugin.drawParticleSetup(context, particle, delta); - } + for (const plugin of this._drawParticlesSetupPlugins) { + plugin.drawParticleSetup?.(context, particle, delta); } this._applyPreDrawUpdaters(context, particle, radius, opacity, colorStyles, transform); @@ -278,28 +309,27 @@ export class Canvas { this._applyPostDrawUpdaters(particle); - for (const plugin of container.plugins) { - if (plugin.drawParticleCleanup) { - plugin.drawParticleCleanup(context, particle, delta); - } + for (const plugin of this._drawParticlesCleanupPlugins) { + plugin.drawParticleCleanup?.(context, particle, delta); } }); } /** * Draws stuff using the given plugin, using the given particle - * @param plugin - the plugin to use for drawing stuff * @param particle - the particle used * @param delta - the frame delta time values */ - drawParticlePlugin(plugin: IContainerPlugin, particle: Particle, delta: IDelta): void { + drawParticlePlugins(particle: Particle, delta: IDelta): void { this.draw(ctx => { - drawParticlePlugin(ctx, plugin, particle, delta); + for (const plugin of this._drawParticlePlugins) { + drawParticlePlugin(ctx, plugin, particle, delta); + } }); } drawParticles(delta: IDelta): void { - const { particles, plugins } = this.container; + const { particles } = this.container; this.clear(); @@ -307,11 +337,11 @@ export class Canvas { particles.update(delta); this.draw(ctx => { - for (const plugin of plugins) { + for (const plugin of this._drawSettingsSetupPlugins) { plugin.drawSettingsSetup?.(ctx, delta); } - for (const plugin of plugins) { + for (const plugin of this._drawPlugins) { plugin.draw?.(ctx, delta); } @@ -319,11 +349,11 @@ export class Canvas { particles.drawParticles(delta); - for (const plugin of plugins) { + for (const plugin of this._clearDrawPlugins) { plugin.clearDraw?.(ctx, delta); } - for (const plugin of plugins) { + for (const plugin of this._drawSettingsCleanupPlugins) { plugin.drawSettingsCleanup?.(ctx, delta); } }); @@ -394,6 +424,16 @@ export class Canvas { */ initPlugins(): void { this._resizePlugins = []; + this._colorPlugins = []; + this._canvasClearPlugins = []; + this._canvasPaintPlugins = []; + this._clearDrawPlugins = []; + this._drawParticlePlugins = []; + this._drawParticlesSetupPlugins = []; + this._drawParticlesCleanupPlugins = []; + this._drawPlugins = []; + this._drawSettingsSetupPlugins = []; + this._drawSettingsCleanupPlugins = []; for (const plugin of this.container.plugins) { if (plugin.resize) { @@ -403,6 +443,42 @@ export class Canvas { if (plugin.particleFillColor ?? plugin.particleStrokeColor) { this._colorPlugins.push(plugin); } + + if (plugin.canvasClear) { + this._canvasClearPlugins.push(plugin); + } + + if (plugin.canvasPaint) { + this._canvasPaintPlugins.push(plugin); + } + + if (plugin.drawParticle) { + this._drawParticlePlugins.push(plugin); + } + + if (plugin.drawParticleSetup) { + this._drawParticlesSetupPlugins.push(plugin); + } + + if (plugin.drawParticleCleanup) { + this._drawParticlesCleanupPlugins.push(plugin); + } + + if (plugin.draw) { + this._drawPlugins.push(plugin); + } + + if (plugin.drawSettingsSetup) { + this._drawSettingsSetupPlugins.push(plugin); + } + + if (plugin.drawSettingsCleanup) { + this._drawSettingsCleanupPlugins.push(plugin); + } + + if (plugin.clearDraw) { + this._clearDrawPlugins.push(plugin); + } } } @@ -454,12 +530,13 @@ export class Canvas { const canSupportHdrQuery = safeMatchMedia("(color-gamut: p3)"); - this._context = this.element.getContext("2d", { + this._canvasSettings = { alpha: true, colorSpace: canSupportHdrQuery?.matches && container.hdr ? "display-p3" : "srgb", desynchronized: true, willReadFrequently: false, - }); + }; + this._context = this.element.getContext("2d", this._canvasSettings); this._safeMutationObserver(obs => { obs.disconnect(); @@ -483,12 +560,12 @@ export class Canvas { paint(): void { let handled = false; - for (const plugin of this.container.plugins) { + for (const plugin of this._canvasPaintPlugins) { + handled = plugin.canvasPaint?.() ?? false; + if (handled) { break; } - - handled = plugin.canvasPaint?.() ?? false; } if (handled) { diff --git a/engine/src/Core/Container.ts b/engine/src/Core/Container.ts index 742075016c0..1a4890abdf0 100644 --- a/engine/src/Core/Container.ts +++ b/engine/src/Core/Container.ts @@ -13,10 +13,7 @@ import { EventListeners } from "./Utils/EventListeners.js"; import { EventType } from "../Enums/Types/EventType.js"; import type { IContainerPlugin } from "./Interfaces/IContainerPlugin.js"; import type { IDelta } from "./Interfaces/IDelta.js"; -import type { IEffectDrawer } from "./Interfaces/IEffectDrawer.js"; -import type { IMovePathGenerator } from "./Interfaces/IMovePathGenerator.js"; import type { IPlugin } from "./Interfaces/IPlugin.js"; -import type { IShapeDrawer } from "./Interfaces/IShapeDrawer.js"; import type { ISourceOptions } from "../Types/ISourceOptions.js"; import { Options } from "../Options/Classes/Options.js"; import { Particles } from "./Particles.js"; @@ -82,11 +79,6 @@ export class Container { */ destroyed; - /** - * All the effect drawers used by the container - */ - readonly effectDrawers; - /** * The container fps limit, coming from options */ @@ -104,13 +96,15 @@ export class Container { */ pageHidden; + readonly particleCreatedPlugins: IContainerPlugin[]; + readonly particleDestroyedPlugins: IContainerPlugin[]; + readonly particlePositionPlugins: IContainerPlugin[]; + /** * The particles manager */ readonly particles; - readonly pathGenerators: Map; - /** * All the plugins used by the container */ @@ -118,11 +112,6 @@ export class Container { readonly retina; - /** - * All the shape drawers used by the container - */ - readonly shapeDrawers; - /** * Check if the particles container is started */ @@ -182,10 +171,10 @@ export class Container { this.retina = new Retina(this); this.canvas = new Canvas(this, this._engine); this.particles = new Particles(this._engine, this); - this.pathGenerators = new Map(); this.plugins = []; - this.effectDrawers = new Map(); - this.shapeDrawers = new Map(); + this.particleDestroyedPlugins = []; + this.particleCreatedPlugins = []; + this.particlePositionPlugins = []; /* tsParticles variables with default values */ this._options = loadContainerOptions(this._engine, this); this.actualOptions = loadContainerOptions(this._engine, this); @@ -223,23 +212,6 @@ export class Container { this._lifeTime += value; } - /** - * Add a new path generator to the container - * @param key - the key to identify the path generator - * @param generator - the path generator - * @param override - if true, override the existing path generator - * @returns true if the path generator was added, false otherwise - */ - addPath(key: string, generator: IMovePathGenerator, override = false): boolean { - if (!guardCheck(this) || (!override && this.pathGenerators.has(key))) { - return false; - } - - this.pathGenerators.set(key, generator); - - return true; - } - alive(): boolean { return !this._duration || this._lifeTime <= this._duration; } @@ -258,18 +230,6 @@ export class Container { this.particles.destroy(); this.canvas.destroy(); - for (const effectDrawer of this.effectDrawers.values()) { - effectDrawer.destroy?.(this); - } - - this.effectDrawers.clear(); - - for (const shapeDrawer of this.shapeDrawers.values()) { - shapeDrawer.destroy?.(this); - } - - this.shapeDrawers.clear(); - for (const plugin of this.plugins) { plugin.destroy?.(); } @@ -346,26 +306,6 @@ export class Container { return; } - const effects = this._engine.getSupportedEffects(); - - for (const type of effects) { - const drawer = this._engine.getEffectDrawer(type); - - if (drawer) { - this.effectDrawers.set(type, drawer); - } - } - - const shapes = this._engine.getSupportedShapes(); - - for (const type of shapes) { - const drawer = this._engine.getShapeDrawer(type); - - if (drawer) { - this.shapeDrawers.set(type, drawer); - } - } - const allContainerPlugins = new Map(); for (const plugin of this._engine.plugins) { @@ -384,9 +324,26 @@ export class Container { this._options = loadContainerOptions(this._engine, this, this._initialSourceOptions, this.sourceOptions); this.actualOptions = loadContainerOptions(this._engine, this, this._options); + this.plugins.length = 0; + this.particleDestroyedPlugins.length = 0; + this.particleCreatedPlugins.length = 0; + this.particlePositionPlugins.length = 0; + for (const [plugin, containerPlugin] of allContainerPlugins) { if (plugin.needsPlugin(this.actualOptions)) { this.plugins.push(containerPlugin); + + if (containerPlugin.particleCreated) { + this.particleCreatedPlugins.push(containerPlugin); + } + + if (containerPlugin.particleDestroyed) { + this.particleDestroyedPlugins.push(containerPlugin); + } + + if (containerPlugin.particlePosition) { + this.particlePositionPlugins.push(containerPlugin); + } } } @@ -413,17 +370,10 @@ export class Container { await plugin.init?.(); } - for (const drawer of this.effectDrawers.values()) { - await drawer.init?.(this); - } - - for (const drawer of this.shapeDrawers.values()) { - await drawer.init?.(this); - } + await this.particles.init(); this._engine.dispatchEvent(EventType.containerInit, { container: this }); - await this.particles.init(); this.particles.setDensity(); for (const plugin of this.plugins) { @@ -580,7 +530,9 @@ export class Container { plugin.stop?.(); } - this.plugins.length = 0; + this.particleCreatedPlugins.length = 0; + this.particleDestroyedPlugins.length = 0; + this.particlePositionPlugins.length = 0; this._sourceOptions = this._options; diff --git a/engine/src/Core/Engine.ts b/engine/src/Core/Engine.ts index 15b69455d48..f1804089e69 100644 --- a/engine/src/Core/Engine.ts +++ b/engine/src/Core/Engine.ts @@ -3,7 +3,14 @@ * It's a singleton class for initializing {@link Container} instances */ import type { EasingType, EasingTypeAlt } from "../Enums/Types/EasingType.js"; -import type { Initializers, MoverInitializer, UpdaterInitializer } from "../Types/EngineInitializers.js"; +import type { + EffectInitializer, + Initializers, + MoverInitializer, + PathGeneratorInitializer, + ShapeInitializer, + UpdaterInitializer, +} from "../Types/EngineInitializers.js"; import { canvasFirstIndex, canvasTag, @@ -16,7 +23,12 @@ import { one, removeDeleteCount, } from "./Utils/Constants.js"; -import { getItemsFromInitializer, itemFromSingleOrMultiple, safeDocument } from "../Utils/Utils.js"; +import { + getItemMapFromInitializer, + getItemsFromInitializer, + itemFromSingleOrMultiple, + safeDocument, +} from "../Utils/Utils.js"; import type { Container } from "./Container.js"; import type { CustomEventArgs } from "../Types/CustomEventArgs.js"; import type { CustomEventListener } from "../Types/CustomEventListener.js"; @@ -41,12 +53,12 @@ import { getRandom } from "../Utils/MathUtils.js"; declare const __VERSION__: string; -const fullPercent = "100%"; - declare global { var tsParticles: Engine; } +const fullPercent = "100%"; + interface DataFromUrlParams { fallback?: SingleOrMultiple; index?: number; @@ -146,92 +158,71 @@ const getCanvasFromContainer = (domContainer: HTMLElement): HTMLCanvasElement => * and for Plugins class responsible for every external feature */ export class Engine { - readonly colorManagers; + readonly colorManagers = new Map(); - readonly easingFunctions; + readonly easingFunctions = new Map(); /** * The drawers (additional effects) array */ - readonly effectDrawers; + readonly effectDrawers = new Map>(); - readonly movers; + readonly initializers: Initializers = { + effects: new Map(), + movers: new Map(), + pathGenerators: new Map(), + shapes: new Map(), + updaters: new Map(), + }; + + readonly movers = new Map(); /** * The path generators array */ - readonly pathGenerators; + readonly pathGenerators = new Map>(); /** * The plugins array */ - readonly plugins: IPlugin[]; + readonly plugins: IPlugin[] = []; /** * The presets array */ - readonly presets; + readonly presets = new Map(); /** * The drawers (additional shapes) array */ - readonly shapeDrawers; + readonly shapeDrawers = new Map>(); /** * The updaters array */ - readonly updaters; + readonly updaters = new Map(); - private _allLoadersSet; + private _allLoadersSet = new Set(); - private readonly _configs: Map; + private readonly _configs = new Map(); /** * Contains all the {@link Container} instances of the current engine instance */ - private readonly _domArray: Container[]; + private readonly _domArray: Container[] = []; - private readonly _eventDispatcher; + private readonly _eventDispatcher = new EventDispatcher(); - private _executedSet; + private _executedSet = new Set(); /** * Checks if the engine instance is initialized */ - private _initialized: boolean; - - private readonly _initializers: Initializers; + private _initialized = false; - private _isRunningLoaders; + private _isRunningLoaders = false; - private readonly _loadPromises: Set; - - /** - * Engine constructor, initializes plugins, loader and the containers array - */ - constructor() { - this._configs = new Map(); - this._domArray = []; - this._eventDispatcher = new EventDispatcher(); - this._initialized = false; - this._isRunningLoaders = false; - this._loadPromises = new Set(); - this._allLoadersSet = new Set(); - this._executedSet = new Set(); - this.plugins = []; - this.colorManagers = new Map(); - this.easingFunctions = new Map(); - this._initializers = { - movers: new Map(), - updaters: new Map(), - }; - this.movers = new Map(); - this.updaters = new Map(); - this.presets = new Map(); - this.effectDrawers = new Map(); - this.shapeDrawers = new Map(); - this.pathGenerators = new Map(); - } + private readonly _loadPromises = new Set(); get configs(): Record { const res: Record = {}; @@ -252,10 +243,11 @@ export class Engine { } /** + * @param name - * @param manager - */ - addColorManager(manager: IColorManager): void { - this.colorManagers.set(manager.key, manager); + addColorManager(name: string, manager: IColorManager): void { + this.colorManagers.set(name, manager); } addConfig(config: ISourceOptions): void { @@ -282,12 +274,8 @@ export class Engine { * @param effect - the effect name * @param drawer - the effect drawer function or class instance that draws the effect in the canvas */ - addEffect(effect: string, drawer: IEffectDrawer): void { - if (this.getEffectDrawer(effect)) { - return; - } - - this.effectDrawers.set(effect, drawer); + addEffect(effect: string, drawer: EffectInitializer): void { + this.initializers.effects.set(effect, drawer); } /** @@ -304,7 +292,7 @@ export class Engine { * @param moverInitializer - the mover initializer */ addMover(name: string, moverInitializer: MoverInitializer): void { - this._initializers.movers.set(name, moverInitializer); + this.initializers.movers.set(name, moverInitializer); } /** @@ -313,7 +301,7 @@ export class Engine { * @param updaterInitializer - the particle updater initializer */ addParticleUpdater(name: string, updaterInitializer: UpdaterInitializer): void { - this._initializers.updaters.set(name, updaterInitializer); + this.initializers.updaters.set(name, updaterInitializer); } /** @@ -321,12 +309,8 @@ export class Engine { * @param name - the path generator name * @param generator - the path generator object */ - addPathGenerator(name: string, generator: IMovePathGenerator): void { - if (this.getPathGenerator(name)) { - return; - } - - this.pathGenerators.set(name, generator); + addPathGenerator(name: string, generator: PathGeneratorInitializer): void { + this.initializers.pathGenerators.set(name, generator); } /** @@ -357,15 +341,12 @@ export class Engine { /** * addShape adds shape to tsParticles, it will be available to all future instances created + * @param shapes - the shape names to add, it can be a single shape or an array of shapes * @param drawer - the shape drawer function or class instance that draws the shape in the canvas */ - addShape(drawer: IShapeDrawer): void { - for (const validType of drawer.validTypes) { - if (this.getShapeDrawer(validType)) { - continue; - } - - this.shapeDrawers.set(validType, drawer); + addShape(shapes: string[], drawer: ShapeInitializer): void { + for (const shape of shapes) { + this.initializers.shapes.set(shape, drawer); } } @@ -383,8 +364,10 @@ export class Engine { } clearPlugins(container: Container): void { - this.updaters.delete(container); + this.effectDrawers.delete(container); this.movers.delete(container); + this.shapeDrawers.delete(container); + this.updaters.delete(container); } /** @@ -404,26 +387,16 @@ export class Engine { return this.easingFunctions.get(name) ?? ((value: number): number => value); } - /** - * Searches the given effect drawer type with the given type name - * @param type - the effect drawer type name - * @returns the effect drawer if found, or undefined - */ - getEffectDrawer(type: string): IEffectDrawer | undefined { - return this.effectDrawers.get(type); + getEffectDrawers(container: Container, force = false): Promise> { + return getItemMapFromInitializer(container, this.effectDrawers, this.initializers.effects, force); } - async getMovers(container: Container, force = false): Promise { - return getItemsFromInitializer(container, this.movers, this._initializers.movers, force); + getMovers(container: Container, force = false): Promise { + return getItemsFromInitializer(container, this.movers, this.initializers.movers, force); } - /** - * Searches the path generator with the given type name - * @param type - the path generator type to search - * @returns the path generator if found, or undefined - */ - getPathGenerator(type: string): IMovePathGenerator | undefined { - return this.pathGenerators.get(type); + getPathGenerators(container: Container, force = false): Promise> { + return getItemMapFromInitializer(container, this.pathGenerators, this.initializers.pathGenerators, force); } /** @@ -444,29 +417,8 @@ export class Engine { return this.presets.get(preset); } - /** - * Searches the given shape drawer type with the given type name - * @param type - the shape drawer type name - * @returns the shape drawer if found, or undefined - */ - getShapeDrawer(type: string): IShapeDrawer | undefined { - return this.shapeDrawers.get(type); - } - - /** - * This method returns all the supported effects with this Plugins instance - * @returns all the supported effects type name - */ - getSupportedEffects(): IterableIterator { - return this.effectDrawers.keys(); - } - - /** - * This method returns all the supported shapes with this Plugins instance - * @returns all the supported shapes type name - */ - getSupportedShapes(): IterableIterator { - return this.shapeDrawers.keys(); + async getShapeDrawers(container: Container, force = false): Promise> { + return getItemMapFromInitializer(container, this.shapeDrawers, this.initializers.shapes, force); } /** @@ -476,7 +428,7 @@ export class Engine { * @returns the array of updaters for the given container */ async getUpdaters(container: Container, force = false): Promise { - return getItemsFromInitializer(container, this.updaters, this._initializers.updaters, force); + return getItemsFromInitializer(container, this.updaters, this.initializers.updaters, force); } /** @@ -497,7 +449,7 @@ export class Engine { } finally { this._loadPromises.clear(); this._isRunningLoaders = false; - this._initialized = true; // Hard stop: da qui in poi register() darà errore + this._initialized = true; } } diff --git a/engine/src/Core/Interfaces/IColorManager.ts b/engine/src/Core/Interfaces/IColorManager.ts index cf03b03acd1..64775020670 100644 --- a/engine/src/Core/Interfaces/IColorManager.ts +++ b/engine/src/Core/Interfaces/IColorManager.ts @@ -1,8 +1,6 @@ import type { IColor, IRangeColor, IRgb, IRgba } from "./Colors.js"; export interface IColorManager { - readonly key: string; - accepts(input: string): boolean; handleColor(color: IColor): IRgb | undefined; diff --git a/engine/src/Core/Interfaces/IContainerPlugin.ts b/engine/src/Core/Interfaces/IContainerPlugin.ts index b56c504bbd9..daa3ce8377a 100644 --- a/engine/src/Core/Interfaces/IContainerPlugin.ts +++ b/engine/src/Core/Interfaces/IContainerPlugin.ts @@ -39,7 +39,6 @@ export interface IContainerPlugin { postUpdate?: (delta: IDelta) => void; preInit?: () => Promise; redrawInit?: () => Promise; - reset?: () => void; resize?: () => void; start?: () => Promise; stop?: () => void; diff --git a/engine/src/Core/Interfaces/IMovePathGenerator.ts b/engine/src/Core/Interfaces/IMovePathGenerator.ts index ec2fd50924d..ecded6ea999 100644 --- a/engine/src/Core/Interfaces/IMovePathGenerator.ts +++ b/engine/src/Core/Interfaces/IMovePathGenerator.ts @@ -1,4 +1,3 @@ -import type { Container } from "../Container.js"; import type { IDelta } from "./IDelta.js"; import type { Particle } from "../Particle.js"; import type { Vector } from "../Utils/Vectors.js"; @@ -8,7 +7,7 @@ import type { Vector } from "../Utils/Vectors.js"; export interface IMovePathGenerator { generate: (particle: Particle, delta: IDelta) => Vector; - init: (container: Container) => void; + init: () => void; reset: (particle: Particle) => void; diff --git a/engine/src/Core/Interfaces/IShapeDrawer.ts b/engine/src/Core/Interfaces/IShapeDrawer.ts index d04ff86c534..97934e6476d 100644 --- a/engine/src/Core/Interfaces/IShapeDrawer.ts +++ b/engine/src/Core/Interfaces/IShapeDrawer.ts @@ -60,6 +60,4 @@ export interface IShapeDrawer { * @param particle - the particle using the shape */ particleInit?: (container: Container, particle: TParticle) => void; - - readonly validTypes: readonly string[]; } diff --git a/engine/src/Core/Particle.ts b/engine/src/Core/Particle.ts index ec7939afdeb..077a6dd5d04 100644 --- a/engine/src/Core/Particle.ts +++ b/engine/src/Core/Particle.ts @@ -412,11 +412,11 @@ export class Particle { const container = this.container, pathGenerator = this.pathGenerator, - shapeDrawer = this.shape ? container.shapeDrawers.get(this.shape) : undefined; + shapeDrawer = this.shape ? container.particles.shapeDrawers.get(this.shape) : undefined; shapeDrawer?.particleDestroy?.(this); - for (const plugin of container.plugins) { + for (const plugin of container.particleDestroyedPlugins) { plugin.particleDestroyed?.(this, override); } @@ -438,10 +438,7 @@ export class Particle { const container = this.container, canvas = container.canvas; - for (const plugin of container.plugins) { - canvas.drawParticlePlugin(plugin, this, delta); - } - + canvas.drawParticlePlugins(this, delta); canvas.drawParticle(this, delta); } @@ -576,13 +573,13 @@ export class Particle { } if (this.effect === randomColorValue) { - const availableEffects = [...this.container.effectDrawers.keys()]; + const availableEffects = [...this.container.particles.effectDrawers.keys()]; this.effect = availableEffects[Math.floor(getRandom() * availableEffects.length)]; } if (this.shape === randomColorValue) { - const availableShapes = [...this.container.shapeDrawers.keys()]; + const availableShapes = [...this.container.particles.shapeDrawers.keys()]; this.shape = availableShapes[Math.floor(getRandom() * availableShapes.length)]; } @@ -615,11 +612,19 @@ export class Particle { this.pathDelay = getRangeValue(pathOptions.delay.value) * millisecondsToSeconds; if (pathOptions.generator) { - this.pathGenerator = this._engine.getPathGenerator(pathOptions.generator); + let pathGenerator = this.container.particles.pathGenerators.get(pathOptions.generator); + + if (!pathGenerator) { + pathGenerator = this.container.particles.availablePathGenerators.get(pathOptions.generator); - if (this.pathGenerator && container.addPath(pathOptions.generator, this.pathGenerator)) { - this.pathGenerator.init(container); + if (pathGenerator) { + this.container.particles.pathGenerators.set(pathOptions.generator, pathGenerator); + + pathGenerator.init(); + } } + + this.pathGenerator = pathGenerator; } container.retina.initParticle(this); @@ -654,15 +659,7 @@ export class Particle { let effectDrawer: IEffectDrawer | undefined, shapeDrawer: IShapeDrawer | undefined; if (this.effect) { - effectDrawer = container.effectDrawers.get(this.effect); - - if (!effectDrawer) { - effectDrawer = this._engine.getEffectDrawer(this.effect); - - if (effectDrawer) { - container.effectDrawers.set(this.effect, effectDrawer); - } - } + effectDrawer = container.particles.effectDrawers.get(this.effect); } if (effectDrawer?.loadEffect) { @@ -670,15 +667,7 @@ export class Particle { } if (this.shape) { - shapeDrawer = container.shapeDrawers.get(this.shape); - - if (!shapeDrawer) { - shapeDrawer = this._engine.getShapeDrawer(this.shape); - - if (shapeDrawer) { - container.shapeDrawers.set(this.shape, shapeDrawer); - } - } + shapeDrawer = container.particles.shapeDrawers.get(this.shape); } if (shapeDrawer?.loadShape) { @@ -704,7 +693,7 @@ export class Particle { effectDrawer?.particleInit?.(container, this); shapeDrawer?.particleInit?.(container, this); - for (const plugin of container.plugins) { + for (const plugin of container.particleCreatedPlugins) { plugin.particleCreated?.(this); } } @@ -774,7 +763,7 @@ export class Particle { posVec = position ? Vector3d.create(position.x, position.y, zIndex) : undefined; const container = this.container, - plugins = Array.from(container.plugins), + plugins = container.particlePositionPlugins, outModes = this.options.move.outModes, radius = this.getRadius(), canvasSize = container.canvas.size, @@ -804,7 +793,7 @@ export class Particle { let isValidPosition = true; - for (const plugin of plugins) { + for (const plugin of container.particles.checkParticlePositionPlugins) { isValidPosition = plugin.checkParticlePosition?.(this, pos, tryCount) ?? true; if (!isValidPosition) { @@ -903,9 +892,8 @@ export class Particle { private readonly _initPosition: (position?: ICoordinates) => void = position => { const container = this.container, - zIndexValue = getRangeValue(this.options.zIndex.value); - - const initialPosition = this._calcPosition(position, clamp(zIndexValue, minZ, container.zLayers)); + zIndexValue = getRangeValue(this.options.zIndex.value), + initialPosition = this._calcPosition(position, clamp(zIndexValue, minZ, container.zLayers)); if (!initialPosition) { throw new Error("a valid position cannot be found for particle"); @@ -931,6 +919,9 @@ export class Particle { case MoveDirection.outside: this.outType = ParticleOutType.outside; break; + default: + // no-op + break; } /* parallax */ diff --git a/engine/src/Core/Particles.ts b/engine/src/Core/Particles.ts index 45ae387304d..ee4dadc5f3c 100644 --- a/engine/src/Core/Particles.ts +++ b/engine/src/Core/Particles.ts @@ -15,13 +15,17 @@ import { import type { Container } from "./Container.js"; import type { Engine } from "./Engine.js"; import { EventType } from "../Enums/Types/EventType.js"; +import type { IContainerPlugin } from "./Interfaces/IContainerPlugin.js"; import type { ICoordinates } from "./Interfaces/ICoordinates.js"; import type { IDelta } from "./Interfaces/IDelta.js"; import type { IDimension } from "./Interfaces/IDimension.js"; +import type { IEffectDrawer } from "./Interfaces/IEffectDrawer.js"; +import type { IMovePathGenerator } from "./Interfaces/IMovePathGenerator.js"; import type { IParticleMover } from "./Interfaces/IParticleMover.js"; import type { IParticleUpdater } from "./Interfaces/IParticleUpdater.js"; import type { IParticlesDensity } from "../Options/Interfaces/Particles/Number/IParticlesDensity.js"; import type { IParticlesOptions } from "../Options/Interfaces/Particles/IParticlesOptions.js"; +import type { IShapeDrawer } from "./Interfaces/IShapeDrawer.js"; import { LimitMode } from "../Enums/Modes/LimitMode.js"; import { Particle } from "./Particle.js"; import { type ParticlesOptions } from "../Options/Classes/Particles/ParticlesOptions.js"; @@ -42,13 +46,23 @@ const qTreeRectangle = (canvasSize: IDimension): Rectangle => { * Particles manager object */ export class Particles { + availablePathGenerators: Map; + + checkParticlePositionPlugins: IContainerPlugin[]; + + effectDrawers: Map; + movers: IParticleMover[]; + pathGenerators: Map; + /** * The quad tree used to search particles withing ranges */ quadTree; + shapeDrawers: Map; + updaters: IParticleUpdater[]; /** @@ -58,13 +72,18 @@ export class Particles { private readonly _container: Container; private readonly _engine; private readonly _groupLimits: Map; - private _lastZIndex; private _limit; + private _maxZIndex; + private _minZIndex; private _needsSort; private _nextId; - private _pluginsInitialized; + private _particleResetPlugins: IContainerPlugin[]; + private _particleUpdatePlugins: IContainerPlugin[]; private readonly _pool: Particle[]; + private _postParticleUpdatePlugins: IContainerPlugin[]; + private _postUpdatePlugins: IContainerPlugin[]; private _resizeFactor?: IDimension; + private _updatePlugins: IContainerPlugin[]; private _zArray: Particle[]; /** @@ -82,15 +101,25 @@ export class Particles { this._limit = 0; this._groupLimits = new Map(); this._needsSort = false; - this._lastZIndex = 0; - this._pluginsInitialized = false; + this._minZIndex = 0; + this._maxZIndex = 0; const canvasSize = container.canvas.size; this.quadTree = new QuadTree(qTreeRectangle(canvasSize), qTreeCapacity); + this.effectDrawers = new Map(); this.movers = []; + this.availablePathGenerators = new Map(); + this.pathGenerators = new Map(); + this.shapeDrawers = new Map(); this.updaters = []; + this.checkParticlePositionPlugins = []; + this._particleResetPlugins = []; + this._particleUpdatePlugins = []; + this._postUpdatePlugins = []; + this._postParticleUpdatePlugins = []; + this._updatePlugins = []; } get count(): number { @@ -124,10 +153,47 @@ export class Particles { } break; + default: + // no-op + break; + } + } + + try { + const particle = this._pool.pop() ?? new Particle(this._engine, this._container); + + particle.init(this._nextId, position, overrideOptions, group); + + let canAdd = true; + + if (initializer) { + canAdd = initializer(particle); + } + + if (!canAdd) { + this._pool.push(particle); + + return; } + + this._array.push(particle); + this._zArray.push(particle); + + this._nextId++; + + this._engine.dispatchEvent(EventType.particleAdded, { + container: this._container, + data: { + particle, + }, + }); + + return particle; + } catch (e: unknown) { + getLogger().warning(`error adding particle: ${e as string}`); } - return this._pushParticle(position, overrideOptions, group, initializer); + return undefined; } /** @@ -136,14 +202,34 @@ export class Particles { clear(): void { this._array = []; this._zArray = []; - this._pluginsInitialized = false; } destroy(): void { + const container = this._container; + + for (const [, effectDrawer] of this.effectDrawers) { + effectDrawer.destroy?.(container); + } + + for (const [, shapeDrawer] of this.shapeDrawers) { + shapeDrawer.destroy?.(container); + } + this._array = []; + this._pool.length = 0; this._zArray = []; + this.effectDrawers = new Map(); this.movers = []; + this.availablePathGenerators = new Map(); + this.pathGenerators = new Map(); + this.shapeDrawers = new Map(); this.updaters = []; + this.checkParticlePositionPlugins = []; + this._particleResetPlugins = []; + this._particleUpdatePlugins = []; + this._postUpdatePlugins = []; + this._postParticleUpdatePlugins = []; + this._updatePlugins = []; } drawParticles(delta: IDelta): void { @@ -169,17 +255,56 @@ export class Particles { const container = this._container, options = container.actualOptions; - this._lastZIndex = 0; + this._minZIndex = 0; + this._maxZIndex = 0; this._needsSort = false; + this.checkParticlePositionPlugins = []; + this._updatePlugins = []; + this._particleUpdatePlugins = []; + this._postUpdatePlugins = []; + this._particleResetPlugins = []; + this._postParticleUpdatePlugins = []; for (const plugin of container.plugins) { if (plugin.redrawInit) { await plugin.redrawInit(); } + + if (plugin.checkParticlePosition) { + this.checkParticlePositionPlugins.push(plugin); + } + + if (plugin.update) { + this._updatePlugins.push(plugin); + } + + if (plugin.particleUpdate) { + this._particleUpdatePlugins.push(plugin); + } + + if (plugin.postUpdate) { + this._postUpdatePlugins.push(plugin); + } + + if (plugin.particleReset) { + this._particleResetPlugins.push(plugin); + } + + if (plugin.postParticleUpdate) { + this._postParticleUpdatePlugins.push(plugin); + } } await this.initPlugins(); + for (const drawer of this.effectDrawers.values()) { + await drawer.init?.(container); + } + + for (const drawer of this.shapeDrawers.values()) { + await drawer.init?.(container); + } + let handled = false; for (const plugin of container.plugins) { @@ -213,17 +338,17 @@ export class Particles { } async initPlugins(): Promise { - if (this._pluginsInitialized) { - return; - } - const container = this._container; + this.effectDrawers = await this._engine.getEffectDrawers(container, true); this.movers = await this._engine.getMovers(container, true); + this.availablePathGenerators = await this._engine.getPathGenerators(container, true); + this.pathGenerators = new Map(); + this.shapeDrawers = await this._engine.getShapeDrawers(container, true); this.updaters = await this._engine.getUpdaters(container, true); - for (const pathGenerator of container.pathGenerators.values()) { - pathGenerator.init(container); + for (const pathGenerator of this.pathGenerators.values()) { + pathGenerator.init(); } } @@ -296,8 +421,7 @@ export class Particles { } setLastZIndex(zIndex: number): void { - this._lastZIndex = zIndex; - this._needsSort = this._needsSort || this._lastZIndex < zIndex; + this._needsSort ||= zIndex >= this._maxZIndex || (zIndex > this._minZIndex && zIndex < this._maxZIndex); } setResizeFactor(factor: IDimension): void { @@ -310,11 +434,11 @@ export class Particles { this.quadTree = new QuadTree(qTreeRectangle(container.canvas.size), qTreeCapacity); - for (const pathGenerator of container.pathGenerators.values()) { + for (const pathGenerator of this.pathGenerators.values()) { pathGenerator.update(); } - for (const plugin of container.plugins) { + for (const plugin of this._updatePlugins) { plugin.update?.(delta); } @@ -330,13 +454,11 @@ export class Particles { particle.ignoresResizeRatio = false; - for (const plugin of this._container.plugins) { - if (plugin.particleReset) { - plugin.particleReset(particle); - } + for (const plugin of this._particleResetPlugins) { + plugin.particleReset?.(particle); } - for (const plugin of this._container.plugins) { + for (const plugin of this._particleUpdatePlugins) { if (particle.destroyed) { break; } @@ -377,10 +499,8 @@ export class Particles { this._addToPool(...particlesToDelete); } - for (const plugin of container.plugins) { - if (plugin.postUpdate) { - plugin.postUpdate(delta); - } + for (const plugin of this._postUpdatePlugins) { + plugin.postUpdate?.(delta); } // this loop is required to be done after mouse interactions @@ -390,10 +510,8 @@ export class Particles { } if (!particle.destroyed && !particle.spawning) { - for (const plugin of container.plugins) { - if (plugin.postParticleUpdate) { - plugin.postParticleUpdate(particle, delta); - } + for (const plugin of this._postParticleUpdatePlugins) { + plugin.postParticleUpdate?.(particle, delta); } } } @@ -405,13 +523,15 @@ export class Particles { zArray.sort((a, b) => b.position.z - a.position.z || a.id - b.id); - const lastItem = zArray[zArray.length - lengthOffset]; + const firstItem = zArray[minIndex], + lastItem = zArray[zArray.length - lengthOffset]; - if (!lastItem) { + if (!firstItem || !lastItem) { return; } - this._lastZIndex = lastItem.position.z; + this._maxZIndex = firstItem.position.z; + this._minZIndex = lastItem.position.z; this._needsSort = false; } } @@ -470,47 +590,6 @@ export class Particles { return (canvas.width * canvas.height) / (densityOptions.height * densityOptions.width * pxRatio ** squareExp); }; - private readonly _pushParticle = ( - position?: ICoordinates, - overrideOptions?: RecursivePartial, - group?: string, - initializer?: (particle: Particle) => boolean, - ): Particle | undefined => { - try { - const particle = this._pool.pop() ?? new Particle(this._engine, this._container); - - particle.init(this._nextId, position, overrideOptions, group); - - let canAdd = true; - - if (initializer) { - canAdd = initializer(particle); - } - - if (!canAdd) { - return; - } - - this._array.push(particle); - this._zArray.push(particle); - - this._nextId++; - - this._engine.dispatchEvent(EventType.particleAdded, { - container: this._container, - data: { - particle, - }, - }); - - return particle; - } catch (e: unknown) { - getLogger().warning(`error adding particle: ${e as string}`); - } - - return undefined; - }; - private readonly _removeParticle = (index: number, group?: string, override?: boolean): boolean => { const particle = this._array[index]; diff --git a/engine/src/Options/Classes/HslAnimation.ts b/engine/src/Options/Classes/HslAnimation.ts index 2854fc5b9d7..7df4e9b140a 100644 --- a/engine/src/Options/Classes/HslAnimation.ts +++ b/engine/src/Options/Classes/HslAnimation.ts @@ -5,15 +5,9 @@ import type { RecursivePartial } from "../../Types/RecursivePartial.js"; import { isNull } from "../../Utils/TypeUtils.js"; export class HslAnimation implements IHslAnimation, IOptionLoader { - h; - l; - s; - - constructor() { - this.h = new ColorAnimation(); - this.s = new ColorAnimation(); - this.l = new ColorAnimation(); - } + readonly h = new ColorAnimation(); + readonly l = new ColorAnimation(); + readonly s = new ColorAnimation(); load(data?: RecursivePartial): void { if (isNull(data)) { diff --git a/engine/src/Options/Classes/ValueWithRandom.ts b/engine/src/Options/Classes/ValueWithRandom.ts index cd3d00e1ce2..4d1561d2dd9 100644 --- a/engine/src/Options/Classes/ValueWithRandom.ts +++ b/engine/src/Options/Classes/ValueWithRandom.ts @@ -29,13 +29,7 @@ export class ValueWithRandom implements IValueWithRandom, IOptionLoader { - readonly animation; - - constructor() { - super(); - - this.animation = new AnimationOptions(); - } + readonly animation = new AnimationOptions(); override load(data?: RecursivePartial): void { super.load(data); diff --git a/engine/src/Types/EngineInitializers.ts b/engine/src/Types/EngineInitializers.ts index 3614d5c45ae..7e9950e679f 100644 --- a/engine/src/Types/EngineInitializers.ts +++ b/engine/src/Types/EngineInitializers.ts @@ -1,17 +1,21 @@ import type { Container } from "../Core/Container.js"; +import type { IEffectDrawer } from "../Core/Interfaces/IEffectDrawer.js"; +import type { IMovePathGenerator } from "../Core/Interfaces/IMovePathGenerator.js"; import type { IParticleMover } from "../Core/Interfaces/IParticleMover.js"; import type { IParticleUpdater } from "../Core/Interfaces/IParticleUpdater.js"; +import type { IShapeDrawer } from "../Core/Interfaces/IShapeDrawer.js"; export type GenericInitializer = (container: Container) => Promise; - +export type EffectInitializer = GenericInitializer; export type MoverInitializer = GenericInitializer; - -/** - * Alias for updater initializer function - */ +export type PathGeneratorInitializer = GenericInitializer; +export type ShapeInitializer = GenericInitializer; export type UpdaterInitializer = GenericInitializer; export interface Initializers { + effects: Map; movers: Map; + pathGenerators: Map; + shapes: Map; updaters: Map; } diff --git a/engine/src/Utils/CanvasUtils.ts b/engine/src/Utils/CanvasUtils.ts index 8794c3c06c2..38c5ca61603 100644 --- a/engine/src/Utils/CanvasUtils.ts +++ b/engine/src/Utils/CanvasUtils.ts @@ -2,7 +2,6 @@ import { lFactor, minStrokeWidth, originPoint } from "../Core/Utils/Constants.js import { AlterType } from "../Enums/Types/AlterType.js"; import type { Container } from "../Core/Container.js"; import type { IContainerPlugin } from "../Core/Interfaces/IContainerPlugin.js"; -import type { ICoordinates } from "../Core/Interfaces/ICoordinates.js"; import type { IDelta } from "../Core/Interfaces/IDelta.js"; import type { IDimension } from "../Core/Interfaces/IDimension.js"; import type { IDrawParticleParams } from "../Core/Interfaces/IDrawParticleParams.js"; @@ -10,19 +9,6 @@ import type { IHsl } from "../Core/Interfaces/Colors.js"; import type { IShapeDrawData } from "../export-types.js"; import type { Particle } from "../Core/Particle.js"; -/** - * Draws a line between two points using canvas API in the given context. - * @param context - The canvas context to draw on. - * @param begin - The start point of the line. - * @param end - The end point of the line. - */ -export function drawLine(context: CanvasRenderingContext2D, begin: ICoordinates, end: ICoordinates): void { - context.beginPath(); - context.moveTo(begin.x, begin.y); - context.lineTo(end.x, end.y); - context.closePath(); -} - /** * Fills a rectangle with the given color for the whole canvas. * @param context - The canvas context to draw on. @@ -120,7 +106,7 @@ export function drawAfterEffect(container: Container, data: IShapeDrawData): voi return; } - const drawer = container.effectDrawers.get(particle.effect), + const drawer = container.particles.effectDrawers.get(particle.effect), drawFunc = drawer?.drawAfter; if (!drawFunc) { @@ -142,7 +128,7 @@ export function drawBeforeEffect(container: Container, data: IShapeDrawData): vo return; } - const drawer = container.effectDrawers.get(particle.effect); + const drawer = container.particles.effectDrawers.get(particle.effect); if (!drawer?.drawBefore) { return; @@ -163,7 +149,7 @@ export function drawShape(container: Container, data: IShapeDrawData): void { return; } - const drawer = container.shapeDrawers.get(particle.shape); + const drawer = container.particles.shapeDrawers.get(particle.shape); if (!drawer) { return; @@ -198,7 +184,7 @@ export function drawShapeAfterDraw(container: Container, data: IShapeDrawData): return; } - const drawer = container.shapeDrawers.get(particle.shape); + const drawer = container.particles.shapeDrawers.get(particle.shape); if (!drawer?.afterDraw) { return; @@ -219,7 +205,7 @@ export function drawShapeBeforeDraw(container: Container, data: IShapeDrawData): return; } - const drawer = container.shapeDrawers.get(particle.shape); + const drawer = container.particles.shapeDrawers.get(particle.shape); if (!drawer?.beforeDraw) { return; diff --git a/engine/src/Utils/Utils.ts b/engine/src/Utils/Utils.ts index 09101bf0287..ca6e17e3490 100644 --- a/engine/src/Utils/Utils.ts +++ b/engine/src/Utils/Utils.ts @@ -116,19 +116,6 @@ export function isInArray(value: T, array: SingleOrMultiple): boolean { return value === array || (isArray(array) && array.includes(value)); } -/** - * Loads a font for the canvas - * @param font - font name - * @param weight - font weight - */ -export async function loadFont(font?: string, weight?: string): Promise { - try { - await safeDocument().fonts.load(`${weight ?? "400"} 36px '${font ?? "Verdana"}'`); - } catch { - // ignores any error - } -} - /** * Returns a random array index * @param array - the array to get the index from @@ -402,6 +389,9 @@ export function initParticleNumericAnimationValue( case AnimationMode.random: res.status = getRandom() >= half ? AnimationStatus.increasing : AnimationStatus.decreasing; + break; + default: + // no-op break; } @@ -519,6 +509,9 @@ function checkDestroy( particle.destroy(); } + break; + default: + // no-op break; } } @@ -595,6 +588,11 @@ export function updateAnimation( } else { data.value -= velocity; } + + break; + default: + // no-op + break; } if (data.velocity && decay !== identity) { @@ -730,3 +728,35 @@ export async function getItemsFromInitializer>( + container: Container, + map: Map>, + initializers: Map, + force = false, +): Promise> { + let res = map.get(container); + + if (!res || force) { + res = new Map(); + + const entries = await Promise.all( + [...initializers.entries()].map(async ([key, initializer]) => [key, await initializer(container)] as const), + ); + + for (const [key, item] of entries) { + res.set(key, item); + } + + map.set(container, res); + } + + return res; +} diff --git a/interactions/external/attract/CHANGELOG.md b/interactions/external/attract/CHANGELOG.md index 91777783a63..d02c59380c3 100644 --- a/interactions/external/attract/CHANGELOG.md +++ b/interactions/external/attract/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-attract + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-attract + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-attract + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-attract + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/interaction-external-attract diff --git a/interactions/external/attract/package.dist.json b/interactions/external/attract/package.dist.json index 3aad29cc526..69b76cf4c5c 100644 --- a/interactions/external/attract/package.dist.json +++ b/interactions/external/attract/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-attract", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles attract external interaction", "homepage": "https://particles.js.org", "repository": { @@ -87,8 +87,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/interactions/external/attract/package.json b/interactions/external/attract/package.json index 5c871dbfd36..18ff8ea8214 100644 --- a/interactions/external/attract/package.json +++ b/interactions/external/attract/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-attract", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles attract external interaction", "homepage": "https://particles.js.org", "scripts": { @@ -95,8 +95,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/interactions/external/bounce/CHANGELOG.md b/interactions/external/bounce/CHANGELOG.md index c17c38950ea..df5dc7da1c3 100644 --- a/interactions/external/bounce/CHANGELOG.md +++ b/interactions/external/bounce/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-bounce + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-bounce + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-bounce + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-bounce + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/interaction-external-bounce diff --git a/interactions/external/bounce/package.dist.json b/interactions/external/bounce/package.dist.json index 57cf9fd882b..c5f7cb06a40 100644 --- a/interactions/external/bounce/package.dist.json +++ b/interactions/external/bounce/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-bounce", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles bounce external interaction", "homepage": "https://particles.js.org", "repository": { @@ -87,8 +87,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/interactions/external/bounce/package.json b/interactions/external/bounce/package.json index 099935c99b7..dbd0f4ef267 100644 --- a/interactions/external/bounce/package.json +++ b/interactions/external/bounce/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-bounce", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles bounce external interaction", "homepage": "https://particles.js.org", "scripts": { @@ -95,8 +95,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/interactions/external/bubble/CHANGELOG.md b/interactions/external/bubble/CHANGELOG.md index ed9458ef910..6591a113bd2 100644 --- a/interactions/external/bubble/CHANGELOG.md +++ b/interactions/external/bubble/CHANGELOG.md @@ -3,6 +3,24 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-bubble + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +### Bug Fixes + +- fixed some issues with emitters/absorbers life ([76f95ad](https://github.com/tsparticles/tsparticles/commit/76f95ad53bb9f7a9bc36e1cb725a4dac9e549d4e)) + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-bubble + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-bubble + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/interaction-external-bubble diff --git a/interactions/external/bubble/package.dist.json b/interactions/external/bubble/package.dist.json index 695a24b981d..ba3982370d2 100644 --- a/interactions/external/bubble/package.dist.json +++ b/interactions/external/bubble/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-bubble", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles bubble external interaction", "homepage": "https://particles.js.org", "repository": { @@ -87,8 +87,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/interactions/external/bubble/package.json b/interactions/external/bubble/package.json index 526ad3620c6..e80c2350743 100644 --- a/interactions/external/bubble/package.json +++ b/interactions/external/bubble/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-bubble", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles bubble external interaction", "homepage": "https://particles.js.org", "scripts": { @@ -95,8 +95,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/interactions/external/bubble/src/Bubbler.ts b/interactions/external/bubble/src/Bubbler.ts index 09366cf12de..0143369cc82 100644 --- a/interactions/external/bubble/src/Bubbler.ts +++ b/interactions/external/bubble/src/Bubbler.ts @@ -195,7 +195,7 @@ export class Bubbler extends ExternalInteractorBase { const pos = particle.getPosition(), distMouse = getDistance(pos, mouseClickPos), timeSpent = - (new Date().getTime() - (interactivityData.mouse.clickTime ?? defaultClickTime)) / millisecondsToSeconds; + (performance.now() - (interactivityData.mouse.clickTime ?? defaultClickTime)) / millisecondsToSeconds; if (timeSpent > bubbleOptions.duration) { bubble.durationEnd = true; diff --git a/interactions/external/connect/CHANGELOG.md b/interactions/external/connect/CHANGELOG.md index d99b8388343..119d918879d 100644 --- a/interactions/external/connect/CHANGELOG.md +++ b/interactions/external/connect/CHANGELOG.md @@ -3,6 +3,28 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-connect + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-connect + +# [4.0.0-alpha.11](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.10...v4.0.0-alpha.11) (2026-02-02) + +### Bug Fixes + +- small fixes ([ea234fc](https://github.com/tsparticles/tsparticles/commit/ea234fc0bf5d373ccfc1b1d259ccea6a66934426)) + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-connect + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-connect + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/interaction-external-connect diff --git a/interactions/external/connect/package.dist.json b/interactions/external/connect/package.dist.json index fa239754cc6..f378d91a3a4 100644 --- a/interactions/external/connect/package.dist.json +++ b/interactions/external/connect/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-connect", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles connect external interaction", "homepage": "https://particles.js.org", "repository": { @@ -87,8 +87,9 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "4.0.0-alpha.8" + "@tsparticles/canvas-utils": "4.0.0-alpha.14", + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/interactions/external/connect/package.json b/interactions/external/connect/package.json index 994b4191785..aae882b872a 100644 --- a/interactions/external/connect/package.json +++ b/interactions/external/connect/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-connect", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles connect external interaction", "homepage": "https://particles.js.org", "scripts": { @@ -95,8 +95,9 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.8" + "@tsparticles/canvas-utils": "workspace:4.0.0-alpha.14", + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/interactions/external/connect/src/Connector.ts b/interactions/external/connect/src/Connector.ts index 12593a5fffd..dd57aaa3a14 100644 --- a/interactions/external/connect/src/Connector.ts +++ b/interactions/external/connect/src/Connector.ts @@ -40,7 +40,7 @@ export class Connector extends ExternalInteractorBase { /** * Connecting particles on hover interactivity - * @param interactivityData + * @param interactivityData - */ interact(interactivityData: IInteractivityData): void { const container = this.container, diff --git a/interactions/external/connect/src/Utils.ts b/interactions/external/connect/src/Utils.ts index 6280cb0c84d..5250dba7d9c 100644 --- a/interactions/external/connect/src/Utils.ts +++ b/interactions/external/connect/src/Utils.ts @@ -4,10 +4,10 @@ import { type Particle, clamp, colorMix, - drawLine, getStyleFromHsl, getStyleFromRgb, } from "@tsparticles/engine"; +import { drawLine } from "@tsparticles/canvas-utils"; const gradientMin = 0, gradientMax = 1, diff --git a/interactions/external/grab/CHANGELOG.md b/interactions/external/grab/CHANGELOG.md index 30f79d3b698..f21994e7a5f 100644 --- a/interactions/external/grab/CHANGELOG.md +++ b/interactions/external/grab/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-grab + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-grab + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-grab + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-grab + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/interaction-external-grab diff --git a/interactions/external/grab/package.dist.json b/interactions/external/grab/package.dist.json index b66fbf9980d..c04f026d454 100644 --- a/interactions/external/grab/package.dist.json +++ b/interactions/external/grab/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-grab", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles grab external interaction", "homepage": "https://particles.js.org", "repository": { @@ -87,8 +87,9 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "4.0.0-alpha.8" + "@tsparticles/canvas-utils": "4.0.0-alpha.14", + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/interactions/external/grab/package.json b/interactions/external/grab/package.json index e6107010315..7cb654f4664 100644 --- a/interactions/external/grab/package.json +++ b/interactions/external/grab/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-grab", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles grab external interaction", "homepage": "https://particles.js.org", "scripts": { @@ -95,8 +95,9 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.8" + "@tsparticles/canvas-utils": "workspace:4.0.0-alpha.14", + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/interactions/external/grab/src/Utils.ts b/interactions/external/grab/src/Utils.ts index bcb463aaa96..02699648f04 100644 --- a/interactions/external/grab/src/Utils.ts +++ b/interactions/external/grab/src/Utils.ts @@ -1,5 +1,6 @@ import type { GrabContainer, LinkParticle } from "./Types.js"; -import { type ICoordinates, type IRgb, drawLine, getStyleFromRgb } from "@tsparticles/engine"; +import { type ICoordinates, type IRgb, getStyleFromRgb } from "@tsparticles/engine"; +import { drawLine } from "@tsparticles/canvas-utils"; const defaultWidth = 0; diff --git a/interactions/external/parallax/CHANGELOG.md b/interactions/external/parallax/CHANGELOG.md index 79b9d779af7..a5f5e7f8fc1 100644 --- a/interactions/external/parallax/CHANGELOG.md +++ b/interactions/external/parallax/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-parallax + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-parallax + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-parallax + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-parallax + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/interaction-external-parallax diff --git a/interactions/external/parallax/package.dist.json b/interactions/external/parallax/package.dist.json index fb3c04135f1..fc3f678c5a5 100644 --- a/interactions/external/parallax/package.dist.json +++ b/interactions/external/parallax/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-parallax", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles parallax external interaction", "homepage": "https://particles.js.org", "repository": { @@ -87,8 +87,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/interactions/external/parallax/package.json b/interactions/external/parallax/package.json index fa3d716bcb9..81a3fcd24b8 100644 --- a/interactions/external/parallax/package.json +++ b/interactions/external/parallax/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-parallax", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles parallax external interaction", "homepage": "https://particles.js.org", "scripts": { @@ -95,8 +95,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/interactions/external/particle/CHANGELOG.md b/interactions/external/particle/CHANGELOG.md index be5ddc5761f..feb7ab12b36 100644 --- a/interactions/external/particle/CHANGELOG.md +++ b/interactions/external/particle/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-particle + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-particle + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-particle + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-particle + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/interaction-external-particle diff --git a/interactions/external/particle/package.dist.json b/interactions/external/particle/package.dist.json index 401d6416d0b..7723927be3f 100644 --- a/interactions/external/particle/package.dist.json +++ b/interactions/external/particle/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-particle", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particle external interaction", "homepage": "https://particles.js.org", "repository": { @@ -87,8 +87,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/interactions/external/particle/package.json b/interactions/external/particle/package.json index e65955fecf3..67a38e633bf 100644 --- a/interactions/external/particle/package.json +++ b/interactions/external/particle/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-particle", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particle external interaction", "homepage": "https://particles.js.org", "scripts": { @@ -67,8 +67,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/interactions/external/pause/CHANGELOG.md b/interactions/external/pause/CHANGELOG.md index 5a1d40f9cec..af09fabca97 100644 --- a/interactions/external/pause/CHANGELOG.md +++ b/interactions/external/pause/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-pause + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-pause + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-pause + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-pause + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/interaction-external-pause diff --git a/interactions/external/pause/package.dist.json b/interactions/external/pause/package.dist.json index c0e19d3efe9..7acf4bee28a 100644 --- a/interactions/external/pause/package.dist.json +++ b/interactions/external/pause/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-pause", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles pause external interaction", "homepage": "https://particles.js.org", "repository": { @@ -87,8 +87,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/interactions/external/pause/package.json b/interactions/external/pause/package.json index dc8fd5bdd0f..4ad30c4b174 100644 --- a/interactions/external/pause/package.json +++ b/interactions/external/pause/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-pause", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles pause external interaction", "homepage": "https://particles.js.org", "scripts": { @@ -95,8 +95,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/interactions/external/pause/src/Pauser.ts b/interactions/external/pause/src/Pauser.ts index 0c7b12f75a9..f7f7a49f493 100644 --- a/interactions/external/pause/src/Pauser.ts +++ b/interactions/external/pause/src/Pauser.ts @@ -2,7 +2,9 @@ import { ExternalInteractorBase, type IInteractivityData, type InteractivityContainer, + type InteractivityParticle, } from "@tsparticles/plugin-interactivity"; +import { isInArray } from "@tsparticles/engine"; const pauseMode = "pause"; @@ -42,8 +44,12 @@ export class Pauser extends ExternalInteractorBase { // do nothing } - isEnabled(): boolean { - return true; + isEnabled(_interactivityData: IInteractivityData, particle?: InteractivityParticle): boolean { + const container = this.container, + options = container.actualOptions, + events = (particle?.interactivity ?? options.interactivity)?.events; + + return !!events && isInArray(pauseMode, events.onClick.mode); } reset(): void { diff --git a/interactions/external/pop/CHANGELOG.md b/interactions/external/pop/CHANGELOG.md index f76f9b9e117..55d812677f1 100644 --- a/interactions/external/pop/CHANGELOG.md +++ b/interactions/external/pop/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-pop + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-pop + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-pop + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-pop + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/interaction-external-pop diff --git a/interactions/external/pop/package.dist.json b/interactions/external/pop/package.dist.json index d701cf95253..c8f88c4bac4 100644 --- a/interactions/external/pop/package.dist.json +++ b/interactions/external/pop/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-pop", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles pop external interaction", "homepage": "https://particles.js.org", "repository": { @@ -87,8 +87,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/interactions/external/pop/package.json b/interactions/external/pop/package.json index 56f49e1845f..c5087aad4d2 100644 --- a/interactions/external/pop/package.json +++ b/interactions/external/pop/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-pop", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles pop external interaction", "homepage": "https://particles.js.org", "scripts": { @@ -95,8 +95,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/interactions/external/pop/src/Popper.ts b/interactions/external/pop/src/Popper.ts index 2cb8b876150..2d4328658f2 100644 --- a/interactions/external/pop/src/Popper.ts +++ b/interactions/external/pop/src/Popper.ts @@ -2,7 +2,9 @@ import { ExternalInteractorBase, type IInteractivityData, type InteractivityContainer, + type InteractivityParticle, } from "@tsparticles/plugin-interactivity"; +import { isInArray } from "@tsparticles/engine"; const popMode = "pop"; @@ -52,8 +54,13 @@ export class Popper extends ExternalInteractorBase { // do nothing } - isEnabled(): boolean { - return true; + isEnabled(interactivityData: IInteractivityData, particle?: InteractivityParticle): boolean { + const container = this.container, + options = container.actualOptions, + mouse = interactivityData.mouse, + events = (particle?.interactivity ?? options.interactivity)?.events; + + return !!events && mouse.clicking && mouse.inside && !!mouse.position && isInArray(popMode, events.onClick.mode); } reset(): void { diff --git a/interactions/external/push/CHANGELOG.md b/interactions/external/push/CHANGELOG.md index 3bf68529dcf..24b09f58000 100644 --- a/interactions/external/push/CHANGELOG.md +++ b/interactions/external/push/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-push + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-push + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-push + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-push + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/interaction-external-push diff --git a/interactions/external/push/package.dist.json b/interactions/external/push/package.dist.json index 21e08eea383..9b299187427 100644 --- a/interactions/external/push/package.dist.json +++ b/interactions/external/push/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-push", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles push external interaction", "homepage": "https://particles.js.org", "repository": { @@ -87,8 +87,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/interactions/external/push/package.json b/interactions/external/push/package.json index 0f9bb8f4a89..375848d2d11 100644 --- a/interactions/external/push/package.json +++ b/interactions/external/push/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-push", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles push external interaction", "homepage": "https://particles.js.org", "scripts": { @@ -95,8 +95,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/interactions/external/push/src/Pusher.ts b/interactions/external/push/src/Pusher.ts index c270bb0ed2e..fc27ae497fd 100644 --- a/interactions/external/push/src/Pusher.ts +++ b/interactions/external/push/src/Pusher.ts @@ -2,6 +2,7 @@ import { ExternalInteractorBase, type IInteractivityData, type IModes, + type InteractivityParticle, type Modes, } from "@tsparticles/plugin-interactivity"; import { @@ -9,6 +10,7 @@ import { type RecursivePartial, deepExtend, getRangeValue, + isInArray, itemFromArray, itemFromSingleOrMultiple, } from "@tsparticles/engine"; @@ -67,8 +69,13 @@ export class Pusher extends ExternalInteractorBase { // do nothing } - isEnabled(): boolean { - return true; + isEnabled(interactivityData: IInteractivityData, particle?: InteractivityParticle): boolean { + const container = this.container, + options = container.actualOptions, + mouse = interactivityData.mouse, + events = (particle?.interactivity ?? options.interactivity)?.events; + + return !!events && mouse.clicking && mouse.inside && !!mouse.position && isInArray(pushMode, events.onClick.mode); } loadModeOptions(options: Modes & PushMode, ...sources: RecursivePartial<(IModes & IPushMode) | undefined>[]): void { diff --git a/interactions/external/remove/CHANGELOG.md b/interactions/external/remove/CHANGELOG.md index a0e89c5b2ab..fa9961252f6 100644 --- a/interactions/external/remove/CHANGELOG.md +++ b/interactions/external/remove/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-remove + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-remove + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-remove + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-remove + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/interaction-external-remove diff --git a/interactions/external/remove/package.dist.json b/interactions/external/remove/package.dist.json index 6c4c2e9be75..80917087d36 100644 --- a/interactions/external/remove/package.dist.json +++ b/interactions/external/remove/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-remove", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles remove external interaction", "homepage": "https://particles.js.org", "repository": { @@ -87,8 +87,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/interactions/external/remove/package.json b/interactions/external/remove/package.json index c75fd651c2c..b9e76739fad 100644 --- a/interactions/external/remove/package.json +++ b/interactions/external/remove/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-remove", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles remove external interaction", "homepage": "https://particles.js.org", "scripts": { @@ -95,8 +95,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/interactions/external/remove/src/Remover.ts b/interactions/external/remove/src/Remover.ts index 2c83b72a61b..67606b11449 100644 --- a/interactions/external/remove/src/Remover.ts +++ b/interactions/external/remove/src/Remover.ts @@ -2,10 +2,11 @@ import { ExternalInteractorBase, type IInteractivityData, type IModes, + type InteractivityParticle, type Modes, } from "@tsparticles/plugin-interactivity"; import type { IRemoveMode, RemoveContainer, RemoveMode } from "./Types.js"; -import { type RecursivePartial, getRangeValue } from "@tsparticles/engine"; +import { type RecursivePartial, getRangeValue, isInArray } from "@tsparticles/engine"; import { Remove } from "./Options/Classes/Remove.js"; const removeMode = "remove"; @@ -45,8 +46,13 @@ export class Remover extends ExternalInteractorBase { // do nothing } - isEnabled(): boolean { - return true; + isEnabled(interactivityData: IInteractivityData, particle?: InteractivityParticle): boolean { + const container = this.container, + options = container.actualOptions, + mouse = interactivityData.mouse, + events = (particle?.interactivity ?? options.interactivity)?.events; + + return !!events && mouse.clicking && mouse.inside && !!mouse.position && isInArray(removeMode, events.onClick.mode); } loadModeOptions( diff --git a/interactions/external/repulse/CHANGELOG.md b/interactions/external/repulse/CHANGELOG.md index 1265e4acc54..9e3fdebe277 100644 --- a/interactions/external/repulse/CHANGELOG.md +++ b/interactions/external/repulse/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-repulse + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-repulse + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-repulse + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-repulse + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/interaction-external-repulse diff --git a/interactions/external/repulse/package.dist.json b/interactions/external/repulse/package.dist.json index 04a2203ec6a..81641cae731 100644 --- a/interactions/external/repulse/package.dist.json +++ b/interactions/external/repulse/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-repulse", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles repulse external interaction", "homepage": "https://particles.js.org", "repository": { @@ -87,8 +87,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/interactions/external/repulse/package.json b/interactions/external/repulse/package.json index 3a407781ab8..c7b000cedf0 100644 --- a/interactions/external/repulse/package.json +++ b/interactions/external/repulse/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-repulse", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles repulse external interaction", "homepage": "https://particles.js.org", "scripts": { @@ -95,8 +95,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/interactions/external/slow/CHANGELOG.md b/interactions/external/slow/CHANGELOG.md index ab0bc510ee7..0ed62e62575 100644 --- a/interactions/external/slow/CHANGELOG.md +++ b/interactions/external/slow/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-slow + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-slow + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-slow + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-slow + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/interaction-external-slow diff --git a/interactions/external/slow/package.dist.json b/interactions/external/slow/package.dist.json index bd1ff1e2029..701e7810b41 100644 --- a/interactions/external/slow/package.dist.json +++ b/interactions/external/slow/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-slow", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles slow external interaction", "homepage": "https://particles.js.org", "repository": { @@ -87,8 +87,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/interactions/external/slow/package.json b/interactions/external/slow/package.json index 286e1f48c14..52ba2eed0f6 100644 --- a/interactions/external/slow/package.json +++ b/interactions/external/slow/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-slow", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles slow external interaction", "homepage": "https://particles.js.org", "scripts": { @@ -95,8 +95,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/interactions/external/trail/CHANGELOG.md b/interactions/external/trail/CHANGELOG.md index 9558e394d0a..09e5129ae24 100644 --- a/interactions/external/trail/CHANGELOG.md +++ b/interactions/external/trail/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-trail + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-trail + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-trail + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-external-trail + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/interaction-external-trail diff --git a/interactions/external/trail/package.dist.json b/interactions/external/trail/package.dist.json index 33da01dd583..872d78c0a83 100644 --- a/interactions/external/trail/package.dist.json +++ b/interactions/external/trail/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-trail", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles trail external interaction", "homepage": "https://particles.js.org", "repository": { @@ -87,8 +87,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/interactions/external/trail/package.json b/interactions/external/trail/package.json index dcfd889d5b6..e32d1c97667 100644 --- a/interactions/external/trail/package.json +++ b/interactions/external/trail/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-external-trail", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles trail external interaction", "homepage": "https://particles.js.org", "scripts": { @@ -67,8 +67,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/interactions/light/CHANGELOG.md b/interactions/light/CHANGELOG.md index c205d78fd1f..07304236193 100644 --- a/interactions/light/CHANGELOG.md +++ b/interactions/light/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-light + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-light + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-light + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-light + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/interaction-light diff --git a/interactions/light/package.dist.json b/interactions/light/package.dist.json index 11a78af1c74..9624a8adf32 100644 --- a/interactions/light/package.dist.json +++ b/interactions/light/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-light", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles Light interaction", "homepage": "https://particles.js.org", "repository": { @@ -101,8 +101,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/interactions/light/package.json b/interactions/light/package.json index 45196b1ff79..88949dd55d7 100644 --- a/interactions/light/package.json +++ b/interactions/light/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-light", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles Light interaction", "homepage": "https://particles.js.org", "scripts": { @@ -109,8 +109,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/interactions/light/src/Utils.ts b/interactions/light/src/Utils.ts index 8ec4a187006..c8f1f916cd9 100644 --- a/interactions/light/src/Utils.ts +++ b/interactions/light/src/Utils.ts @@ -27,15 +27,14 @@ export function drawLight(container: LightContainer, context: CanvasRenderingCon context.arc(mousePos.x, mousePos.y, lightOptions.radius, arcStart, doublePI); const gradientAmbientLight = context.createRadialGradient( - mousePos.x, - mousePos.y, - arcStart, - mousePos.x, - mousePos.y, - lightOptions.radius, - ); - - const gradientRgb = container.canvas.mouseLight; + mousePos.x, + mousePos.y, + arcStart, + mousePos.x, + mousePos.y, + lightOptions.radius, + ), + gradientRgb = container.canvas.mouseLight; if (!gradientRgb?.start || !gradientRgb.stop) { return; diff --git a/interactions/particles/attract/CHANGELOG.md b/interactions/particles/attract/CHANGELOG.md index 3adbcfdd845..a98ea90d813 100644 --- a/interactions/particles/attract/CHANGELOG.md +++ b/interactions/particles/attract/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-particles-attract + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-particles-attract + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-particles-attract + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-particles-attract + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/interaction-particles-attract diff --git a/interactions/particles/attract/package.dist.json b/interactions/particles/attract/package.dist.json index cf9ba555922..73275d67245 100644 --- a/interactions/particles/attract/package.dist.json +++ b/interactions/particles/attract/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-particles-attract", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles attract particles interaction", "homepage": "https://particles.js.org", "repository": { @@ -87,8 +87,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/interactions/particles/attract/package.json b/interactions/particles/attract/package.json index 72b64bc061e..30380aa4a57 100644 --- a/interactions/particles/attract/package.json +++ b/interactions/particles/attract/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-particles-attract", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles attract particles interaction", "homepage": "https://particles.js.org", "scripts": { @@ -95,8 +95,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/interactions/particles/collisions/CHANGELOG.md b/interactions/particles/collisions/CHANGELOG.md index c4b5c1bf4d7..52cd54b2d53 100644 --- a/interactions/particles/collisions/CHANGELOG.md +++ b/interactions/particles/collisions/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-particles-collisions + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-particles-collisions + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-particles-collisions + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-particles-collisions + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/interaction-particles-collisions diff --git a/interactions/particles/collisions/package.dist.json b/interactions/particles/collisions/package.dist.json index cfadf14f0c3..700357eac8e 100644 --- a/interactions/particles/collisions/package.dist.json +++ b/interactions/particles/collisions/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-particles-collisions", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles collisions particles interaction", "homepage": "https://particles.js.org", "repository": { @@ -87,8 +87,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/interactions/particles/collisions/package.json b/interactions/particles/collisions/package.json index 4221ee7386d..945dd0d872d 100644 --- a/interactions/particles/collisions/package.json +++ b/interactions/particles/collisions/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-particles-collisions", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles collisions particles interaction", "homepage": "https://particles.js.org", "scripts": { @@ -95,8 +95,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/interactions/particles/collisions/src/ResolveCollision.ts b/interactions/particles/collisions/src/ResolveCollision.ts index 4ba7fe8d518..f8a933ce622 100644 --- a/interactions/particles/collisions/src/ResolveCollision.ts +++ b/interactions/particles/collisions/src/ResolveCollision.ts @@ -34,5 +34,8 @@ export function resolveCollision( destroy(p1, p2); break; } + default: + // no-op + break; } } diff --git a/interactions/particles/links/CHANGELOG.md b/interactions/particles/links/CHANGELOG.md index 6631671b5b8..1256a39a838 100644 --- a/interactions/particles/links/CHANGELOG.md +++ b/interactions/particles/links/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-particles-links + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-particles-links + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-particles-links + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-particles-links + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/interaction-particles-links diff --git a/interactions/particles/links/package.dist.json b/interactions/particles/links/package.dist.json index b6664a04522..62ed0b037f3 100644 --- a/interactions/particles/links/package.dist.json +++ b/interactions/particles/links/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-particles-links", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles links particles interaction", "homepage": "https://particles.js.org", "repository": { @@ -87,8 +87,9 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "4.0.0-alpha.8" + "@tsparticles/canvas-utils": "4.0.0-alpha.14", + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/interactions/particles/links/package.json b/interactions/particles/links/package.json index 16322b2b2e8..879c6c479b7 100644 --- a/interactions/particles/links/package.json +++ b/interactions/particles/links/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-particles-links", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles links particles interaction", "homepage": "https://particles.js.org", "scripts": { @@ -95,8 +95,9 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.8" + "@tsparticles/canvas-utils": "workspace:4.0.0-alpha.14", + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/interactions/particles/links/src/LinksPlugin.ts b/interactions/particles/links/src/LinksPlugin.ts index 9cba7dbd1b8..427f1d8afaa 100644 --- a/interactions/particles/links/src/LinksPlugin.ts +++ b/interactions/particles/links/src/LinksPlugin.ts @@ -3,11 +3,10 @@ import type { LinkContainer } from "./Types.js"; import type { LinkInstance } from "./LinkInstance.js"; export class LinksPlugin implements IPlugin { - readonly id; + readonly id = "links"; private readonly _engine; constructor(engine: Engine) { - this.id = "links"; this._engine = engine; } diff --git a/interactions/particles/links/src/Utils.ts b/interactions/particles/links/src/Utils.ts index d94f11f6e01..e990bdeb2bc 100644 --- a/interactions/particles/links/src/Utils.ts +++ b/interactions/particles/links/src/Utils.ts @@ -1,6 +1,5 @@ import { type ICoordinates, - drawLine, getDistance, getDistances, getRandom, @@ -8,6 +7,7 @@ import { rangeColorToRgb, } from "@tsparticles/engine"; import type { LinkLineDrawParams, LinkParticle, LinkTriangleDrawParams } from "./Types.js"; +import { drawLine } from "@tsparticles/canvas-utils"; /** * Draws a triangle with three points using canvas API in the given context. @@ -45,15 +45,13 @@ export function drawLinkLine(params: LinkLineDrawParams): void { drawn = true; } else if (links.warp) { - let pi1: ICoordinates | undefined; - let pi2: ICoordinates | undefined; + let pi1: ICoordinates | undefined, pi2: ICoordinates | undefined; const endNE = { - x: end.x - canvasSize.width, - y: end.y, - }; - - const d1 = getDistances(begin, endNE); + x: end.x - canvasSize.width, + y: end.y, + }, + d1 = getDistances(begin, endNE); if (d1.distance <= maxDistance) { const yi = begin.y - (d1.dy / d1.dx) * begin.x; @@ -62,29 +60,27 @@ export function drawLinkLine(params: LinkLineDrawParams): void { pi2 = { x: canvasSize.width, y: yi }; } else { const endSW = { - x: end.x, - y: end.y - canvasSize.height, - }; - - const d2 = getDistances(begin, endSW); + x: end.x, + y: end.y - canvasSize.height, + }, + d2 = getDistances(begin, endSW); if (d2.distance <= maxDistance) { - const yi = begin.y - (d2.dy / d2.dx) * begin.x; - const xi = -yi / (d2.dy / d2.dx); + const yi = begin.y - (d2.dy / d2.dx) * begin.x, + xi = -yi / (d2.dy / d2.dx); pi1 = { x: xi, y: 0 }; pi2 = { x: xi, y: canvasSize.height }; } else { const endSE = { - x: end.x - canvasSize.width, - y: end.y - canvasSize.height, - }; - - const d3 = getDistances(begin, endSE); + x: end.x - canvasSize.width, + y: end.y - canvasSize.height, + }, + d3 = getDistances(begin, endSE); if (d3.distance <= maxDistance) { - const yi = begin.y - (d3.dy / d3.dx) * begin.x; - const xi = -yi / (d3.dy / d3.dx); + const yi = begin.y - (d3.dy / d3.dx) * begin.x, + xi = -yi / (d3.dy / d3.dx); pi1 = { x: xi, y: yi }; pi2 = { x: pi1.x + canvasSize.width, y: pi1.y + canvasSize.height }; diff --git a/interactions/particles/repulse/CHANGELOG.md b/interactions/particles/repulse/CHANGELOG.md index 5f522fab29e..0b4bdc069ff 100644 --- a/interactions/particles/repulse/CHANGELOG.md +++ b/interactions/particles/repulse/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-particles-repulse + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-particles-repulse + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-particles-repulse + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/interaction-particles-repulse + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/interaction-particles-repulse diff --git a/interactions/particles/repulse/package.dist.json b/interactions/particles/repulse/package.dist.json index cfbf5930f1b..55b747bd6bd 100644 --- a/interactions/particles/repulse/package.dist.json +++ b/interactions/particles/repulse/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-particles-repulse", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles repulse particles interaction", "homepage": "https://particles.js.org", "repository": { @@ -101,8 +101,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/interactions/particles/repulse/package.json b/interactions/particles/repulse/package.json index 69376b2abc8..a41ed05bea0 100644 --- a/interactions/particles/repulse/package.json +++ b/interactions/particles/repulse/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/interaction-particles-repulse", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles repulse particles interaction", "homepage": "https://particles.js.org", "scripts": { @@ -109,8 +109,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/lerna.json b/lerna.json index 27164fe53a1..c7260be7d9e 100644 --- a/lerna.json +++ b/lerna.json @@ -1,10 +1,16 @@ { - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "npmClient": "pnpm", "conventionalCommits": true, "command": { "version": { - "message": "chore(release): published new version" + "message": "chore(release): published new version", + "forcePublish": true, + "yes": true, + "conventionalCommits": true + }, + "publish": { + "yes": true } }, "$schema": "node_modules/lerna/schemas/lerna-schema.json" diff --git a/move/base/CHANGELOG.md b/move/base/CHANGELOG.md index 339e33a0ea0..e65a772591c 100644 --- a/move/base/CHANGELOG.md +++ b/move/base/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/move-base + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/move-base + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/move-base + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/move-base diff --git a/move/base/package.dist.json b/move/base/package.dist.json index c90a5462351..a1ba966abb8 100644 --- a/move/base/package.dist.json +++ b/move/base/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/move-base", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles Base movement", "homepage": "https://particles.js.org", "repository": { @@ -87,7 +87,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/move/base/package.json b/move/base/package.json index ab8ba4fdb01..3cbae74b202 100644 --- a/move/base/package.json +++ b/move/base/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/move-base", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles Base movement", "homepage": "https://particles.js.org", "scripts": { @@ -95,7 +95,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/package.json b/package.json index 6afb850dea4..e253d1b30ec 100644 --- a/package.json +++ b/package.json @@ -13,8 +13,8 @@ "build:docs:json": "rimraf docs.json && typedoc --json docs.json", "prettify:ci:readme": "prettier --check ./README.md && prettier --check ./markdown/*", "prettify:readme": "prettier --write ./README.md && prettier --write ./markdown/*", - "version:alpha": "lerna version prerelease --preid alpha --conventional-commits", - "version:beta": "lerna version prerelease --preid beta --conventional-commits", + "version:alpha": "lerna version prerelease --preid alpha", + "version:beta": "lerna version prerelease --preid beta", "publish:alpha": "lerna publish from-package --pre-dist-tag alpha --preid alpha", "publish:beta": "lerna publish from-package --pre-dist-tag beta --preid beta", "publish:next": "lerna publish from-package --dist-tag next", @@ -26,41 +26,41 @@ }, "prettier": "@tsparticles/prettier-config", "devDependencies": { - "@babel/core": "^7.28.6", - "@commitlint/cli": "^20.3.1", - "@commitlint/config-conventional": "^20.3.1", - "@tsparticles/cli": "^3.0.16", - "@tsparticles/eslint-config": "^3.0.11", + "@commitlint/cli": "^20.4.1", + "@commitlint/config-conventional": "^20.4.1", + "@swc/core": "^1.15.11", + "@tsparticles/cli": "^3.1.3", + "@tsparticles/depcruise-config": "^3.1.2", + "@tsparticles/eslint-config": "^3.1.1", "@tsparticles/prettier-config": "^3.0.11", - "@tsparticles/tsconfig": "^3.0.9", - "@tsparticles/webpack-plugin": "^3.0.11", + "@tsparticles/tsconfig": "^3.1.0", + "@tsparticles/webpack-plugin": "^3.1.2", "@types/jsdom": "^27.0.0", - "@types/node": "^25.0.10", + "@types/node": "^25.2.0", "@types/webpack-env": "^1.18.8", "@vitest/coverage-v8": "^4.0.18", "@vitest/ui": "^4.0.18", - "babel-loader": "^10.0.0", "browserslist": "^4.28.1", "canvas": "^3.2.1", "copyfiles": "^2.4.1", "cross-env": "^10.1.0", "eslint": "^9.39.2", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-jsdoc": "^62.3.1", + "eslint-plugin-jsdoc": "^62.5.0", "eslint-plugin-prettier": "^5.5.5", "eslint-plugin-tsdoc": "^0.5.0", "fs-extra": "^11.3.3", "gh-pages": "^6.3.0", "husky": "^9.1.7", - "jsdom": "^27.4.0", + "jsdom": "^28.0.0", "jsdom-global": "^3.0.2", "lerna": "^9.0.3", - "madge": "^8.0.0", - "nx": "^22.4.1", + "nx": "^22.4.4", "nx-cloud": "^19.1.0", "prettier": "^3.8.1", "prettier-plugin-multiline-arrays": "4.1.3", "rimraf": "^6.1.2", + "swc-loader": "^0.2.7", "source-map-support": "^0.5.21", "terser-webpack-plugin": "^5.3.16", "ts-json-schema-generator": "^2.4.0", @@ -70,10 +70,10 @@ "typedoc-plugin-clarity": "^1.6.0", "typedoc-plugin-coverage": "^4.0.2", "typedoc-plugin-keywords": "^1.6.0", - "typedoc-plugin-mdn-links": "^5.1.0", + "typedoc-plugin-mdn-links": "^5.1.1", "typedoc-plugin-missing-exports": "^4.1.2", "typescript": "^5.9.3", - "typescript-eslint": "^8.53.1", + "typescript-eslint": "^8.54.0", "typescript-json-schema": "^0.67.1", "vitest": "^4.0.18", "webpack": "^5.104.1", @@ -81,5 +81,5 @@ "webpack-cli": "^6.0.1", "yargs": "^18.0.0" }, - "packageManager": "pnpm@10.28.1" + "packageManager": "pnpm@10.28.2" } diff --git a/paths/branches/.browserslistrc b/paths/branches/.browserslistrc new file mode 100644 index 00000000000..fb811e7a9d2 --- /dev/null +++ b/paths/branches/.browserslistrc @@ -0,0 +1,2 @@ +since 2021 +not dead diff --git a/paths/branches/.npmignore b/paths/branches/.npmignore new file mode 100644 index 00000000000..5c901533f98 --- /dev/null +++ b/paths/branches/.npmignore @@ -0,0 +1 @@ +report.html \ No newline at end of file diff --git a/paths/branches/CHANGELOG.md b/paths/branches/CHANGELOG.md new file mode 100644 index 00000000000..41854878a6e --- /dev/null +++ b/paths/branches/CHANGELOG.md @@ -0,0 +1,24 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-branches + +# [4.0.0-alpha.11](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.10...v4.0.0-alpha.11) (2026-02-02) + +### Bug Fixes + +- small fixes ([c4e6d06](https://github.com/tsparticles/tsparticles/commit/c4e6d0691b9055165fb745eb6a77d6601dcebae2)) + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-branches + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Features + +- add branches path generator and related configurations ([41de076](https://github.com/tsparticles/tsparticles/commit/41de07658b1d5ab92f566520ac197fcacc17ac18)) diff --git a/paths/branches/LICENSE b/paths/branches/LICENSE new file mode 100644 index 00000000000..bdc05f528fa --- /dev/null +++ b/paths/branches/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Matteo Bruni + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/paths/branches/README.md b/paths/branches/README.md new file mode 100644 index 00000000000..eb97e34a75e --- /dev/null +++ b/paths/branches/README.md @@ -0,0 +1,74 @@ +[![banner](https://particles.js.org/images/banner3.png)](https://particles.js.org) + +# tsParticles Branches Path + +[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/path-branches/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/path-branches) +[![npmjs](https://badge.fury.io/js/@tsparticles/path-branches.svg)](https://www.npmjs.com/package/@tsparticles/path-branches) +[![npmjs](https://img.shields.io/npm/dt/@tsparticles/path-branches)](https://www.npmjs.com/package/@tsparticles/path-branches) [![GitHub Sponsors](https://img.shields.io/github/sponsors/matteobruni)](https://github.com/sponsors/matteobruni) + +[tsParticles](https://github.com/tsparticles/tsparticles) path plugin for branches movement. + +## How to use it + +### CDN / Vanilla JS / jQuery + +The CDN/Vanilla version JS has one required file in vanilla configuration: + +Including the `tsparticles.path.branches.min.js` file will export the function to load the path plugin: + +```text +loadBranchesPath +``` + +### Usage + +Once the scripts are loaded you can set up `tsParticles` and the path plugin like this: + +```javascript +(async () => { + await loadBranchesPath(tsParticles); + + await tsParticles.load({ + id: "tsparticles", + options: { + /* options */ + }, + }); +})(); +``` + +### ESM / CommonJS + +This package is compatible also with ES or CommonJS modules, firstly this needs to be installed, like this: + +```shell +$ npm install @tsparticles/path-branches +``` + +or + +```shell +$ yarn add @tsparticles/path-branches +``` + +Then you need to import it in the app, like this: + +```javascript +const { tsParticles } = require("@tsparticles/engine"); +const { loadBranchesPath } = require("@tsparticles/path-branches"); + +(async () => { + await loadBranchesPath(tsParticles); +})(); +``` + +or + +```javascript +import { tsParticles } from "@tsparticles/engine"; +import { loadBranchesPath } from "@tsparticles/path-branches"; + +(async () => { + await loadBranchesPath(tsParticles); +})(); +``` diff --git a/paths/branches/eslint.config.js b/paths/branches/eslint.config.js new file mode 100644 index 00000000000..a461ddbce48 --- /dev/null +++ b/paths/branches/eslint.config.js @@ -0,0 +1,6 @@ +import tsParticlesESLintConfig from "@tsparticles/eslint-config"; +import { defineConfig } from "eslint/config"; + +export default defineConfig([ + tsParticlesESLintConfig, +]); diff --git a/paths/branches/package.dist.json b/paths/branches/package.dist.json new file mode 100644 index 00000000000..d85e0423ca4 --- /dev/null +++ b/paths/branches/package.dist.json @@ -0,0 +1,110 @@ +{ + "name": "@tsparticles/path-branches", + "version": "4.0.0-alpha.14", + "description": "tsParticles branches path", + "homepage": "https://particles.js.org", + "repository": { + "type": "git", + "url": "git+https://github.com/tsparticles/tsparticles.git", + "directory": "paths/branches" + }, + "keywords": [ + "front-end", + "frontend", + "tsparticles", + "particles.js", + "particlesjs", + "particles", + "particle", + "canvas", + "jsparticles", + "xparticles", + "particles-js", + "particles-bg", + "particles-bg-vue", + "particles-ts", + "particles.ts", + "react-particles-js", + "react-particles.js", + "react-particles", + "react", + "reactjs", + "vue-particles", + "ngx-particles", + "angular-particles", + "particleground", + "vue", + "vuejs", + "preact", + "preactjs", + "jquery", + "angularjs", + "angular", + "typescript", + "javascript", + "animation", + "web", + "html5", + "web-design", + "webdesign", + "css", + "html", + "css3", + "animated", + "background", + "confetti", + "canvas", + "fireworks", + "fireworks-js", + "confetti-js", + "confettijs", + "fireworksjs", + "canvas-confetti", + "tsparticles-plugin", + "tsparticles-path" + ], + "publishConfig": { + "access": "public" + }, + "author": "Matteo Bruni ", + "license": "MIT", + "bugs": { + "url": "https://github.com/tsparticles/tsparticles/issues" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "sideEffects": false, + "jsdelivr": "tsparticles.path.branches.min.js", + "unpkg": "tsparticles.path.branches.min.js", + "browser": "browser/index.js", + "main": "cjs/index.js", + "module": "esm/index.js", + "types": "types/index.d.ts", + "exports": { + ".": { + "types": "./types/index.d.ts", + "browser": "./browser/index.js", + "import": "./esm/index.js", + "require": "./cjs/index.js", + "umd": "./umd/index.js", + "default": "./cjs/index.js" + }, + "./package.json": "./package.json" + }, + "dependencies": { + "@tsparticles/engine": "4.0.0-alpha.14" + }, + "type": "module" +} diff --git a/paths/branches/package.json b/paths/branches/package.json new file mode 100644 index 00000000000..327e880f30d --- /dev/null +++ b/paths/branches/package.json @@ -0,0 +1,120 @@ +{ + "name": "@tsparticles/path-branches", + "version": "4.0.0-alpha.14", + "description": "tsParticles branches path", + "homepage": "https://particles.js.org", + "scripts": { + "build": "tsparticles-cli build", + "build:ci": "tsparticles-cli build --ci", + "version": "tsparticles-cli build -d && git add package.dist.json && tsparticles-cli build -p -l && git add .", + "prepack": "pnpm run build" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/tsparticles/tsparticles.git", + "directory": "paths/branches" + }, + "keywords": [ + "front-end", + "frontend", + "tsparticles", + "particles.js", + "particlesjs", + "particles", + "particle", + "canvas", + "jsparticles", + "xparticles", + "particles-js", + "particles-bg", + "particles-bg-vue", + "particles-ts", + "particles.ts", + "react-particles-js", + "react-particles.js", + "react-particles", + "react", + "reactjs", + "vue-particles", + "ngx-particles", + "angular-particles", + "particleground", + "vue", + "vuejs", + "preact", + "preactjs", + "jquery", + "angularjs", + "angular", + "typescript", + "javascript", + "animation", + "web", + "html5", + "web-design", + "webdesign", + "css", + "html", + "css3", + "animated", + "background", + "confetti", + "canvas", + "fireworks", + "fireworks-js", + "confetti-js", + "confettijs", + "fireworksjs", + "canvas-confetti", + "tsparticles-plugin", + "tsparticles-path" + ], + "author": "Matteo Bruni ", + "license": "MIT", + "bugs": { + "url": "https://github.com/tsparticles/tsparticles/issues" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "prettier": "@tsparticles/prettier-config", + "files": [ + "dist" + ], + "sideEffects": false, + "browser": "dist/browser/index.js", + "main": "dist/cjs/index.js", + "module": "dist/esm/index.js", + "types": "dist/types/index.d.ts", + "exports": { + ".": { + "types": "./dist/types/index.d.ts", + "browser": "./dist/browser/index.js", + "import": "./dist/esm/index.js", + "require": "./dist/cjs/index.js", + "umd": "./dist/umd/index.js", + "default": "./dist/cjs/index.js" + }, + "./package.json": "./dist/package.json" + }, + "dependencies": { + "@tsparticles/engine": "workspace:4.0.0-alpha.14" + }, + "publishConfig": { + "access": "public", + "directory": "dist", + "linkDirectory": true + }, + "type": "module" +} diff --git a/paths/branches/src/BranchesPathGenerator.ts b/paths/branches/src/BranchesPathGenerator.ts new file mode 100644 index 00000000000..eb3e12148be --- /dev/null +++ b/paths/branches/src/BranchesPathGenerator.ts @@ -0,0 +1,78 @@ +/* eslint-disable @typescript-eslint/no-magic-numbers */ +import { type Container, type IMovePathGenerator, Vector, doublePI, getRandom } from "@tsparticles/engine"; +import type { BranchesPathParticle } from "./BranchesPathParticle.js"; +import type { IBranchesPathOptions } from "./IBranchesPathOptions.js"; + +const defaultOptions = { + segmentLength: 20, + branchChance: 0.2, + maxAngle: Math.PI / 3, + speedVariation: 0.3, +}; + +export class BranchesPathGenerator implements IMovePathGenerator { + readonly options: IBranchesPathOptions; + private readonly _container; + + constructor(container: Container) { + this._container = container; + + this.options = { ...defaultOptions }; + } + + generate(p: BranchesPathParticle): Vector { + const opts = this.options; + + p.branching ??= { + angle: getRandom() * doublePI, + remaining: opts.segmentLength, + speed: p.velocity.length, + }; + + const b = p.branching; + + // New segment + if (b.remaining <= 0) { + const branch = getRandom() < (opts.branchChance ?? 0), + maxAngle = opts.maxAngle ?? defaultOptions.maxAngle, + delta = (getRandom() * 2 - 1) * (branch ? maxAngle : maxAngle * 0.3); + + b.angle += delta; + b.remaining = opts.segmentLength; + + const speedFactor = 1 + (getRandom() * 2 - 1) * (opts.speedVariation ?? 0); + + b.speed = p.velocity.length * speedFactor; + } + + b.remaining -= b.speed; + + const vx = Math.cos(b.angle) * b.speed, + vy = Math.sin(b.angle) * b.speed; + + p.velocity.x = 0; + p.velocity.y = 0; + + return Vector.create(vx, vy); + } + + init(): void { + const source = this._container.actualOptions.particles.move.path.options; + + this.options.segmentLength = (source["segmentLength"] as number | undefined) ?? this.options.segmentLength; + + this.options.branchChance = (source["branchChance"] as number | undefined) ?? this.options.branchChance; + + this.options.maxAngle = (source["maxAngle"] as number | undefined) ?? this.options.maxAngle; + + this.options.speedVariation = (source["speedVariation"] as number | undefined) ?? this.options.speedVariation; + } + + reset(p: BranchesPathParticle): void { + delete p.branching; + } + + update(): void { + // nothing to do + } +} diff --git a/paths/branches/src/BranchesPathParticle.ts b/paths/branches/src/BranchesPathParticle.ts new file mode 100644 index 00000000000..740e3aa5b16 --- /dev/null +++ b/paths/branches/src/BranchesPathParticle.ts @@ -0,0 +1,9 @@ +import type { Particle } from "@tsparticles/engine"; + +export type BranchesPathParticle = Particle & { + branching?: { + angle: number; + remaining: number; + speed: number; + }; +}; diff --git a/paths/branches/src/IBranchesPathOptions.ts b/paths/branches/src/IBranchesPathOptions.ts new file mode 100644 index 00000000000..eda999f981e --- /dev/null +++ b/paths/branches/src/IBranchesPathOptions.ts @@ -0,0 +1,21 @@ +export interface IBranchesPathOptions { + /** + * Probability [0..1] of a sharp branch + */ + branchChance?: number; + + /** + * Max angle deviation in radians + */ + maxAngle?: number; + + /** + * Length of each segment in pixels + */ + segmentLength: number; + + /** + * Random speed multiplier + */ + speedVariation?: number; +} diff --git a/paths/branches/src/index.ts b/paths/branches/src/index.ts new file mode 100644 index 00000000000..52fc357d684 --- /dev/null +++ b/paths/branches/src/index.ts @@ -0,0 +1,20 @@ +import type { Engine } from "@tsparticles/engine"; + +declare const __VERSION__: string; + +export const branchingPathName = "branchesPathGenerator"; + +/** + * @param engine - + */ +export async function loadBranchesPath(engine: Engine): Promise { + engine.checkVersion(__VERSION__); + + await engine.register(e => { + e.addPathGenerator(branchingPathName, async container => { + const { BranchesPathGenerator } = await import("./BranchesPathGenerator.js"); + + return new BranchesPathGenerator(container); + }); + }); +} diff --git a/paths/branches/tsconfig.base.json b/paths/branches/tsconfig.base.json new file mode 100644 index 00000000000..d43f4eba9bd --- /dev/null +++ b/paths/branches/tsconfig.base.json @@ -0,0 +1,9 @@ +{ + "extends": "@tsparticles/tsconfig/tsconfig.base.json", + "compilerOptions": { + "rootDir": "./src" + }, + "include": [ + "./src" + ] +} diff --git a/paths/branches/tsconfig.browser.json b/paths/branches/tsconfig.browser.json new file mode 100644 index 00000000000..3bb4173186c --- /dev/null +++ b/paths/branches/tsconfig.browser.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.browser.json"], + "compilerOptions": { + "outDir": "./dist/browser" + } +} diff --git a/paths/branches/tsconfig.json b/paths/branches/tsconfig.json new file mode 100644 index 00000000000..4c843651531 --- /dev/null +++ b/paths/branches/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.json"], + "compilerOptions": { + "outDir": "./dist/cjs" + } +} diff --git a/paths/branches/tsconfig.module.json b/paths/branches/tsconfig.module.json new file mode 100644 index 00000000000..fa94c2a6293 --- /dev/null +++ b/paths/branches/tsconfig.module.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.module.json"], + "compilerOptions": { + "outDir": "./dist/esm" + } +} diff --git a/paths/branches/tsconfig.types.json b/paths/branches/tsconfig.types.json new file mode 100644 index 00000000000..8ec1d3edd57 --- /dev/null +++ b/paths/branches/tsconfig.types.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.types.json"], + "compilerOptions": { + "outDir": "./dist/types" + } +} diff --git a/paths/branches/tsconfig.umd.json b/paths/branches/tsconfig.umd.json new file mode 100644 index 00000000000..41b78634d8c --- /dev/null +++ b/paths/branches/tsconfig.umd.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.umd.json"], + "compilerOptions": { + "outDir": "./dist/umd" + } +} diff --git a/paths/branches/typedoc.json b/paths/branches/typedoc.json new file mode 100644 index 00000000000..f6b45dcfc89 --- /dev/null +++ b/paths/branches/typedoc.json @@ -0,0 +1,15 @@ +{ + "projectDocuments": ["./markdown/**/*.md"], + "entryPoints": [ + "./src/" + ], + "entryPointStrategy": "expand", + "name": "tsParticles Branches Path", + "includeVersion": true, + "hideGenerator": true, + "out": "./docs", + "validation": { + "invalidLink": true, + "notDocumented": true + } +} diff --git a/paths/branches/webpack.config.js b/paths/branches/webpack.config.js new file mode 100644 index 00000000000..c5d45c6bb68 --- /dev/null +++ b/paths/branches/webpack.config.js @@ -0,0 +1,12 @@ +import { loadParticlesPath } from "@tsparticles/webpack-plugin"; +import { fileURLToPath } from "url"; +import fs from "fs-extra"; +import path from "path"; + +const __filename = fileURLToPath(import.meta.url), + __dirname = path.dirname(__filename), + rootPkgPath = path.join(__dirname, "package.json"), + pkg = await fs.readJson(rootPkgPath), + version = pkg.version; + +export default loadParticlesPath({ moduleName: "branches", pluginName: "Branches", version, dir: __dirname }); diff --git a/paths/brownian/.browserslistrc b/paths/brownian/.browserslistrc new file mode 100644 index 00000000000..fb811e7a9d2 --- /dev/null +++ b/paths/brownian/.browserslistrc @@ -0,0 +1,2 @@ +since 2021 +not dead diff --git a/paths/brownian/.npmignore b/paths/brownian/.npmignore new file mode 100644 index 00000000000..5c901533f98 --- /dev/null +++ b/paths/brownian/.npmignore @@ -0,0 +1 @@ +report.html \ No newline at end of file diff --git a/paths/brownian/CHANGELOG.md b/paths/brownian/CHANGELOG.md new file mode 100644 index 00000000000..94204633b05 --- /dev/null +++ b/paths/brownian/CHANGELOG.md @@ -0,0 +1,18 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-brownian + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-brownian + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Features + +- add brownian path generator and related configurations ([d42ccaf](https://github.com/tsparticles/tsparticles/commit/d42ccaf6903309bc3c9c55ca7e4d501f767c6bcb)) diff --git a/paths/brownian/LICENSE b/paths/brownian/LICENSE new file mode 100644 index 00000000000..bdc05f528fa --- /dev/null +++ b/paths/brownian/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Matteo Bruni + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/paths/brownian/README.md b/paths/brownian/README.md new file mode 100644 index 00000000000..0f3d68870fa --- /dev/null +++ b/paths/brownian/README.md @@ -0,0 +1,74 @@ +[![banner](https://particles.js.org/images/banner3.png)](https://particles.js.org) + +# tsParticles Brownian Path + +[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/path-brownian/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/path-brownian) +[![npmjs](https://badge.fury.io/js/@tsparticles/path-brownian.svg)](https://www.npmjs.com/package/@tsparticles/path-brownian) +[![npmjs](https://img.shields.io/npm/dt/@tsparticles/path-brownian)](https://www.npmjs.com/package/@tsparticles/path-brownian) [![GitHub Sponsors](https://img.shields.io/github/sponsors/matteobruni)](https://github.com/sponsors/matteobruni) + +[tsParticles](https://github.com/tsparticles/tsparticles) path plugin for brownian movement. + +## How to use it + +### CDN / Vanilla JS / jQuery + +The CDN/Vanilla version JS has one required file in vanilla configuration: + +Including the `tsparticles.path.brownian.min.js` file will export the function to load the path plugin: + +```text +loadBrownianPath +``` + +### Usage + +Once the scripts are loaded you can set up `tsParticles` and the path plugin like this: + +```javascript +(async () => { + await loadBrownianPath(tsParticles); + + await tsParticles.load({ + id: "tsparticles", + options: { + /* options */ + }, + }); +})(); +``` + +### ESM / CommonJS + +This package is compatible also with ES or CommonJS modules, firstly this needs to be installed, like this: + +```shell +$ npm install @tsparticles/path-brownian +``` + +or + +```shell +$ yarn add @tsparticles/path-brownian +``` + +Then you need to import it in the app, like this: + +```javascript +const { tsParticles } = require("@tsparticles/engine"); +const { loadBrownianPath } = require("@tsparticles/path-brownian"); + +(async () => { + await loadBrownianPath(tsParticles); +})(); +``` + +or + +```javascript +import { tsParticles } from "@tsparticles/engine"; +import { loadBrownianPath } from "@tsparticles/path-brownian"; + +(async () => { + await loadBrownianPath(tsParticles); +})(); +``` diff --git a/paths/brownian/eslint.config.js b/paths/brownian/eslint.config.js new file mode 100644 index 00000000000..a461ddbce48 --- /dev/null +++ b/paths/brownian/eslint.config.js @@ -0,0 +1,6 @@ +import tsParticlesESLintConfig from "@tsparticles/eslint-config"; +import { defineConfig } from "eslint/config"; + +export default defineConfig([ + tsParticlesESLintConfig, +]); diff --git a/paths/brownian/package.dist.json b/paths/brownian/package.dist.json new file mode 100644 index 00000000000..e02a414a7f7 --- /dev/null +++ b/paths/brownian/package.dist.json @@ -0,0 +1,110 @@ +{ + "name": "@tsparticles/path-brownian", + "version": "4.0.0-alpha.14", + "description": "tsParticles brownian path", + "homepage": "https://particles.js.org", + "repository": { + "type": "git", + "url": "git+https://github.com/tsparticles/tsparticles.git", + "directory": "paths/brownian" + }, + "keywords": [ + "front-end", + "frontend", + "tsparticles", + "particles.js", + "particlesjs", + "particles", + "particle", + "canvas", + "jsparticles", + "xparticles", + "particles-js", + "particles-bg", + "particles-bg-vue", + "particles-ts", + "particles.ts", + "react-particles-js", + "react-particles.js", + "react-particles", + "react", + "reactjs", + "vue-particles", + "ngx-particles", + "angular-particles", + "particleground", + "vue", + "vuejs", + "preact", + "preactjs", + "jquery", + "angularjs", + "angular", + "typescript", + "javascript", + "animation", + "web", + "html5", + "web-design", + "webdesign", + "css", + "html", + "css3", + "animated", + "background", + "confetti", + "canvas", + "fireworks", + "fireworks-js", + "confetti-js", + "confettijs", + "fireworksjs", + "canvas-confetti", + "tsparticles-plugin", + "tsparticles-path" + ], + "publishConfig": { + "access": "public" + }, + "author": "Matteo Bruni ", + "license": "MIT", + "bugs": { + "url": "https://github.com/tsparticles/tsparticles/issues" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "sideEffects": false, + "jsdelivr": "tsparticles.path.brownian.min.js", + "unpkg": "tsparticles.path.brownian.min.js", + "browser": "browser/index.js", + "main": "cjs/index.js", + "module": "esm/index.js", + "types": "types/index.d.ts", + "exports": { + ".": { + "types": "./types/index.d.ts", + "browser": "./browser/index.js", + "import": "./esm/index.js", + "require": "./cjs/index.js", + "umd": "./umd/index.js", + "default": "./cjs/index.js" + }, + "./package.json": "./package.json" + }, + "dependencies": { + "@tsparticles/engine": "4.0.0-alpha.14" + }, + "type": "module" +} diff --git a/paths/brownian/package.json b/paths/brownian/package.json new file mode 100644 index 00000000000..24dd4e890a9 --- /dev/null +++ b/paths/brownian/package.json @@ -0,0 +1,120 @@ +{ + "name": "@tsparticles/path-brownian", + "version": "4.0.0-alpha.14", + "description": "tsParticles brownian path", + "homepage": "https://particles.js.org", + "scripts": { + "build": "tsparticles-cli build", + "build:ci": "tsparticles-cli build --ci", + "version": "tsparticles-cli build -d && git add package.dist.json && tsparticles-cli build -p -l && git add .", + "prepack": "pnpm run build" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/tsparticles/tsparticles.git", + "directory": "paths/brownian" + }, + "keywords": [ + "front-end", + "frontend", + "tsparticles", + "particles.js", + "particlesjs", + "particles", + "particle", + "canvas", + "jsparticles", + "xparticles", + "particles-js", + "particles-bg", + "particles-bg-vue", + "particles-ts", + "particles.ts", + "react-particles-js", + "react-particles.js", + "react-particles", + "react", + "reactjs", + "vue-particles", + "ngx-particles", + "angular-particles", + "particleground", + "vue", + "vuejs", + "preact", + "preactjs", + "jquery", + "angularjs", + "angular", + "typescript", + "javascript", + "animation", + "web", + "html5", + "web-design", + "webdesign", + "css", + "html", + "css3", + "animated", + "background", + "confetti", + "canvas", + "fireworks", + "fireworks-js", + "confetti-js", + "confettijs", + "fireworksjs", + "canvas-confetti", + "tsparticles-plugin", + "tsparticles-path" + ], + "author": "Matteo Bruni ", + "license": "MIT", + "bugs": { + "url": "https://github.com/tsparticles/tsparticles/issues" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "prettier": "@tsparticles/prettier-config", + "files": [ + "dist" + ], + "sideEffects": false, + "browser": "dist/browser/index.js", + "main": "dist/cjs/index.js", + "module": "dist/esm/index.js", + "types": "dist/types/index.d.ts", + "exports": { + ".": { + "types": "./dist/types/index.d.ts", + "browser": "./dist/browser/index.js", + "import": "./dist/esm/index.js", + "require": "./dist/cjs/index.js", + "umd": "./dist/umd/index.js", + "default": "./dist/cjs/index.js" + }, + "./package.json": "./dist/package.json" + }, + "dependencies": { + "@tsparticles/engine": "workspace:4.0.0-alpha.14" + }, + "publishConfig": { + "access": "public", + "directory": "dist", + "linkDirectory": true + }, + "type": "module" +} diff --git a/paths/brownian/src/BrownianPathGenerator.ts b/paths/brownian/src/BrownianPathGenerator.ts new file mode 100644 index 00000000000..406efb2b7b2 --- /dev/null +++ b/paths/brownian/src/BrownianPathGenerator.ts @@ -0,0 +1,52 @@ +/* eslint-disable @typescript-eslint/no-magic-numbers */ +import { type Container, type IMovePathGenerator, Vector, getRandom } from "@tsparticles/engine"; +import type { BrownianPathParticle } from "./BrownianPathParticle.js"; +import type { IBrownianPathOptions } from "./IBrownianPathOptions.js"; + +export class BrownianPathGenerator implements IMovePathGenerator { + readonly options: IBrownianPathOptions; + private readonly _container: Container; + + constructor(container: Container) { + this._container = container; + + this.options = { + angleDelta: Math.PI / 12, + damping: 1, + }; + } + + generate(p: BrownianPathParticle): Vector { + p.brownian ??= { + angle: getRandom() * Math.PI * 2, + speed: p.velocity.length, + }; + + const b = p.brownian, + delta = (getRandom() * 2 - 1) * (this.options.angleDelta ?? 0); + + b.angle += delta; + + const damping = this.options.damping ?? 1; + + p.velocity.x = 0; + p.velocity.y = 0; + + return Vector.create(Math.cos(b.angle) * b.speed * damping, Math.sin(b.angle) * b.speed * damping); + } + + init(): void { + const source = this._container.actualOptions.particles.move.path.options; + + this.options.angleDelta = (source["angleDelta"] as number | undefined) ?? this.options.angleDelta; + this.options.damping = (source["damping"] as number | undefined) ?? this.options.damping; + } + + reset(p: BrownianPathParticle): void { + delete p.brownian; + } + + update(): void { + // nothing to do + } +} diff --git a/paths/brownian/src/BrownianPathParticle.ts b/paths/brownian/src/BrownianPathParticle.ts new file mode 100644 index 00000000000..34513ce51f3 --- /dev/null +++ b/paths/brownian/src/BrownianPathParticle.ts @@ -0,0 +1,8 @@ +import type { Particle } from "@tsparticles/engine"; + +export type BrownianPathParticle = Particle & { + brownian?: { + angle: number; + speed: number; + }; +}; diff --git a/paths/brownian/src/IBrownianPathOptions.ts b/paths/brownian/src/IBrownianPathOptions.ts new file mode 100644 index 00000000000..9343cc32314 --- /dev/null +++ b/paths/brownian/src/IBrownianPathOptions.ts @@ -0,0 +1,11 @@ +export interface IBrownianPathOptions { + /** + * Max angle delta per step (radians) + */ + angleDelta?: number; + + /** + * Damping factor [0..1] + */ + damping?: number; +} diff --git a/paths/brownian/src/index.ts b/paths/brownian/src/index.ts new file mode 100644 index 00000000000..aded8cd1a1d --- /dev/null +++ b/paths/brownian/src/index.ts @@ -0,0 +1,20 @@ +import type { Engine } from "@tsparticles/engine"; + +declare const __VERSION__: string; + +export const brownianPathName = "brownianPathGenerator"; + +/** + * @param engine - + */ +export async function loadBrownianPath(engine: Engine): Promise { + engine.checkVersion(__VERSION__); + + await engine.register(e => { + e.addPathGenerator(brownianPathName, async container => { + const { BrownianPathGenerator } = await import("./BrownianPathGenerator.js"); + + return new BrownianPathGenerator(container); + }); + }); +} diff --git a/paths/brownian/tsconfig.base.json b/paths/brownian/tsconfig.base.json new file mode 100644 index 00000000000..d43f4eba9bd --- /dev/null +++ b/paths/brownian/tsconfig.base.json @@ -0,0 +1,9 @@ +{ + "extends": "@tsparticles/tsconfig/tsconfig.base.json", + "compilerOptions": { + "rootDir": "./src" + }, + "include": [ + "./src" + ] +} diff --git a/paths/brownian/tsconfig.browser.json b/paths/brownian/tsconfig.browser.json new file mode 100644 index 00000000000..3bb4173186c --- /dev/null +++ b/paths/brownian/tsconfig.browser.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.browser.json"], + "compilerOptions": { + "outDir": "./dist/browser" + } +} diff --git a/paths/brownian/tsconfig.json b/paths/brownian/tsconfig.json new file mode 100644 index 00000000000..4c843651531 --- /dev/null +++ b/paths/brownian/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.json"], + "compilerOptions": { + "outDir": "./dist/cjs" + } +} diff --git a/paths/brownian/tsconfig.module.json b/paths/brownian/tsconfig.module.json new file mode 100644 index 00000000000..fa94c2a6293 --- /dev/null +++ b/paths/brownian/tsconfig.module.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.module.json"], + "compilerOptions": { + "outDir": "./dist/esm" + } +} diff --git a/paths/brownian/tsconfig.types.json b/paths/brownian/tsconfig.types.json new file mode 100644 index 00000000000..8ec1d3edd57 --- /dev/null +++ b/paths/brownian/tsconfig.types.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.types.json"], + "compilerOptions": { + "outDir": "./dist/types" + } +} diff --git a/paths/brownian/tsconfig.umd.json b/paths/brownian/tsconfig.umd.json new file mode 100644 index 00000000000..41b78634d8c --- /dev/null +++ b/paths/brownian/tsconfig.umd.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.umd.json"], + "compilerOptions": { + "outDir": "./dist/umd" + } +} diff --git a/paths/brownian/typedoc.json b/paths/brownian/typedoc.json new file mode 100644 index 00000000000..9689c5b5b18 --- /dev/null +++ b/paths/brownian/typedoc.json @@ -0,0 +1,15 @@ +{ + "projectDocuments": ["./markdown/**/*.md"], + "entryPoints": [ + "./src/" + ], + "entryPointStrategy": "expand", + "name": "tsParticles Brownian Path", + "includeVersion": true, + "hideGenerator": true, + "out": "./docs", + "validation": { + "invalidLink": true, + "notDocumented": true + } +} diff --git a/paths/brownian/webpack.config.js b/paths/brownian/webpack.config.js new file mode 100644 index 00000000000..bbf0ff0fb95 --- /dev/null +++ b/paths/brownian/webpack.config.js @@ -0,0 +1,12 @@ +import { loadParticlesPath } from "@tsparticles/webpack-plugin"; +import { fileURLToPath } from "url"; +import fs from "fs-extra"; +import path from "path"; + +const __filename = fileURLToPath(import.meta.url), + __dirname = path.dirname(__filename), + rootPkgPath = path.join(__dirname, "package.json"), + pkg = await fs.readJson(rootPkgPath), + version = pkg.version; + +export default loadParticlesPath({ moduleName: "brownian", pluginName: "Brownian", version, dir: __dirname }); diff --git a/paths/curlNoise/CHANGELOG.md b/paths/curlNoise/CHANGELOG.md index 675f40191eb..38c2ba9d59e 100644 --- a/paths/curlNoise/CHANGELOG.md +++ b/paths/curlNoise/CHANGELOG.md @@ -3,6 +3,20 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-curl-noise + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-curl-noise + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Features + +- refactor path generators to use container-specific options and add spiral path generator ([3aa87c3](https://github.com/tsparticles/tsparticles/commit/3aa87c39c5a70adfb146cd281b62a229623e3412)) + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/path-curl-noise diff --git a/paths/curlNoise/package.dist.json b/paths/curlNoise/package.dist.json index f1d66155d0b..ffc0a4f6b67 100644 --- a/paths/curlNoise/package.dist.json +++ b/paths/curlNoise/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/path-curl-noise", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles curl noise path", "homepage": "https://particles.js.org", "repository": { @@ -104,8 +104,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/simplex-noise": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/simplex-noise": "4.0.0-alpha.14" }, "type": "module" } diff --git a/paths/curlNoise/package.json b/paths/curlNoise/package.json index 3823970a0a8..4f8dc2eea2b 100644 --- a/paths/curlNoise/package.json +++ b/paths/curlNoise/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/path-curl-noise", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles curl noise path", "homepage": "https://particles.js.org", "scripts": { @@ -95,8 +95,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/simplex-noise": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/simplex-noise": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/paths/curlNoise/src/CurlNoiseGenerator.ts b/paths/curlNoise/src/CurlNoiseGenerator.ts index 08dc8c71fb2..91341ff9e27 100644 --- a/paths/curlNoise/src/CurlNoiseGenerator.ts +++ b/paths/curlNoise/src/CurlNoiseGenerator.ts @@ -16,11 +16,14 @@ const defaultOptions: ICurlOptions = { }; export class CurlNoiseGenerator implements IMovePathGenerator { - readonly options: ICurlOptions; + readonly options; + private readonly _container; private readonly _simplex; - constructor() { + constructor(container: Container) { + this._container = container; + const simplex = new SimplexNoise(); this._simplex = simplex.noise2d; @@ -46,8 +49,9 @@ export class CurlNoiseGenerator implements IMovePathGenerator { return Vector.create(speed * a, speed * -b); } - init(container: Container): void { - const sourceOptions = container.actualOptions.particles.move.path.options; + init(): void { + const container = this._container, + sourceOptions = container.actualOptions.particles.move.path.options; this.options.seed = sourceOptions["seed"] as number | undefined; this.options.speed = diff --git a/paths/curlNoise/src/index.ts b/paths/curlNoise/src/index.ts index d531eb0d9f9..3fba4466bfa 100644 --- a/paths/curlNoise/src/index.ts +++ b/paths/curlNoise/src/index.ts @@ -10,9 +10,11 @@ export const curlNoisePathName = "curlNoise"; export async function loadCurlNoisePath(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { CurlNoiseGenerator } = await import("./CurlNoiseGenerator.js"); + await engine.register(e => { + e.addPathGenerator(curlNoisePathName, async container => { + const { CurlNoiseGenerator } = await import("./CurlNoiseGenerator.js"); - e.addPathGenerator(curlNoisePathName, new CurlNoiseGenerator()); + return new CurlNoiseGenerator(container); + }); }); } diff --git a/paths/curves/CHANGELOG.md b/paths/curves/CHANGELOG.md index 1a02669744e..a960ddac8ae 100644 --- a/paths/curves/CHANGELOG.md +++ b/paths/curves/CHANGELOG.md @@ -3,6 +3,20 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-curves + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-curves + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Features + +- refactor path generators to use container-specific options and add spiral path generator ([3aa87c3](https://github.com/tsparticles/tsparticles/commit/3aa87c39c5a70adfb146cd281b62a229623e3412)) + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/path-curves diff --git a/paths/curves/package.dist.json b/paths/curves/package.dist.json index f94d2c4347f..57808622aba 100644 --- a/paths/curves/package.dist.json +++ b/paths/curves/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/path-curves", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles curves path", "homepage": "https://particles.js.org", "repository": { @@ -104,7 +104,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "type": "module" } diff --git a/paths/curves/package.json b/paths/curves/package.json index c956773e462..4828609e093 100644 --- a/paths/curves/package.json +++ b/paths/curves/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/path-curves", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles curves path", "homepage": "https://particles.js.org", "scripts": { @@ -109,7 +109,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/paths/curves/src/Curves.ts b/paths/curves/src/Curves.ts index 135ed8fd35b..7cb462d4984 100644 --- a/paths/curves/src/Curves.ts +++ b/paths/curves/src/Curves.ts @@ -1,6 +1,5 @@ /* eslint-disable @typescript-eslint/no-magic-numbers */ /* eslint-disable @typescript-eslint/no-non-null-assertion */ - import { getRandom } from "@tsparticles/engine"; /** diff --git a/paths/curves/src/CurvesPathGenerator.ts b/paths/curves/src/CurvesPathGenerator.ts index fa20b1d400b..b2e76085a34 100644 --- a/paths/curves/src/CurvesPathGenerator.ts +++ b/paths/curves/src/CurvesPathGenerator.ts @@ -2,6 +2,7 @@ import { type Container, type IMovePathGenerator, Vector, + deepExtend, doublePI, getRandom, isFunction, @@ -11,6 +12,15 @@ import { CurvesPathGen } from "./Curves.js"; import type { CurvesPathParticle } from "./CurvesPathParticle.js"; import type { ICurvesOptions } from "./ICurvesOptions.js"; +const defaultOptions: ICurvesOptions = { + rndFunc: null, + period: 100, + nbHarmonics: 2, + attenHarmonics: 0.8, + lowValue: -0.03, + highValue: 0.03, +}; + /** * @returns a random velocity */ @@ -22,24 +32,21 @@ function randomVelocity(): number { } export class CurvesPathGenerator implements IMovePathGenerator { - readonly options: ICurvesOptions; - - constructor() { - this.options = { - rndFunc: null, - period: 100, - nbHarmonics: 2, - attenHarmonics: 0.8, - lowValue: -0.03, - highValue: 0.03, - }; + readonly options; + + private readonly _container; + + constructor(container: Container) { + this._container = container; + + this.options = deepExtend({}, defaultOptions) as ICurvesOptions; } - generate(p: CurvesPathParticle): Vector { - if (!p.pathGen) { - const options = this.options; + generate(particle: CurvesPathParticle): Vector { + if (!particle.pathGen) { + const { options } = this; - p.pathGen = CurvesPathGen( + particle.pathGen = CurvesPathGen( options.rndFunc, options.period, options.nbHarmonics, @@ -49,39 +56,39 @@ export class CurvesPathGenerator implements IMovePathGenerator { ); } - if (!p.curveVelocity) { - p.curveVelocity = Vector.origin; - - p.curveVelocity.length = randomVelocity(); - p.curveVelocity.angle = getRandom() * doublePI; + if (particle.curveVelocity) { + particle.curveVelocity.length += 0.01; + particle.curveVelocity.angle = (particle.curveVelocity.angle + particle.pathGen()) % doublePI; } else { - p.curveVelocity.length += 0.01; - p.curveVelocity.angle = (p.curveVelocity.angle + p.pathGen()) % doublePI; + particle.curveVelocity = Vector.origin; + + particle.curveVelocity.length = randomVelocity(); + particle.curveVelocity.angle = getRandom() * doublePI; } - p.velocity.x = 0; - p.velocity.y = 0; + particle.velocity.x = 0; + particle.velocity.y = 0; - return p.curveVelocity; + return particle.curveVelocity; } - init(container: Container): void { - const sourceOptions = container.actualOptions.particles.move.path.options, - { options } = this; + init(): void { + const sourceOptions = this._container.actualOptions.particles.move.path.options; if (isFunction(sourceOptions["rndFunc"])) { - options.rndFunc = sourceOptions["rndFunc"] as () => number; + this.options.rndFunc = sourceOptions["rndFunc"] as () => number; } else if (isString(sourceOptions["rndFunc"])) { - options.rndFunc = + this.options.rndFunc = ((globalThis as Record)[sourceOptions["rndFunc"]] as (() => number) | null | undefined) ?? this.options.rndFunc; } - options.period = (sourceOptions["period"] as number | undefined) ?? options.period; - options.nbHarmonics = (sourceOptions["nbHarmonics"] as number | undefined) ?? options.nbHarmonics; - options.attenHarmonics = (sourceOptions["attenHarmonics"] as number | undefined) ?? options.attenHarmonics; - options.lowValue = (sourceOptions["lowValue"] as number | undefined) ?? options.lowValue; - options.highValue = (sourceOptions["highValue"] as number | undefined) ?? options.highValue; + this.options.period = (sourceOptions["period"] as number | undefined) ?? this.options.period; + this.options.nbHarmonics = (sourceOptions["nbHarmonics"] as number | undefined) ?? this.options.nbHarmonics; + this.options.attenHarmonics = + (sourceOptions["attenHarmonics"] as number | undefined) ?? this.options.attenHarmonics; + this.options.lowValue = (sourceOptions["lowValue"] as number | undefined) ?? this.options.lowValue; + this.options.highValue = (sourceOptions["highValue"] as number | undefined) ?? this.options.highValue; } reset(particle: CurvesPathParticle): void { diff --git a/paths/curves/src/index.ts b/paths/curves/src/index.ts index e5e142cf2ab..d7b22bdbf12 100644 --- a/paths/curves/src/index.ts +++ b/paths/curves/src/index.ts @@ -10,9 +10,11 @@ export const curvesPathName = "curvesPathGenerator"; export async function loadCurvesPath(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { CurvesPathGenerator } = await import("./CurvesPathGenerator.js"); + await engine.register(e => { + e.addPathGenerator(curvesPathName, async container => { + const { CurvesPathGenerator } = await import("./CurvesPathGenerator.js"); - e.addPathGenerator(curvesPathName, new CurvesPathGenerator()); + return new CurvesPathGenerator(container); + }); }); } diff --git a/paths/fractalNoise/CHANGELOG.md b/paths/fractalNoise/CHANGELOG.md index 059ad5959c3..71b55fe34ff 100644 --- a/paths/fractalNoise/CHANGELOG.md +++ b/paths/fractalNoise/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-fractal-noise + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-fractal-noise + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-fractal-noise + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/path-fractal-noise diff --git a/paths/fractalNoise/package.dist.json b/paths/fractalNoise/package.dist.json index 196d43e515c..ea9cc335647 100644 --- a/paths/fractalNoise/package.dist.json +++ b/paths/fractalNoise/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/path-fractal-noise", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles fractal noise path", "homepage": "https://particles.js.org", "repository": { @@ -104,9 +104,9 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/fractal-noise": "4.0.0-alpha.8", - "@tsparticles/noise-field": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/fractal-noise": "4.0.0-alpha.14", + "@tsparticles/noise-field": "4.0.0-alpha.14" }, "type": "module" } diff --git a/paths/fractalNoise/package.json b/paths/fractalNoise/package.json index 31e9c72e06f..c11447c9974 100644 --- a/paths/fractalNoise/package.json +++ b/paths/fractalNoise/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/path-fractal-noise", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles fractal noise path", "homepage": "https://particles.js.org", "scripts": { @@ -109,9 +109,9 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/fractal-noise": "workspace:4.0.0-alpha.8", - "@tsparticles/noise-field": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/fractal-noise": "workspace:4.0.0-alpha.14", + "@tsparticles/noise-field": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/paths/fractalNoise/src/FractalNoiseGenerator.ts b/paths/fractalNoise/src/FractalNoiseGenerator.ts index 5a3b6589f5e..d6a62f25222 100644 --- a/paths/fractalNoise/src/FractalNoiseGenerator.ts +++ b/paths/fractalNoise/src/FractalNoiseGenerator.ts @@ -1,11 +1,12 @@ +import type { Container } from "@tsparticles/engine"; import { FractalNoise } from "@tsparticles/fractal-noise"; import { NoiseFieldGenerator } from "@tsparticles/noise-field"; export class FractalNoiseGenerator extends NoiseFieldGenerator { - constructor() { + constructor(container: Container) { const fractalNoise = new FractalNoise(); - super({ + super(container, { noise4d: (x, y, z, w) => fractalNoise.noise4d(x, y, z, w), seed: seed => { fractalNoise.seed(seed); diff --git a/paths/fractalNoise/src/index.ts b/paths/fractalNoise/src/index.ts index 414554bff0f..44cb871c5f8 100644 --- a/paths/fractalNoise/src/index.ts +++ b/paths/fractalNoise/src/index.ts @@ -10,9 +10,11 @@ export const fractalNoisePathName = "fractalNoise"; export async function loadFractalNoisePath(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { FractalNoiseGenerator } = await import("./FractalNoiseGenerator.js"); + await engine.register(e => { + e.addPathGenerator(fractalNoisePathName, async container => { + const { FractalNoiseGenerator } = await import("./FractalNoiseGenerator.js"); - e.addPathGenerator(fractalNoisePathName, new FractalNoiseGenerator()); + return new FractalNoiseGenerator(container); + }); }); } diff --git a/paths/grid/.browserslistrc b/paths/grid/.browserslistrc new file mode 100644 index 00000000000..fb811e7a9d2 --- /dev/null +++ b/paths/grid/.browserslistrc @@ -0,0 +1,2 @@ +since 2021 +not dead diff --git a/paths/grid/.npmignore b/paths/grid/.npmignore new file mode 100644 index 00000000000..5c901533f98 --- /dev/null +++ b/paths/grid/.npmignore @@ -0,0 +1 @@ +report.html \ No newline at end of file diff --git a/paths/grid/CHANGELOG.md b/paths/grid/CHANGELOG.md new file mode 100644 index 00000000000..ad49bb9a68a --- /dev/null +++ b/paths/grid/CHANGELOG.md @@ -0,0 +1,18 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-grid + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-grid + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Features + +- add branches path generator and related configurations ([41de076](https://github.com/tsparticles/tsparticles/commit/41de07658b1d5ab92f566520ac197fcacc17ac18)) diff --git a/paths/grid/LICENSE b/paths/grid/LICENSE new file mode 100644 index 00000000000..bdc05f528fa --- /dev/null +++ b/paths/grid/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Matteo Bruni + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/paths/grid/README.md b/paths/grid/README.md new file mode 100644 index 00000000000..505b1348a61 --- /dev/null +++ b/paths/grid/README.md @@ -0,0 +1,74 @@ +[![banner](https://particles.js.org/images/banner3.png)](https://particles.js.org) + +# tsParticles Grid Path + +[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/path-grid/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/path-grid) +[![npmjs](https://badge.fury.io/js/@tsparticles/path-grid.svg)](https://www.npmjs.com/package/@tsparticles/path-grid) +[![npmjs](https://img.shields.io/npm/dt/@tsparticles/path-grid)](https://www.npmjs.com/package/@tsparticles/path-grid) [![GitHub Sponsors](https://img.shields.io/github/sponsors/matteobruni)](https://github.com/sponsors/matteobruni) + +[tsParticles](https://github.com/tsparticles/tsparticles) path plugin for grid path movement. + +## How to use it + +### CDN / Vanilla JS / jQuery + +The CDN/Vanilla version JS has one required file in vanilla configuration: + +Including the `tsparticles.path.grid.min.js` file will export the function to load the path plugin: + +```text +loadGridPath +``` + +### Usage + +Once the scripts are loaded you can set up `tsParticles` and the path plugin like this: + +```javascript +(async () => { + await loadGridPath(tsParticles); + + await tsParticles.load({ + id: "tsparticles", + options: { + /* options */ + }, + }); +})(); +``` + +### ESM / CommonJS + +This package is compatible also with ES or CommonJS modules, firstly this needs to be installed, like this: + +```shell +$ npm install @tsparticles/path-grid +``` + +or + +```shell +$ yarn add @tsparticles/path-grid +``` + +Then you need to import it in the app, like this: + +```javascript +const { tsParticles } = require("@tsparticles/engine"); +const { loadGridPath } = require("@tsparticles/path-grid"); + +(async () => { + await loadGridPath(tsParticles); +})(); +``` + +or + +```javascript +import { tsParticles } from "@tsparticles/engine"; +import { loadGridPath } from "@tsparticles/path-grid"; + +(async () => { + await loadGridPath(tsParticles); +})(); +``` diff --git a/paths/grid/eslint.config.js b/paths/grid/eslint.config.js new file mode 100644 index 00000000000..a461ddbce48 --- /dev/null +++ b/paths/grid/eslint.config.js @@ -0,0 +1,6 @@ +import tsParticlesESLintConfig from "@tsparticles/eslint-config"; +import { defineConfig } from "eslint/config"; + +export default defineConfig([ + tsParticlesESLintConfig, +]); diff --git a/paths/grid/package.dist.json b/paths/grid/package.dist.json new file mode 100644 index 00000000000..c9c179fc440 --- /dev/null +++ b/paths/grid/package.dist.json @@ -0,0 +1,110 @@ +{ + "name": "@tsparticles/path-grid", + "version": "4.0.0-alpha.14", + "description": "tsParticles grid path", + "homepage": "https://particles.js.org", + "repository": { + "type": "git", + "url": "git+https://github.com/tsparticles/tsparticles.git", + "directory": "paths/grid" + }, + "keywords": [ + "front-end", + "frontend", + "tsparticles", + "particles.js", + "particlesjs", + "particles", + "particle", + "canvas", + "jsparticles", + "xparticles", + "particles-js", + "particles-bg", + "particles-bg-vue", + "particles-ts", + "particles.ts", + "react-particles-js", + "react-particles.js", + "react-particles", + "react", + "reactjs", + "vue-particles", + "ngx-particles", + "angular-particles", + "particleground", + "vue", + "vuejs", + "preact", + "preactjs", + "jquery", + "angularjs", + "angular", + "typescript", + "javascript", + "animation", + "web", + "html5", + "web-design", + "webdesign", + "css", + "html", + "css3", + "animated", + "background", + "confetti", + "canvas", + "fireworks", + "fireworks-js", + "confetti-js", + "confettijs", + "fireworksjs", + "canvas-confetti", + "tsparticles-plugin", + "tsparticles-path" + ], + "publishConfig": { + "access": "public" + }, + "author": "Matteo Bruni ", + "license": "MIT", + "bugs": { + "url": "https://github.com/tsparticles/tsparticles/issues" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "sideEffects": false, + "jsdelivr": "tsparticles.path.grid.min.js", + "unpkg": "tsparticles.path.grid.min.js", + "browser": "browser/index.js", + "main": "cjs/index.js", + "module": "esm/index.js", + "types": "types/index.d.ts", + "exports": { + ".": { + "types": "./types/index.d.ts", + "browser": "./browser/index.js", + "import": "./esm/index.js", + "require": "./cjs/index.js", + "umd": "./umd/index.js", + "default": "./cjs/index.js" + }, + "./package.json": "./package.json" + }, + "dependencies": { + "@tsparticles/engine": "4.0.0-alpha.14" + }, + "type": "module" +} diff --git a/paths/grid/package.json b/paths/grid/package.json new file mode 100644 index 00000000000..f4f4fc3029e --- /dev/null +++ b/paths/grid/package.json @@ -0,0 +1,120 @@ +{ + "name": "@tsparticles/path-grid", + "version": "4.0.0-alpha.14", + "description": "tsParticles grid path", + "homepage": "https://particles.js.org", + "scripts": { + "build": "tsparticles-cli build", + "build:ci": "tsparticles-cli build --ci", + "version": "tsparticles-cli build -d && git add package.dist.json && tsparticles-cli build -p -l && git add .", + "prepack": "pnpm run build" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/tsparticles/tsparticles.git", + "directory": "paths/grid" + }, + "keywords": [ + "front-end", + "frontend", + "tsparticles", + "particles.js", + "particlesjs", + "particles", + "particle", + "canvas", + "jsparticles", + "xparticles", + "particles-js", + "particles-bg", + "particles-bg-vue", + "particles-ts", + "particles.ts", + "react-particles-js", + "react-particles.js", + "react-particles", + "react", + "reactjs", + "vue-particles", + "ngx-particles", + "angular-particles", + "particleground", + "vue", + "vuejs", + "preact", + "preactjs", + "jquery", + "angularjs", + "angular", + "typescript", + "javascript", + "animation", + "web", + "html5", + "web-design", + "webdesign", + "css", + "html", + "css3", + "animated", + "background", + "confetti", + "canvas", + "fireworks", + "fireworks-js", + "confetti-js", + "confettijs", + "fireworksjs", + "canvas-confetti", + "tsparticles-plugin", + "tsparticles-path" + ], + "author": "Matteo Bruni ", + "license": "MIT", + "bugs": { + "url": "https://github.com/tsparticles/tsparticles/issues" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "prettier": "@tsparticles/prettier-config", + "files": [ + "dist" + ], + "sideEffects": false, + "browser": "dist/browser/index.js", + "main": "dist/cjs/index.js", + "module": "dist/esm/index.js", + "types": "dist/types/index.d.ts", + "exports": { + ".": { + "types": "./dist/types/index.d.ts", + "browser": "./dist/browser/index.js", + "import": "./dist/esm/index.js", + "require": "./dist/cjs/index.js", + "umd": "./dist/umd/index.js", + "default": "./dist/cjs/index.js" + }, + "./package.json": "./dist/package.json" + }, + "dependencies": { + "@tsparticles/engine": "workspace:4.0.0-alpha.14" + }, + "publishConfig": { + "access": "public", + "directory": "dist", + "linkDirectory": true + }, + "type": "module" +} diff --git a/paths/grid/src/GridPathGenerator.ts b/paths/grid/src/GridPathGenerator.ts new file mode 100644 index 00000000000..a277cec0a37 --- /dev/null +++ b/paths/grid/src/GridPathGenerator.ts @@ -0,0 +1,167 @@ +/* eslint-disable @typescript-eslint/no-magic-numbers */ +/* eslint-disable @typescript-eslint/no-non-null-assertion */ +/* eslint-disable no-nested-ternary */ +import { + type Container, + type ICoordinates, + type IDimension, + type IMovePathGenerator, + Vector, + getRandom, + identity, + originPoint, +} from "@tsparticles/engine"; +import type { GridPathParticle } from "./GridPathParticle.js"; +import type { IGridPathOptions } from "./IGridPathOptions.js"; + +const dirs = [ + Vector.create(identity, originPoint.y), // 0 right + Vector.create(originPoint.x, identity), // 1 down + Vector.create(-identity, originPoint.y), // 2 left + Vector.create(originPoint.x, -identity), // 3 up + ], + opposite = [2, 3, 0, 1], + minLength = 0; + +export class GridPathGenerator implements IMovePathGenerator { + readonly options: IGridPathOptions; + private readonly _container: Container; + + constructor(container: Container) { + this._container = container; + this.options = { + cellSize: 40, + graph: undefined, + autoMaze: false, + }; + } + + // ------------------------------------------- + + generate(p: GridPathParticle): Vector { + const size = this.options.cellSize; + + p.grid ??= { + direction: Math.trunc(getRandom() * dirs.length), + speed: p.velocity.length, + cellPosition: { + x: Math.floor(p.position.x / size), + y: Math.floor(p.position.y / size), + }, + }; + + const grid = p.grid, + c: ICoordinates = { + x: Math.floor(p.position.x / size), + y: Math.floor(p.position.y / size), + }; + + if (c.x !== grid.cellPosition.x || c.y !== grid.cellPosition.y) { + grid.cellPosition.x = c.x; + grid.cellPosition.y = c.y; + + const key = `${c.x},${c.y}`, + allowed = this.options.graph?.[key]; + + if (allowed && allowed.length > minLength) { + grid.direction = allowed[Math.trunc(getRandom() * allowed.length)]!; + } else if (!this.options.graph) { + // free grid fallback + const turn = Math.trunc(getRandom() * 3) - 1; + grid.direction = (grid.direction + turn + 4) % dirs.length; + } + } + + p.velocity.x = 0; + p.velocity.y = 0; + + const d = dirs[grid.direction]!; + + return Vector.create(d.x * grid.speed, d.y * grid.speed); + } + + // ------------------------------------------- + + init(): void { + const source = this._container.actualOptions.particles.move.path.options; + + this.options.cellSize = (source["cellSize"] as number | undefined) ?? this.options.cellSize; + this.options.autoMaze = (source["autoMaze"] as boolean | undefined) ?? this.options.autoMaze; + this.options.graph = source["graph"] as Record | undefined; + + // AUTO MAZE = FULL CANVAS + if (this.options.autoMaze) { + const canvas = this._container.canvas.size, + cellSize = this.options.cellSize, + size: IDimension = { + width: Math.ceil(canvas.width / cellSize), + height: Math.ceil(canvas.height / cellSize), + }; + + this.options.graph = this._generateMazeGraph(size); + } + } + + reset(p: GridPathParticle): void { + delete p.grid; + } + + update(): void { + // nothing to do + } + + // ---------- MAZE GENERATION (DFS) ---------- + private _generateMazeGraph({ height, width }: IDimension): Record { + const graph: Record = {}, + visited: boolean[][] = []; + + for (let y = 0; y < height; y++) { + visited[y] = []; + } + + const stack: ICoordinates[] = [{ x: originPoint.x, y: originPoint.y }]; + + while (stack.length > 0) { + const { x, y } = stack[stack.length - 1]!; + + if (!visited[y]![x]) { + visited[y]![x] = true; + } + + const dirsOrder = [0, 1, 2, 3].sort(() => getRandom() - 0.5); + let moved = false; + + for (const d of dirsOrder) { + const n: ICoordinates = { + x: x + (d === 0 ? 1 : d === 2 ? -1 : 0), + y: y + (d === 1 ? 1 : d === 3 ? -1 : 0), + }; + + if (n.x < 0 || n.y < 0 || n.x >= width || n.y >= height) { + continue; + } + + if (!visited[n.y]![n.x]) { + const key = `${x},${y}`, + nKey = `${n.x},${n.y}`; + + graph[key] ??= []; + graph[nKey] ??= []; + + graph[key].push(d); + graph[nKey].push(opposite[d]!); + + stack.push(n); + moved = true; + break; + } + } + + if (!moved) { + stack.pop(); + } + } + + return graph; + } +} diff --git a/paths/grid/src/GridPathParticle.ts b/paths/grid/src/GridPathParticle.ts new file mode 100644 index 00000000000..d1867ed799a --- /dev/null +++ b/paths/grid/src/GridPathParticle.ts @@ -0,0 +1,9 @@ +import type { ICoordinates, Particle } from "@tsparticles/engine"; + +export type GridPathParticle = Particle & { + grid?: { + cellPosition: ICoordinates; + direction: number; + speed: number; + }; +}; diff --git a/paths/grid/src/IGridPathOptions.ts b/paths/grid/src/IGridPathOptions.ts new file mode 100644 index 00000000000..f59b17a5759 --- /dev/null +++ b/paths/grid/src/IGridPathOptions.ts @@ -0,0 +1,15 @@ +export interface IGridPathOptions { + /** + * If true, generate a maze automatically + */ + autoMaze?: boolean; + + cellSize: number; + + /** + * Optional explicit graph: + * key = "x,y" + * value = allowed directions [0=right,1=down,2=left,3=up] + */ + graph?: Record; +} diff --git a/paths/grid/src/index.ts b/paths/grid/src/index.ts new file mode 100644 index 00000000000..51a25ba540c --- /dev/null +++ b/paths/grid/src/index.ts @@ -0,0 +1,20 @@ +import type { Engine } from "@tsparticles/engine"; + +declare const __VERSION__: string; + +export const gridPathName = "gridPathGenerator"; + +/** + * @param engine - + */ +export async function loadGridPath(engine: Engine): Promise { + engine.checkVersion(__VERSION__); + + await engine.register(e => { + e.addPathGenerator(gridPathName, async container => { + const { GridPathGenerator } = await import("./GridPathGenerator.js"); + + return new GridPathGenerator(container); + }); + }); +} diff --git a/paths/grid/tsconfig.base.json b/paths/grid/tsconfig.base.json new file mode 100644 index 00000000000..d43f4eba9bd --- /dev/null +++ b/paths/grid/tsconfig.base.json @@ -0,0 +1,9 @@ +{ + "extends": "@tsparticles/tsconfig/tsconfig.base.json", + "compilerOptions": { + "rootDir": "./src" + }, + "include": [ + "./src" + ] +} diff --git a/paths/grid/tsconfig.browser.json b/paths/grid/tsconfig.browser.json new file mode 100644 index 00000000000..3bb4173186c --- /dev/null +++ b/paths/grid/tsconfig.browser.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.browser.json"], + "compilerOptions": { + "outDir": "./dist/browser" + } +} diff --git a/paths/grid/tsconfig.json b/paths/grid/tsconfig.json new file mode 100644 index 00000000000..4c843651531 --- /dev/null +++ b/paths/grid/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.json"], + "compilerOptions": { + "outDir": "./dist/cjs" + } +} diff --git a/paths/grid/tsconfig.module.json b/paths/grid/tsconfig.module.json new file mode 100644 index 00000000000..fa94c2a6293 --- /dev/null +++ b/paths/grid/tsconfig.module.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.module.json"], + "compilerOptions": { + "outDir": "./dist/esm" + } +} diff --git a/paths/grid/tsconfig.types.json b/paths/grid/tsconfig.types.json new file mode 100644 index 00000000000..8ec1d3edd57 --- /dev/null +++ b/paths/grid/tsconfig.types.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.types.json"], + "compilerOptions": { + "outDir": "./dist/types" + } +} diff --git a/paths/grid/tsconfig.umd.json b/paths/grid/tsconfig.umd.json new file mode 100644 index 00000000000..41b78634d8c --- /dev/null +++ b/paths/grid/tsconfig.umd.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.umd.json"], + "compilerOptions": { + "outDir": "./dist/umd" + } +} diff --git a/paths/grid/typedoc.json b/paths/grid/typedoc.json new file mode 100644 index 00000000000..f8249a0f8b9 --- /dev/null +++ b/paths/grid/typedoc.json @@ -0,0 +1,15 @@ +{ + "projectDocuments": ["./markdown/**/*.md"], + "entryPoints": [ + "./src/" + ], + "entryPointStrategy": "expand", + "name": "tsParticles Grid Path", + "includeVersion": true, + "hideGenerator": true, + "out": "./docs", + "validation": { + "invalidLink": true, + "notDocumented": true + } +} diff --git a/paths/grid/webpack.config.js b/paths/grid/webpack.config.js new file mode 100644 index 00000000000..ad6fd358bba --- /dev/null +++ b/paths/grid/webpack.config.js @@ -0,0 +1,12 @@ +import { loadParticlesPath } from "@tsparticles/webpack-plugin"; +import { fileURLToPath } from "url"; +import fs from "fs-extra"; +import path from "path"; + +const __filename = fileURLToPath(import.meta.url), + __dirname = path.dirname(__filename), + rootPkgPath = path.join(__dirname, "package.json"), + pkg = await fs.readJson(rootPkgPath), + version = pkg.version; + +export default loadParticlesPath({ moduleName: "grid", pluginName: "Grid Path", version, dir: __dirname }); diff --git a/paths/levy/.browserslistrc b/paths/levy/.browserslistrc new file mode 100644 index 00000000000..fb811e7a9d2 --- /dev/null +++ b/paths/levy/.browserslistrc @@ -0,0 +1,2 @@ +since 2021 +not dead diff --git a/paths/levy/.npmignore b/paths/levy/.npmignore new file mode 100644 index 00000000000..5c901533f98 --- /dev/null +++ b/paths/levy/.npmignore @@ -0,0 +1 @@ +report.html \ No newline at end of file diff --git a/paths/levy/CHANGELOG.md b/paths/levy/CHANGELOG.md new file mode 100644 index 00000000000..cbcca25c796 --- /dev/null +++ b/paths/levy/CHANGELOG.md @@ -0,0 +1,24 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-levy + +# [4.0.0-alpha.11](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.10...v4.0.0-alpha.11) (2026-02-02) + +### Bug Fixes + +- small fixes ([ea234fc](https://github.com/tsparticles/tsparticles/commit/ea234fc0bf5d373ccfc1b1d259ccea6a66934426)) + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-levy + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Features + +- add Levy path generator and related configurations ([ae59df8](https://github.com/tsparticles/tsparticles/commit/ae59df81081c2436be6d38afb6f2c5997820d1fb)) diff --git a/paths/levy/LICENSE b/paths/levy/LICENSE new file mode 100644 index 00000000000..bdc05f528fa --- /dev/null +++ b/paths/levy/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Matteo Bruni + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/paths/levy/README.md b/paths/levy/README.md new file mode 100644 index 00000000000..46f27bc763b --- /dev/null +++ b/paths/levy/README.md @@ -0,0 +1,74 @@ +[![banner](https://particles.js.org/images/banner3.png)](https://particles.js.org) + +# tsParticles Levy Path + +[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/path-levy/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/path-levy) +[![npmjs](https://badge.fury.io/js/@tsparticles/path-levy.svg)](https://www.npmjs.com/package/@tsparticles/path-levy) +[![npmjs](https://img.shields.io/npm/dt/@tsparticles/path-levy)](https://www.npmjs.com/package/@tsparticles/path-levy) [![GitHub Sponsors](https://img.shields.io/github/sponsors/matteobruni)](https://github.com/sponsors/matteobruni) + +[tsParticles](https://github.com/tsparticles/tsparticles) path plugin for levy movement. + +## How to use it + +### CDN / Vanilla JS / jQuery + +The CDN/Vanilla version JS has one required file in vanilla configuration: + +Including the `tsparticles.path.levy.min.js` file will export the function to load the path plugin: + +```text +loadLevyPath +``` + +### Usage + +Once the scripts are loaded you can set up `tsParticles` and the path plugin like this: + +```javascript +(async () => { + await loadLevyPath(tsParticles); + + await tsParticles.load({ + id: "tsparticles", + options: { + /* options */ + }, + }); +})(); +``` + +### ESM / CommonJS + +This package is compatible also with ES or CommonJS modules, firstly this needs to be installed, like this: + +```shell +$ npm install @tsparticles/path-levy +``` + +or + +```shell +$ yarn add @tsparticles/path-levy +``` + +Then you need to import it in the app, like this: + +```javascript +const { tsParticles } = require("@tsparticles/engine"); +const { loadLevyPath } = require("@tsparticles/path-levy"); + +(async () => { + await loadLevyPath(tsParticles); +})(); +``` + +or + +```javascript +import { tsParticles } from "@tsparticles/engine"; +import { loadLevyPath } from "@tsparticles/path-levy"; + +(async () => { + await loadLevyPath(tsParticles); +})(); +``` diff --git a/paths/levy/eslint.config.js b/paths/levy/eslint.config.js new file mode 100644 index 00000000000..a461ddbce48 --- /dev/null +++ b/paths/levy/eslint.config.js @@ -0,0 +1,6 @@ +import tsParticlesESLintConfig from "@tsparticles/eslint-config"; +import { defineConfig } from "eslint/config"; + +export default defineConfig([ + tsParticlesESLintConfig, +]); diff --git a/paths/levy/package.dist.json b/paths/levy/package.dist.json new file mode 100644 index 00000000000..bdbe59b506f --- /dev/null +++ b/paths/levy/package.dist.json @@ -0,0 +1,110 @@ +{ + "name": "@tsparticles/path-levy", + "version": "4.0.0-alpha.14", + "description": "tsParticles levy path", + "homepage": "https://particles.js.org", + "repository": { + "type": "git", + "url": "git+https://github.com/tsparticles/tsparticles.git", + "directory": "paths/levy" + }, + "keywords": [ + "front-end", + "frontend", + "tsparticles", + "particles.js", + "particlesjs", + "particles", + "particle", + "canvas", + "jsparticles", + "xparticles", + "particles-js", + "particles-bg", + "particles-bg-vue", + "particles-ts", + "particles.ts", + "react-particles-js", + "react-particles.js", + "react-particles", + "react", + "reactjs", + "vue-particles", + "ngx-particles", + "angular-particles", + "particleground", + "vue", + "vuejs", + "preact", + "preactjs", + "jquery", + "angularjs", + "angular", + "typescript", + "javascript", + "animation", + "web", + "html5", + "web-design", + "webdesign", + "css", + "html", + "css3", + "animated", + "background", + "confetti", + "canvas", + "fireworks", + "fireworks-js", + "confetti-js", + "confettijs", + "fireworksjs", + "canvas-confetti", + "tsparticles-plugin", + "tsparticles-path" + ], + "publishConfig": { + "access": "public" + }, + "author": "Matteo Bruni ", + "license": "MIT", + "bugs": { + "url": "https://github.com/tsparticles/tsparticles/issues" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "sideEffects": false, + "jsdelivr": "tsparticles.path.levy.min.js", + "unpkg": "tsparticles.path.levy.min.js", + "browser": "browser/index.js", + "main": "cjs/index.js", + "module": "esm/index.js", + "types": "types/index.d.ts", + "exports": { + ".": { + "types": "./types/index.d.ts", + "browser": "./browser/index.js", + "import": "./esm/index.js", + "require": "./cjs/index.js", + "umd": "./umd/index.js", + "default": "./cjs/index.js" + }, + "./package.json": "./package.json" + }, + "dependencies": { + "@tsparticles/engine": "4.0.0-alpha.14" + }, + "type": "module" +} diff --git a/paths/levy/package.json b/paths/levy/package.json new file mode 100644 index 00000000000..97d155bc2f0 --- /dev/null +++ b/paths/levy/package.json @@ -0,0 +1,120 @@ +{ + "name": "@tsparticles/path-levy", + "version": "4.0.0-alpha.14", + "description": "tsParticles levy path", + "homepage": "https://particles.js.org", + "scripts": { + "build": "tsparticles-cli build", + "build:ci": "tsparticles-cli build --ci", + "version": "tsparticles-cli build -d && git add package.dist.json && tsparticles-cli build -p -l && git add .", + "prepack": "pnpm run build" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/tsparticles/tsparticles.git", + "directory": "paths/levy" + }, + "keywords": [ + "front-end", + "frontend", + "tsparticles", + "particles.js", + "particlesjs", + "particles", + "particle", + "canvas", + "jsparticles", + "xparticles", + "particles-js", + "particles-bg", + "particles-bg-vue", + "particles-ts", + "particles.ts", + "react-particles-js", + "react-particles.js", + "react-particles", + "react", + "reactjs", + "vue-particles", + "ngx-particles", + "angular-particles", + "particleground", + "vue", + "vuejs", + "preact", + "preactjs", + "jquery", + "angularjs", + "angular", + "typescript", + "javascript", + "animation", + "web", + "html5", + "web-design", + "webdesign", + "css", + "html", + "css3", + "animated", + "background", + "confetti", + "canvas", + "fireworks", + "fireworks-js", + "confetti-js", + "confettijs", + "fireworksjs", + "canvas-confetti", + "tsparticles-plugin", + "tsparticles-path" + ], + "author": "Matteo Bruni ", + "license": "MIT", + "bugs": { + "url": "https://github.com/tsparticles/tsparticles/issues" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "prettier": "@tsparticles/prettier-config", + "files": [ + "dist" + ], + "sideEffects": false, + "browser": "dist/browser/index.js", + "main": "dist/cjs/index.js", + "module": "dist/esm/index.js", + "types": "dist/types/index.d.ts", + "exports": { + ".": { + "types": "./dist/types/index.d.ts", + "browser": "./dist/browser/index.js", + "import": "./dist/esm/index.js", + "require": "./dist/cjs/index.js", + "umd": "./dist/umd/index.js", + "default": "./dist/cjs/index.js" + }, + "./package.json": "./dist/package.json" + }, + "dependencies": { + "@tsparticles/engine": "workspace:4.0.0-alpha.14" + }, + "publishConfig": { + "access": "public", + "directory": "dist", + "linkDirectory": true + }, + "type": "module" +} diff --git a/paths/levy/src/ILevyPathOptions.ts b/paths/levy/src/ILevyPathOptions.ts new file mode 100644 index 00000000000..a058489c5b3 --- /dev/null +++ b/paths/levy/src/ILevyPathOptions.ts @@ -0,0 +1,16 @@ +export interface ILevyPathOptions { + /** + * Stability parameter (0 \< alpha \<= 2) + */ + alpha?: number; + + /** + * Clamp max jump length + */ + maxStep?: number; + + /** + * Base speed multiplier + */ + scale?: number; +} diff --git a/paths/levy/src/LevyPathGenerator.ts b/paths/levy/src/LevyPathGenerator.ts new file mode 100644 index 00000000000..52f3b84152d --- /dev/null +++ b/paths/levy/src/LevyPathGenerator.ts @@ -0,0 +1,68 @@ +/* eslint-disable @typescript-eslint/no-magic-numbers */ +import { type Container, type IMovePathGenerator, Vector, getRandom } from "@tsparticles/engine"; +import type { ILevyPathOptions } from "./ILevyPathOptions.js"; +import type { LevyPathParticle } from "./LevyPathParticle.js"; + +const defaultScale = 1, + defaultLevyAlpha = 1.5; + +export class LevyPathGenerator implements IMovePathGenerator { + readonly options: ILevyPathOptions; + private readonly _container: Container; + + constructor(container: Container) { + this._container = container; + + this.options = { + alpha: defaultLevyAlpha, + scale: defaultScale, + maxStep: 10, + }; + } + + generate(p: LevyPathParticle): Vector { + p.levy ??= { + angle: getRandom() * Math.PI * 2, + baseSpeed: p.velocity.length, + }; + + const opts = this.options, + l = p.levy; + + // Direction: uniform + l.angle += (getRandom() - 0.5) * 0.2; + + // Lévy step length + const u = Math.max(getRandom(), 1e-6), + scale = opts.scale ?? defaultScale, + levyAlpha = opts.alpha ?? defaultLevyAlpha; + let step = scale / Math.pow(u, 1 / levyAlpha); + + if (opts.maxStep !== undefined) { + step = Math.min(step, opts.maxStep); + } + + const speed = l.baseSpeed * step; + + p.velocity.x = 0; + p.velocity.y = 0; + + return Vector.create(Math.cos(l.angle) * speed, Math.sin(l.angle) * speed); + } + + init(): void { + const source = this._container.actualOptions.particles.move.path.options; + + this.options.alpha = (source["alpha"] as number | undefined) ?? this.options.alpha; + this.options.scale = (source["scale"] as number | undefined) ?? this.options.scale; + this.options.maxStep = (source["maxStep"] as number | undefined) ?? this.options.maxStep; + } + + reset(p: LevyPathParticle): void { + delete p.levy; + } + + update(): void { + // nothing to do + } +} diff --git a/paths/levy/src/LevyPathParticle.ts b/paths/levy/src/LevyPathParticle.ts new file mode 100644 index 00000000000..91a7191eb96 --- /dev/null +++ b/paths/levy/src/LevyPathParticle.ts @@ -0,0 +1,8 @@ +import type { Particle } from "@tsparticles/engine"; + +export type LevyPathParticle = Particle & { + levy?: { + angle: number; + baseSpeed: number; + }; +}; diff --git a/paths/levy/src/index.ts b/paths/levy/src/index.ts new file mode 100644 index 00000000000..1808918cdab --- /dev/null +++ b/paths/levy/src/index.ts @@ -0,0 +1,20 @@ +import type { Engine } from "@tsparticles/engine"; + +declare const __VERSION__: string; + +export const levyPathName = "levyPathGenerator"; + +/** + * @param engine - + */ +export async function loadLevyPath(engine: Engine): Promise { + engine.checkVersion(__VERSION__); + + await engine.register(e => { + e.addPathGenerator(levyPathName, async container => { + const { LevyPathGenerator } = await import("./LevyPathGenerator.js"); + + return new LevyPathGenerator(container); + }); + }); +} diff --git a/paths/levy/tsconfig.base.json b/paths/levy/tsconfig.base.json new file mode 100644 index 00000000000..d43f4eba9bd --- /dev/null +++ b/paths/levy/tsconfig.base.json @@ -0,0 +1,9 @@ +{ + "extends": "@tsparticles/tsconfig/tsconfig.base.json", + "compilerOptions": { + "rootDir": "./src" + }, + "include": [ + "./src" + ] +} diff --git a/paths/levy/tsconfig.browser.json b/paths/levy/tsconfig.browser.json new file mode 100644 index 00000000000..3bb4173186c --- /dev/null +++ b/paths/levy/tsconfig.browser.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.browser.json"], + "compilerOptions": { + "outDir": "./dist/browser" + } +} diff --git a/paths/levy/tsconfig.json b/paths/levy/tsconfig.json new file mode 100644 index 00000000000..4c843651531 --- /dev/null +++ b/paths/levy/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.json"], + "compilerOptions": { + "outDir": "./dist/cjs" + } +} diff --git a/paths/levy/tsconfig.module.json b/paths/levy/tsconfig.module.json new file mode 100644 index 00000000000..fa94c2a6293 --- /dev/null +++ b/paths/levy/tsconfig.module.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.module.json"], + "compilerOptions": { + "outDir": "./dist/esm" + } +} diff --git a/paths/levy/tsconfig.types.json b/paths/levy/tsconfig.types.json new file mode 100644 index 00000000000..8ec1d3edd57 --- /dev/null +++ b/paths/levy/tsconfig.types.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.types.json"], + "compilerOptions": { + "outDir": "./dist/types" + } +} diff --git a/paths/levy/tsconfig.umd.json b/paths/levy/tsconfig.umd.json new file mode 100644 index 00000000000..41b78634d8c --- /dev/null +++ b/paths/levy/tsconfig.umd.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.umd.json"], + "compilerOptions": { + "outDir": "./dist/umd" + } +} diff --git a/paths/levy/typedoc.json b/paths/levy/typedoc.json new file mode 100644 index 00000000000..1d166fef3be --- /dev/null +++ b/paths/levy/typedoc.json @@ -0,0 +1,15 @@ +{ + "projectDocuments": ["./markdown/**/*.md"], + "entryPoints": [ + "./src/" + ], + "entryPointStrategy": "expand", + "name": "tsParticles Levy Path", + "includeVersion": true, + "hideGenerator": true, + "out": "./docs", + "validation": { + "invalidLink": true, + "notDocumented": true + } +} diff --git a/paths/levy/webpack.config.js b/paths/levy/webpack.config.js new file mode 100644 index 00000000000..6155e35feb5 --- /dev/null +++ b/paths/levy/webpack.config.js @@ -0,0 +1,12 @@ +import { loadParticlesPath } from "@tsparticles/webpack-plugin"; +import { fileURLToPath } from "url"; +import fs from "fs-extra"; +import path from "path"; + +const __filename = fileURLToPath(import.meta.url), + __dirname = path.dirname(__filename), + rootPkgPath = path.join(__dirname, "package.json"), + pkg = await fs.readJson(rootPkgPath), + version = pkg.version; + +export default loadParticlesPath({ moduleName: "levy", pluginName: "Levy", version, dir: __dirname }); diff --git a/paths/perlinNoise/CHANGELOG.md b/paths/perlinNoise/CHANGELOG.md index e2f2ee8d1c9..999b0270490 100644 --- a/paths/perlinNoise/CHANGELOG.md +++ b/paths/perlinNoise/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-perlin-noise + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-perlin-noise + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-perlin-noise + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/path-perlin-noise diff --git a/paths/perlinNoise/package.dist.json b/paths/perlinNoise/package.dist.json index 59a732bbcef..91b62816e58 100644 --- a/paths/perlinNoise/package.dist.json +++ b/paths/perlinNoise/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/path-perlin-noise", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles perlin noise path", "homepage": "https://particles.js.org", "repository": { @@ -104,9 +104,9 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/noise-field": "4.0.0-alpha.8", - "@tsparticles/perlin-noise": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/noise-field": "4.0.0-alpha.14", + "@tsparticles/perlin-noise": "4.0.0-alpha.14" }, "type": "module" } diff --git a/paths/perlinNoise/package.json b/paths/perlinNoise/package.json index 4b9387b1ccd..b0e8269b0b8 100644 --- a/paths/perlinNoise/package.json +++ b/paths/perlinNoise/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/path-perlin-noise", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles perlin noise path", "homepage": "https://particles.js.org", "scripts": { @@ -109,9 +109,9 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/noise-field": "workspace:4.0.0-alpha.8", - "@tsparticles/perlin-noise": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/noise-field": "workspace:4.0.0-alpha.14", + "@tsparticles/perlin-noise": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/paths/perlinNoise/src/PerlinNoiseGenerator.ts b/paths/perlinNoise/src/PerlinNoiseGenerator.ts index 98124f80a14..85cabd64ad5 100644 --- a/paths/perlinNoise/src/PerlinNoiseGenerator.ts +++ b/paths/perlinNoise/src/PerlinNoiseGenerator.ts @@ -1,11 +1,12 @@ +import type { Container } from "@tsparticles/engine"; import { NoiseFieldGenerator } from "@tsparticles/noise-field"; import { PerlinNoise } from "@tsparticles/perlin-noise"; export class PerlinNoiseGenerator extends NoiseFieldGenerator { - constructor() { + constructor(container: Container) { const perlinNoise = new PerlinNoise(); - super({ + super(container, { noise4d: (x, y, z, w) => perlinNoise.noise4d(x, y, z, w), seed: seed => { perlinNoise.seed(seed); diff --git a/paths/perlinNoise/src/index.ts b/paths/perlinNoise/src/index.ts index 2c992674c5e..553843e23e6 100644 --- a/paths/perlinNoise/src/index.ts +++ b/paths/perlinNoise/src/index.ts @@ -10,9 +10,11 @@ export const perlinNoisePathName = "perlinNoise"; export async function loadPerlinNoisePath(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { PerlinNoiseGenerator } = await import("./PerlinNoiseGenerator.js"); + await engine.register(e => { + e.addPathGenerator(perlinNoisePathName, async container => { + const { PerlinNoiseGenerator } = await import("./PerlinNoiseGenerator.js"); - e.addPathGenerator(perlinNoisePathName, new PerlinNoiseGenerator()); + return new PerlinNoiseGenerator(container); + }); }); } diff --git a/paths/polygon/CHANGELOG.md b/paths/polygon/CHANGELOG.md index fc5bb302906..656a47869f8 100644 --- a/paths/polygon/CHANGELOG.md +++ b/paths/polygon/CHANGELOG.md @@ -3,6 +3,20 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-polygon + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-polygon + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Features + +- refactor path generators to use container-specific options and add spiral path generator ([3aa87c3](https://github.com/tsparticles/tsparticles/commit/3aa87c39c5a70adfb146cd281b62a229623e3412)) + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/path-polygon diff --git a/paths/polygon/package.dist.json b/paths/polygon/package.dist.json index 38218d91bb4..1f7eee2e8b1 100644 --- a/paths/polygon/package.dist.json +++ b/paths/polygon/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/path-polygon", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles polygon path", "homepage": "https://particles.js.org", "repository": { @@ -104,7 +104,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "type": "module" } diff --git a/paths/polygon/package.json b/paths/polygon/package.json index 4ec91913bd7..89677baf4a8 100644 --- a/paths/polygon/package.json +++ b/paths/polygon/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/path-polygon", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles polygon path", "homepage": "https://particles.js.org", "scripts": { @@ -109,7 +109,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/paths/polygon/src/PolygonPathGenerator.ts b/paths/polygon/src/PolygonPathGenerator.ts index 68f2786e3e0..5f1fd4c3c54 100644 --- a/paths/polygon/src/PolygonPathGenerator.ts +++ b/paths/polygon/src/PolygonPathGenerator.ts @@ -1,31 +1,41 @@ /* eslint-disable @typescript-eslint/no-magic-numbers */ /* eslint-disable @typescript-eslint/no-non-null-assertion */ - -import { type Container, type ICoordinates, type IMovePathGenerator, Vector, getRandom } from "@tsparticles/engine"; +import { + type Container, + type ICoordinates, + type IMovePathGenerator, + Vector, + deepExtend, + getRandom, +} from "@tsparticles/engine"; import type { IPolygonPathOptions } from "./IPolygonPathOptions.js"; import type { PolygonPathParticle } from "./PolygonPathParticle.js"; +const defaultOptions = { + sides: 6, + turnSteps: 20, + angle: 30, +}; + export class PolygonPathGenerator implements IMovePathGenerator { dirsList: ICoordinates[]; - readonly options: IPolygonPathOptions; + readonly options; + private readonly _container; - constructor() { + constructor(container: Container) { + this._container = container; this.dirsList = []; - this.options = { - sides: 6, - turnSteps: 20, - angle: 30, - }; + this.options = deepExtend({}, defaultOptions) as IPolygonPathOptions; } generate(p: PolygonPathParticle): Vector { - const { sides } = this.options; + const { sides, turnSteps } = this.options; p.hexStep ??= 0; p.hexDirection ??= sides === 6 ? ((getRandom() * 3) | 0) * 2 : (getRandom() * sides) | 0; p.hexSpeed ??= p.velocity.length; - if (p.hexStep % this.options.turnSteps === 0) { + if (p.hexStep % turnSteps === 0) { p.hexDirection = getRandom() > 0.5 ? (p.hexDirection + 1) % sides : (p.hexDirection + sides - 1) % sides; } @@ -39,12 +49,15 @@ export class PolygonPathGenerator implements IMovePathGenerator { return Vector.create(direction.x * p.hexSpeed, direction.y * p.hexSpeed); } - init(container: Container): void { - const options = container.actualOptions.particles.move.path.options; + init(): void { + const container = this._container, + sourceOptions = container.actualOptions.particles.move.path.options; - this.options.sides = (options["sides"] as number) > 0 ? (options["sides"] as number) : 6; - this.options.angle = (options["angle"] as number | undefined) ?? 30; - this.options.turnSteps = (options["turnSteps"] as number) >= 0 ? (options["turnSteps"] as number) : 20; + this.options.sides = + (sourceOptions["sides"] as number) > 0 ? (sourceOptions["sides"] as number) : this.options.sides; + this.options.angle = (sourceOptions["angle"] as number | undefined) ?? this.options.angle; + this.options.turnSteps = + (sourceOptions["turnSteps"] as number) >= 0 ? (sourceOptions["turnSteps"] as number) : this.options.turnSteps; this._createDirs(); } @@ -59,11 +72,13 @@ export class PolygonPathGenerator implements IMovePathGenerator { // do nothing } - private readonly _createDirs: () => void = () => { + private readonly _createDirs = (): void => { + const { options } = this; + this.dirsList = []; - for (let i = 0; i < 360; i += 360 / this.options.sides) { - const angle = this.options.angle + i; + for (let i = 0; i < 360; i += 360 / options.sides) { + const angle = options.angle + i; this.dirsList.push(Vector.create(Math.cos((angle * Math.PI) / 180), Math.sin((angle * Math.PI) / 180))); } diff --git a/paths/polygon/src/index.ts b/paths/polygon/src/index.ts index 208dc8a36aa..5e500a3a96b 100644 --- a/paths/polygon/src/index.ts +++ b/paths/polygon/src/index.ts @@ -10,9 +10,11 @@ export const polygonPathName = "polygonPathGenerator"; export async function loadPolygonPath(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { PolygonPathGenerator } = await import("./PolygonPathGenerator.js"); + await engine.register(e => { + e.addPathGenerator(polygonPathName, async container => { + const { PolygonPathGenerator } = await import("./PolygonPathGenerator.js"); - e.addPathGenerator(polygonPathName, new PolygonPathGenerator()); + return new PolygonPathGenerator(container); + }); }); } diff --git a/paths/simplexNoise/CHANGELOG.md b/paths/simplexNoise/CHANGELOG.md index f345bdfcafe..b69f19f5ce6 100644 --- a/paths/simplexNoise/CHANGELOG.md +++ b/paths/simplexNoise/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-simplex-noise + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-simplex-noise + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-simplex-noise + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/path-simplex-noise diff --git a/paths/simplexNoise/package.dist.json b/paths/simplexNoise/package.dist.json index ffffa192b00..739519fea48 100644 --- a/paths/simplexNoise/package.dist.json +++ b/paths/simplexNoise/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/path-simplex-noise", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles simplex noise path", "homepage": "https://particles.js.org", "repository": { @@ -104,9 +104,9 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/noise-field": "4.0.0-alpha.8", - "@tsparticles/simplex-noise": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/noise-field": "4.0.0-alpha.14", + "@tsparticles/simplex-noise": "4.0.0-alpha.14" }, "type": "module" } diff --git a/paths/simplexNoise/package.json b/paths/simplexNoise/package.json index ba9770416b3..8c9457574a2 100644 --- a/paths/simplexNoise/package.json +++ b/paths/simplexNoise/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/path-simplex-noise", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles simplex noise path", "homepage": "https://particles.js.org", "scripts": { @@ -95,9 +95,9 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/noise-field": "workspace:4.0.0-alpha.8", - "@tsparticles/simplex-noise": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/noise-field": "workspace:4.0.0-alpha.14", + "@tsparticles/simplex-noise": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/paths/simplexNoise/src/SimplexNoiseGenerator.ts b/paths/simplexNoise/src/SimplexNoiseGenerator.ts index 20c50605633..606814e31bf 100644 --- a/paths/simplexNoise/src/SimplexNoiseGenerator.ts +++ b/paths/simplexNoise/src/SimplexNoiseGenerator.ts @@ -1,11 +1,12 @@ +import type { Container } from "@tsparticles/engine"; import { NoiseFieldGenerator } from "@tsparticles/noise-field"; import { SimplexNoise } from "@tsparticles/simplex-noise"; export class SimplexNoiseGenerator extends NoiseFieldGenerator { - constructor() { + constructor(container: Container) { const simplex = new SimplexNoise(); - super({ + super(container, { noise4d: (x, y, z, w) => simplex.noise4d.noise(x, y, z, w), seed: seed => { simplex.noise4d.seed(seed); diff --git a/paths/simplexNoise/src/index.ts b/paths/simplexNoise/src/index.ts index ffed28c882a..36691f8ce53 100644 --- a/paths/simplexNoise/src/index.ts +++ b/paths/simplexNoise/src/index.ts @@ -10,9 +10,11 @@ export const simplexNoisePathName = "simplexNoise"; export async function loadSimplexNoisePath(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { SimplexNoiseGenerator } = await import("./SimplexNoiseGenerator.js"); + await engine.register(e => { + e.addPathGenerator(simplexNoisePathName, async container => { + const { SimplexNoiseGenerator } = await import("./SimplexNoiseGenerator.js"); - e.addPathGenerator(simplexNoisePathName, new SimplexNoiseGenerator()); + return new SimplexNoiseGenerator(container); + }); }); } diff --git a/paths/spiral/.browserslistrc b/paths/spiral/.browserslistrc new file mode 100644 index 00000000000..fb811e7a9d2 --- /dev/null +++ b/paths/spiral/.browserslistrc @@ -0,0 +1,2 @@ +since 2021 +not dead diff --git a/paths/spiral/.npmignore b/paths/spiral/.npmignore new file mode 100644 index 00000000000..5c901533f98 --- /dev/null +++ b/paths/spiral/.npmignore @@ -0,0 +1 @@ +report.html \ No newline at end of file diff --git a/paths/spiral/CHANGELOG.md b/paths/spiral/CHANGELOG.md new file mode 100644 index 00000000000..3ea5a0cfdf3 --- /dev/null +++ b/paths/spiral/CHANGELOG.md @@ -0,0 +1,19 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-spiral + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-spiral + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Features + +- add spiral path generator and related files ([5aeeb58](https://github.com/tsparticles/tsparticles/commit/5aeeb58c6413db6cee187c43c2d95620c866b409)) +- refactor path generators to use container-specific options and add spiral path generator ([3aa87c3](https://github.com/tsparticles/tsparticles/commit/3aa87c39c5a70adfb146cd281b62a229623e3412)) diff --git a/paths/spiral/LICENSE b/paths/spiral/LICENSE new file mode 100644 index 00000000000..bdc05f528fa --- /dev/null +++ b/paths/spiral/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Matteo Bruni + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/paths/spiral/README.md b/paths/spiral/README.md new file mode 100644 index 00000000000..1e53803d6f2 --- /dev/null +++ b/paths/spiral/README.md @@ -0,0 +1,74 @@ +[![banner](https://particles.js.org/images/banner3.png)](https://particles.js.org) + +# tsParticles Spiral Path + +[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/path-spiral/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/path-spiral) +[![npmjs](https://badge.fury.io/js/@tsparticles/path-spiral.svg)](https://www.npmjs.com/package/@tsparticles/path-spiral) +[![npmjs](https://img.shields.io/npm/dt/@tsparticles/path-spiral)](https://www.npmjs.com/package/@tsparticles/path-spiral) [![GitHub Sponsors](https://img.shields.io/github/sponsors/matteobruni)](https://github.com/sponsors/matteobruni) + +[tsParticles](https://github.com/tsparticles/tsparticles) path plugin for spiral movement. + +## How to use it + +### CDN / Vanilla JS / jQuery + +The CDN/Vanilla version JS has one required file in vanilla configuration: + +Including the `tsparticles.path.spiral.min.js` file will export the function to load the path plugin: + +```text +loadSpiralPath +``` + +### Usage + +Once the scripts are loaded you can set up `tsParticles` and the path plugin like this: + +```javascript +(async () => { + await loadSpiralPath(tsParticles); + + await tsParticles.load({ + id: "tsparticles", + options: { + /* options */ + }, + }); +})(); +``` + +### ESM / CommonJS + +This package is compatible also with ES or CommonJS modules, firstly this needs to be installed, like this: + +```shell +$ npm install @tsparticles/path-spiral +``` + +or + +```shell +$ yarn add @tsparticles/path-spiral +``` + +Then you need to import it in the app, like this: + +```javascript +const { tsParticles } = require("@tsparticles/engine"); +const { loadSpiralPath } = require("@tsparticles/path-spiral"); + +(async () => { + await loadSpiralPath(tsParticles); +})(); +``` + +or + +```javascript +import { tsParticles } from "@tsparticles/engine"; +import { loadSpiralPath } from "@tsparticles/path-spiral"; + +(async () => { + await loadSpiralPath(tsParticles); +})(); +``` diff --git a/paths/spiral/eslint.config.js b/paths/spiral/eslint.config.js new file mode 100644 index 00000000000..a461ddbce48 --- /dev/null +++ b/paths/spiral/eslint.config.js @@ -0,0 +1,6 @@ +import tsParticlesESLintConfig from "@tsparticles/eslint-config"; +import { defineConfig } from "eslint/config"; + +export default defineConfig([ + tsParticlesESLintConfig, +]); diff --git a/paths/spiral/package.dist.json b/paths/spiral/package.dist.json new file mode 100644 index 00000000000..8a6a5d926d8 --- /dev/null +++ b/paths/spiral/package.dist.json @@ -0,0 +1,110 @@ +{ + "name": "@tsparticles/path-spiral", + "version": "4.0.0-alpha.14", + "description": "tsParticles spiral path", + "homepage": "https://particles.js.org", + "repository": { + "type": "git", + "url": "git+https://github.com/tsparticles/tsparticles.git", + "directory": "paths/spiral" + }, + "keywords": [ + "front-end", + "frontend", + "tsparticles", + "particles.js", + "particlesjs", + "particles", + "particle", + "canvas", + "jsparticles", + "xparticles", + "particles-js", + "particles-bg", + "particles-bg-vue", + "particles-ts", + "particles.ts", + "react-particles-js", + "react-particles.js", + "react-particles", + "react", + "reactjs", + "vue-particles", + "ngx-particles", + "angular-particles", + "particleground", + "vue", + "vuejs", + "preact", + "preactjs", + "jquery", + "angularjs", + "angular", + "typescript", + "javascript", + "animation", + "web", + "html5", + "web-design", + "webdesign", + "css", + "html", + "css3", + "animated", + "background", + "confetti", + "canvas", + "fireworks", + "fireworks-js", + "confetti-js", + "confettijs", + "fireworksjs", + "canvas-confetti", + "tsparticles-plugin", + "tsparticles-path" + ], + "publishConfig": { + "access": "public" + }, + "author": "Matteo Bruni ", + "license": "MIT", + "bugs": { + "url": "https://github.com/tsparticles/tsparticles/issues" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "sideEffects": false, + "jsdelivr": "tsparticles.path.spiral.min.js", + "unpkg": "tsparticles.path.spiral.min.js", + "browser": "browser/index.js", + "main": "cjs/index.js", + "module": "esm/index.js", + "types": "types/index.d.ts", + "exports": { + ".": { + "types": "./types/index.d.ts", + "browser": "./browser/index.js", + "import": "./esm/index.js", + "require": "./cjs/index.js", + "umd": "./umd/index.js", + "default": "./cjs/index.js" + }, + "./package.json": "./package.json" + }, + "dependencies": { + "@tsparticles/engine": "4.0.0-alpha.14" + }, + "type": "module" +} diff --git a/paths/spiral/package.json b/paths/spiral/package.json new file mode 100644 index 00000000000..a7c23d3507f --- /dev/null +++ b/paths/spiral/package.json @@ -0,0 +1,120 @@ +{ + "name": "@tsparticles/path-spiral", + "version": "4.0.0-alpha.14", + "description": "tsParticles spiral path", + "homepage": "https://particles.js.org", + "scripts": { + "build": "tsparticles-cli build", + "build:ci": "tsparticles-cli build --ci", + "version": "tsparticles-cli build -d && git add package.dist.json && tsparticles-cli build -p -l && git add .", + "prepack": "pnpm run build" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/tsparticles/tsparticles.git", + "directory": "paths/spiral" + }, + "keywords": [ + "front-end", + "frontend", + "tsparticles", + "particles.js", + "particlesjs", + "particles", + "particle", + "canvas", + "jsparticles", + "xparticles", + "particles-js", + "particles-bg", + "particles-bg-vue", + "particles-ts", + "particles.ts", + "react-particles-js", + "react-particles.js", + "react-particles", + "react", + "reactjs", + "vue-particles", + "ngx-particles", + "angular-particles", + "particleground", + "vue", + "vuejs", + "preact", + "preactjs", + "jquery", + "angularjs", + "angular", + "typescript", + "javascript", + "animation", + "web", + "html5", + "web-design", + "webdesign", + "css", + "html", + "css3", + "animated", + "background", + "confetti", + "canvas", + "fireworks", + "fireworks-js", + "confetti-js", + "confettijs", + "fireworksjs", + "canvas-confetti", + "tsparticles-plugin", + "tsparticles-path" + ], + "author": "Matteo Bruni ", + "license": "MIT", + "bugs": { + "url": "https://github.com/tsparticles/tsparticles/issues" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "prettier": "@tsparticles/prettier-config", + "files": [ + "dist" + ], + "sideEffects": false, + "browser": "dist/browser/index.js", + "main": "dist/cjs/index.js", + "module": "dist/esm/index.js", + "types": "dist/types/index.d.ts", + "exports": { + ".": { + "types": "./dist/types/index.d.ts", + "browser": "./dist/browser/index.js", + "import": "./dist/esm/index.js", + "require": "./dist/cjs/index.js", + "umd": "./dist/umd/index.js", + "default": "./dist/cjs/index.js" + }, + "./package.json": "./dist/package.json" + }, + "dependencies": { + "@tsparticles/engine": "workspace:4.0.0-alpha.14" + }, + "publishConfig": { + "access": "public", + "directory": "dist", + "linkDirectory": true + }, + "type": "module" +} diff --git a/paths/spiral/src/ISpiralOptions.ts b/paths/spiral/src/ISpiralOptions.ts new file mode 100644 index 00000000000..0cabb0d13b6 --- /dev/null +++ b/paths/spiral/src/ISpiralOptions.ts @@ -0,0 +1,7 @@ +import type { RangeValue } from "@tsparticles/engine"; + +export interface ISpiralOptions { + angularSpeed: RangeValue; + maxRadius: RangeValue; + radialSpeed: RangeValue; +} diff --git a/paths/spiral/src/SpiralDirection.ts b/paths/spiral/src/SpiralDirection.ts new file mode 100644 index 00000000000..ed0b9fc590b --- /dev/null +++ b/paths/spiral/src/SpiralDirection.ts @@ -0,0 +1,4 @@ +export enum SpiralDirection { + positive = 1, + negative = -1, +} diff --git a/paths/spiral/src/SpiralParticle.ts b/paths/spiral/src/SpiralParticle.ts new file mode 100644 index 00000000000..9ad328a2910 --- /dev/null +++ b/paths/spiral/src/SpiralParticle.ts @@ -0,0 +1,15 @@ +import type { Particle } from "@tsparticles/engine"; +import type { SpiralDirection } from "./SpiralDirection.js"; + +interface SpiralData { + angle: number; + angularSpeed: number; + direction: SpiralDirection; + maxRadius: number; + radialSpeed: number; + radius: number; +} + +export interface SpiralParticle extends Particle { + spiral?: SpiralData; +} diff --git a/paths/spiral/src/SpiralPathGenerator.ts b/paths/spiral/src/SpiralPathGenerator.ts new file mode 100644 index 00000000000..e552c3eea63 --- /dev/null +++ b/paths/spiral/src/SpiralPathGenerator.ts @@ -0,0 +1,87 @@ +import { + type Container, + type IDelta, + type IMovePathGenerator, + type RangeValue, + Vector, + deepExtend, + doublePI, + getRandom, + getRangeValue, +} from "@tsparticles/engine"; +import type { ISpiralOptions } from "./ISpiralOptions.js"; +import { SpiralDirection } from "./SpiralDirection.js"; +import type { SpiralParticle } from "./SpiralParticle.js"; + +const minRadius = 0, + speedFactor = 0.01, + defaultOptions: ISpiralOptions = { + maxRadius: { min: 10, max: 50 }, + angularSpeed: { min: 0.01, max: 0.04 }, + radialSpeed: { min: 0.1, max: 0.3 }, + }; + +export class SpiralPathGenerator implements IMovePathGenerator { + readonly options; + private readonly _container; + + constructor(container: Container) { + this._container = container; + this.options = deepExtend({}, defaultOptions) as ISpiralOptions; + } + + generate(particle: SpiralParticle, delta: IDelta): Vector { + const { options } = this; + + particle.spiral ??= { + angle: getRandom() * doublePI, + radius: minRadius, + direction: SpiralDirection.positive, + maxRadius: getRangeValue(options.maxRadius), + angularSpeed: getRangeValue(options.angularSpeed) * speedFactor, + radialSpeed: getRangeValue(options.radialSpeed) * speedFactor, + }; + + const spiral = particle.spiral; + + // advance rotation + spiral.angle += spiral.angularSpeed * delta.factor; + + // advance radial oscillation + spiral.radius += spiral.radialSpeed * spiral.direction * delta.factor; + + if (spiral.radius > spiral.maxRadius && spiral.direction === SpiralDirection.positive) { + spiral.radius = spiral.maxRadius; + spiral.direction = SpiralDirection.negative; + } else if (spiral.radius < minRadius && spiral.direction === SpiralDirection.negative) { + spiral.radius = minRadius; + spiral.direction = SpiralDirection.positive; + } + + // compute spiral offset relative to velocity direction + const offsetX = Math.cos(spiral.angle) * spiral.radius, + offsetY = Math.sin(spiral.angle) * spiral.radius; + + // apply offset orthogonally around natural motion + particle.position.x += offsetX; + particle.position.y += offsetY; + + return Vector.origin; + } + + init(): void { + const sourceOptions = this._container.actualOptions.particles.move.path.options; + + this.options.maxRadius = (sourceOptions["maxRadius"] as RangeValue | undefined) ?? this.options.maxRadius; + this.options.angularSpeed = (sourceOptions["angularSpeed"] as RangeValue | undefined) ?? this.options.angularSpeed; + this.options.radialSpeed = (sourceOptions["radialSpeed"] as RangeValue | undefined) ?? this.options.radialSpeed; + } + + reset(particle: SpiralParticle): void { + delete particle.spiral; + } + + update(): void { + // no-op + } +} diff --git a/paths/spiral/src/index.ts b/paths/spiral/src/index.ts new file mode 100644 index 00000000000..75177c4ab4b --- /dev/null +++ b/paths/spiral/src/index.ts @@ -0,0 +1,20 @@ +import type { Engine } from "@tsparticles/engine"; + +declare const __VERSION__: string; + +export const spiralPathName = "spiralPathGenerator"; + +/** + * @param engine - + */ +export async function loadSpiralPath(engine: Engine): Promise { + engine.checkVersion(__VERSION__); + + await engine.register(e => { + e.addPathGenerator(spiralPathName, async container => { + const { SpiralPathGenerator } = await import("./SpiralPathGenerator.js"); + + return new SpiralPathGenerator(container); + }); + }); +} diff --git a/paths/spiral/tsconfig.base.json b/paths/spiral/tsconfig.base.json new file mode 100644 index 00000000000..d43f4eba9bd --- /dev/null +++ b/paths/spiral/tsconfig.base.json @@ -0,0 +1,9 @@ +{ + "extends": "@tsparticles/tsconfig/tsconfig.base.json", + "compilerOptions": { + "rootDir": "./src" + }, + "include": [ + "./src" + ] +} diff --git a/paths/spiral/tsconfig.browser.json b/paths/spiral/tsconfig.browser.json new file mode 100644 index 00000000000..3bb4173186c --- /dev/null +++ b/paths/spiral/tsconfig.browser.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.browser.json"], + "compilerOptions": { + "outDir": "./dist/browser" + } +} diff --git a/paths/spiral/tsconfig.json b/paths/spiral/tsconfig.json new file mode 100644 index 00000000000..4c843651531 --- /dev/null +++ b/paths/spiral/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.json"], + "compilerOptions": { + "outDir": "./dist/cjs" + } +} diff --git a/paths/spiral/tsconfig.module.json b/paths/spiral/tsconfig.module.json new file mode 100644 index 00000000000..fa94c2a6293 --- /dev/null +++ b/paths/spiral/tsconfig.module.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.module.json"], + "compilerOptions": { + "outDir": "./dist/esm" + } +} diff --git a/paths/spiral/tsconfig.types.json b/paths/spiral/tsconfig.types.json new file mode 100644 index 00000000000..8ec1d3edd57 --- /dev/null +++ b/paths/spiral/tsconfig.types.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.types.json"], + "compilerOptions": { + "outDir": "./dist/types" + } +} diff --git a/paths/spiral/tsconfig.umd.json b/paths/spiral/tsconfig.umd.json new file mode 100644 index 00000000000..41b78634d8c --- /dev/null +++ b/paths/spiral/tsconfig.umd.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.umd.json"], + "compilerOptions": { + "outDir": "./dist/umd" + } +} diff --git a/paths/spiral/typedoc.json b/paths/spiral/typedoc.json new file mode 100644 index 00000000000..f57f7937f42 --- /dev/null +++ b/paths/spiral/typedoc.json @@ -0,0 +1,15 @@ +{ + "projectDocuments": ["./markdown/**/*.md"], + "entryPoints": [ + "./src/" + ], + "entryPointStrategy": "expand", + "name": "tsParticles Spiral Path", + "includeVersion": true, + "hideGenerator": true, + "out": "./docs", + "validation": { + "invalidLink": true, + "notDocumented": true + } +} diff --git a/paths/spiral/webpack.config.js b/paths/spiral/webpack.config.js new file mode 100644 index 00000000000..1e43f6f8299 --- /dev/null +++ b/paths/spiral/webpack.config.js @@ -0,0 +1,12 @@ +import { loadParticlesPath } from "@tsparticles/webpack-plugin"; +import { fileURLToPath } from "url"; +import fs from "fs-extra"; +import path from "path"; + +const __filename = fileURLToPath(import.meta.url), + __dirname = path.dirname(__filename), + rootPkgPath = path.join(__dirname, "package.json"), + pkg = await fs.readJson(rootPkgPath), + version = pkg.version; + +export default loadParticlesPath({ moduleName: "spiral", pluginName: "Spiral", version, dir: __dirname }); diff --git a/paths/svg/CHANGELOG.md b/paths/svg/CHANGELOG.md index 280d02c1821..2e975886f0f 100644 --- a/paths/svg/CHANGELOG.md +++ b/paths/svg/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-svg + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-svg + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-svg + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/path-svg diff --git a/paths/svg/package.dist.json b/paths/svg/package.dist.json index 1f11000aa3e..cd03ef87266 100644 --- a/paths/svg/package.dist.json +++ b/paths/svg/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/path-svg", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles svg path", "homepage": "https://particles.js.org", "repository": { @@ -101,7 +101,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/paths/svg/package.json b/paths/svg/package.json index d1158fb1e65..a2245994537 100644 --- a/paths/svg/package.json +++ b/paths/svg/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/path-svg", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles svg path", "homepage": "https://particles.js.org", "scripts": { @@ -109,7 +109,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/paths/svg/src/SVGPathGenerator.ts b/paths/svg/src/SVGPathGenerator.ts index 217504885e4..a21bd2e8d0e 100644 --- a/paths/svg/src/SVGPathGenerator.ts +++ b/paths/svg/src/SVGPathGenerator.ts @@ -13,8 +13,10 @@ import { getRandom, half, randomInRangeValue, - safeDocument, } from "@tsparticles/engine"; +import type { SVGPathData } from "./types.js"; +import { createSVGPaths } from "./createSVGPaths.js"; +import { loadSVGFromString } from "./loadSVGFromString.js"; enum SVGPathDirection { normal, @@ -48,12 +50,8 @@ interface SVGPathOptions { width?: number; } -interface SVGPathData { - element: SVGPathElement; - length: number; -} - export class SVGPathGenerator implements IMovePathGenerator { + private readonly _container; private readonly _offset: ICoordinatesWithMode; private _paths: SVGPathData[]; private _reverse: boolean; @@ -61,7 +59,8 @@ export class SVGPathGenerator implements IMovePathGenerator { private readonly _size: IDimension; private _width: number; - constructor() { + constructor(container: Container) { + this._container = container; this._paths = []; this._reverse = false; this._size = { width: 0, height: 0 }; @@ -71,7 +70,7 @@ export class SVGPathGenerator implements IMovePathGenerator { } generate(particle: SVGPathParticle, delta: IDelta): Vector { - const container = particle.container, + const container = this._container, pxRatio = container.retina.pixelRatio; particle.svgDirection ??= getRandom() > half ? SVGPathDirection.normal : SVGPathDirection.reverse; @@ -83,7 +82,6 @@ export class SVGPathGenerator implements IMovePathGenerator { height: randomInRangeValue({ min: -this._width * half, max: this._width * half }) * pxRatio, }; particle.svgInitialPosition ??= particle.position.copy(); - particle.velocity.x = 0; particle.velocity.y = 0; @@ -134,7 +132,7 @@ export class SVGPathGenerator implements IMovePathGenerator { const pathElement = path.element, pos = pathElement.getPointAtLength(particle.svgStep), - canvasSize = particle.container.canvas.size, + canvasSize = this._container.canvas.size, offset = getPosition(this._offset, canvasSize), scale = this._scale * pxRatio; @@ -146,8 +144,8 @@ export class SVGPathGenerator implements IMovePathGenerator { return Vector.origin; } - init(container: Container): void { - const options = container.actualOptions.particles.move.path.options as SVGPathOptions, + init(): void { + const options = this._container.actualOptions.particles.move.path.options as SVGPathOptions, position = options.position ?? this._offset; this._reverse = options.reverse ?? this._reverse; @@ -162,52 +160,17 @@ export class SVGPathGenerator implements IMovePathGenerator { void (async (): Promise => { const response = await fetch(url), - data = await response.text(); - - // retrieve the svg path from the url - const parser = new DOMParser(), - doc = parser.parseFromString(data, "image/svg+xml"), - firstIndex = 0, - svg = doc.getElementsByTagName("svg")[firstIndex]!; - - let svgPaths = svg.getElementsByTagName("path"); - - if (!svgPaths.length) { - svgPaths = doc.getElementsByTagName("path"); - } - - this._paths = []; + data = await response.text(), + { paths, size } = loadSVGFromString(data); - for (let i = 0; i < svgPaths.length; i++) { - const path = svgPaths.item(i); - - if (path) { - this._paths.push({ - element: path, - length: path.getTotalLength(), - }); - } - } - - this._size.height = Number.parseFloat(svg.getAttribute("height") ?? "0"); - this._size.width = Number.parseFloat(svg.getAttribute("width") ?? "0"); + this._paths = paths; + this._size.width = size.width; + this._size.height = size.height; })(); } else if (options.path) { const path = options.path; - this._paths = []; - - for (const item of path.data) { - const element = safeDocument().createElementNS("http://www.w3.org/2000/svg", "path"); - - element.setAttribute("d", item); - - this._paths.push({ - element, - length: element.getTotalLength(), - }); - } - + this._paths = createSVGPaths(options.path.data); this._size.height = path.size.height; this._size.width = path.size.width; } diff --git a/paths/svg/src/createSVGPaths.ts b/paths/svg/src/createSVGPaths.ts new file mode 100644 index 00000000000..ea0a216180c --- /dev/null +++ b/paths/svg/src/createSVGPaths.ts @@ -0,0 +1,21 @@ +import type { SVGPathData } from "./types.js"; +import { safeDocument } from "@tsparticles/engine"; + +/** + * @param data - + * @returns the created SVG paths + */ +export function createSVGPaths(data: string[]): SVGPathData[] { + const doc = safeDocument(); + + return data.map(d => { + const element = doc.createElementNS("http://www.w3.org/2000/svg", "path"); + + element.setAttribute("d", d); + + return { + element, + length: element.getTotalLength(), + }; + }); +} diff --git a/paths/svg/src/index.ts b/paths/svg/src/index.ts index 22d8b7e91c2..73324452aab 100644 --- a/paths/svg/src/index.ts +++ b/paths/svg/src/index.ts @@ -10,9 +10,11 @@ export const svgPathName = "svgPathGenerator"; export async function loadSVGPath(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { SVGPathGenerator } = await import("./SVGPathGenerator.js"); + await engine.register(e => { + e.addPathGenerator(svgPathName, async container => { + const { SVGPathGenerator } = await import("./SVGPathGenerator.js"); - e.addPathGenerator(svgPathName, new SVGPathGenerator()); + return new SVGPathGenerator(container); + }); }); } diff --git a/paths/svg/src/loadSVGFromString.ts b/paths/svg/src/loadSVGFromString.ts new file mode 100644 index 00000000000..72e3665bfcb --- /dev/null +++ b/paths/svg/src/loadSVGFromString.ts @@ -0,0 +1,47 @@ +import type { SVGPathData } from "./types.js"; + +export interface LoadedSVGPaths { + paths: SVGPathData[]; + size: { + height: number; + width: number; + }; +} + +/** + * @param svgText - + * @returns the loaded SVG paths and the size of the SVG + */ +export function loadSVGFromString(svgText: string): LoadedSVGPaths { + const parser = new DOMParser(), + doc = parser.parseFromString(svgText, "image/svg+xml"), + svg = doc.querySelector("svg"); + + if (!svg) { + return { paths: [], size: { width: 0, height: 0 } }; + } + + const pathElements = svg.querySelectorAll("path"), + paths: SVGPathData[] = []; + + for (const node of pathElements) { + if (!(node instanceof SVGPathElement)) { + continue; + } + + paths.push({ + element: node, + length: node.getTotalLength(), + }); + } + + const size = { + width: Number.parseFloat(svg.getAttribute("width") ?? "0"), + height: Number.parseFloat(svg.getAttribute("height") ?? "0"), + }; + + return { + paths, + size, + }; +} diff --git a/paths/svg/src/types.ts b/paths/svg/src/types.ts new file mode 100644 index 00000000000..ee5001821a0 --- /dev/null +++ b/paths/svg/src/types.ts @@ -0,0 +1,4 @@ +export interface SVGPathData { + element: SVGPathElement; + length: number; +} diff --git a/paths/zigzag/CHANGELOG.md b/paths/zigzag/CHANGELOG.md index c5a0ff85bc2..1089e39f21e 100644 --- a/paths/zigzag/CHANGELOG.md +++ b/paths/zigzag/CHANGELOG.md @@ -3,6 +3,20 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-zig-zag + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-zig-zag + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Features + +- refactor path generators to use container-specific options and add spiral path generator ([3aa87c3](https://github.com/tsparticles/tsparticles/commit/3aa87c39c5a70adfb146cd281b62a229623e3412)) + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/path-zig-zag diff --git a/paths/zigzag/package.dist.json b/paths/zigzag/package.dist.json index f09fd0d5a28..a27775f1955 100644 --- a/paths/zigzag/package.dist.json +++ b/paths/zigzag/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/path-zig-zag", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles zig zag path", "homepage": "https://particles.js.org", "repository": { @@ -101,7 +101,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/paths/zigzag/package.json b/paths/zigzag/package.json index 66e3732dc98..ceef2cab482 100644 --- a/paths/zigzag/package.json +++ b/paths/zigzag/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/path-zig-zag", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles zig zag path", "homepage": "https://particles.js.org", "scripts": { @@ -109,7 +109,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/paths/zigzag/src/ZigZagPathGenerator.ts b/paths/zigzag/src/ZigZagPathGenerator.ts index f6f4a1edf4e..725f2786d53 100644 --- a/paths/zigzag/src/ZigZagPathGenerator.ts +++ b/paths/zigzag/src/ZigZagPathGenerator.ts @@ -5,6 +5,7 @@ import { type Particle, type RangeValue, Vector, + deepExtend, getRandom, getRangeValue, half, @@ -28,21 +29,28 @@ interface IZigZagOptions { waveLength: RangeValue; } +const defaultOptions: IZigZagOptions = { + waveHeight: { min: 0, max: 3 }, + waveLength: { min: 0, max: 5 }, +}; + export class ZigZagPathGenerator implements IMovePathGenerator { - options: IZigZagOptions; + readonly options; - constructor() { - this.options = { - waveHeight: { min: 0, max: 3 }, - waveLength: { min: 0, max: 5 }, - }; + private readonly _container; + + constructor(container: Container) { + this._container = container; + this.options = deepExtend({}, defaultOptions) as IZigZagOptions; } generate(particle: ZigZagParticle, delta: IDelta): Vector { + const { options } = this; + particle.zigzag ??= { counter: getRandom(), - waveHeight: getRangeValue(this.options.waveHeight), - waveLength: getRangeValue(this.options.waveLength), + waveHeight: getRangeValue(options.waveHeight), + waveLength: getRangeValue(options.waveLength), }; const angularFrequency = (angularFrequencyFactor / particle.zigzag.waveLength) * delta.factor; @@ -57,11 +65,11 @@ export class ZigZagPathGenerator implements IMovePathGenerator { return Vector.origin; } - init(container: Container): void { - const options = container.actualOptions.particles.move.path.options; + init(): void { + const sourceOptions = this._container.actualOptions.particles.move.path.options; - this.options.waveLength = (options["waveLength"] as RangeValue | undefined) ?? this.options.waveLength; - this.options.waveHeight = (options["waveHeight"] as RangeValue | undefined) ?? this.options.waveHeight; + this.options.waveLength = (sourceOptions["waveLength"] as RangeValue | undefined) ?? this.options.waveLength; + this.options.waveHeight = (sourceOptions["waveHeight"] as RangeValue | undefined) ?? this.options.waveHeight; } reset(): void { diff --git a/paths/zigzag/src/index.ts b/paths/zigzag/src/index.ts index 99a825a1dd9..dedda8c31fd 100644 --- a/paths/zigzag/src/index.ts +++ b/paths/zigzag/src/index.ts @@ -10,9 +10,11 @@ export const zigZagPathName = "zigZagPathGenerator"; export async function loadZigZagPath(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { ZigZagPathGenerator } = await import("./ZigZagPathGenerator.js"); + await engine.register(e => { + e.addPathGenerator(zigZagPathName, async container => { + const { ZigZagPathGenerator } = await import("./ZigZagPathGenerator.js"); - e.addPathGenerator(zigZagPathName, new ZigZagPathGenerator()); + return new ZigZagPathGenerator(container); + }); }); } diff --git a/plugins/absorbers/CHANGELOG.md b/plugins/absorbers/CHANGELOG.md index a60f02239a5..29298adf4bf 100644 --- a/plugins/absorbers/CHANGELOG.md +++ b/plugins/absorbers/CHANGELOG.md @@ -3,6 +3,26 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-absorbers + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +### Bug Fixes + +- fixed some issues with emitters/absorbers life ([76f95ad](https://github.com/tsparticles/tsparticles/commit/76f95ad53bb9f7a9bc36e1cb725a4dac9e549d4e)) + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-absorbers + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Features + +- add life management to Absorber with new AbsorberLife class ([78b5126](https://github.com/tsparticles/tsparticles/commit/78b512680df568a196c80ce4afceeb5916906f41)) + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-absorbers diff --git a/plugins/absorbers/package.dist.json b/plugins/absorbers/package.dist.json index 522b2aa63ef..7fd1db12a48 100644 --- a/plugins/absorbers/package.dist.json +++ b/plugins/absorbers/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-absorbers", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles absorbers plugin", "homepage": "https://particles.js.org", "repository": { @@ -86,8 +86,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/absorbers/package.json b/plugins/absorbers/package.json index 7643656993d..1e5c3f22efd 100644 --- a/plugins/absorbers/package.json +++ b/plugins/absorbers/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-absorbers", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles absorbers plugin", "homepage": "https://particles.js.org", "scripts": { @@ -94,8 +94,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/absorbers/src/AbsorberInstance.ts b/plugins/absorbers/src/AbsorberInstance.ts index 89874cd4135..48ea99f8dc9 100644 --- a/plugins/absorbers/src/AbsorberInstance.ts +++ b/plugins/absorbers/src/AbsorberInstance.ts @@ -17,6 +17,7 @@ import { getRangeValue, getStyleFromRgb, isPointInside, + millisecondsToSeconds, originPoint, percentDenominator, rangeColorToRgb, @@ -32,7 +33,11 @@ const squareExp = 2, minMass = 0, minAngle = 0, maxAngle = doublePI, - minVelocity = 0; + minVelocity = 0, + defaultLifeDelay = 0, + minLifeCount = 0, + defaultSpawnDelay = 0, + defaultLifeCount = -1; /** * Particle extension type for Absorber orbit options @@ -99,12 +104,14 @@ export class AbsorberInstance { size; private readonly _container; + private _currentDuration; + private _currentSpawnDelay; + private _duration?: number; private readonly _engine; - - /** - * Gets the absorber initial position - * @internal - */ + private _firstSpawn; + private readonly _immortal; + private _lifeCount; + private _spawnDelay?: number; private readonly initialPosition?: Vector; /** @@ -118,6 +125,9 @@ export class AbsorberInstance { this._container = container; this._engine = engine; + this._currentDuration = 0; + this._currentSpawnDelay = 0; + this.initialPosition = position ? Vector.create(position.x, position.y) : undefined; if (options instanceof Absorber) { @@ -146,6 +156,14 @@ export class AbsorberInstance { }; this.position = this.initialPosition?.copy() ?? this._calcPosition(); + + this._firstSpawn = !this.options.life.wait; + this._lifeCount = this.options.life.count ?? defaultLifeCount; + this._immortal = this._lifeCount <= minLifeCount; + this._spawnDelay = container.retina.reduceFactor + ? (getRangeValue(this.options.life.delay ?? defaultLifeDelay) * millisecondsToSeconds) / + container.retina.reduceFactor + : Infinity; } /** @@ -221,6 +239,53 @@ export class AbsorberInstance { : this._calcPosition(); } + /** + * Updates the absorber state, including life management + * @param delta - the delta time of the frame + */ + update(delta: IDelta): void { + if (this._firstSpawn) { + this._firstSpawn = false; + + this._currentSpawnDelay = this._spawnDelay ?? defaultSpawnDelay; + } + + if (this._duration !== undefined) { + this._currentDuration += delta.value; + + if (this._currentDuration >= this._duration) { + if (!this._immortal) { + this._lifeCount--; + } + + if (this._lifeCount > minLifeCount || this._immortal) { + this.position = this._calcPosition(); + + this._spawnDelay = this._container.retina.reduceFactor + ? (getRangeValue(this.options.life.delay ?? defaultLifeDelay) * millisecondsToSeconds) / + this._container.retina.reduceFactor + : Infinity; + } + + this._currentDuration -= this._duration; + + delete this._duration; + } + } + + if (this._spawnDelay !== undefined) { + this._currentSpawnDelay += delta.value; + + if (this._currentSpawnDelay >= this._spawnDelay) { + this.play(); + + this._currentSpawnDelay -= this._spawnDelay; + + delete this._spawnDelay; + } + } + } + /** * This method calculate the absorber position, using the provided options and position * @internal @@ -235,6 +300,19 @@ export class AbsorberInstance { return Vector.create(exactPosition.x, exactPosition.y); }; + /** + * Prepares the absorber to die by calculating its life duration + * @internal + */ + private readonly _prepareToDie: () => void = () => { + const duration = this.options.life.duration !== undefined ? getRangeValue(this.options.life.duration) : undefined, + minDuration = 0; + + if ((this._lifeCount > minLifeCount || this._immortal) && duration !== undefined && duration > minDuration) { + this._duration = duration * millisecondsToSeconds; + } + }; + /** * Updates the particle position, if the particle needs a new position * @param particle - the particle to update @@ -304,4 +382,22 @@ export class AbsorberInstance { particle.velocity.addTo(addV); } }; + + /** + * Play method that prepares the absorber to be drawn and updated + */ + private readonly play: () => void = () => { + if ( + !( + (this._lifeCount > minLifeCount || this._immortal || !this.options.life.count) && + (this._firstSpawn || this._currentSpawnDelay >= (this._spawnDelay ?? defaultSpawnDelay)) + ) + ) { + return; + } + + if (this._lifeCount > minLifeCount || this._immortal) { + this._prepareToDie(); + } + }; } diff --git a/plugins/absorbers/src/AbsorbersPlugin.ts b/plugins/absorbers/src/AbsorbersPlugin.ts index 4d756996ac3..e21a7f44c71 100644 --- a/plugins/absorbers/src/AbsorbersPlugin.ts +++ b/plugins/absorbers/src/AbsorbersPlugin.ts @@ -15,12 +15,11 @@ import type { AbsorbersInstancesManager } from "./AbsorbersInstancesManager.js"; /** */ export class AbsorbersPlugin implements IPlugin { - readonly id; + readonly id = "absorbers"; private readonly _instancesManager; constructor(instancesManager: AbsorbersInstancesManager) { - this.id = "absorbers"; this._instancesManager = instancesManager; } diff --git a/plugins/absorbers/src/Options/Classes/Absorber.ts b/plugins/absorbers/src/Options/Classes/Absorber.ts index 6ad263e18c5..4032f0f174c 100644 --- a/plugins/absorbers/src/Options/Classes/Absorber.ts +++ b/plugins/absorbers/src/Options/Classes/Absorber.ts @@ -6,6 +6,7 @@ import { isNull, setRangeValue, } from "@tsparticles/engine"; +import { AbsorberLife } from "./AbsorberLife.js"; import { AbsorberSize } from "./AbsorberSize.js"; import type { IAbsorber } from "../Interfaces/IAbsorber.js"; @@ -16,6 +17,7 @@ export class Absorber implements IAbsorber, IOptionLoader { color; destroy; draggable; + life; name?: string; opacity; orbits; @@ -29,6 +31,7 @@ export class Absorber implements IAbsorber, IOptionLoader { this.opacity = 1; this.destroy = true; this.orbits = false; + this.life = new AbsorberLife(); this.size = new AbsorberSize(); } @@ -45,6 +48,10 @@ export class Absorber implements IAbsorber, IOptionLoader { this.draggable = data.draggable; } + if (data.life !== undefined) { + this.life.load(data.life); + } + this.name = data.name; if (data.opacity !== undefined) { diff --git a/plugins/absorbers/src/Options/Classes/AbsorberLife.ts b/plugins/absorbers/src/Options/Classes/AbsorberLife.ts new file mode 100644 index 00000000000..4c20cce6973 --- /dev/null +++ b/plugins/absorbers/src/Options/Classes/AbsorberLife.ts @@ -0,0 +1,37 @@ +import { type IOptionLoader, type RangeValue, type RecursivePartial, isNull, setRangeValue } from "@tsparticles/engine"; +import type { IAbsorberLife } from "../Interfaces/IAbsorberLife.js"; + +/** + */ +export class AbsorberLife implements IAbsorberLife, IOptionLoader { + count?: number; + delay?: RangeValue; + duration?: RangeValue; + wait; + + constructor() { + this.wait = false; + } + + load(data?: RecursivePartial): void { + if (isNull(data)) { + return; + } + + if (data.count !== undefined) { + this.count = data.count; + } + + if (data.delay !== undefined) { + this.delay = setRangeValue(data.delay); + } + + if (data.duration !== undefined) { + this.duration = setRangeValue(data.duration); + } + + if (data.wait !== undefined) { + this.wait = data.wait; + } + } +} diff --git a/plugins/absorbers/src/Options/Interfaces/IAbsorber.ts b/plugins/absorbers/src/Options/Interfaces/IAbsorber.ts index 5a26fab74b1..ed37d2dfe41 100644 --- a/plugins/absorbers/src/Options/Interfaces/IAbsorber.ts +++ b/plugins/absorbers/src/Options/Interfaces/IAbsorber.ts @@ -1,4 +1,5 @@ import type { IOptionsColor, IRangedCoordinates, RecursivePartial } from "@tsparticles/engine"; +import type { IAbsorberLife } from "./IAbsorberLife.js"; import type { IAbsorberSize } from "./IAbsorberSize.js"; /** @@ -21,6 +22,11 @@ export interface IAbsorber { */ draggable: boolean; + /** + * Absorber life + */ + life: IAbsorberLife; + /** * Absorber name */ diff --git a/plugins/absorbers/src/Options/Interfaces/IAbsorberLife.ts b/plugins/absorbers/src/Options/Interfaces/IAbsorberLife.ts new file mode 100644 index 00000000000..24f04208664 --- /dev/null +++ b/plugins/absorbers/src/Options/Interfaces/IAbsorberLife.ts @@ -0,0 +1,29 @@ +import type { RangeValue } from "@tsparticles/engine"; + +/** + * The particles absorber life options + */ +export interface IAbsorberLife { + /** + * The count of lives the particles absorber has. + * If \<= 0 or not specified infinity will be the value. + * If the count is \> 0 it will spawn only that number of times then it'll be destroyed and removed + */ + count?: number; + + /** + * The delay between any spawn, except first. + */ + delay?: RangeValue; + + /** + * The duration of any absorber life. + * If \<= 0 or not specified infinity will be the value. + */ + duration?: RangeValue; + + /** + * If enabled the first delay will be applied + */ + wait: boolean; +} diff --git a/plugins/backgroundMask/CHANGELOG.md b/plugins/backgroundMask/CHANGELOG.md index 3ea84ab6c89..6ec508611d1 100644 --- a/plugins/backgroundMask/CHANGELOG.md +++ b/plugins/backgroundMask/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-background-mask + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-background-mask + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-background-mask + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-background-mask diff --git a/plugins/backgroundMask/package.dist.json b/plugins/backgroundMask/package.dist.json index 8b1a4fb366b..321b8b56b15 100644 --- a/plugins/backgroundMask/package.dist.json +++ b/plugins/backgroundMask/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-background-mask", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles background mask plugin", "homepage": "https://particles.js.org", "repository": { @@ -86,7 +86,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/backgroundMask/package.json b/plugins/backgroundMask/package.json index c6b6c67ea69..ec888705752 100644 --- a/plugins/backgroundMask/package.json +++ b/plugins/backgroundMask/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-background-mask", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles background mask plugin", "homepage": "https://particles.js.org", "scripts": { @@ -94,7 +94,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/backgroundMask/src/BackgroundMaskPlugin.ts b/plugins/backgroundMask/src/BackgroundMaskPlugin.ts index fe610bb3f5d..a6c853a2b94 100644 --- a/plugins/backgroundMask/src/BackgroundMaskPlugin.ts +++ b/plugins/backgroundMask/src/BackgroundMaskPlugin.ts @@ -5,13 +5,11 @@ import { BackgroundMask } from "./Options/Classes/BackgroundMask.js"; /** */ export class BackgroundMaskPlugin implements IPlugin { - readonly id; + readonly id = "background-mask"; private readonly _engine; constructor(engine: Engine) { - this.id = "background-mask"; - this._engine = engine; } diff --git a/plugins/blend/CHANGELOG.md b/plugins/blend/CHANGELOG.md index 2ad23f20b0d..e140773fa84 100644 --- a/plugins/blend/CHANGELOG.md +++ b/plugins/blend/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-blend + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-blend + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-blend + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-blend diff --git a/plugins/blend/package.dist.json b/plugins/blend/package.dist.json index 7a84f1b516c..6a532c4d56b 100644 --- a/plugins/blend/package.dist.json +++ b/plugins/blend/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-blend", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles blend plugin", "homepage": "https://particles.js.org", "repository": { @@ -86,7 +86,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/blend/package.json b/plugins/blend/package.json index 62ce101890e..e25a016fa27 100644 --- a/plugins/blend/package.json +++ b/plugins/blend/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-blend", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles blend plugin", "homepage": "https://particles.js.org", "scripts": { @@ -94,7 +94,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/blend/src/BlendPlugin.ts b/plugins/blend/src/BlendPlugin.ts index 1417b7ca5f2..b5f6a088ac5 100644 --- a/plugins/blend/src/BlendPlugin.ts +++ b/plugins/blend/src/BlendPlugin.ts @@ -5,11 +5,7 @@ import { Blend } from "./Options/Classes/Blend.js"; /** */ export class BlendPlugin implements IPlugin { - readonly id; - - constructor() { - this.id = "blend"; - } + readonly id = "blend"; async getPlugin(container: Container): Promise { const { BlendPluginInstance } = await import("./BlendPluginInstance.js"); diff --git a/plugins/canvasMask/CHANGELOG.md b/plugins/canvasMask/CHANGELOG.md index 8b20ff99f6a..1c0e5636015 100644 --- a/plugins/canvasMask/CHANGELOG.md +++ b/plugins/canvasMask/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-canvas-mask + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-canvas-mask + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-canvas-mask + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-canvas-mask diff --git a/plugins/canvasMask/package.dist.json b/plugins/canvasMask/package.dist.json index 52492c335c2..24d16244bd2 100644 --- a/plugins/canvasMask/package.dist.json +++ b/plugins/canvasMask/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-canvas-mask", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles canvas mask plugin", "homepage": "https://particles.js.org", "repository": { @@ -86,7 +86,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/canvas-utils": "4.0.0-alpha.14", + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/canvasMask/package.json b/plugins/canvasMask/package.json index 1dd5185cabe..1406929e63b 100644 --- a/plugins/canvasMask/package.json +++ b/plugins/canvasMask/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-canvas-mask", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles canvas mask plugin", "homepage": "https://particles.js.org", "scripts": { @@ -94,7 +94,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/canvas-utils": "workspace:4.0.0-alpha.14", + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/canvasMask/src/CanvasMaskPlugin.ts b/plugins/canvasMask/src/CanvasMaskPlugin.ts index 4ef7cf83519..6e224d55d2f 100644 --- a/plugins/canvasMask/src/CanvasMaskPlugin.ts +++ b/plugins/canvasMask/src/CanvasMaskPlugin.ts @@ -5,11 +5,7 @@ import { CanvasMask } from "./Options/Classes/CanvasMask.js"; /** */ export class CanvasMaskPlugin implements IPlugin { - readonly id; - - constructor() { - this.id = "canvasMask"; - } + readonly id = "canvas-mask"; async getPlugin(container: Container): Promise { const { CanvasMaskPluginInstance } = await import("./CanvasMaskPluginInstance.js"); diff --git a/plugins/canvasMask/src/CanvasMaskPluginInstance.ts b/plugins/canvasMask/src/CanvasMaskPluginInstance.ts index 4a23564b78e..d4ef5856f4e 100644 --- a/plugins/canvasMask/src/CanvasMaskPluginInstance.ts +++ b/plugins/canvasMask/src/CanvasMaskPluginInstance.ts @@ -1,12 +1,7 @@ -import { - type CanvasPixelData, - addParticlesFromCanvasPixels, - getCanvasImageData, - getImageData, - getTextData, -} from "./utils.js"; +import { type CanvasPixelData, getCanvasImageData, getImageData, getTextData } from "@tsparticles/canvas-utils"; import { type IContainerPlugin, isNull, safeDocument } from "@tsparticles/engine"; import type { CanvasMaskContainer } from "./types.js"; +import { addParticlesFromCanvasPixels } from "./utils.js"; export class CanvasMaskPluginInstance implements IContainerPlugin { private readonly _container; @@ -38,11 +33,10 @@ export class CanvasMaskPluginInstance implements IContainerPlugin { return; } - pixelData = await getImageData(url, offset); + pixelData = await getImageData(url, offset, container.canvas.settings); } else if (options.text) { - const textOptions = options.text; - - const data = getTextData(textOptions, offset); + const textOptions = options.text, + data = getTextData(textOptions, offset, textOptions.fill, container.canvas.settings); if (isNull(data)) { return; @@ -57,7 +51,7 @@ export class CanvasMaskPluginInstance implements IContainerPlugin { return; } - const context = canvas.getContext("2d"); + const context = canvas.getContext("2d", container.canvas.settings); if (!context) { return; diff --git a/plugins/canvasMask/src/Options/Classes/FontTextMask.ts b/plugins/canvasMask/src/Options/Classes/FontTextMask.ts index 041075f2925..2bd2912b934 100644 --- a/plugins/canvasMask/src/Options/Classes/FontTextMask.ts +++ b/plugins/canvasMask/src/Options/Classes/FontTextMask.ts @@ -4,13 +4,16 @@ import type { IFontTextMask } from "../Interfaces/IFontTextMask.js"; export class FontTextMask implements IFontTextMask, IOptionLoader { family: string; size: string | number; - style?: string; - variant?: string; - weight?: string | number; + style: string; + variant: string; + weight: string; constructor() { this.family = "sans-serif"; this.size = 100; + this.style = ""; + this.variant = ""; + this.weight = ""; } load(data?: RecursivePartial): void { diff --git a/plugins/canvasMask/src/Options/Classes/TextMask.ts b/plugins/canvasMask/src/Options/Classes/TextMask.ts index cea8aaffa62..1e3d93fa034 100644 --- a/plugins/canvasMask/src/Options/Classes/TextMask.ts +++ b/plugins/canvasMask/src/Options/Classes/TextMask.ts @@ -5,12 +5,14 @@ import { TextMaskLine } from "./TextMaskLine.js"; export class TextMask implements ITextMask, IOptionLoader { color; + fill; font; lines; text; constructor() { this.color = "#000000"; + this.fill = true; this.font = new FontTextMask(); this.lines = new TextMaskLine(); this.text = ""; @@ -25,6 +27,10 @@ export class TextMask implements ITextMask, IOptionLoader { this.color = data.color; } + if (data.fill !== undefined) { + this.fill = data.fill; + } + this.font.load(data.font); this.lines.load(data.lines); diff --git a/plugins/canvasMask/src/Options/Interfaces/IFontTextMask.ts b/plugins/canvasMask/src/Options/Interfaces/IFontTextMask.ts index 378c98db7bd..c2dcaf94a7a 100644 --- a/plugins/canvasMask/src/Options/Interfaces/IFontTextMask.ts +++ b/plugins/canvasMask/src/Options/Interfaces/IFontTextMask.ts @@ -1,7 +1,3 @@ -export interface IFontTextMask { - family: string; - size: number | string; - style?: string; - variant?: string; - weight?: number | string; -} +import type { ITextDataFontOptions } from "@tsparticles/canvas-utils"; + +export type IFontTextMask = ITextDataFontOptions; diff --git a/plugins/canvasMask/src/Options/Interfaces/ITextMask.ts b/plugins/canvasMask/src/Options/Interfaces/ITextMask.ts index b81541bbb39..1ee04cff444 100644 --- a/plugins/canvasMask/src/Options/Interfaces/ITextMask.ts +++ b/plugins/canvasMask/src/Options/Interfaces/ITextMask.ts @@ -1,9 +1,9 @@ import type { IFontTextMask } from "./IFontTextMask.js"; +import type { ITextDataOptions } from "@tsparticles/canvas-utils"; import type { ITextMaskLine } from "./ITextMaskLine.js"; -export interface ITextMask { - color: string; +export interface ITextMask extends ITextDataOptions { + fill: boolean; font: IFontTextMask; lines: ITextMaskLine; - text: string; } diff --git a/plugins/canvasMask/src/Options/Interfaces/ITextMaskLine.ts b/plugins/canvasMask/src/Options/Interfaces/ITextMaskLine.ts index 54da63d5d8b..921531f0458 100644 --- a/plugins/canvasMask/src/Options/Interfaces/ITextMaskLine.ts +++ b/plugins/canvasMask/src/Options/Interfaces/ITextMaskLine.ts @@ -1,4 +1,3 @@ -export interface ITextMaskLine { - separator: string; - spacing: number; -} +import type { ITextDataLinesOptions } from "@tsparticles/canvas-utils"; + +export type ITextMaskLine = ITextDataLinesOptions; diff --git a/plugins/canvasMask/src/utils.ts b/plugins/canvasMask/src/utils.ts index aaa20f13812..95b72eb8571 100644 --- a/plugins/canvasMask/src/utils.ts +++ b/plugins/canvasMask/src/utils.ts @@ -1,36 +1,15 @@ import { type Container, type ICoordinates, - type IDimension, type IParticlesOptions, type IRgba, type RecursivePartial, - defaultAlpha, getRandom, half, - isNumber, - originPoint, percentDenominator, - safeDocument, } from "@tsparticles/engine"; +import type { CanvasPixelData } from "@tsparticles/canvas-utils"; import type { ICanvasMaskOverride } from "./Options/Interfaces/ICanvasMaskOverride.js"; -import type { TextMask } from "./Options/Classes/TextMask.js"; - -const defaultWidth = 0, - defaultRgb = 0; - -export interface CanvasPixelData { - height: number; - pixels: IRgba[][]; - width: number; -} - -interface TextLineData { - height: number; - measure: TextMetrics; - text: string; - width: number; -} /** * @param container - @@ -110,164 +89,6 @@ export function addParticlesFromCanvasPixels( } } -/** - * @param ctx - - * @param size - - * @param offset - - * @param clear - - * @returns the canvas pixel data - */ -export function getCanvasImageData( - ctx: CanvasRenderingContext2D, - size: IDimension, - offset: number, - clear = true, -): CanvasPixelData { - const imageData = ctx.getImageData(originPoint.x, originPoint.y, size.width, size.height).data; - - if (clear) { - ctx.clearRect(originPoint.x, originPoint.y, size.width, size.height); - } - - const pixels: IRgba[][] = []; - - for (let i = 0; i < imageData.length; i += offset) { - const idx = i / offset, - pos = { - x: idx % size.width, - y: Math.floor(idx / size.width), - }; - - pixels[pos.y] ??= []; - - const indexesOffset = { - r: 0, - g: 1, - b: 2, - a: 3, - }, - alphaFactor = 255, - row = pixels[pos.y]; - - if (!row) { - continue; - } - - row[pos.x] = { - r: imageData[i + indexesOffset.r] ?? defaultRgb, - g: imageData[i + indexesOffset.g] ?? defaultRgb, - b: imageData[i + indexesOffset.b] ?? defaultRgb, - a: (imageData[i + indexesOffset.a] ?? defaultAlpha) / alphaFactor, - }; - } - - return { - pixels, - width: Math.min(...pixels.map(row => row.length)), - height: pixels.length, - }; -} - -/** - * @param src - - * @param offset - - * @returns the canvas pixel data - */ -export function getImageData(src: string, offset: number): Promise { - const image = new Image(); - - image.crossOrigin = "Anonymous"; - - const p = new Promise((resolve, reject) => { - image.onerror = reject; - image.onload = (): void => { - const canvas = safeDocument().createElement("canvas"); - - canvas.width = image.width; - canvas.height = image.height; - - const context = canvas.getContext("2d"); - - if (!context) { - reject(new Error("Could not get canvas context")); - return; - } - - context.drawImage( - image, - originPoint.x, - originPoint.y, - image.width, - image.height, - originPoint.x, - originPoint.y, - canvas.width, - canvas.height, - ); - - resolve(getCanvasImageData(context, canvas, offset)); - }; - }); - - image.src = src; - - return p; -} - -/** - * @param textOptions - - * @param offset - - * @returns the canvas pixel data - */ -export function getTextData(textOptions: TextMask, offset: number): CanvasPixelData | undefined { - const canvas = safeDocument().createElement("canvas"), - context = canvas.getContext("2d"), - { font, text, lines: linesOptions, color } = textOptions; - - if (!text || !context) { - return; - } - - const lines = text.split(linesOptions.separator), - fontSize = isNumber(font.size) ? `${font.size.toString()}px` : font.size, - linesData: TextLineData[] = []; - - let maxWidth = 0, - totalHeight = 0; - - for (const line of lines) { - context.font = `${font.style ?? ""} ${font.variant ?? ""} ${font.weight?.toString() ?? ""} ${fontSize} ${font.family}`; - - const measure = context.measureText(line), - lineData = { - measure, - text: line, - height: measure.actualBoundingBoxAscent + measure.actualBoundingBoxDescent, - width: measure.width, - }; - - maxWidth = Math.max(maxWidth || defaultWidth, lineData.width); - totalHeight += lineData.height + linesOptions.spacing; - - linesData.push(lineData); - } - - canvas.width = maxWidth; - canvas.height = totalHeight; - - let currentHeight = 0; - - for (const line of linesData) { - context.font = `${font.style ?? ""} ${font.variant ?? ""} ${font.weight?.toString() ?? ""} ${fontSize} ${font.family}`; - context.fillStyle = color; - context.fillText(line.text, originPoint.x, currentHeight + line.measure.actualBoundingBoxAscent); - - currentHeight += line.height + linesOptions.spacing; - } - - return getCanvasImageData(context, canvas, offset); -} - /** * @param array - * @returns the shuffled array diff --git a/plugins/colors/hex/CHANGELOG.md b/plugins/colors/hex/CHANGELOG.md index 84d589391e7..45d25f15377 100644 --- a/plugins/colors/hex/CHANGELOG.md +++ b/plugins/colors/hex/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-hex-color + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-hex-color + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-hex-color + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-hex-color diff --git a/plugins/colors/hex/package.dist.json b/plugins/colors/hex/package.dist.json index ee01d69e568..1fada6c16eb 100644 --- a/plugins/colors/hex/package.dist.json +++ b/plugins/colors/hex/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-hex-color", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles hex color plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/colors/hex/package.json b/plugins/colors/hex/package.json index 360e5094a15..d67f06dbc62 100644 --- a/plugins/colors/hex/package.json +++ b/plugins/colors/hex/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-hex-color", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles hex color plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/colors/hex/src/HexColorManager.ts b/plugins/colors/hex/src/HexColorManager.ts index 8a930c866d4..85f5459dde8 100644 --- a/plugins/colors/hex/src/HexColorManager.ts +++ b/plugins/colors/hex/src/HexColorManager.ts @@ -22,12 +22,6 @@ const shorthandHexRegex = /^#?([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i, * Implements the IColorManager interface for handling hex color values. */ export class HexColorManager implements IColorManager { - readonly key; - - constructor() { - this.key = "hex"; - } - accepts(input: string): boolean { return input.startsWith("#"); } @@ -50,16 +44,16 @@ export class HexColorManager implements IColorManager { } const hexFixed = hexColor.replace(shorthandHexRegex, (_, r: string, g: string, b: string, a?: string) => { - return r + r + g + g + b + b + (a !== undefined ? a + a : ""); + return r + r + g + g + b + b + (a === undefined ? "" : a + a); }), result = hexRegex.exec(hexFixed); return result ? { - a: result[RgbIndexes.a] ? parseInt(result[RgbIndexes.a], hexRadix) / alphaFactor : defaultAlpha, - b: parseInt(result[RgbIndexes.b] ?? "0", hexRadix), - g: parseInt(result[RgbIndexes.g] ?? "0", hexRadix), - r: parseInt(result[RgbIndexes.r] ?? "0", hexRadix), + a: result[RgbIndexes.a] ? Number.parseInt(result[RgbIndexes.a], hexRadix) / alphaFactor : defaultAlpha, + b: Number.parseInt(result[RgbIndexes.b] ?? "0", hexRadix), + g: Number.parseInt(result[RgbIndexes.g] ?? "0", hexRadix), + r: Number.parseInt(result[RgbIndexes.r] ?? "0", hexRadix), } : undefined; } diff --git a/plugins/colors/hex/src/index.ts b/plugins/colors/hex/src/index.ts index 788cc4666eb..d1a4d25c820 100644 --- a/plugins/colors/hex/src/index.ts +++ b/plugins/colors/hex/src/index.ts @@ -12,6 +12,6 @@ export async function loadHexColorPlugin(engine: Engine): Promise { await engine.register(async e => { const { HexColorManager } = await import("./HexColorManager.js"); - e.addColorManager(new HexColorManager()); + e.addColorManager("hex", new HexColorManager()); }); } diff --git a/plugins/colors/hsl/CHANGELOG.md b/plugins/colors/hsl/CHANGELOG.md index 2b0e9361435..09d0bfae8e9 100644 --- a/plugins/colors/hsl/CHANGELOG.md +++ b/plugins/colors/hsl/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-hsl-color + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-hsl-color + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-hsl-color + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-hsl-color diff --git a/plugins/colors/hsl/package.dist.json b/plugins/colors/hsl/package.dist.json index 4817bda91fc..5149e29efdb 100644 --- a/plugins/colors/hsl/package.dist.json +++ b/plugins/colors/hsl/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-hsl-color", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles HSL color plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/colors/hsl/package.json b/plugins/colors/hsl/package.json index 99c3cf84291..f81914fc0a3 100644 --- a/plugins/colors/hsl/package.json +++ b/plugins/colors/hsl/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-hsl-color", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles HSL color plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/colors/hsl/src/HslColorManager.ts b/plugins/colors/hsl/src/HslColorManager.ts index f69b6bded75..5cb20dc1384 100644 --- a/plugins/colors/hsl/src/HslColorManager.ts +++ b/plugins/colors/hsl/src/HslColorManager.ts @@ -26,12 +26,6 @@ const hslRegex = /hsla?\(\s*(\d+)\s*[\s,]\s*(\d+)%\s*[\s,]\s*(\d+)%\s*([\s,]\s*( /** */ export class HslColorManager implements IColorManager { - readonly key; - - constructor() { - this.key = "hsl"; - } - accepts(input: string): boolean { return input.startsWith("hsl"); } @@ -75,9 +69,9 @@ export class HslColorManager implements IColorManager { return result ? hslaToRgba({ a: result.length > minLength ? parseAlpha(result[HslIndexes.a]) : defaultAlpha, - h: parseInt(result[HslIndexes.h] ?? "0", radix), - l: parseInt(result[HslIndexes.l] ?? "0", radix), - s: parseInt(result[HslIndexes.s] ?? "0", radix), + h: Number.parseInt(result[HslIndexes.h] ?? "0", radix), + l: Number.parseInt(result[HslIndexes.l] ?? "0", radix), + s: Number.parseInt(result[HslIndexes.s] ?? "0", radix), }) : undefined; } diff --git a/plugins/colors/hsl/src/index.ts b/plugins/colors/hsl/src/index.ts index f4625e7d78a..0edd1605f81 100644 --- a/plugins/colors/hsl/src/index.ts +++ b/plugins/colors/hsl/src/index.ts @@ -12,6 +12,6 @@ export async function loadHslColorPlugin(engine: Engine): Promise { await engine.register(async e => { const { HslColorManager } = await import("./HslColorManager.js"); - e.addColorManager(new HslColorManager()); + e.addColorManager("hsl", new HslColorManager()); }); } diff --git a/plugins/colors/hsv/CHANGELOG.md b/plugins/colors/hsv/CHANGELOG.md index 787aff24adf..08b0fd22a4c 100644 --- a/plugins/colors/hsv/CHANGELOG.md +++ b/plugins/colors/hsv/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-hsv-color + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-hsv-color + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-hsv-color + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-hsv-color diff --git a/plugins/colors/hsv/package.dist.json b/plugins/colors/hsv/package.dist.json index 2093d57f5c2..4cd6464f534 100644 --- a/plugins/colors/hsv/package.dist.json +++ b/plugins/colors/hsv/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-hsv-color", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles HSV color plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/colors/hsv/package.json b/plugins/colors/hsv/package.json index cc57a49604a..fbdc2407ae0 100644 --- a/plugins/colors/hsv/package.json +++ b/plugins/colors/hsv/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-hsv-color", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles HSV color plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/colors/hsv/src/HsvColorManager.ts b/plugins/colors/hsv/src/HsvColorManager.ts index 5b99496e466..f043671da8a 100644 --- a/plugins/colors/hsv/src/HsvColorManager.ts +++ b/plugins/colors/hsv/src/HsvColorManager.ts @@ -16,12 +16,6 @@ import { hsvToRgb, hsvaToRgba } from "./utils.js"; const hsvRegex = /hsva?\(\s*(\d+)°\s*[\s,]\s*(\d+)%\s*[\s,]\s*(\d+)%\s*([\s,]\s*(0|1|0?\.\d+|(\d{1,3})%)\s*)?\)/i; export class HsvColorManager implements IColorManager { - readonly key; - - constructor() { - this.key = "hsv"; - } - accepts(input: string): boolean { return input.startsWith("hsv"); } diff --git a/plugins/colors/hsv/src/index.ts b/plugins/colors/hsv/src/index.ts index 8206063a9f9..bb5287df0fa 100644 --- a/plugins/colors/hsv/src/index.ts +++ b/plugins/colors/hsv/src/index.ts @@ -12,6 +12,6 @@ export async function loadHsvColorPlugin(engine: Engine): Promise { await engine.register(async e => { const { HsvColorManager } = await import("./HsvColorManager.js"); - e.addColorManager(new HsvColorManager()); + e.addColorManager("hsv", new HsvColorManager()); }); } diff --git a/plugins/colors/hwb/CHANGELOG.md b/plugins/colors/hwb/CHANGELOG.md index 4cef987836d..b6f86cb67cf 100644 --- a/plugins/colors/hwb/CHANGELOG.md +++ b/plugins/colors/hwb/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-hwb-color + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-hwb-color + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-hwb-color + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-hwb-color diff --git a/plugins/colors/hwb/package.dist.json b/plugins/colors/hwb/package.dist.json index 141afa57988..dafa8ba2bdc 100644 --- a/plugins/colors/hwb/package.dist.json +++ b/plugins/colors/hwb/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-hwb-color", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles HWB color plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/colors/hwb/package.json b/plugins/colors/hwb/package.json index a809e8994fe..32a7ae2d9e7 100644 --- a/plugins/colors/hwb/package.json +++ b/plugins/colors/hwb/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-hwb-color", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles HWB color plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/colors/hwb/src/HwbColorManager.ts b/plugins/colors/hwb/src/HwbColorManager.ts index cca71d2471b..d9416542190 100644 --- a/plugins/colors/hwb/src/HwbColorManager.ts +++ b/plugins/colors/hwb/src/HwbColorManager.ts @@ -89,12 +89,6 @@ function hwbaToRgba(hwba: IHwba): IRgba { } export class HwbColorManager implements IColorManager { - readonly key; - - constructor() { - this.key = "hwb"; - } - accepts(input: string): boolean { return input.startsWith("hwb"); } diff --git a/plugins/colors/hwb/src/index.ts b/plugins/colors/hwb/src/index.ts index 2d22476a352..5e60519a54d 100644 --- a/plugins/colors/hwb/src/index.ts +++ b/plugins/colors/hwb/src/index.ts @@ -12,6 +12,6 @@ export async function loadHwbColorPlugin(engine: Engine): Promise { await engine.register(async e => { const { HwbColorManager } = await import("./HwbColorManager.js"); - e.addColorManager(new HwbColorManager()); + e.addColorManager("hwb", new HwbColorManager()); }); } diff --git a/plugins/colors/lab/CHANGELOG.md b/plugins/colors/lab/CHANGELOG.md index 3f62350778f..90a72a53114 100644 --- a/plugins/colors/lab/CHANGELOG.md +++ b/plugins/colors/lab/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-lab-color + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-lab-color + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-lab-color + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-lab-color diff --git a/plugins/colors/lab/package.dist.json b/plugins/colors/lab/package.dist.json index 766f5a63f48..d00fb10563f 100644 --- a/plugins/colors/lab/package.dist.json +++ b/plugins/colors/lab/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-lab-color", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles LAB color plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/colors/lab/package.json b/plugins/colors/lab/package.json index 2819823dd26..d50610e6ae5 100644 --- a/plugins/colors/lab/package.json +++ b/plugins/colors/lab/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-lab-color", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles LAB color plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/colors/lab/src/LabColorManager.ts b/plugins/colors/lab/src/LabColorManager.ts index 69c1ab63f83..f9ea9edf621 100644 --- a/plugins/colors/lab/src/LabColorManager.ts +++ b/plugins/colors/lab/src/LabColorManager.ts @@ -16,12 +16,6 @@ import { labToRgb, labaToRgba } from "./utils.js"; const labRegex = /lab\(\s*(\d+(\.\d+)?)%\s+(\d+(\.\d+)?)\s+(\d+(\.\d+)?)(?:\s*\/\s*(0|1|0?\.\d+|\d{1,3}%))?\s*\)/i; export class LabColorManager implements IColorManager { - readonly key; - - constructor() { - this.key = "lab"; - } - accepts(input: string): boolean { return input.startsWith("lab"); } diff --git a/plugins/colors/lab/src/index.ts b/plugins/colors/lab/src/index.ts index 37b52454c4d..9eccef13598 100644 --- a/plugins/colors/lab/src/index.ts +++ b/plugins/colors/lab/src/index.ts @@ -12,6 +12,6 @@ export async function loadLabColorPlugin(engine: Engine): Promise { await engine.register(async e => { const { LabColorManager } = await import("./LabColorManager.js"); - e.addColorManager(new LabColorManager()); + e.addColorManager("lab", new LabColorManager()); }); } diff --git a/plugins/colors/lch/CHANGELOG.md b/plugins/colors/lch/CHANGELOG.md index 8130505070a..dc1cf493de6 100644 --- a/plugins/colors/lch/CHANGELOG.md +++ b/plugins/colors/lch/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-lch-color + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-lch-color + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-lch-color + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-lch-color diff --git a/plugins/colors/lch/package.dist.json b/plugins/colors/lch/package.dist.json index 482164a0ce3..3aad0a15324 100644 --- a/plugins/colors/lch/package.dist.json +++ b/plugins/colors/lch/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-lch-color", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles LCH color plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/colors/lch/package.json b/plugins/colors/lch/package.json index ad34324c60e..8b108932a6d 100644 --- a/plugins/colors/lch/package.json +++ b/plugins/colors/lch/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-lch-color", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles LCH color plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/colors/lch/src/LchColorManager.ts b/plugins/colors/lch/src/LchColorManager.ts index 33af64b1ad3..e87fa4f5faa 100644 --- a/plugins/colors/lch/src/LchColorManager.ts +++ b/plugins/colors/lch/src/LchColorManager.ts @@ -16,12 +16,6 @@ import { lchToRgb, lchaToRgba } from "./utils.js"; const lchRegex = /lch\(\s*(\d+(\.\d+)?)%\s+(\d+(\.\d+)?)\s+(\d+(\.\d+)?)(?:\s*\/\s*(0|1|0?\.\d+|\d{1,3}%))?\s*\)/i; export class LchColorManager implements IColorManager { - readonly key; - - constructor() { - this.key = "lch"; - } - accepts(input: string): boolean { return input.startsWith("lch"); } diff --git a/plugins/colors/lch/src/index.ts b/plugins/colors/lch/src/index.ts index 3f6816809a3..f71fd4715e2 100644 --- a/plugins/colors/lch/src/index.ts +++ b/plugins/colors/lch/src/index.ts @@ -12,6 +12,6 @@ export async function loadLchColorPlugin(engine: Engine): Promise { await engine.register(async e => { const { LchColorManager } = await import("./LchColorManager.js"); - e.addColorManager(new LchColorManager()); + e.addColorManager("lch", new LchColorManager()); }); } diff --git a/plugins/colors/named/CHANGELOG.md b/plugins/colors/named/CHANGELOG.md index d57d25073d5..af4ae151061 100644 --- a/plugins/colors/named/CHANGELOG.md +++ b/plugins/colors/named/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-named-color + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-named-color + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-named-color + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-named-color diff --git a/plugins/colors/named/package.dist.json b/plugins/colors/named/package.dist.json index 61c4ea2b39f..425d4f2e5d0 100644 --- a/plugins/colors/named/package.dist.json +++ b/plugins/colors/named/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-named-color", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles named color plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/colors/named/package.json b/plugins/colors/named/package.json index 6f2c159931c..a9dccd14272 100644 --- a/plugins/colors/named/package.json +++ b/plugins/colors/named/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-named-color", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles named color plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/colors/named/src/NamedColorManager.ts b/plugins/colors/named/src/NamedColorManager.ts index 3f782ecb235..7b5cc71e19c 100644 --- a/plugins/colors/named/src/NamedColorManager.ts +++ b/plugins/colors/named/src/NamedColorManager.ts @@ -159,12 +159,6 @@ const namedColors = new Map([ ]); export class NamedColorManager implements IColorManager { - readonly key; - - constructor() { - this.key = "named"; - } - accepts(input: string): boolean { return namedColors.has(input.toLowerCase()); } diff --git a/plugins/colors/named/src/index.ts b/plugins/colors/named/src/index.ts index b12bd13cc15..1af1c7da763 100644 --- a/plugins/colors/named/src/index.ts +++ b/plugins/colors/named/src/index.ts @@ -12,6 +12,6 @@ export async function loadNamedColorPlugin(engine: Engine): Promise { await engine.register(async e => { const { NamedColorManager } = await import("./NamedColorManager.js"); - e.addColorManager(new NamedColorManager()); + e.addColorManager("named", new NamedColorManager()); }); } diff --git a/plugins/colors/oklab/CHANGELOG.md b/plugins/colors/oklab/CHANGELOG.md index f78bc271713..b56e5a65a05 100644 --- a/plugins/colors/oklab/CHANGELOG.md +++ b/plugins/colors/oklab/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-oklab-color + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-oklab-color + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-oklab-color + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-oklab-color diff --git a/plugins/colors/oklab/package.dist.json b/plugins/colors/oklab/package.dist.json index ce6e7d991a5..feea7ded2d3 100644 --- a/plugins/colors/oklab/package.dist.json +++ b/plugins/colors/oklab/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-oklab-color", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles OKLAB color plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/colors/oklab/package.json b/plugins/colors/oklab/package.json index f12cde16d6d..90d018a1c4c 100644 --- a/plugins/colors/oklab/package.json +++ b/plugins/colors/oklab/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-oklab-color", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles OKLAB color plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/colors/oklab/src/OklabColorManager.ts b/plugins/colors/oklab/src/OklabColorManager.ts index 4e0b248ad91..d2d3c52f7c0 100644 --- a/plugins/colors/oklab/src/OklabColorManager.ts +++ b/plugins/colors/oklab/src/OklabColorManager.ts @@ -17,12 +17,6 @@ const oklabRegex = /oklab\(\s*(\d+(\.\d+)?)%\s+(-?\d+(\.\d+)?)\s+(-?\d+(\.\d+)?)(?:\s*\/\s*(0|1|0?\.\d+|\d{1,3}%))?\s*\)/i; export class OklabColorManager implements IColorManager { - readonly key; - - constructor() { - this.key = "oklab"; - } - accepts(input: string): boolean { return input.startsWith("oklab"); } diff --git a/plugins/colors/oklab/src/index.ts b/plugins/colors/oklab/src/index.ts index f19218688e5..14ef6c7d69d 100644 --- a/plugins/colors/oklab/src/index.ts +++ b/plugins/colors/oklab/src/index.ts @@ -12,6 +12,6 @@ export async function loadOklabColorPlugin(engine: Engine): Promise { await engine.register(async e => { const { OklabColorManager } = await import("./OklabColorManager.js"); - e.addColorManager(new OklabColorManager()); + e.addColorManager("oklab", new OklabColorManager()); }); } diff --git a/plugins/colors/oklch/CHANGELOG.md b/plugins/colors/oklch/CHANGELOG.md index ceff2d6fc6b..43bca7f73dd 100644 --- a/plugins/colors/oklch/CHANGELOG.md +++ b/plugins/colors/oklch/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-oklch-color + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-oklch-color + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-oklch-color + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-oklch-color diff --git a/plugins/colors/oklch/package.dist.json b/plugins/colors/oklch/package.dist.json index 42fcadfa430..97c600b80f8 100644 --- a/plugins/colors/oklch/package.dist.json +++ b/plugins/colors/oklch/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-oklch-color", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles OKLCH color plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/colors/oklch/package.json b/plugins/colors/oklch/package.json index d424feb970d..63b099d7165 100644 --- a/plugins/colors/oklch/package.json +++ b/plugins/colors/oklch/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-oklch-color", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles OKLCH color plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/colors/oklch/src/OklchColorManager.ts b/plugins/colors/oklch/src/OklchColorManager.ts index f51399ca766..9b854a60c29 100644 --- a/plugins/colors/oklch/src/OklchColorManager.ts +++ b/plugins/colors/oklch/src/OklchColorManager.ts @@ -17,12 +17,6 @@ const oklchRegex = /oklch\(\s*(\d+(\.\d+)?)%\s+(\d+(\.\d+)?)\s+(\d+(\.\d+)?)(°)?(?:\s*\/\s*(0|1|0?\.\d+|\d{1,3}%))?\s*\)/i; export class OklchColorManager implements IColorManager { - readonly key; - - constructor() { - this.key = "oklch"; - } - accepts(input: string): boolean { return input.startsWith("oklch"); } diff --git a/plugins/colors/oklch/src/index.ts b/plugins/colors/oklch/src/index.ts index e1672d71d04..9556f3c8b7a 100644 --- a/plugins/colors/oklch/src/index.ts +++ b/plugins/colors/oklch/src/index.ts @@ -12,6 +12,6 @@ export async function loadOklchColorPlugin(engine: Engine): Promise { await engine.register(async e => { const { OklchColorManager } = await import("./OklchColorManager.js"); - e.addColorManager(new OklchColorManager()); + e.addColorManager("oklch", new OklchColorManager()); }); } diff --git a/plugins/colors/rgb/CHANGELOG.md b/plugins/colors/rgb/CHANGELOG.md index b84eb143598..98fcf6cd491 100644 --- a/plugins/colors/rgb/CHANGELOG.md +++ b/plugins/colors/rgb/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-rgb-color + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-rgb-color + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-rgb-color + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-rgb-color diff --git a/plugins/colors/rgb/package.dist.json b/plugins/colors/rgb/package.dist.json index 9a719898f38..48a05c3783d 100644 --- a/plugins/colors/rgb/package.dist.json +++ b/plugins/colors/rgb/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-rgb-color", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles RGB color plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/colors/rgb/package.json b/plugins/colors/rgb/package.json index 7cb38a18d89..8f6c1d592ce 100644 --- a/plugins/colors/rgb/package.json +++ b/plugins/colors/rgb/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-rgb-color", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles RGB color plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/colors/rgb/src/RgbColorManager.ts b/plugins/colors/rgb/src/RgbColorManager.ts index a488a20c56e..fc2c6fc9a93 100644 --- a/plugins/colors/rgb/src/RgbColorManager.ts +++ b/plugins/colors/rgb/src/RgbColorManager.ts @@ -23,12 +23,6 @@ const rgbRegex = /** */ export class RgbColorManager implements IColorManager { - readonly key; - - constructor() { - this.key = "rgb"; - } - accepts(input: string): boolean { return input.startsWith("rgb"); } diff --git a/plugins/colors/rgb/src/index.ts b/plugins/colors/rgb/src/index.ts index a2a2df0f57f..e225455b802 100644 --- a/plugins/colors/rgb/src/index.ts +++ b/plugins/colors/rgb/src/index.ts @@ -12,6 +12,6 @@ export async function loadRgbColorPlugin(engine: Engine): Promise { await engine.register(async e => { const { RgbColorManager } = await import("./RgbColorManager.js"); - e.addColorManager(new RgbColorManager()); + e.addColorManager("rgb", new RgbColorManager()); }); } diff --git a/plugins/easings/back/CHANGELOG.md b/plugins/easings/back/CHANGELOG.md index df6b8a888cd..c01f4f7ce15 100644 --- a/plugins/easings/back/CHANGELOG.md +++ b/plugins/easings/back/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-back + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-back + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-back + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-easing-back diff --git a/plugins/easings/back/package.dist.json b/plugins/easings/back/package.dist.json index aadcb530d36..39662e82d7d 100644 --- a/plugins/easings/back/package.dist.json +++ b/plugins/easings/back/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-back", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing back plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/easings/back/package.json b/plugins/easings/back/package.json index 63eefe645ff..28d32fdd7c1 100644 --- a/plugins/easings/back/package.json +++ b/plugins/easings/back/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-back", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing back plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/easings/bounce/CHANGELOG.md b/plugins/easings/bounce/CHANGELOG.md index d77d22dcb47..9ab340f61de 100644 --- a/plugins/easings/bounce/CHANGELOG.md +++ b/plugins/easings/bounce/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-bounce + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-bounce + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-bounce + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-easing-bounce diff --git a/plugins/easings/bounce/package.dist.json b/plugins/easings/bounce/package.dist.json index c483533bc92..fbd53f3ea48 100644 --- a/plugins/easings/bounce/package.dist.json +++ b/plugins/easings/bounce/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-bounce", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing bounce plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/easings/bounce/package.json b/plugins/easings/bounce/package.json index b533fd3eabb..a93339b4025 100644 --- a/plugins/easings/bounce/package.json +++ b/plugins/easings/bounce/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-bounce", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing bounce plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/easings/bounce/src/easingsFunctions.ts b/plugins/easings/bounce/src/easingsFunctions.ts index f0b5e7ace77..b5eb15897fc 100644 --- a/plugins/easings/bounce/src/easingsFunctions.ts +++ b/plugins/easings/bounce/src/easingsFunctions.ts @@ -3,8 +3,8 @@ import { type EasingFunction, EasingType, type EasingTypeAlt } from "@tsparticle const easingsFunctions = new Map(), bounceOut = (t: number): number => { - const n1 = 7.5625; - const d1 = 2.75; + const n1 = 7.5625, + d1 = 2.75; if (t < 1 / d1) { return n1 * t * t; diff --git a/plugins/easings/circ/CHANGELOG.md b/plugins/easings/circ/CHANGELOG.md index 5c040ef4c80..f4392448ce5 100644 --- a/plugins/easings/circ/CHANGELOG.md +++ b/plugins/easings/circ/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-circ + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-circ + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-circ + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-easing-circ diff --git a/plugins/easings/circ/package.dist.json b/plugins/easings/circ/package.dist.json index dd778a0a9e7..15b3ab21403 100644 --- a/plugins/easings/circ/package.dist.json +++ b/plugins/easings/circ/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-circ", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing circ plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/easings/circ/package.json b/plugins/easings/circ/package.json index eb997d74073..331f775a97c 100644 --- a/plugins/easings/circ/package.json +++ b/plugins/easings/circ/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-circ", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing circ plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/easings/cubic/CHANGELOG.md b/plugins/easings/cubic/CHANGELOG.md index 34bba7333b0..3bd03fe7533 100644 --- a/plugins/easings/cubic/CHANGELOG.md +++ b/plugins/easings/cubic/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-cubic + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-cubic + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-cubic + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-easing-cubic diff --git a/plugins/easings/cubic/package.dist.json b/plugins/easings/cubic/package.dist.json index 112e46baa94..20be19270fb 100644 --- a/plugins/easings/cubic/package.dist.json +++ b/plugins/easings/cubic/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-cubic", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing cubic plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/easings/cubic/package.json b/plugins/easings/cubic/package.json index 16ae56b8faf..464f0022083 100644 --- a/plugins/easings/cubic/package.json +++ b/plugins/easings/cubic/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-cubic", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing cubic plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/easings/elastic/CHANGELOG.md b/plugins/easings/elastic/CHANGELOG.md index 7c56c778be9..95727a60352 100644 --- a/plugins/easings/elastic/CHANGELOG.md +++ b/plugins/easings/elastic/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-elastic + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-elastic + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-elastic + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-easing-elastic diff --git a/plugins/easings/elastic/package.dist.json b/plugins/easings/elastic/package.dist.json index b10f991ec8f..7b6e70b13f7 100644 --- a/plugins/easings/elastic/package.dist.json +++ b/plugins/easings/elastic/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-elastic", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing elastic plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/easings/elastic/package.json b/plugins/easings/elastic/package.json index df250f9c669..0f331fbbe11 100644 --- a/plugins/easings/elastic/package.json +++ b/plugins/easings/elastic/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-elastic", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing elastic plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/easings/expo/CHANGELOG.md b/plugins/easings/expo/CHANGELOG.md index 670e549f584..4869ce2e44c 100644 --- a/plugins/easings/expo/CHANGELOG.md +++ b/plugins/easings/expo/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-expo + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-expo + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-expo + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-easing-expo diff --git a/plugins/easings/expo/package.dist.json b/plugins/easings/expo/package.dist.json index db2d7c4dc9b..9e0916d3a62 100644 --- a/plugins/easings/expo/package.dist.json +++ b/plugins/easings/expo/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-expo", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing expo plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/easings/expo/package.json b/plugins/easings/expo/package.json index f10e7352b7c..a0d0cf88e69 100644 --- a/plugins/easings/expo/package.json +++ b/plugins/easings/expo/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-expo", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing expo plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/easings/gaussian/CHANGELOG.md b/plugins/easings/gaussian/CHANGELOG.md index 8e3cd8a1940..28ebd47b635 100644 --- a/plugins/easings/gaussian/CHANGELOG.md +++ b/plugins/easings/gaussian/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-gaussian + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-gaussian + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-gaussian + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-easing-gaussian diff --git a/plugins/easings/gaussian/package.dist.json b/plugins/easings/gaussian/package.dist.json index 520aac96044..0038b42243f 100644 --- a/plugins/easings/gaussian/package.dist.json +++ b/plugins/easings/gaussian/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-gaussian", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing gaussian plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/easings/gaussian/package.json b/plugins/easings/gaussian/package.json index 185af2cf2d9..c51ef58260e 100644 --- a/plugins/easings/gaussian/package.json +++ b/plugins/easings/gaussian/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-gaussian", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing gaussian plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/easings/linear/CHANGELOG.md b/plugins/easings/linear/CHANGELOG.md index 3baa0aacd05..8401fe809e0 100644 --- a/plugins/easings/linear/CHANGELOG.md +++ b/plugins/easings/linear/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-linear + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-linear + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-linear + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-easing-linear diff --git a/plugins/easings/linear/package.dist.json b/plugins/easings/linear/package.dist.json index 20e2af7ab44..41a20368fdd 100644 --- a/plugins/easings/linear/package.dist.json +++ b/plugins/easings/linear/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-linear", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing linear plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/easings/linear/package.json b/plugins/easings/linear/package.json index e944b46b3aa..ff8e3a16ab8 100644 --- a/plugins/easings/linear/package.json +++ b/plugins/easings/linear/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-linear", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing linear plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/easings/quad/CHANGELOG.md b/plugins/easings/quad/CHANGELOG.md index 016686e6f15..020f9bb32a4 100644 --- a/plugins/easings/quad/CHANGELOG.md +++ b/plugins/easings/quad/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-quad + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-quad + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-quad + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-easing-quad diff --git a/plugins/easings/quad/package.dist.json b/plugins/easings/quad/package.dist.json index fccac8167df..1954b98b080 100644 --- a/plugins/easings/quad/package.dist.json +++ b/plugins/easings/quad/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-quad", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing quad plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/easings/quad/package.json b/plugins/easings/quad/package.json index 53f8fb71d26..2de0530c5a1 100644 --- a/plugins/easings/quad/package.json +++ b/plugins/easings/quad/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-quad", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing quad plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/easings/quart/CHANGELOG.md b/plugins/easings/quart/CHANGELOG.md index 0564125c5e3..79b70637b04 100644 --- a/plugins/easings/quart/CHANGELOG.md +++ b/plugins/easings/quart/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-quart + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-quart + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-quart + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-easing-quart diff --git a/plugins/easings/quart/package.dist.json b/plugins/easings/quart/package.dist.json index 5c04fa85a80..b9ac8fb68b7 100644 --- a/plugins/easings/quart/package.dist.json +++ b/plugins/easings/quart/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-quart", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing quart plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/easings/quart/package.json b/plugins/easings/quart/package.json index 232c2aee406..c6f29f13c84 100644 --- a/plugins/easings/quart/package.json +++ b/plugins/easings/quart/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-quart", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing quart plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/easings/quint/CHANGELOG.md b/plugins/easings/quint/CHANGELOG.md index 971fc965336..1297ca0a743 100644 --- a/plugins/easings/quint/CHANGELOG.md +++ b/plugins/easings/quint/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-quint + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-quint + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-quint + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-easing-quint diff --git a/plugins/easings/quint/package.dist.json b/plugins/easings/quint/package.dist.json index fe6c97db8a6..b29234a6ac6 100644 --- a/plugins/easings/quint/package.dist.json +++ b/plugins/easings/quint/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-quint", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing quint plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/easings/quint/package.json b/plugins/easings/quint/package.json index 00c4593db75..b9ff391c727 100644 --- a/plugins/easings/quint/package.json +++ b/plugins/easings/quint/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-quint", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing quint plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/easings/sigmoid/CHANGELOG.md b/plugins/easings/sigmoid/CHANGELOG.md index d1160911319..82c5c34fbea 100644 --- a/plugins/easings/sigmoid/CHANGELOG.md +++ b/plugins/easings/sigmoid/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-sigmoid + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-sigmoid + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-sigmoid + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-easing-sigmoid diff --git a/plugins/easings/sigmoid/package.dist.json b/plugins/easings/sigmoid/package.dist.json index 15f1ad742cb..ef5649db548 100644 --- a/plugins/easings/sigmoid/package.dist.json +++ b/plugins/easings/sigmoid/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-sigmoid", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing sigmoid plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/easings/sigmoid/package.json b/plugins/easings/sigmoid/package.json index 515f6f44875..b08862a7dfd 100644 --- a/plugins/easings/sigmoid/package.json +++ b/plugins/easings/sigmoid/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-sigmoid", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing sigmoid plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/easings/sine/CHANGELOG.md b/plugins/easings/sine/CHANGELOG.md index 3ed2142a57a..0059e15fc72 100644 --- a/plugins/easings/sine/CHANGELOG.md +++ b/plugins/easings/sine/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-sine + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-sine + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-sine + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-easing-sine diff --git a/plugins/easings/sine/package.dist.json b/plugins/easings/sine/package.dist.json index c318f066fa6..bfb6168b096 100644 --- a/plugins/easings/sine/package.dist.json +++ b/plugins/easings/sine/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-sine", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing sine plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/easings/sine/package.json b/plugins/easings/sine/package.json index faa9075b596..3eb94347bba 100644 --- a/plugins/easings/sine/package.json +++ b/plugins/easings/sine/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-sine", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing sine plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/easings/smoothstep/CHANGELOG.md b/plugins/easings/smoothstep/CHANGELOG.md index 1b532c3ffad..983e0e1ff04 100644 --- a/plugins/easings/smoothstep/CHANGELOG.md +++ b/plugins/easings/smoothstep/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-smoothstep + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-smoothstep + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-easing-smoothstep + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-easing-smoothstep diff --git a/plugins/easings/smoothstep/package.dist.json b/plugins/easings/smoothstep/package.dist.json index 3271f11ed4b..630115e7594 100644 --- a/plugins/easings/smoothstep/package.dist.json +++ b/plugins/easings/smoothstep/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-smoothstep", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing smoothstep plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/easings/smoothstep/package.json b/plugins/easings/smoothstep/package.json index 1f8f55bb3c2..334102f70e9 100644 --- a/plugins/easings/smoothstep/package.json +++ b/plugins/easings/smoothstep/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-easing-smoothstep", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles easing smoothstep plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/emitters/CHANGELOG.md b/plugins/emitters/CHANGELOG.md index 74c28c5b0a4..4d28a3b04eb 100644 --- a/plugins/emitters/CHANGELOG.md +++ b/plugins/emitters/CHANGELOG.md @@ -3,6 +3,24 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-emitters + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +### Bug Fixes + +- fixed some issues with emitters/absorbers life ([76f95ad](https://github.com/tsparticles/tsparticles/commit/76f95ad53bb9f7a9bc36e1cb725a4dac9e549d4e)) + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-emitters + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-emitters + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-emitters diff --git a/plugins/emitters/package.dist.json b/plugins/emitters/package.dist.json index 044af1678f9..4c9ad7faf65 100644 --- a/plugins/emitters/package.dist.json +++ b/plugins/emitters/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-emitters", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles emitters plugin", "homepage": "https://particles.js.org", "repository": { @@ -86,8 +86,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/emitters/package.json b/plugins/emitters/package.json index 4c5be97bf06..b3479e83aff 100644 --- a/plugins/emitters/package.json +++ b/plugins/emitters/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-emitters", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles emitters plugin", "homepage": "https://particles.js.org", "scripts": { @@ -94,8 +94,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/emitters/src/EmitterInstance.ts b/plugins/emitters/src/EmitterInstance.ts index 5f2186ae9b2..cc2703f4b39 100644 --- a/plugins/emitters/src/EmitterInstance.ts +++ b/plugins/emitters/src/EmitterInstance.ts @@ -157,7 +157,7 @@ export class EmitterInstance { shapeGenerator = this._engine.emitterShapeManager?.getShapeGenerator(shapeOptions.type); if (shapeGenerator) { - this._shape = shapeGenerator.generate(this.position, this.size, this.fill, shapeOptions.options); + this._shape = shapeGenerator.generate(this.container, this.position, this.size, this.fill, shapeOptions.options); } this._engine.dispatchEvent("emitterCreated", { @@ -301,7 +301,7 @@ export class EmitterInstance { this.play(); - this._currentSpawnDelay -= this._currentSpawnDelay; + this._currentSpawnDelay -= this._spawnDelay; delete this._spawnDelay; } diff --git a/plugins/emitters/src/EmittersPlugin.ts b/plugins/emitters/src/EmittersPlugin.ts index 46172dff8a7..029bdd2f16b 100644 --- a/plugins/emitters/src/EmittersPlugin.ts +++ b/plugins/emitters/src/EmittersPlugin.ts @@ -15,13 +15,12 @@ import type { EmittersInstancesManager } from "./EmittersInstancesManager.js"; /** */ export class EmittersPlugin implements IPlugin { - readonly id; + readonly id = "emitters"; private readonly _instancesManager; constructor(instancesManager: EmittersInstancesManager) { this._instancesManager = instancesManager; - this.id = "emitters"; } async getPlugin(container: EmitterContainer): Promise { diff --git a/plugins/emitters/src/IEmitterShapeGenerator.ts b/plugins/emitters/src/IEmitterShapeGenerator.ts index 28a569669cf..1ab693a944d 100644 --- a/plugins/emitters/src/IEmitterShapeGenerator.ts +++ b/plugins/emitters/src/IEmitterShapeGenerator.ts @@ -1,6 +1,12 @@ -import type { ICoordinates, IDimension } from "@tsparticles/engine"; +import type { Container, ICoordinates, IDimension } from "@tsparticles/engine"; import type { IEmitterShape } from "./IEmitterShape.js"; export interface IEmitterShapeGenerator { - generate(position: ICoordinates, size: IDimension, fill: boolean, options: TOptions): IEmitterShape; + generate( + container: Container, + position: ICoordinates, + size: IDimension, + fill: boolean, + options: TOptions, + ): IEmitterShape; } diff --git a/plugins/emittersShapes/canvas/CHANGELOG.md b/plugins/emittersShapes/canvas/CHANGELOG.md index 343c430b537..e4fcded8409 100644 --- a/plugins/emittersShapes/canvas/CHANGELOG.md +++ b/plugins/emittersShapes/canvas/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-emitters-shape-canvas + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-emitters-shape-canvas + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-emitters-shape-canvas + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-emitters-shape-canvas + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-emitters-shape-canvas diff --git a/plugins/emittersShapes/canvas/package.dist.json b/plugins/emittersShapes/canvas/package.dist.json index 7eeca60e402..b1d3f7b5ad0 100644 --- a/plugins/emittersShapes/canvas/package.dist.json +++ b/plugins/emittersShapes/canvas/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-emitters-shape-canvas", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles emitters shape canvas plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,8 +100,9 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-emitters": "4.0.0-alpha.8" + "@tsparticles/canvas-utils": "4.0.0-alpha.14", + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-emitters": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/emittersShapes/canvas/package.json b/plugins/emittersShapes/canvas/package.json index eb02b1b0e7f..f35ad77b855 100644 --- a/plugins/emittersShapes/canvas/package.json +++ b/plugins/emittersShapes/canvas/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-emitters-shape-canvas", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles emitters shape canvas plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,8 +108,9 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-emitters": "workspace:4.0.0-alpha.8" + "@tsparticles/canvas-utils": "workspace:4.0.0-alpha.14", + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-emitters": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/emittersShapes/canvas/src/EmittersCanvasShape.ts b/plugins/emittersShapes/canvas/src/EmittersCanvasShape.ts index 1e0bbc69ce9..48e82202089 100644 --- a/plugins/emittersShapes/canvas/src/EmittersCanvasShape.ts +++ b/plugins/emittersShapes/canvas/src/EmittersCanvasShape.ts @@ -1,5 +1,5 @@ -import { EmitterShapeBase, type IRandomPositionData } from "@tsparticles/plugin-emitters"; import { + type Container, type ICoordinates, type IDimension, type IRgba, @@ -10,7 +10,8 @@ import { isString, safeDocument, } from "@tsparticles/engine"; -import { getCanvasImageData, getImageData, getTextData } from "./utils.js"; +import { EmitterShapeBase, type IRandomPositionData } from "@tsparticles/plugin-emitters"; +import { getCanvasImageData, getImageData, getTextData } from "@tsparticles/canvas-utils"; import type { CanvasPixelData } from "./types.js"; import type { EmittersCanvasShapeOptions } from "./Options/Classes/EmittersCanvasShapeOptions.js"; @@ -21,9 +22,19 @@ export class EmittersCanvasShape extends EmitterShapeBase(selector)); @@ -78,7 +89,7 @@ export class EmittersCanvasShape extends EmitterShapeBase { generate( + container: Container, position: ICoordinates, size: IDimension, fill: boolean, @@ -15,6 +16,6 @@ export class EmittersCanvasShapeGenerator implements IEmitterShapeGenerator { - generate(position: ICoordinates, size: IDimension, fill: boolean, options: IEmittersPathShapeOptions): IEmitterShape { + generate( + container: Container, + position: ICoordinates, + size: IDimension, + fill: boolean, + options: IEmittersPathShapeOptions, + ): IEmitterShape { const shapeOptions = new EmittersPathShapeOptions(); shapeOptions.load(options); - return new EmittersPathShape(position, size, fill, shapeOptions); + return new EmittersPathShape(container, position, size, fill, shapeOptions); } } diff --git a/plugins/emittersShapes/polygon/CHANGELOG.md b/plugins/emittersShapes/polygon/CHANGELOG.md index 7ea1d9cfef9..68680122b13 100644 --- a/plugins/emittersShapes/polygon/CHANGELOG.md +++ b/plugins/emittersShapes/polygon/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-emitters-shape-polygon + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-emitters-shape-polygon + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-emitters-shape-polygon + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-emitters-shape-polygon + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-emitters-shape-polygon diff --git a/plugins/emittersShapes/polygon/package.dist.json b/plugins/emittersShapes/polygon/package.dist.json index a966d5212d5..044e4f2a23d 100644 --- a/plugins/emittersShapes/polygon/package.dist.json +++ b/plugins/emittersShapes/polygon/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-emitters-shape-polygon", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles emitters shape polygon plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,8 +100,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-emitters": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-emitters": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/emittersShapes/polygon/package.json b/plugins/emittersShapes/polygon/package.json index 08529395539..aac8ce45998 100644 --- a/plugins/emittersShapes/polygon/package.json +++ b/plugins/emittersShapes/polygon/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-emitters-shape-polygon", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles emitters shape polygon plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,8 +108,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-emitters": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-emitters": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/emittersShapes/polygon/src/EmittersPolygonShapeGenerator.ts b/plugins/emittersShapes/polygon/src/EmittersPolygonShapeGenerator.ts index c4c81a71086..0299b3d8730 100644 --- a/plugins/emittersShapes/polygon/src/EmittersPolygonShapeGenerator.ts +++ b/plugins/emittersShapes/polygon/src/EmittersPolygonShapeGenerator.ts @@ -1,4 +1,4 @@ -import type { ICoordinates, IDimension } from "@tsparticles/engine"; +import type { Container, ICoordinates, IDimension } from "@tsparticles/engine"; import type { IEmitterShape, IEmitterShapeGenerator } from "@tsparticles/plugin-emitters"; import { EmittersPolygonShape } from "./EmittersPolygonShape.js"; import { EmittersPolygonShapeOptions } from "./Options/Classes/EmittersPolygonShapeOptions.js"; @@ -6,6 +6,7 @@ import type { IEmittersPolygonShapeOptions } from "./Options/Interfaces/IEmitter export class EmittersPolygonShapeGenerator implements IEmitterShapeGenerator { generate( + _container: Container, position: ICoordinates, size: IDimension, fill: boolean, diff --git a/plugins/emittersShapes/square/CHANGELOG.md b/plugins/emittersShapes/square/CHANGELOG.md index 9faf1547529..ead65005d74 100644 --- a/plugins/emittersShapes/square/CHANGELOG.md +++ b/plugins/emittersShapes/square/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-emitters-shape-square + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-emitters-shape-square + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-emitters-shape-square + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-emitters-shape-square + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-emitters-shape-square diff --git a/plugins/emittersShapes/square/package.dist.json b/plugins/emittersShapes/square/package.dist.json index 86dea427e24..102328c0aee 100644 --- a/plugins/emittersShapes/square/package.dist.json +++ b/plugins/emittersShapes/square/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-emitters-shape-square", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles emitters shape square plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,8 +100,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-emitters": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-emitters": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/emittersShapes/square/package.json b/plugins/emittersShapes/square/package.json index 6ecc5c95231..d1a11c951d7 100644 --- a/plugins/emittersShapes/square/package.json +++ b/plugins/emittersShapes/square/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-emitters-shape-square", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles emitters shape square plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,8 +108,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-emitters": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-emitters": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/emittersShapes/square/src/EmittersSquareShapeGenerator.ts b/plugins/emittersShapes/square/src/EmittersSquareShapeGenerator.ts index a2bf81efda4..3e21aa7727c 100644 --- a/plugins/emittersShapes/square/src/EmittersSquareShapeGenerator.ts +++ b/plugins/emittersShapes/square/src/EmittersSquareShapeGenerator.ts @@ -1,9 +1,15 @@ -import type { ICoordinates, IDimension } from "@tsparticles/engine"; +import type { Container, ICoordinates, IDimension } from "@tsparticles/engine"; import type { IEmitterShape, IEmitterShapeGenerator } from "@tsparticles/plugin-emitters"; import { EmittersSquareShape } from "./EmittersSquareShape.js"; export class EmittersSquareShapeGenerator implements IEmitterShapeGenerator { - generate(position: ICoordinates, size: IDimension, fill: boolean, options: unknown): IEmitterShape { + generate( + _container: Container, + position: ICoordinates, + size: IDimension, + fill: boolean, + options: unknown, + ): IEmitterShape { return new EmittersSquareShape(position, size, fill, options); } } diff --git a/plugins/exports/image/CHANGELOG.md b/plugins/exports/image/CHANGELOG.md index 080a52af98a..5d84ae9180a 100644 --- a/plugins/exports/image/CHANGELOG.md +++ b/plugins/exports/image/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-export-image + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-export-image + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-export-image + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-export-image diff --git a/plugins/exports/image/package.dist.json b/plugins/exports/image/package.dist.json index 00c8b570c18..222b8ba459e 100644 --- a/plugins/exports/image/package.dist.json +++ b/plugins/exports/image/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-export-image", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles export image plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/exports/image/package.json b/plugins/exports/image/package.json index 6859e11f3b2..1e27321df62 100644 --- a/plugins/exports/image/package.json +++ b/plugins/exports/image/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-export-image", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles export image plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/exports/image/src/ExportImagePlugin.ts b/plugins/exports/image/src/ExportImagePlugin.ts index 4dab9c8d4c4..85eadf0dfcc 100644 --- a/plugins/exports/image/src/ExportImagePlugin.ts +++ b/plugins/exports/image/src/ExportImagePlugin.ts @@ -3,11 +3,7 @@ import type { Container, IContainerPlugin, IPlugin } from "@tsparticles/engine"; /** */ export class ExportImagePlugin implements IPlugin { - readonly id; - - constructor() { - this.id = "export-image"; - } + readonly id = "export-image"; async getPlugin(container: Container): Promise { const { ExportImagePluginInstance } = await import("./ExportImagePluginInstance.js"); diff --git a/plugins/exports/json/CHANGELOG.md b/plugins/exports/json/CHANGELOG.md index 9b9f1cd154e..1192c23bf0d 100644 --- a/plugins/exports/json/CHANGELOG.md +++ b/plugins/exports/json/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-export-json + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-export-json + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-export-json + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-export-json diff --git a/plugins/exports/json/package.dist.json b/plugins/exports/json/package.dist.json index a5ce6258353..c854a9384db 100644 --- a/plugins/exports/json/package.dist.json +++ b/plugins/exports/json/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-export-json", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles export json plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/exports/json/package.json b/plugins/exports/json/package.json index d0dd9ba796e..e64f1b583a8 100644 --- a/plugins/exports/json/package.json +++ b/plugins/exports/json/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-export-json", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles export json plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/exports/json/src/ExportJSONPlugin.ts b/plugins/exports/json/src/ExportJSONPlugin.ts index 43c6b0db623..dfbc141c0c6 100644 --- a/plugins/exports/json/src/ExportJSONPlugin.ts +++ b/plugins/exports/json/src/ExportJSONPlugin.ts @@ -3,11 +3,7 @@ import type { Container, IContainerPlugin, IPlugin } from "@tsparticles/engine"; /** */ export class ExportJSONPlugin implements IPlugin { - readonly id; - - constructor() { - this.id = "export-json"; - } + readonly id = "export-json"; async getPlugin(container: Container): Promise { const { ExportJSONPluginInstance } = await import("./ExportJSONPluginInstance.js"); diff --git a/plugins/exports/video/CHANGELOG.md b/plugins/exports/video/CHANGELOG.md index 4664b710559..e7719452ca9 100644 --- a/plugins/exports/video/CHANGELOG.md +++ b/plugins/exports/video/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-export-video + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-export-video + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-export-video + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-export-video diff --git a/plugins/exports/video/package.dist.json b/plugins/exports/video/package.dist.json index cf438552fa2..92eb4fe66ec 100644 --- a/plugins/exports/video/package.dist.json +++ b/plugins/exports/video/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-export-video", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles export video plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/exports/video/package.json b/plugins/exports/video/package.json index c84f7f004f8..62142988da9 100644 --- a/plugins/exports/video/package.json +++ b/plugins/exports/video/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-export-video", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles export video plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/exports/video/src/ExportVideoPlugin.ts b/plugins/exports/video/src/ExportVideoPlugin.ts index 70fc32d4ba2..a770ae46bfb 100644 --- a/plugins/exports/video/src/ExportVideoPlugin.ts +++ b/plugins/exports/video/src/ExportVideoPlugin.ts @@ -3,11 +3,7 @@ import type { Container, IContainerPlugin, IPlugin } from "@tsparticles/engine"; /** */ export class ExportVideoPlugin implements IPlugin { - readonly id; - - constructor() { - this.id = "export-video"; - } + readonly id = "export-video"; async getPlugin(container: Container): Promise { const { ExportVideoPluginInstance } = await import("./ExportVideoPluginInstance.js"); diff --git a/plugins/infection/CHANGELOG.md b/plugins/infection/CHANGELOG.md index 1872a06f36d..ee6a61206f6 100644 --- a/plugins/infection/CHANGELOG.md +++ b/plugins/infection/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-infection + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-infection + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-infection + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-infection + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-infection diff --git a/plugins/infection/package.dist.json b/plugins/infection/package.dist.json index c78f416ad49..b30e8e7b25e 100644 --- a/plugins/infection/package.dist.json +++ b/plugins/infection/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-infection", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles infection plugin", "homepage": "https://particles.js.org", "repository": { @@ -100,8 +100,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/infection/package.json b/plugins/infection/package.json index aea87e4b8f0..aa2b3c816ef 100644 --- a/plugins/infection/package.json +++ b/plugins/infection/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-infection", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles infection plugin", "homepage": "https://particles.js.org", "scripts": { @@ -108,8 +108,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-interactivity": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/infection/src/InfectionPlugin.ts b/plugins/infection/src/InfectionPlugin.ts index e994dc4b773..990cb8c3381 100644 --- a/plugins/infection/src/InfectionPlugin.ts +++ b/plugins/infection/src/InfectionPlugin.ts @@ -5,11 +5,7 @@ import { Infection } from "./Options/Classes/Infection.js"; /** */ export class InfectionPlugin implements IPlugin { - readonly id; - - constructor() { - this.id = "infection"; - } + readonly id = "infection"; async getPlugin(container: Container): Promise { const { InfectionPluginInstance } = await import("./InfectionPluginInstance.js"); diff --git a/plugins/infection/src/InfectionPluginInstance.ts b/plugins/infection/src/InfectionPluginInstance.ts index bc422624933..9cdc19c6437 100644 --- a/plugins/infection/src/InfectionPluginInstance.ts +++ b/plugins/infection/src/InfectionPluginInstance.ts @@ -39,14 +39,13 @@ export class InfectionPluginInstance implements IContainerPlugin { for (let i = 0; i < options.infection.infections; i++) { const notInfected = this._container.particles.filter(p => { - const infP = p as InfectableParticle; + const infP = p as InfectableParticle; - infP.infection ??= {}; + infP.infection ??= {}; - return infP.infection.stage === undefined; - }); - - const infected = itemFromArray(notInfected); + return infP.infection.stage === undefined; + }), + infected = itemFromArray(notInfected); if (!infected) { continue; diff --git a/plugins/interactivity/CHANGELOG.md b/plugins/interactivity/CHANGELOG.md index eed138e109a..87556ab40b0 100644 --- a/plugins/interactivity/CHANGELOG.md +++ b/plugins/interactivity/CHANGELOG.md @@ -3,6 +3,24 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-interactivity + +# [4.0.0-alpha.13](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2026-02-02) + +### Bug Fixes + +- fixed some issues with emitters/absorbers life ([76f95ad](https://github.com/tsparticles/tsparticles/commit/76f95ad53bb9f7a9bc36e1cb725a4dac9e549d4e)) + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-interactivity + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-interactivity + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-interactivity diff --git a/plugins/interactivity/package.dist.json b/plugins/interactivity/package.dist.json index 7019a05b1bf..85c065c020c 100644 --- a/plugins/interactivity/package.dist.json +++ b/plugins/interactivity/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-interactivity", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles interactivity sickness plugin", "homepage": "https://particles.js.org", "repository": { @@ -86,7 +86,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/interactivity/package.json b/plugins/interactivity/package.json index 4ad21cefa9c..988c25ab8fd 100644 --- a/plugins/interactivity/package.json +++ b/plugins/interactivity/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-interactivity", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles interactivity sickness plugin", "homepage": "https://particles.js.org", "scripts": { @@ -94,7 +94,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/interactivity/src/InteractionManager.ts b/plugins/interactivity/src/InteractionManager.ts index c253f995852..817232332e9 100644 --- a/plugins/interactivity/src/InteractionManager.ts +++ b/plugins/interactivity/src/InteractionManager.ts @@ -245,6 +245,7 @@ export class InteractionManager { this._interactors = interactors; this._externalInteractors = []; this._particleInteractors = []; + this._eventListeners.init(); for (const interactor of this._interactors) { switch (interactor.type) { diff --git a/plugins/interactivity/src/InteractivityEventListeners.ts b/plugins/interactivity/src/InteractivityEventListeners.ts index 1ce76394d02..07ec15ca414 100644 --- a/plugins/interactivity/src/InteractivityEventListeners.ts +++ b/plugins/interactivity/src/InteractivityEventListeners.ts @@ -1,4 +1,5 @@ import { + type IContainerPlugin, type ICoordinates, double, executeOnSingleOrMultiple, @@ -40,6 +41,7 @@ interface InteractivityEventListenersHandlers { */ export class InteractivityEventListeners { private _canPush = true; + private readonly _clickPositionPlugins: IContainerPlugin[]; private readonly _container; private readonly _handlers: InteractivityEventListenersHandlers; private readonly _interactionManager: InteractionManager; @@ -52,6 +54,7 @@ export class InteractivityEventListeners { */ constructor(container: InteractivityContainer, interactionManager: InteractionManager) { this._container = container; + this._clickPositionPlugins = []; this._interactionManager = interactionManager; this._touches = new Map(); this._handlers = { @@ -95,6 +98,14 @@ export class InteractivityEventListeners { this._manageListeners(true); } + init(): void { + this._clickPositionPlugins.length = 0; + + for (const plugin of this._container.plugins.filter(p => !!p.clickPositionValid)) { + this._clickPositionPlugins.push(plugin); + } + } + /** * Removing all listeners */ @@ -120,7 +131,7 @@ export class InteractivityEventListeners { } mouseInteractivity.clickPosition = { ...mousePos }; - mouseInteractivity.clickTime = Date.now(); + mouseInteractivity.clickTime = performance.now(); const onClick = options.interactivity?.events.onClick; @@ -251,12 +262,8 @@ export class InteractivityEventListeners { return; } - for (const plugin of container.plugins) { - if (!plugin.clickPositionValid) { - continue; - } - - handled = plugin.clickPositionValid(mousePosition); + for (const plugin of this._clickPositionPlugins) { + handled = plugin.clickPositionValid?.(mousePosition) ?? false; if (handled) { break; diff --git a/plugins/interactivity/src/InteractivityPlugin.ts b/plugins/interactivity/src/InteractivityPlugin.ts index 4a43d06d090..3337fccbbbe 100644 --- a/plugins/interactivity/src/InteractivityPlugin.ts +++ b/plugins/interactivity/src/InteractivityPlugin.ts @@ -18,12 +18,12 @@ import { Interactivity } from "./Options/Classes/Interactivity.js"; /** */ export class InteractivityPlugin implements IPlugin { - readonly _engine; - readonly id; + readonly id = "interactivity"; + + private readonly _engine; constructor(engine: InteractivityEngine) { this._engine = engine; - this.id = "interactivity"; } async getPlugin(container: Container): Promise { diff --git a/plugins/interactivity/src/index.ts b/plugins/interactivity/src/index.ts index fa29b508503..ae7b102f0a2 100644 --- a/plugins/interactivity/src/index.ts +++ b/plugins/interactivity/src/index.ts @@ -16,7 +16,7 @@ export async function loadInteractivityPlugin(engine: Engine): Promise { interactivityEngine.addPlugin(new InteractivityPlugin(interactivityEngine)); - interactivityEngine.interactorsInitializers ??= new Map(); + interactivityEngine.initializers.interactors ??= new Map(); interactivityEngine.interactors ??= new Map(); /** @@ -25,9 +25,9 @@ export async function loadInteractivityPlugin(engine: Engine): Promise { * @param interactorInitializer - the interaction manager initializer */ interactivityEngine.addInteractor = (name: string, interactorInitializer: InteractorInitializer): void => { - interactivityEngine.interactorsInitializers ??= new Map(); + interactivityEngine.initializers.interactors ??= new Map(); - interactivityEngine.interactorsInitializers.set(name, interactorInitializer); + interactivityEngine.initializers.interactors.set(name, interactorInitializer); }; /** @@ -38,12 +38,12 @@ export async function loadInteractivityPlugin(engine: Engine): Promise { */ interactivityEngine.getInteractors = async (container: Container, force = false): Promise => { interactivityEngine.interactors ??= new Map(); - interactivityEngine.interactorsInitializers ??= new Map(); + interactivityEngine.initializers.interactors ??= new Map(); return getItemsFromInitializer( container, interactivityEngine.interactors, - interactivityEngine.interactorsInitializers, + interactivityEngine.initializers.interactors, force, ); }; diff --git a/plugins/interactivity/src/types.ts b/plugins/interactivity/src/types.ts index 812e2bb61d0..ab74dff3e24 100644 --- a/plugins/interactivity/src/types.ts +++ b/plugins/interactivity/src/types.ts @@ -50,9 +50,11 @@ export type InteractivityEngine = Engine & { getInteractors?: (container: Container, force?: boolean) => Promise; - interactors?: Map; + initializers: { + interactors?: Map; + }; - interactorsInitializers?: Map; + interactors?: Map; setOnClickHandler?: (callback: (e: Event, particles?: Particle[]) => void) => void; }; diff --git a/plugins/manualParticles/CHANGELOG.md b/plugins/manualParticles/CHANGELOG.md index 4ff967bc24c..e94d7b50ad0 100644 --- a/plugins/manualParticles/CHANGELOG.md +++ b/plugins/manualParticles/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-manual-particles + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-manual-particles + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-manual-particles + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-manual-particles diff --git a/plugins/manualParticles/package.dist.json b/plugins/manualParticles/package.dist.json index 650a315d8c1..a4117ce6674 100644 --- a/plugins/manualParticles/package.dist.json +++ b/plugins/manualParticles/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-manual-particles", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles manual particles plugin", "homepage": "https://particles.js.org", "repository": { @@ -86,7 +86,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/manualParticles/package.json b/plugins/manualParticles/package.json index 1e6d5caee37..4c87c05be85 100644 --- a/plugins/manualParticles/package.json +++ b/plugins/manualParticles/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-manual-particles", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles manual particles plugin", "homepage": "https://particles.js.org", "scripts": { @@ -94,7 +94,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/manualParticles/src/ManualParticlesPlugin.ts b/plugins/manualParticles/src/ManualParticlesPlugin.ts index f297bff7530..72131b30fe8 100644 --- a/plugins/manualParticles/src/ManualParticlesPlugin.ts +++ b/plugins/manualParticles/src/ManualParticlesPlugin.ts @@ -5,11 +5,7 @@ import { ManualParticle } from "./Options/Classes/ManualParticle.js"; /** */ export class ManualParticlesPlugin implements IPlugin { - readonly id; - - constructor() { - this.id = "manual-particles"; - } + readonly id = "manual-particles"; async getPlugin(container: ManualParticlesContainer): Promise { const { ManualParticlesPluginInstance } = await import("./ManualParticlesPluginInstance.js"); diff --git a/plugins/motion/CHANGELOG.md b/plugins/motion/CHANGELOG.md index bee4beef6b6..51d9474d746 100644 --- a/plugins/motion/CHANGELOG.md +++ b/plugins/motion/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-motion + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-motion + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-motion + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-motion diff --git a/plugins/motion/package.dist.json b/plugins/motion/package.dist.json index e079d1ce41c..c888e29a77c 100644 --- a/plugins/motion/package.dist.json +++ b/plugins/motion/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-motion", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles motion sickness plugin", "homepage": "https://particles.js.org", "repository": { @@ -86,7 +86,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/motion/package.json b/plugins/motion/package.json index c8aab342879..9af5b4c1955 100644 --- a/plugins/motion/package.json +++ b/plugins/motion/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-motion", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles motion sickness plugin", "homepage": "https://particles.js.org", "scripts": { @@ -94,7 +94,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/motion/src/MotionPlugin.ts b/plugins/motion/src/MotionPlugin.ts index c1b583fd9aa..6dae759e364 100644 --- a/plugins/motion/src/MotionPlugin.ts +++ b/plugins/motion/src/MotionPlugin.ts @@ -5,11 +5,7 @@ import { Motion } from "./Options/Classes/Motion.js"; /** */ export class MotionPlugin implements IPlugin { - readonly id; - - constructor() { - this.id = "motion"; - } + readonly id = "motion"; async getPlugin(container: Container): Promise { const { MotionPluginInstance } = await import("./MotionPluginInstance.js"); diff --git a/plugins/poisson/CHANGELOG.md b/plugins/poisson/CHANGELOG.md index 18a2aa2b9e9..7690549c399 100644 --- a/plugins/poisson/CHANGELOG.md +++ b/plugins/poisson/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-poisson-disc + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-poisson-disc + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-poisson-disc + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-poisson-disc diff --git a/plugins/poisson/package.dist.json b/plugins/poisson/package.dist.json index 63aa1017fbc..8a40be6a992 100644 --- a/plugins/poisson/package.dist.json +++ b/plugins/poisson/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-poisson-disc", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles poisson disc plugin", "homepage": "https://particles.js.org", "repository": { @@ -85,7 +85,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/poisson/package.json b/plugins/poisson/package.json index 406fa6065b1..bec234dd261 100644 --- a/plugins/poisson/package.json +++ b/plugins/poisson/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-poisson-disc", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles poisson disc plugin", "homepage": "https://particles.js.org", "scripts": { @@ -78,7 +78,7 @@ "types": "dist/types/index.d.ts", "prettier": "@tsparticles/prettier-config", "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/poisson/src/PoissonDiscPlugin.ts b/plugins/poisson/src/PoissonDiscPlugin.ts index ec4907ee6eb..4ff5bc7388f 100644 --- a/plugins/poisson/src/PoissonDiscPlugin.ts +++ b/plugins/poisson/src/PoissonDiscPlugin.ts @@ -5,11 +5,7 @@ import { Poisson } from "./Options/Classes/Poisson.js"; /** */ export class PoissonDiscPlugin implements IPlugin { - readonly id; - - constructor() { - this.id = "poisson"; - } + readonly id = "poisson"; async getPlugin(container: Container): Promise { const { PoissonDiscPluginInstance } = await import("./PoissonDiscPluginInstance.js"); diff --git a/plugins/polygonMask/CHANGELOG.md b/plugins/polygonMask/CHANGELOG.md index 2199a69be83..d754d0cc8e1 100644 --- a/plugins/polygonMask/CHANGELOG.md +++ b/plugins/polygonMask/CHANGELOG.md @@ -3,6 +3,24 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-polygon-mask + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-polygon-mask + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Bug Fixes + +- change break to continue in default case for better flow ([c397377](https://github.com/tsparticles/tsparticles/commit/c3973771e2485627cba03f1b563861a6c24278da)) + +### Features + +- add effect particles with configuration and drawing logic ([dee10d8](https://github.com/tsparticles/tsparticles/commit/dee10d847b4339f38432906cd36e4a5c51679f7a)) + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-polygon-mask diff --git a/plugins/polygonMask/package.dist.json b/plugins/polygonMask/package.dist.json index 167857906fd..db043eea899 100644 --- a/plugins/polygonMask/package.dist.json +++ b/plugins/polygonMask/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-polygon-mask", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles polygon mask plugin", "homepage": "https://particles.js.org", "repository": { @@ -88,7 +88,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/polygonMask/package.json b/plugins/polygonMask/package.json index 7033ce1d726..46c268e94a8 100644 --- a/plugins/polygonMask/package.json +++ b/plugins/polygonMask/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-polygon-mask", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles polygon mask plugin", "homepage": "https://particles.js.org", "scripts": { @@ -81,7 +81,7 @@ "dist/**/pathseg.js" ], "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/polygonMask/src/PolygonMaskInstance.ts b/plugins/polygonMask/src/PolygonMaskInstance.ts index 1898aac7614..bf53d2b7ba3 100644 --- a/plugins/polygonMask/src/PolygonMaskInstance.ts +++ b/plugins/polygonMask/src/PolygonMaskInstance.ts @@ -315,7 +315,7 @@ export class PolygonMaskInstance implements IContainerPlugin { } for (const item of this.raw) { - void this._container.particles.addParticle({ + this._container.particles.addParticle({ x: item.x, y: item.y, }); @@ -443,9 +443,8 @@ export class PolygonMaskInstance implements IContainerPlugin { svg = data; } else { const getPath = (p: string): string => ``, - path = isArray(data.path) ? data.path.map(getPath).join("") : getPath(data.path); - - const namespaces = 'xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"'; + path = isArray(data.path) ? data.path.map(getPath).join("") : getPath(data.path), + namespaces = 'xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"'; svg = `${path}`; } diff --git a/plugins/polygonMask/src/PolygonMaskPlugin.ts b/plugins/polygonMask/src/PolygonMaskPlugin.ts index 867a6a7c3c8..4a17fca7479 100644 --- a/plugins/polygonMask/src/PolygonMaskPlugin.ts +++ b/plugins/polygonMask/src/PolygonMaskPlugin.ts @@ -6,13 +6,11 @@ import { PolygonMaskType } from "./Enums/PolygonMaskType.js"; /** */ export class PolygonMaskPlugin implements IPlugin { - readonly id; + readonly id = "polygon-mask"; private readonly _engine; constructor(engine: Engine) { - this.id = "polygonMask"; - this._engine = engine; } diff --git a/plugins/polygonMask/src/utils.ts b/plugins/polygonMask/src/utils.ts index ead38d8e49c..1dff84842ae 100644 --- a/plugins/polygonMask/src/utils.ts +++ b/plugins/polygonMask/src/utils.ts @@ -182,6 +182,10 @@ export function parsePaths(paths: ISvgPath[], scale: number, offset: ICoordinate case svgPathSeg.PATHSEG_UNKNOWN: case svgPathSeg.PATHSEG_CLOSEPATH: continue; // Skip the closing path (and the UNKNOWN) + + default: + // no-op + continue; } res.push({ diff --git a/plugins/responsive/CHANGELOG.md b/plugins/responsive/CHANGELOG.md index b5c3f29e9f3..17468466707 100644 --- a/plugins/responsive/CHANGELOG.md +++ b/plugins/responsive/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-responsive + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-responsive + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-responsive + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-responsive diff --git a/plugins/responsive/package.dist.json b/plugins/responsive/package.dist.json index 93aa467d4d3..2311bf5715e 100644 --- a/plugins/responsive/package.dist.json +++ b/plugins/responsive/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-responsive", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles responsive plugin", "homepage": "https://particles.js.org", "repository": { @@ -86,7 +86,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/responsive/package.json b/plugins/responsive/package.json index ea85890284c..83b07e6d849 100644 --- a/plugins/responsive/package.json +++ b/plugins/responsive/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-responsive", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles responsive plugin", "homepage": "https://particles.js.org", "scripts": { @@ -94,7 +94,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/responsive/src/ResponsivePlugin.ts b/plugins/responsive/src/ResponsivePlugin.ts index 061ba3d420b..b2537ab2557 100644 --- a/plugins/responsive/src/ResponsivePlugin.ts +++ b/plugins/responsive/src/ResponsivePlugin.ts @@ -6,11 +6,7 @@ import { ResponsiveMode } from "./ResponsiveMode.js"; /** */ export class ResponsivePlugin implements IPlugin { - readonly id; - - constructor() { - this.id = "responsive"; - } + readonly id = "responsive"; async getPlugin(container: ResponsiveContainer): Promise { const { ResponsivePluginInstance } = await import("./ResponsivePluginInstance.js"); diff --git a/plugins/sounds/CHANGELOG.md b/plugins/sounds/CHANGELOG.md index 450dc3f2c6c..d5cd7698318 100644 --- a/plugins/sounds/CHANGELOG.md +++ b/plugins/sounds/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-sounds + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-sounds + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-sounds + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-sounds diff --git a/plugins/sounds/package.dist.json b/plugins/sounds/package.dist.json index a873b55f8a3..146831e65cd 100644 --- a/plugins/sounds/package.dist.json +++ b/plugins/sounds/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-sounds", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles sounds plugin", "homepage": "https://particles.js.org", "repository": { @@ -86,7 +86,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/sounds/package.json b/plugins/sounds/package.json index ea17acc0998..4466ba2adc9 100644 --- a/plugins/sounds/package.json +++ b/plugins/sounds/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-sounds", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles sounds plugin", "homepage": "https://particles.js.org", "scripts": { @@ -94,7 +94,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/sounds/src/SoundsPlugin.ts b/plugins/sounds/src/SoundsPlugin.ts index a86a28db4b5..b1a76b05004 100644 --- a/plugins/sounds/src/SoundsPlugin.ts +++ b/plugins/sounds/src/SoundsPlugin.ts @@ -20,13 +20,11 @@ const generalFirstClickHandler = (): void => { /** */ export class SoundsPlugin implements IPlugin { - readonly id; + readonly id = "sounds"; private readonly _engine; constructor(engine: Engine) { - this.id = "sounds"; - this._engine = engine; const listenerOptions = { diff --git a/plugins/sounds/src/SoundsPluginInstance.ts b/plugins/sounds/src/SoundsPluginInstance.ts index d3059cb33de..b00f4df3847 100644 --- a/plugins/sounds/src/SoundsPluginInstance.ts +++ b/plugins/sounds/src/SoundsPluginInstance.ts @@ -130,18 +130,17 @@ export class SoundsPluginInstance implements IContainerPlugin { if (soundsOptions.autoPlay && isWindowMuted()) { const firstClickHandler = (): void => { - removeEventListener(mouseDownEvent, firstClickHandler); - removeEventListener(touchStartEvent, firstClickHandler); + removeEventListener(mouseDownEvent, firstClickHandler); + removeEventListener(touchStartEvent, firstClickHandler); - unmuteWindow(); + unmuteWindow(); - void this.unmute(); - }; - - const listenerOptions = { - capture: true, - once: true, - }; + void this.unmute(); + }, + listenerOptions = { + capture: true, + once: true, + }; addEventListener(mouseDownEvent, firstClickHandler, listenerOptions); addEventListener(touchStartEvent, firstClickHandler, listenerOptions); diff --git a/plugins/themes/CHANGELOG.md b/plugins/themes/CHANGELOG.md index 6fe75e4b654..8c20c0b2d6e 100644 --- a/plugins/themes/CHANGELOG.md +++ b/plugins/themes/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-themes + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-themes + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-themes + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-themes diff --git a/plugins/themes/package.dist.json b/plugins/themes/package.dist.json index 8d718dd8a7d..f8e85a0de92 100644 --- a/plugins/themes/package.dist.json +++ b/plugins/themes/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-themes", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles themes plugin", "homepage": "https://particles.js.org", "repository": { @@ -86,7 +86,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/themes/package.json b/plugins/themes/package.json index 61a41103c94..bb4eae5635c 100644 --- a/plugins/themes/package.json +++ b/plugins/themes/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-themes", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles themes plugin", "homepage": "https://particles.js.org", "scripts": { @@ -94,7 +94,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/themes/src/ThemesPlugin.ts b/plugins/themes/src/ThemesPlugin.ts index 17a26ecfef8..88a364f5bab 100644 --- a/plugins/themes/src/ThemesPlugin.ts +++ b/plugins/themes/src/ThemesPlugin.ts @@ -12,11 +12,7 @@ import { ThemeMode } from "./ThemeMode.js"; /** */ export class ThemesPlugin implements IPlugin { - readonly id; - - constructor() { - this.id = "theme"; - } + readonly id = "theme"; async getPlugin(container: ThemesContainer): Promise { const { ThemesPluginInstance } = await import("./ThemesPluginInstance.js"); diff --git a/plugins/trail/CHANGELOG.md b/plugins/trail/CHANGELOG.md index 6a93cccac40..1c3f71cb0f1 100644 --- a/plugins/trail/CHANGELOG.md +++ b/plugins/trail/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-trail + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-trail + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/plugin-trail + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/plugin-trail diff --git a/plugins/trail/package.dist.json b/plugins/trail/package.dist.json index c3c6a4bde6a..67e91b36b76 100644 --- a/plugins/trail/package.dist.json +++ b/plugins/trail/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-trail", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles trail plugin", "homepage": "https://particles.js.org", "repository": { @@ -86,7 +86,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/plugins/trail/package.json b/plugins/trail/package.json index 199023b6860..fe580cbeb7f 100644 --- a/plugins/trail/package.json +++ b/plugins/trail/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/plugin-trail", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles trail plugin", "homepage": "https://particles.js.org", "scripts": { @@ -94,7 +94,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/plugins/trail/src/TrailPlugin.ts b/plugins/trail/src/TrailPlugin.ts index eee931c91a4..369d2d5cbcd 100644 --- a/plugins/trail/src/TrailPlugin.ts +++ b/plugins/trail/src/TrailPlugin.ts @@ -5,13 +5,11 @@ import { Trail } from "./Options/Classes/Trail.js"; /** */ export class TrailPlugin implements IPlugin { - readonly id; + readonly id = "trail"; private readonly _engine; constructor(engine: Engine) { - this.id = "trail"; - this._engine = engine; } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 68ea00e1110..0957e36655a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,55 +1,54 @@ -lockfileVersion: '9.0' +lockfileVersion: "9.0" settings: autoInstallPeers: true excludeLinksFromLockfile: false importers: - .: devDependencies: - '@babel/core': - specifier: ^7.28.6 - version: 7.28.6 - '@commitlint/cli': - specifier: ^20.3.1 - version: 20.3.1(@types/node@25.0.10)(typescript@5.9.3) - '@commitlint/config-conventional': - specifier: ^20.3.1 - version: 20.3.1 - '@tsparticles/cli': - specifier: ^3.0.16 - version: 3.0.16(@swc/core@1.15.10)(@types/eslint@8.56.6)(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3))(jiti@2.4.2)(webpack-cli@6.0.1) - '@tsparticles/eslint-config': - specifier: ^3.0.11 - version: 3.0.11(eslint@9.39.2(jiti@2.4.2)) - '@tsparticles/prettier-config': + "@commitlint/cli": + specifier: ^20.4.1 + version: 20.4.1(@types/node@25.2.0)(typescript@5.9.3) + "@commitlint/config-conventional": + specifier: ^20.4.1 + version: 20.4.1 + "@swc/core": + specifier: ^1.15.11 + version: 1.15.11 + "@tsparticles/cli": + specifier: ^3.1.3 + version: 3.1.3(@types/eslint@8.56.6)(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3))(jiti@2.4.2)(webpack-cli@6.0.1) + "@tsparticles/depcruise-config": + specifier: ^3.1.2 + version: 3.1.2(dependency-cruiser@17.3.7) + "@tsparticles/eslint-config": + specifier: ^3.1.1 + version: 3.1.1(eslint@9.39.2(jiti@2.4.2)) + "@tsparticles/prettier-config": specifier: ^3.0.11 version: 3.0.11 - '@tsparticles/tsconfig': - specifier: ^3.0.9 - version: 3.0.9 - '@tsparticles/webpack-plugin': - specifier: ^3.0.11 - version: 3.0.11(@swc/core@1.15.10)(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3))(jiti@2.4.2) - '@types/jsdom': + "@tsparticles/tsconfig": + specifier: ^3.1.0 + version: 3.1.0 + "@tsparticles/webpack-plugin": + specifier: ^3.1.2 + version: 3.1.2(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3))(jiti@2.4.2) + "@types/jsdom": specifier: ^27.0.0 version: 27.0.0 - '@types/node': - specifier: ^25.0.10 - version: 25.0.10 - '@types/webpack-env': + "@types/node": + specifier: ^25.2.0 + version: 25.2.0 + "@types/webpack-env": specifier: ^1.18.8 version: 1.18.8 - '@vitest/coverage-v8': + "@vitest/coverage-v8": specifier: ^4.0.18 version: 4.0.18(vitest@4.0.18) - '@vitest/ui': + "@vitest/ui": specifier: ^4.0.18 version: 4.0.18(vitest@4.0.18) - babel-loader: - specifier: ^10.0.0 - version: 10.0.0(@babel/core@7.28.6)(webpack@5.104.1) browserslist: specifier: ^4.28.1 version: 4.28.1 @@ -69,8 +68,8 @@ importers: specifier: ^10.1.8 version: 10.1.8(eslint@9.39.2(jiti@2.4.2)) eslint-plugin-jsdoc: - specifier: ^62.3.1 - version: 62.3.1(eslint@9.39.2(jiti@2.4.2)) + specifier: ^62.5.0 + version: 62.5.0(eslint@9.39.2(jiti@2.4.2)) eslint-plugin-prettier: specifier: ^5.5.5 version: 5.5.5(@types/eslint@8.56.6)(eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.4.2)))(eslint@9.39.2(jiti@2.4.2))(prettier@3.8.1) @@ -87,20 +86,17 @@ importers: specifier: ^9.1.7 version: 9.1.7 jsdom: - specifier: ^27.4.0 - version: 27.4.0(canvas@3.2.1) + specifier: ^28.0.0 + version: 28.0.0(canvas@3.2.1) jsdom-global: specifier: ^3.0.2 - version: 3.0.2(jsdom@27.4.0(canvas@3.2.1)) + version: 3.0.2(jsdom@28.0.0(canvas@3.2.1)) lerna: specifier: ^9.0.3 - version: 9.0.3(@swc/core@1.15.10)(@types/node@25.0.10) - madge: - specifier: ^8.0.0 - version: 8.0.0(typescript@5.9.3) + version: 9.0.3(@swc/core@1.15.11)(@types/node@25.2.0) nx: - specifier: ^22.4.1 - version: 22.4.1(@swc/core@1.15.10) + specifier: ^22.4.4 + version: 22.4.4(@swc/core@1.15.11) nx-cloud: specifier: ^19.1.0 version: 19.1.0 @@ -116,15 +112,18 @@ importers: source-map-support: specifier: ^0.5.21 version: 0.5.21 + swc-loader: + specifier: ^0.2.7 + version: 0.2.7(@swc/core@1.15.11)(webpack@5.104.1) terser-webpack-plugin: specifier: ^5.3.16 - version: 5.3.16(@swc/core@1.15.10)(webpack@5.104.1) + version: 5.3.16(@swc/core@1.15.11)(webpack@5.104.1) ts-json-schema-generator: specifier: ^2.4.0 version: 2.4.0 ts-node: specifier: ^10.9.2 - version: 10.9.2(@swc/core@1.15.10)(@types/node@25.0.10)(typescript@5.9.3) + version: 10.9.2(@swc/core@1.15.11)(@types/node@25.2.0)(typescript@5.9.3) typedoc: specifier: ^0.28.16 version: 0.28.16(typescript@5.9.3) @@ -141,8 +140,8 @@ importers: specifier: ^1.6.0 version: 1.6.0(typedoc@0.28.16(typescript@5.9.3)) typedoc-plugin-mdn-links: - specifier: ^5.1.0 - version: 5.1.0(typedoc@0.28.16(typescript@5.9.3)) + specifier: ^5.1.1 + version: 5.1.1(typedoc@0.28.16(typescript@5.9.3)) typedoc-plugin-missing-exports: specifier: ^4.1.2 version: 4.1.2(typedoc@0.28.16(typescript@5.9.3)) @@ -150,17 +149,17 @@ importers: specifier: ^5.9.3 version: 5.9.3 typescript-eslint: - specifier: ^8.53.1 - version: 8.53.1(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) + specifier: ^8.54.0 + version: 8.54.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) typescript-json-schema: specifier: ^0.67.1 - version: 0.67.1(@swc/core@1.15.10) + version: 0.67.1(@swc/core@1.15.11) vitest: specifier: ^4.0.18 - version: 4.0.18(@types/node@25.0.10)(@vitest/ui@4.0.18)(jiti@2.4.2)(jsdom@27.4.0(canvas@3.2.1))(lightningcss@1.30.2)(sass@1.97.3)(stylus@0.64.0)(terser@5.44.1)(yaml@2.8.1) + version: 4.0.18(@types/node@25.2.0)(@vitest/ui@4.0.18)(jiti@2.4.2)(jsdom@28.0.0(canvas@3.2.1))(lightningcss@1.30.2)(sass@1.97.3)(stylus@0.64.0)(terser@5.44.1)(yaml@2.8.1) webpack: specifier: ^5.104.1 - version: 5.104.1(@swc/core@1.15.10)(webpack-cli@6.0.1) + version: 5.104.1(@swc/core@1.15.11)(webpack-cli@6.0.1) webpack-bundle-analyzer: specifier: ^5.2.0 version: 5.2.0 @@ -173,880 +172,919 @@ importers: bundles/all: dependencies: - '@tsparticles/effect-bubble': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/effect-bubble": + specifier: workspace:4.0.0-alpha.14 version: link:../../effects/bubble/dist - '@tsparticles/effect-shadow': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/effect-particles": + specifier: workspace:4.0.0-alpha.14 + version: link:../../effects/particles/dist + "@tsparticles/effect-shadow": + specifier: workspace:4.0.0-alpha.14 version: link:../../effects/shadow/dist - '@tsparticles/effect-trail': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/effect-trail": + specifier: workspace:4.0.0-alpha.14 version: link:../../effects/trail/dist - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist - '@tsparticles/interaction-external-particle': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-particle": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/particle/dist - '@tsparticles/interaction-external-pop': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-pop": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/pop/dist - '@tsparticles/interaction-light': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-light": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/light/dist - '@tsparticles/interaction-particles-repulse': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-particles-repulse": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/particles/repulse/dist - '@tsparticles/path-curl-noise': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/path-branches": + specifier: workspace:4.0.0-alpha.14 + version: link:../../paths/branches/dist + "@tsparticles/path-brownian": + specifier: workspace:4.0.0-alpha.14 + version: link:../../paths/brownian/dist + "@tsparticles/path-curl-noise": + specifier: workspace:4.0.0-alpha.14 version: link:../../paths/curlNoise/dist - '@tsparticles/path-curves': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/path-curves": + specifier: workspace:4.0.0-alpha.14 version: link:../../paths/curves/dist - '@tsparticles/path-fractal-noise': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/path-fractal-noise": + specifier: workspace:4.0.0-alpha.14 version: link:../../paths/fractalNoise/dist - '@tsparticles/path-perlin-noise': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/path-grid": + specifier: workspace:4.0.0-alpha.14 + version: link:../../paths/grid/dist + "@tsparticles/path-levy": + specifier: workspace:4.0.0-alpha.14 + version: link:../../paths/levy/dist + "@tsparticles/path-perlin-noise": + specifier: workspace:4.0.0-alpha.14 version: link:../../paths/perlinNoise/dist - '@tsparticles/path-polygon': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/path-polygon": + specifier: workspace:4.0.0-alpha.14 version: link:../../paths/polygon/dist - '@tsparticles/path-simplex-noise': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/path-simplex-noise": + specifier: workspace:4.0.0-alpha.14 version: link:../../paths/simplexNoise/dist - '@tsparticles/path-svg': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/path-spiral": + specifier: workspace:4.0.0-alpha.14 + version: link:../../paths/spiral/dist + "@tsparticles/path-svg": + specifier: workspace:4.0.0-alpha.14 version: link:../../paths/svg/dist - '@tsparticles/path-zig-zag': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/path-zig-zag": + specifier: workspace:4.0.0-alpha.14 version: link:../../paths/zigzag/dist - '@tsparticles/plugin-background-mask': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-background-mask": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/backgroundMask/dist - '@tsparticles/plugin-blend': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-blend": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/blend/dist - '@tsparticles/plugin-canvas-mask': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-canvas-mask": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/canvasMask/dist - '@tsparticles/plugin-easing-back': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-back": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/back/dist - '@tsparticles/plugin-easing-bounce': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-bounce": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/bounce/dist - '@tsparticles/plugin-easing-circ': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-circ": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/circ/dist - '@tsparticles/plugin-easing-cubic': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-cubic": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/cubic/dist - '@tsparticles/plugin-easing-elastic': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-elastic": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/elastic/dist - '@tsparticles/plugin-easing-expo': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-expo": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/expo/dist - '@tsparticles/plugin-easing-gaussian': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-gaussian": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/gaussian/dist - '@tsparticles/plugin-easing-linear': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-linear": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/linear/dist - '@tsparticles/plugin-easing-quart': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-quart": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/quart/dist - '@tsparticles/plugin-easing-quint': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-quint": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/quint/dist - '@tsparticles/plugin-easing-sigmoid': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-sigmoid": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/sigmoid/dist - '@tsparticles/plugin-easing-sine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-sine": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/sine/dist - '@tsparticles/plugin-easing-smoothstep': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-smoothstep": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/smoothstep/dist - '@tsparticles/plugin-emitters-shape-canvas': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-emitters-shape-canvas": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/emittersShapes/canvas/dist - '@tsparticles/plugin-emitters-shape-path': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-emitters-shape-path": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/emittersShapes/path/dist - '@tsparticles/plugin-emitters-shape-polygon': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-emitters-shape-polygon": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/emittersShapes/polygon/dist - '@tsparticles/plugin-export-image': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-export-image": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/exports/image/dist - '@tsparticles/plugin-export-json': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-export-json": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/exports/json/dist - '@tsparticles/plugin-export-video': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-export-video": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/exports/video/dist - '@tsparticles/plugin-hsv-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-hsv-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/colors/hsv/dist - '@tsparticles/plugin-hwb-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-hwb-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/colors/hwb/dist - '@tsparticles/plugin-infection': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-infection": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/infection/dist - '@tsparticles/plugin-lab-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-lab-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/colors/lab/dist - '@tsparticles/plugin-lch-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-lch-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/colors/lch/dist - '@tsparticles/plugin-manual-particles': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-manual-particles": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/manualParticles/dist - '@tsparticles/plugin-motion': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-motion": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/motion/dist - '@tsparticles/plugin-named-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-named-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/colors/named/dist - '@tsparticles/plugin-oklab-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-oklab-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/colors/oklab/dist - '@tsparticles/plugin-oklch-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-oklch-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/colors/oklch/dist - '@tsparticles/plugin-poisson-disc': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-poisson-disc": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/poisson/dist - '@tsparticles/plugin-polygon-mask': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-polygon-mask": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/polygonMask/dist - '@tsparticles/plugin-responsive': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-responsive": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/responsive/dist - '@tsparticles/plugin-sounds': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-sounds": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/sounds/dist - '@tsparticles/plugin-themes': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-themes": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/themes/dist - '@tsparticles/plugin-trail': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-trail": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/trail/dist - '@tsparticles/shape-arrow': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-arrow": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/arrow/dist - '@tsparticles/shape-cards': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-cards": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/cards/dist - '@tsparticles/shape-cog': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-cog": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/cog/dist - '@tsparticles/shape-heart': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-heart": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/heart/dist - '@tsparticles/shape-infinity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-infinity": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/infinity/dist - '@tsparticles/shape-path': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-path": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/path/dist - '@tsparticles/shape-rounded-polygon': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-rounded-polygon": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/rounded-polygon/dist - '@tsparticles/shape-rounded-rect': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-rounded-rect": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/rounded-rect/dist - '@tsparticles/shape-spiral': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-spiral": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/spiral/dist - '@tsparticles/updater-gradient': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-gradient": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/gradient/dist - '@tsparticles/updater-orbit': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-orbit": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/orbit/dist tsparticles: - specifier: workspace:4.0.0-alpha.8 + specifier: workspace:4.0.0-alpha.14 version: link:../full/dist publishDirectory: dist bundles/basic: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist - '@tsparticles/move-base': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/move-base": + specifier: workspace:4.0.0-alpha.14 version: link:../../move/base/dist - '@tsparticles/plugin-hex-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-hex-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/colors/hex/dist - '@tsparticles/plugin-hsl-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-hsl-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/colors/hsl/dist - '@tsparticles/plugin-rgb-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-rgb-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/colors/rgb/dist - '@tsparticles/shape-circle': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-circle": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/circle/dist - '@tsparticles/updater-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/color/dist - '@tsparticles/updater-opacity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-opacity": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/opacity/dist - '@tsparticles/updater-out-modes': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-out-modes": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/outModes/dist - '@tsparticles/updater-size': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-size": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/size/dist publishDirectory: dist bundles/confetti: dependencies: - '@tsparticles/basic': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/basic": + specifier: workspace:4.0.0-alpha.14 version: link:../basic/dist - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist - '@tsparticles/plugin-emitters': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-emitters": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/emitters/dist - '@tsparticles/plugin-motion': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-motion": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/motion/dist - '@tsparticles/shape-cards': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-cards": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/cards/dist - '@tsparticles/shape-emoji': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-emoji": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/emoji/dist - '@tsparticles/shape-heart': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-heart": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/heart/dist - '@tsparticles/shape-image': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-image": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/image/dist - '@tsparticles/shape-polygon': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-polygon": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/polygon/dist - '@tsparticles/shape-square': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-square": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/square/dist - '@tsparticles/shape-star': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-star": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/star/dist - '@tsparticles/updater-life': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-life": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/life/dist - '@tsparticles/updater-roll': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-roll": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/roll/dist - '@tsparticles/updater-rotate': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-rotate": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/rotate/dist - '@tsparticles/updater-tilt': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-tilt": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/tilt/dist - '@tsparticles/updater-wobble': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-wobble": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/wobble/dist publishDirectory: dist bundles/fireworks: dependencies: - '@tsparticles/basic': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/basic": + specifier: workspace:4.0.0-alpha.14 version: link:../basic/dist - '@tsparticles/effect-trail': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/effect-trail": + specifier: workspace:4.0.0-alpha.14 version: link:../../effects/trail/dist - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist - '@tsparticles/plugin-emitters': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-emitters": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/emitters/dist - '@tsparticles/plugin-emitters-shape-square': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-emitters-shape-square": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/emittersShapes/square/dist - '@tsparticles/plugin-sounds': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-sounds": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/sounds/dist - '@tsparticles/updater-destroy': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-destroy": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/destroy/dist - '@tsparticles/updater-life': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-life": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/life/dist - '@tsparticles/updater-rotate': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-rotate": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/rotate/dist publishDirectory: dist bundles/full: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist - '@tsparticles/interaction-external-trail': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-trail": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/trail/dist - '@tsparticles/plugin-absorbers': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-absorbers": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/absorbers/dist - '@tsparticles/plugin-emitters': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-emitters": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/emitters/dist - '@tsparticles/plugin-emitters-shape-circle': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-emitters-shape-circle": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/emittersShapes/circle/dist - '@tsparticles/plugin-emitters-shape-square': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-emitters-shape-square": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/emittersShapes/square/dist - '@tsparticles/shape-text': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-text": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/text/dist - '@tsparticles/slim': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/slim": + specifier: workspace:4.0.0-alpha.14 version: link:../slim/dist - '@tsparticles/updater-destroy': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-destroy": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/destroy/dist - '@tsparticles/updater-roll': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-roll": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/roll/dist - '@tsparticles/updater-tilt': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-tilt": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/tilt/dist - '@tsparticles/updater-twinkle': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-twinkle": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/twinkle/dist - '@tsparticles/updater-wobble': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-wobble": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/wobble/dist publishDirectory: dist bundles/pjs: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist - '@tsparticles/plugin-responsive': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-responsive": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/responsive/dist tsparticles: - specifier: workspace:4.0.0-alpha.8 + specifier: workspace:4.0.0-alpha.14 version: link:../full/dist devDependencies: - '@tsparticles/plugin-interactivity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-interactivity": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/interactivity/dist publishDirectory: dist bundles/slim: dependencies: - '@tsparticles/basic': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/basic": + specifier: workspace:4.0.0-alpha.14 version: link:../basic/dist - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist - '@tsparticles/interaction-external-attract': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-attract": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/attract/dist - '@tsparticles/interaction-external-bounce': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-bounce": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/bounce/dist - '@tsparticles/interaction-external-bubble': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-bubble": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/bubble/dist - '@tsparticles/interaction-external-connect': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-connect": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/connect/dist - '@tsparticles/interaction-external-grab': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-grab": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/grab/dist - '@tsparticles/interaction-external-parallax': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-parallax": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/parallax/dist - '@tsparticles/interaction-external-pause': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-pause": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/pause/dist - '@tsparticles/interaction-external-push': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-push": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/push/dist - '@tsparticles/interaction-external-remove': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-remove": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/remove/dist - '@tsparticles/interaction-external-repulse': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-repulse": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/repulse/dist - '@tsparticles/interaction-external-slow': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-slow": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/slow/dist - '@tsparticles/interaction-particles-attract': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-particles-attract": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/particles/attract/dist - '@tsparticles/interaction-particles-collisions': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-particles-collisions": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/particles/collisions/dist - '@tsparticles/interaction-particles-links': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-particles-links": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/particles/links/dist - '@tsparticles/plugin-easing-quad': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-quad": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/quad/dist - '@tsparticles/shape-emoji': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-emoji": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/emoji/dist - '@tsparticles/shape-image': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-image": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/image/dist - '@tsparticles/shape-line': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-line": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/line/dist - '@tsparticles/shape-polygon': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-polygon": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/polygon/dist - '@tsparticles/shape-square': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-square": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/square/dist - '@tsparticles/shape-star': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-star": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/star/dist - '@tsparticles/updater-life': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-life": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/life/dist - '@tsparticles/updater-rotate': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-rotate": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/rotate/dist - '@tsparticles/updater-stroke-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-stroke-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/strokeColor/dist publishDirectory: dist demo/electron: dependencies: - '@tsparticles/configs': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/configs": + specifier: workspace:4.0.0-alpha.14 version: link:../../utils/configs/dist - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist tsparticles: - specifier: workspace:4.0.0-alpha.8 + specifier: workspace:4.0.0-alpha.14 version: link:../../bundles/full/dist devDependencies: electron: - specifier: ^40.0.0 - version: 40.0.0 + specifier: ^40.1.0 + version: 40.1.0 demo/vanilla: dependencies: - '@tsparticles/all': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/all": + specifier: workspace:4.0.0-alpha.14 version: link:../../bundles/all/dist - '@tsparticles/basic': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/basic": + specifier: workspace:4.0.0-alpha.14 version: link:../../bundles/basic/dist - '@tsparticles/confetti': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/canvas-utils": + specifier: workspace:4.0.0-alpha.14 + version: link:../../utils/canvasUtils/dist + "@tsparticles/confetti": + specifier: workspace:4.0.0-alpha.14 version: link:../../bundles/confetti/dist - '@tsparticles/configs': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/configs": + specifier: workspace:4.0.0-alpha.14 version: link:../../utils/configs/dist - '@tsparticles/effect-bubble': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/effect-bubble": + specifier: workspace:4.0.0-alpha.14 version: link:../../effects/bubble/dist - '@tsparticles/effect-shadow': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/effect-particles": + specifier: workspace:4.0.0-alpha.14 + version: link:../../effects/particles/dist + "@tsparticles/effect-shadow": + specifier: workspace:4.0.0-alpha.14 version: link:../../effects/shadow/dist - '@tsparticles/effect-trail': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/effect-trail": + specifier: workspace:4.0.0-alpha.14 version: link:../../effects/trail/dist - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist - '@tsparticles/fireworks': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/fireworks": + specifier: workspace:4.0.0-alpha.14 version: link:../../bundles/fireworks/dist - '@tsparticles/fractal-noise': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/fractal-noise": + specifier: workspace:4.0.0-alpha.14 version: link:../../utils/fractalNoise/dist - '@tsparticles/interaction-external-attract': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-attract": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/attract/dist - '@tsparticles/interaction-external-bounce': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-bounce": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/bounce/dist - '@tsparticles/interaction-external-bubble': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-bubble": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/bubble/dist - '@tsparticles/interaction-external-connect': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-connect": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/connect/dist - '@tsparticles/interaction-external-grab': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-grab": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/grab/dist - '@tsparticles/interaction-external-parallax': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-parallax": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/parallax/dist - '@tsparticles/interaction-external-particle': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-particle": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/particle/dist - '@tsparticles/interaction-external-pause': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-pause": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/pause/dist - '@tsparticles/interaction-external-pop': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-pop": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/pop/dist - '@tsparticles/interaction-external-push': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-push": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/push/dist - '@tsparticles/interaction-external-remove': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-remove": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/remove/dist - '@tsparticles/interaction-external-repulse': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-repulse": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/repulse/dist - '@tsparticles/interaction-external-slow': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-slow": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/slow/dist - '@tsparticles/interaction-external-trail': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-external-trail": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/external/trail/dist - '@tsparticles/interaction-light': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-light": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/light/dist - '@tsparticles/interaction-particles-attract': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-particles-attract": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/particles/attract/dist - '@tsparticles/interaction-particles-collisions': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-particles-collisions": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/particles/collisions/dist - '@tsparticles/interaction-particles-links': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-particles-links": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/particles/links/dist - '@tsparticles/interaction-particles-repulse': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-particles-repulse": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/particles/repulse/dist - '@tsparticles/move-base': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/move-base": + specifier: workspace:4.0.0-alpha.14 version: link:../../move/base/dist - '@tsparticles/noise-field': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/noise-field": + specifier: workspace:4.0.0-alpha.14 version: link:../../utils/noiseField/dist - '@tsparticles/path-curl-noise': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/path-branches": + specifier: workspace:4.0.0-alpha.14 + version: link:../../paths/branches/dist + "@tsparticles/path-brownian": + specifier: workspace:4.0.0-alpha.14 + version: link:../../paths/brownian/dist + "@tsparticles/path-curl-noise": + specifier: workspace:4.0.0-alpha.14 version: link:../../paths/curlNoise/dist - '@tsparticles/path-curves': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/path-curves": + specifier: workspace:4.0.0-alpha.14 version: link:../../paths/curves/dist - '@tsparticles/path-fractal-noise': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/path-fractal-noise": + specifier: workspace:4.0.0-alpha.14 version: link:../../paths/fractalNoise/dist - '@tsparticles/path-perlin-noise': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/path-grid": + specifier: workspace:4.0.0-alpha.14 + version: link:../../paths/grid/dist + "@tsparticles/path-levy": + specifier: workspace:4.0.0-alpha.14 + version: link:../../paths/levy/dist + "@tsparticles/path-perlin-noise": + specifier: workspace:4.0.0-alpha.14 version: link:../../paths/perlinNoise/dist - '@tsparticles/path-polygon': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/path-polygon": + specifier: workspace:4.0.0-alpha.14 version: link:../../paths/polygon/dist - '@tsparticles/path-simplex-noise': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/path-simplex-noise": + specifier: workspace:4.0.0-alpha.14 version: link:../../paths/simplexNoise/dist - '@tsparticles/path-svg': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/path-spiral": + specifier: workspace:4.0.0-alpha.14 + version: link:../../paths/spiral/dist + "@tsparticles/path-svg": + specifier: workspace:4.0.0-alpha.14 version: link:../../paths/svg/dist - '@tsparticles/path-utils': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/path-utils": + specifier: workspace:4.0.0-alpha.14 version: link:../../utils/pathUtils/dist - '@tsparticles/path-zig-zag': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/path-zig-zag": + specifier: workspace:4.0.0-alpha.14 version: link:../../paths/zigzag/dist - '@tsparticles/perlin-noise': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/perlin-noise": + specifier: workspace:4.0.0-alpha.14 version: link:../../utils/perlinNoise/dist - '@tsparticles/pjs': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/pjs": + specifier: workspace:4.0.0-alpha.14 version: link:../../bundles/pjs/dist - '@tsparticles/plugin-absorbers': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-absorbers": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/absorbers/dist - '@tsparticles/plugin-background-mask': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-background-mask": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/backgroundMask/dist - '@tsparticles/plugin-blend': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-blend": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/blend/dist - '@tsparticles/plugin-canvas-mask': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-canvas-mask": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/canvasMask/dist - '@tsparticles/plugin-easing-back': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-back": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/back/dist - '@tsparticles/plugin-easing-bounce': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-bounce": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/bounce/dist - '@tsparticles/plugin-easing-circ': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-circ": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/circ/dist - '@tsparticles/plugin-easing-cubic': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-cubic": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/cubic/dist - '@tsparticles/plugin-easing-elastic': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-elastic": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/elastic/dist - '@tsparticles/plugin-easing-expo': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-expo": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/expo/dist - '@tsparticles/plugin-easing-gaussian': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-gaussian": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/gaussian/dist - '@tsparticles/plugin-easing-linear': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-linear": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/linear/dist - '@tsparticles/plugin-easing-quad': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-quad": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/quad/dist - '@tsparticles/plugin-easing-quart': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-quart": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/quart/dist - '@tsparticles/plugin-easing-quint': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-quint": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/quint/dist - '@tsparticles/plugin-easing-sigmoid': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-sigmoid": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/sigmoid/dist - '@tsparticles/plugin-easing-sine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-sine": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/sine/dist - '@tsparticles/plugin-easing-smoothstep': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-easing-smoothstep": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/easings/smoothstep/dist - '@tsparticles/plugin-emitters': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-emitters": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/emitters/dist - '@tsparticles/plugin-emitters-shape-canvas': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-emitters-shape-canvas": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/emittersShapes/canvas/dist - '@tsparticles/plugin-emitters-shape-circle': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-emitters-shape-circle": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/emittersShapes/circle/dist - '@tsparticles/plugin-emitters-shape-path': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-emitters-shape-path": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/emittersShapes/path/dist - '@tsparticles/plugin-emitters-shape-polygon': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-emitters-shape-polygon": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/emittersShapes/polygon/dist - '@tsparticles/plugin-emitters-shape-square': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-emitters-shape-square": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/emittersShapes/square/dist - '@tsparticles/plugin-export-image': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-export-image": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/exports/image/dist - '@tsparticles/plugin-export-json': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-export-json": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/exports/json/dist - '@tsparticles/plugin-export-video': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-export-video": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/exports/video/dist - '@tsparticles/plugin-hex-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-hex-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/colors/hex/dist - '@tsparticles/plugin-hsl-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-hsl-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/colors/hsl/dist - '@tsparticles/plugin-hsv-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-hsv-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/colors/hsv/dist - '@tsparticles/plugin-hwb-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-hwb-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/colors/hwb/dist - '@tsparticles/plugin-infection': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-infection": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/infection/dist - '@tsparticles/plugin-interactivity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-interactivity": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/interactivity/dist - '@tsparticles/plugin-lab-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-lab-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/colors/lab/dist - '@tsparticles/plugin-lch-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-lch-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/colors/lch/dist - '@tsparticles/plugin-manual-particles': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-manual-particles": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/manualParticles/dist - '@tsparticles/plugin-motion': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-motion": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/motion/dist - '@tsparticles/plugin-named-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-named-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/colors/named/dist - '@tsparticles/plugin-oklab-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-oklab-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/colors/oklab/dist - '@tsparticles/plugin-oklch-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-oklch-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/colors/oklch/dist - '@tsparticles/plugin-poisson-disc': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-poisson-disc": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/poisson/dist - '@tsparticles/plugin-polygon-mask': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-polygon-mask": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/polygonMask/dist - '@tsparticles/plugin-responsive': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-responsive": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/responsive/dist - '@tsparticles/plugin-rgb-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-rgb-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/colors/rgb/dist - '@tsparticles/plugin-sounds': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-sounds": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/sounds/dist - '@tsparticles/plugin-themes': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-themes": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/themes/dist - '@tsparticles/plugin-trail': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-trail": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/trail/dist - '@tsparticles/shape-arrow': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-arrow": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/arrow/dist - '@tsparticles/shape-cards': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-cards": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/cards/dist - '@tsparticles/shape-circle': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-circle": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/circle/dist - '@tsparticles/shape-cog': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-cog": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/cog/dist - '@tsparticles/shape-emoji': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-emoji": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/emoji/dist - '@tsparticles/shape-heart': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-heart": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/heart/dist - '@tsparticles/shape-image': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-image": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/image/dist - '@tsparticles/shape-infinity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-infinity": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/infinity/dist - '@tsparticles/shape-line': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-line": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/line/dist - '@tsparticles/shape-path': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-path": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/path/dist - '@tsparticles/shape-polygon': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-polygon": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/polygon/dist - '@tsparticles/shape-rounded-polygon': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-rounded-polygon": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/rounded-polygon/dist - '@tsparticles/shape-rounded-rect': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-rounded-rect": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/rounded-rect/dist - '@tsparticles/shape-spiral': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-spiral": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/spiral/dist - '@tsparticles/shape-square': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-square": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/square/dist - '@tsparticles/shape-star': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-star": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/star/dist - '@tsparticles/shape-text': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/shape-text": + specifier: workspace:4.0.0-alpha.14 version: link:../../shapes/text/dist - '@tsparticles/simplex-noise': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/simplex-noise": + specifier: workspace:4.0.0-alpha.14 version: link:../../utils/simplexNoise/dist - '@tsparticles/slim': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/slim": + specifier: workspace:4.0.0-alpha.14 version: link:../../bundles/slim/dist - '@tsparticles/smooth-value-noise': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/smooth-value-noise": + specifier: workspace:4.0.0-alpha.14 version: link:../../utils/smoothValueNoise/dist - '@tsparticles/updater-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/color/dist - '@tsparticles/updater-destroy': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-destroy": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/destroy/dist - '@tsparticles/updater-gradient': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-gradient": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/gradient/dist - '@tsparticles/updater-life': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-life": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/life/dist - '@tsparticles/updater-opacity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-opacity": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/opacity/dist - '@tsparticles/updater-orbit': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-orbit": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/orbit/dist - '@tsparticles/updater-out-modes': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-out-modes": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/outModes/dist - '@tsparticles/updater-roll': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-roll": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/roll/dist - '@tsparticles/updater-rotate': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-rotate": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/rotate/dist - '@tsparticles/updater-size': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-size": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/size/dist - '@tsparticles/updater-stroke-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-stroke-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/strokeColor/dist - '@tsparticles/updater-tilt': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-tilt": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/tilt/dist - '@tsparticles/updater-twinkle': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-twinkle": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/twinkle/dist - '@tsparticles/updater-wobble': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-wobble": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/wobble/dist tsparticles: - specifier: workspace:4.0.0-alpha.8 + specifier: workspace:4.0.0-alpha.14 version: link:../../bundles/full/dist devDependencies: - '@datalust/winston-seq': + "@datalust/winston-seq": specifier: ^3.0.1 version: 3.0.1(encoding@0.1.13)(winston@3.19.0) - '@fortawesome/fontawesome-free': + "@fortawesome/fontawesome-free": specifier: ^7.1.0 version: 7.1.0 - '@types/connect-livereload': + "@types/connect-livereload": specifier: ^0.6.3 version: 0.6.3 - '@types/express': + "@types/express": specifier: ^5.0.6 version: 5.0.6 - '@types/livereload': + "@types/livereload": specifier: ^0.9.5 version: 0.9.5 - '@types/node': - specifier: ^25.0.10 - version: 25.0.10 - '@types/stylus': + "@types/node": + specifier: ^25.2.0 + version: 25.2.0 + "@types/stylus": specifier: ^0.48.43 version: 0.48.43 ace-builds: - specifier: ^1.43.5 - version: 1.43.5 + specifier: ^1.43.6 + version: 1.43.6 bootstrap: specifier: ^5.3.8 version: 5.3.8(@popperjs/core@2.11.8) @@ -1098,46 +1136,46 @@ importers: demo/vanilla_new: dependencies: - '@tsparticles/configs': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/configs": + specifier: workspace:4.0.0-alpha.14 version: link:../../utils/configs/dist - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist - '@tsparticles/interaction-light': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-light": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/light/dist - '@tsparticles/interaction-particles-repulse': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/interaction-particles-repulse": + specifier: workspace:4.0.0-alpha.14 version: link:../../interactions/particles/repulse/dist - '@tsparticles/path-curves': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/path-curves": + specifier: workspace:4.0.0-alpha.14 version: link:../../paths/curves/dist - '@tsparticles/path-perlin-noise': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/path-perlin-noise": + specifier: workspace:4.0.0-alpha.14 version: link:../../paths/perlinNoise/dist - '@tsparticles/path-polygon': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/path-polygon": + specifier: workspace:4.0.0-alpha.14 version: link:../../paths/polygon/dist - '@tsparticles/path-simplex-noise': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/path-simplex-noise": + specifier: workspace:4.0.0-alpha.14 version: link:../../paths/simplexNoise/dist - '@tsparticles/plugin-infection': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-infection": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/infection/dist - '@tsparticles/updater-gradient': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-gradient": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/gradient/dist - '@tsparticles/updater-orbit': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/updater-orbit": + specifier: workspace:4.0.0-alpha.14 version: link:../../updaters/orbit/dist tsparticles: - specifier: workspace:4.0.0-alpha.8 + specifier: workspace:4.0.0-alpha.14 version: link:../../bundles/full/dist devDependencies: - '@swc/core': - specifier: ^1.15.10 - version: 1.15.10 + "@swc/core": + specifier: ^1.15.11 + version: 1.15.11 fs-extra: specifier: ^11.3.3 version: 11.3.3 @@ -1150,14 +1188,14 @@ importers: demo/vite: dependencies: - '@tsparticles/all': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/all": + specifier: workspace:4.0.0-alpha.14 version: link:../../bundles/all/dist - '@tsparticles/configs': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/configs": + specifier: workspace:4.0.0-alpha.14 version: link:../../utils/configs/dist - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist devDependencies: typescript: @@ -1165,26 +1203,33 @@ importers: version: 5.9.3 vite: specifier: ^7.3.0 - version: 7.3.1(@types/node@25.0.10)(jiti@2.4.2)(lightningcss@1.30.2)(sass@1.97.3)(stylus@0.64.0)(terser@5.44.1)(yaml@2.8.1) + version: 7.3.1(@types/node@25.2.0)(jiti@2.4.2)(lightningcss@1.30.2)(sass@1.97.3)(stylus@0.64.0)(terser@5.44.1)(yaml@2.8.1) effects/bubble: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 + version: link:../../engine/dist + publishDirectory: dist + + effects/particles: + dependencies: + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist effects/shadow: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist effects/trail: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist @@ -1193,879 +1238,942 @@ importers: interactions/external/attract: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist - '@tsparticles/plugin-interactivity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-interactivity": + specifier: workspace:4.0.0-alpha.14 version: link:../../../plugins/interactivity/dist publishDirectory: dist interactions/external/bounce: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist - '@tsparticles/plugin-interactivity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-interactivity": + specifier: workspace:4.0.0-alpha.14 version: link:../../../plugins/interactivity/dist publishDirectory: dist interactions/external/bubble: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist - '@tsparticles/plugin-interactivity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-interactivity": + specifier: workspace:4.0.0-alpha.14 version: link:../../../plugins/interactivity/dist publishDirectory: dist interactions/external/connect: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/canvas-utils": + specifier: workspace:4.0.0-alpha.14 + version: link:../../../utils/canvasUtils/dist + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist - '@tsparticles/plugin-interactivity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-interactivity": + specifier: workspace:4.0.0-alpha.14 version: link:../../../plugins/interactivity/dist publishDirectory: dist interactions/external/grab: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/canvas-utils": + specifier: workspace:4.0.0-alpha.14 + version: link:../../../utils/canvasUtils/dist + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist - '@tsparticles/plugin-interactivity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-interactivity": + specifier: workspace:4.0.0-alpha.14 version: link:../../../plugins/interactivity/dist publishDirectory: dist interactions/external/parallax: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist - '@tsparticles/plugin-interactivity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-interactivity": + specifier: workspace:4.0.0-alpha.14 version: link:../../../plugins/interactivity/dist publishDirectory: dist interactions/external/particle: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist - '@tsparticles/plugin-interactivity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-interactivity": + specifier: workspace:4.0.0-alpha.14 version: link:../../../plugins/interactivity/dist publishDirectory: dist interactions/external/pause: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist - '@tsparticles/plugin-interactivity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-interactivity": + specifier: workspace:4.0.0-alpha.14 version: link:../../../plugins/interactivity/dist publishDirectory: dist interactions/external/pop: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist - '@tsparticles/plugin-interactivity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-interactivity": + specifier: workspace:4.0.0-alpha.14 version: link:../../../plugins/interactivity/dist publishDirectory: dist interactions/external/push: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist - '@tsparticles/plugin-interactivity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-interactivity": + specifier: workspace:4.0.0-alpha.14 version: link:../../../plugins/interactivity/dist publishDirectory: dist interactions/external/remove: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist - '@tsparticles/plugin-interactivity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-interactivity": + specifier: workspace:4.0.0-alpha.14 version: link:../../../plugins/interactivity/dist publishDirectory: dist interactions/external/repulse: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist - '@tsparticles/plugin-interactivity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-interactivity": + specifier: workspace:4.0.0-alpha.14 version: link:../../../plugins/interactivity/dist publishDirectory: dist interactions/external/slow: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist - '@tsparticles/plugin-interactivity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-interactivity": + specifier: workspace:4.0.0-alpha.14 version: link:../../../plugins/interactivity/dist publishDirectory: dist interactions/external/trail: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist - '@tsparticles/plugin-interactivity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-interactivity": + specifier: workspace:4.0.0-alpha.14 version: link:../../../plugins/interactivity/dist publishDirectory: dist interactions/light: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist - '@tsparticles/plugin-interactivity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-interactivity": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/interactivity/dist publishDirectory: dist interactions/particles/attract: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist - '@tsparticles/plugin-interactivity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-interactivity": + specifier: workspace:4.0.0-alpha.14 version: link:../../../plugins/interactivity/dist publishDirectory: dist interactions/particles/collisions: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist - '@tsparticles/plugin-interactivity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-interactivity": + specifier: workspace:4.0.0-alpha.14 version: link:../../../plugins/interactivity/dist publishDirectory: dist interactions/particles/links: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/canvas-utils": + specifier: workspace:4.0.0-alpha.14 + version: link:../../../utils/canvasUtils/dist + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist - '@tsparticles/plugin-interactivity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-interactivity": + specifier: workspace:4.0.0-alpha.14 version: link:../../../plugins/interactivity/dist publishDirectory: dist interactions/particles/repulse: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist - '@tsparticles/plugin-interactivity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-interactivity": + specifier: workspace:4.0.0-alpha.14 version: link:../../../plugins/interactivity/dist publishDirectory: dist move/base: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 + version: link:../../engine/dist + publishDirectory: dist + + paths/branches: + dependencies: + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 + version: link:../../engine/dist + publishDirectory: dist + + paths/brownian: + dependencies: + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist paths/curlNoise: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist - '@tsparticles/simplex-noise': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/simplex-noise": + specifier: workspace:4.0.0-alpha.14 version: link:../../utils/simplexNoise/dist publishDirectory: dist paths/curves: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist paths/fractalNoise: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist - '@tsparticles/fractal-noise': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/fractal-noise": + specifier: workspace:4.0.0-alpha.14 version: link:../../utils/fractalNoise/dist - '@tsparticles/noise-field': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/noise-field": + specifier: workspace:4.0.0-alpha.14 version: link:../../utils/noiseField/dist publishDirectory: dist + paths/grid: + dependencies: + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 + version: link:../../engine/dist + publishDirectory: dist + + paths/levy: + dependencies: + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 + version: link:../../engine/dist + publishDirectory: dist + paths/perlinNoise: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist - '@tsparticles/noise-field': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/noise-field": + specifier: workspace:4.0.0-alpha.14 version: link:../../utils/noiseField/dist - '@tsparticles/perlin-noise': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/perlin-noise": + specifier: workspace:4.0.0-alpha.14 version: link:../../utils/perlinNoise/dist publishDirectory: dist paths/polygon: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist paths/simplexNoise: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist - '@tsparticles/noise-field': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/noise-field": + specifier: workspace:4.0.0-alpha.14 version: link:../../utils/noiseField/dist - '@tsparticles/simplex-noise': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/simplex-noise": + specifier: workspace:4.0.0-alpha.14 version: link:../../utils/simplexNoise/dist publishDirectory: dist + paths/spiral: + dependencies: + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 + version: link:../../engine/dist + publishDirectory: dist + paths/svg: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist paths/zigzag: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist plugins/absorbers: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist - '@tsparticles/plugin-interactivity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-interactivity": + specifier: workspace:4.0.0-alpha.14 version: link:../interactivity/dist publishDirectory: dist plugins/backgroundMask: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist plugins/blend: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist plugins/canvasMask: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/canvas-utils": + specifier: workspace:4.0.0-alpha.14 + version: link:../../utils/canvasUtils/dist + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist plugins/colors/hex: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/colors/hsl: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/colors/hsv: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/colors/hwb: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/colors/lab: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/colors/lch: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/colors/named: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/colors/oklab: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/colors/oklch: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/colors/rgb: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/easings/back: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/easings/bounce: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/easings/circ: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/easings/cubic: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/easings/elastic: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/easings/expo: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/easings/gaussian: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/easings/linear: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/easings/quad: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/easings/quart: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/easings/quint: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/easings/sigmoid: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/easings/sine: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/easings/smoothstep: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/emitters: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist - '@tsparticles/plugin-interactivity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-interactivity": + specifier: workspace:4.0.0-alpha.14 version: link:../interactivity/dist publishDirectory: dist plugins/emittersShapes/canvas: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/canvas-utils": + specifier: workspace:4.0.0-alpha.14 + version: link:../../../utils/canvasUtils/dist + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist - '@tsparticles/plugin-emitters': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-emitters": + specifier: workspace:4.0.0-alpha.14 version: link:../../emitters/dist publishDirectory: dist plugins/emittersShapes/circle: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist - '@tsparticles/plugin-emitters': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-emitters": + specifier: workspace:4.0.0-alpha.14 version: link:../../emitters/dist publishDirectory: dist plugins/emittersShapes/path: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist - '@tsparticles/plugin-emitters': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-emitters": + specifier: workspace:4.0.0-alpha.14 version: link:../../emitters/dist publishDirectory: dist plugins/emittersShapes/polygon: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist - '@tsparticles/plugin-emitters': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-emitters": + specifier: workspace:4.0.0-alpha.14 version: link:../../emitters/dist publishDirectory: dist plugins/emittersShapes/square: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist - '@tsparticles/plugin-emitters': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-emitters": + specifier: workspace:4.0.0-alpha.14 version: link:../../emitters/dist publishDirectory: dist plugins/exports/image: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/exports/json: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/exports/video: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../../engine/dist publishDirectory: dist plugins/infection: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist - '@tsparticles/plugin-interactivity': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-interactivity": + specifier: workspace:4.0.0-alpha.14 version: link:../interactivity/dist publishDirectory: dist plugins/interactivity: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist plugins/manualParticles: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist plugins/motion: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist plugins/poisson: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist plugins/polygonMask: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist plugins/responsive: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist plugins/sounds: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist plugins/themes: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist plugins/trail: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist shapes/arrow: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist shapes/cards: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist - '@tsparticles/path-utils': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/path-utils": + specifier: workspace:4.0.0-alpha.14 version: link:../../utils/pathUtils/dist publishDirectory: dist shapes/circle: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist shapes/cog: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist shapes/emoji: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/canvas-utils": + specifier: workspace:4.0.0-alpha.14 + version: link:../../utils/canvasUtils/dist + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist shapes/heart: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist shapes/image: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist shapes/infinity: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist shapes/line: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist shapes/path: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist - '@tsparticles/path-utils': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/path-utils": + specifier: workspace:4.0.0-alpha.14 version: link:../../utils/pathUtils/dist publishDirectory: dist shapes/polygon: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist shapes/rounded-polygon: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist shapes/rounded-rect: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist shapes/spiral: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist shapes/square: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist shapes/star: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist shapes/text: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/canvas-utils": + specifier: workspace:4.0.0-alpha.14 + version: link:../../utils/canvasUtils/dist + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist updaters/color: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist updaters/destroy: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist updaters/gradient: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist updaters/life: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist updaters/opacity: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist updaters/orbit: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist updaters/outModes: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist updaters/roll: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist updaters/rotate: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist updaters/size: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist updaters/strokeColor: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist updaters/tilt: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist updaters/twinkle: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist updaters/wobble: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 + version: link:../../engine/dist + publishDirectory: dist + + utils/canvasUtils: + dependencies: + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist utils/configs: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist utils/fractalNoise: dependencies: - '@tsparticles/smooth-value-noise': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/smooth-value-noise": + specifier: workspace:4.0.0-alpha.14 version: link:../smoothValueNoise/dist publishDirectory: dist utils/noiseField: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist utils/pathUtils: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist publishDirectory: dist @@ -2080,2107 +2188,1943 @@ importers: utils/tests: dependencies: - '@tsparticles/engine': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/engine": + specifier: workspace:4.0.0-alpha.14 version: link:../../engine/dist - '@tsparticles/plugin-hex-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-hex-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/colors/hex/dist - '@tsparticles/plugin-hsl-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-hsl-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/colors/hsl/dist - '@tsparticles/plugin-hsv-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-hsv-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/colors/hsv/dist - '@tsparticles/plugin-rgb-color': - specifier: workspace:4.0.0-alpha.8 + "@tsparticles/plugin-rgb-color": + specifier: workspace:4.0.0-alpha.14 version: link:../../plugins/colors/rgb/dist packages: - - '@aashutoshrathi/word-wrap@1.2.6': - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - - '@acemir/cssom@0.9.29': - resolution: {integrity: sha512-G90x0VW+9nW4dFajtjCoT+NM0scAfH9Mb08IcjgFHYbfiL/lU04dTF9JuVOi3/OH+DJCQdcIseSXkdCB9Ky6JA==} - - '@adobe/css-tools@4.3.3': - resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} - - '@asamuzakjp/css-color@4.1.1': - resolution: {integrity: sha512-B0Hv6G3gWGMn0xKJ0txEi/jM5iFpT3MfDxmhZFb4W047GvytCf1DHQ1D69W3zHI4yWe2aTZAA0JnbMZ7Xc8DuQ==} - - '@asamuzakjp/dom-selector@6.7.6': - resolution: {integrity: sha512-hBaJER6A9MpdG3WgdlOolHmbOYvSk46y7IQN/1+iqiCuUu6iWdQrs9DGKF8ocqsEqWujWf/V7b7vaDgiUmIvUg==} - - '@asamuzakjp/nwsapi@2.3.9': - resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} - - '@augment-vir/assert@31.54.4': - resolution: {integrity: sha512-nUZZ2hYAFrBVWxcL0fSEY1jdKrXztwm2hswC5bGkGZz7vfhnYMiag19CApkSWjRB3RlZnlrjElWNjYOoy7gFYw==} - engines: {node: '>=22'} - - '@augment-vir/common@31.54.4': - resolution: {integrity: sha512-+vRgNyZpZvbwoXe6boJA/etOKcZbPo1JgHzKMIpW/yXqym/6MLB5eVSOMYWympcj7oCE8Nz6ScqXEEKxsMKYzw==} - engines: {node: '>=22'} - - '@augment-vir/core@31.54.4': - resolution: {integrity: sha512-QN2Cts8MoNYKTWQMPZDFaJavRCTisa054UxVGJAhjfXp3XuGo9uauIt5TAPUuDSy8zwSPVnCjO0wAnvmU8m1Yw==} - engines: {node: '>=22'} - - '@babel/code-frame@7.27.1': - resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} - engines: {node: '>=6.9.0'} - - '@babel/code-frame@7.28.6': - resolution: {integrity: sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.28.6': - resolution: {integrity: sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.28.6': - resolution: {integrity: sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.28.6': - resolution: {integrity: sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-annotate-as-pure@7.27.3': - resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.28.6': - resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-create-class-features-plugin@7.28.6': - resolution: {integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-create-regexp-features-plugin@7.27.1': - resolution: {integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-create-regexp-features-plugin@7.28.5': - resolution: {integrity: sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-define-polyfill-provider@0.6.5': - resolution: {integrity: sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - '@babel/helper-globals@7.28.0': - resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-member-expression-to-functions@7.27.1': - resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-member-expression-to-functions@7.28.5': - resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.28.6': - resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.28.6': - resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-optimise-call-expression@7.27.1': - resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-plugin-utils@7.28.6': - resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} - engines: {node: '>=6.9.0'} - - '@babel/helper-remap-async-to-generator@7.27.1': - resolution: {integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-replace-supers@7.27.1': - resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-replace-supers@7.28.6': - resolution: {integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': - resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.28.5': - resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.27.1': - resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-wrap-function@7.28.3': - resolution: {integrity: sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.28.6': - resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.28.5': - resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} - engines: {node: '>=6.0.0'} + "@aashutoshrathi/word-wrap@1.2.6": + resolution: + { integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== } + engines: { node: ">=0.10.0" } + + "@acemir/cssom@0.9.31": + resolution: + { integrity: sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA== } + + "@adobe/css-tools@4.3.3": + resolution: + { integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ== } + + "@asamuzakjp/css-color@4.1.1": + resolution: + { integrity: sha512-B0Hv6G3gWGMn0xKJ0txEi/jM5iFpT3MfDxmhZFb4W047GvytCf1DHQ1D69W3zHI4yWe2aTZAA0JnbMZ7Xc8DuQ== } + + "@asamuzakjp/dom-selector@6.7.6": + resolution: + { integrity: sha512-hBaJER6A9MpdG3WgdlOolHmbOYvSk46y7IQN/1+iqiCuUu6iWdQrs9DGKF8ocqsEqWujWf/V7b7vaDgiUmIvUg== } + + "@asamuzakjp/nwsapi@2.3.9": + resolution: + { integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q== } + + "@augment-vir/assert@31.54.4": + resolution: + { integrity: sha512-nUZZ2hYAFrBVWxcL0fSEY1jdKrXztwm2hswC5bGkGZz7vfhnYMiag19CApkSWjRB3RlZnlrjElWNjYOoy7gFYw== } + engines: { node: ">=22" } + + "@augment-vir/common@31.54.4": + resolution: + { integrity: sha512-+vRgNyZpZvbwoXe6boJA/etOKcZbPo1JgHzKMIpW/yXqym/6MLB5eVSOMYWympcj7oCE8Nz6ScqXEEKxsMKYzw== } + engines: { node: ">=22" } + + "@augment-vir/core@31.54.4": + resolution: + { integrity: sha512-QN2Cts8MoNYKTWQMPZDFaJavRCTisa054UxVGJAhjfXp3XuGo9uauIt5TAPUuDSy8zwSPVnCjO0wAnvmU8m1Yw== } + engines: { node: ">=22" } + + "@babel/code-frame@7.27.1": + resolution: + { integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== } + engines: { node: ">=6.9.0" } + + "@babel/helper-string-parser@7.27.1": + resolution: + { integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== } + engines: { node: ">=6.9.0" } + + "@babel/helper-validator-identifier@7.28.5": + resolution: + { integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== } + engines: { node: ">=6.9.0" } + + "@babel/parser@7.28.5": + resolution: + { integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ== } + engines: { node: ">=6.0.0" } hasBin: true - '@babel/parser@7.28.6': - resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==} - engines: {node: '>=6.0.0'} + "@babel/parser@7.28.6": + resolution: + { integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ== } + engines: { node: ">=6.0.0" } hasBin: true - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5': - resolution: {integrity: sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1': - resolution: {integrity: sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1': - resolution: {integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1': - resolution: {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6': - resolution: {integrity: sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-assertions@7.28.6': - resolution: {integrity: sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-attributes@7.28.6': - resolution: {integrity: sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==} - 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.27.1': - resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-generator-functions@7.28.6': - resolution: {integrity: sha512-9knsChgsMzBV5Yh3kkhrZNxH3oCYAfMBkNNaVN4cP2RVlFPe8wYdwwcnOsAbkdDoV9UjFtOXWrWB52M8W4jNeA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-to-generator@7.28.6': - resolution: {integrity: sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoped-functions@7.27.1': - resolution: {integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoping@7.28.6': - resolution: {integrity: sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-properties@7.28.6': - resolution: {integrity: sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-static-block@7.28.6': - resolution: {integrity: sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - - '@babel/plugin-transform-classes@7.28.6': - resolution: {integrity: sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-computed-properties@7.28.6': - resolution: {integrity: sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-destructuring@7.28.5': - resolution: {integrity: sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-dotall-regex@7.28.6': - resolution: {integrity: sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-duplicate-keys@7.27.1': - resolution: {integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.28.6': - resolution: {integrity: sha512-5suVoXjC14lUN6ZL9OLKIHCNVWCrqGqlmEp/ixdXjvgnEl/kauLvvMO/Xw9NyMc95Joj1AeLVPVMvibBgSoFlA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-dynamic-import@7.27.1': - resolution: {integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-explicit-resource-management@7.28.6': - resolution: {integrity: sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-exponentiation-operator@7.28.6': - resolution: {integrity: sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-export-namespace-from@7.27.1': - resolution: {integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-for-of@7.27.1': - resolution: {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-function-name@7.27.1': - resolution: {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-json-strings@7.28.6': - resolution: {integrity: sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-literals@7.27.1': - resolution: {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-logical-assignment-operators@7.28.6': - resolution: {integrity: sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-member-expression-literals@7.27.1': - resolution: {integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-amd@7.27.1': - resolution: {integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-commonjs@7.28.6': - resolution: {integrity: sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-systemjs@7.28.5': - resolution: {integrity: sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-umd@7.27.1': - resolution: {integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-named-capturing-groups-regex@7.27.1': - resolution: {integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-new-target@7.27.1': - resolution: {integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-nullish-coalescing-operator@7.28.6': - resolution: {integrity: sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-numeric-separator@7.28.6': - resolution: {integrity: sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-rest-spread@7.28.6': - resolution: {integrity: sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-super@7.27.1': - resolution: {integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-catch-binding@7.28.6': - resolution: {integrity: sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-chaining@7.28.6': - resolution: {integrity: sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-parameters@7.27.7': - resolution: {integrity: sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-methods@7.28.6': - resolution: {integrity: sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-property-in-object@7.28.6': - resolution: {integrity: sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-property-literals@7.27.1': - resolution: {integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-regenerator@7.28.6': - resolution: {integrity: sha512-eZhoEZHYQLL5uc1gS5e9/oTknS0sSSAtd5TkKMUp3J+S/CaUjagc0kOUPsEbDmMeva0nC3WWl4SxVY6+OBuxfw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-regexp-modifiers@7.28.6': - resolution: {integrity: sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-reserved-words@7.27.1': - resolution: {integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-shorthand-properties@7.27.1': - resolution: {integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-spread@7.28.6': - resolution: {integrity: sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-sticky-regex@7.27.1': - resolution: {integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-template-literals@7.27.1': - resolution: {integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typeof-symbol@7.27.1': - resolution: {integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-escapes@7.27.1': - resolution: {integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-property-regex@7.28.6': - resolution: {integrity: sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-regex@7.27.1': - resolution: {integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-sets-regex@7.28.6': - resolution: {integrity: sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/preset-env@7.28.6': - resolution: {integrity: sha512-GaTI4nXDrs7l0qaJ6Rg06dtOXTBCG6TMDB44zbqofCIC4PqC7SEvmFFtpxzCDw9W5aJ7RKVshgXTLvLdBFV/qw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-modules@0.1.6-no-external-plugins': - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - - '@babel/template@7.28.6': - resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.28.6': - resolution: {integrity: sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.28.5': - resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.28.6': - resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} - engines: {node: '>=6.9.0'} - - '@bcoe/v8-coverage@1.0.2': - resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} - engines: {node: '>=18'} - - '@colors/colors@1.6.0': - resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} - engines: {node: '>=0.1.90'} - - '@commitlint/cli@20.3.1': - resolution: {integrity: sha512-NtInjSlyev/+SLPvx/ulz8hRE25Wf5S9dLNDcIwazq0JyB4/w1ROF/5nV0ObPTX8YpRaKYeKtXDYWqumBNHWsw==} - engines: {node: '>=v18'} + "@babel/types@7.28.5": + resolution: + { integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA== } + engines: { node: ">=6.9.0" } + + "@babel/types@7.28.6": + resolution: + { integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg== } + engines: { node: ">=6.9.0" } + + "@bcoe/v8-coverage@1.0.2": + resolution: + { integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA== } + engines: { node: ">=18" } + + "@colors/colors@1.6.0": + resolution: + { integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== } + engines: { node: ">=0.1.90" } + + "@commitlint/cli@20.4.1": + resolution: + { integrity: sha512-uuFKKpc7OtQM+6SRqT+a4kV818o1pS+uvv/gsRhyX7g4x495jg+Q7P0+O9VNGyLXBYP0syksS7gMRDJKcekr6A== } + engines: { node: ">=v18" } hasBin: true - '@commitlint/config-conventional@20.3.1': - resolution: {integrity: sha512-NCzwvxepstBZbmVXsvg49s+shCxlJDJPWxXqONVcAtJH9wWrOlkMQw/zyl+dJmt8lyVopt5mwQ3mR5M2N2rUWg==} - engines: {node: '>=v18'} - - '@commitlint/config-validator@20.3.1': - resolution: {integrity: sha512-ErVLC/IsHhcvxCyh+FXo7jy12/nkQySjWXYgCoQbZLkFp4hysov8KS6CdxBB0cWjbZWjvNOKBMNoUVqkmGmahw==} - engines: {node: '>=v18'} - - '@commitlint/ensure@20.3.1': - resolution: {integrity: sha512-h664FngOEd7bHAm0j8MEKq+qm2mH+V+hwJiIE2bWcw3pzJMlO0TPKtk0ATyRAtV6jQw+xviRYiIjjSjfajiB5w==} - engines: {node: '>=v18'} - - '@commitlint/execute-rule@20.0.0': - resolution: {integrity: sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw==} - engines: {node: '>=v18'} - - '@commitlint/format@20.3.1': - resolution: {integrity: sha512-jfsjGPFTd2Yti2YHwUH4SPRPbWKAJAwrfa3eNa9bXEdrXBb9mCwbIrgYX38LdEJK9zLJ3AsLBP4/FLEtxyu2AA==} - engines: {node: '>=v18'} - - '@commitlint/is-ignored@20.3.1': - resolution: {integrity: sha512-tWwAoh93QvAhxgp99CzCuHD86MgxE4NBtloKX+XxQxhfhSwHo7eloiar/yzx53YW9eqSLP95zgW2KDDk4/WX+A==} - engines: {node: '>=v18'} - - '@commitlint/lint@20.3.1': - resolution: {integrity: sha512-LaOtrQ24+6SfUaWg8A+a+Wc77bvLbO5RIr6iy9F7CI3/0iq1uPEWgGRCwqWTuLGHkZDAcwaq0gZ01zpwZ1jCGw==} - engines: {node: '>=v18'} - - '@commitlint/load@20.3.1': - resolution: {integrity: sha512-YDD9XA2XhgYgbjju8itZ/weIvOOobApDqwlPYCX5NLO/cPtw2UMO5Cmn44Ks8RQULUVI5fUT6roKvyxcoLbNmw==} - engines: {node: '>=v18'} - - '@commitlint/message@20.0.0': - resolution: {integrity: sha512-gLX4YmKnZqSwkmSB9OckQUrI5VyXEYiv3J5JKZRxIp8jOQsWjZgHSG/OgEfMQBK9ibdclEdAyIPYggwXoFGXjQ==} - engines: {node: '>=v18'} - - '@commitlint/parse@20.3.1': - resolution: {integrity: sha512-TuUTdbLpyUNLgDzLDYlI2BeTE6V/COZbf3f8WwsV0K6eq/2nSpNTMw7wHtXb+YxeY9wwxBp/Ldad4P+YIxHJoA==} - engines: {node: '>=v18'} - - '@commitlint/read@20.3.1': - resolution: {integrity: sha512-nCmJAdIg3OdNVUpQW0Idk/eF/vfOo2W2xzmvRmNeptLrzFK7qhwwl/kIwy1Q1LZrKHUFNj7PGNpIT5INbgZWzA==} - engines: {node: '>=v18'} - - '@commitlint/resolve-extends@20.3.1': - resolution: {integrity: sha512-iGTGeyaoDyHDEZNjD8rKeosjSNs8zYanmuowY4ful7kFI0dnY4b5QilVYaFQJ6IM27S57LAeH5sKSsOHy4bw5w==} - engines: {node: '>=v18'} - - '@commitlint/rules@20.3.1': - resolution: {integrity: sha512-/uic4P+4jVNpqQxz02+Y6vvIC0A2J899DBztA1j6q3f3MOKwydlNrojSh0dQmGDxxT1bXByiRtDhgFnOFnM6Pg==} - engines: {node: '>=v18'} - - '@commitlint/to-lines@20.0.0': - resolution: {integrity: sha512-2l9gmwiCRqZNWgV+pX1X7z4yP0b3ex/86UmUFgoRt672Ez6cAM2lOQeHFRUTuE6sPpi8XBCGnd8Kh3bMoyHwJw==} - engines: {node: '>=v18'} - - '@commitlint/top-level@20.0.0': - resolution: {integrity: sha512-drXaPSP2EcopukrUXvUXmsQMu3Ey/FuJDc/5oiW4heoCfoE5BdLQyuc7veGeE3aoQaTVqZnh4D5WTWe2vefYKg==} - engines: {node: '>=v18'} - - '@commitlint/types@20.3.1': - resolution: {integrity: sha512-VmIFV/JkBRhDRRv7N5B7zEUkNZIx9Mp+8Pe65erz0rKycXLsi8Epcw0XJ+btSeRXgTzE7DyOyA9bkJ9mn/yqVQ==} - engines: {node: '>=v18'} - - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - - '@csstools/color-helpers@5.1.0': - resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} - engines: {node: '>=18'} - - '@csstools/css-calc@2.1.4': - resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} - engines: {node: '>=18'} + "@commitlint/config-conventional@20.4.1": + resolution: + { integrity: sha512-0YUvIeBtpi86XriqrR+TCULVFiyYTIOEPjK7tTRMxjcBm1qlzb+kz7IF2WxL6Fq5DaundG8VO37BNgMkMTBwqA== } + engines: { node: ">=v18" } + + "@commitlint/config-validator@20.4.0": + resolution: + { integrity: sha512-zShmKTF+sqyNOfAE0vKcqnpvVpG0YX8F9G/ZIQHI2CoKyK+PSdladXMSns400aZ5/QZs+0fN75B//3Q5CHw++w== } + engines: { node: ">=v18" } + + "@commitlint/ensure@20.4.1": + resolution: + { integrity: sha512-WLQqaFx1pBooiVvBrA1YfJNFqZF8wS/YGOtr5RzApDbV9tQ52qT5VkTsY65hFTnXhW8PcDfZLaknfJTmPejmlw== } + engines: { node: ">=v18" } + + "@commitlint/execute-rule@20.0.0": + resolution: + { integrity: sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw== } + engines: { node: ">=v18" } + + "@commitlint/format@20.4.0": + resolution: + { integrity: sha512-i3ki3WR0rgolFVX6r64poBHXM1t8qlFel1G1eCBvVgntE3fCJitmzSvH5JD/KVJN/snz6TfaX2CLdON7+s4WVQ== } + engines: { node: ">=v18" } + + "@commitlint/is-ignored@20.4.1": + resolution: + { integrity: sha512-In5EO4JR1lNsAv1oOBBO24V9ND1IqdAJDKZiEpdfjDl2HMasAcT7oA+5BKONv1pRoLG380DGPE2W2RIcUwdgLA== } + engines: { node: ">=v18" } + + "@commitlint/lint@20.4.1": + resolution: + { integrity: sha512-g94LrGl/c6UhuhDQqNqU232aslLEN2vzc7MPfQTHzwzM4GHNnEAwVWWnh0zX8S5YXecuLXDwbCsoGwmpAgPWKA== } + engines: { node: ">=v18" } + + "@commitlint/load@20.4.0": + resolution: + { integrity: sha512-Dauup/GfjwffBXRJUdlX/YRKfSVXsXZLnINXKz0VZkXdKDcaEILAi9oflHGbfydonJnJAbXEbF3nXPm9rm3G6A== } + engines: { node: ">=v18" } + + "@commitlint/message@20.4.0": + resolution: + { integrity: sha512-B5lGtvHgiLAIsK5nLINzVW0bN5hXv+EW35sKhYHE8F7V9Uz1fR4tx3wt7mobA5UNhZKUNgB/+ldVMQE6IHZRyA== } + engines: { node: ">=v18" } + + "@commitlint/parse@20.4.1": + resolution: + { integrity: sha512-XNtZjeRcFuAfUnhYrCY02+mpxwY4OmnvD3ETbVPs25xJFFz1nRo/25nHj+5eM+zTeRFvWFwD4GXWU2JEtoK1/w== } + engines: { node: ">=v18" } + + "@commitlint/read@20.4.0": + resolution: + { integrity: sha512-QfpFn6/I240ySEGv7YWqho4vxqtPpx40FS7kZZDjUJ+eHxu3azfhy7fFb5XzfTqVNp1hNoI3tEmiEPbDB44+cg== } + engines: { node: ">=v18" } + + "@commitlint/resolve-extends@20.4.0": + resolution: + { integrity: sha512-ay1KM8q0t+/OnlpqXJ+7gEFQNlUtSU5Gxr8GEwnVf2TPN3+ywc5DzL3JCxmpucqxfHBTFwfRMXxPRRnR5Ki20g== } + engines: { node: ">=v18" } + + "@commitlint/rules@20.4.1": + resolution: + { integrity: sha512-WtqypKEPbQEuJwJS4aKs0OoJRBKz1HXPBC9wRtzVNH68FLhPWzxXlF09hpUXM9zdYTpm4vAdoTGkWiBgQ/vL0g== } + engines: { node: ">=v18" } + + "@commitlint/to-lines@20.0.0": + resolution: + { integrity: sha512-2l9gmwiCRqZNWgV+pX1X7z4yP0b3ex/86UmUFgoRt672Ez6cAM2lOQeHFRUTuE6sPpi8XBCGnd8Kh3bMoyHwJw== } + engines: { node: ">=v18" } + + "@commitlint/top-level@20.4.0": + resolution: + { integrity: sha512-NDzq8Q6jmFaIIBC/GG6n1OQEaHdmaAAYdrZRlMgW6glYWGZ+IeuXmiymDvQNXPc82mVxq2KiE3RVpcs+1OeDeA== } + engines: { node: ">=v18" } + + "@commitlint/types@20.4.0": + resolution: + { integrity: sha512-aO5l99BQJ0X34ft8b0h7QFkQlqxC6e7ZPVmBKz13xM9O8obDaM1Cld4sQlJDXXU/VFuUzQ30mVtHjVz74TuStw== } + engines: { node: ">=v18" } + + "@cspotcode/source-map-support@0.8.1": + resolution: + { integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== } + engines: { node: ">=12" } + + "@csstools/color-helpers@5.1.0": + resolution: + { integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA== } + engines: { node: ">=18" } + + "@csstools/css-calc@2.1.4": + resolution: + { integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ== } + engines: { node: ">=18" } peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.5 - '@csstools/css-tokenizer': ^3.0.4 + "@csstools/css-parser-algorithms": ^3.0.5 + "@csstools/css-tokenizer": ^3.0.4 - '@csstools/css-color-parser@3.1.0': - resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} - engines: {node: '>=18'} + "@csstools/css-color-parser@3.1.0": + resolution: + { integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA== } + engines: { node: ">=18" } peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.5 - '@csstools/css-tokenizer': ^3.0.4 + "@csstools/css-parser-algorithms": ^3.0.5 + "@csstools/css-tokenizer": ^3.0.4 - '@csstools/css-parser-algorithms@3.0.5': - resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} - engines: {node: '>=18'} + "@csstools/css-parser-algorithms@3.0.5": + resolution: + { integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ== } + engines: { node: ">=18" } peerDependencies: - '@csstools/css-tokenizer': ^3.0.4 + "@csstools/css-tokenizer": ^3.0.4 - '@csstools/css-syntax-patches-for-csstree@1.0.21': - resolution: {integrity: sha512-plP8N8zKfEZ26figX4Nvajx8DuzfuRpLTqglQ5d0chfnt35Qt3X+m6ASZ+rG0D0kxe/upDVNwSIVJP5n4FuNfw==} - engines: {node: '>=18'} + "@csstools/css-syntax-patches-for-csstree@1.0.21": + resolution: + { integrity: sha512-plP8N8zKfEZ26figX4Nvajx8DuzfuRpLTqglQ5d0chfnt35Qt3X+m6ASZ+rG0D0kxe/upDVNwSIVJP5n4FuNfw== } + engines: { node: ">=18" } - '@csstools/css-tokenizer@3.0.4': - resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} - engines: {node: '>=18'} + "@csstools/css-tokenizer@3.0.4": + resolution: + { integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw== } + engines: { node: ">=18" } - '@dabh/diagnostics@2.0.8': - resolution: {integrity: sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==} + "@dabh/diagnostics@2.0.8": + resolution: + { integrity: sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q== } - '@datalust/winston-seq@3.0.1': - resolution: {integrity: sha512-jWJd5PKcj/nM5f1T65KJgKaxPJRADWe+GEWtj1yEji1H0ub4RWhBEDLYzIFdwUy365lxtc5njsakenp4Evmv+g==} + "@datalust/winston-seq@3.0.1": + resolution: + { integrity: sha512-jWJd5PKcj/nM5f1T65KJgKaxPJRADWe+GEWtj1yEji1H0ub4RWhBEDLYzIFdwUy365lxtc5njsakenp4Evmv+g== } peerDependencies: winston: ^3.17.0 - '@date-vir/duration@8.1.0': - resolution: {integrity: sha512-PwvII5Lo3dzZKpTIYHvPnrKQg6UlOY6V/z/ahPiSGt1HeAMlC96PPfuPZ9ZmzcrKQuAZgO9NzX67sXWRI3T62Q==} - engines: {node: '>=22'} - - '@dependents/detective-less@5.0.0': - resolution: {integrity: sha512-D/9dozteKcutI5OdxJd8rU+fL6XgaaRg60sPPJWkT33OCiRfkCu5wO5B/yXTaaL2e6EB0lcCBGe5E0XscZCvvQ==} - engines: {node: '>=18'} - - '@discoveryjs/json-ext@0.5.7': - resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} - engines: {node: '>=10.0.0'} - - '@discoveryjs/json-ext@0.6.3': - resolution: {integrity: sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==} - engines: {node: '>=14.17.0'} - - '@electron/get@2.0.3': - resolution: {integrity: sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==} - engines: {node: '>=12'} - - '@emnapi/core@1.2.0': - resolution: {integrity: sha512-E7Vgw78I93we4ZWdYCb4DGAwRROGkMIXk7/y87UmANR+J6qsWusmC3gLt0H+O0KOt5e6O38U8oJamgbudrES/w==} - - '@emnapi/runtime@1.2.0': - resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==} - - '@emnapi/wasi-threads@1.0.1': - resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==} - - '@epic-web/invariant@1.0.0': - resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==} - - '@es-joy/jsdoccomment@0.82.0': - resolution: {integrity: sha512-xs3OTxPefjTZaoDS7H1X2pV33enAmZg+8YldjmeYk7XZnq420phdnp6o0JtrsHBdSRJ5+RTocgyED9TL3epgpw==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - - '@es-joy/resolve.exports@1.2.0': - resolution: {integrity: sha512-Q9hjxWI5xBM+qW2enxfe8wDKdFWMfd0Z29k5ZJnuBqD/CasY5Zryj09aCA6owbGATWz+39p5uIdaHXpopOcG8g==} - engines: {node: '>=10'} - - '@esbuild/aix-ppc64@0.27.2': - resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} - engines: {node: '>=18'} + "@date-vir/duration@8.1.0": + resolution: + { integrity: sha512-PwvII5Lo3dzZKpTIYHvPnrKQg6UlOY6V/z/ahPiSGt1HeAMlC96PPfuPZ9ZmzcrKQuAZgO9NzX67sXWRI3T62Q== } + engines: { node: ">=22" } + + "@discoveryjs/json-ext@0.5.7": + resolution: + { integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== } + engines: { node: ">=10.0.0" } + + "@discoveryjs/json-ext@0.6.3": + resolution: + { integrity: sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ== } + engines: { node: ">=14.17.0" } + + "@electron/get@2.0.3": + resolution: + { integrity: sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ== } + engines: { node: ">=12" } + + "@emnapi/core@1.2.0": + resolution: + { integrity: sha512-E7Vgw78I93we4ZWdYCb4DGAwRROGkMIXk7/y87UmANR+J6qsWusmC3gLt0H+O0KOt5e6O38U8oJamgbudrES/w== } + + "@emnapi/runtime@1.2.0": + resolution: + { integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ== } + + "@emnapi/wasi-threads@1.0.1": + resolution: + { integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw== } + + "@epic-web/invariant@1.0.0": + resolution: + { integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA== } + + "@es-joy/jsdoccomment@0.83.0": + resolution: + { integrity: sha512-e1MHSEPJ4m35zkBvNT6kcdeH1SvMaJDsPC3Xhfseg3hvF50FUE3f46Yn36jgbrPYYXezlWUQnevv23c+lx2MCA== } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + + "@es-joy/resolve.exports@1.2.0": + resolution: + { integrity: sha512-Q9hjxWI5xBM+qW2enxfe8wDKdFWMfd0Z29k5ZJnuBqD/CasY5Zryj09aCA6owbGATWz+39p5uIdaHXpopOcG8g== } + engines: { node: ">=10" } + + "@esbuild/aix-ppc64@0.27.2": + resolution: + { integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw== } + engines: { node: ">=18" } cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.27.2': - resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} - engines: {node: '>=18'} + "@esbuild/android-arm64@0.27.2": + resolution: + { integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA== } + engines: { node: ">=18" } cpu: [arm64] os: [android] - '@esbuild/android-arm@0.27.2': - resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} - engines: {node: '>=18'} + "@esbuild/android-arm@0.27.2": + resolution: + { integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA== } + engines: { node: ">=18" } cpu: [arm] os: [android] - '@esbuild/android-x64@0.27.2': - resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} - engines: {node: '>=18'} + "@esbuild/android-x64@0.27.2": + resolution: + { integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A== } + engines: { node: ">=18" } cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.27.2': - resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} - engines: {node: '>=18'} + "@esbuild/darwin-arm64@0.27.2": + resolution: + { integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg== } + engines: { node: ">=18" } cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.27.2': - resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} - engines: {node: '>=18'} + "@esbuild/darwin-x64@0.27.2": + resolution: + { integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA== } + engines: { node: ">=18" } cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.27.2': - resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} - engines: {node: '>=18'} + "@esbuild/freebsd-arm64@0.27.2": + resolution: + { integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g== } + engines: { node: ">=18" } cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.2': - resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} - engines: {node: '>=18'} + "@esbuild/freebsd-x64@0.27.2": + resolution: + { integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA== } + engines: { node: ">=18" } cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.27.2': - resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} - engines: {node: '>=18'} + "@esbuild/linux-arm64@0.27.2": + resolution: + { integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw== } + engines: { node: ">=18" } cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.27.2': - resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} - engines: {node: '>=18'} + "@esbuild/linux-arm@0.27.2": + resolution: + { integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw== } + engines: { node: ">=18" } cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.27.2': - resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} - engines: {node: '>=18'} + "@esbuild/linux-ia32@0.27.2": + resolution: + { integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w== } + engines: { node: ">=18" } cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.27.2': - resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} - engines: {node: '>=18'} + "@esbuild/linux-loong64@0.27.2": + resolution: + { integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg== } + engines: { node: ">=18" } cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.27.2': - resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} - engines: {node: '>=18'} + "@esbuild/linux-mips64el@0.27.2": + resolution: + { integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw== } + engines: { node: ">=18" } cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.27.2': - resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} - engines: {node: '>=18'} + "@esbuild/linux-ppc64@0.27.2": + resolution: + { integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ== } + engines: { node: ">=18" } cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.27.2': - resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} - engines: {node: '>=18'} + "@esbuild/linux-riscv64@0.27.2": + resolution: + { integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA== } + engines: { node: ">=18" } cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.27.2': - resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} - engines: {node: '>=18'} + "@esbuild/linux-s390x@0.27.2": + resolution: + { integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w== } + engines: { node: ">=18" } cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.27.2': - resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} - engines: {node: '>=18'} + "@esbuild/linux-x64@0.27.2": + resolution: + { integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA== } + engines: { node: ">=18" } cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.27.2': - resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} - engines: {node: '>=18'} + "@esbuild/netbsd-arm64@0.27.2": + resolution: + { integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw== } + engines: { node: ">=18" } cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.2': - resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} - engines: {node: '>=18'} + "@esbuild/netbsd-x64@0.27.2": + resolution: + { integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA== } + engines: { node: ">=18" } cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.27.2': - resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} - engines: {node: '>=18'} + "@esbuild/openbsd-arm64@0.27.2": + resolution: + { integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA== } + engines: { node: ">=18" } cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.2': - resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} - engines: {node: '>=18'} + "@esbuild/openbsd-x64@0.27.2": + resolution: + { integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg== } + engines: { node: ">=18" } cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.27.2': - resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} - engines: {node: '>=18'} + "@esbuild/openharmony-arm64@0.27.2": + resolution: + { integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag== } + engines: { node: ">=18" } cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.27.2': - resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} - engines: {node: '>=18'} + "@esbuild/sunos-x64@0.27.2": + resolution: + { integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg== } + engines: { node: ">=18" } cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.27.2': - resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} - engines: {node: '>=18'} + "@esbuild/win32-arm64@0.27.2": + resolution: + { integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg== } + engines: { node: ">=18" } cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.27.2': - resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} - engines: {node: '>=18'} + "@esbuild/win32-ia32@0.27.2": + resolution: + { integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ== } + engines: { node: ">=18" } cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.27.2': - resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} - engines: {node: '>=18'} + "@esbuild/win32-x64@0.27.2": + resolution: + { integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ== } + engines: { node: ">=18" } cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.7.0': - resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + "@eslint-community/eslint-utils@4.7.0": + resolution: + { integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/eslint-utils@4.9.0': - resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + "@eslint-community/eslint-utils@4.9.0": + resolution: + { integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/eslint-utils@4.9.1': - resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + "@eslint-community/eslint-utils@4.9.1": + resolution: + { integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.12.1': - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint-community/regexpp@4.12.2': - resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/config-array@0.21.1': - resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/config-helpers@0.4.2': - resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.17.0': - resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} - 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.39.2': - resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/object-schema@2.1.7': - resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/plugin-kit@0.4.1': - resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@exodus/bytes@1.6.0': - resolution: {integrity: sha512-y32mI9627q5LR/L8fLc4YyDRJQOi+jK0D9okzLilAdiU3F9we3zC7Y7CFrR/8vAvUyv7FgBAYcNHtvbmhKCFcw==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + "@eslint-community/regexpp@4.12.1": + resolution: + { integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== } + engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } + + "@eslint-community/regexpp@4.12.2": + resolution: + { integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew== } + engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } + + "@eslint/config-array@0.21.1": + resolution: + { integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@eslint/config-helpers@0.4.2": + resolution: + { integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@eslint/core@0.17.0": + resolution: + { integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ== } + 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.39.2": + resolution: + { integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@eslint/object-schema@2.1.7": + resolution: + { integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@eslint/plugin-kit@0.4.1": + resolution: + { integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@exodus/bytes@1.11.0": + resolution: + { integrity: sha512-wO3vd8nsEHdumsXrjGO/v4p6irbg7hy9kvIeR6i2AwylZSk4HJdWgL0FNaVquW1+AweJcdvU1IEpuIWk/WaPnA== } + engines: { node: ^20.19.0 || ^22.12.0 || >=24.0.0 } peerDependencies: - '@exodus/crypto': ^1.0.0-rc.4 + "@noble/hashes": ^1.8.0 || ^2.0.0 peerDependenciesMeta: - '@exodus/crypto': + "@noble/hashes": optional: true - '@fortawesome/fontawesome-free@7.1.0': - resolution: {integrity: sha512-+WxNld5ZCJHvPQCr/GnzCTVREyStrAJjisUPtUxG5ngDA8TMlPnKp6dddlTpai4+1GNmltAeuk1hJEkBohwZYA==} - engines: {node: '>=6'} - - '@gerrit0/mini-shiki@3.20.0': - resolution: {integrity: sha512-Wa57i+bMpK6PGJZ1f2myxo3iO+K/kZikcyvH8NIqNNZhQUbDav7V9LQmWOXhf946mz5c1NZ19WMsGYiDKTryzQ==} - - '@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'} - - '@humanwhocodes/retry@0.3.1': - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} - engines: {node: '>=18.18'} - - '@humanwhocodes/retry@0.4.3': - resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} - engines: {node: '>=18.18'} - - '@hutson/parse-repository-url@3.0.2': - resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==} - engines: {node: '>=6.9.0'} - - '@inquirer/ansi@1.0.2': - resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} - engines: {node: '>=18'} - - '@inquirer/checkbox@4.3.2': - resolution: {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==} - engines: {node: '>=18'} + "@fortawesome/fontawesome-free@7.1.0": + resolution: + { integrity: sha512-+WxNld5ZCJHvPQCr/GnzCTVREyStrAJjisUPtUxG5ngDA8TMlPnKp6dddlTpai4+1GNmltAeuk1hJEkBohwZYA== } + engines: { node: ">=6" } + + "@gerrit0/mini-shiki@3.20.0": + resolution: + { integrity: sha512-Wa57i+bMpK6PGJZ1f2myxo3iO+K/kZikcyvH8NIqNNZhQUbDav7V9LQmWOXhf946mz5c1NZ19WMsGYiDKTryzQ== } + + "@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" } + + "@humanwhocodes/retry@0.3.1": + resolution: + { integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== } + engines: { node: ">=18.18" } + + "@humanwhocodes/retry@0.4.3": + resolution: + { integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== } + engines: { node: ">=18.18" } + + "@hutson/parse-repository-url@3.0.2": + resolution: + { integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== } + engines: { node: ">=6.9.0" } + + "@inquirer/ansi@1.0.2": + resolution: + { integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ== } + engines: { node: ">=18" } + + "@inquirer/checkbox@4.3.2": + resolution: + { integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA== } + engines: { node: ">=18" } peerDependencies: - '@types/node': '>=18' + "@types/node": ">=18" peerDependenciesMeta: - '@types/node': + "@types/node": optional: true - '@inquirer/confirm@5.1.21': - resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==} - engines: {node: '>=18'} + "@inquirer/confirm@5.1.21": + resolution: + { integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ== } + engines: { node: ">=18" } peerDependencies: - '@types/node': '>=18' + "@types/node": ">=18" peerDependenciesMeta: - '@types/node': + "@types/node": optional: true - '@inquirer/core@10.3.2': - resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==} - engines: {node: '>=18'} + "@inquirer/core@10.3.2": + resolution: + { integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A== } + engines: { node: ">=18" } peerDependencies: - '@types/node': '>=18' + "@types/node": ">=18" peerDependenciesMeta: - '@types/node': + "@types/node": optional: true - '@inquirer/editor@4.2.23': - resolution: {integrity: sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==} - engines: {node: '>=18'} + "@inquirer/editor@4.2.23": + resolution: + { integrity: sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ== } + engines: { node: ">=18" } peerDependencies: - '@types/node': '>=18' + "@types/node": ">=18" peerDependenciesMeta: - '@types/node': + "@types/node": optional: true - '@inquirer/expand@4.0.23': - resolution: {integrity: sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==} - engines: {node: '>=18'} + "@inquirer/expand@4.0.23": + resolution: + { integrity: sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew== } + engines: { node: ">=18" } peerDependencies: - '@types/node': '>=18' + "@types/node": ">=18" peerDependenciesMeta: - '@types/node': + "@types/node": optional: true - '@inquirer/external-editor@1.0.3': - resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} - engines: {node: '>=18'} + "@inquirer/external-editor@1.0.3": + resolution: + { integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA== } + engines: { node: ">=18" } peerDependencies: - '@types/node': '>=18' + "@types/node": ">=18" peerDependenciesMeta: - '@types/node': + "@types/node": optional: true - '@inquirer/figures@1.0.15': - resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} - engines: {node: '>=18'} + "@inquirer/figures@1.0.15": + resolution: + { integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g== } + engines: { node: ">=18" } - '@inquirer/input@4.3.1': - resolution: {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==} - engines: {node: '>=18'} + "@inquirer/input@4.3.1": + resolution: + { integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g== } + engines: { node: ">=18" } peerDependencies: - '@types/node': '>=18' + "@types/node": ">=18" peerDependenciesMeta: - '@types/node': + "@types/node": optional: true - '@inquirer/number@3.0.23': - resolution: {integrity: sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==} - engines: {node: '>=18'} + "@inquirer/number@3.0.23": + resolution: + { integrity: sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg== } + engines: { node: ">=18" } peerDependencies: - '@types/node': '>=18' + "@types/node": ">=18" peerDependenciesMeta: - '@types/node': + "@types/node": optional: true - '@inquirer/password@4.0.23': - resolution: {integrity: sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==} - engines: {node: '>=18'} + "@inquirer/password@4.0.23": + resolution: + { integrity: sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA== } + engines: { node: ">=18" } peerDependencies: - '@types/node': '>=18' + "@types/node": ">=18" peerDependenciesMeta: - '@types/node': + "@types/node": optional: true - '@inquirer/prompts@7.10.1': - resolution: {integrity: sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==} - engines: {node: '>=18'} + "@inquirer/prompts@7.10.1": + resolution: + { integrity: sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg== } + engines: { node: ">=18" } peerDependencies: - '@types/node': '>=18' + "@types/node": ">=18" peerDependenciesMeta: - '@types/node': + "@types/node": optional: true - '@inquirer/rawlist@4.1.11': - resolution: {integrity: sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==} - engines: {node: '>=18'} + "@inquirer/rawlist@4.1.11": + resolution: + { integrity: sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw== } + engines: { node: ">=18" } peerDependencies: - '@types/node': '>=18' + "@types/node": ">=18" peerDependenciesMeta: - '@types/node': + "@types/node": optional: true - '@inquirer/search@3.2.2': - resolution: {integrity: sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==} - engines: {node: '>=18'} + "@inquirer/search@3.2.2": + resolution: + { integrity: sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA== } + engines: { node: ">=18" } peerDependencies: - '@types/node': '>=18' + "@types/node": ">=18" peerDependenciesMeta: - '@types/node': + "@types/node": optional: true - '@inquirer/select@4.4.2': - resolution: {integrity: sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==} - engines: {node: '>=18'} + "@inquirer/select@4.4.2": + resolution: + { integrity: sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w== } + engines: { node: ">=18" } peerDependencies: - '@types/node': '>=18' + "@types/node": ">=18" peerDependenciesMeta: - '@types/node': + "@types/node": optional: true - '@inquirer/type@3.0.10': - resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==} - engines: {node: '>=18'} + "@inquirer/type@3.0.10": + resolution: + { integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA== } + engines: { node: ">=18" } peerDependencies: - '@types/node': '>=18' + "@types/node": ">=18" peerDependenciesMeta: - '@types/node': + "@types/node": optional: true - '@isaacs/balanced-match@4.0.1': - resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} - engines: {node: 20 || >=22} + "@isaacs/balanced-match@4.0.1": + resolution: + { integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ== } + engines: { node: 20 || >=22 } + + "@isaacs/brace-expansion@5.0.0": + resolution: + { integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA== } + engines: { node: 20 || >=22 } + + "@isaacs/cliui@8.0.2": + resolution: + { integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== } + engines: { node: ">=12" } + + "@isaacs/fs-minipass@4.0.1": + resolution: + { integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w== } + engines: { node: ">=18.0.0" } + + "@isaacs/string-locale-compare@1.1.0": + resolution: + { integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== } + + "@jest/diff-sequences@30.0.1": + resolution: + { integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw== } + engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + + "@jest/get-type@30.1.0": + resolution: + { integrity: sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA== } + engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + + "@jest/schemas@30.0.5": + resolution: + { integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA== } + engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + + "@jridgewell/gen-mapping@0.3.5": + resolution: + { integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== } + engines: { node: ">=6.0.0" } + + "@jridgewell/resolve-uri@3.1.1": + resolution: + { integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== } + engines: { node: ">=6.0.0" } + + "@jridgewell/set-array@1.2.1": + resolution: + { integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== } + engines: { node: ">=6.0.0" } + + "@jridgewell/source-map@0.3.5": + resolution: + { integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== } + + "@jridgewell/sourcemap-codec@1.5.0": + resolution: + { integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== } + + "@jridgewell/sourcemap-codec@1.5.5": + resolution: + { integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== } + + "@jridgewell/trace-mapping@0.3.25": + resolution: + { integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== } + + "@jridgewell/trace-mapping@0.3.29": + resolution: + { integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ== } + + "@jridgewell/trace-mapping@0.3.31": + resolution: + { integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== } + + "@jridgewell/trace-mapping@0.3.9": + resolution: + { integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== } + + "@lerna/create@9.0.3": + resolution: + { integrity: sha512-hUTEWrR8zH+/Z3bp/R1aLm6DW8vB/BB7KH7Yeg4fMfrvSwxegiLVW9uJFAzWkK4mzEagmj/Dti85Yg9MN13t0g== } + engines: { node: ^20.19.0 || ^22.12.0 || >=24.0.0 } + + "@microsoft/tsdoc-config@0.18.0": + resolution: + { integrity: sha512-8N/vClYyfOH+l4fLkkr9+myAoR6M7akc8ntBJ4DJdWH2b09uVfr71+LTMpNyG19fNqWDg8KEDZhx5wxuqHyGjw== } + + "@microsoft/tsdoc@0.16.0": + resolution: + { integrity: sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA== } + + "@napi-rs/wasm-runtime@0.2.4": + resolution: + { integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ== } + + "@nodelib/fs.scandir@2.1.5": + resolution: + { integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== } + engines: { node: ">= 8" } + + "@nodelib/fs.stat@2.0.5": + resolution: + { integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== } + engines: { node: ">= 8" } + + "@nodelib/fs.walk@1.2.8": + resolution: + { integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== } + engines: { node: ">= 8" } + + "@npmcli/agent@3.0.0": + resolution: + { integrity: sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q== } + engines: { node: ^18.17.0 || >=20.5.0 } + + "@npmcli/agent@4.0.0": + resolution: + { integrity: sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA== } + engines: { node: ^20.17.0 || >=22.9.0 } + + "@npmcli/arborist@9.1.6": + resolution: + { integrity: sha512-c5Pr3EG8UP5ollkJy2x+UdEQC5sEHe3H9whYn6hb2HJimAKS4zmoJkx5acCiR/g4P38RnCSMlsYQyyHnKYeLvQ== } + engines: { node: ^20.17.0 || >=22.9.0 } + hasBin: true - '@isaacs/brace-expansion@5.0.0': - resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} - engines: {node: 20 || >=22} + "@npmcli/fs@4.0.0": + resolution: + { integrity: sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q== } + engines: { node: ^18.17.0 || >=20.5.0 } + + "@npmcli/fs@5.0.0": + resolution: + { integrity: sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og== } + engines: { node: ^20.17.0 || >=22.9.0 } + + "@npmcli/git@6.0.3": + resolution: + { integrity: sha512-GUYESQlxZRAdhs3UhbB6pVRNUELQOHXwK9ruDkwmCv2aZ5y0SApQzUJCg02p3A7Ue2J5hxvlk1YI53c00NmRyQ== } + engines: { node: ^18.17.0 || >=20.5.0 } + + "@npmcli/git@7.0.1": + resolution: + { integrity: sha512-+XTFxK2jJF/EJJ5SoAzXk3qwIDfvFc5/g+bD274LZ7uY7LE8sTfG6Z8rOanPl2ZEvZWqNvmEdtXC25cE54VcoA== } + engines: { node: ^20.17.0 || >=22.9.0 } + + "@npmcli/installed-package-contents@3.0.0": + resolution: + { integrity: sha512-fkxoPuFGvxyrH+OQzyTkX2LUEamrF4jZSmxjAtPPHHGO0dqsQ8tTKjnIS8SAnPHdk2I03BDtSMR5K/4loKg79Q== } + engines: { node: ^18.17.0 || >=20.5.0 } + hasBin: true - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} + "@npmcli/installed-package-contents@4.0.0": + resolution: + { integrity: sha512-yNyAdkBxB72gtZ4GrwXCM0ZUedo9nIbOMKfGjt6Cu6DXf0p8y1PViZAKDC8q8kv/fufx0WTjRBdSlyrvnP7hmA== } + engines: { node: ^20.17.0 || >=22.9.0 } + hasBin: true - '@isaacs/fs-minipass@4.0.1': - resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} - engines: {node: '>=18.0.0'} - - '@isaacs/string-locale-compare@1.1.0': - resolution: {integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==} - - '@jest/diff-sequences@30.0.1': - resolution: {integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/get-type@30.1.0': - resolution: {integrity: sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/schemas@30.0.5': - resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jridgewell/gen-mapping@0.3.12': - resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} - - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - - '@jridgewell/remapping@2.3.5': - resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} - - '@jridgewell/resolve-uri@3.1.1': - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/source-map@0.3.5': - resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - - '@jridgewell/trace-mapping@0.3.29': - resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} - - '@jridgewell/trace-mapping@0.3.31': - resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - - '@lerna/create@9.0.3': - resolution: {integrity: sha512-hUTEWrR8zH+/Z3bp/R1aLm6DW8vB/BB7KH7Yeg4fMfrvSwxegiLVW9uJFAzWkK4mzEagmj/Dti85Yg9MN13t0g==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - - '@microsoft/tsdoc-config@0.18.0': - resolution: {integrity: sha512-8N/vClYyfOH+l4fLkkr9+myAoR6M7akc8ntBJ4DJdWH2b09uVfr71+LTMpNyG19fNqWDg8KEDZhx5wxuqHyGjw==} - - '@microsoft/tsdoc@0.16.0': - resolution: {integrity: sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==} - - '@napi-rs/wasm-runtime@0.2.4': - resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@npmcli/agent@3.0.0': - resolution: {integrity: sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==} - engines: {node: ^18.17.0 || >=20.5.0} - - '@npmcli/agent@4.0.0': - resolution: {integrity: sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@npmcli/arborist@9.1.6': - resolution: {integrity: sha512-c5Pr3EG8UP5ollkJy2x+UdEQC5sEHe3H9whYn6hb2HJimAKS4zmoJkx5acCiR/g4P38RnCSMlsYQyyHnKYeLvQ==} - engines: {node: ^20.17.0 || >=22.9.0} - hasBin: true - - '@npmcli/fs@4.0.0': - resolution: {integrity: sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==} - engines: {node: ^18.17.0 || >=20.5.0} - - '@npmcli/fs@5.0.0': - resolution: {integrity: sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@npmcli/git@6.0.3': - resolution: {integrity: sha512-GUYESQlxZRAdhs3UhbB6pVRNUELQOHXwK9ruDkwmCv2aZ5y0SApQzUJCg02p3A7Ue2J5hxvlk1YI53c00NmRyQ==} - engines: {node: ^18.17.0 || >=20.5.0} - - '@npmcli/git@7.0.1': - resolution: {integrity: sha512-+XTFxK2jJF/EJJ5SoAzXk3qwIDfvFc5/g+bD274LZ7uY7LE8sTfG6Z8rOanPl2ZEvZWqNvmEdtXC25cE54VcoA==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@npmcli/installed-package-contents@3.0.0': - resolution: {integrity: sha512-fkxoPuFGvxyrH+OQzyTkX2LUEamrF4jZSmxjAtPPHHGO0dqsQ8tTKjnIS8SAnPHdk2I03BDtSMR5K/4loKg79Q==} - engines: {node: ^18.17.0 || >=20.5.0} - hasBin: true - - '@npmcli/installed-package-contents@4.0.0': - resolution: {integrity: sha512-yNyAdkBxB72gtZ4GrwXCM0ZUedo9nIbOMKfGjt6Cu6DXf0p8y1PViZAKDC8q8kv/fufx0WTjRBdSlyrvnP7hmA==} - engines: {node: ^20.17.0 || >=22.9.0} - hasBin: true - - '@npmcli/map-workspaces@5.0.3': - resolution: {integrity: sha512-o2grssXo1e774E5OtEwwrgoszYRh0lqkJH+Pb9r78UcqdGJRDRfhpM8DvZPjzNLLNYeD/rNbjOKM3Ss5UABROw==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@npmcli/metavuln-calculator@9.0.3': - resolution: {integrity: sha512-94GLSYhLXF2t2LAC7pDwLaM4uCARzxShyAQKsirmlNcpidH89VA4/+K1LbJmRMgz5gy65E/QBBWQdUvGLe2Frg==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@npmcli/name-from-folder@3.0.0': - resolution: {integrity: sha512-61cDL8LUc9y80fXn+lir+iVt8IS0xHqEKwPu/5jCjxQTVoSCmkXvw4vbMrzAMtmghz3/AkiBjhHkDKUH+kf7kA==} - engines: {node: ^18.17.0 || >=20.5.0} - - '@npmcli/name-from-folder@4.0.0': - resolution: {integrity: sha512-qfrhVlOSqmKM8i6rkNdZzABj8MKEITGFAY+4teqBziksCQAOLutiAxM1wY2BKEd8KjUSpWmWCYxvXr0y4VTlPg==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@npmcli/node-gyp@4.0.0': - resolution: {integrity: sha512-+t5DZ6mO/QFh78PByMq1fGSAub/agLJZDRfJRMeOSNCt8s9YVlTjmGpIPwPhvXTGUIJk+WszlT0rQa1W33yzNA==} - engines: {node: ^18.17.0 || >=20.5.0} - - '@npmcli/node-gyp@5.0.0': - resolution: {integrity: sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@npmcli/package-json@7.0.2': - resolution: {integrity: sha512-0ylN3U5htO1SJTmy2YI78PZZjLkKUGg7EKgukb2CRi0kzyoDr0cfjHAzi7kozVhj2V3SxN1oyKqZ2NSo40z00g==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@npmcli/promise-spawn@8.0.3': - resolution: {integrity: sha512-Yb00SWaL4F8w+K8YGhQ55+xE4RUNdMHV43WZGsiTM92gS+lC0mGsn7I4hLug7pbao035S6bj3Y3w0cUNGLfmkg==} - engines: {node: ^18.17.0 || >=20.5.0} - - '@npmcli/promise-spawn@9.0.1': - resolution: {integrity: sha512-OLUaoqBuyxeTqUvjA3FZFiXUfYC1alp3Sa99gW3EUDz3tZ3CbXDdcZ7qWKBzicrJleIgucoWamWH1saAmH/l2Q==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@npmcli/query@4.0.1': - resolution: {integrity: sha512-4OIPFb4weUUwkDXJf4Hh1inAn8neBGq3xsH4ZsAaN6FK3ldrFkH7jSpCc7N9xesi0Sp+EBXJ9eGMDrEww2Ztqw==} - engines: {node: ^18.17.0 || >=20.5.0} - - '@npmcli/redact@3.2.2': - resolution: {integrity: sha512-7VmYAmk4csGv08QzrDKScdzn11jHPFGyqJW39FyPgPuAp3zIaUmuCo1yxw9aGs+NEJuTGQ9Gwqpt93vtJubucg==} - engines: {node: ^18.17.0 || >=20.5.0} - - '@npmcli/run-script@10.0.2': - resolution: {integrity: sha512-9lCTqxaoa9c9cdkzSSx+q/qaYrCrUPEwTWzLkVYg1/T8ESH3BG9vmb1zRc6ODsBVB0+gnGRSqSr01pxTS1yX3A==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@nrwl/nx-cloud@19.1.0': - resolution: {integrity: sha512-krngXVPfX0Zf6+zJDtcI59/Pt3JfcMPMZ9C/+/x6rvz4WGgyv1s0MI4crEUM0Lx5ZpS4QI0WNDCFVQSfGEBXUg==} - - '@nx/devkit@22.3.3': - resolution: {integrity: sha512-/hxcdhE+QDalsWEbJurHtZh9aY27taHeImbCVJnogwv85H3RbAE+0YuKXGInutfLszAs7phwzli71yq+d2P45Q==} + "@npmcli/map-workspaces@5.0.3": + resolution: + { integrity: sha512-o2grssXo1e774E5OtEwwrgoszYRh0lqkJH+Pb9r78UcqdGJRDRfhpM8DvZPjzNLLNYeD/rNbjOKM3Ss5UABROw== } + engines: { node: ^20.17.0 || >=22.9.0 } + + "@npmcli/metavuln-calculator@9.0.3": + resolution: + { integrity: sha512-94GLSYhLXF2t2LAC7pDwLaM4uCARzxShyAQKsirmlNcpidH89VA4/+K1LbJmRMgz5gy65E/QBBWQdUvGLe2Frg== } + engines: { node: ^20.17.0 || >=22.9.0 } + + "@npmcli/name-from-folder@3.0.0": + resolution: + { integrity: sha512-61cDL8LUc9y80fXn+lir+iVt8IS0xHqEKwPu/5jCjxQTVoSCmkXvw4vbMrzAMtmghz3/AkiBjhHkDKUH+kf7kA== } + engines: { node: ^18.17.0 || >=20.5.0 } + + "@npmcli/name-from-folder@4.0.0": + resolution: + { integrity: sha512-qfrhVlOSqmKM8i6rkNdZzABj8MKEITGFAY+4teqBziksCQAOLutiAxM1wY2BKEd8KjUSpWmWCYxvXr0y4VTlPg== } + engines: { node: ^20.17.0 || >=22.9.0 } + + "@npmcli/node-gyp@4.0.0": + resolution: + { integrity: sha512-+t5DZ6mO/QFh78PByMq1fGSAub/agLJZDRfJRMeOSNCt8s9YVlTjmGpIPwPhvXTGUIJk+WszlT0rQa1W33yzNA== } + engines: { node: ^18.17.0 || >=20.5.0 } + + "@npmcli/node-gyp@5.0.0": + resolution: + { integrity: sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ== } + engines: { node: ^20.17.0 || >=22.9.0 } + + "@npmcli/package-json@7.0.2": + resolution: + { integrity: sha512-0ylN3U5htO1SJTmy2YI78PZZjLkKUGg7EKgukb2CRi0kzyoDr0cfjHAzi7kozVhj2V3SxN1oyKqZ2NSo40z00g== } + engines: { node: ^20.17.0 || >=22.9.0 } + + "@npmcli/promise-spawn@8.0.3": + resolution: + { integrity: sha512-Yb00SWaL4F8w+K8YGhQ55+xE4RUNdMHV43WZGsiTM92gS+lC0mGsn7I4hLug7pbao035S6bj3Y3w0cUNGLfmkg== } + engines: { node: ^18.17.0 || >=20.5.0 } + + "@npmcli/promise-spawn@9.0.1": + resolution: + { integrity: sha512-OLUaoqBuyxeTqUvjA3FZFiXUfYC1alp3Sa99gW3EUDz3tZ3CbXDdcZ7qWKBzicrJleIgucoWamWH1saAmH/l2Q== } + engines: { node: ^20.17.0 || >=22.9.0 } + + "@npmcli/query@4.0.1": + resolution: + { integrity: sha512-4OIPFb4weUUwkDXJf4Hh1inAn8neBGq3xsH4ZsAaN6FK3ldrFkH7jSpCc7N9xesi0Sp+EBXJ9eGMDrEww2Ztqw== } + engines: { node: ^18.17.0 || >=20.5.0 } + + "@npmcli/redact@3.2.2": + resolution: + { integrity: sha512-7VmYAmk4csGv08QzrDKScdzn11jHPFGyqJW39FyPgPuAp3zIaUmuCo1yxw9aGs+NEJuTGQ9Gwqpt93vtJubucg== } + engines: { node: ^18.17.0 || >=20.5.0 } + + "@npmcli/run-script@10.0.2": + resolution: + { integrity: sha512-9lCTqxaoa9c9cdkzSSx+q/qaYrCrUPEwTWzLkVYg1/T8ESH3BG9vmb1zRc6ODsBVB0+gnGRSqSr01pxTS1yX3A== } + engines: { node: ^20.17.0 || >=22.9.0 } + + "@nrwl/nx-cloud@19.1.0": + resolution: + { integrity: sha512-krngXVPfX0Zf6+zJDtcI59/Pt3JfcMPMZ9C/+/x6rvz4WGgyv1s0MI4crEUM0Lx5ZpS4QI0WNDCFVQSfGEBXUg== } + + "@nx/devkit@22.3.3": + resolution: + { integrity: sha512-/hxcdhE+QDalsWEbJurHtZh9aY27taHeImbCVJnogwv85H3RbAE+0YuKXGInutfLszAs7phwzli71yq+d2P45Q== } peerDependencies: - nx: '>= 21 <= 23 || ^22.0.0-0' + nx: ">= 21 <= 23 || ^22.0.0-0" - '@nx/nx-darwin-arm64@22.4.1': - resolution: {integrity: sha512-hC9XTkYpRXJMpDcUzt/yYBQpyA4IrdUg3m5eVJMPZ8uth1l+KAiv31YQL5I044XO4b3yYVuKW+4vlmS8OCppYQ==} + "@nx/nx-darwin-arm64@22.4.4": + resolution: + { integrity: sha512-8PriHolYLRccIhiU8QLotv5ypiO8TYGzH23CODtM+ZbZmyQMxHN7w3LTQJjR/hBvYNU93fP9+WY/NLgJo8jkxw== } cpu: [arm64] os: [darwin] - '@nx/nx-darwin-x64@22.4.1': - resolution: {integrity: sha512-yaQFbLowg42qIUc0wTYZ7K5V3G+CIsbcphoQARG01gfjtfGCNs71yJ9Q8XvKH7IVzq0shlSohVzMPBg9+1Dp4Q==} + "@nx/nx-darwin-x64@22.4.4": + resolution: + { integrity: sha512-O+tFKFSVJCFUTJclIr0OJaZ86ztoDWS6Y9ipXVg+EfzT8AbGp+RIz1t6qjDvgZNWFkKViCsuZ2mHJOu+5/R5fw== } cpu: [x64] os: [darwin] - '@nx/nx-freebsd-x64@22.4.1': - resolution: {integrity: sha512-n6Y10jSdPPclMyKi4SSkbri3pHHnWVOQuTgWIAlLUAHAp/t5pAU6ky3BPjxwfqjUehFbvvLYeNEKDFP8vFJXOw==} + "@nx/nx-freebsd-x64@22.4.4": + resolution: + { integrity: sha512-9nsGPR7xpRSFBYOrQhxokVhb5chy0Rq6zIWoXec6LrUjsHSWM5lvdfkUlQHG1DbZIimTzqIGUHK92OVb7X6tJw== } cpu: [x64] os: [freebsd] - '@nx/nx-linux-arm-gnueabihf@22.4.1': - resolution: {integrity: sha512-1wx5aEM3DWXPhYUprp8EBwmS5KGemB940iylFRtHBOVW/pD4nU9QfWAApAC/wkn+Ag7UQpgIG1xNI8TUhrpEpA==} + "@nx/nx-linux-arm-gnueabihf@22.4.4": + resolution: + { integrity: sha512-0m4j0KYnIw4SERorUxhpckDxn0zvohh7RbdKNMUzyw98Fl7n++n2yiLA6YS51y29tLzY/j4OqzMDT9BFjqZbUQ== } cpu: [arm] os: [linux] - '@nx/nx-linux-arm64-gnu@22.4.1': - resolution: {integrity: sha512-Q8ZYk/fm/y/Tve5Snw8HnasmCqyKkaz0A6OU00muR5PhcZF104PniW2JDwXOa+14AwJd0tcRug3OSd17DYHZnQ==} + "@nx/nx-linux-arm64-gnu@22.4.4": + resolution: + { integrity: sha512-vsCz2A2uHL5I8GzQW8X2/IlW+lIoyOUVgcSviZA6P1UFFOKOxAlVUsKvGZlfyTEwK9LDnH5zYclUrimxNEwYVw== } cpu: [arm64] os: [linux] + libc: [glibc] - '@nx/nx-linux-arm64-musl@22.4.1': - resolution: {integrity: sha512-73QLboxmFxQz3cur8SUrYNdf01SrfECKs8IYfD6kmJuxI+5Mjvd25NxAakqHQPuZt2MW6wD7V6T9H2lhIiRUZQ==} + "@nx/nx-linux-arm64-musl@22.4.4": + resolution: + { integrity: sha512-Jj0bqoB9a2iqHycVM6NY0OkU3np6yshFTcggteEH3jWQ5iSgO3E6O00rfwGx8mrMT8GfpCyQGLS5Q1HW79zKzQ== } cpu: [arm64] os: [linux] + libc: [musl] - '@nx/nx-linux-x64-gnu@22.4.1': - resolution: {integrity: sha512-jUT+Eh44WwwgVFsAMw8ZhSHOENCB9dUfFfMA1dabzCRzPRHGn1cGNROEBwOzcr69yuwrkCk8MBXKcPTEBpgZiQ==} + "@nx/nx-linux-x64-gnu@22.4.4": + resolution: + { integrity: sha512-2pMPaFae59j/Erop/LCWPr7xxT4NcY7CR9b5GJ+Dfz1Wv3wE9jE66tp2qFaH36Igso9r0Khf6rPrSCLaO+0QgQ== } cpu: [x64] os: [linux] + libc: [glibc] - '@nx/nx-linux-x64-musl@22.4.1': - resolution: {integrity: sha512-gIchvqNK//74oYuqUs96W+I+ZnOHJzGy/RH5sAnW2JexPGxJNEoWIlyHJ/CedJ/h7WGWZFJpu7TXhqlKWeVFLw==} + "@nx/nx-linux-x64-musl@22.4.4": + resolution: + { integrity: sha512-8Rnhrk2eWZfVs1Db5K15JGiis8h8v1w2avHlp4abJVJ+j1Sa0a1OWexBz2X0WkjYh/LcgRTzYBrE8+BV4yCPMw== } cpu: [x64] os: [linux] + libc: [musl] - '@nx/nx-win32-arm64-msvc@22.4.1': - resolution: {integrity: sha512-209BtB0PFqrTT8sCehjI7zWznersXjTLEwa/hy4WKKlRbaiepWebYNJWoSfBz0ZOYBGuLX15M4R7t57fM9gySA==} + "@nx/nx-win32-arm64-msvc@22.4.4": + resolution: + { integrity: sha512-e32okeoiaFSjfcZYj+uBdPRSzANAXLnh6D0k3isZ7stJnUtJ2hy5Kz5RCk10ddwdQgUn34sNz1oL2yFhXVWU4w== } cpu: [arm64] os: [win32] - '@nx/nx-win32-x64-msvc@22.4.1': - resolution: {integrity: sha512-QRgvgkTBLipoRJGofg5MlzMsWhnjpjQfssuyCSBmm1tjCdatBIDac5l6Z4xaUicPmjLzE3hPfnvX/t+ivRYKpA==} + "@nx/nx-win32-x64-msvc@22.4.4": + resolution: + { integrity: sha512-Jb8YsA7/GKGWWg2RkaDJQalaOpiQCPb57PtxNV5Ai7bsapM/7g/OfwenZXfH32FUoCT4yPVrnrKdjqbBHdEkxA== } cpu: [x64] os: [win32] - '@octokit/auth-token@4.0.0': - resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} - engines: {node: '>= 18'} - - '@octokit/core@5.2.1': - resolution: {integrity: sha512-dKYCMuPO1bmrpuogcjQ8z7ICCH3FP6WmxpwC03yjzGfZhj9fTJg6+bS1+UAplekbN2C+M61UNllGOOoAfGCrdQ==} - engines: {node: '>= 18'} - - '@octokit/endpoint@9.0.6': - resolution: {integrity: sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==} - engines: {node: '>= 18'} - - '@octokit/graphql@7.1.1': - resolution: {integrity: sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==} - engines: {node: '>= 18'} - - '@octokit/openapi-types@24.2.0': - resolution: {integrity: sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==} - - '@octokit/plugin-enterprise-rest@6.0.1': - resolution: {integrity: sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==} - - '@octokit/plugin-paginate-rest@11.4.4-cjs.2': - resolution: {integrity: sha512-2dK6z8fhs8lla5PaOTgqfCGBxgAv/le+EhPs27KklPhm1bKObpu6lXzwfUEQ16ajXzqNrKMujsFyo9K2eaoISw==} - engines: {node: '>= 18'} + "@octokit/auth-token@4.0.0": + resolution: + { integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA== } + engines: { node: ">= 18" } + + "@octokit/core@5.2.1": + resolution: + { integrity: sha512-dKYCMuPO1bmrpuogcjQ8z7ICCH3FP6WmxpwC03yjzGfZhj9fTJg6+bS1+UAplekbN2C+M61UNllGOOoAfGCrdQ== } + engines: { node: ">= 18" } + + "@octokit/endpoint@9.0.6": + resolution: + { integrity: sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw== } + engines: { node: ">= 18" } + + "@octokit/graphql@7.1.1": + resolution: + { integrity: sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g== } + engines: { node: ">= 18" } + + "@octokit/openapi-types@24.2.0": + resolution: + { integrity: sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg== } + + "@octokit/plugin-enterprise-rest@6.0.1": + resolution: + { integrity: sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== } + + "@octokit/plugin-paginate-rest@11.4.4-cjs.2": + resolution: + { integrity: sha512-2dK6z8fhs8lla5PaOTgqfCGBxgAv/le+EhPs27KklPhm1bKObpu6lXzwfUEQ16ajXzqNrKMujsFyo9K2eaoISw== } + engines: { node: ">= 18" } peerDependencies: - '@octokit/core': '5' + "@octokit/core": "5" - '@octokit/plugin-request-log@4.0.1': - resolution: {integrity: sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==} - engines: {node: '>= 18'} + "@octokit/plugin-request-log@4.0.1": + resolution: + { integrity: sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA== } + engines: { node: ">= 18" } peerDependencies: - '@octokit/core': '5' + "@octokit/core": "5" - '@octokit/plugin-rest-endpoint-methods@13.3.2-cjs.1': - resolution: {integrity: sha512-VUjIjOOvF2oELQmiFpWA1aOPdawpyaCUqcEBc/UOUnj3Xp6DJGrJ1+bjUIIDzdHjnFNO6q57ODMfdEZnoBkCwQ==} - engines: {node: '>= 18'} + "@octokit/plugin-rest-endpoint-methods@13.3.2-cjs.1": + resolution: + { integrity: sha512-VUjIjOOvF2oELQmiFpWA1aOPdawpyaCUqcEBc/UOUnj3Xp6DJGrJ1+bjUIIDzdHjnFNO6q57ODMfdEZnoBkCwQ== } + engines: { node: ">= 18" } peerDependencies: - '@octokit/core': ^5 - - '@octokit/request-error@5.1.1': - resolution: {integrity: sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==} - engines: {node: '>= 18'} - - '@octokit/request@8.4.1': - resolution: {integrity: sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==} - engines: {node: '>= 18'} - - '@octokit/rest@20.1.2': - resolution: {integrity: sha512-GmYiltypkHHtihFwPRxlaorG5R9VAHuk/vbszVoRTGXnAsY60wYLkh/E2XiFmdZmqrisw+9FaazS1i5SbdWYgA==} - engines: {node: '>= 18'} - - '@octokit/types@13.10.0': - resolution: {integrity: sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==} - - '@parcel/watcher-android-arm64@2.5.1': - resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} - engines: {node: '>= 10.0.0'} + "@octokit/core": ^5 + + "@octokit/request-error@5.1.1": + resolution: + { integrity: sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g== } + engines: { node: ">= 18" } + + "@octokit/request@8.4.1": + resolution: + { integrity: sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw== } + engines: { node: ">= 18" } + + "@octokit/rest@20.1.2": + resolution: + { integrity: sha512-GmYiltypkHHtihFwPRxlaorG5R9VAHuk/vbszVoRTGXnAsY60wYLkh/E2XiFmdZmqrisw+9FaazS1i5SbdWYgA== } + engines: { node: ">= 18" } + + "@octokit/types@13.10.0": + resolution: + { integrity: sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA== } + + "@parcel/watcher-android-arm64@2.5.1": + resolution: + { integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA== } + engines: { node: ">= 10.0.0" } cpu: [arm64] os: [android] - '@parcel/watcher-darwin-arm64@2.5.1': - resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} - engines: {node: '>= 10.0.0'} + "@parcel/watcher-darwin-arm64@2.5.1": + resolution: + { integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw== } + engines: { node: ">= 10.0.0" } cpu: [arm64] os: [darwin] - '@parcel/watcher-darwin-x64@2.5.1': - resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} - engines: {node: '>= 10.0.0'} + "@parcel/watcher-darwin-x64@2.5.1": + resolution: + { integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg== } + engines: { node: ">= 10.0.0" } cpu: [x64] os: [darwin] - '@parcel/watcher-freebsd-x64@2.5.1': - resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} - engines: {node: '>= 10.0.0'} + "@parcel/watcher-freebsd-x64@2.5.1": + resolution: + { integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ== } + engines: { node: ">= 10.0.0" } cpu: [x64] os: [freebsd] - '@parcel/watcher-linux-arm-glibc@2.5.1': - resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} - engines: {node: '>= 10.0.0'} + "@parcel/watcher-linux-arm-glibc@2.5.1": + resolution: + { integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA== } + engines: { node: ">= 10.0.0" } cpu: [arm] os: [linux] + libc: [glibc] - '@parcel/watcher-linux-arm-musl@2.5.1': - resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} - engines: {node: '>= 10.0.0'} + "@parcel/watcher-linux-arm-musl@2.5.1": + resolution: + { integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q== } + engines: { node: ">= 10.0.0" } cpu: [arm] os: [linux] + libc: [musl] - '@parcel/watcher-linux-arm64-glibc@2.5.1': - resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} - engines: {node: '>= 10.0.0'} + "@parcel/watcher-linux-arm64-glibc@2.5.1": + resolution: + { integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w== } + engines: { node: ">= 10.0.0" } cpu: [arm64] os: [linux] + libc: [glibc] - '@parcel/watcher-linux-arm64-musl@2.5.1': - resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} - engines: {node: '>= 10.0.0'} + "@parcel/watcher-linux-arm64-musl@2.5.1": + resolution: + { integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg== } + engines: { node: ">= 10.0.0" } cpu: [arm64] os: [linux] + libc: [musl] - '@parcel/watcher-linux-x64-glibc@2.5.1': - resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} - engines: {node: '>= 10.0.0'} + "@parcel/watcher-linux-x64-glibc@2.5.1": + resolution: + { integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A== } + engines: { node: ">= 10.0.0" } cpu: [x64] os: [linux] + libc: [glibc] - '@parcel/watcher-linux-x64-musl@2.5.1': - resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} - engines: {node: '>= 10.0.0'} + "@parcel/watcher-linux-x64-musl@2.5.1": + resolution: + { integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg== } + engines: { node: ">= 10.0.0" } cpu: [x64] os: [linux] + libc: [musl] - '@parcel/watcher-win32-arm64@2.5.1': - resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} - engines: {node: '>= 10.0.0'} + "@parcel/watcher-win32-arm64@2.5.1": + resolution: + { integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw== } + engines: { node: ">= 10.0.0" } cpu: [arm64] os: [win32] - '@parcel/watcher-win32-ia32@2.5.1': - resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} - engines: {node: '>= 10.0.0'} + "@parcel/watcher-win32-ia32@2.5.1": + resolution: + { integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ== } + engines: { node: ">= 10.0.0" } cpu: [ia32] os: [win32] - '@parcel/watcher-win32-x64@2.5.1': - resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} - engines: {node: '>= 10.0.0'} + "@parcel/watcher-win32-x64@2.5.1": + resolution: + { integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA== } + engines: { node: ">= 10.0.0" } cpu: [x64] os: [win32] - '@parcel/watcher@2.5.1': - resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} - engines: {node: '>= 10.0.0'} - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@pkgr/core@0.2.9': - resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - - '@polka/url@1.0.0-next.25': - resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} - - '@popperjs/core@2.11.8': - resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - - '@putout/minify@6.0.0': - resolution: {integrity: sha512-v/nzJzgUyh9TzRfy+5pTjj1z8Yhhg83TC4TQ/Mrrn2UwJnWWS/mVcpOWwHuFy7KsLnazE0ChHK/anM7GncrbHg==} - engines: {node: '>=22'} - - '@rollup/rollup-android-arm-eabi@4.55.1': - resolution: {integrity: sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg==} + "@parcel/watcher@2.5.1": + resolution: + { integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg== } + engines: { node: ">= 10.0.0" } + + "@pkgjs/parseargs@0.11.0": + resolution: + { integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== } + engines: { node: ">=14" } + + "@pkgr/core@0.2.9": + resolution: + { integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA== } + engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 } + + "@polka/url@1.0.0-next.25": + resolution: + { integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ== } + + "@popperjs/core@2.11.8": + resolution: + { integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== } + + "@putout/minify@6.0.0": + resolution: + { integrity: sha512-v/nzJzgUyh9TzRfy+5pTjj1z8Yhhg83TC4TQ/Mrrn2UwJnWWS/mVcpOWwHuFy7KsLnazE0ChHK/anM7GncrbHg== } + engines: { node: ">=22" } + + "@rollup/rollup-android-arm-eabi@4.55.1": + resolution: + { integrity: sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg== } cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.55.1': - resolution: {integrity: sha512-eFZCb1YUqhTysgW3sj/55du5cG57S7UTNtdMjCW7LwVcj3dTTcowCsC8p7uBdzKsZYa8J7IDE8lhMI+HX1vQvg==} + "@rollup/rollup-android-arm64@4.55.1": + resolution: + { integrity: sha512-eFZCb1YUqhTysgW3sj/55du5cG57S7UTNtdMjCW7LwVcj3dTTcowCsC8p7uBdzKsZYa8J7IDE8lhMI+HX1vQvg== } cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.55.1': - resolution: {integrity: sha512-p3grE2PHcQm2e8PSGZdzIhCKbMCw/xi9XvMPErPhwO17vxtvCN5FEA2mSLgmKlCjHGMQTP6phuQTYWUnKewwGg==} + "@rollup/rollup-darwin-arm64@4.55.1": + resolution: + { integrity: sha512-p3grE2PHcQm2e8PSGZdzIhCKbMCw/xi9XvMPErPhwO17vxtvCN5FEA2mSLgmKlCjHGMQTP6phuQTYWUnKewwGg== } cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.55.1': - resolution: {integrity: sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ==} + "@rollup/rollup-darwin-x64@4.55.1": + resolution: + { integrity: sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ== } cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.55.1': - resolution: {integrity: sha512-+JiU7Jbp5cdxekIgdte0jfcu5oqw4GCKr6i3PJTlXTCU5H5Fvtkpbs4XJHRmWNXF+hKmn4v7ogI5OQPaupJgOg==} + "@rollup/rollup-freebsd-arm64@4.55.1": + resolution: + { integrity: sha512-+JiU7Jbp5cdxekIgdte0jfcu5oqw4GCKr6i3PJTlXTCU5H5Fvtkpbs4XJHRmWNXF+hKmn4v7ogI5OQPaupJgOg== } cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.55.1': - resolution: {integrity: sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw==} + "@rollup/rollup-freebsd-x64@4.55.1": + resolution: + { integrity: sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw== } cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.55.1': - resolution: {integrity: sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ==} + "@rollup/rollup-linux-arm-gnueabihf@4.55.1": + resolution: + { integrity: sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ== } cpu: [arm] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.55.1': - resolution: {integrity: sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg==} + "@rollup/rollup-linux-arm-musleabihf@4.55.1": + resolution: + { integrity: sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg== } cpu: [arm] os: [linux] + libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.55.1': - resolution: {integrity: sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ==} + "@rollup/rollup-linux-arm64-gnu@4.55.1": + resolution: + { integrity: sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ== } cpu: [arm64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.55.1': - resolution: {integrity: sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA==} + "@rollup/rollup-linux-arm64-musl@4.55.1": + resolution: + { integrity: sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA== } cpu: [arm64] os: [linux] + libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.55.1': - resolution: {integrity: sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g==} + "@rollup/rollup-linux-loong64-gnu@4.55.1": + resolution: + { integrity: sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g== } cpu: [loong64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-loong64-musl@4.55.1': - resolution: {integrity: sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw==} + "@rollup/rollup-linux-loong64-musl@4.55.1": + resolution: + { integrity: sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw== } cpu: [loong64] os: [linux] + libc: [musl] - '@rollup/rollup-linux-ppc64-gnu@4.55.1': - resolution: {integrity: sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw==} + "@rollup/rollup-linux-ppc64-gnu@4.55.1": + resolution: + { integrity: sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw== } cpu: [ppc64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-ppc64-musl@4.55.1': - resolution: {integrity: sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw==} + "@rollup/rollup-linux-ppc64-musl@4.55.1": + resolution: + { integrity: sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw== } cpu: [ppc64] os: [linux] + libc: [musl] - '@rollup/rollup-linux-riscv64-gnu@4.55.1': - resolution: {integrity: sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw==} + "@rollup/rollup-linux-riscv64-gnu@4.55.1": + resolution: + { integrity: sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw== } cpu: [riscv64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.55.1': - resolution: {integrity: sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg==} + "@rollup/rollup-linux-riscv64-musl@4.55.1": + resolution: + { integrity: sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg== } cpu: [riscv64] os: [linux] + libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.55.1': - resolution: {integrity: sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg==} + "@rollup/rollup-linux-s390x-gnu@4.55.1": + resolution: + { integrity: sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg== } cpu: [s390x] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.55.1': - resolution: {integrity: sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg==} + "@rollup/rollup-linux-x64-gnu@4.55.1": + resolution: + { integrity: sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg== } cpu: [x64] os: [linux] + libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.55.1': - resolution: {integrity: sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w==} + "@rollup/rollup-linux-x64-musl@4.55.1": + resolution: + { integrity: sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w== } cpu: [x64] os: [linux] + libc: [musl] - '@rollup/rollup-openbsd-x64@4.55.1': - resolution: {integrity: sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg==} + "@rollup/rollup-openbsd-x64@4.55.1": + resolution: + { integrity: sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg== } cpu: [x64] os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.55.1': - resolution: {integrity: sha512-xzm44KgEP11te3S2HCSyYf5zIzWmx3n8HDCc7EE59+lTcswEWNpvMLfd9uJvVX8LCg9QWG67Xt75AuHn4vgsXw==} + "@rollup/rollup-openharmony-arm64@4.55.1": + resolution: + { integrity: sha512-xzm44KgEP11te3S2HCSyYf5zIzWmx3n8HDCc7EE59+lTcswEWNpvMLfd9uJvVX8LCg9QWG67Xt75AuHn4vgsXw== } cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.55.1': - resolution: {integrity: sha512-yR6Bl3tMC/gBok5cz/Qi0xYnVbIxGx5Fcf/ca0eB6/6JwOY+SRUcJfI0OpeTpPls7f194as62thCt/2BjxYN8g==} + "@rollup/rollup-win32-arm64-msvc@4.55.1": + resolution: + { integrity: sha512-yR6Bl3tMC/gBok5cz/Qi0xYnVbIxGx5Fcf/ca0eB6/6JwOY+SRUcJfI0OpeTpPls7f194as62thCt/2BjxYN8g== } cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.55.1': - resolution: {integrity: sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA==} + "@rollup/rollup-win32-ia32-msvc@4.55.1": + resolution: + { integrity: sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA== } cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.55.1': - resolution: {integrity: sha512-xGGY5pXj69IxKb4yv/POoocPy/qmEGhimy/FoTpTSVju3FYXUQQMFCaZZXJVidsmGxRioZAwpThl/4zX41gRKg==} + "@rollup/rollup-win32-x64-gnu@4.55.1": + resolution: + { integrity: sha512-xGGY5pXj69IxKb4yv/POoocPy/qmEGhimy/FoTpTSVju3FYXUQQMFCaZZXJVidsmGxRioZAwpThl/4zX41gRKg== } cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.55.1': - resolution: {integrity: sha512-SPEpaL6DX4rmcXtnhdrQYgzQ5W2uW3SCJch88lB2zImhJRhIIK44fkUrgIV/Q8yUNfw5oyZ5vkeQsZLhCb06lw==} + "@rollup/rollup-win32-x64-msvc@4.55.1": + resolution: + { integrity: sha512-SPEpaL6DX4rmcXtnhdrQYgzQ5W2uW3SCJch88lB2zImhJRhIIK44fkUrgIV/Q8yUNfw5oyZ5vkeQsZLhCb06lw== } cpu: [x64] os: [win32] - '@rtsao/scc@1.1.0': - resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - - '@shikijs/engine-oniguruma@3.20.0': - resolution: {integrity: sha512-Yx3gy7xLzM0ZOjqoxciHjA7dAt5tyzJE3L4uQoM83agahy+PlW244XJSrmJRSBvGYELDhYXPacD4R/cauV5bzQ==} - - '@shikijs/langs@3.20.0': - resolution: {integrity: sha512-le+bssCxcSHrygCWuOrYJHvjus6zhQ2K7q/0mgjiffRbkhM4o1EWu2m+29l0yEsHDbWaWPNnDUTRVVBvBBeKaA==} - - '@shikijs/themes@3.20.0': - resolution: {integrity: sha512-U1NSU7Sl26Q7ErRvJUouArxfM2euWqq1xaSrbqMu2iqa+tSp0D1Yah8216sDYbdDHw4C8b75UpE65eWorm2erQ==} - - '@shikijs/types@3.20.0': - resolution: {integrity: sha512-lhYAATn10nkZcBQ0BlzSbJA3wcmL5MXUUF8d2Zzon6saZDlToKaiRX60n2+ZaHJCmXEcZRWNzn+k9vplr8Jhsw==} - - '@shikijs/vscode-textmate@10.0.2': - resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} - - '@sigstore/bundle@4.0.0': - resolution: {integrity: sha512-NwCl5Y0V6Di0NexvkTqdoVfmjTaQwoLM236r89KEojGmq/jMls8S+zb7yOwAPdXvbwfKDlP+lmXgAL4vKSQT+A==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@sigstore/core@3.1.0': - resolution: {integrity: sha512-o5cw1QYhNQ9IroioJxpzexmPjfCe7gzafd2RY3qnMpxr4ZEja+Jad/U8sgFpaue6bOaF+z7RVkyKVV44FN+N8A==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@sigstore/protobuf-specs@0.5.0': - resolution: {integrity: sha512-MM8XIwUjN2bwvCg1QvrMtbBmpcSHrkhFSCu1D11NyPvDQ25HEc4oG5/OcQfd/Tlf/OxmKWERDj0zGE23jQaMwA==} - engines: {node: ^18.17.0 || >=20.5.0} - - '@sigstore/sign@4.1.0': - resolution: {integrity: sha512-Vx1RmLxLGnSUqx/o5/VsCjkuN5L7y+vxEEwawvc7u+6WtX2W4GNa7b9HEjmcRWohw/d6BpATXmvOwc78m+Swdg==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@sigstore/tuf@4.0.1': - resolution: {integrity: sha512-OPZBg8y5Vc9yZjmWCHrlWPMBqW5yd8+wFNl+thMdtcWz3vjVSoJQutF8YkrzI0SLGnkuFof4HSsWUhXrf219Lw==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@sigstore/verify@3.1.0': - resolution: {integrity: sha512-mNe0Iigql08YupSOGv197YdHpPPr+EzDZmfCgMc7RPNaZTw5aLN01nBl6CHJOh3BGtnMIj83EeN4butBchc8Ag==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@sinclair/typebox@0.34.41': - resolution: {integrity: sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==} - - '@sindresorhus/base62@1.0.0': - resolution: {integrity: sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==} - engines: {node: '>=18'} - - '@sindresorhus/is@4.6.0': - resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} - engines: {node: '>=10'} - - '@so-ric/colorspace@1.1.6': - resolution: {integrity: sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==} - - '@sphinxxxx/color-conversion@2.2.2': - resolution: {integrity: sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==} - - '@standard-schema/spec@1.1.0': - resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - - '@stylistic/eslint-plugin@5.7.0': - resolution: {integrity: sha512-PsSugIf9ip1H/mWKj4bi/BlEoerxXAda9ByRFsYuwsmr6af9NxJL0AaiNXs8Le7R21QR5KMiD/KdxZZ71LjAxQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@rtsao/scc@1.1.0": + resolution: + { integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== } + + "@shikijs/engine-oniguruma@3.20.0": + resolution: + { integrity: sha512-Yx3gy7xLzM0ZOjqoxciHjA7dAt5tyzJE3L4uQoM83agahy+PlW244XJSrmJRSBvGYELDhYXPacD4R/cauV5bzQ== } + + "@shikijs/langs@3.20.0": + resolution: + { integrity: sha512-le+bssCxcSHrygCWuOrYJHvjus6zhQ2K7q/0mgjiffRbkhM4o1EWu2m+29l0yEsHDbWaWPNnDUTRVVBvBBeKaA== } + + "@shikijs/themes@3.20.0": + resolution: + { integrity: sha512-U1NSU7Sl26Q7ErRvJUouArxfM2euWqq1xaSrbqMu2iqa+tSp0D1Yah8216sDYbdDHw4C8b75UpE65eWorm2erQ== } + + "@shikijs/types@3.20.0": + resolution: + { integrity: sha512-lhYAATn10nkZcBQ0BlzSbJA3wcmL5MXUUF8d2Zzon6saZDlToKaiRX60n2+ZaHJCmXEcZRWNzn+k9vplr8Jhsw== } + + "@shikijs/vscode-textmate@10.0.2": + resolution: + { integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg== } + + "@sigstore/bundle@4.0.0": + resolution: + { integrity: sha512-NwCl5Y0V6Di0NexvkTqdoVfmjTaQwoLM236r89KEojGmq/jMls8S+zb7yOwAPdXvbwfKDlP+lmXgAL4vKSQT+A== } + engines: { node: ^20.17.0 || >=22.9.0 } + + "@sigstore/core@3.1.0": + resolution: + { integrity: sha512-o5cw1QYhNQ9IroioJxpzexmPjfCe7gzafd2RY3qnMpxr4ZEja+Jad/U8sgFpaue6bOaF+z7RVkyKVV44FN+N8A== } + engines: { node: ^20.17.0 || >=22.9.0 } + + "@sigstore/protobuf-specs@0.5.0": + resolution: + { integrity: sha512-MM8XIwUjN2bwvCg1QvrMtbBmpcSHrkhFSCu1D11NyPvDQ25HEc4oG5/OcQfd/Tlf/OxmKWERDj0zGE23jQaMwA== } + engines: { node: ^18.17.0 || >=20.5.0 } + + "@sigstore/sign@4.1.0": + resolution: + { integrity: sha512-Vx1RmLxLGnSUqx/o5/VsCjkuN5L7y+vxEEwawvc7u+6WtX2W4GNa7b9HEjmcRWohw/d6BpATXmvOwc78m+Swdg== } + engines: { node: ^20.17.0 || >=22.9.0 } + + "@sigstore/tuf@4.0.1": + resolution: + { integrity: sha512-OPZBg8y5Vc9yZjmWCHrlWPMBqW5yd8+wFNl+thMdtcWz3vjVSoJQutF8YkrzI0SLGnkuFof4HSsWUhXrf219Lw== } + engines: { node: ^20.17.0 || >=22.9.0 } + + "@sigstore/verify@3.1.0": + resolution: + { integrity: sha512-mNe0Iigql08YupSOGv197YdHpPPr+EzDZmfCgMc7RPNaZTw5aLN01nBl6CHJOh3BGtnMIj83EeN4butBchc8Ag== } + engines: { node: ^20.17.0 || >=22.9.0 } + + "@sinclair/typebox@0.34.41": + resolution: + { integrity: sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g== } + + "@sindresorhus/base62@1.0.0": + resolution: + { integrity: sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA== } + engines: { node: ">=18" } + + "@sindresorhus/is@4.6.0": + resolution: + { integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== } + engines: { node: ">=10" } + + "@so-ric/colorspace@1.1.6": + resolution: + { integrity: sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw== } + + "@sphinxxxx/color-conversion@2.2.2": + resolution: + { integrity: sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw== } + + "@standard-schema/spec@1.1.0": + resolution: + { integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w== } + + "@stylistic/eslint-plugin@5.7.1": + resolution: + { integrity: sha512-zjTUwIsEfT+k9BmXwq1QEFYsb4afBlsI1AXFyWQBgggMzwBFOuu92pGrE5OFx90IOjNl+lUbQoTG7f8S0PkOdg== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - eslint: '>=9.0.0' + eslint: ">=9.0.0" - '@swc/core-darwin-arm64@1.15.10': - resolution: {integrity: sha512-U72pGqmJYbjrLhMndIemZ7u9Q9owcJczGxwtfJlz/WwMaGYAV/g4nkGiUVk/+QSX8sFCAjanovcU1IUsP2YulA==} - engines: {node: '>=10'} + "@swc/core-darwin-arm64@1.15.11": + resolution: + { integrity: sha512-QoIupRWVH8AF1TgxYyeA5nS18dtqMuxNwchjBIwJo3RdwLEFiJq6onOx9JAxHtuPwUkIVuU2Xbp+jCJ7Vzmgtg== } + engines: { node: ">=10" } cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.15.10': - resolution: {integrity: sha512-NZpDXtwHH083L40xdyj1sY31MIwLgOxKfZEAGCI8xHXdHa+GWvEiVdGiu4qhkJctoHFzAEc7ZX3GN5phuJcPuQ==} - engines: {node: '>=10'} + "@swc/core-darwin-x64@1.15.11": + resolution: + { integrity: sha512-S52Gu1QtPSfBYDiejlcfp9GlN+NjTZBRRNsz8PNwBgSE626/FUf2PcllVUix7jqkoMC+t0rS8t+2/aSWlMuQtA== } + engines: { node: ">=10" } cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.15.10': - resolution: {integrity: sha512-ioieF5iuRziUF1HkH1gg1r93e055dAdeBAPGAk40VjqpL5/igPJ/WxFHGvc6WMLhUubSJI4S0AiZAAhEAp1jDg==} - engines: {node: '>=10'} + "@swc/core-linux-arm-gnueabihf@1.15.11": + resolution: + { integrity: sha512-lXJs8oXo6Z4yCpimpQ8vPeCjkgoHu5NoMvmJZ8qxDyU99KVdg6KwU9H79vzrmB+HfH+dCZ7JGMqMF//f8Cfvdg== } + engines: { node: ">=10" } cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.15.10': - resolution: {integrity: sha512-tD6BClOrxSsNus9cJL7Gxdv7z7Y2hlyvZd9l0NQz+YXzmTWqnfzLpg16ovEI7gknH2AgDBB5ywOsqu8hUgSeEQ==} - engines: {node: '>=10'} + "@swc/core-linux-arm64-gnu@1.15.11": + resolution: + { integrity: sha512-chRsz1K52/vj8Mfq/QOugVphlKPWlMh10V99qfH41hbGvwAU6xSPd681upO4bKiOr9+mRIZZW+EfJqY42ZzRyA== } + engines: { node: ">=10" } cpu: [arm64] os: [linux] + libc: [glibc] - '@swc/core-linux-arm64-musl@1.15.10': - resolution: {integrity: sha512-4uAHO3nbfbrTcmO/9YcVweTQdx5fN3l7ewwl5AEK4yoC4wXmoBTEPHAVdKNe4r9+xrTgd4BgyPsy0409OjjlMw==} - engines: {node: '>=10'} + "@swc/core-linux-arm64-musl@1.15.11": + resolution: + { integrity: sha512-PYftgsTaGnfDK4m6/dty9ryK1FbLk+LosDJ/RJR2nkXGc8rd+WenXIlvHjWULiBVnS1RsjHHOXmTS4nDhe0v0w== } + engines: { node: ">=10" } cpu: [arm64] os: [linux] + libc: [musl] - '@swc/core-linux-x64-gnu@1.15.10': - resolution: {integrity: sha512-W0h9ONNw1pVIA0cN7wtboOSTl4Jk3tHq+w2cMPQudu9/+3xoCxpFb9ZdehwCAk29IsvdWzGzY6P7dDVTyFwoqg==} - engines: {node: '>=10'} + "@swc/core-linux-x64-gnu@1.15.11": + resolution: + { integrity: sha512-DKtnJKIHiZdARyTKiX7zdRjiDS1KihkQWatQiCHMv+zc2sfwb4Glrodx2VLOX4rsa92NLR0Sw8WLcPEMFY1szQ== } + engines: { node: ">=10" } cpu: [x64] os: [linux] + libc: [glibc] - '@swc/core-linux-x64-musl@1.15.10': - resolution: {integrity: sha512-XQNZlLZB62S8nAbw7pqoqwy91Ldy2RpaMRqdRN3T+tAg6Xg6FywXRKCsLh6IQOadr4p1+lGnqM/Wn35z5a/0Vw==} - engines: {node: '>=10'} + "@swc/core-linux-x64-musl@1.15.11": + resolution: + { integrity: sha512-mUjjntHj4+8WBaiDe5UwRNHuEzLjIWBTSGTw0JT9+C9/Yyuh4KQqlcEQ3ro6GkHmBGXBFpGIj/o5VMyRWfVfWw== } + engines: { node: ">=10" } cpu: [x64] os: [linux] + libc: [musl] - '@swc/core-win32-arm64-msvc@1.15.10': - resolution: {integrity: sha512-qnAGrRv5Nj/DATxAmCnJQRXXQqnJwR0trxLndhoHoxGci9MuguNIjWahS0gw8YZFjgTinbTxOwzatkoySihnmw==} - engines: {node: '>=10'} + "@swc/core-win32-arm64-msvc@1.15.11": + resolution: + { integrity: sha512-ZkNNG5zL49YpaFzfl6fskNOSxtcZ5uOYmWBkY4wVAvgbSAQzLRVBp+xArGWh2oXlY/WgL99zQSGTv7RI5E6nzA== } + engines: { node: ">=10" } cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.15.10': - resolution: {integrity: sha512-i4X/q8QSvzVlaRtv1xfnfl+hVKpCfiJ+9th484rh937fiEZKxZGf51C+uO0lfKDP1FfnT6C1yBYwHy7FLBVXFw==} - engines: {node: '>=10'} + "@swc/core-win32-ia32-msvc@1.15.11": + resolution: + { integrity: sha512-6XnzORkZCQzvTQ6cPrU7iaT9+i145oLwnin8JrfsLG41wl26+5cNQ2XV3zcbrnFEV6esjOceom9YO1w9mGJByw== } + engines: { node: ">=10" } cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.15.10': - resolution: {integrity: sha512-HvY8XUFuoTXn6lSccDLYFlXv1SU/PzYi4PyUqGT++WfTnbw/68N/7BdUZqglGRwiSqr0qhYt/EhmBpULj0J9rA==} - engines: {node: '>=10'} + "@swc/core-win32-x64-msvc@1.15.11": + resolution: + { integrity: sha512-IQ2n6af7XKLL6P1gIeZACskSxK8jWtoKpJWLZmdXTDj1MGzktUy4i+FvpdtxFmJWNavRWH1VmTr6kAubRDHeKw== } + engines: { node: ">=10" } cpu: [x64] os: [win32] - '@swc/core@1.15.10': - resolution: {integrity: sha512-udNofxftduMUEv7nqahl2nvodCiCDQ4Ge0ebzsEm6P8s0RC2tBM0Hqx0nNF5J/6t9uagFJyWIDjXy3IIWMHDJw==} - engines: {node: '>=10'} + "@swc/core@1.15.11": + resolution: + { integrity: sha512-iLmLTodbYxU39HhMPaMUooPwO/zqJWvsqkrXv1ZI38rMb048p6N7qtAtTp37sw9NzSrvH6oli8EdDygo09IZ/w== } + engines: { node: ">=10" } peerDependencies: - '@swc/helpers': '>=0.5.17' + "@swc/helpers": ">=0.5.17" peerDependenciesMeta: - '@swc/helpers': + "@swc/helpers": optional: true - '@swc/counter@0.1.3': - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - - '@swc/types@0.1.25': - resolution: {integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==} - - '@szmarczak/http-timer@4.0.6': - resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} - engines: {node: '>=10'} - - '@ts-graphviz/adapter@2.0.3': - resolution: {integrity: sha512-wHSN23UdLz4vuYUBZCzq2/tfLicwStSo3cUWnzvMNxG2ngcuYauQCQInv4CI5IObq+PFol28RVrG9Ffa9BuIRA==} - engines: {node: '>=18'} - - '@ts-graphviz/ast@2.0.3': - resolution: {integrity: sha512-NhOgJdOHGSn5h5ydsFreLIKFBwQ59drzZ6y0B98+KeEMqduv5hXxcQoDabw8yzeNe9B92AfR5OpUYthcdAsYgw==} - engines: {node: '>=18'} + "@swc/counter@0.1.3": + resolution: + { integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== } - '@ts-graphviz/common@2.1.2': - resolution: {integrity: sha512-Wyh5fOZNYyNP1mymbcHg/9atWR33NhHWIDrNa4hfbel3v340YQ+q+LMwAuIPuPt1qXINvOEhkowO5dvJWqfnPA==} - engines: {node: '>=18'} + "@swc/types@0.1.25": + resolution: + { integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g== } - '@ts-graphviz/core@2.0.3': - resolution: {integrity: sha512-EZ+XlSwjdLtscoBOnA/Ba6QBrmoxAR73tJFjnWxaJQsZxWBQv6bLUrDgZUdXkXRAOSkRHn0uXY6Wq/3SsV2WtQ==} - engines: {node: '>=18'} + "@szmarczak/http-timer@4.0.6": + resolution: + { integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== } + engines: { node: ">=10" } - '@tsconfig/node10@1.0.9': - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + "@tsconfig/node10@1.0.9": + resolution: + { integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== } - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + "@tsconfig/node12@1.0.11": + resolution: + { integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== } - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + "@tsconfig/node14@1.0.3": + resolution: + { integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== } - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + "@tsconfig/node16@1.0.4": + resolution: + { integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== } - '@tsparticles/cli@3.0.16': - resolution: {integrity: sha512-fVGJ1rhby381/mAm24x2SgKjZNVEImGkT+eWCf6iLnNkXOGEn9aRJSewoRJWEHVISW8n7N6WXzzhWsvmNmkeeA==} + "@tsparticles/cli@3.1.3": + resolution: + { integrity: sha512-CpF2S+W6erko0XL1d7dOd4E49OalUQnR4mrFhpJqruExsoc0yUXRtwoaJbeMM910OKuiFcXDI3le3HT8RTH5wA== } hasBin: true - '@tsparticles/eslint-config@3.0.11': - resolution: {integrity: sha512-O7NUbJZr1sSULatg4EtLM7D3JenE9CoQj4srNtR/FQO8ap6UEVAugGpJFbN10cJgOfmXEzPyXsKuBf86gqC/Ew==} + "@tsparticles/depcruise-config@3.1.2": + resolution: + { integrity: sha512-ya9uzwVwZwg39pbBeo1uy/kTNRfSyuX0fpKLHUZXkO2kk5Hf8hkWfquPo7SMhVeXFm3wGWUYcG3y4YaOB6rGPA== } peerDependencies: - eslint: ^9.0.0 - - '@tsparticles/prettier-config@3.0.11': - resolution: {integrity: sha512-ohY2P+TBueTmoYWxhNoOlS3BaZbIZiL83fpBnu+Zm/v98m429+nZ9saLRNmlna/wQ5X5+g9721jDruQBthFW6w==} - - '@tsparticles/tsconfig@3.0.9': - resolution: {integrity: sha512-Ghn7tZXGONb1VtCkcpBo7xJW7VxSGZJmqWy3mIDte7t5WnErfQNZui/JRFOVE5Sq1vPv6/dR7n1WTP4o+TafyA==} - - '@tsparticles/webpack-plugin@3.0.11': - resolution: {integrity: sha512-t4zf4yIDSX3ULyvCHqCVZt+bDH7U32+3TcQTBdN5Z0d73gqDu/xbg7WFADtb9cPxrUhjtHFA1GfayZMn1RIGZw==} + dependency-cruiser: ^17 - '@tufjs/canonical-json@2.0.0': - resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@tufjs/models@4.1.0': - resolution: {integrity: sha512-Y8cK9aggNRsqJVaKUlEYs4s7CvQ1b1ta2DVPyAimb0I2qhzjNk+A+mxvll/klL0RlfuIUei8BF7YWiua4kQqww==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@tybys/wasm-util@0.9.0': - resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} + "@tsparticles/eslint-config@3.1.1": + resolution: + { integrity: sha512-1WIX4O/GFcKUff2Dq9KGyz6Hmm/5X2vY7gyHmiJaPaQBSZ60gr9R4Ap79bbQmvXtoPJ1J+cQyCcBqdHWXUhl5g== } + peerDependencies: + eslint: ^9.0.0 - '@types/body-parser@1.19.2': - resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} + "@tsparticles/prettier-config@3.0.11": + resolution: + { integrity: sha512-ohY2P+TBueTmoYWxhNoOlS3BaZbIZiL83fpBnu+Zm/v98m429+nZ9saLRNmlna/wQ5X5+g9721jDruQBthFW6w== } - '@types/cacheable-request@6.0.3': - resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} + "@tsparticles/tsconfig@3.1.0": + resolution: + { integrity: sha512-yA2djV8JZ/SuWCtl1M5nQrK9K101wHONtRrcosgn8pvgOkbrWmegF/nd10/mPx2EyWEqKLudicSsHaoAUoQ8Iw== } - '@types/chai@5.2.2': - resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + "@tsparticles/webpack-plugin@3.1.2": + resolution: + { integrity: sha512-9edOcFkCWKc4LAu24HPxCx22gMfMD775Qdkm0nBEH4saPWBIgtLtg3CiUqFKxQ2R//JeTw///XDYqnfAOLTBTg== } - '@types/connect-livereload@0.6.3': - resolution: {integrity: sha512-CaWami/rQdycHKnOR+UIfBNxNeqLC5f1KqMdclbsf+TsiLgXwYm2/+KlAefcR3ODom7Fuz4bvWazDMsmfaV5gw==} + "@tufjs/canonical-json@2.0.0": + resolution: + { integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA== } + engines: { node: ^16.14.0 || >=18.0.0 } - '@types/connect@3.4.35': - resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} + "@tufjs/models@4.1.0": + resolution: + { integrity: sha512-Y8cK9aggNRsqJVaKUlEYs4s7CvQ1b1ta2DVPyAimb0I2qhzjNk+A+mxvll/klL0RlfuIUei8BF7YWiua4kQqww== } + engines: { node: ^20.17.0 || >=22.9.0 } - '@types/conventional-commits-parser@5.0.0': - resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==} + "@tybys/wasm-util@0.9.0": + resolution: + { integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw== } - '@types/deep-eql@4.0.2': - resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + "@types/body-parser@1.19.2": + resolution: + { integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== } - '@types/eslint-scope@3.7.7': - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + "@types/cacheable-request@6.0.3": + resolution: + { integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== } - '@types/eslint@8.56.6': - resolution: {integrity: sha512-ymwc+qb1XkjT/gfoQwxIeHZ6ixH23A+tCT2ADSA/DPVKzAjwYkTXBMCQ/f6fe4wEa85Lhp26VPeUxI7wMhAi7A==} + "@types/chai@5.2.2": + resolution: + { integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg== } - '@types/estree@1.0.8': - resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + "@types/connect-livereload@0.6.3": + resolution: + { integrity: sha512-CaWami/rQdycHKnOR+UIfBNxNeqLC5f1KqMdclbsf+TsiLgXwYm2/+KlAefcR3ODom7Fuz4bvWazDMsmfaV5gw== } - '@types/express-serve-static-core@5.0.0': - resolution: {integrity: sha512-AbXMTZGt40T+KON9/Fdxx0B2WK5hsgxcfXJLr5bFpZ7b4JCex2WyQPTEKdXqfHiY5nKKBScZ7yCoO6Pvgxfvnw==} + "@types/connect@3.4.35": + resolution: + { integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== } - '@types/express@5.0.6': - resolution: {integrity: sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==} + "@types/deep-eql@4.0.2": + resolution: + { integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw== } - '@types/hast@3.0.4': - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + "@types/eslint-scope@3.7.7": + resolution: + { integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== } - '@types/http-cache-semantics@4.0.4': - resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + "@types/eslint@8.56.6": + resolution: + { integrity: sha512-ymwc+qb1XkjT/gfoQwxIeHZ6ixH23A+tCT2ADSA/DPVKzAjwYkTXBMCQ/f6fe4wEa85Lhp26VPeUxI7wMhAi7A== } - '@types/http-errors@2.0.5': - resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} + "@types/estree@1.0.8": + resolution: + { integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== } - '@types/jsdom@27.0.0': - resolution: {integrity: sha512-NZyFl/PViwKzdEkQg96gtnB8wm+1ljhdDay9ahn4hgb+SfVtPCbm3TlmDUFXTA+MGN3CijicnMhG18SI5H3rFw==} + "@types/express-serve-static-core@5.0.0": + resolution: + { integrity: sha512-AbXMTZGt40T+KON9/Fdxx0B2WK5hsgxcfXJLr5bFpZ7b4JCex2WyQPTEKdXqfHiY5nKKBScZ7yCoO6Pvgxfvnw== } - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + "@types/express@5.0.6": + resolution: + { integrity: sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA== } - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + "@types/hast@3.0.4": + resolution: + { integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ== } - '@types/keyv@3.1.4': - resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + "@types/http-cache-semantics@4.0.4": + resolution: + { integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== } - '@types/livereload@0.9.5': - resolution: {integrity: sha512-2RXcRKdivPmn67pwjytvHoRv46AeXaLYVUWA0zkel1XSAOH5i71G0KfUdE5u3g80T155gR3Fo3ilVaqparLsVA==} + "@types/http-errors@2.0.5": + resolution: + { integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg== } - '@types/luxon@3.7.1': - resolution: {integrity: sha512-H3iskjFIAn5SlJU7OuxUmTEpebK6TKB8rxZShDslBMZJ5u9S//KM1sbdAisiSrqwLQncVjnpi2OK2J51h+4lsg==} + "@types/jsdom@27.0.0": + resolution: + { integrity: sha512-NZyFl/PViwKzdEkQg96gtnB8wm+1ljhdDay9ahn4hgb+SfVtPCbm3TlmDUFXTA+MGN3CijicnMhG18SI5H3rFw== } - '@types/mime@1.3.2': - resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} + "@types/json-schema@7.0.15": + resolution: + { integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== } - '@types/minimatch@3.0.5': - resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + "@types/json5@0.0.29": + resolution: + { integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== } - '@types/minimist@1.2.2': - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} + "@types/keyv@3.1.4": + resolution: + { integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== } - '@types/node@18.19.45': - resolution: {integrity: sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==} + "@types/livereload@0.9.5": + resolution: + { integrity: sha512-2RXcRKdivPmn67pwjytvHoRv46AeXaLYVUWA0zkel1XSAOH5i71G0KfUdE5u3g80T155gR3Fo3ilVaqparLsVA== } + + "@types/luxon@3.7.1": + resolution: + { integrity: sha512-H3iskjFIAn5SlJU7OuxUmTEpebK6TKB8rxZShDslBMZJ5u9S//KM1sbdAisiSrqwLQncVjnpi2OK2J51h+4lsg== } + + "@types/mime@1.3.2": + resolution: + { integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== } + + "@types/minimatch@3.0.5": + resolution: + { integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== } + + "@types/minimist@1.2.2": + resolution: + { integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== } + + "@types/node@18.19.45": + resolution: + { integrity: sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA== } - '@types/node@24.10.9': - resolution: {integrity: sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==} + "@types/node@24.10.9": + resolution: + { integrity: sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw== } - '@types/node@25.0.10': - resolution: {integrity: sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg==} + "@types/node@25.2.0": + resolution: + { integrity: sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w== } - '@types/normalize-package-data@2.4.1': - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + "@types/normalize-package-data@2.4.1": + resolution: + { integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== } - '@types/qs@6.9.7': - resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} + "@types/qs@6.9.7": + resolution: + { integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== } - '@types/range-parser@1.2.4': - resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} + "@types/range-parser@1.2.4": + resolution: + { integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== } - '@types/relateurl@0.2.33': - resolution: {integrity: sha512-bTQCKsVbIdzLqZhLkF5fcJQreE4y1ro4DIyVrlDNSCJRRwHhB8Z+4zXXa8jN6eDvc2HbRsEYgbvrnGvi54EpSw==} + "@types/relateurl@0.2.33": + resolution: + { integrity: sha512-bTQCKsVbIdzLqZhLkF5fcJQreE4y1ro4DIyVrlDNSCJRRwHhB8Z+4zXXa8jN6eDvc2HbRsEYgbvrnGvi54EpSw== } - '@types/responselike@1.0.3': - resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + "@types/responselike@1.0.3": + resolution: + { integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw== } - '@types/send@0.17.1': - resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} + "@types/send@0.17.1": + resolution: + { integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q== } - '@types/serve-static@2.2.0': - resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==} + "@types/serve-static@2.2.0": + resolution: + { integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ== } - '@types/stylus@0.48.43': - resolution: {integrity: sha512-72dv/zdhuyXWVHUXG2VTPEQdOG+oen95/DNFx2aMFFaY6LoITI6PwEqf5x31JF49kp2w9hvUzkNfTGBIeg61LQ==} + "@types/stylus@0.48.43": + resolution: + { integrity: sha512-72dv/zdhuyXWVHUXG2VTPEQdOG+oen95/DNFx2aMFFaY6LoITI6PwEqf5x31JF49kp2w9hvUzkNfTGBIeg61LQ== } - '@types/tough-cookie@4.0.2': - resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} + "@types/tough-cookie@4.0.2": + resolution: + { integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw== } - '@types/triple-beam@1.3.2': - resolution: {integrity: sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==} + "@types/triple-beam@1.3.2": + resolution: + { integrity: sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g== } - '@types/unist@3.0.3': - resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + "@types/unist@3.0.3": + resolution: + { integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q== } - '@types/webpack-bundle-analyzer@4.7.0': - resolution: {integrity: sha512-c5i2ThslSNSG8W891BRvOd/RoCjI2zwph8maD22b1adtSns20j+0azDDMCK06DiVrzTgnwiDl5Ntmu1YRJw8Sg==} + "@types/webpack-bundle-analyzer@4.7.0": + resolution: + { integrity: sha512-c5i2ThslSNSG8W891BRvOd/RoCjI2zwph8maD22b1adtSns20j+0azDDMCK06DiVrzTgnwiDl5Ntmu1YRJw8Sg== } - '@types/webpack-env@1.18.8': - resolution: {integrity: sha512-G9eAoJRMLjcvN4I08wB5I7YofOb/kaJNd5uoCMX+LbKXTPCF+ZIHuqTnFaK9Jz1rgs035f9JUPUhNFtqgucy/A==} + "@types/webpack-env@1.18.8": + resolution: + { integrity: sha512-G9eAoJRMLjcvN4I08wB5I7YofOb/kaJNd5uoCMX+LbKXTPCF+ZIHuqTnFaK9Jz1rgs035f9JUPUhNFtqgucy/A== } - '@types/ws@8.5.4': - resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==} + "@types/ws@8.5.4": + resolution: + { integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg== } - '@types/yauzl@2.10.3': - resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + "@types/yauzl@2.10.3": + resolution: + { integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q== } - '@typescript-eslint/eslint-plugin@8.53.1': - resolution: {integrity: sha512-cFYYFZ+oQFi6hUnBTbLRXfTJiaQtYE3t4O692agbBl+2Zy+eqSKWtPjhPXJu1G7j4RLjKgeJPDdq3EqOwmX5Ag==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@typescript-eslint/eslint-plugin@8.54.0": + resolution: + { integrity: sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - '@typescript-eslint/parser': ^8.53.1 + "@typescript-eslint/parser": ^8.54.0 eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: ">=4.8.4 <6.0.0" - '@typescript-eslint/parser@8.53.1': - resolution: {integrity: sha512-nm3cvFN9SqZGXjmw5bZ6cGmvJSyJPn0wU9gHAZZHDnZl2wF9PhHv78Xf06E0MaNk4zLVHL8hb2/c32XvyJOLQg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@typescript-eslint/parser@8.54.0": + resolution: + { integrity: sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: ">=4.8.4 <6.0.0" - '@typescript-eslint/project-service@8.46.4': - resolution: {integrity: sha512-nPiRSKuvtTN+no/2N1kt2tUh/HoFzeEgOm9fQ6XQk4/ApGqjx0zFIIaLJ6wooR1HIoozvj2j6vTi/1fgAz7UYQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@typescript-eslint/project-service@8.46.4": + resolution: + { integrity: sha512-nPiRSKuvtTN+no/2N1kt2tUh/HoFzeEgOm9fQ6XQk4/ApGqjx0zFIIaLJ6wooR1HIoozvj2j6vTi/1fgAz7UYQ== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: ">=4.8.4 <6.0.0" - '@typescript-eslint/project-service@8.53.1': - resolution: {integrity: sha512-WYC4FB5Ra0xidsmlPb+1SsnaSKPmS3gsjIARwbEkHkoWloQmuzcfypljaJcR78uyLA1h8sHdWWPHSLDI+MtNog==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@typescript-eslint/project-service@8.54.0": + resolution: + { integrity: sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/scope-manager@8.46.4': - resolution: {integrity: sha512-tMDbLGXb1wC+McN1M6QeDx7P7c0UWO5z9CXqp7J8E+xGcJuUuevWKxuG8j41FoweS3+L41SkyKKkia16jpX7CA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/scope-manager@8.53.1': - resolution: {integrity: sha512-Lu23yw1uJMFY8cUeq7JlrizAgeQvWugNQzJp8C3x8Eo5Jw5Q2ykMdiiTB9vBVOOUBysMzmRRmUfwFrZuI2C4SQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/tsconfig-utils@8.46.4': - resolution: {integrity: sha512-+/XqaZPIAk6Cjg7NWgSGe27X4zMGqrFqZ8atJsX3CWxH/jACqWnrWI68h7nHQld0y+k9eTTjb9r+KU4twLoo9A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + typescript: ">=4.8.4 <6.0.0" + + "@typescript-eslint/scope-manager@8.46.4": + resolution: + { integrity: sha512-tMDbLGXb1wC+McN1M6QeDx7P7c0UWO5z9CXqp7J8E+xGcJuUuevWKxuG8j41FoweS3+L41SkyKKkia16jpX7CA== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@typescript-eslint/scope-manager@8.54.0": + resolution: + { integrity: sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@typescript-eslint/tsconfig-utils@8.46.4": + resolution: + { integrity: sha512-+/XqaZPIAk6Cjg7NWgSGe27X4zMGqrFqZ8atJsX3CWxH/jACqWnrWI68h7nHQld0y+k9eTTjb9r+KU4twLoo9A== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: ">=4.8.4 <6.0.0" - '@typescript-eslint/tsconfig-utils@8.53.0': - resolution: {integrity: sha512-K6Sc0R5GIG6dNoPdOooQ+KtvT5KCKAvTcY8h2rIuul19vxH5OTQk7ArKkd4yTzkw66WnNY0kPPzzcmWA+XRmiA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@typescript-eslint/tsconfig-utils@8.53.0": + resolution: + { integrity: sha512-K6Sc0R5GIG6dNoPdOooQ+KtvT5KCKAvTcY8h2rIuul19vxH5OTQk7ArKkd4yTzkw66WnNY0kPPzzcmWA+XRmiA== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: ">=4.8.4 <6.0.0" - '@typescript-eslint/tsconfig-utils@8.53.1': - resolution: {integrity: sha512-qfvLXS6F6b1y43pnf0pPbXJ+YoXIC7HKg0UGZ27uMIemKMKA6XH2DTxsEDdpdN29D+vHV07x/pnlPNVLhdhWiA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@typescript-eslint/tsconfig-utils@8.54.0": + resolution: + { integrity: sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: ">=4.8.4 <6.0.0" - '@typescript-eslint/type-utils@8.53.1': - resolution: {integrity: sha512-MOrdtNvyhy0rHyv0ENzub1d4wQYKb2NmIqG7qEqPWFW7Mpy2jzFC3pQ2yKDvirZB7jypm5uGjF2Qqs6OIqu47w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@typescript-eslint/type-utils@8.54.0": + resolution: + { integrity: sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/types@7.18.0': - resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/types@8.46.4': - resolution: {integrity: sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/types@8.53.0': - resolution: {integrity: sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/types@8.53.1': - resolution: {integrity: sha512-jr/swrr2aRmUAUjW5/zQHbMaui//vQlsZcJKijZf3M26bnmLj8LyZUpj8/Rd6uzaek06OWsqdofN/Thenm5O8A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@7.18.0': - resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} - engines: {node: ^18.18.0 || >=20.0.0} + typescript: ">=4.8.4 <6.0.0" + + "@typescript-eslint/types@8.46.4": + resolution: + { integrity: sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@typescript-eslint/types@8.53.0": + resolution: + { integrity: sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@typescript-eslint/types@8.54.0": + resolution: + { integrity: sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@typescript-eslint/typescript-estree@8.46.4": + resolution: + { integrity: sha512-7oV2qEOr1d4NWNmpXLR35LvCfOkTNymY9oyW+lUHkmCno7aOmIf/hMaydnJBUTBMRCOGZh8YjkFOc8dadEoNGA== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/typescript-estree@8.46.4': - resolution: {integrity: sha512-7oV2qEOr1d4NWNmpXLR35LvCfOkTNymY9oyW+lUHkmCno7aOmIf/hMaydnJBUTBMRCOGZh8YjkFOc8dadEoNGA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: ">=4.8.4 <6.0.0" - '@typescript-eslint/typescript-estree@8.53.1': - resolution: {integrity: sha512-RGlVipGhQAG4GxV1s34O91cxQ/vWiHJTDHbXRr0li2q/BGg3RR/7NM8QDWgkEgrwQYCvmJV9ichIwyoKCQ+DTg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@typescript-eslint/typescript-estree@8.54.0": + resolution: + { integrity: sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: ">=4.8.4 <6.0.0" - '@typescript-eslint/utils@8.46.4': - resolution: {integrity: sha512-AbSv11fklGXV6T28dp2Me04Uw90R2iJ30g2bgLz529Koehrmkbs1r7paFqr1vPCZi7hHwYxYtxfyQMRC8QaVSg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@typescript-eslint/utils@8.46.4": + resolution: + { integrity: sha512-AbSv11fklGXV6T28dp2Me04Uw90R2iJ30g2bgLz529Koehrmkbs1r7paFqr1vPCZi7hHwYxYtxfyQMRC8QaVSg== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: ">=4.8.4 <6.0.0" - '@typescript-eslint/utils@8.53.1': - resolution: {integrity: sha512-c4bMvGVWW4hv6JmDUEG7fSYlWOl3II2I4ylt0NM+seinYQlZMQIaKaXIIVJWt9Ofh6whrpM+EdDQXKXjNovvrg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@typescript-eslint/utils@8.54.0": + resolution: + { integrity: sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/visitor-keys@7.18.0': - resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} - engines: {node: ^18.18.0 || >=20.0.0} + typescript: ">=4.8.4 <6.0.0" - '@typescript-eslint/visitor-keys@8.46.4': - resolution: {integrity: sha512-/++5CYLQqsO9HFGLI7APrxBJYo+5OCMpViuhV8q5/Qa3o5mMrF//eQHks+PXcsAVaLdn817fMuS7zqoXNNZGaw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@typescript-eslint/visitor-keys@8.46.4": + resolution: + { integrity: sha512-/++5CYLQqsO9HFGLI7APrxBJYo+5OCMpViuhV8q5/Qa3o5mMrF//eQHks+PXcsAVaLdn817fMuS7zqoXNNZGaw== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - '@typescript-eslint/visitor-keys@8.53.1': - resolution: {integrity: sha512-oy+wV7xDKFPRyNggmXuZQSBzvoLnpmJs+GhzRhPjrxl2b/jIlyjVokzm47CZCDUdXKr2zd7ZLodPfOBpOPyPlg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@typescript-eslint/visitor-keys@8.54.0": + resolution: + { integrity: sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - '@vitest/coverage-v8@4.0.18': - resolution: {integrity: sha512-7i+N2i0+ME+2JFZhfuz7Tg/FqKtilHjGyGvoHYQ6iLV0zahbsJ9sljC9OcFcPDbhYKCet+sG8SsVqlyGvPflZg==} + "@vitest/coverage-v8@4.0.18": + resolution: + { integrity: sha512-7i+N2i0+ME+2JFZhfuz7Tg/FqKtilHjGyGvoHYQ6iLV0zahbsJ9sljC9OcFcPDbhYKCet+sG8SsVqlyGvPflZg== } peerDependencies: - '@vitest/browser': 4.0.18 + "@vitest/browser": 4.0.18 vitest: 4.0.18 peerDependenciesMeta: - '@vitest/browser': + "@vitest/browser": optional: true - '@vitest/expect@4.0.18': - resolution: {integrity: sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==} + "@vitest/expect@4.0.18": + resolution: + { integrity: sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ== } - '@vitest/mocker@4.0.18': - resolution: {integrity: sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==} + "@vitest/mocker@4.0.18": + resolution: + { integrity: sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ== } peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0-0 @@ -4190,202 +4134,243 @@ packages: vite: optional: true - '@vitest/pretty-format@4.0.18': - resolution: {integrity: sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==} + "@vitest/pretty-format@4.0.18": + resolution: + { integrity: sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw== } - '@vitest/runner@4.0.18': - resolution: {integrity: sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==} + "@vitest/runner@4.0.18": + resolution: + { integrity: sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw== } - '@vitest/snapshot@4.0.18': - resolution: {integrity: sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==} + "@vitest/snapshot@4.0.18": + resolution: + { integrity: sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA== } - '@vitest/spy@4.0.18': - resolution: {integrity: sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==} + "@vitest/spy@4.0.18": + resolution: + { integrity: sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw== } - '@vitest/ui@4.0.18': - resolution: {integrity: sha512-CGJ25bc8fRi8Lod/3GHSvXRKi7nBo3kxh0ApW4yCjmrWmRmlT53B5E08XRSZRliygG0aVNxLrBEqPYdz/KcCtQ==} + "@vitest/ui@4.0.18": + resolution: + { integrity: sha512-CGJ25bc8fRi8Lod/3GHSvXRKi7nBo3kxh0ApW4yCjmrWmRmlT53B5E08XRSZRliygG0aVNxLrBEqPYdz/KcCtQ== } peerDependencies: vitest: 4.0.18 - '@vitest/utils@4.0.18': - resolution: {integrity: sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==} - - '@vue/compiler-core@3.4.35': - resolution: {integrity: sha512-gKp0zGoLnMYtw4uS/SJRRO7rsVggLjvot3mcctlMXunYNsX+aRJDqqw/lV5/gHK91nvaAAlWFgdVl020AW1Prg==} - - '@vue/compiler-dom@3.4.35': - resolution: {integrity: sha512-pWIZRL76/oE/VMhdv/ovZfmuooEni6JPG1BFe7oLk5DZRo/ImydXijoZl/4kh2406boRQ7lxTYzbZEEXEhj9NQ==} + "@vitest/utils@4.0.18": + resolution: + { integrity: sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA== } - '@vue/compiler-sfc@3.4.35': - resolution: {integrity: sha512-xacnRS/h/FCsjsMfxBkzjoNxyxEyKyZfBch/P4vkLRvYJwe5ChXmZZrj8Dsed/752H2Q3JE8kYu9Uyha9J6PgA==} + "@webassemblyjs/ast@1.14.1": + resolution: + { integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== } - '@vue/compiler-ssr@3.4.35': - resolution: {integrity: sha512-7iynB+0KB1AAJKk/biENTV5cRGHRdbdaD7Mx3nWcm1W8bVD6QmnH3B4AHhQQ1qZHhqFwzEzMwiytXm3PX1e60A==} + "@webassemblyjs/floating-point-hex-parser@1.13.2": + resolution: + { integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA== } - '@vue/shared@3.4.35': - resolution: {integrity: sha512-hvuhBYYDe+b1G8KHxsQ0diDqDMA8D9laxWZhNAjE83VZb5UDaXl9Xnz7cGdDSyiHM90qqI/CyGMcpBpiDy6VVQ==} + "@webassemblyjs/helper-api-error@1.13.2": + resolution: + { integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ== } - '@webassemblyjs/ast@1.14.1': - resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} + "@webassemblyjs/helper-buffer@1.14.1": + resolution: + { integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== } - '@webassemblyjs/floating-point-hex-parser@1.13.2': - resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} + "@webassemblyjs/helper-numbers@1.13.2": + resolution: + { integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA== } - '@webassemblyjs/helper-api-error@1.13.2': - resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} + "@webassemblyjs/helper-wasm-bytecode@1.13.2": + resolution: + { integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA== } - '@webassemblyjs/helper-buffer@1.14.1': - resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} + "@webassemblyjs/helper-wasm-section@1.14.1": + resolution: + { integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw== } - '@webassemblyjs/helper-numbers@1.13.2': - resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} + "@webassemblyjs/ieee754@1.13.2": + resolution: + { integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw== } - '@webassemblyjs/helper-wasm-bytecode@1.13.2': - resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} + "@webassemblyjs/leb128@1.13.2": + resolution: + { integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw== } - '@webassemblyjs/helper-wasm-section@1.14.1': - resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} + "@webassemblyjs/utf8@1.13.2": + resolution: + { integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== } - '@webassemblyjs/ieee754@1.13.2': - resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} + "@webassemblyjs/wasm-edit@1.14.1": + resolution: + { integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== } - '@webassemblyjs/leb128@1.13.2': - resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} + "@webassemblyjs/wasm-gen@1.14.1": + resolution: + { integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg== } - '@webassemblyjs/utf8@1.13.2': - resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} + "@webassemblyjs/wasm-opt@1.14.1": + resolution: + { integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw== } - '@webassemblyjs/wasm-edit@1.14.1': - resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} + "@webassemblyjs/wasm-parser@1.14.1": + resolution: + { integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== } - '@webassemblyjs/wasm-gen@1.14.1': - resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} + "@webassemblyjs/wast-printer@1.14.1": + resolution: + { integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw== } - '@webassemblyjs/wasm-opt@1.14.1': - resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} - - '@webassemblyjs/wasm-parser@1.14.1': - resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} - - '@webassemblyjs/wast-printer@1.14.1': - resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} - - '@webpack-cli/configtest@3.0.1': - resolution: {integrity: sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==} - engines: {node: '>=18.12.0'} + "@webpack-cli/configtest@3.0.1": + resolution: + { integrity: sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA== } + engines: { node: ">=18.12.0" } peerDependencies: webpack: ^5.82.0 webpack-cli: 6.x.x - '@webpack-cli/info@3.0.1': - resolution: {integrity: sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==} - engines: {node: '>=18.12.0'} + "@webpack-cli/info@3.0.1": + resolution: + { integrity: sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ== } + engines: { node: ">=18.12.0" } peerDependencies: webpack: ^5.82.0 webpack-cli: 6.x.x - '@webpack-cli/serve@3.0.1': - resolution: {integrity: sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==} - engines: {node: '>=18.12.0'} + "@webpack-cli/serve@3.0.1": + resolution: + { integrity: sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg== } + engines: { node: ">=18.12.0" } peerDependencies: webpack: ^5.82.0 webpack-cli: 6.x.x - webpack-dev-server: '*' + webpack-dev-server: "*" peerDependenciesMeta: webpack-dev-server: optional: true - '@xtuc/ieee754@1.2.0': - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + "@xtuc/ieee754@1.2.0": + resolution: + { integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== } - '@xtuc/long@4.2.2': - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + "@xtuc/long@4.2.2": + resolution: + { integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== } - '@yarnpkg/lockfile@1.1.0': - resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} + "@yarnpkg/lockfile@1.1.0": + resolution: + { integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== } - '@yarnpkg/parsers@3.0.2': - resolution: {integrity: sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA==} - engines: {node: '>=18.12.0'} + "@yarnpkg/parsers@3.0.2": + resolution: + { integrity: sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA== } + engines: { node: ">=18.12.0" } - '@zkochan/js-yaml@0.0.7': - resolution: {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==} + "@zkochan/js-yaml@0.0.7": + resolution: + { integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ== } hasBin: true JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + resolution: + { integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== } hasBin: true abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + resolution: + { integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== } abbrev@3.0.1: - resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg== } + engines: { node: ^18.17.0 || >=20.5.0 } abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} + resolution: + { integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== } + engines: { node: ">=6.5" } accepts@2.0.0: - resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} - engines: {node: '>= 0.6'} + resolution: + { integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng== } + engines: { node: ">= 0.6" } - ace-builds@1.43.5: - resolution: {integrity: sha512-iH5FLBKdB7SVn9GR37UgA/tpQS8OTWIxWAuq3Ofaw+Qbc69FfPXsXd9jeW7KRG2xKpKMqBDnu0tHBrCWY5QI7A==} + ace-builds@1.43.6: + resolution: + { integrity: sha512-L1ddibQ7F3vyXR2k2fg+I8TQTPWVA6CKeDQr/h2+8CeyTp3W6EQL8xNFZRTztuP8xNOAqL3IYPqdzs31GCjDvg== } acorn-import-phases@1.0.4: - resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} - engines: {node: '>=10.13.0'} + resolution: + { integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ== } + engines: { node: ">=10.13.0" } peerDependencies: acorn: ^8.14.0 + acorn-jsx-walk@2.0.0: + resolution: + { integrity: sha512-uuo6iJj4D4ygkdzd6jPtcxs8vZgDX9YFIkqczGImoypX2fQ4dVImmu3UzA4ynixCIMTrEOWW+95M2HuBaCEOVA== } + acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + resolution: + { integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== } peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-loose@8.5.2: + resolution: + { integrity: sha512-PPvV6g8UGMGgjrMu+n/f9E/tCSkNQ2Y97eFvuVdJfG11+xdIeDcLyNdC8SHcrHbRqkfwLASdplyR6B6sKM1U4A== } + engines: { node: ">=0.4.0" } + acorn-walk@8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} - engines: {node: '>=0.4.0'} + resolution: + { integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== } + engines: { node: ">=0.4.0" } acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} + resolution: + { integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== } + engines: { node: ">=0.4.0" } acorn@7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} - engines: {node: '>=0.4.0'} + resolution: + { integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== } + engines: { node: ">=0.4.0" } hasBin: true acorn@8.10.0: - resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} - engines: {node: '>=0.4.0'} + resolution: + { integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== } + engines: { node: ">=0.4.0" } hasBin: true acorn@8.12.1: - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} - engines: {node: '>=0.4.0'} + resolution: + { integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== } + engines: { node: ">=0.4.0" } hasBin: true acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} - engines: {node: '>=0.4.0'} + resolution: + { integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== } + engines: { node: ">=0.4.0" } hasBin: true add-stream@1.0.0: - resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} + resolution: + { integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== } agent-base@7.1.3: - resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} - engines: {node: '>= 14'} + resolution: + { integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw== } + engines: { node: ">= 14" } aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== } + engines: { node: ">=8" } ajv-formats@2.1.1: - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + resolution: + { integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== } peerDependencies: ajv: ^8.0.0 peerDependenciesMeta: @@ -4393,726 +4378,841 @@ packages: optional: true ajv-keywords@5.1.0: - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + resolution: + { integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== } peerDependencies: ajv: ^8.8.2 ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + resolution: + { integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== } ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + resolution: + { integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== } ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== } + engines: { node: ">=6" } ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== } + engines: { node: ">=8" } ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} + resolution: + { integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== } + engines: { node: ">=12" } ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== } + engines: { node: ">=8" } ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} + resolution: + { integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== } + engines: { node: ">=10" } ansi-styles@6.2.3: - resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} - engines: {node: '>=12'} - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + resolution: + { integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg== } + engines: { node: ">=12" } anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - app-module-path@2.2.0: - resolution: {integrity: sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ==} + resolution: + { integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== } + engines: { node: ">= 8" } aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + resolution: + { integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== } are-docs-informative@0.0.2: - resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} - engines: {node: '>=14'} + resolution: + { integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig== } + engines: { node: ">=14" } arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + resolution: + { integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== } argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + resolution: + { integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== } argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + resolution: + { integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== } array-buffer-byte-length@1.0.2: - resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw== } + engines: { node: ">= 0.4" } array-differ@3.0.0: - resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== } + engines: { node: ">=8" } array-ify@1.0.0: - resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + resolution: + { integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== } array-includes@3.1.9: - resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ== } + engines: { node: ">= 0.4" } array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== } + engines: { node: ">=8" } array.prototype.findlastindex@1.2.6: - resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ== } + engines: { node: ">= 0.4" } array.prototype.flat@1.3.3: - resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg== } + engines: { node: ">= 0.4" } array.prototype.flatmap@1.3.3: - resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg== } + engines: { node: ">= 0.4" } arraybuffer.prototype.slice@1.0.4: - resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ== } + engines: { node: ">= 0.4" } arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== } + engines: { node: ">=0.10.0" } arrify@2.0.1: - resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== } + engines: { node: ">=8" } asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + resolution: + { integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== } assert-never@1.3.0: - resolution: {integrity: sha512-9Z3vxQ+berkL/JJo0dK+EY3Lp0s3NtSnP3VCLsh5HDcZPrh0M+KQRK5sWhUeyPPH+/RCxZqOxLMR+YC6vlviEQ==} - - ast-module-types@6.0.0: - resolution: {integrity: sha512-LFRg7178Fw5R4FAEwZxVqiRI8IxSM+Ay2UBrHoCerXNme+kMMMfz7T3xDGV/c2fer87hcrtgJGsnSOfUrPK6ng==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-9Z3vxQ+berkL/JJo0dK+EY3Lp0s3NtSnP3VCLsh5HDcZPrh0M+KQRK5sWhUeyPPH+/RCxZqOxLMR+YC6vlviEQ== } ast-v8-to-istanbul@0.3.10: - resolution: {integrity: sha512-p4K7vMz2ZSk3wN8l5o3y2bJAoZXT3VuJI5OLTATY/01CYWumWvwkUw0SqDBnNq6IiTO3qDa1eSQDibAV8g7XOQ==} + resolution: + { integrity: sha512-p4K7vMz2ZSk3wN8l5o3y2bJAoZXT3VuJI5OLTATY/01CYWumWvwkUw0SqDBnNq6IiTO3qDa1eSQDibAV8g7XOQ== } async-function@1.0.0: - resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA== } + engines: { node: ">= 0.4" } async@3.2.4: - resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} + resolution: + { integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== } asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + resolution: + { integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== } available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== } + engines: { node: ">= 0.4" } axios@1.13.2: - resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==} + resolution: + { integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA== } axios@1.7.4: - resolution: {integrity: sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==} - - babel-loader@10.0.0: - resolution: {integrity: sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==} - engines: {node: ^18.20.0 || ^20.10.0 || >=22.0.0} - peerDependencies: - '@babel/core': ^7.12.0 - webpack: '>=5.61.0' - - babel-plugin-polyfill-corejs2@0.4.14: - resolution: {integrity: sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-corejs3@0.13.0: - resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-regenerator@0.6.5: - resolution: {integrity: sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + resolution: + { integrity: sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw== } babel-walk@3.0.0-canary-5: - resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} - engines: {node: '>= 10.0.0'} + resolution: + { integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw== } + engines: { node: ">= 10.0.0" } balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + resolution: + { integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== } base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + resolution: + { integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== } baseline-browser-mapping@2.9.11: - resolution: {integrity: sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==} + resolution: + { integrity: sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ== } hasBin: true before-after-hook@2.2.3: - resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} + resolution: + { integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== } bidi-js@1.0.3: - resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + resolution: + { integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw== } bin-links@5.0.0: - resolution: {integrity: sha512-sdleLVfCjBtgO5cNjA2HVRvWBJAHs4zwenaCPMNJAJU0yNxpzj80IpjOIimkpkr+mhlA+how5poQtt53PygbHA==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-sdleLVfCjBtgO5cNjA2HVRvWBJAHs4zwenaCPMNJAJU0yNxpzj80IpjOIimkpkr+mhlA+how5poQtt53PygbHA== } + engines: { node: ^18.17.0 || >=20.5.0 } binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== } + engines: { node: ">=8" } bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + resolution: + { integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== } body-parser@2.2.1: - resolution: {integrity: sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw== } + engines: { node: ">=18" } boolean@3.2.0: - resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} + resolution: + { integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw== } deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. bootstrap@5.3.8: - resolution: {integrity: sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg==} + resolution: + { integrity: sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg== } peerDependencies: - '@popperjs/core': ^2.11.8 + "@popperjs/core": ^2.11.8 brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + resolution: + { integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== } brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + resolution: + { integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== } braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== } + engines: { node: ">=8" } browser-or-node@3.0.0: - resolution: {integrity: sha512-iczIdVJzGEYhP5DqQxYM9Hh7Ztpqqi+CXZpSmX8ALFs9ecXkQIeqRyM6TfxEfMVpwhl3dSuDvxdzzo9sUOIVBQ==} + resolution: + { integrity: sha512-iczIdVJzGEYhP5DqQxYM9Hh7Ztpqqi+CXZpSmX8ALFs9ecXkQIeqRyM6TfxEfMVpwhl3dSuDvxdzzo9sUOIVBQ== } browserslist@4.28.1: - resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + resolution: + { integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA== } + engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } hasBin: true buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + resolution: + { integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== } buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + resolution: + { integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== } buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + resolution: + { integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== } byte-size@8.1.1: - resolution: {integrity: sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg==} - engines: {node: '>=12.17'} + resolution: + { integrity: sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg== } + engines: { node: ">=12.17" } bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} + resolution: + { integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== } + engines: { node: ">= 0.8" } cacache@19.0.1: - resolution: {integrity: sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ== } + engines: { node: ^18.17.0 || >=20.5.0 } cacache@20.0.3: - resolution: {integrity: sha512-3pUp4e8hv07k1QlijZu6Kn7c9+ZpWWk4j3F8N3xPuCExULobqJydKYOTj1FTq58srkJsXvO7LbGAH4C0ZU3WGw==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-3pUp4e8hv07k1QlijZu6Kn7c9+ZpWWk4j3F8N3xPuCExULobqJydKYOTj1FTq58srkJsXvO7LbGAH4C0ZU3WGw== } + engines: { node: ^20.17.0 || >=22.9.0 } cacheable-lookup@5.0.4: - resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} - engines: {node: '>=10.6.0'} + resolution: + { integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== } + engines: { node: ">=10.6.0" } cacheable-request@7.0.4: - resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== } + engines: { node: ">=8" } call-bind-apply-helpers@1.0.2: - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== } + engines: { node: ">= 0.4" } call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== } + engines: { node: ">= 0.4" } call-bind@1.0.8: - resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== } + engines: { node: ">= 0.4" } call-bound@1.0.4: - resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== } + engines: { node: ">= 0.4" } callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== } + engines: { node: ">=6" } camel-case@4.1.2: - resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + resolution: + { integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== } camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== } + engines: { node: ">=8" } camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== } + engines: { node: ">=6" } caniuse-lite@1.0.30001761: - resolution: {integrity: sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g==} + resolution: + { integrity: sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g== } canvas@3.2.1: - resolution: {integrity: sha512-ej1sPFR5+0YWtaVp6S1N1FVz69TQCqmrkGeRvQxZeAB1nAIcjNTHVwrZtYtWFFBmQsF40/uDLehsW5KuYC99mg==} - engines: {node: ^18.12.0 || >= 20.9.0} + resolution: + { integrity: sha512-ej1sPFR5+0YWtaVp6S1N1FVz69TQCqmrkGeRvQxZeAB1nAIcjNTHVwrZtYtWFFBmQsF40/uDLehsW5KuYC99mg== } + engines: { node: ^18.12.0 || >= 20.9.0 } capital-case@1.0.4: - resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} + resolution: + { integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A== } chai@6.2.1: - resolution: {integrity: sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg== } + engines: { node: ">=18" } chalk@4.1.0: - resolution: {integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== } + engines: { node: ">=10" } chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + resolution: + { integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== } + engines: { node: ">=10" } change-case@4.1.2: - resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} + resolution: + { integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A== } character-parser@2.2.0: - resolution: {integrity: sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==} + resolution: + { integrity: sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw== } chardet@2.1.1: - resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} + resolution: + { integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ== } chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} + resolution: + { integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== } + engines: { node: ">= 8.10.0" } chokidar@4.0.3: - resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} - engines: {node: '>= 14.16.0'} + resolution: + { integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA== } + engines: { node: ">= 14.16.0" } chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + resolution: + { integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== } chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== } + engines: { node: ">=10" } chownr@3.0.0: - resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g== } + engines: { node: ">=18" } chrome-trace-event@1.0.3: - resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} - engines: {node: '>=6.0'} + resolution: + { integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== } + engines: { node: ">=6.0" } ci-info@3.8.0: - resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== } + engines: { node: ">=8" } ci-info@4.0.0: - resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg== } + engines: { node: ">=8" } clean-css@5.3.3: - resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} - engines: {node: '>= 10.0'} + resolution: + { integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg== } + engines: { node: ">= 10.0" } clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== } + engines: { node: ">=6" } cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== } + engines: { node: ">=8" } cli-spinners@2.6.1: - resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== } + engines: { node: ">=6" } cli-spinners@2.9.0: - resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g== } + engines: { node: ">=6" } cli-width@4.1.0: - resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} - engines: {node: '>= 12'} + resolution: + { integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ== } + engines: { node: ">= 12" } cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + resolution: + { integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== } cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} + resolution: + { integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== } + engines: { node: ">=12" } cliui@9.0.1: - resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} - engines: {node: '>=20'} + resolution: + { integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w== } + engines: { node: ">=20" } clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== } + engines: { node: ">=6" } clone-response@1.0.3: - resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + resolution: + { integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== } clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} + resolution: + { integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== } + engines: { node: ">=0.8" } cmd-shim@6.0.3: - resolution: {integrity: sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { integrity: sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA== } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } cmd-shim@7.0.0: - resolution: {integrity: sha512-rtpaCbr164TPPh+zFdkWpCyZuKkjpAzODfaZCf/SVJZzJN+4bHQb/LP3Jzq5/+84um3XXY8r548XiWKSborwVw==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-rtpaCbr164TPPh+zFdkWpCyZuKkjpAzODfaZCf/SVJZzJN+4bHQb/LP3Jzq5/+84um3XXY8r548XiWKSborwVw== } + engines: { node: ^18.17.0 || >=20.5.0 } color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + resolution: + { integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== } + engines: { node: ">=7.0.0" } color-convert@3.1.3: - resolution: {integrity: sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==} - engines: {node: '>=14.6'} + resolution: + { integrity: sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg== } + engines: { node: ">=14.6" } color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + resolution: + { integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== } color-name@2.1.0: - resolution: {integrity: sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==} - engines: {node: '>=12.20'} + resolution: + { integrity: sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg== } + engines: { node: ">=12.20" } color-string@2.1.4: - resolution: {integrity: sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg== } + engines: { node: ">=18" } color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + resolution: + { integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== } hasBin: true color@5.0.3: - resolution: {integrity: sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA== } + engines: { node: ">=18" } colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + resolution: + { integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== } columnify@1.6.0: - resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==} - engines: {node: '>=8.0.0'} + resolution: + { integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== } + engines: { node: ">=8.0.0" } combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - - commander@12.0.0: - resolution: {integrity: sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== } + engines: { node: ">= 0.8" } commander@12.1.0: - resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== } + engines: { node: ">=18" } commander@13.1.0: - resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw== } + engines: { node: ">=18" } commander@14.0.2: - resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} - engines: {node: '>=20'} + resolution: + { integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ== } + engines: { node: ">=20" } + + commander@14.0.3: + resolution: + { integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw== } + engines: { node: ">=20" } commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + resolution: + { integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== } commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - - comment-parser@1.4.4: - resolution: {integrity: sha512-0D6qSQ5IkeRrGJFHRClzaMOenMeT0gErz3zIw3AprKMqhRN6LNU2jQOdkPG/FZ+8bCgXE1VidrgSzlBBDZRr8A==} - engines: {node: '>= 12.0.0'} + resolution: + { integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== } + engines: { node: ">= 10" } comment-parser@1.4.5: - resolution: {integrity: sha512-aRDkn3uyIlCFfk5NUA+VdwMmMsh8JGhc4hapfV4yxymHGQ3BVskMQfoXGpCo5IoBuQ9tS5iiVKhCpTcB4pW4qw==} - engines: {node: '>= 12.0.0'} + resolution: + { integrity: sha512-aRDkn3uyIlCFfk5NUA+VdwMmMsh8JGhc4hapfV4yxymHGQ3BVskMQfoXGpCo5IoBuQ9tS5iiVKhCpTcB4pW4qw== } + engines: { node: ">= 12.0.0" } common-ancestor-path@1.0.1: - resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} + resolution: + { integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== } commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + resolution: + { integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== } compare-func@2.0.0: - resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + resolution: + { integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== } concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + resolution: + { integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== } concat-stream@2.0.0: - resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} - engines: {'0': node >= 6.0} + resolution: + { integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== } + engines: { "0": node >= 6.0 } concurrently@9.2.1: - resolution: {integrity: sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng== } + engines: { node: ">=18" } hasBin: true connect-livereload@0.6.1: - resolution: {integrity: sha512-3R0kMOdL7CjJpU66fzAkCe6HNtd3AavCS4m+uW4KtJjrdGPT0SQEZieAYd+cm+lJoBznNQ4lqipYWkhBMgk00g==} + resolution: + { integrity: sha512-3R0kMOdL7CjJpU66fzAkCe6HNtd3AavCS4m+uW4KtJjrdGPT0SQEZieAYd+cm+lJoBznNQ4lqipYWkhBMgk00g== } console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + resolution: + { integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== } constant-case@3.0.4: - resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} + resolution: + { integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ== } constantinople@4.0.1: - resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} + resolution: + { integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw== } content-disposition@1.0.1: - resolution: {integrity: sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q== } + engines: { node: ">=18" } content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} + resolution: + { integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== } + engines: { node: ">= 0.6" } conventional-changelog-angular@7.0.0: - resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} - engines: {node: '>=16'} + resolution: + { integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ== } + engines: { node: ">=16" } + + conventional-changelog-angular@8.1.0: + resolution: + { integrity: sha512-GGf2Nipn1RUCAktxuVauVr1e3r8QrLP/B0lEUsFktmGqc3ddbQkhoJZHJctVU829U1c6mTSWftrVOCHaL85Q3w== } + engines: { node: ">=18" } - conventional-changelog-conventionalcommits@7.0.2: - resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} - engines: {node: '>=16'} + conventional-changelog-conventionalcommits@9.1.0: + resolution: + { integrity: sha512-MnbEysR8wWa8dAEvbj5xcBgJKQlX/m0lhS8DsyAAWDHdfs2faDJxTgzRYlRYpXSe7UiKrIIlB4TrBKU9q9DgkA== } + engines: { node: ">=18" } conventional-changelog-core@5.0.1: - resolution: {integrity: sha512-Rvi5pH+LvgsqGwZPZ3Cq/tz4ty7mjijhr3qR4m9IBXNbxGGYgTVVO+duXzz9aArmHxFtwZ+LRkrNIMDQzgoY4A==} - engines: {node: '>=14'} + resolution: + { integrity: sha512-Rvi5pH+LvgsqGwZPZ3Cq/tz4ty7mjijhr3qR4m9IBXNbxGGYgTVVO+duXzz9aArmHxFtwZ+LRkrNIMDQzgoY4A== } + engines: { node: ">=14" } conventional-changelog-preset-loader@3.0.0: - resolution: {integrity: sha512-qy9XbdSLmVnwnvzEisjxdDiLA4OmV3o8db+Zdg4WiFw14fP3B6XNz98X0swPPpkTd/pc1K7+adKgEDM1JCUMiA==} - engines: {node: '>=14'} + resolution: + { integrity: sha512-qy9XbdSLmVnwnvzEisjxdDiLA4OmV3o8db+Zdg4WiFw14fP3B6XNz98X0swPPpkTd/pc1K7+adKgEDM1JCUMiA== } + engines: { node: ">=14" } conventional-changelog-writer@6.0.0: - resolution: {integrity: sha512-8PyWTnn7zBIt9l4hj4UusFs1TyG+9Ulu1zlOAc72L7Sdv9Hsc8E86ot7htY3HXCVhXHB/NO0pVGvZpwsyJvFfw==} - engines: {node: '>=14'} + resolution: + { integrity: sha512-8PyWTnn7zBIt9l4hj4UusFs1TyG+9Ulu1zlOAc72L7Sdv9Hsc8E86ot7htY3HXCVhXHB/NO0pVGvZpwsyJvFfw== } + engines: { node: ">=14" } hasBin: true conventional-commits-filter@3.0.0: - resolution: {integrity: sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q==} - engines: {node: '>=14'} + resolution: + { integrity: sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q== } + engines: { node: ">=14" } conventional-commits-parser@4.0.0: - resolution: {integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==} - engines: {node: '>=14'} + resolution: + { integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg== } + engines: { node: ">=14" } hasBin: true - conventional-commits-parser@5.0.0: - resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} - engines: {node: '>=16'} + conventional-commits-parser@6.2.1: + resolution: + { integrity: sha512-20pyHgnO40rvfI0NGF/xiEoFMkXDtkF8FwHvk5BokoFoCuTQRI8vrNCNFWUOfuolKJMm1tPCHc8GgYEtr1XRNA== } + engines: { node: ">=18" } hasBin: true conventional-recommended-bump@7.0.1: - resolution: {integrity: sha512-Ft79FF4SlOFvX4PkwFDRnaNiIVX7YbmqGU0RwccUaiGvgp3S0a8ipR2/Qxk31vclDNM+GSdJOVs2KrsUCjblVA==} - engines: {node: '>=14'} + resolution: + { integrity: sha512-Ft79FF4SlOFvX4PkwFDRnaNiIVX7YbmqGU0RwccUaiGvgp3S0a8ipR2/Qxk31vclDNM+GSdJOVs2KrsUCjblVA== } + engines: { node: ">=14" } hasBin: true - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie-signature@1.2.2: - resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} - engines: {node: '>=6.6.0'} + resolution: + { integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg== } + engines: { node: ">=6.6.0" } cookie@0.7.2: - resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} - engines: {node: '>= 0.6'} + resolution: + { integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== } + engines: { node: ">= 0.6" } copyfiles@2.4.1: - resolution: {integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==} + resolution: + { integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg== } hasBin: true - core-js-compat@3.45.1: - resolution: {integrity: sha512-tqTt5T4PzsMIZ430XGviK4vzYSoeNJ6CXODi6c/voxOT6IZqBht5/EKaSNnYiEjjRYxjVz7DQIsOsY0XNi8PIA==} - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + resolution: + { integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== } cosmiconfig-typescript-loader@6.1.0: - resolution: {integrity: sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==} - engines: {node: '>=v18'} + resolution: + { integrity: sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g== } + engines: { node: ">=v18" } peerDependencies: - '@types/node': '*' - cosmiconfig: '>=9' - typescript: '>=5' + "@types/node": "*" + cosmiconfig: ">=9" + typescript: ">=5" cosmiconfig@9.0.0: - resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} - engines: {node: '>=14'} + resolution: + { integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg== } + engines: { node: ">=14" } peerDependencies: - typescript: '>=4.9.5' + typescript: ">=4.9.5" peerDependenciesMeta: typescript: optional: true create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + resolution: + { integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== } cross-env@10.1.0: - resolution: {integrity: sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==} - engines: {node: '>=20'} + resolution: + { integrity: sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw== } + engines: { node: ">=20" } hasBin: true cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} + resolution: + { integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== } + engines: { node: ">= 8" } cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} + resolution: + { integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== } + engines: { node: ">= 8" } css-b64-images@0.2.5: - resolution: {integrity: sha512-TgQBEdP07adhrDfXvI5o6bHGukKBNMzp2Ngckc/6d09zpjD2gc1Hl3Ca1CKgb8FXjHi88+Phv2Uegs2kTL4zjg==} + resolution: + { integrity: sha512-TgQBEdP07adhrDfXvI5o6bHGukKBNMzp2Ngckc/6d09zpjD2gc1Hl3Ca1CKgb8FXjHi88+Phv2Uegs2kTL4zjg== } hasBin: true css-tree@3.1.0: - resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + resolution: + { integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w== } + engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 } cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== } + engines: { node: ">=4" } hasBin: true - cssstyle@5.3.5: - resolution: {integrity: sha512-GlsEptulso7Jg0VaOZ8BXQi3AkYM5BOJKEO/rjMidSCq70FkIC5y0eawrCXeYzxgt3OCf4Ls+eoxN+/05vN0Ag==} - engines: {node: '>=20'} + cssstyle@5.3.7: + resolution: + { integrity: sha512-7D2EPVltRrsTkhpQmksIu+LxeWAIEk6wRDMJ1qljlv+CKHJM+cJLlfhWIzNA44eAsHXSNe3+vO6DW1yCYx8SuQ== } + engines: { node: ">=20" } dargs@7.0.0: - resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== } + engines: { node: ">=8" } dargs@8.1.0: - resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} - engines: {node: '>=12'} + resolution: + { integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw== } + engines: { node: ">=12" } - data-urls@6.0.0: - resolution: {integrity: sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA==} - engines: {node: '>=20'} + data-urls@7.0.0: + resolution: + { integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA== } + engines: { node: ^20.19.0 || ^22.12.0 || >=24.0.0 } data-view-buffer@1.0.2: - resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ== } + engines: { node: ">= 0.4" } data-view-byte-length@1.0.2: - resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ== } + engines: { node: ">= 0.4" } data-view-byte-offset@1.0.1: - resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ== } + engines: { node: ">= 0.4" } dateformat@3.0.3: - resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} + resolution: + { integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== } debounce@1.2.1: - resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + resolution: + { integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== } debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + resolution: + { integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== } peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' + supports-color: "*" peerDependenciesMeta: supports-color: optional: true debug@4.3.6: - resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} - engines: {node: '>=6.0'} + resolution: + { integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== } + engines: { node: ">=6.0" } peerDependencies: - supports-color: '*' + supports-color: "*" peerDependenciesMeta: supports-color: optional: true debug@4.4.1: - resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} - engines: {node: '>=6.0'} + resolution: + { integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== } + engines: { node: ">=6.0" } peerDependencies: - supports-color: '*' + supports-color: "*" peerDependenciesMeta: supports-color: optional: true debug@4.4.3: - resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} - engines: {node: '>=6.0'} + resolution: + { integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== } + engines: { node: ">=6.0" } peerDependencies: - supports-color: '*' + supports-color: "*" peerDependenciesMeta: supports-color: optional: true decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== } + engines: { node: ">=0.10.0" } decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== } + engines: { node: ">=0.10.0" } decimal.js@10.6.0: - resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + resolution: + { integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg== } decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== } + engines: { node: ">=10" } dedent@1.5.3: - resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + resolution: + { integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== } peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: @@ -5120,338 +5220,358 @@ packages: optional: true deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q== } + engines: { node: ">=6" } deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} + resolution: + { integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== } + engines: { node: ">=4.0.0" } deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + resolution: + { integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== } deepcopy-esm@2.1.1: - resolution: {integrity: sha512-0lopQd/gi3excE3sgBrjuR3gJv6ZElk027i30pUgdjtvSJl/OoZ8B6L42GUBm6C3G8hD1EB5ir2gTYnINzWx4g==} - engines: {node: '>=22'} + resolution: + { integrity: sha512-0lopQd/gi3excE3sgBrjuR3gJv6ZElk027i30pUgdjtvSJl/OoZ8B6L42GUBm6C3G8hD1EB5ir2gTYnINzWx4g== } + engines: { node: ">=22" } defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + resolution: + { integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== } defer-to-connect@2.0.1: - resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== } + engines: { node: ">=10" } define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== } + engines: { node: ">= 0.4" } define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== } + engines: { node: ">=8" } define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== } + engines: { node: ">= 0.4" } delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} + resolution: + { integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== } + engines: { node: ">=0.4.0" } depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - - dependency-tree@11.0.1: - resolution: {integrity: sha512-eCt7HSKIC9NxgIykG2DRq3Aewn9UhVS14MB3rEn6l/AsEI1FBg6ZGSlCU0SZ6Tjm2kkhj6/8c2pViinuyKELhg==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== } + engines: { node: ">= 0.8" } + + dependency-cruiser@17.3.7: + resolution: + { integrity: sha512-WEEOrnf0eshNirg4CMWuB7kK+qVZ+fecW6EBJa6AomEFhDDZKi3Zel1Tyl4ihcWtiSDhF+vALQb8NJS+wQiwLA== } + engines: { node: ^20.12||^22||>=24 } hasBin: true deprecation@2.3.1: - resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} + resolution: + { integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== } detect-indent@5.0.0: - resolution: {integrity: sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== } + engines: { node: ">=4" } detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} + resolution: + { integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== } + engines: { node: ">=0.10" } hasBin: true detect-libc@2.1.2: - resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ== } + engines: { node: ">=8" } detect-node@2.1.0: - resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - - detective-amd@6.0.0: - resolution: {integrity: sha512-NTqfYfwNsW7AQltKSEaWR66hGkTeD52Kz3eRQ+nfkA9ZFZt3iifRCWh+yZ/m6t3H42JFwVFTrml/D64R2PAIOA==} - engines: {node: '>=18'} - hasBin: true - - detective-cjs@6.0.0: - resolution: {integrity: sha512-R55jTS6Kkmy6ukdrbzY4x+I7KkXiuDPpFzUViFV/tm2PBGtTCjkh9ZmTuJc1SaziMHJOe636dtiZLEuzBL9drg==} - engines: {node: '>=18'} - - detective-es6@5.0.0: - resolution: {integrity: sha512-NGTnzjvgeMW1khUSEXCzPDoraLenWbUjCFjwxReH+Ir+P6LGjYtaBbAvITWn2H0VSC+eM7/9LFOTAkrta6hNYg==} - engines: {node: '>=18'} - - detective-postcss@7.0.0: - resolution: {integrity: sha512-pSXA6dyqmBPBuERpoOKKTUUjQCZwZPLRbd1VdsTbt6W+m/+6ROl4BbE87yQBUtLoK7yX8pvXHdKyM/xNIW9F7A==} - engines: {node: ^14.0.0 || >=16.0.0} - peerDependencies: - postcss: ^8.4.38 - - detective-sass@6.0.0: - resolution: {integrity: sha512-h5GCfFMkPm4ZUUfGHVPKNHKT8jV7cSmgK+s4dgQH4/dIUNh9/huR1fjEQrblOQNDalSU7k7g+tiW9LJ+nVEUhg==} - engines: {node: '>=18'} - - detective-scss@5.0.0: - resolution: {integrity: sha512-Y64HyMqntdsCh1qAH7ci95dk0nnpA29g319w/5d/oYcHolcGUVJbIhOirOFjfN1KnMAXAFm5FIkZ4l2EKFGgxg==} - engines: {node: '>=18'} - - detective-stylus@5.0.0: - resolution: {integrity: sha512-KMHOsPY6aq3196WteVhkY5FF+6Nnc/r7q741E+Gq+Ax9mhE2iwj8Hlw8pl+749hPDRDBHZ2WlgOjP+twIG61vQ==} - engines: {node: '>=18'} - - detective-typescript@13.0.0: - resolution: {integrity: sha512-tcMYfiFWoUejSbvSblw90NDt76/4mNftYCX0SMnVRYzSXv8Fvo06hi4JOPdNvVNxRtCAKg3MJ3cBJh+ygEMH+A==} - engines: {node: ^14.14.0 || >=16.0.0} - peerDependencies: - typescript: ^5.4.4 - - detective-vue2@2.0.3: - resolution: {integrity: sha512-AgWdSfVnft8uPGnUkdvE1EDadEENDCzoSRMt2xZfpxsjqVO617zGWXbB8TGIxHaqHz/nHa6lOSgAB8/dt0yEug==} - engines: {node: '>=18'} - peerDependencies: - typescript: ^5.4.4 + resolution: + { integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== } diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} + resolution: + { integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== } + engines: { node: ">=0.3.1" } diff@8.0.2: - resolution: {integrity: sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==} - engines: {node: '>=0.3.1'} + resolution: + { integrity: sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg== } + engines: { node: ">=0.3.1" } dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== } + engines: { node: ">=8" } doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== } + engines: { node: ">=0.10.0" } doctypes@1.1.0: - resolution: {integrity: sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==} + resolution: + { integrity: sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ== } dot-case@3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + resolution: + { integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== } dot-prop@5.3.0: - resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== } + engines: { node: ">=8" } dotenv-expand@11.0.6: - resolution: {integrity: sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==} - engines: {node: '>=12'} + resolution: + { integrity: sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g== } + engines: { node: ">=12" } dotenv@10.0.0: - resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== } + engines: { node: ">=10" } dotenv@16.4.5: - resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} - engines: {node: '>=12'} + resolution: + { integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== } + engines: { node: ">=12" } dotenv@17.2.3: - resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} - engines: {node: '>=12'} + resolution: + { integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w== } + engines: { node: ">=12" } dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== } + engines: { node: ">= 0.4" } eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + resolution: + { integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== } ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + resolution: + { integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== } ejs@3.1.9: - resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== } + engines: { node: ">=0.10.0" } hasBin: true electron-to-chromium@1.5.267: - resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} + resolution: + { integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw== } - electron@40.0.0: - resolution: {integrity: sha512-UyBy5yJ0/wm4gNugCtNPjvddjAknMTuXR2aCHioXicH7aKRKGDBPp4xqTEi/doVcB3R+MN3wfU9o8d/9pwgK2A==} - engines: {node: '>= 12.20.55'} + electron@40.1.0: + resolution: + { integrity: sha512-2j/kvw7uF0H1PnzYBzw2k2Q6q16J8ToKrtQzZfsAoXbbMY0l5gQi2DLOauIZLzwp4O01n8Wt/74JhSRwG0yj9A== } + engines: { node: ">= 12.20.55" } hasBin: true email-addresses@5.0.0: - resolution: {integrity: sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==} + resolution: + { integrity: sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw== } emoji-regex@10.4.0: - resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + resolution: + { integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw== } emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + resolution: + { integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== } emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + resolution: + { integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== } enabled@2.0.0: - resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} + resolution: + { integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== } encodeurl@2.0.0: - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} - engines: {node: '>= 0.8'} + resolution: + { integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== } + engines: { node: ">= 0.8" } encoding@0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + resolution: + { integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== } end-of-stream@1.4.5: - resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} - - enhanced-resolve@5.17.1: - resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} - engines: {node: '>=10.13.0'} + resolution: + { integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg== } enhanced-resolve@5.18.2: - resolution: {integrity: sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==} - engines: {node: '>=10.13.0'} + resolution: + { integrity: sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ== } + engines: { node: ">=10.13.0" } + + enhanced-resolve@5.18.4: + resolution: + { integrity: sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q== } + engines: { node: ">=10.13.0" } enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} - engines: {node: '>=8.6'} + resolution: + { integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== } + engines: { node: ">=8.6" } entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} + resolution: + { integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== } + engines: { node: ">=0.12" } entities@6.0.1: - resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} - engines: {node: '>=0.12'} + resolution: + { integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g== } + engines: { node: ">=0.12" } entities@7.0.0: - resolution: {integrity: sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==} - engines: {node: '>=0.12'} + resolution: + { integrity: sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ== } + engines: { node: ">=0.12" } env-paths@2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== } + engines: { node: ">=6" } envinfo@7.13.0: - resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q== } + engines: { node: ">=4" } hasBin: true envinfo@7.14.0: - resolution: {integrity: sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg== } + engines: { node: ">=4" } hasBin: true err-code@2.0.3: - resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + resolution: + { integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== } error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + resolution: + { integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== } es-abstract@1.24.0: - resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} - engines: {node: '>= 0.4'} - - es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg== } + engines: { node: ">= 0.4" } es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== } + engines: { node: ">= 0.4" } es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== } + engines: { node: ">= 0.4" } es-module-lexer@1.7.0: - resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + resolution: + { integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA== } es-module-lexer@2.0.0: - resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} + resolution: + { integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw== } es-object-atoms@1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== } + engines: { node: ">= 0.4" } es-set-tostringtag@2.1.0: - resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== } + engines: { node: ">= 0.4" } es-shim-unscopables@1.1.0: - resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw== } + engines: { node: ">= 0.4" } es-to-primitive@1.3.0: - resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g== } + engines: { node: ">= 0.4" } es6-error@4.1.1: - resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} + resolution: + { integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== } esbuild@0.27.2: - resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw== } + engines: { node: ">=18" } hasBin: true escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== } + engines: { node: ">=6" } escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== } + engines: { node: ">=6" } escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + resolution: + { integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== } escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} + resolution: + { integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== } + engines: { node: ">=0.8.0" } escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true + resolution: + { integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== } + engines: { node: ">=10" } eslint-config-prettier@10.1.8: - resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} + resolution: + { integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w== } hasBin: true peerDependencies: - eslint: '>=7.0.0' + eslint: ">=7.0.0" eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + resolution: + { integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== } eslint-module-utils@2.12.1: - resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw== } + engines: { node: ">=4" } peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' + "@typescript-eslint/parser": "*" + eslint: "*" + eslint-import-resolver-node: "*" + eslint-import-resolver-typescript: "*" + eslint-import-resolver-webpack: "*" peerDependenciesMeta: - '@typescript-eslint/parser': + "@typescript-eslint/parser": optional: true eslint: optional: true @@ -5463,185 +5583,222 @@ packages: optional: true eslint-plugin-import@2.32.0: - resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA== } + engines: { node: ">=4" } peerDependencies: - '@typescript-eslint/parser': '*' + "@typescript-eslint/parser": "*" eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 peerDependenciesMeta: - '@typescript-eslint/parser': + "@typescript-eslint/parser": optional: true - eslint-plugin-jsdoc@62.3.1: - resolution: {integrity: sha512-eQzrU7Z8FFSKdUgurmz8XZMz25GC5807uPmAV1x/Dw+xLteJEqPjbsdBT1pYB5p3uSsD4q3tCbJOpVLMNiTSSw==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + eslint-plugin-jsdoc@62.5.0: + resolution: + { integrity: sha512-D+1haMVDzW/ZMoPwOnsbXCK07rJtsq98Z1v+ApvDKxSzYTTcPgmFc/nyUDCGmxm2cP7g7hszyjYHO7Zodl/43w== } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 eslint-plugin-prettier@5.5.5: - resolution: {integrity: sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==} - engines: {node: ^14.18.0 || >=16.0.0} + resolution: + { integrity: sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw== } + engines: { node: ^14.18.0 || >=16.0.0 } peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' - prettier: '>=3.0.0' + "@types/eslint": ">=8.0.0" + eslint: ">=8.0.0" + eslint-config-prettier: ">= 7.0.0 <10.0.0 || >=10.1.0" + prettier: ">=3.0.0" peerDependenciesMeta: - '@types/eslint': + "@types/eslint": optional: true eslint-config-prettier: optional: true eslint-plugin-tsdoc@0.5.0: - resolution: {integrity: sha512-ush8ehCwub2rgE16OIgQPFyj/o0k3T8kL++9IrAI4knsmupNo8gvfO2ERgDHWWgTC5MglbwLVRswU93HyXqNpw==} + resolution: + { integrity: sha512-ush8ehCwub2rgE16OIgQPFyj/o0k3T8kL++9IrAI4knsmupNo8gvfO2ERgDHWWgTC5MglbwLVRswU93HyXqNpw== } eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} + resolution: + { integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== } + engines: { node: ">=8.0.0" } eslint-scope@8.4.0: - resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + resolution: + { integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg== } + 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} + 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.2.1: - resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + resolution: + { integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } eslint-visitor-keys@5.0.0: - resolution: {integrity: sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + resolution: + { integrity: sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q== } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } eslint@9.39.2: - resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + resolution: + { integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } hasBin: true peerDependencies: - jiti: '*' + jiti: "*" peerDependenciesMeta: jiti: optional: true espree@10.4.0: - resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + resolution: + { integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } espree@11.1.0: - resolution: {integrity: sha512-WFWYhO1fV4iYkqOOvq8FbqIhr2pYfoDY0kCotMkDeNtGpiGGkZ1iov2u8ydjtgM8yF8rzK7oaTbw2NAzbAbehw==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + resolution: + { integrity: sha512-WFWYhO1fV4iYkqOOvq8FbqIhr2pYfoDY0kCotMkDeNtGpiGGkZ1iov2u8ydjtgM8yF8rzK7oaTbw2NAzbAbehw== } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== } + engines: { node: ">=4" } hasBin: true esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} - engines: {node: '>=0.10'} + resolution: + { integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== } + engines: { node: ">=0.10" } esquery@1.7.0: - resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} - engines: {node: '>=0.10'} + resolution: + { integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g== } + engines: { node: ">=0.10" } esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} + resolution: + { integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== } + engines: { node: ">=4.0" } estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} + resolution: + { integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== } + engines: { node: ">=4.0" } estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + resolution: + { integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== } + engines: { node: ">=4.0" } estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + resolution: + { integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== } esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== } + engines: { node: ">=0.10.0" } etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} + resolution: + { integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== } + engines: { node: ">= 0.6" } event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== } + engines: { node: ">=6" } eventemitter3@4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + resolution: + { integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== } events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} + resolution: + { integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== } + engines: { node: ">=0.8.x" } execa@5.0.0: - resolution: {integrity: sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== } + engines: { node: ">=10" } expand-template@2.0.3: - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== } + engines: { node: ">=6" } expect-type@1.3.0: - resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} - engines: {node: '>=12.0.0'} + resolution: + { integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA== } + engines: { node: ">=12.0.0" } exponential-backoff@3.1.1: - resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + resolution: + { integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== } express-rate-limit@8.2.1: - resolution: {integrity: sha512-PCZEIEIxqwhzw4KF0n7QF4QqruVTcF73O5kFKUnGOyjbCCgizBBiFaYpd/fnBLUMPw/BWw9OsiN7GgrNYr7j6g==} - engines: {node: '>= 16'} + resolution: + { integrity: sha512-PCZEIEIxqwhzw4KF0n7QF4QqruVTcF73O5kFKUnGOyjbCCgizBBiFaYpd/fnBLUMPw/BWw9OsiN7GgrNYr7j6g== } + engines: { node: ">= 16" } peerDependencies: - express: '>= 4.11' + express: ">= 4.11" express@5.2.1: - resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} - engines: {node: '>= 18'} + resolution: + { integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw== } + engines: { node: ">= 18" } extract-zip@2.0.1: - resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} - engines: {node: '>= 10.17.0'} + resolution: + { integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== } + engines: { node: ">= 10.17.0" } hasBin: true fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + resolution: + { integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== } fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + resolution: + { integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== } fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} + resolution: + { integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== } + engines: { node: ">=8.6.0" } fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + resolution: + { integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== } fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + resolution: + { integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== } fastest-levenshtein@1.0.16: - resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} - engines: {node: '>= 4.9.1'} + resolution: + { integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== } + engines: { node: ">= 4.9.1" } fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + resolution: + { integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== } fd-slicer@1.1.0: - resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + resolution: + { integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== } fdir@6.5.0: - resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} - engines: {node: '>=12.0.0'} + resolution: + { integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== } + engines: { node: ">=12.0.0" } peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -5649,1482 +5806,1752 @@ packages: optional: true fecha@4.2.3: - resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} + resolution: + { integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== } fflate@0.8.2: - resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + resolution: + { integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A== } figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== } + engines: { node: ">=8" } file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} + resolution: + { integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== } + engines: { node: ">=16.0.0" } filelist@1.0.4: - resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + resolution: + { integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== } filename-reserved-regex@2.0.0: - resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ== } + engines: { node: ">=4" } filenamify@4.3.0: - resolution: {integrity: sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==} - engines: {node: '>=8'} - - filing-cabinet@5.0.2: - resolution: {integrity: sha512-RZlFj8lzyu6jqtFBeXNqUjjNG6xm+gwXue3T70pRxw1W40kJwlgq0PSWAmh0nAnn5DHuBIecLXk9+1VKS9ICXA==} - engines: {node: '>=18'} - hasBin: true + resolution: + { integrity: sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg== } + engines: { node: ">=8" } fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== } + engines: { node: ">=8" } finalhandler@2.1.1: - resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} - engines: {node: '>= 18.0.0'} + resolution: + { integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA== } + engines: { node: ">= 18.0.0" } find-cache-dir@3.3.2: - resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== } + engines: { node: ">=8" } find-up@2.1.0: - resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== } + engines: { node: ">=4" } find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== } + engines: { node: ">=8" } find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - find-up@7.0.0: - resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== } + engines: { node: ">=10" } find-up@8.0.0: - resolution: {integrity: sha512-JGG8pvDi2C+JxidYdIwQDyS/CgcrIdh18cvgxcBge3wSHRQOrooMD3GlFBcmMJAN9M42SAZjDp5zv1dglJjwww==} - engines: {node: '>=20'} + resolution: + { integrity: sha512-JGG8pvDi2C+JxidYdIwQDyS/CgcrIdh18cvgxcBge3wSHRQOrooMD3GlFBcmMJAN9M42SAZjDp5zv1dglJjwww== } + engines: { node: ">=20" } flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} + resolution: + { integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== } + engines: { node: ">=16" } flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + resolution: + { integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== } hasBin: true flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + resolution: + { integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== } fn.name@1.1.0: - resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} + resolution: + { integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== } follow-redirects@1.15.6: - resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} - engines: {node: '>=4.0'} + resolution: + { integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== } + engines: { node: ">=4.0" } peerDependencies: - debug: '*' + debug: "*" peerDependenciesMeta: debug: optional: true for-each@0.3.5: - resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== } + engines: { node: ">= 0.4" } foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} + resolution: + { integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== } + engines: { node: ">=14" } foreground-child@3.3.1: - resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} - engines: {node: '>=14'} + resolution: + { integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== } + engines: { node: ">=14" } form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} + resolution: + { integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== } + engines: { node: ">= 6" } form-data@4.0.5: - resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} - engines: {node: '>= 6'} + resolution: + { integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== } + engines: { node: ">= 6" } forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} + resolution: + { integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== } + engines: { node: ">= 0.6" } fresh@2.0.0: - resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} - engines: {node: '>= 0.8'} + resolution: + { integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A== } + engines: { node: ">= 0.8" } front-matter@4.0.2: - resolution: {integrity: sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==} + resolution: + { integrity: sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg== } fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + resolution: + { integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== } fs-extra@11.3.3: - resolution: {integrity: sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==} - engines: {node: '>=14.14'} + resolution: + { integrity: sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg== } + engines: { node: ">=14.14" } fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} + resolution: + { integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== } + engines: { node: ">=6 <7 || >=8" } fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} + resolution: + { integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== } + engines: { node: ">= 8" } fs-minipass@3.0.2: - resolution: {integrity: sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { integrity: sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g== } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + resolution: + { integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== } fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + resolution: + { integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== } + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } os: [darwin] function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + resolution: + { integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== } function.prototype.name@1.1.8: - resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q== } + engines: { node: ">= 0.4" } functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - get-amd-module-type@6.0.0: - resolution: {integrity: sha512-hFM7oivtlgJ3d6XWD6G47l8Wyh/C6vFw5G24Kk1Tbq85yh5gcM8Fne5/lFhiuxB+RT6+SI7I1ThB9lG4FBh3jw==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== } get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} + resolution: + { integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== } + engines: { node: 6.* || 8.* || >= 10.* } get-east-asian-width@1.3.0: - resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} - engines: {node: '>=18'} - - get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ== } + engines: { node: ">=18" } get-intrinsic@1.3.0: - resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} - engines: {node: '>= 0.4'} - - get-own-enumerable-property-symbols@3.0.2: - resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + resolution: + { integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== } + engines: { node: ">= 0.4" } get-pkg-repo@4.2.1: - resolution: {integrity: sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==} - engines: {node: '>=6.9.0'} + resolution: + { integrity: sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA== } + engines: { node: ">=6.9.0" } hasBin: true get-port@5.1.1: - resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== } + engines: { node: ">=8" } get-proto@1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== } + engines: { node: ">= 0.4" } get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== } + engines: { node: ">=8" } get-stream@6.0.0: - resolution: {integrity: sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== } + engines: { node: ">=10" } get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== } + engines: { node: ">=10" } get-symbol-description@1.1.0: - resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg== } + engines: { node: ">= 0.4" } gh-pages@6.3.0: - resolution: {integrity: sha512-Ot5lU6jK0Eb+sszG8pciXdjMXdBJ5wODvgjR+imihTqsUWF2K6dJ9HST55lgqcs8wWcw6o6wAsUzfcYRhJPXbA==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-Ot5lU6jK0Eb+sszG8pciXdjMXdBJ5wODvgjR+imihTqsUWF2K6dJ9HST55lgqcs8wWcw6o6wAsUzfcYRhJPXbA== } + engines: { node: ">=10" } hasBin: true git-raw-commits@3.0.0: - resolution: {integrity: sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw==} - engines: {node: '>=14'} + resolution: + { integrity: sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw== } + engines: { node: ">=14" } hasBin: true git-raw-commits@4.0.0: - resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} - engines: {node: '>=16'} + resolution: + { integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ== } + engines: { node: ">=16" } hasBin: true git-remote-origin-url@2.0.0: - resolution: {integrity: sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw== } + engines: { node: ">=4" } git-semver-tags@5.0.0: - resolution: {integrity: sha512-fZ+tmZ1O5aXW/T5nLzZLbxWAHdQTLLXalOECMNAmhoEQSfqZjtaeMjpsXH4C5qVhrICTkVQeQFujB1lKzIHljA==} - engines: {node: '>=14'} + resolution: + { integrity: sha512-fZ+tmZ1O5aXW/T5nLzZLbxWAHdQTLLXalOECMNAmhoEQSfqZjtaeMjpsXH4C5qVhrICTkVQeQFujB1lKzIHljA== } + engines: { node: ">=14" } hasBin: true git-up@7.0.0: - resolution: {integrity: sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==} + resolution: + { integrity: sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ== } git-url-parse@14.0.0: - resolution: {integrity: sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ==} + resolution: + { integrity: sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ== } gitconfiglocal@1.0.0: - resolution: {integrity: sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==} + resolution: + { integrity: sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ== } github-from-package@0.0.0: - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + resolution: + { integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== } glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + resolution: + { integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== } + engines: { node: ">= 6" } glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} + resolution: + { integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== } + engines: { node: ">=10.13.0" } glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + resolution: + { integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== } glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + resolution: + { integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== } hasBin: true glob@11.0.2: - resolution: {integrity: sha512-YT7U7Vye+t5fZ/QMkBFrTJ7ZQxInIUjwyAjVj84CYXqgBdv30MFUPGnBR6sQaVq6Is15wYJUsnzTuWaGRBhBAQ==} - engines: {node: 20 || >=22} + resolution: + { integrity: sha512-YT7U7Vye+t5fZ/QMkBFrTJ7ZQxInIUjwyAjVj84CYXqgBdv30MFUPGnBR6sQaVq6Is15wYJUsnzTuWaGRBhBAQ== } + engines: { node: 20 || >=22 } hasBin: true glob@11.1.0: - resolution: {integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==} - engines: {node: 20 || >=22} + resolution: + { integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw== } + engines: { node: 20 || >=22 } hasBin: true glob@13.0.0: - resolution: {integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==} - engines: {node: 20 || >=22} + resolution: + { integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA== } + engines: { node: 20 || >=22 } glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + resolution: + { integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== } deprecated: Glob versions prior to v9 are no longer supported glob@9.3.5: - resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} - engines: {node: '>=16 || 14 >=14.17'} + resolution: + { integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q== } + engines: { node: ">=16 || 14 >=14.17" } global-agent@3.0.0: - resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} - engines: {node: '>=10.0'} + resolution: + { integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q== } + engines: { node: ">=10.0" } global-directory@4.0.1: - resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q== } + engines: { node: ">=18" } globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== } + engines: { node: ">=18" } globalthis@1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== } + engines: { node: ">= 0.4" } globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - - gonzales-pe@4.3.0: - resolution: {integrity: sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==} - engines: {node: '>=0.6.0'} - hasBin: true + resolution: + { integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== } + engines: { node: ">=10" } gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== } + engines: { node: ">= 0.4" } got@11.8.6: - resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} - engines: {node: '>=10.19.0'} + resolution: + { integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== } + engines: { node: ">=10.19.0" } graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + resolution: + { integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== } handlebars@4.7.7: - resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} - engines: {node: '>=0.4.7'} + resolution: + { integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== } + engines: { node: ">=0.4.7" } hasBin: true hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== } + engines: { node: ">=6" } has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + resolution: + { integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== } has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== } + engines: { node: ">=4" } has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== } + engines: { node: ">=8" } has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== } has-proto@1.2.0: - resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} - engines: {node: '>= 0.4'} - - has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ== } + engines: { node: ">= 0.4" } has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== } + engines: { node: ">= 0.4" } has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== } + engines: { node: ">= 0.4" } has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + resolution: + { integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== } hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== } + engines: { node: ">= 0.4" } header-case@2.0.4: - resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} + resolution: + { integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q== } helmet@8.1.0: - resolution: {integrity: sha512-jOiHyAZsmnr8LqoPGmCjYAaiuWwjAPLgY8ZX2XrmHawt99/u1y6RgrZMTeoPfpUbV96HOalYgz1qzkRbw54Pmg==} - engines: {node: '>=18.0.0'} + resolution: + { integrity: sha512-jOiHyAZsmnr8LqoPGmCjYAaiuWwjAPLgY8ZX2XrmHawt99/u1y6RgrZMTeoPfpUbV96HOalYgz1qzkRbw54Pmg== } + engines: { node: ">=18.0.0" } hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + resolution: + { integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== } hosted-git-info@4.1.0: - resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== } + engines: { node: ">=10" } hosted-git-info@8.1.0: - resolution: {integrity: sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw== } + engines: { node: ^18.17.0 || >=20.5.0 } hosted-git-info@9.0.2: - resolution: {integrity: sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg== } + engines: { node: ^20.17.0 || >=22.9.0 } html-encoding-sniffer@6.0.0: - resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + resolution: + { integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg== } + engines: { node: ^20.19.0 || ^22.12.0 || >=24.0.0 } html-entities@2.6.0: - resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} + resolution: + { integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ== } html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + resolution: + { integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== } html-minifier-next@4.16.4: - resolution: {integrity: sha512-VI6GuJWfc8eBEU0Zdc/hMgth7DNOMTkoUERiEiVhI+PN//dvNn7jKpVZiJjVEjHzZ+fQORA6okD6ZDUzynzmqg==} + resolution: + { integrity: sha512-VI6GuJWfc8eBEU0Zdc/hMgth7DNOMTkoUERiEiVhI+PN//dvNn7jKpVZiJjVEjHzZ+fQORA6okD6ZDUzynzmqg== } hasBin: true peerDependencies: - '@swc/core': ^1.15.7 + "@swc/core": ^1.15.7 peerDependenciesMeta: - '@swc/core': + "@swc/core": optional: true http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + resolution: + { integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== } http-cache-semantics@4.2.0: - resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} + resolution: + { integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ== } http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} + resolution: + { integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== } + engines: { node: ">= 0.8" } http-errors@2.0.1: - resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} - engines: {node: '>= 0.8'} + resolution: + { integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ== } + engines: { node: ">= 0.8" } http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} + resolution: + { integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== } + engines: { node: ">= 14" } http2-wrapper@1.0.3: - resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} - engines: {node: '>=10.19.0'} + resolution: + { integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== } + engines: { node: ">=10.19.0" } https-proxy-agent@7.0.6: - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} - engines: {node: '>= 14'} + 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'} + resolution: + { integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== } + engines: { node: ">=10.17.0" } husky@9.1.7: - resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA== } + engines: { node: ">=18" } hasBin: true iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== } + engines: { node: ">=0.10.0" } iconv-lite@0.7.1: - resolution: {integrity: sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw== } + engines: { node: ">=0.10.0" } ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + resolution: + { integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== } ignore-by-default@1.0.1: - resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} + resolution: + { integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== } ignore-walk@8.0.0: - resolution: {integrity: sha512-FCeMZT4NiRQGh+YkeKMtWrOmBgWjHjMJ26WQWrRQyoyzqevdaGSakUaJW5xQYmjLlUVk2qUnCjYVBax9EKKg8A==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-FCeMZT4NiRQGh+YkeKMtWrOmBgWjHjMJ26WQWrRQyoyzqevdaGSakUaJW5xQYmjLlUVk2qUnCjYVBax9EKKg8A== } + engines: { node: ^20.17.0 || >=22.9.0 } ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} - engines: {node: '>= 4'} + resolution: + { integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== } + engines: { node: ">= 4" } ignore@7.0.5: - resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} - engines: {node: '>= 4'} + resolution: + { integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== } + engines: { node: ">= 4" } immutable@5.1.4: - resolution: {integrity: sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==} + resolution: + { integrity: sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA== } import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== } + engines: { node: ">=6" } import-local@3.1.0: - resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== } + engines: { node: ">=8" } hasBin: true import-meta-resolve@4.0.0: - resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} + resolution: + { integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA== } imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} + resolution: + { integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== } + engines: { node: ">=0.8.19" } indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== } + engines: { node: ">=8" } inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + resolution: + { integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== } deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + resolution: + { integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== } ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + resolution: + { integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== } ini@4.1.1: - resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g== } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } ini@4.1.3: - resolution: {integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg== } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } ini@5.0.0: - resolution: {integrity: sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw== } + engines: { node: ^18.17.0 || >=20.5.0 } ini@6.0.0: - resolution: {integrity: sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ== } + engines: { node: ^20.17.0 || >=22.9.0 } init-package-json@8.2.2: - resolution: {integrity: sha512-pXVMn67Jdw2hPKLCuJZj62NC9B2OIDd1R3JwZXTHXuEnfN3Uq5kJbKOSld6YEU+KOGfMD82EzxFTYz5o0SSJoA==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-pXVMn67Jdw2hPKLCuJZj62NC9B2OIDd1R3JwZXTHXuEnfN3Uq5kJbKOSld6YEU+KOGfMD82EzxFTYz5o0SSJoA== } + engines: { node: ^20.17.0 || >=22.9.0 } inquirer@12.9.6: - resolution: {integrity: sha512-603xXOgyfxhuis4nfnWaZrMaotNT0Km9XwwBNWUKbIDqeCY89jGr2F9YPEMiNhU6XjIP4VoWISMBFfcc5NgrTw==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-603xXOgyfxhuis4nfnWaZrMaotNT0Km9XwwBNWUKbIDqeCY89jGr2F9YPEMiNhU6XjIP4VoWISMBFfcc5NgrTw== } + engines: { node: ">=18" } peerDependencies: - '@types/node': '>=18' + "@types/node": ">=18" peerDependenciesMeta: - '@types/node': + "@types/node": optional: true internal-slot@1.1.0: - resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw== } + engines: { node: ">= 0.4" } interpret@3.1.1: - resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} - engines: {node: '>=10.13.0'} + resolution: + { integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== } + engines: { node: ">=10.13.0" } ip-address@10.0.1: - resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==} - engines: {node: '>= 12'} + resolution: + { integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA== } + engines: { node: ">= 12" } ip-address@10.1.0: - resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} - engines: {node: '>= 12'} + resolution: + { integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q== } + engines: { node: ">= 12" } ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} + resolution: + { integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== } + engines: { node: ">= 0.10" } is-array-buffer@3.0.5: - resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A== } + engines: { node: ">= 0.4" } is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + resolution: + { integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== } is-async-function@2.1.1: - resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ== } + engines: { node: ">= 0.4" } is-bigint@1.1.0: - resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ== } + engines: { node: ">= 0.4" } is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== } + engines: { node: ">=8" } is-boolean-object@1.2.2: - resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A== } + engines: { node: ">= 0.4" } is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== } + engines: { node: ">= 0.4" } is-ci@3.0.1: - resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} + resolution: + { integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== } hasBin: true is-core-module@2.15.1: - resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== } + engines: { node: ">= 0.4" } is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== } + engines: { node: ">= 0.4" } is-data-view@1.0.2: - resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw== } + engines: { node: ">= 0.4" } is-date-object@1.1.0: - resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg== } + engines: { node: ">= 0.4" } is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== } + engines: { node: ">=8" } hasBin: true is-expression@4.0.0: - resolution: {integrity: sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==} + resolution: + { integrity: sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A== } is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== } + engines: { node: ">=0.10.0" } is-finalizationregistry@1.1.1: - resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg== } + engines: { node: ">= 0.4" } is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== } + engines: { node: ">=8" } is-generator-function@1.1.0: - resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ== } + engines: { node: ">= 0.4" } is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== } + engines: { node: ">=0.10.0" } + + is-installed-globally@1.0.0: + resolution: + { integrity: sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ== } + engines: { node: ">=18" } is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== } + engines: { node: ">=8" } is-map@2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== } + engines: { node: ">= 0.4" } is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== } + engines: { node: ">= 0.4" } is-number-object@1.1.1: - resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw== } + engines: { node: ">= 0.4" } is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-obj@1.0.1: - resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== } + engines: { node: ">=0.12.0" } is-obj@2.0.0: - resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== } + engines: { node: ">=8" } + + is-path-inside@4.0.0: + resolution: + { integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA== } + engines: { node: ">=12" } is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== } + engines: { node: ">=0.10.0" } + + is-plain-obj@4.1.0: + resolution: + { integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== } + engines: { node: ">=12" } is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== } + engines: { node: ">=0.10.0" } is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + resolution: + { integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== } is-promise@2.2.2: - resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + resolution: + { integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== } is-promise@4.0.0: - resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + resolution: + { integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== } is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== } + engines: { node: ">= 0.4" } is-regex@1.2.1: - resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} - engines: {node: '>= 0.4'} - - is-regexp@1.0.0: - resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== } + engines: { node: ">= 0.4" } is-set@2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== } + engines: { node: ">= 0.4" } is-shared-array-buffer@1.0.4: - resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A== } + engines: { node: ">= 0.4" } is-ssh@1.4.0: - resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} + resolution: + { integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ== } is-stream@2.0.0: - resolution: {integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== } + engines: { node: ">=8" } is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== } + engines: { node: ">=8" } is-string@1.1.1: - resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA== } + engines: { node: ">= 0.4" } is-symbol@1.1.1: - resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w== } + engines: { node: ">= 0.4" } is-text-path@1.0.1: - resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} - engines: {node: '>=0.10.0'} - - is-text-path@2.0.0: - resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w== } + engines: { node: ">=0.10.0" } is-typed-array@1.1.15: - resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== } + engines: { node: ">= 0.4" } is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - is-url-superb@4.0.0: - resolution: {integrity: sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA==} - engines: {node: '>=10'} - - is-url@1.2.4: - resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} + resolution: + { integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== } + engines: { node: ">=10" } is-weakmap@2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== } + engines: { node: ">= 0.4" } is-weakref@1.1.1: - resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew== } + engines: { node: ">= 0.4" } is-weakset@2.0.4: - resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ== } + engines: { node: ">= 0.4" } is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== } + engines: { node: ">=8" } isarray@0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + resolution: + { integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== } isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + resolution: + { integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== } isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + resolution: + { integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== } isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + resolution: + { integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== } isexe@3.1.1: - resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} - engines: {node: '>=16'} + resolution: + { integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== } + engines: { node: ">=16" } isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== } + engines: { node: ">=0.10.0" } istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== } + engines: { node: ">=8" } istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== } + engines: { node: ">=10" } istanbul-reports@3.2.0: - resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA== } + engines: { node: ">=8" } jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + resolution: + { integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== } jackspeak@4.0.1: - resolution: {integrity: sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==} - engines: {node: 20 || >=22} + resolution: + { integrity: sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog== } + engines: { node: 20 || >=22 } jackspeak@4.1.1: - resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} - engines: {node: 20 || >=22} + resolution: + { integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ== } + engines: { node: 20 || >=22 } jake@10.8.7: - resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w== } + engines: { node: ">=10" } hasBin: true javascript-natural-sort@0.7.1: - resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} + resolution: + { integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw== } jest-diff@30.2.0: - resolution: {integrity: sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + resolution: + { integrity: sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A== } + engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} + resolution: + { integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== } + engines: { node: ">= 10.13.0" } jiti@2.4.2: - resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + resolution: + { integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A== } hasBin: true jju@1.4.0: - resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + resolution: + { integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA== } jmespath@0.16.0: - resolution: {integrity: sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==} - engines: {node: '>= 0.6.0'} + resolution: + { integrity: sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw== } + engines: { node: ">= 0.6.0" } jquery@4.0.0: - resolution: {integrity: sha512-TXCHVR3Lb6TZdtw1l3RTLf8RBWVGexdxL6AC8/e0xZKEpBflBsjh9/8LXw+dkNFuOyW9B7iB3O1sP7hS0Kiacg==} + resolution: + { integrity: sha512-TXCHVR3Lb6TZdtw1l3RTLf8RBWVGexdxL6AC8/e0xZKEpBflBsjh9/8LXw+dkNFuOyW9B7iB3O1sP7hS0Kiacg== } js-stringify@1.0.2: - resolution: {integrity: sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==} + resolution: + { integrity: sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g== } js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + resolution: + { integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== } js-tokens@9.0.1: - resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + resolution: + { integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ== } js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + resolution: + { integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== } hasBin: true js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + resolution: + { integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== } hasBin: true js-yaml@4.1.1: - resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + resolution: + { integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== } hasBin: true jsdoc-type-pratt-parser@7.1.0: - resolution: {integrity: sha512-SX7q7XyCwzM/MEDCYz0l8GgGbJAACGFII9+WfNYr5SLEKukHWRy2Jk3iWRe7P+lpYJNs7oQ+OSei4JtKGUjd7A==} - engines: {node: '>=20.0.0'} + resolution: + { integrity: sha512-SX7q7XyCwzM/MEDCYz0l8GgGbJAACGFII9+WfNYr5SLEKukHWRy2Jk3iWRe7P+lpYJNs7oQ+OSei4JtKGUjd7A== } + engines: { node: ">=20.0.0" } jsdom-global@3.0.2: - resolution: {integrity: sha512-t1KMcBkz/pT5JrvcJbpUR2u/w1kO9jXctaaGJ0vZDzwFnIvGWw9IDSRciT83kIs8Bnw4qpOl8bQK08V01YgMPg==} + resolution: + { integrity: sha512-t1KMcBkz/pT5JrvcJbpUR2u/w1kO9jXctaaGJ0vZDzwFnIvGWw9IDSRciT83kIs8Bnw4qpOl8bQK08V01YgMPg== } peerDependencies: - jsdom: '>=10.0.0' + jsdom: ">=10.0.0" - jsdom@27.4.0: - resolution: {integrity: sha512-mjzqwWRD9Y1J1KUi7W97Gja1bwOOM5Ug0EZ6UDK3xS7j7mndrkwozHtSblfomlzyB4NepioNt+B2sOSzczVgtQ==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + jsdom@28.0.0: + resolution: + { integrity: sha512-KDYJgZ6T2TKdU8yBfYueq5EPG/EylMsBvCaenWMJb2OXmjgczzwveRCoJ+Hgj1lXPDyasvrgneSn4GBuR1hYyA== } + engines: { node: ^20.19.0 || ^22.12.0 || >=24.0.0 } peerDependencies: canvas: ^3.0.0 peerDependenciesMeta: canvas: optional: 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==} + resolution: + { integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== } json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + resolution: + { integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== } json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + resolution: + { integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== } json-parse-even-better-errors@4.0.0: - resolution: {integrity: sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA== } + engines: { node: ^18.17.0 || >=20.5.0 } json-parse-even-better-errors@5.0.0: - resolution: {integrity: sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ== } + engines: { node: ^20.17.0 || >=22.9.0 } json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + resolution: + { integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== } json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + resolution: + { integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== } json-source-map@0.6.1: - resolution: {integrity: sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg==} + resolution: + { integrity: sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg== } json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + resolution: + { integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== } json-stringify-nice@1.1.4: - resolution: {integrity: sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==} + resolution: + { integrity: sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw== } json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + resolution: + { integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== } json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + resolution: + { integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== } hasBin: true json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== } + engines: { node: ">=6" } hasBin: true jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + resolution: + { integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== } jsoneditor@10.4.2: - resolution: {integrity: sha512-SQPCXlanU4PqdVsYuj2X7yfbLiiJYjklbksGfMKPsuwLhAIPxDlG43jYfXieGXvxpuq1fkw08YoRbkKXKabcLA==} + resolution: + { integrity: sha512-SQPCXlanU4PqdVsYuj2X7yfbLiiJYjklbksGfMKPsuwLhAIPxDlG43jYfXieGXvxpuq1fkw08YoRbkKXKabcLA== } jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + resolution: + { integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== } jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + resolution: + { integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== } jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} + resolution: + { integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== } + engines: { "0": node >= 0.2.0 } jsonrepair@3.13.1: - resolution: {integrity: sha512-WJeiE0jGfxYmtLwBTEk8+y/mYcaleyLXWaqp5bJu0/ZTSeG0KQq/wWQ8pmnkKenEdN6pdnn6QtcoSUkbqDHWNw==} + resolution: + { integrity: sha512-WJeiE0jGfxYmtLwBTEk8+y/mYcaleyLXWaqp5bJu0/ZTSeG0KQq/wWQ8pmnkKenEdN6pdnn6QtcoSUkbqDHWNw== } hasBin: true jstransformer@1.0.0: - resolution: {integrity: sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==} + resolution: + { integrity: sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A== } just-diff-apply@5.5.0: - resolution: {integrity: sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==} + resolution: + { integrity: sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw== } just-diff@6.0.2: - resolution: {integrity: sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA==} + resolution: + { integrity: sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA== } keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + resolution: + { integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== } kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== } + engines: { node: ">=0.10.0" } klaw@4.1.0: - resolution: {integrity: sha512-1zGZ9MF9H22UnkpVeuaGKOjfA2t6WrfdrJmGjy16ykcjnKQDmHVX+KI477rpbGevz/5FD4MC3xf1oxylBgcaQw==} - engines: {node: '>=14.14.0'} + resolution: + { integrity: sha512-1zGZ9MF9H22UnkpVeuaGKOjfA2t6WrfdrJmGjy16ykcjnKQDmHVX+KI477rpbGevz/5FD4MC3xf1oxylBgcaQw== } + engines: { node: ">=14.14.0" } kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== } + engines: { node: ">=6" } kuler@2.0.0: - resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} + resolution: + { integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== } lerna@9.0.3: - resolution: {integrity: sha512-wCsJWKX8FaGJoWX2K5gL5q7ReqQNxNsS92AW5glBe/JzWEtoM/jgXXGrEzQzORMb8rTXYFjUjpn60et+i8XugA==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + resolution: + { integrity: sha512-wCsJWKX8FaGJoWX2K5gL5q7ReqQNxNsS92AW5glBe/JzWEtoM/jgXXGrEzQzORMb8rTXYFjUjpn60et+i8XugA== } + engines: { node: ^20.19.0 || ^22.12.0 || >=24.0.0 } hasBin: true levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} + resolution: + { integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== } + engines: { node: ">= 0.8.0" } libnpmaccess@10.0.3: - resolution: {integrity: sha512-JPHTfWJxIK+NVPdNMNGnkz4XGX56iijPbe0qFWbdt68HL+kIvSzh+euBL8npLZvl2fpaxo+1eZSdoG15f5YdIQ==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-JPHTfWJxIK+NVPdNMNGnkz4XGX56iijPbe0qFWbdt68HL+kIvSzh+euBL8npLZvl2fpaxo+1eZSdoG15f5YdIQ== } + engines: { node: ^20.17.0 || >=22.9.0 } libnpmpublish@11.1.2: - resolution: {integrity: sha512-tNcU3cLH7toloAzhOOrBDhjzgbxpyuYvkf+BPPnnJCdc5EIcdJ8JcT+SglvCQKKyZ6m9dVXtCVlJcA6csxKdEA==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-tNcU3cLH7toloAzhOOrBDhjzgbxpyuYvkf+BPPnnJCdc5EIcdJ8JcT+SglvCQKKyZ6m9dVXtCVlJcA6csxKdEA== } + engines: { node: ^20.17.0 || >=22.9.0 } lightningcss-android-arm64@1.30.2: - resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==} - engines: {node: '>= 12.0.0'} + resolution: + { integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A== } + engines: { node: ">= 12.0.0" } cpu: [arm64] os: [android] lightningcss-darwin-arm64@1.30.2: - resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==} - engines: {node: '>= 12.0.0'} + resolution: + { integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA== } + engines: { node: ">= 12.0.0" } cpu: [arm64] os: [darwin] lightningcss-darwin-x64@1.30.2: - resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==} - engines: {node: '>= 12.0.0'} + resolution: + { integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ== } + engines: { node: ">= 12.0.0" } cpu: [x64] os: [darwin] lightningcss-freebsd-x64@1.30.2: - resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==} - engines: {node: '>= 12.0.0'} + resolution: + { integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA== } + engines: { node: ">= 12.0.0" } cpu: [x64] os: [freebsd] lightningcss-linux-arm-gnueabihf@1.30.2: - resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==} - engines: {node: '>= 12.0.0'} + resolution: + { integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA== } + engines: { node: ">= 12.0.0" } cpu: [arm] os: [linux] lightningcss-linux-arm64-gnu@1.30.2: - resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==} - engines: {node: '>= 12.0.0'} + resolution: + { integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A== } + engines: { node: ">= 12.0.0" } cpu: [arm64] os: [linux] + libc: [glibc] lightningcss-linux-arm64-musl@1.30.2: - resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==} - engines: {node: '>= 12.0.0'} + resolution: + { integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA== } + engines: { node: ">= 12.0.0" } cpu: [arm64] os: [linux] + libc: [musl] lightningcss-linux-x64-gnu@1.30.2: - resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==} - engines: {node: '>= 12.0.0'} + resolution: + { integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w== } + engines: { node: ">= 12.0.0" } cpu: [x64] os: [linux] + libc: [glibc] lightningcss-linux-x64-musl@1.30.2: - resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==} - engines: {node: '>= 12.0.0'} + resolution: + { integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA== } + engines: { node: ">= 12.0.0" } cpu: [x64] os: [linux] + libc: [musl] lightningcss-win32-arm64-msvc@1.30.2: - resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==} - engines: {node: '>= 12.0.0'} + resolution: + { integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ== } + engines: { node: ">= 12.0.0" } cpu: [arm64] os: [win32] lightningcss-win32-x64-msvc@1.30.2: - resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==} - engines: {node: '>= 12.0.0'} + resolution: + { integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw== } + engines: { node: ">= 12.0.0" } cpu: [x64] os: [win32] lightningcss@1.30.2: - resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==} - engines: {node: '>= 12.0.0'} + resolution: + { integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ== } + engines: { node: ">= 12.0.0" } lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + resolution: + { integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== } lines-and-columns@2.0.3: - resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + resolution: + { integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w== } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } linkify-it@5.0.0: - resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + resolution: + { integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ== } livereload-js@4.0.2: - resolution: {integrity: sha512-Fy7VwgQNiOkynYyNBTo3v9hQUhcW5pFAheJN148+DTgpShjsy/22pLHKKwDK5v0kOsZsJBK+6q1PMgLvRmrwFQ==} + resolution: + { integrity: sha512-Fy7VwgQNiOkynYyNBTo3v9hQUhcW5pFAheJN148+DTgpShjsy/22pLHKKwDK5v0kOsZsJBK+6q1PMgLvRmrwFQ== } livereload@0.10.3: - resolution: {integrity: sha512-llSb8HrtSH7ByPFMc8WTTeW3oy++smwgSA8JVGzEn8KiDPESq6jt1M4ZKKkhKTrhn2wvUOadQq4ip10E5daZ3w==} - engines: {node: '>=8.0.0'} + resolution: + { integrity: sha512-llSb8HrtSH7ByPFMc8WTTeW3oy++smwgSA8JVGzEn8KiDPESq6jt1M4ZKKkhKTrhn2wvUOadQq4ip10E5daZ3w== } + engines: { node: ">=8.0.0" } hasBin: true load-json-file@4.0.0: - resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== } + engines: { node: ">=4" } load-json-file@6.2.0: - resolution: {integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ== } + engines: { node: ">=8" } loader-runner@4.3.1: - resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} - engines: {node: '>=6.11.5'} + resolution: + { integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q== } + engines: { node: ">=6.11.5" } locate-path@2.0.0: - resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== } + engines: { node: ">=4" } locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== } + engines: { node: ">=8" } locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + resolution: + { integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== } + engines: { node: ">=10" } locate-path@8.0.0: - resolution: {integrity: sha512-XT9ewWAC43tiAV7xDAPflMkG0qOPn2QjHqlgX8FOqmWa/rxnyYDulF9T0F7tRy1u+TVTmK/M//6VIOye+2zDXg==} - engines: {node: '>=20'} + resolution: + { integrity: sha512-XT9ewWAC43tiAV7xDAPflMkG0qOPn2QjHqlgX8FOqmWa/rxnyYDulF9T0F7tRy1u+TVTmK/M//6VIOye+2zDXg== } + engines: { node: ">=20" } lodash.camelcase@4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - - lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + resolution: + { integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== } lodash.ismatch@4.4.0: - resolution: {integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==} - - lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + resolution: + { integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== } lodash.kebabcase@4.1.1: - resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + resolution: + { integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== } lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + resolution: + { integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== } lodash.mergewith@4.6.2: - resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + resolution: + { integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== } lodash.snakecase@4.1.1: - resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + resolution: + { integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== } lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - - lodash.uniq@4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + resolution: + { integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== } lodash.upperfirst@4.3.1: - resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} + resolution: + { integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg== } lodash@4.17.23: - resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} + resolution: + { integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w== } log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== } + engines: { node: ">=10" } logform@2.7.0: - resolution: {integrity: sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==} - engines: {node: '>= 12.0.0'} + resolution: + { integrity: sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ== } + engines: { node: ">= 12.0.0" } lookpath@1.2.3: - resolution: {integrity: sha512-kthRVhf4kH4+HW3anM4UBHxsw/XFESf13euCEldhXr6GpBdmBoa7rDd7WO5G0Mhd4G5XtKTcEy8OR0iRZXpS3Q==} - engines: {npm: '>=6.13.4'} + resolution: + { integrity: sha512-kthRVhf4kH4+HW3anM4UBHxsw/XFESf13euCEldhXr6GpBdmBoa7rDd7WO5G0Mhd4G5XtKTcEy8OR0iRZXpS3Q== } + engines: { npm: ">=6.13.4" } hasBin: true lower-case@2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + resolution: + { integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== } lowercase-keys@2.0.0: - resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} - engines: {node: '>=8'} - - lru-cache@10.2.2: - resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} - engines: {node: 14 || >=16.14} + resolution: + { integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== } + engines: { node: ">=8" } lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + resolution: + { integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== } lru-cache@11.0.0: - resolution: {integrity: sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==} - engines: {node: 20 || >=22} + resolution: + { integrity: sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA== } + engines: { node: 20 || >=22 } lru-cache@11.2.4: - resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==} - engines: {node: 20 || >=22} - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + resolution: + { integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg== } + engines: { node: 20 || >=22 } lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== } + engines: { node: ">=10" } lunr@2.3.9: - resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + resolution: + { integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== } luxon@3.7.2: - resolution: {integrity: sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==} - engines: {node: '>=12'} - - madge@8.0.0: - resolution: {integrity: sha512-9sSsi3TBPhmkTCIpVQF0SPiChj1L7Rq9kU2KDG1o6v2XH9cCw086MopjVCD+vuoL5v8S77DTbVopTO8OUiQpIw==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - typescript: ^5.4.4 - peerDependenciesMeta: - typescript: - optional: true + resolution: + { integrity: sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew== } + engines: { node: ">=12" } magic-string@0.30.21: - resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + resolution: + { integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ== } magicast@0.5.1: - resolution: {integrity: sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==} + resolution: + { integrity: sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw== } make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== } + engines: { node: ">=6" } make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== } + engines: { node: ">=8" } make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== } + engines: { node: ">=10" } make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + resolution: + { integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== } make-fetch-happen@14.0.3: - resolution: {integrity: sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ== } + engines: { node: ^18.17.0 || >=20.5.0 } make-fetch-happen@15.0.2: - resolution: {integrity: sha512-sI1NY4lWlXBAfjmCtVWIIpBypbBdhHtcjnwnv+gtCnsaOffyFil3aidszGC8hgzJe+fT1qix05sWxmD/Bmf/oQ==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-sI1NY4lWlXBAfjmCtVWIIpBypbBdhHtcjnwnv+gtCnsaOffyFil3aidszGC8hgzJe+fT1qix05sWxmD/Bmf/oQ== } + engines: { node: ^20.17.0 || >=22.9.0 } make-fetch-happen@15.0.3: - resolution: {integrity: sha512-iyyEpDty1mwW3dGlYXAJqC/azFn5PPvgKVwXayOGBSmKLxhKZ9fg4qIan2ePpp1vJIwfFiO34LAPZgq9SZW9Aw==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-iyyEpDty1mwW3dGlYXAJqC/azFn5PPvgKVwXayOGBSmKLxhKZ9fg4qIan2ePpp1vJIwfFiO34LAPZgq9SZW9Aw== } + engines: { node: ^20.17.0 || >=22.9.0 } map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== } + engines: { node: ">=0.10.0" } map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== } + engines: { node: ">=8" } markdown-it@14.1.0: - resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + resolution: + { integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg== } hasBin: true matcher@3.0.0: - resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng== } + engines: { node: ">=10" } math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== } + engines: { node: ">= 0.4" } mdn-data@2.12.2: - resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + resolution: + { integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA== } mdurl@2.0.0: - resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + resolution: + { integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w== } media-typer@1.1.0: - resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} - engines: {node: '>= 0.8'} + resolution: + { integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw== } + engines: { node: ">= 0.8" } meow@12.1.1: - resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} - engines: {node: '>=16.10'} + resolution: + { integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw== } + engines: { node: ">=16.10" } + + meow@13.2.0: + resolution: + { integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA== } + engines: { node: ">=18" } meow@8.1.2: - resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== } + engines: { node: ">=10" } merge-descriptors@2.0.0: - resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g== } + engines: { node: ">=18" } merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + resolution: + { integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== } merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} + resolution: + { integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== } + engines: { node: ">= 8" } micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} + resolution: + { integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== } + engines: { node: ">=8.6" } mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} + resolution: + { integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== } + engines: { node: ">= 0.6" } mime-db@1.54.0: - resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} - engines: {node: '>= 0.6'} + resolution: + { integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== } + engines: { node: ">= 0.6" } mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} + resolution: + { integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== } + engines: { node: ">= 0.6" } mime-types@3.0.2: - resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A== } + engines: { node: ">=18" } mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== } + engines: { node: ">=6" } mimic-response@1.0.1: - resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== } + engines: { node: ">=4" } mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== } + engines: { node: ">=10" } min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== } + engines: { node: ">=4" } minify@15.0.1: - resolution: {integrity: sha512-OT21ZzfjJcQm7ijCpZekdlSJt+eTwo/hLrfOxh405tvq4H6U3vPePU4tIWTPDj9HhpbywK1GXEf43g+OmPuMEQ==} - engines: {node: '>=22'} + resolution: + { integrity: sha512-OT21ZzfjJcQm7ijCpZekdlSJt+eTwo/hLrfOxh405tvq4H6U3vPePU4tIWTPDj9HhpbywK1GXEf43g+OmPuMEQ== } + engines: { node: ">=22" } hasBin: true minimatch@10.0.1: - resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} - engines: {node: 20 || >=22} + resolution: + { integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ== } + engines: { node: 20 || >=22 } minimatch@10.1.1: - resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} - engines: {node: 20 || >=22} + resolution: + { integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ== } + engines: { node: 20 || >=22 } minimatch@3.0.5: - resolution: {integrity: sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==} + resolution: + { integrity: sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw== } minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + resolution: + { integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== } minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== } + engines: { node: ">=10" } minimatch@8.0.4: - resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} - engines: {node: '>=16 || 14 >=14.17'} + resolution: + { integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA== } + engines: { node: ">=16 || 14 >=14.17" } minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} + resolution: + { integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== } + engines: { node: ">=16 || 14 >=14.17" } minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} + resolution: + { integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== } + engines: { node: ">=16 || 14 >=14.17" } minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} + resolution: + { integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== } + engines: { node: ">= 6" } minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + resolution: + { integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== } minipass-collect@2.0.1: - resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} - engines: {node: '>=16 || 14 >=14.17'} + resolution: + { integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw== } + engines: { node: ">=16 || 14 >=14.17" } minipass-fetch@4.0.1: - resolution: {integrity: sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ== } + engines: { node: ^18.17.0 || >=20.5.0 } minipass-fetch@5.0.0: - resolution: {integrity: sha512-fiCdUALipqgPWrOVTz9fw0XhcazULXOSU6ie40DDbX1F49p1dBrSRBuswndTx1x3vEb/g0FT7vC4c4C2u/mh3A==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-fiCdUALipqgPWrOVTz9fw0XhcazULXOSU6ie40DDbX1F49p1dBrSRBuswndTx1x3vEb/g0FT7vC4c4C2u/mh3A== } + engines: { node: ^20.17.0 || >=22.9.0 } minipass-flush@1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} - engines: {node: '>= 8'} + resolution: + { integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== } + engines: { node: ">= 8" } minipass-pipeline@1.2.4: - resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== } + engines: { node: ">=8" } minipass-sized@1.0.3: - resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== } + engines: { node: ">=8" } minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== } + engines: { node: ">=8" } minipass@4.2.8: - resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== } + engines: { node: ">=8" } minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== } + engines: { node: ">=8" } minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} + resolution: + { integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== } + engines: { node: ">=16 || 14 >=14.17" } minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} + resolution: + { integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== } + engines: { node: ">= 8" } minizlib@3.1.0: - resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} - engines: {node: '>= 18'} + resolution: + { integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw== } + engines: { node: ">= 18" } mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + resolution: + { integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== } mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== } + engines: { node: ">=10" } hasBin: true modify-values@1.0.1: - resolution: {integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==} - engines: {node: '>=0.10.0'} - - module-definition@6.0.0: - resolution: {integrity: sha512-sEGP5nKEXU7fGSZUML/coJbrO+yQtxcppDAYWRE9ovWsTbFoUHB2qDUx564WUzDaBHXsD46JBbIK5WVTwCyu3w==} - engines: {node: '>=18'} - hasBin: true - - module-lookup-amd@9.0.2: - resolution: {integrity: sha512-p7PzSVEWiW9fHRX9oM+V4aV5B2nCVddVNv4DZ/JB6t9GsXY4E+ZVhPpnwUX7bbJyGeeVZqhS8q/JZ/H77IqPFA==} - engines: {node: '>=18'} - hasBin: true + resolution: + { integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== } + engines: { node: ">=0.10.0" } montag@1.2.1: - resolution: {integrity: sha512-YFuR6t5KhDlmAnUmVSxGzNcpWqSDqxbd95tvnEnn7X9yFv7g3kDFoRjwyGayVdF/NNoWk7YW7IxUjilnGnoC5Q==} + resolution: + { integrity: sha512-YFuR6t5KhDlmAnUmVSxGzNcpWqSDqxbd95tvnEnn7X9yFv7g3kDFoRjwyGayVdF/NNoWk7YW7IxUjilnGnoC5Q== } mrmime@2.0.0: - resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw== } + engines: { node: ">=10" } ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + resolution: + { integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== } ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + resolution: + { integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== } multimatch@5.0.0: - resolution: {integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== } + engines: { node: ">=10" } mute-stream@2.0.0: - resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA== } + engines: { node: ^18.17.0 || >=20.5.0 } nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + resolution: + { integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== } + engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } hasBin: true napi-build-utils@2.0.0: - resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} + resolution: + { integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA== } natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + resolution: + { integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== } negotiator@1.0.0: - resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} - engines: {node: '>= 0.6'} + resolution: + { integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg== } + engines: { node: ">= 0.6" } neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + resolution: + { integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== } no-case@3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + resolution: + { integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== } node-abi@3.74.0: - resolution: {integrity: sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w== } + engines: { node: ">=10" } node-addon-api@7.1.1: - resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + resolution: + { integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ== } node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} + resolution: + { integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== } + engines: { node: 4.x || >=6.0.0 } peerDependencies: encoding: ^0.1.0 peerDependenciesMeta: @@ -7132,1265 +7559,1483 @@ packages: optional: true node-gyp@11.5.0: - resolution: {integrity: sha512-ra7Kvlhxn5V9Slyus0ygMa2h+UqExPqUIkfk7Pc8QTLT956JLSy51uWFwHtIYy0vI8cB4BDhc/S03+880My/LQ==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-ra7Kvlhxn5V9Slyus0ygMa2h+UqExPqUIkfk7Pc8QTLT956JLSy51uWFwHtIYy0vI8cB4BDhc/S03+880My/LQ== } + engines: { node: ^18.17.0 || >=20.5.0 } hasBin: true node-machine-id@1.1.12: - resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} + resolution: + { integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ== } node-releases@2.0.27: - resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} - - node-source-walk@7.0.0: - resolution: {integrity: sha512-1uiY543L+N7Og4yswvlm5NCKgPKDEXd9AUR9Jh3gen6oOeBsesr6LqhXom1er3eRzSUcVRWXzhv8tSNrIfGHKw==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA== } nodemon@3.1.11: - resolution: {integrity: sha512-is96t8F/1//UHAjNPHpbsNY46ELPpftGUoSVNXwUfMk/qdjSylYrWSu1XavVTBOn526kFiOR733ATgNBCQyH0g==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-is96t8F/1//UHAjNPHpbsNY46ELPpftGUoSVNXwUfMk/qdjSylYrWSu1XavVTBOn526kFiOR733ATgNBCQyH0g== } + engines: { node: ">=10" } hasBin: true noms@0.0.0: - resolution: {integrity: sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==} + resolution: + { integrity: sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow== } nopt@1.0.10: - resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} + resolution: + { integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg== } hasBin: true nopt@8.1.0: - resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A== } + engines: { node: ^18.17.0 || >=20.5.0 } hasBin: true normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + resolution: + { integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== } normalize-package-data@3.0.3: - resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== } + engines: { node: ">=10" } normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== } + engines: { node: ">=0.10.0" } normalize-url@6.1.0: - resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== } + engines: { node: ">=10" } npm-bundled@4.0.0: - resolution: {integrity: sha512-IxaQZDMsqfQ2Lz37VvyyEtKLe8FsRZuysmedy/N06TU1RyVppYKXrO4xIhR0F+7ubIBox6Q7nir6fQI3ej39iA==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-IxaQZDMsqfQ2Lz37VvyyEtKLe8FsRZuysmedy/N06TU1RyVppYKXrO4xIhR0F+7ubIBox6Q7nir6fQI3ej39iA== } + engines: { node: ^18.17.0 || >=20.5.0 } npm-bundled@5.0.0: - resolution: {integrity: sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw== } + engines: { node: ^20.17.0 || >=22.9.0 } npm-install-checks@7.1.2: - resolution: {integrity: sha512-z9HJBCYw9Zr8BqXcllKIs5nI+QggAImbBdHphOzVYrz2CB4iQ6FzWyKmlqDZua+51nAu7FcemlbTc9VgQN5XDQ==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-z9HJBCYw9Zr8BqXcllKIs5nI+QggAImbBdHphOzVYrz2CB4iQ6FzWyKmlqDZua+51nAu7FcemlbTc9VgQN5XDQ== } + engines: { node: ^18.17.0 || >=20.5.0 } npm-install-checks@8.0.0: - resolution: {integrity: sha512-ScAUdMpyzkbpxoNekQ3tNRdFI8SJ86wgKZSQZdUxT+bj0wVFpsEMWnkXP0twVe1gJyNF5apBWDJhhIbgrIViRA==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-ScAUdMpyzkbpxoNekQ3tNRdFI8SJ86wgKZSQZdUxT+bj0wVFpsEMWnkXP0twVe1gJyNF5apBWDJhhIbgrIViRA== } + engines: { node: ^20.17.0 || >=22.9.0 } npm-normalize-package-bin@4.0.0: - resolution: {integrity: sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w== } + engines: { node: ^18.17.0 || >=20.5.0 } npm-normalize-package-bin@5.0.0: - resolution: {integrity: sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag== } + engines: { node: ^20.17.0 || >=22.9.0 } npm-package-arg@12.0.2: - resolution: {integrity: sha512-f1NpFjNI9O4VbKMOlA5QoBq/vSQPORHcTZ2feJpFkTHJ9eQkdlmZEKSjcAhxTGInC7RlEyScT9ui67NaOsjFWA==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-f1NpFjNI9O4VbKMOlA5QoBq/vSQPORHcTZ2feJpFkTHJ9eQkdlmZEKSjcAhxTGInC7RlEyScT9ui67NaOsjFWA== } + engines: { node: ^18.17.0 || >=20.5.0 } npm-package-arg@13.0.1: - resolution: {integrity: sha512-6zqls5xFvJbgFjB1B2U6yITtyGBjDBORB7suI4zA4T/sZ1OmkMFlaQSNB/4K0LtXNA1t4OprAFxPisadK5O2ag==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-6zqls5xFvJbgFjB1B2U6yITtyGBjDBORB7suI4zA4T/sZ1OmkMFlaQSNB/4K0LtXNA1t4OprAFxPisadK5O2ag== } + engines: { node: ^20.17.0 || >=22.9.0 } npm-packlist@10.0.3: - resolution: {integrity: sha512-zPukTwJMOu5X5uvm0fztwS5Zxyvmk38H/LfidkOMt3gbZVCyro2cD/ETzwzVPcWZA3JOyPznfUN/nkyFiyUbxg==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-zPukTwJMOu5X5uvm0fztwS5Zxyvmk38H/LfidkOMt3gbZVCyro2cD/ETzwzVPcWZA3JOyPznfUN/nkyFiyUbxg== } + engines: { node: ^20.17.0 || >=22.9.0 } npm-pick-manifest@10.0.0: - resolution: {integrity: sha512-r4fFa4FqYY8xaM7fHecQ9Z2nE9hgNfJR+EmoKv0+chvzWkBcORX3r0FpTByP+CbOVJDladMXnPQGVN8PBLGuTQ==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-r4fFa4FqYY8xaM7fHecQ9Z2nE9hgNfJR+EmoKv0+chvzWkBcORX3r0FpTByP+CbOVJDladMXnPQGVN8PBLGuTQ== } + engines: { node: ^18.17.0 || >=20.5.0 } npm-pick-manifest@11.0.3: - resolution: {integrity: sha512-buzyCfeoGY/PxKqmBqn1IUJrZnUi1VVJTdSSRPGI60tJdUhUoSQFhs0zycJokDdOznQentgrpf8LayEHyyYlqQ==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-buzyCfeoGY/PxKqmBqn1IUJrZnUi1VVJTdSSRPGI60tJdUhUoSQFhs0zycJokDdOznQentgrpf8LayEHyyYlqQ== } + engines: { node: ^20.17.0 || >=22.9.0 } npm-registry-fetch@19.1.0: - resolution: {integrity: sha512-xyZLfs7TxPu/WKjHUs0jZOPinzBAI32kEUel6za0vH+JUTnFZ5zbHI1ZoGZRDm6oMjADtrli6FxtMlk/5ABPNw==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-xyZLfs7TxPu/WKjHUs0jZOPinzBAI32kEUel6za0vH+JUTnFZ5zbHI1ZoGZRDm6oMjADtrli6FxtMlk/5ABPNw== } + engines: { node: ^20.17.0 || >=22.9.0 } npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== } + engines: { node: ">=8" } nx-cloud@19.1.0: - resolution: {integrity: sha512-f24vd5/57/MFSXNMfkerdDiK0EvScGOKO71iOWgJNgI1xVweDRmOA/EfjnPMRd5m+pnoPs/4A7DzuwSW0jZVyw==} + resolution: + { integrity: sha512-f24vd5/57/MFSXNMfkerdDiK0EvScGOKO71iOWgJNgI1xVweDRmOA/EfjnPMRd5m+pnoPs/4A7DzuwSW0jZVyw== } hasBin: true - nx@22.4.1: - resolution: {integrity: sha512-SSzG5sAKsvQL4Heva65/Y1ABs3HqrzIJhneba9+5qBVkhw7T2mcMjZB421UDR9akTnDB3uunDnf3NKMKpTcB0A==} + nx@22.4.4: + resolution: + { integrity: sha512-+eIIuRKltZ1hWcaB691aEdsRl4FRJ9qaaIZ2J6U2i4maRbBde8HJZ9m/EJt3i3IrYhdLpnl7QcXyTHzP3eW2jw== } hasBin: true peerDependencies: - '@swc-node/register': ^1.8.0 - '@swc/core': ^1.3.85 + "@swc-node/register": ^1.8.0 + "@swc/core": ^1.3.85 peerDependenciesMeta: - '@swc-node/register': + "@swc-node/register": optional: true - '@swc/core': + "@swc/core": optional: true object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== } + engines: { node: ">=0.10.0" } object-deep-merge@2.0.0: - resolution: {integrity: sha512-3DC3UMpeffLTHiuXSy/UG4NOIYTLlY9u3V82+djSCLYClWobZiS4ivYzpIUWrRY/nfsJ8cWsKyG3QfyLePmhvg==} + resolution: + { integrity: sha512-3DC3UMpeffLTHiuXSy/UG4NOIYTLlY9u3V82+djSCLYClWobZiS4ivYzpIUWrRY/nfsJ8cWsKyG3QfyLePmhvg== } object-inspect@1.13.4: - resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== } + engines: { node: ">= 0.4" } object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== } + engines: { node: ">= 0.4" } object.assign@4.1.7: - resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== } + engines: { node: ">= 0.4" } object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== } + engines: { node: ">= 0.4" } object.groupby@1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== } + engines: { node: ">= 0.4" } object.values@1.2.1: - resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA== } + engines: { node: ">= 0.4" } obug@2.1.1: - resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + resolution: + { integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ== } on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} + resolution: + { integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== } + engines: { node: ">= 0.8" } once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + resolution: + { integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== } one-time@1.0.0: - resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} + resolution: + { integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== } onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== } + engines: { node: ">=6" } open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} + resolution: + { integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== } + engines: { node: ">=12" } opener@1.5.2: - resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + resolution: + { integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== } hasBin: true optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} + resolution: + { integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== } + engines: { node: ">= 0.8.0" } opts@2.0.2: - resolution: {integrity: sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==} + resolution: + { integrity: sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg== } ora@5.3.0: - resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} - engines: {node: '>=10'} - - ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g== } + engines: { node: ">=10" } own-keys@1.0.1: - resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg== } + engines: { node: ">= 0.4" } p-cancelable@2.1.1: - resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== } + engines: { node: ">=8" } p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== } + engines: { node: ">=4" } p-limit@1.3.0: - resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== } + engines: { node: ">=4" } p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== } + engines: { node: ">=6" } p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== } + engines: { node: ">=10" } p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + resolution: + { integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } p-locate@2.0.0: - resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== } + engines: { node: ">=4" } p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== } + engines: { node: ">=8" } p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== } + engines: { node: ">=10" } p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + resolution: + { integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } p-map-series@2.1.0: - resolution: {integrity: sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== } + engines: { node: ">=8" } p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== } + engines: { node: ">=10" } p-map@7.0.4: - resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ== } + engines: { node: ">=18" } p-pipe@3.1.0: - resolution: {integrity: sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw== } + engines: { node: ">=8" } p-queue@6.6.2: - resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== } + engines: { node: ">=8" } p-reduce@2.1.0: - resolution: {integrity: sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== } + engines: { node: ">=8" } p-timeout@3.2.0: - resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== } + engines: { node: ">=8" } p-try@1.0.0: - resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== } + engines: { node: ">=4" } p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== } + engines: { node: ">=6" } p-waterfall@2.1.1: - resolution: {integrity: sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw== } + engines: { node: ">=8" } package-json-from-dist@1.0.0: - resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + resolution: + { integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw== } package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + resolution: + { integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== } pacote@21.0.1: - resolution: {integrity: sha512-LHGIUQUrcDIJUej53KJz1BPvUuHrItrR2yrnN0Kl9657cJ0ZT6QJHk9wWPBnQZhYT5KLyZWrk9jaYc2aKDu4yw==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-LHGIUQUrcDIJUej53KJz1BPvUuHrItrR2yrnN0Kl9657cJ0ZT6QJHk9wWPBnQZhYT5KLyZWrk9jaYc2aKDu4yw== } + engines: { node: ^20.17.0 || >=22.9.0 } hasBin: true pacote@21.0.4: - resolution: {integrity: sha512-RplP/pDW0NNNDh3pnaoIWYPvNenS7UqMbXyvMqJczosiFWTeGGwJC2NQBLqKf4rGLFfwCOnntw1aEp9Jiqm1MA==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-RplP/pDW0NNNDh3pnaoIWYPvNenS7UqMbXyvMqJczosiFWTeGGwJC2NQBLqKf4rGLFfwCOnntw1aEp9Jiqm1MA== } + engines: { node: ^20.17.0 || >=22.9.0 } hasBin: true param-case@3.0.4: - resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + resolution: + { integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== } parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== } + engines: { node: ">=6" } parse-conflict-json@4.0.0: - resolution: {integrity: sha512-37CN2VtcuvKgHUs8+0b1uJeEsbGn61GRHz469C94P5xiOoqpDYJYwjg4RY9Vmz39WyZAVkR5++nbJwLMIgOCnQ==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-37CN2VtcuvKgHUs8+0b1uJeEsbGn61GRHz469C94P5xiOoqpDYJYwjg4RY9Vmz39WyZAVkR5++nbJwLMIgOCnQ== } + engines: { node: ^18.17.0 || >=20.5.0 } parse-imports-exports@0.2.4: - resolution: {integrity: sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==} + resolution: + { integrity: sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ== } parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== } + engines: { node: ">=4" } parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - - parse-ms@2.1.0: - resolution: {integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== } + engines: { node: ">=8" } parse-path@7.0.0: - resolution: {integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==} + resolution: + { integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog== } parse-statements@1.0.11: - resolution: {integrity: sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==} + resolution: + { integrity: sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA== } parse-url@8.1.0: - resolution: {integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==} + resolution: + { integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w== } parse5@7.2.1: - resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} + resolution: + { integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ== } parse5@8.0.0: - resolution: {integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==} + resolution: + { integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA== } parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} + resolution: + { integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== } + engines: { node: ">= 0.8" } pascal-case@3.1.2: - resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + resolution: + { integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== } path-case@3.0.4: - resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} + resolution: + { integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg== } path-equal@1.2.5: - resolution: {integrity: sha512-i73IctDr3F2W+bsOWDyyVm/lqsXO47aY9nsFZUjTT/aljSbkxHxxCoyZ9UUrM8jK0JVod+An+rl48RCsvWM+9g==} + resolution: + { integrity: sha512-i73IctDr3F2W+bsOWDyyVm/lqsXO47aY9nsFZUjTT/aljSbkxHxxCoyZ9UUrM8jK0JVod+An+rl48RCsvWM+9g== } path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== } + engines: { node: ">=4" } path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + resolution: + { integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== } + engines: { node: ">=8" } path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== } + engines: { node: ">=0.10.0" } path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== } + engines: { node: ">=8" } path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + resolution: + { integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== } path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} + resolution: + { integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== } + engines: { node: ">=16 || 14 >=14.18" } path-scurry@2.0.0: - resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} - engines: {node: 20 || >=22} + resolution: + { integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg== } + engines: { node: 20 || >=22 } path-scurry@2.0.1: - resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} - engines: {node: 20 || >=22} + resolution: + { integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA== } + engines: { node: 20 || >=22 } path-to-regexp@8.3.0: - resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==} + resolution: + { integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA== } path-type@3.0.0: - resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== } + engines: { node: ">=4" } path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== } + engines: { node: ">=8" } pathe@2.0.3: - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + resolution: + { integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w== } pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + resolution: + { integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== } picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + resolution: + { integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== } picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} + resolution: + { integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== } + engines: { node: ">=8.6" } picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} - engines: {node: '>=12'} + resolution: + { integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== } + engines: { node: ">=12" } picomodal@3.0.0: - resolution: {integrity: sha512-FoR3TDfuLlqUvcEeK5ifpKSVVns6B4BQvc8SDF6THVMuadya6LLtji0QgUDSStw0ZR2J7I6UGi5V2V23rnPWTw==} + resolution: + { integrity: sha512-FoR3TDfuLlqUvcEeK5ifpKSVVns6B4BQvc8SDF6THVMuadya6LLtji0QgUDSStw0ZR2J7I6UGi5V2V23rnPWTw== } pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== } + engines: { node: ">=0.10.0" } pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== } + engines: { node: ">=4" } pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== } + engines: { node: ">=6" } pify@5.0.0: - resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== } + engines: { node: ">=10" } pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - - pluralize@8.0.0: - resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== } + engines: { node: ">=8" } possible-typed-array-names@1.1.0: - resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg== } + engines: { node: ">= 0.4" } postcss-selector-parser@7.1.1: - resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} - engines: {node: '>=4'} - - postcss-values-parser@6.0.2: - resolution: {integrity: sha512-YLJpK0N1brcNJrs9WatuJFtHaV9q5aAOj+S4DI5S7jgHlRfm0PIbDCAFRYMQD5SHq7Fy6xsDhyutgS0QOAs0qw==} - engines: {node: '>=10'} - peerDependencies: - postcss: ^8.2.9 + resolution: + { integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg== } + engines: { node: ">=4" } postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} - engines: {node: ^10 || ^12 || >=14} + resolution: + { integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== } + engines: { node: ^10 || ^12 || >=14 } prebuild-install@7.1.3: - resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} - engines: {node: '>=10'} - hasBin: true - - precinct@12.1.2: - resolution: {integrity: sha512-x2qVN3oSOp3D05ihCd8XdkIPuEQsyte7PSxzLqiRgktu79S5Dr1I75/S+zAup8/0cwjoiJTQztE9h0/sWp9bJQ==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug== } + engines: { node: ">=10" } hasBin: true prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} + resolution: + { integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== } + engines: { node: ">= 0.8.0" } prettier-linter-helpers@1.0.1: - resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} - engines: {node: '>=6.0.0'} + resolution: + { integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg== } + engines: { node: ">=6.0.0" } prettier-plugin-multiline-arrays@4.1.3: - resolution: {integrity: sha512-V1U2EtLCvaoid1lDPReN4Gxw888dGmedJsz61Wfw36z/oG4NIcm3i13gdiUAKRvFKbf+iPsYO1a076tlksD/Tw==} - engines: {node: '>=20'} + resolution: + { integrity: sha512-V1U2EtLCvaoid1lDPReN4Gxw888dGmedJsz61Wfw36z/oG4NIcm3i13gdiUAKRvFKbf+iPsYO1a076tlksD/Tw== } + engines: { node: ">=20" } peerDependencies: - prettier: '>=3.0.0 <4.0.0' + prettier: ">=3.0.0 <4.0.0" prettier@3.8.1: - resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} - engines: {node: '>=14'} + resolution: + { integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg== } + engines: { node: ">=14" } hasBin: true pretty-format@30.2.0: - resolution: {integrity: sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - pretty-ms@7.0.1: - resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA== } + engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } proc-log@5.0.0: - resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ== } + engines: { node: ^18.17.0 || >=20.5.0 } proc-log@6.1.0: - resolution: {integrity: sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ== } + engines: { node: ^20.17.0 || >=22.9.0 } process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + resolution: + { integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== } proggy@3.0.0: - resolution: {integrity: sha512-QE8RApCM3IaRRxVzxrjbgNMpQEX6Wu0p0KBeoSiSEw5/bsGwZHsshF4LCxH2jp/r6BU+bqA3LrMDEYNfJnpD8Q==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-QE8RApCM3IaRRxVzxrjbgNMpQEX6Wu0p0KBeoSiSEw5/bsGwZHsshF4LCxH2jp/r6BU+bqA3LrMDEYNfJnpD8Q== } + engines: { node: ^18.17.0 || >=20.5.0 } progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} + resolution: + { integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== } + engines: { node: ">=0.4.0" } promise-all-reject-late@1.0.1: - resolution: {integrity: sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==} + resolution: + { integrity: sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw== } promise-call-limit@3.0.1: - resolution: {integrity: sha512-utl+0x8gIDasV5X+PI5qWEPqH6fJS0pFtQ/4gZ95xfEFb/89dmh+/b895TbFDBLiafBvxD/PGTKfvxl4kH/pQg==} + resolution: + { integrity: sha512-utl+0x8gIDasV5X+PI5qWEPqH6fJS0pFtQ/4gZ95xfEFb/89dmh+/b895TbFDBLiafBvxD/PGTKfvxl4kH/pQg== } promise-retry@2.0.1: - resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== } + engines: { node: ">=10" } promise@7.3.1: - resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} + resolution: + { integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== } prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} + resolution: + { integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== } + engines: { node: ">= 6" } promzard@2.0.0: - resolution: {integrity: sha512-Ncd0vyS2eXGOjchIRg6PVCYKetJYrW1BSbbIo+bKdig61TB6nH2RQNF2uP+qMpsI73L/jURLWojcw8JNIKZ3gg==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-Ncd0vyS2eXGOjchIRg6PVCYKetJYrW1BSbbIo+bKdig61TB6nH2RQNF2uP+qMpsI73L/jURLWojcw8JNIKZ3gg== } + engines: { node: ^18.17.0 || >=20.5.0 } protocols@2.0.1: - resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} + resolution: + { integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q== } proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} + resolution: + { integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== } + engines: { node: ">= 0.10" } proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + resolution: + { integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== } proxy-vir@2.0.1: - resolution: {integrity: sha512-hjy5mWzHZhgRGh0f90f0Bz3VrGUe0T+AlhwnETakzRdvaN9RtPYLQG1+ZuEzSDK95FAhPYd26nEi1xVrXqvBwg==} - engines: {node: '>=22'} + resolution: + { integrity: sha512-hjy5mWzHZhgRGh0f90f0Bz3VrGUe0T+AlhwnETakzRdvaN9RtPYLQG1+ZuEzSDK95FAhPYd26nEi1xVrXqvBwg== } + engines: { node: ">=22" } pstree.remy@1.1.8: - resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} + resolution: + { integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== } pug-attrs@3.0.0: - resolution: {integrity: sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==} + resolution: + { integrity: sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA== } pug-code-gen@3.0.3: - resolution: {integrity: sha512-cYQg0JW0w32Ux+XTeZnBEeuWrAY7/HNE6TWnhiHGnnRYlCgyAUPoyh9KzCMa9WhcJlJ1AtQqpEYHc+vbCzA+Aw==} + resolution: + { integrity: sha512-cYQg0JW0w32Ux+XTeZnBEeuWrAY7/HNE6TWnhiHGnnRYlCgyAUPoyh9KzCMa9WhcJlJ1AtQqpEYHc+vbCzA+Aw== } pug-error@2.1.0: - resolution: {integrity: sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg==} + resolution: + { integrity: sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg== } pug-filters@4.0.0: - resolution: {integrity: sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==} + resolution: + { integrity: sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A== } pug-lexer@5.0.1: - resolution: {integrity: sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==} + resolution: + { integrity: sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w== } pug-linker@4.0.0: - resolution: {integrity: sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==} + resolution: + { integrity: sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw== } pug-load@3.0.0: - resolution: {integrity: sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==} + resolution: + { integrity: sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ== } pug-parser@6.0.0: - resolution: {integrity: sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==} + resolution: + { integrity: sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw== } pug-runtime@3.0.1: - resolution: {integrity: sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==} + resolution: + { integrity: sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg== } pug-strip-comments@2.0.0: - resolution: {integrity: sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==} + resolution: + { integrity: sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ== } pug-walk@2.0.0: - resolution: {integrity: sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==} + resolution: + { integrity: sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ== } pug@3.0.3: - resolution: {integrity: sha512-uBi6kmc9f3SZ3PXxqcHiUZLmIXgfgWooKWXcwSGwQd2Zi5Rb0bT14+8CJjJgI8AB+nndLaNgHGrcc6bPIB665g==} + resolution: + { integrity: sha512-uBi6kmc9f3SZ3PXxqcHiUZLmIXgfgWooKWXcwSGwQd2Zi5Rb0bT14+8CJjJgI8AB+nndLaNgHGrcc6bPIB665g== } pump@3.0.3: - resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} + resolution: + { integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA== } punycode.js@2.3.1: - resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA== } + engines: { node: ">=6" } punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== } + engines: { node: ">=6" } qs@6.14.0: - resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} - engines: {node: '>=0.6'} + resolution: + { integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w== } + engines: { node: ">=0.6" } queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + resolution: + { integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== } quick-lru@4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== } + engines: { node: ">=8" } quick-lru@5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} - - quote-unquote@1.0.0: - resolution: {integrity: sha512-twwRO/ilhlG/FIgYeKGFqyHhoEhqgnKVkcmqMKi2r524gz3ZbDTcyFt38E9xjJI2vT+KbRNHVbnJ/e0I25Azwg==} + resolution: + { integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== } + engines: { node: ">=10" } randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + resolution: + { integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== } range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} + resolution: + { integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== } + engines: { node: ">= 0.6" } raw-body@3.0.2: - resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} - engines: {node: '>= 0.10'} + resolution: + { integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA== } + engines: { node: ">= 0.10" } rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + resolution: + { integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== } hasBin: true react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + resolution: + { integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== } read-cmd-shim@4.0.0: - resolution: {integrity: sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { integrity: sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q== } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } read-cmd-shim@5.0.0: - resolution: {integrity: sha512-SEbJV7tohp3DAAILbEMPXavBjAnMN0tVnh4+9G8ihV4Pq3HYF9h8QNez9zkJ1ILkv9G2BjdzwctznGZXgu/HGw==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-SEbJV7tohp3DAAILbEMPXavBjAnMN0tVnh4+9G8ihV4Pq3HYF9h8QNez9zkJ1ILkv9G2BjdzwctznGZXgu/HGw== } + engines: { node: ^18.17.0 || >=20.5.0 } read-pkg-up@3.0.0: - resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw== } + engines: { node: ">=4" } read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== } + engines: { node: ">=8" } read-pkg@3.0.0: - resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== } + engines: { node: ">=4" } read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== } + engines: { node: ">=8" } read@4.1.0: - resolution: {integrity: sha512-uRfX6K+f+R8OOrYScaM3ixPY4erg69f8DN6pgTvMcA9iRc8iDhwrA4m3Yu8YYKsXJgVvum+m8PkRboZwwuLzYA==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-uRfX6K+f+R8OOrYScaM3ixPY4erg69f8DN6pgTvMcA9iRc8iDhwrA4m3Yu8YYKsXJgVvum+m8PkRboZwwuLzYA== } + engines: { node: ^18.17.0 || >=20.5.0 } readable-stream@1.0.34: - resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} + resolution: + { integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== } readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + resolution: + { integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== } readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} + resolution: + { integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== } + engines: { node: ">= 6" } readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} + resolution: + { integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== } + engines: { node: ">=8.10.0" } readdirp@4.1.2: - resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} - engines: {node: '>= 14.18.0'} + resolution: + { integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg== } + engines: { node: ">= 14.18.0" } readjson@2.2.2: - resolution: {integrity: sha512-PdeC9tsmLWBiL8vMhJvocq+OezQ3HhsH2HrN7YkhfYcTjQSa/iraB15A7Qvt7Xpr0Yd2rDNt6GbFwVQDg3HcAw==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-PdeC9tsmLWBiL8vMhJvocq+OezQ3HhsH2HrN7YkhfYcTjQSa/iraB15A7Qvt7Xpr0Yd2rDNt6GbFwVQDg3HcAw== } + engines: { node: ">=10" } rechoir@0.8.0: - resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} - engines: {node: '>= 10.13.0'} + resolution: + { integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== } + engines: { node: ">= 10.13.0" } redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== } + engines: { node: ">=8" } reflect.getprototypeof@1.0.10: - resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} - engines: {node: '>= 0.4'} - - regenerate-unicode-properties@10.2.0: - resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} - engines: {node: '>=4'} - - regenerate-unicode-properties@10.2.2: - resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} - engines: {node: '>=4'} - - regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - - regexp.prototype.flags@1.5.4: - resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} - engines: {node: '>= 0.4'} - - regexpu-core@6.2.0: - resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} - engines: {node: '>=4'} - - regexpu-core@6.4.0: - resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} - engines: {node: '>=4'} - - regjsgen@0.8.0: - resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + resolution: + { integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw== } + engines: { node: ">= 0.4" } - regjsparser@0.12.0: - resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} + regexp-tree@0.1.27: + resolution: + { integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA== } hasBin: true - regjsparser@0.13.0: - resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} - hasBin: true + regexp.prototype.flags@1.5.4: + resolution: + { integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA== } + engines: { node: ">= 0.4" } relateurl@0.2.7: - resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} - engines: {node: '>= 0.10'} + resolution: + { integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== } + engines: { node: ">= 0.10" } require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== } + engines: { node: ">=0.10.0" } require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - - requirejs-config-file@4.0.0: - resolution: {integrity: sha512-jnIre8cbWOyvr8a5F2KuqBnY+SDA4NXr/hzEZJG79Mxm2WiFQz2dzhC8ibtPJS7zkmBEl1mxSwp5HhC1W4qpxw==} - engines: {node: '>=10.13.0'} - - requirejs@2.3.7: - resolution: {integrity: sha512-DouTG8T1WanGok6Qjg2SXuCMzszOo0eHeH9hDZ5Y4x8Je+9JB38HdTLT4/VA8OaUhBa0JPVHJ0pyBkM1z+pDsw==} - engines: {node: '>=0.4.0'} - hasBin: true + resolution: + { integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== } + engines: { node: ">=0.10.0" } reserved-identifiers@1.2.0: - resolution: {integrity: sha512-yE7KUfFvaBFzGPs5H3Ops1RevfUEsDc5Iz65rOwWg4lE8HJSYtle77uul3+573457oHvBKuHYDl/xqUkKpEEdw==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-yE7KUfFvaBFzGPs5H3Ops1RevfUEsDc5Iz65rOwWg4lE8HJSYtle77uul3+573457oHvBKuHYDl/xqUkKpEEdw== } + engines: { node: ">=18" } resolve-alpn@1.2.1: - resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + resolution: + { integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== } resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - - resolve-dependency-path@4.0.0: - resolution: {integrity: sha512-hlY1SybBGm5aYN3PC4rp15MzsJLM1w+MEA/4KU3UBPfz4S0lL3FL6mgv7JgaA8a+ZTeEQAiF1a1BuN2nkqiIlg==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== } + engines: { node: ">=8" } resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== } + engines: { node: ">=4" } resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== } + engines: { node: ">=8" } resolve.exports@2.0.3: - resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A== } + engines: { node: ">=10" } resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== } + engines: { node: ">= 0.4" } hasBin: true resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + resolution: + { integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== } hasBin: true responselike@2.0.1: - resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + resolution: + { integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== } restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== } + engines: { node: ">=8" } retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} + resolution: + { integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== } + engines: { node: ">= 4" } reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + resolution: + { integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== } + engines: { iojs: ">=1.0.0", node: ">=0.10.0" } rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + resolution: + { integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== } deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true rimraf@4.4.1: - resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} - engines: {node: '>=14'} + resolution: + { integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og== } + engines: { node: ">=14" } hasBin: true rimraf@6.1.2: - resolution: {integrity: sha512-cFCkPslJv7BAXJsYlK1dZsbP8/ZNLkCAQ0bi1hf5EKX2QHegmDFEFA6QhuYJlk7UDdc+02JjO80YSOrWPpw06g==} - engines: {node: 20 || >=22} + resolution: + { integrity: sha512-cFCkPslJv7BAXJsYlK1dZsbP8/ZNLkCAQ0bi1hf5EKX2QHegmDFEFA6QhuYJlk7UDdc+02JjO80YSOrWPpw06g== } + engines: { node: 20 || >=22 } hasBin: true roarr@2.15.4: - resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} - engines: {node: '>=8.0'} + resolution: + { integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A== } + engines: { node: ">=8.0" } rollup@4.55.1: - resolution: {integrity: sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} + resolution: + { integrity: sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A== } + engines: { node: ">=18.0.0", npm: ">=8.0.0" } hasBin: true router@2.2.0: - resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} - engines: {node: '>= 18'} + resolution: + { integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ== } + engines: { node: ">= 18" } run-async@4.0.6: - resolution: {integrity: sha512-IoDlSLTs3Yq593mb3ZoKWKXMNu3UpObxhgA/Xuid5p4bbfi2jdY1Hj0m1K+0/tEuQTxIGMhQDqGjKb7RuxGpAQ==} - engines: {node: '>=0.12.0'} + resolution: + { integrity: sha512-IoDlSLTs3Yq593mb3ZoKWKXMNu3UpObxhgA/Xuid5p4bbfi2jdY1Hj0m1K+0/tEuQTxIGMhQDqGjKb7RuxGpAQ== } + engines: { node: ">=0.12.0" } run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + resolution: + { integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== } rxjs@7.8.2: - resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + resolution: + { integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA== } safe-array-concat@1.1.3: - resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} - engines: {node: '>=0.4'} + resolution: + { integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q== } + engines: { node: ">=0.4" } safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + resolution: + { integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== } safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + resolution: + { integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== } safe-push-apply@1.0.0: - resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA== } + engines: { node: ">= 0.4" } safe-regex-test@1.1.0: - resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== } + engines: { node: ">= 0.4" } + + safe-regex@2.1.1: + resolution: + { integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A== } safe-stable-stringify@2.5.0: - resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA== } + engines: { node: ">=10" } safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - sass-lookup@6.0.1: - resolution: {integrity: sha512-nl9Wxbj9RjEJA5SSV0hSDoU2zYGtE+ANaDS4OFUR7nYrquvBFvPKZZtQHe3lvnxCcylEDV00KUijjdMTUElcVQ==} - engines: {node: '>=18'} - hasBin: true + resolution: + { integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== } sass@1.97.3: - resolution: {integrity: sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==} - engines: {node: '>=14.0.0'} + resolution: + { integrity: sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg== } + engines: { node: ">=14.0.0" } hasBin: true sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + resolution: + { integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== } saxes@6.0.0: - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} - engines: {node: '>=v12.22.7'} + resolution: + { integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== } + engines: { node: ">=v12.22.7" } schema-utils@4.3.2: - resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==} - engines: {node: '>= 10.13.0'} + resolution: + { integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ== } + engines: { node: ">= 10.13.0" } schema-utils@4.3.3: - resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} - engines: {node: '>= 10.13.0'} + resolution: + { integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA== } + engines: { node: ">= 10.13.0" } semver-compare@1.0.0: - resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} + resolution: + { integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== } semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + resolution: + { integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== } hasBin: true semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + resolution: + { integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== } hasBin: true semver@7.7.2: - resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== } + engines: { node: ">=10" } hasBin: true semver@7.7.3: - resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== } + engines: { node: ">=10" } hasBin: true send@1.2.1: - resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} - engines: {node: '>= 18'} + resolution: + { integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ== } + engines: { node: ">= 18" } sentence-case@3.0.4: - resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} + resolution: + { integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg== } seq-logging@3.0.0: - resolution: {integrity: sha512-ys5QV0745vxBCWuZBPSkgoobuLoUMxTSz1g7ZclHqX1tXXKFLyRIIn8V89EPgDnfRiWfoSo4KSxy/E0MtOYYyw==} - engines: {node: '>=14.18'} + resolution: + { integrity: sha512-ys5QV0745vxBCWuZBPSkgoobuLoUMxTSz1g7ZclHqX1tXXKFLyRIIn8V89EPgDnfRiWfoSo4KSxy/E0MtOYYyw== } + engines: { node: ">=14.18" } serialize-error@7.0.1: - resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw== } + engines: { node: ">=10" } serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + resolution: + { integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== } serve-static@2.2.1: - resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} - engines: {node: '>= 18'} + resolution: + { integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw== } + engines: { node: ">= 18" } set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + resolution: + { integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== } set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== } + engines: { node: ">= 0.4" } set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== } + engines: { node: ">= 0.4" } set-proto@1.0.0: - resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw== } + engines: { node: ">= 0.4" } setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + resolution: + { integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== } shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== } + engines: { node: ">=8" } shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== } + engines: { node: ">=8" } shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== } + engines: { node: ">=8" } shell-quote@1.8.3: - resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw== } + engines: { node: ">= 0.4" } side-channel-list@1.0.0: - resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== } + engines: { node: ">= 0.4" } side-channel-map@1.0.1: - resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== } + engines: { node: ">= 0.4" } side-channel-weakmap@1.0.2: - resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== } + engines: { node: ">= 0.4" } side-channel@1.1.0: - resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== } + engines: { node: ">= 0.4" } siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + resolution: + { integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== } signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + resolution: + { integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== } signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} + resolution: + { integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== } + engines: { node: ">=14" } sigstore@4.1.0: - resolution: {integrity: sha512-/fUgUhYghuLzVT/gaJoeVehLCgZiUxPCPMcyVNY0lIf/cTCz58K/WTI7PefDarXxp9nUKpEwg1yyz3eSBMTtgA==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-/fUgUhYghuLzVT/gaJoeVehLCgZiUxPCPMcyVNY0lIf/cTCz58K/WTI7PefDarXxp9nUKpEwg1yyz3eSBMTtgA== } + engines: { node: ^20.17.0 || >=22.9.0 } simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + resolution: + { integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== } simple-get@4.0.1: - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + resolution: + { integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== } simple-update-notifier@2.0.0: - resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w== } + engines: { node: ">=10" } sirv@3.0.2: - resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g== } + engines: { node: ">=18" } sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + resolution: + { integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== } slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== } + engines: { node: ">=8" } smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + resolution: + { integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== } + engines: { node: ">= 6.0.0", npm: ">= 3.0.0" } snake-case@3.0.4: - resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + resolution: + { integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== } socks-proxy-agent@8.0.5: - resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} - engines: {node: '>= 14'} + resolution: + { integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw== } + engines: { node: ">= 14" } socks@2.8.7: - resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} - engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + resolution: + { integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A== } + engines: { node: ">= 10.0.0", npm: ">= 3.0.0" } sort-keys@2.0.0: - resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg== } + engines: { node: ">=4" } source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== } + engines: { node: ">=0.10.0" } source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + resolution: + { integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== } source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== } + engines: { node: ">=0.10.0" } source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} + resolution: + { integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== } + engines: { node: ">= 8" } spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + resolution: + { integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== } spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + resolution: + { integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== } spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + resolution: + { integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== } spdx-expression-parse@4.0.0: - resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} + resolution: + { integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ== } spdx-license-ids@3.0.13: - resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} + resolution: + { integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== } split2@3.2.2: - resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} + resolution: + { integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== } split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} + resolution: + { integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== } + engines: { node: ">= 10.x" } split@1.0.1: - resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==} + resolution: + { integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== } sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + resolution: + { integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== } sprintf-js@1.1.3: - resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + resolution: + { integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== } ssri@12.0.0: - resolution: {integrity: sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ== } + engines: { node: ^18.17.0 || >=20.5.0 } ssri@13.0.0: - resolution: {integrity: sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng== } + engines: { node: ^20.17.0 || >=22.9.0 } stack-trace@0.0.10: - resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} + resolution: + { integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== } stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + resolution: + { integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== } stats.ts@1.1.0: - resolution: {integrity: sha512-mokWb6xGU0elmDlUT6Y5E4zsUs/Enlq5fpyE7pfffpJg9Lg83GlL7B9zHEPA0eDvDC3Ko0ZZ50cjIN8yYJRPoQ==} + resolution: + { integrity: sha512-mokWb6xGU0elmDlUT6Y5E4zsUs/Enlq5fpyE7pfffpJg9Lg83GlL7B9zHEPA0eDvDC3Ko0ZZ50cjIN8yYJRPoQ== } statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} + resolution: + { integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== } + engines: { node: ">= 0.8" } statuses@2.0.2: - resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} - engines: {node: '>= 0.8'} + resolution: + { integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw== } + engines: { node: ">= 0.8" } std-env@3.10.0: - resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + resolution: + { integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg== } stop-iteration-iterator@1.1.0: - resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} - engines: {node: '>= 0.4'} - - stream-to-array@2.3.0: - resolution: {integrity: sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==} + resolution: + { integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ== } + engines: { node: ">= 0.4" } string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== } + engines: { node: ">=8" } string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} + resolution: + { integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== } + engines: { node: ">=12" } string-width@7.2.0: - resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ== } + engines: { node: ">=18" } string.prototype.trim@1.2.10: - resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA== } + engines: { node: ">= 0.4" } string.prototype.trimend@1.0.9: - resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ== } + engines: { node: ">= 0.4" } string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== } + engines: { node: ">= 0.4" } string_decoder@0.10.31: - resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} + resolution: + { integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== } string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + resolution: + { integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== } string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - - stringify-object@3.3.0: - resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== } strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== } + engines: { node: ">=8" } strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} + resolution: + { integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== } + engines: { node: ">=12" } strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== } + engines: { node: ">=4" } strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== } + engines: { node: ">=8" } strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== } + engines: { node: ">=6" } strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== } + engines: { node: ">=8" } strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== } + engines: { node: ">=0.10.0" } strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== } + engines: { node: ">=8" } strip-outer@1.0.1: - resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} - engines: {node: '>=0.10.0'} - - stylus-lookup@6.0.0: - resolution: {integrity: sha512-RaWKxAvPnIXrdby+UWCr1WRfa+lrPMSJPySte4Q6a+rWyjeJyFOLJxr5GrAVfcMCsfVlCuzTAJ/ysYT8p8do7Q==} - engines: {node: '>=18'} - hasBin: true + resolution: + { integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg== } + engines: { node: ">=0.10.0" } stylus@0.64.0: - resolution: {integrity: sha512-ZIdT8eUv8tegmqy1tTIdJv9We2DumkNZFdCF5mz/Kpq3OcTaxSuCAYZge6HKK2CmNC02G1eJig2RV7XTw5hQrA==} - engines: {node: '>=16'} + resolution: + { integrity: sha512-ZIdT8eUv8tegmqy1tTIdJv9We2DumkNZFdCF5mz/Kpq3OcTaxSuCAYZge6HKK2CmNC02G1eJig2RV7XTw5hQrA== } + engines: { node: ">=16" } hasBin: true sumchecker@3.0.1: - resolution: {integrity: sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==} - engines: {node: '>= 8.0'} + resolution: + { integrity: sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg== } + engines: { node: ">= 8.0" } supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== } + engines: { node: ">=4" } supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== } + engines: { node: ">=8" } supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== } + engines: { node: ">=10" } supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== } + engines: { node: ">= 0.4" } + + swc-loader@0.2.7: + resolution: + { integrity: sha512-nwYWw3Fh9ame3Rtm7StS9SBLpHRRnYcK7bnpF3UKZmesAK0gw2/ADvlURFAINmPvKtDLzp+GBiP9yLoEjg6S9w== } + peerDependencies: + "@swc/core": ^1.2.147 + webpack: ">=2" symbol-tree@3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + resolution: + { integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== } synckit@0.11.12: - resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} - engines: {node: ^14.18.0 || >=16.0.0} + resolution: + { integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ== } + engines: { node: ^14.18.0 || >=16.0.0 } tagged-tag@1.0.0: - resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} - engines: {node: '>=20'} - - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng== } + engines: { node: ">=20" } tapable@2.3.0: - resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg== } + engines: { node: ">=6" } tar-fs@2.1.2: - resolution: {integrity: sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==} + resolution: + { integrity: sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA== } tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== } + engines: { node: ">=6" } tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== } + engines: { node: ">=10" } tar@7.5.2: - resolution: {integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg== } + engines: { node: ">=18" } temp-dir@1.0.0: - resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== } + engines: { node: ">=4" } terser-webpack-plugin@5.3.16: - resolution: {integrity: sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==} - engines: {node: '>= 10.13.0'} + resolution: + { integrity: sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q== } + engines: { node: ">= 10.13.0" } peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' + "@swc/core": "*" + esbuild: "*" + uglify-js: "*" webpack: ^5.1.0 peerDependenciesMeta: - '@swc/core': + "@swc/core": optional: true esbuild: optional: true @@ -8398,445 +9043,511 @@ packages: optional: true terser@5.36.0: - resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w== } + engines: { node: ">=10" } hasBin: true terser@5.44.1: - resolution: {integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw== } + engines: { node: ">=10" } hasBin: true text-extensions@1.9.0: - resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} - engines: {node: '>=0.10'} - - text-extensions@2.4.0: - resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== } + engines: { node: ">=0.10" } text-hex@1.0.0: - resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} + resolution: + { integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== } through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + resolution: + { integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== } through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + resolution: + { integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== } tinybench@2.9.0: - resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + resolution: + { integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg== } tinyexec@1.0.2: - resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg== } + engines: { node: ">=18" } tinyglobby@0.2.12: - resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} - engines: {node: '>=12.0.0'} + resolution: + { integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww== } + engines: { node: ">=12.0.0" } tinyglobby@0.2.15: - resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} - engines: {node: '>=12.0.0'} + resolution: + { integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== } + engines: { node: ">=12.0.0" } tinyrainbow@3.0.3: - resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==} - engines: {node: '>=14.0.0'} + resolution: + { integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q== } + engines: { node: ">=14.0.0" } tldts-core@7.0.19: - resolution: {integrity: sha512-lJX2dEWx0SGH4O6p+7FPwYmJ/bu1JbcGJ8RLaG9b7liIgZ85itUVEPbMtWRVrde/0fnDPEPHW10ZsKW3kVsE9A==} + resolution: + { integrity: sha512-lJX2dEWx0SGH4O6p+7FPwYmJ/bu1JbcGJ8RLaG9b7liIgZ85itUVEPbMtWRVrde/0fnDPEPHW10ZsKW3kVsE9A== } tldts@7.0.19: - resolution: {integrity: sha512-8PWx8tvC4jDB39BQw1m4x8y5MH1BcQ5xHeL2n7UVFulMPH/3Q0uiamahFJ3lXA0zO2SUyRXuVVbWSDmstlt9YA==} + resolution: + { integrity: sha512-8PWx8tvC4jDB39BQw1m4x8y5MH1BcQ5xHeL2n7UVFulMPH/3Q0uiamahFJ3lXA0zO2SUyRXuVVbWSDmstlt9YA== } hasBin: true tmp@0.2.1: - resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} - engines: {node: '>=8.17.0'} + resolution: + { integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== } + engines: { node: ">=8.17.0" } to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + resolution: + { integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== } + engines: { node: ">=8.0" } to-valid-identifier@1.0.0: - resolution: {integrity: sha512-41wJyvKep3yT2tyPqX/4blcfybknGB4D+oETKLs7Q76UiPqRpUJK3hr1nxelyYO0PHKVzJwlu0aCeEAsGI6rpw==} - engines: {node: '>=20'} + resolution: + { integrity: sha512-41wJyvKep3yT2tyPqX/4blcfybknGB4D+oETKLs7Q76UiPqRpUJK3hr1nxelyYO0PHKVzJwlu0aCeEAsGI6rpw== } + engines: { node: ">=20" } toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} + resolution: + { integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== } + engines: { node: ">=0.6" } token-stream@1.0.0: - resolution: {integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==} + resolution: + { integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg== } totalist@3.0.1: - resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== } + engines: { node: ">=6" } touch@3.1.0: - resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==} + resolution: + { integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== } hasBin: true tough-cookie@6.0.0: - resolution: {integrity: sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==} - engines: {node: '>=16'} + resolution: + { integrity: sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w== } + engines: { node: ">=16" } tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + resolution: + { integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== } tr46@6.0.0: - resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} - engines: {node: '>=20'} + resolution: + { integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw== } + engines: { node: ">=20" } tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + resolution: + { integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== } hasBin: true treeverse@3.0.0: - resolution: {integrity: sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { integrity: sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ== } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } trim-newlines@3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== } + engines: { node: ">=8" } trim-repeated@1.0.0: - resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg== } + engines: { node: ">=0.10.0" } triple-beam@1.4.0: - resolution: {integrity: sha512-rD6Q7Grj07i2PW1sQmz4KXviI+9E02EWBnAU9DafQbUueb7Esh786jop+be92KFxvxPGHuC0mR7YVcE6rScMBg==} - engines: {node: '>= 16.0.0'} + resolution: + { integrity: sha512-rD6Q7Grj07i2PW1sQmz4KXviI+9E02EWBnAU9DafQbUueb7Esh786jop+be92KFxvxPGHuC0mR7YVcE6rScMBg== } + engines: { node: ">= 16.0.0" } try-catch@3.0.1: - resolution: {integrity: sha512-91yfXw1rr/P6oLpHSyHDOHm0vloVvUoo9FVdw8YwY05QjJQG9OT0LUxe2VRAzmHG+0CUOmI3nhxDUMLxDN/NEQ==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-91yfXw1rr/P6oLpHSyHDOHm0vloVvUoo9FVdw8YwY05QjJQG9OT0LUxe2VRAzmHG+0CUOmI3nhxDUMLxDN/NEQ== } + engines: { node: ">=6" } try-catch@4.0.7: - resolution: {integrity: sha512-gkBWUxbiN4T4PsO8KhoQYWzUPN6e0/h12H9H3YhcfPbwaN8b84fy8cFqL4rWTiPh7qHPFaEfklr6OkVxYRW0Gg==} - engines: {node: '>=22'} + resolution: + { integrity: sha512-gkBWUxbiN4T4PsO8KhoQYWzUPN6e0/h12H9H3YhcfPbwaN8b84fy8cFqL4rWTiPh7qHPFaEfklr6OkVxYRW0Gg== } + engines: { node: ">=22" } try-to-catch@4.0.3: - resolution: {integrity: sha512-mUz1zpe6nkRQW0XZ/Ojfe/Eg7e5h3s+r+h7ONfP3Oo27/Jm8mkNDAnLzZ/A3sEMApROolzuJGBiQhGmmVDAFLw==} - engines: {node: '>=22'} - - ts-api-utils@1.3.0: - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' + resolution: + { integrity: sha512-mUz1zpe6nkRQW0XZ/Ojfe/Eg7e5h3s+r+h7ONfP3Oo27/Jm8mkNDAnLzZ/A3sEMApROolzuJGBiQhGmmVDAFLw== } + engines: { node: ">=22" } ts-api-utils@2.3.0: - resolution: {integrity: sha512-6eg3Y9SF7SsAvGzRHQvvc1skDAhwI4YQ32ui1scxD1Ccr0G5qIIbUBT3pFTKX8kmWIQClHobtUdNuaBgwdfdWg==} - engines: {node: '>=18.12'} + resolution: + { integrity: sha512-6eg3Y9SF7SsAvGzRHQvvc1skDAhwI4YQ32ui1scxD1Ccr0G5qIIbUBT3pFTKX8kmWIQClHobtUdNuaBgwdfdWg== } + engines: { node: ">=18.12" } peerDependencies: - typescript: '>=4.8.4' + typescript: ">=4.8.4" ts-api-utils@2.4.0: - resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} - engines: {node: '>=18.12'} + resolution: + { integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA== } + engines: { node: ">=18.12" } peerDependencies: - typescript: '>=4.8.4' - - ts-graphviz@2.1.2: - resolution: {integrity: sha512-9GnOA3yiFaqZeHBEZXWa6kqc61FVhAhxQU5g3KLyGrhRr7OsDGRzs+1z35ctvD+hTTEhrBza6D41+qz+3qs7Zw==} - engines: {node: '>=18'} + typescript: ">=4.8.4" ts-json-schema-generator@2.4.0: - resolution: {integrity: sha512-HbmNsgs58CfdJq0gpteRTxPXG26zumezOs+SB9tgky6MpqiFgQwieCn2MW70+sxpHouZ/w9LW0V6L4ZQO4y1Ug==} - engines: {node: '>=18.0.0'} + resolution: + { integrity: sha512-HbmNsgs58CfdJq0gpteRTxPXG26zumezOs+SB9tgky6MpqiFgQwieCn2MW70+sxpHouZ/w9LW0V6L4ZQO4y1Ug== } + engines: { node: ">=18.0.0" } hasBin: true ts-node@10.9.2: - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + resolution: + { integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== } hasBin: true peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' + "@swc/core": ">=1.2.50" + "@swc/wasm": ">=1.2.50" + "@types/node": "*" + typescript: ">=2.7" peerDependenciesMeta: - '@swc/core': + "@swc/core": optional: true - '@swc/wasm': + "@swc/wasm": optional: true + tsconfig-paths-webpack-plugin@4.2.0: + resolution: + { integrity: sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA== } + engines: { node: ">=10.13.0" } + tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + resolution: + { integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== } tsconfig-paths@4.2.0: - resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== } + engines: { node: ">=6" } tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + resolution: + { integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== } tuf-js@4.1.0: - resolution: {integrity: sha512-50QV99kCKH5P/Vs4E2Gzp7BopNV+KzTXqWeaxrfu5IQJBOULRsTIS9seSsOVT8ZnGXzCyx55nYWAi4qJzpZKEQ==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-50QV99kCKH5P/Vs4E2Gzp7BopNV+KzTXqWeaxrfu5IQJBOULRsTIS9seSsOVT8ZnGXzCyx55nYWAi4qJzpZKEQ== } + engines: { node: ^20.17.0 || >=22.9.0 } tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + resolution: + { integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== } type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} + resolution: + { integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== } + engines: { node: ">= 0.8.0" } type-fest@0.13.1: - resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== } + engines: { node: ">=10" } type-fest@0.18.1: - resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== } + engines: { node: ">=10" } type-fest@0.4.1: - resolution: {integrity: sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw== } + engines: { node: ">=6" } type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== } + engines: { node: ">=8" } type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== } + engines: { node: ">=8" } type-fest@5.3.1: - resolution: {integrity: sha512-VCn+LMHbd4t6sF3wfU/+HKT63C9OoyrSIf4b+vtWHpt2U7/4InZG467YDNMFMR70DdHjAdpPWmw2lzRdg0Xqqg==} - engines: {node: '>=20'} + resolution: + { integrity: sha512-VCn+LMHbd4t6sF3wfU/+HKT63C9OoyrSIf4b+vtWHpt2U7/4InZG467YDNMFMR70DdHjAdpPWmw2lzRdg0Xqqg== } + engines: { node: ">=20" } type-is@2.0.1: - resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} - engines: {node: '>= 0.6'} + resolution: + { integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw== } + engines: { node: ">= 0.6" } typed-array-buffer@1.0.3: - resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw== } + engines: { node: ">= 0.4" } typed-array-byte-length@1.0.3: - resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg== } + engines: { node: ">= 0.4" } typed-array-byte-offset@1.0.4: - resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ== } + engines: { node: ">= 0.4" } typed-array-length@1.0.7: - resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg== } + engines: { node: ">= 0.4" } typed-event-target@4.1.0: - resolution: {integrity: sha512-fDFhZb7ofywLsVv8mYePD6ONfCpVHyM1t2dboEJx/XMsnflljnu3GQ5qH09hS1USuypGMR7wRbdWQPydgJ8nGQ==} - engines: {node: '>=22'} + resolution: + { integrity: sha512-fDFhZb7ofywLsVv8mYePD6ONfCpVHyM1t2dboEJx/XMsnflljnu3GQ5qH09hS1USuypGMR7wRbdWQPydgJ8nGQ== } + engines: { node: ">=22" } typedarray@0.0.6: - resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + resolution: + { integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== } typedoc-plugin-carbon-ads@1.6.0: - resolution: {integrity: sha512-PzWe1iqnul+9DOZh3/OCcndjTstoxHET4XIXEMif1l/LbxpHdIBQ+h5HlcS6D2nW8HoiZqxMYjvWIqtaqPmRAQ==} + resolution: + { integrity: sha512-PzWe1iqnul+9DOZh3/OCcndjTstoxHET4XIXEMif1l/LbxpHdIBQ+h5HlcS6D2nW8HoiZqxMYjvWIqtaqPmRAQ== } peerDependencies: typedoc: ^0.25.4 typedoc-plugin-clarity@1.6.0: - resolution: {integrity: sha512-BvJj8ZvgCZzS2sLO7yIkRg9EWLPdll+xLyQekjMAtypHITOXSwCO9E9Ir77R2fctsVC9BVJiToGAYcsMtyuPdw==} + resolution: + { integrity: sha512-BvJj8ZvgCZzS2sLO7yIkRg9EWLPdll+xLyQekjMAtypHITOXSwCO9E9Ir77R2fctsVC9BVJiToGAYcsMtyuPdw== } peerDependencies: typedoc: ^0.25.4 typedoc-plugin-coverage@4.0.2: - resolution: {integrity: sha512-mfn0e7NCqB8x2PfvhXrtmd7KWlsNf1+B2N9y8gR/jexXBLrXl/0e+b2HdG5HaTXGi7i0t2pyQY2VRmq7gtdEHQ==} - engines: {node: '>= 18'} + resolution: + { integrity: sha512-mfn0e7NCqB8x2PfvhXrtmd7KWlsNf1+B2N9y8gR/jexXBLrXl/0e+b2HdG5HaTXGi7i0t2pyQY2VRmq7gtdEHQ== } + engines: { node: ">= 18" } peerDependencies: typedoc: 0.28.x typedoc-plugin-keywords@1.6.0: - resolution: {integrity: sha512-URyCIHw6+Lwil0ywy6lVb2TckfDVGjAWnRnTAiiSZaRaglI6vaaP1EhhwEipOIlHaJSnHZfdwpWe1t4mffTIpA==} + resolution: + { integrity: sha512-URyCIHw6+Lwil0ywy6lVb2TckfDVGjAWnRnTAiiSZaRaglI6vaaP1EhhwEipOIlHaJSnHZfdwpWe1t4mffTIpA== } peerDependencies: typedoc: ^0.25.4 - typedoc-plugin-mdn-links@5.1.0: - resolution: {integrity: sha512-fItGuNMvDXAQhtXk4q8tk8DinMODPeoyA7XLjqhXoq1q8bPccdxgFtZMHKbg+XnFAeCzIuYcJuZQgtNMOH3uTg==} + typedoc-plugin-mdn-links@5.1.1: + resolution: + { integrity: sha512-fLlYudnlGkE9uspOEm/SBXwr+G0RbxoDZiHAVsCg+5NwKe2aUxjZK1YyQfleNZydImanzkX2oUJF29xbEeOSWw== } peerDependencies: typedoc: 0.27.x || 0.28.x typedoc-plugin-missing-exports@4.1.2: - resolution: {integrity: sha512-WNoeWX9+8X3E3riuYPduilUTFefl1K+Z+5bmYqNeH5qcWjtnTRMbRzGdEQ4XXn1WEO4WCIlU0vf46Ca2y/mspg==} + resolution: + { integrity: sha512-WNoeWX9+8X3E3riuYPduilUTFefl1K+Z+5bmYqNeH5qcWjtnTRMbRzGdEQ4XXn1WEO4WCIlU0vf46Ca2y/mspg== } peerDependencies: typedoc: ^0.28.1 typedoc@0.28.16: - resolution: {integrity: sha512-x4xW77QC3i5DUFMBp0qjukOTnr/sSg+oEs86nB3LjDslvAmwe/PUGDWbe3GrIqt59oTqoXK5GRK9tAa0sYMiog==} - engines: {node: '>= 18', pnpm: '>= 10'} + resolution: + { integrity: sha512-x4xW77QC3i5DUFMBp0qjukOTnr/sSg+oEs86nB3LjDslvAmwe/PUGDWbe3GrIqt59oTqoXK5GRK9tAa0sYMiog== } + engines: { node: ">= 18", pnpm: ">= 10" } hasBin: true peerDependencies: typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x - typescript-eslint@8.53.1: - resolution: {integrity: sha512-gB+EVQfP5RDElh9ittfXlhZJdjSU4jUSTyE2+ia8CYyNvet4ElfaLlAIqDvQV9JPknKx0jQH1racTYe/4LaLSg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + typescript-eslint@8.54.0: + resolution: + { integrity: sha512-CKsJ+g53QpsNPqbzUsfKVgd3Lny4yKZ1pP4qN3jdMOg/sisIDLGyDMezycquXLE5JsEU0wp3dGNdzig0/fmSVQ== } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: ">=4.8.4 <6.0.0" typescript-json-schema@0.67.1: - resolution: {integrity: sha512-vKTZB/RoYTIBdVP7E7vrgHMCssBuhja91wQy498QIVhvfRimaOgjc98uwAXmZ7mbLUytJmOSbF11wPz+ByQeXg==} + resolution: + { integrity: sha512-vKTZB/RoYTIBdVP7E7vrgHMCssBuhja91wQy498QIVhvfRimaOgjc98uwAXmZ7mbLUytJmOSbF11wPz+ByQeXg== } hasBin: true typescript@5.5.4: - resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} - engines: {node: '>=14.17'} + resolution: + { integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== } + engines: { node: ">=14.17" } hasBin: true typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} - engines: {node: '>=14.17'} + resolution: + { integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== } + engines: { node: ">=14.17" } hasBin: true uc.micro@2.1.0: - resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + resolution: + { integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A== } uglify-js@3.17.4: - resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} - engines: {node: '>=0.8.0'} + resolution: + { integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== } + engines: { node: ">=0.8.0" } hasBin: true unbox-primitive@1.1.0: - resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw== } + engines: { node: ">= 0.4" } undefsafe@2.0.5: - resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} + resolution: + { integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== } undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + resolution: + { integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== } undici-types@7.16.0: - resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} - - unicode-canonical-property-names-ecmascript@2.0.0: - resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} - engines: {node: '>=4'} - - unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} - - unicode-match-property-value-ecmascript@2.1.0: - resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw== } - unicode-match-property-value-ecmascript@2.2.1: - resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} - engines: {node: '>=4'} - - unicode-property-aliases-ecmascript@2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} - - unicorn-magic@0.1.0: - resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} - engines: {node: '>=18'} + undici@7.20.0: + resolution: + { integrity: sha512-MJZrkjyd7DeC+uPZh+5/YaMDxFiiEEaDgbUSVMXayofAkDWF1088CDo+2RPg7B1BuS1qf1vgNE7xqwPxE0DuSQ== } + engines: { node: ">=20.18.1" } unicorn-magic@0.3.0: - resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA== } + engines: { node: ">=18" } unique-filename@4.0.0: - resolution: {integrity: sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ== } + engines: { node: ^18.17.0 || >=20.5.0 } unique-filename@5.0.0: - resolution: {integrity: sha512-2RaJTAvAb4owyjllTfXzFClJ7WsGxlykkPvCr9pA//LD9goVq+m4PPAeBgNodGZ7nSrntT/auWpJ6Y5IFXcfjg==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-2RaJTAvAb4owyjllTfXzFClJ7WsGxlykkPvCr9pA//LD9goVq+m4PPAeBgNodGZ7nSrntT/auWpJ6Y5IFXcfjg== } + engines: { node: ^20.17.0 || >=22.9.0 } unique-slug@5.0.0: - resolution: {integrity: sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg== } + engines: { node: ^18.17.0 || >=20.5.0 } unique-slug@6.0.0: - resolution: {integrity: sha512-4Lup7Ezn8W3d52/xBhZBVdx323ckxa7DEvd9kPQHppTkLoJXw6ltrBCyj5pnrxj0qKDxYMJ56CoxNuFCscdTiw==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-4Lup7Ezn8W3d52/xBhZBVdx323ckxa7DEvd9kPQHppTkLoJXw6ltrBCyj5pnrxj0qKDxYMJ56CoxNuFCscdTiw== } + engines: { node: ^20.17.0 || >=22.9.0 } universal-user-agent@6.0.0: - resolution: {integrity: sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==} + resolution: + { integrity: sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== } universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} + resolution: + { integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== } + engines: { node: ">= 4.0.0" } universalify@2.0.0: - resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} - engines: {node: '>= 10.0.0'} + resolution: + { integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== } + engines: { node: ">= 10.0.0" } unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} + resolution: + { integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== } + engines: { node: ">= 0.8" } untildify@4.0.0: - resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== } + engines: { node: ">=8" } upath@2.0.1: - resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} - engines: {node: '>=4'} + resolution: + { integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== } + engines: { node: ">=4" } update-browserslist-db@1.2.3: - resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + resolution: + { integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w== } hasBin: true peerDependencies: - browserslist: '>= 4.21.0' + browserslist: ">= 4.21.0" upper-case-first@2.0.2: - resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} + resolution: + { integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg== } upper-case@2.0.2: - resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} + resolution: + { integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg== } uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + resolution: + { integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== } util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + resolution: + { integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== } uuid@11.1.0: - resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + resolution: + { integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A== } hasBin: true v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + resolution: + { integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== } validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + resolution: + { integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== } validate-npm-package-name@6.0.2: - resolution: {integrity: sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ== } + engines: { node: ^18.17.0 || >=20.5.0 } vanilla-picker@2.12.3: - resolution: {integrity: sha512-qVkT1E7yMbUsB2mmJNFmaXMWE2hF8ffqzMMwe9zdAikd8u2VfnsVY2HQcOUi2F38bgbxzlJBEdS1UUhOXdF9GQ==} + resolution: + { integrity: sha512-qVkT1E7yMbUsB2mmJNFmaXMWE2hF8ffqzMMwe9zdAikd8u2VfnsVY2HQcOUi2F38bgbxzlJBEdS1UUhOXdF9GQ== } vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} + resolution: + { integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== } + engines: { node: ">= 0.8" } vite@7.3.1: - resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: + { integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA== } + engines: { node: ^20.19.0 || >=22.12.0 } hasBin: true peerDependencies: - '@types/node': ^20.19.0 || >=22.12.0 - jiti: '>=1.21.0' + "@types/node": ^20.19.0 || >=22.12.0 + jiti: ">=1.21.0" less: ^4.0.0 lightningcss: ^1.21.0 sass: ^1.70.0 sass-embedded: ^1.70.0 - stylus: '>=0.54.8' + stylus: ">=0.54.8" sugarss: ^5.0.0 terser: ^5.16.0 tsx: ^4.8.1 yaml: ^2.4.2 peerDependenciesMeta: - '@types/node': + "@types/node": optional: true jiti: optional: true @@ -8860,33 +9571,34 @@ packages: optional: true vitest@4.0.18: - resolution: {integrity: sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==} - engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + resolution: + { integrity: sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ== } + engines: { node: ^20.0.0 || ^22.0.0 || >=24.0.0 } hasBin: true peerDependencies: - '@edge-runtime/vm': '*' - '@opentelemetry/api': ^1.9.0 - '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.18 - '@vitest/browser-preview': 4.0.18 - '@vitest/browser-webdriverio': 4.0.18 - '@vitest/ui': 4.0.18 - happy-dom: '*' - jsdom: '*' + "@edge-runtime/vm": "*" + "@opentelemetry/api": ^1.9.0 + "@types/node": ^20.0.0 || ^22.0.0 || >=24.0.0 + "@vitest/browser-playwright": 4.0.18 + "@vitest/browser-preview": 4.0.18 + "@vitest/browser-webdriverio": 4.0.18 + "@vitest/ui": 4.0.18 + happy-dom: "*" + jsdom: "*" peerDependenciesMeta: - '@edge-runtime/vm': + "@edge-runtime/vm": optional: true - '@opentelemetry/api': + "@opentelemetry/api": optional: true - '@types/node': + "@types/node": optional: true - '@vitest/browser-playwright': + "@vitest/browser-playwright": optional: true - '@vitest/browser-preview': + "@vitest/browser-preview": optional: true - '@vitest/browser-webdriverio': + "@vitest/browser-webdriverio": optional: true - '@vitest/ui': + "@vitest/ui": optional: true happy-dom: optional: true @@ -8894,53 +9606,65 @@ packages: optional: true vm2@3.10.0: - resolution: {integrity: sha512-3ggF4Bs0cw4M7Rxn19/Cv3nJi04xrgHwt4uLto+zkcZocaKwP/nKP9wPx6ggN2X0DSXxOOIc63BV1jvES19wXQ==} - engines: {node: '>=6.0'} + resolution: + { integrity: sha512-3ggF4Bs0cw4M7Rxn19/Cv3nJi04xrgHwt4uLto+zkcZocaKwP/nKP9wPx6ggN2X0DSXxOOIc63BV1jvES19wXQ== } + engines: { node: ">=6.0" } hasBin: true void-elements@3.1.0: - resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} - engines: {node: '>=0.10.0'} + resolution: + { integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w== } + engines: { node: ">=0.10.0" } w3c-xmlserializer@5.0.0: - resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA== } + engines: { node: ">=18" } walk-up-path@4.0.0: - resolution: {integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==} - engines: {node: 20 || >=22} - - walkdir@0.4.1: - resolution: {integrity: sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ==} - engines: {node: '>=6.0.0'} + resolution: + { integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A== } + engines: { node: 20 || >=22 } watchpack@2.4.4: - resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} - engines: {node: '>=10.13.0'} + resolution: + { integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA== } + engines: { node: ">=10.13.0" } + + watskeburt@5.0.2: + resolution: + { integrity: sha512-8xIz2RALjwTA7kYeRtkiQ2uaFyr327T1GXJnVcGOoPuzQX2axpUXqeJPcgOEVemCWB2YveZjhWCcW/eZ3uTkZA== } + engines: { node: ^20.12||^22.13||>=24.0 } + hasBin: true wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + resolution: + { integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== } webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + resolution: + { integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== } - webidl-conversions@8.0.0: - resolution: {integrity: sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==} - engines: {node: '>=20'} + webidl-conversions@8.0.1: + resolution: + { integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ== } + engines: { node: ">=20" } webpack-bundle-analyzer@5.2.0: - resolution: {integrity: sha512-Etrauj1wYO/xjiz/Vfd6bW1lG9fEhrJpNmu10tv0X9kv+gyY3qiE09uYepqg1Xd0PxOvllRXwWYWjtQYoO/glQ==} - engines: {node: '>= 20.9.0'} + resolution: + { integrity: sha512-Etrauj1wYO/xjiz/Vfd6bW1lG9fEhrJpNmu10tv0X9kv+gyY3qiE09uYepqg1Xd0PxOvllRXwWYWjtQYoO/glQ== } + engines: { node: ">= 20.9.0" } hasBin: true webpack-cli@6.0.1: - resolution: {integrity: sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==} - engines: {node: '>=18.12.0'} + resolution: + { integrity: sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw== } + engines: { node: ">=18.12.0" } hasBin: true peerDependencies: webpack: ^5.82.0 - webpack-bundle-analyzer: '*' - webpack-dev-server: '*' + webpack-bundle-analyzer: "*" + webpack-dev-server: "*" peerDependenciesMeta: webpack-bundle-analyzer: optional: true @@ -8948,135 +9672,166 @@ packages: optional: true webpack-merge@6.0.1: - resolution: {integrity: sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==} - engines: {node: '>=18.0.0'} + resolution: + { integrity: sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg== } + engines: { node: ">=18.0.0" } webpack-sources@3.3.3: - resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} - engines: {node: '>=10.13.0'} + resolution: + { integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg== } + engines: { node: ">=10.13.0" } webpack@5.104.1: - resolution: {integrity: sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==} - engines: {node: '>=10.13.0'} + resolution: + { integrity: sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA== } + engines: { node: ">=10.13.0" } hasBin: true peerDependencies: - webpack-cli: '*' + webpack-cli: "*" peerDependenciesMeta: webpack-cli: optional: true - whatwg-mimetype@4.0.0: - resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} - engines: {node: '>=18'} + whatwg-mimetype@5.0.0: + resolution: + { integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw== } + engines: { node: ">=20" } - whatwg-url@15.1.0: - resolution: {integrity: sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==} - engines: {node: '>=20'} + whatwg-url@16.0.0: + resolution: + { integrity: sha512-9CcxtEKsf53UFwkSUZjG+9vydAsFO4lFHBpJUtjBcoJOCJpKnSJNwCw813zrYJHpCJ7sgfbtOe0V5Ku7Pa1XMQ== } + engines: { node: ^20.19.0 || ^22.12.0 || >=24.0.0 } whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + resolution: + { integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== } which-boxed-primitive@1.1.1: - resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA== } + engines: { node: ">= 0.4" } which-builtin-type@1.2.1: - resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q== } + engines: { node: ">= 0.4" } which-collection@1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== } + engines: { node: ">= 0.4" } which-typed-array@1.1.19: - resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} - engines: {node: '>= 0.4'} + resolution: + { integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw== } + engines: { node: ">= 0.4" } which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} + resolution: + { integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== } + engines: { node: ">= 8" } hasBin: true which@5.0.0: - resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ== } + engines: { node: ^18.17.0 || >=20.5.0 } hasBin: true which@6.0.0: - resolution: {integrity: sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==} - engines: {node: ^20.17.0 || >=22.9.0} + resolution: + { integrity: sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg== } + engines: { node: ^20.17.0 || >=22.9.0 } hasBin: true why-is-node-running@2.3.0: - resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w== } + engines: { node: ">=8" } hasBin: true wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + resolution: + { integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== } wildcard@2.0.1: - resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} + resolution: + { integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== } winston-transport@4.9.0: - resolution: {integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==} - engines: {node: '>= 12.0.0'} + resolution: + { integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A== } + engines: { node: ">= 12.0.0" } winston@3.19.0: - resolution: {integrity: sha512-LZNJgPzfKR+/J3cHkxcpHKpKKvGfDZVPS4hfJCc4cCG0CgYzvlD6yE/S3CIL/Yt91ak327YCpiF/0MyeZHEHKA==} - engines: {node: '>= 12.0.0'} + resolution: + { integrity: sha512-LZNJgPzfKR+/J3cHkxcpHKpKKvGfDZVPS4hfJCc4cCG0CgYzvlD6yE/S3CIL/Yt91ak327YCpiF/0MyeZHEHKA== } + engines: { node: ">= 12.0.0" } with@7.0.2: - resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} - engines: {node: '>= 10.0.0'} + resolution: + { integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w== } + engines: { node: ">= 10.0.0" } wordwrap@1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + resolution: + { integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== } wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== } + engines: { node: ">=8" } wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== } + engines: { node: ">=10" } wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} + resolution: + { integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== } + engines: { node: ">=12" } wrap-ansi@9.0.0: - resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q== } + engines: { node: ">=18" } wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + resolution: + { integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== } write-file-atomic@2.4.3: - resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} + resolution: + { integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== } write-file-atomic@5.0.1: - resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } write-file-atomic@6.0.0: - resolution: {integrity: sha512-GmqrO8WJ1NuzJ2DrziEI2o57jKAVIQNf8a18W3nCYU3H7PNWqCCVTeH6/NQE93CIllIgQS98rrmVkYgTX9fFJQ==} - engines: {node: ^18.17.0 || >=20.5.0} + resolution: + { integrity: sha512-GmqrO8WJ1NuzJ2DrziEI2o57jKAVIQNf8a18W3nCYU3H7PNWqCCVTeH6/NQE93CIllIgQS98rrmVkYgTX9fFJQ== } + engines: { node: ^18.17.0 || >=20.5.0 } write-json-file@3.2.0: - resolution: {integrity: sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ== } + engines: { node: ">=6" } write-pkg@4.0.0: - resolution: {integrity: sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==} - engines: {node: '>=8'} + resolution: + { integrity: sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA== } + engines: { node: ">=8" } ws@8.18.3: - resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} - engines: {node: '>=10.0.0'} + resolution: + { integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== } + engines: { node: ">=10.0.0" } peerDependencies: bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' + utf-8-validate: ">=5.0.2" peerDependenciesMeta: bufferutil: optional: true @@ -9084,11 +9839,12 @@ packages: optional: true ws@8.19.0: - resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} - engines: {node: '>=10.0.0'} + resolution: + { integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg== } + engines: { node: ">=10.0.0" } peerDependencies: bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' + utf-8-validate: ">=5.0.2" peerDependenciesMeta: bufferutil: optional: true @@ -9096,968 +9852,319 @@ packages: optional: true xml-name-validator@5.0.0: - resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg== } + engines: { node: ">=18" } xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + resolution: + { integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== } xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} + 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'} - - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + resolution: + { integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== } + engines: { node: ">=10" } yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + resolution: + { integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== } yallist@5.0.0: - resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw== } + engines: { node: ">=18" } yaml@2.8.1: - resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} - engines: {node: '>= 14.6'} + resolution: + { integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw== } + engines: { node: ">= 14.6" } hasBin: true yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== } + engines: { node: ">=10" } yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} + resolution: + { integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== } + engines: { node: ">=12" } yargs-parser@22.0.0: - resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} - engines: {node: ^20.19.0 || ^22.12.0 || >=23} + resolution: + { integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw== } + engines: { node: ^20.19.0 || ^22.12.0 || >=23 } yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== } + engines: { node: ">=10" } yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} + resolution: + { integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== } + engines: { node: ">=12" } yargs@18.0.0: - resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==} - engines: {node: ^20.19.0 || ^22.12.0 || >=23} + resolution: + { integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg== } + engines: { node: ^20.19.0 || ^22.12.0 || >=23 } yauzl@2.10.0: - resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + resolution: + { integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== } yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} + resolution: + { integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== } + engines: { node: ">=6" } yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} + resolution: + { integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== } + engines: { node: ">=10" } yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} + resolution: + { integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== } + engines: { node: ">=12.20" } yoctocolors-cjs@2.1.3: - resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} - engines: {node: '>=18'} + resolution: + { integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw== } + engines: { node: ">=18" } snapshots: + "@aashutoshrathi/word-wrap@1.2.6": {} - '@aashutoshrathi/word-wrap@1.2.6': {} - - '@acemir/cssom@0.9.29': {} + "@acemir/cssom@0.9.31": {} - '@adobe/css-tools@4.3.3': {} + "@adobe/css-tools@4.3.3": {} - '@asamuzakjp/css-color@4.1.1': + "@asamuzakjp/css-color@4.1.1": dependencies: - '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 + "@csstools/css-calc": 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-color-parser": 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 lru-cache: 11.2.4 - '@asamuzakjp/dom-selector@6.7.6': + "@asamuzakjp/dom-selector@6.7.6": dependencies: - '@asamuzakjp/nwsapi': 2.3.9 + "@asamuzakjp/nwsapi": 2.3.9 bidi-js: 1.0.3 css-tree: 3.1.0 is-potential-custom-element-name: 1.0.1 lru-cache: 11.2.4 - '@asamuzakjp/nwsapi@2.3.9': {} + "@asamuzakjp/nwsapi@2.3.9": {} - '@augment-vir/assert@31.54.4': + "@augment-vir/assert@31.54.4": dependencies: - '@augment-vir/core': 31.54.4 - '@date-vir/duration': 8.1.0 + "@augment-vir/core": 31.54.4 + "@date-vir/duration": 8.1.0 deep-eql: 5.0.2 expect-type: 1.3.0 type-fest: 5.3.1 - '@augment-vir/common@31.54.4': + "@augment-vir/common@31.54.4": dependencies: - '@augment-vir/assert': 31.54.4 - '@augment-vir/core': 31.54.4 - '@date-vir/duration': 8.1.0 + "@augment-vir/assert": 31.54.4 + "@augment-vir/core": 31.54.4 + "@date-vir/duration": 8.1.0 ansi-styles: 6.2.3 deepcopy-esm: 2.1.1 json5: 2.2.3 type-fest: 5.3.1 typed-event-target: 4.1.0 - '@augment-vir/core@31.54.4': + "@augment-vir/core@31.54.4": dependencies: - '@date-vir/duration': 8.1.0 + "@date-vir/duration": 8.1.0 browser-or-node: 3.0.0 diff: 8.0.2 json5: 2.2.3 type-fest: 5.3.1 - '@babel/code-frame@7.27.1': + "@babel/code-frame@7.27.1": dependencies: - '@babel/helper-validator-identifier': 7.28.5 + "@babel/helper-validator-identifier": 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/code-frame@7.28.6': + "@babel/helper-string-parser@7.27.1": {} + + "@babel/helper-validator-identifier@7.28.5": {} + + "@babel/parser@7.28.5": dependencies: - '@babel/helper-validator-identifier': 7.28.5 - js-tokens: 4.0.0 - picocolors: 1.1.1 + "@babel/types": 7.28.5 - '@babel/compat-data@7.28.6': {} - - '@babel/core@7.28.6': - dependencies: - '@babel/code-frame': 7.28.6 - '@babel/generator': 7.28.6 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6) - '@babel/helpers': 7.28.6 - '@babel/parser': 7.28.6 - '@babel/template': 7.28.6 - '@babel/traverse': 7.28.6 - '@babel/types': 7.28.6 - '@jridgewell/remapping': 2.3.5 - convert-source-map: 2.0.0 - debug: 4.4.3(supports-color@5.5.0) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.28.6': - dependencies: - '@babel/parser': 7.28.6 - '@babel/types': 7.28.6 - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.31 - jsesc: 3.0.2 - - '@babel/helper-annotate-as-pure@7.27.3': - dependencies: - '@babel/types': 7.28.6 - - '@babel/helper-compilation-targets@7.28.6': - dependencies: - '@babel/compat-data': 7.28.6 - '@babel/helper-validator-option': 7.27.1 - browserslist: 4.28.1 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-member-expression-to-functions': 7.28.5 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.6) - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.28.6 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-annotate-as-pure': 7.27.3 - regexpu-core: 6.2.0 - semver: 6.3.1 - - '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.28.6)': + "@babel/parser@7.28.6": dependencies: - '@babel/core': 7.28.6 - '@babel/helper-annotate-as-pure': 7.27.3 - regexpu-core: 6.4.0 - semver: 6.3.1 - - '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - debug: 4.4.3(supports-color@5.5.0) - lodash.debounce: 4.0.8 - resolve: 1.22.10 - transitivePeerDependencies: - - supports-color - - '@babel/helper-globals@7.28.0': {} + "@babel/types": 7.28.6 - '@babel/helper-member-expression-to-functions@7.27.1': + "@babel/types@7.28.5": dependencies: - '@babel/traverse': 7.28.6 - '@babel/types': 7.28.6 - transitivePeerDependencies: - - supports-color + "@babel/helper-string-parser": 7.27.1 + "@babel/helper-validator-identifier": 7.28.5 - '@babel/helper-member-expression-to-functions@7.28.5': + "@babel/types@7.28.6": dependencies: - '@babel/traverse': 7.28.6 - '@babel/types': 7.28.6 - transitivePeerDependencies: - - supports-color + "@babel/helper-string-parser": 7.27.1 + "@babel/helper-validator-identifier": 7.28.5 - '@babel/helper-module-imports@7.28.6': - dependencies: - '@babel/traverse': 7.28.6 - '@babel/types': 7.28.6 - transitivePeerDependencies: - - supports-color + "@bcoe/v8-coverage@1.0.2": {} - '@babel/helper-module-transforms@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-module-imports': 7.28.6 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.28.6 - transitivePeerDependencies: - - supports-color + "@colors/colors@1.6.0": {} - '@babel/helper-optimise-call-expression@7.27.1': + "@commitlint/cli@20.4.1(@types/node@25.2.0)(typescript@5.9.3)": dependencies: - '@babel/types': 7.28.6 - - '@babel/helper-plugin-utils@7.28.6': {} - - '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-wrap-function': 7.28.3 - '@babel/traverse': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-member-expression-to-functions': 7.27.1 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/helper-replace-supers@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-member-expression-to-functions': 7.28.5 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': - dependencies: - '@babel/traverse': 7.28.6 - '@babel/types': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/helper-string-parser@7.27.1': {} - - '@babel/helper-validator-identifier@7.28.5': {} - - '@babel/helper-validator-option@7.27.1': {} - - '@babel/helper-wrap-function@7.28.3': - dependencies: - '@babel/template': 7.28.6 - '@babel/traverse': 7.28.6 - '@babel/types': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/helpers@7.28.6': - dependencies: - '@babel/template': 7.28.6 - '@babel/types': 7.28.6 - - '@babel/parser@7.28.5': - dependencies: - '@babel/types': 7.28.5 - - '@babel/parser@7.28.6': - dependencies: - '@babel/types': 7.28.6 - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.28.6) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - - '@babel/plugin-syntax-import-assertions@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.6) - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-async-generator-functions@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.6) - '@babel/traverse': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-async-to-generator@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-module-imports': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.6) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.6) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.6) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-classes@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-globals': 7.28.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.6) - '@babel/traverse': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/template': 7.28.6 - - '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-dotall-regex@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.6) - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.6) - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-explicit-resource-management@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.6) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-exponentiation-operator@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-json-strings@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-systemjs@7.28.5(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6) - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.6) - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-object-rest-spread@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.6) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.6) - '@babel/traverse': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.6) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.6) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-private-property-in-object@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.6) - '@babel/helper-plugin-utils': 7.28.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-regenerator@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-regexp-modifiers@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.6) - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-spread@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-unicode-property-regex@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.6) - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.6) - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-unicode-sets-regex@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.6) - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/preset-env@7.28.6(@babel/core@7.28.6)': - dependencies: - '@babel/compat-data': 7.28.6 - '@babel/core': 7.28.6 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.28.6) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.28.6) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.6) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.6) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.6) - '@babel/plugin-syntax-import-assertions': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.6) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.6) - '@babel/plugin-transform-async-generator-functions': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.6) - '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-transform-class-static-block': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-transform-computed-properties': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.6) - '@babel/plugin-transform-dotall-regex': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.6) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.6) - '@babel/plugin-transform-explicit-resource-management': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-transform-exponentiation-operator': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.6) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.6) - '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.6) - '@babel/plugin-transform-json-strings': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.6) - '@babel/plugin-transform-logical-assignment-operators': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.6) - '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.6) - '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-transform-modules-systemjs': 7.28.5(@babel/core@7.28.6) - '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.6) - '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.6) - '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.6) - '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.6) - '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.6) - '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.6) - '@babel/plugin-transform-regenerator': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-transform-regexp-modifiers': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.6) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.6) - '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.6) - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.6) - '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.6) - '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.6) - '@babel/plugin-transform-unicode-property-regex': 7.28.6(@babel/core@7.28.6) - '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.6) - '@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.28.6) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.6) - babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.6) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.6) - babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.6) - core-js-compat: 3.45.1 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.6)': - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/types': 7.28.6 - esutils: 2.0.3 - - '@babel/template@7.28.6': - dependencies: - '@babel/code-frame': 7.28.6 - '@babel/parser': 7.28.6 - '@babel/types': 7.28.6 - - '@babel/traverse@7.28.6': - dependencies: - '@babel/code-frame': 7.28.6 - '@babel/generator': 7.28.6 - '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.6 - '@babel/template': 7.28.6 - '@babel/types': 7.28.6 - debug: 4.4.3(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - '@babel/types@7.28.5': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - - '@babel/types@7.28.6': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - - '@bcoe/v8-coverage@1.0.2': {} - - '@colors/colors@1.6.0': {} - - '@commitlint/cli@20.3.1(@types/node@25.0.10)(typescript@5.9.3)': - dependencies: - '@commitlint/format': 20.3.1 - '@commitlint/lint': 20.3.1 - '@commitlint/load': 20.3.1(@types/node@25.0.10)(typescript@5.9.3) - '@commitlint/read': 20.3.1 - '@commitlint/types': 20.3.1 + "@commitlint/format": 20.4.0 + "@commitlint/lint": 20.4.1 + "@commitlint/load": 20.4.0(@types/node@25.2.0)(typescript@5.9.3) + "@commitlint/read": 20.4.0 + "@commitlint/types": 20.4.0 tinyexec: 1.0.2 yargs: 17.7.2 transitivePeerDependencies: - - '@types/node' + - "@types/node" - typescript - '@commitlint/config-conventional@20.3.1': + "@commitlint/config-conventional@20.4.1": dependencies: - '@commitlint/types': 20.3.1 - conventional-changelog-conventionalcommits: 7.0.2 + "@commitlint/types": 20.4.0 + conventional-changelog-conventionalcommits: 9.1.0 - '@commitlint/config-validator@20.3.1': + "@commitlint/config-validator@20.4.0": dependencies: - '@commitlint/types': 20.3.1 + "@commitlint/types": 20.4.0 ajv: 8.12.0 - '@commitlint/ensure@20.3.1': + "@commitlint/ensure@20.4.1": dependencies: - '@commitlint/types': 20.3.1 + "@commitlint/types": 20.4.0 lodash.camelcase: 4.3.0 lodash.kebabcase: 4.1.1 lodash.snakecase: 4.1.1 lodash.startcase: 4.4.0 lodash.upperfirst: 4.3.1 - '@commitlint/execute-rule@20.0.0': {} + "@commitlint/execute-rule@20.0.0": {} - '@commitlint/format@20.3.1': + "@commitlint/format@20.4.0": dependencies: - '@commitlint/types': 20.3.1 - chalk: 5.3.0 + "@commitlint/types": 20.4.0 + picocolors: 1.1.1 - '@commitlint/is-ignored@20.3.1': + "@commitlint/is-ignored@20.4.1": dependencies: - '@commitlint/types': 20.3.1 + "@commitlint/types": 20.4.0 semver: 7.7.3 - '@commitlint/lint@20.3.1': + "@commitlint/lint@20.4.1": dependencies: - '@commitlint/is-ignored': 20.3.1 - '@commitlint/parse': 20.3.1 - '@commitlint/rules': 20.3.1 - '@commitlint/types': 20.3.1 + "@commitlint/is-ignored": 20.4.1 + "@commitlint/parse": 20.4.1 + "@commitlint/rules": 20.4.1 + "@commitlint/types": 20.4.0 - '@commitlint/load@20.3.1(@types/node@25.0.10)(typescript@5.9.3)': + "@commitlint/load@20.4.0(@types/node@25.2.0)(typescript@5.9.3)": dependencies: - '@commitlint/config-validator': 20.3.1 - '@commitlint/execute-rule': 20.0.0 - '@commitlint/resolve-extends': 20.3.1 - '@commitlint/types': 20.3.1 - chalk: 5.3.0 + "@commitlint/config-validator": 20.4.0 + "@commitlint/execute-rule": 20.0.0 + "@commitlint/resolve-extends": 20.4.0 + "@commitlint/types": 20.4.0 cosmiconfig: 9.0.0(typescript@5.9.3) - cosmiconfig-typescript-loader: 6.1.0(@types/node@25.0.10)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3) - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - lodash.uniq: 4.5.0 + cosmiconfig-typescript-loader: 6.1.0(@types/node@25.2.0)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3) + is-plain-obj: 4.1.0 + lodash.mergewith: 4.6.2 + picocolors: 1.1.1 transitivePeerDependencies: - - '@types/node' + - "@types/node" - typescript - '@commitlint/message@20.0.0': {} + "@commitlint/message@20.4.0": {} - '@commitlint/parse@20.3.1': + "@commitlint/parse@20.4.1": dependencies: - '@commitlint/types': 20.3.1 - conventional-changelog-angular: 7.0.0 - conventional-commits-parser: 5.0.0 + "@commitlint/types": 20.4.0 + conventional-changelog-angular: 8.1.0 + conventional-commits-parser: 6.2.1 - '@commitlint/read@20.3.1': + "@commitlint/read@20.4.0": dependencies: - '@commitlint/top-level': 20.0.0 - '@commitlint/types': 20.3.1 + "@commitlint/top-level": 20.4.0 + "@commitlint/types": 20.4.0 git-raw-commits: 4.0.0 minimist: 1.2.8 tinyexec: 1.0.2 - '@commitlint/resolve-extends@20.3.1': + "@commitlint/resolve-extends@20.4.0": dependencies: - '@commitlint/config-validator': 20.3.1 - '@commitlint/types': 20.3.1 + "@commitlint/config-validator": 20.4.0 + "@commitlint/types": 20.4.0 global-directory: 4.0.1 import-meta-resolve: 4.0.0 lodash.mergewith: 4.6.2 resolve-from: 5.0.0 - '@commitlint/rules@20.3.1': + "@commitlint/rules@20.4.1": dependencies: - '@commitlint/ensure': 20.3.1 - '@commitlint/message': 20.0.0 - '@commitlint/to-lines': 20.0.0 - '@commitlint/types': 20.3.1 + "@commitlint/ensure": 20.4.1 + "@commitlint/message": 20.4.0 + "@commitlint/to-lines": 20.0.0 + "@commitlint/types": 20.4.0 - '@commitlint/to-lines@20.0.0': {} + "@commitlint/to-lines@20.0.0": {} - '@commitlint/top-level@20.0.0': + "@commitlint/top-level@20.4.0": dependencies: - find-up: 7.0.0 + escalade: 3.2.0 - '@commitlint/types@20.3.1': + "@commitlint/types@20.4.0": dependencies: - '@types/conventional-commits-parser': 5.0.0 - chalk: 5.3.0 + conventional-commits-parser: 6.2.1 + picocolors: 1.1.1 - '@cspotcode/source-map-support@0.8.1': + "@cspotcode/source-map-support@0.8.1": dependencies: - '@jridgewell/trace-mapping': 0.3.9 + "@jridgewell/trace-mapping": 0.3.9 - '@csstools/color-helpers@5.1.0': {} + "@csstools/color-helpers@5.1.0": {} - '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + "@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)": dependencies: - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 - '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + "@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)": dependencies: - '@csstools/color-helpers': 5.1.0 - '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 + "@csstools/color-helpers": 5.1.0 + "@csstools/css-calc": 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + "@csstools/css-parser-algorithms": 3.0.5(@csstools/css-tokenizer@3.0.4) + "@csstools/css-tokenizer": 3.0.4 - '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': + "@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)": dependencies: - '@csstools/css-tokenizer': 3.0.4 + "@csstools/css-tokenizer": 3.0.4 - '@csstools/css-syntax-patches-for-csstree@1.0.21': {} + "@csstools/css-syntax-patches-for-csstree@1.0.21": {} - '@csstools/css-tokenizer@3.0.4': {} + "@csstools/css-tokenizer@3.0.4": {} - '@dabh/diagnostics@2.0.8': + "@dabh/diagnostics@2.0.8": dependencies: - '@so-ric/colorspace': 1.1.6 + "@so-ric/colorspace": 1.1.6 enabled: 2.0.0 kuler: 2.0.0 - '@datalust/winston-seq@3.0.1(encoding@0.1.13)(winston@3.19.0)': + "@datalust/winston-seq@3.0.1(encoding@0.1.13)(winston@3.19.0)": dependencies: seq-logging: 3.0.0(encoding@0.1.13) winston: 3.19.0 @@ -10065,22 +10172,17 @@ snapshots: transitivePeerDependencies: - encoding - '@date-vir/duration@8.1.0': + "@date-vir/duration@8.1.0": dependencies: - '@types/luxon': 3.7.1 + "@types/luxon": 3.7.1 luxon: 3.7.2 type-fest: 5.3.1 - '@dependents/detective-less@5.0.0': - dependencies: - gonzales-pe: 4.3.0 - node-source-walk: 7.0.0 + "@discoveryjs/json-ext@0.5.7": {} - '@discoveryjs/json-ext@0.5.7': {} + "@discoveryjs/json-ext@0.6.3": {} - '@discoveryjs/json-ext@0.6.3': {} - - '@electron/get@2.0.3': + "@electron/get@2.0.3": dependencies: debug: 4.4.3(supports-color@5.5.0) env-paths: 2.2.1 @@ -10094,145 +10196,145 @@ snapshots: transitivePeerDependencies: - supports-color - '@emnapi/core@1.2.0': + "@emnapi/core@1.2.0": dependencies: - '@emnapi/wasi-threads': 1.0.1 + "@emnapi/wasi-threads": 1.0.1 tslib: 2.8.1 - '@emnapi/runtime@1.2.0': + "@emnapi/runtime@1.2.0": dependencies: tslib: 2.8.1 - '@emnapi/wasi-threads@1.0.1': + "@emnapi/wasi-threads@1.0.1": dependencies: tslib: 2.8.1 - '@epic-web/invariant@1.0.0': {} + "@epic-web/invariant@1.0.0": {} - '@es-joy/jsdoccomment@0.82.0': + "@es-joy/jsdoccomment@0.83.0": dependencies: - '@types/estree': 1.0.8 - '@typescript-eslint/types': 8.53.1 - comment-parser: 1.4.4 + "@types/estree": 1.0.8 + "@typescript-eslint/types": 8.54.0 + comment-parser: 1.4.5 esquery: 1.7.0 jsdoc-type-pratt-parser: 7.1.0 - '@es-joy/resolve.exports@1.2.0': {} + "@es-joy/resolve.exports@1.2.0": {} - '@esbuild/aix-ppc64@0.27.2': + "@esbuild/aix-ppc64@0.27.2": optional: true - '@esbuild/android-arm64@0.27.2': + "@esbuild/android-arm64@0.27.2": optional: true - '@esbuild/android-arm@0.27.2': + "@esbuild/android-arm@0.27.2": optional: true - '@esbuild/android-x64@0.27.2': + "@esbuild/android-x64@0.27.2": optional: true - '@esbuild/darwin-arm64@0.27.2': + "@esbuild/darwin-arm64@0.27.2": optional: true - '@esbuild/darwin-x64@0.27.2': + "@esbuild/darwin-x64@0.27.2": optional: true - '@esbuild/freebsd-arm64@0.27.2': + "@esbuild/freebsd-arm64@0.27.2": optional: true - '@esbuild/freebsd-x64@0.27.2': + "@esbuild/freebsd-x64@0.27.2": optional: true - '@esbuild/linux-arm64@0.27.2': + "@esbuild/linux-arm64@0.27.2": optional: true - '@esbuild/linux-arm@0.27.2': + "@esbuild/linux-arm@0.27.2": optional: true - '@esbuild/linux-ia32@0.27.2': + "@esbuild/linux-ia32@0.27.2": optional: true - '@esbuild/linux-loong64@0.27.2': + "@esbuild/linux-loong64@0.27.2": optional: true - '@esbuild/linux-mips64el@0.27.2': + "@esbuild/linux-mips64el@0.27.2": optional: true - '@esbuild/linux-ppc64@0.27.2': + "@esbuild/linux-ppc64@0.27.2": optional: true - '@esbuild/linux-riscv64@0.27.2': + "@esbuild/linux-riscv64@0.27.2": optional: true - '@esbuild/linux-s390x@0.27.2': + "@esbuild/linux-s390x@0.27.2": optional: true - '@esbuild/linux-x64@0.27.2': + "@esbuild/linux-x64@0.27.2": optional: true - '@esbuild/netbsd-arm64@0.27.2': + "@esbuild/netbsd-arm64@0.27.2": optional: true - '@esbuild/netbsd-x64@0.27.2': + "@esbuild/netbsd-x64@0.27.2": optional: true - '@esbuild/openbsd-arm64@0.27.2': + "@esbuild/openbsd-arm64@0.27.2": optional: true - '@esbuild/openbsd-x64@0.27.2': + "@esbuild/openbsd-x64@0.27.2": optional: true - '@esbuild/openharmony-arm64@0.27.2': + "@esbuild/openharmony-arm64@0.27.2": optional: true - '@esbuild/sunos-x64@0.27.2': + "@esbuild/sunos-x64@0.27.2": optional: true - '@esbuild/win32-arm64@0.27.2': + "@esbuild/win32-arm64@0.27.2": optional: true - '@esbuild/win32-ia32@0.27.2': + "@esbuild/win32-ia32@0.27.2": optional: true - '@esbuild/win32-x64@0.27.2': + "@esbuild/win32-x64@0.27.2": optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.39.2(jiti@2.4.2))': + "@eslint-community/eslint-utils@4.7.0(eslint@9.39.2(jiti@2.4.2))": dependencies: eslint: 9.39.2(jiti@2.4.2) eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.0(eslint@9.39.2(jiti@2.4.2))': + "@eslint-community/eslint-utils@4.9.0(eslint@9.39.2(jiti@2.4.2))": dependencies: eslint: 9.39.2(jiti@2.4.2) eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2(jiti@2.4.2))': + "@eslint-community/eslint-utils@4.9.1(eslint@9.39.2(jiti@2.4.2))": dependencies: eslint: 9.39.2(jiti@2.4.2) eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.12.1': {} + "@eslint-community/regexpp@4.12.1": {} - '@eslint-community/regexpp@4.12.2': {} + "@eslint-community/regexpp@4.12.2": {} - '@eslint/config-array@0.21.1': + "@eslint/config-array@0.21.1": dependencies: - '@eslint/object-schema': 2.1.7 + "@eslint/object-schema": 2.1.7 debug: 4.4.1 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.4.2': + "@eslint/config-helpers@0.4.2": dependencies: - '@eslint/core': 0.17.0 + "@eslint/core": 0.17.0 - '@eslint/core@0.17.0': + "@eslint/core@0.17.0": dependencies: - '@types/json-schema': 7.0.15 + "@types/json-schema": 7.0.15 - '@eslint/eslintrc@3.3.1': + "@eslint/eslintrc@3.3.1": dependencies: ajv: 6.12.6 debug: 4.4.1 @@ -10246,174 +10348,174 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.39.2': {} + "@eslint/js@9.39.2": {} - '@eslint/object-schema@2.1.7': {} + "@eslint/object-schema@2.1.7": {} - '@eslint/plugin-kit@0.4.1': + "@eslint/plugin-kit@0.4.1": dependencies: - '@eslint/core': 0.17.0 + "@eslint/core": 0.17.0 levn: 0.4.1 - '@exodus/bytes@1.6.0': {} + "@exodus/bytes@1.11.0": {} - '@fortawesome/fontawesome-free@7.1.0': {} + "@fortawesome/fontawesome-free@7.1.0": {} - '@gerrit0/mini-shiki@3.20.0': + "@gerrit0/mini-shiki@3.20.0": dependencies: - '@shikijs/engine-oniguruma': 3.20.0 - '@shikijs/langs': 3.20.0 - '@shikijs/themes': 3.20.0 - '@shikijs/types': 3.20.0 - '@shikijs/vscode-textmate': 10.0.2 + "@shikijs/engine-oniguruma": 3.20.0 + "@shikijs/langs": 3.20.0 + "@shikijs/themes": 3.20.0 + "@shikijs/types": 3.20.0 + "@shikijs/vscode-textmate": 10.0.2 - '@humanfs/core@0.19.1': {} + "@humanfs/core@0.19.1": {} - '@humanfs/node@0.16.6': + "@humanfs/node@0.16.6": dependencies: - '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 + "@humanfs/core": 0.19.1 + "@humanwhocodes/retry": 0.3.1 - '@humanwhocodes/module-importer@1.0.1': {} + "@humanwhocodes/module-importer@1.0.1": {} - '@humanwhocodes/retry@0.3.1': {} + "@humanwhocodes/retry@0.3.1": {} - '@humanwhocodes/retry@0.4.3': {} + "@humanwhocodes/retry@0.4.3": {} - '@hutson/parse-repository-url@3.0.2': {} + "@hutson/parse-repository-url@3.0.2": {} - '@inquirer/ansi@1.0.2': {} + "@inquirer/ansi@1.0.2": {} - '@inquirer/checkbox@4.3.2(@types/node@25.0.10)': + "@inquirer/checkbox@4.3.2(@types/node@25.2.0)": dependencies: - '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@25.0.10) - '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@25.0.10) + "@inquirer/ansi": 1.0.2 + "@inquirer/core": 10.3.2(@types/node@25.2.0) + "@inquirer/figures": 1.0.15 + "@inquirer/type": 3.0.10(@types/node@25.2.0) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 25.0.10 + "@types/node": 25.2.0 - '@inquirer/confirm@5.1.21(@types/node@25.0.10)': + "@inquirer/confirm@5.1.21(@types/node@25.2.0)": dependencies: - '@inquirer/core': 10.3.2(@types/node@25.0.10) - '@inquirer/type': 3.0.10(@types/node@25.0.10) + "@inquirer/core": 10.3.2(@types/node@25.2.0) + "@inquirer/type": 3.0.10(@types/node@25.2.0) optionalDependencies: - '@types/node': 25.0.10 + "@types/node": 25.2.0 - '@inquirer/core@10.3.2(@types/node@25.0.10)': + "@inquirer/core@10.3.2(@types/node@25.2.0)": dependencies: - '@inquirer/ansi': 1.0.2 - '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@25.0.10) + "@inquirer/ansi": 1.0.2 + "@inquirer/figures": 1.0.15 + "@inquirer/type": 3.0.10(@types/node@25.2.0) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 25.0.10 + "@types/node": 25.2.0 - '@inquirer/editor@4.2.23(@types/node@25.0.10)': + "@inquirer/editor@4.2.23(@types/node@25.2.0)": dependencies: - '@inquirer/core': 10.3.2(@types/node@25.0.10) - '@inquirer/external-editor': 1.0.3(@types/node@25.0.10) - '@inquirer/type': 3.0.10(@types/node@25.0.10) + "@inquirer/core": 10.3.2(@types/node@25.2.0) + "@inquirer/external-editor": 1.0.3(@types/node@25.2.0) + "@inquirer/type": 3.0.10(@types/node@25.2.0) optionalDependencies: - '@types/node': 25.0.10 + "@types/node": 25.2.0 - '@inquirer/expand@4.0.23(@types/node@25.0.10)': + "@inquirer/expand@4.0.23(@types/node@25.2.0)": dependencies: - '@inquirer/core': 10.3.2(@types/node@25.0.10) - '@inquirer/type': 3.0.10(@types/node@25.0.10) + "@inquirer/core": 10.3.2(@types/node@25.2.0) + "@inquirer/type": 3.0.10(@types/node@25.2.0) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 25.0.10 + "@types/node": 25.2.0 - '@inquirer/external-editor@1.0.3(@types/node@25.0.10)': + "@inquirer/external-editor@1.0.3(@types/node@25.2.0)": dependencies: chardet: 2.1.1 iconv-lite: 0.7.1 optionalDependencies: - '@types/node': 25.0.10 + "@types/node": 25.2.0 - '@inquirer/figures@1.0.15': {} + "@inquirer/figures@1.0.15": {} - '@inquirer/input@4.3.1(@types/node@25.0.10)': + "@inquirer/input@4.3.1(@types/node@25.2.0)": dependencies: - '@inquirer/core': 10.3.2(@types/node@25.0.10) - '@inquirer/type': 3.0.10(@types/node@25.0.10) + "@inquirer/core": 10.3.2(@types/node@25.2.0) + "@inquirer/type": 3.0.10(@types/node@25.2.0) optionalDependencies: - '@types/node': 25.0.10 + "@types/node": 25.2.0 - '@inquirer/number@3.0.23(@types/node@25.0.10)': + "@inquirer/number@3.0.23(@types/node@25.2.0)": dependencies: - '@inquirer/core': 10.3.2(@types/node@25.0.10) - '@inquirer/type': 3.0.10(@types/node@25.0.10) + "@inquirer/core": 10.3.2(@types/node@25.2.0) + "@inquirer/type": 3.0.10(@types/node@25.2.0) optionalDependencies: - '@types/node': 25.0.10 + "@types/node": 25.2.0 - '@inquirer/password@4.0.23(@types/node@25.0.10)': + "@inquirer/password@4.0.23(@types/node@25.2.0)": dependencies: - '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@25.0.10) - '@inquirer/type': 3.0.10(@types/node@25.0.10) + "@inquirer/ansi": 1.0.2 + "@inquirer/core": 10.3.2(@types/node@25.2.0) + "@inquirer/type": 3.0.10(@types/node@25.2.0) optionalDependencies: - '@types/node': 25.0.10 - - '@inquirer/prompts@7.10.1(@types/node@25.0.10)': - dependencies: - '@inquirer/checkbox': 4.3.2(@types/node@25.0.10) - '@inquirer/confirm': 5.1.21(@types/node@25.0.10) - '@inquirer/editor': 4.2.23(@types/node@25.0.10) - '@inquirer/expand': 4.0.23(@types/node@25.0.10) - '@inquirer/input': 4.3.1(@types/node@25.0.10) - '@inquirer/number': 3.0.23(@types/node@25.0.10) - '@inquirer/password': 4.0.23(@types/node@25.0.10) - '@inquirer/rawlist': 4.1.11(@types/node@25.0.10) - '@inquirer/search': 3.2.2(@types/node@25.0.10) - '@inquirer/select': 4.4.2(@types/node@25.0.10) + "@types/node": 25.2.0 + + "@inquirer/prompts@7.10.1(@types/node@25.2.0)": + dependencies: + "@inquirer/checkbox": 4.3.2(@types/node@25.2.0) + "@inquirer/confirm": 5.1.21(@types/node@25.2.0) + "@inquirer/editor": 4.2.23(@types/node@25.2.0) + "@inquirer/expand": 4.0.23(@types/node@25.2.0) + "@inquirer/input": 4.3.1(@types/node@25.2.0) + "@inquirer/number": 3.0.23(@types/node@25.2.0) + "@inquirer/password": 4.0.23(@types/node@25.2.0) + "@inquirer/rawlist": 4.1.11(@types/node@25.2.0) + "@inquirer/search": 3.2.2(@types/node@25.2.0) + "@inquirer/select": 4.4.2(@types/node@25.2.0) optionalDependencies: - '@types/node': 25.0.10 + "@types/node": 25.2.0 - '@inquirer/rawlist@4.1.11(@types/node@25.0.10)': + "@inquirer/rawlist@4.1.11(@types/node@25.2.0)": dependencies: - '@inquirer/core': 10.3.2(@types/node@25.0.10) - '@inquirer/type': 3.0.10(@types/node@25.0.10) + "@inquirer/core": 10.3.2(@types/node@25.2.0) + "@inquirer/type": 3.0.10(@types/node@25.2.0) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 25.0.10 + "@types/node": 25.2.0 - '@inquirer/search@3.2.2(@types/node@25.0.10)': + "@inquirer/search@3.2.2(@types/node@25.2.0)": dependencies: - '@inquirer/core': 10.3.2(@types/node@25.0.10) - '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@25.0.10) + "@inquirer/core": 10.3.2(@types/node@25.2.0) + "@inquirer/figures": 1.0.15 + "@inquirer/type": 3.0.10(@types/node@25.2.0) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 25.0.10 + "@types/node": 25.2.0 - '@inquirer/select@4.4.2(@types/node@25.0.10)': + "@inquirer/select@4.4.2(@types/node@25.2.0)": dependencies: - '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@25.0.10) - '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@25.0.10) + "@inquirer/ansi": 1.0.2 + "@inquirer/core": 10.3.2(@types/node@25.2.0) + "@inquirer/figures": 1.0.15 + "@inquirer/type": 3.0.10(@types/node@25.2.0) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 25.0.10 + "@types/node": 25.2.0 - '@inquirer/type@3.0.10(@types/node@25.0.10)': + "@inquirer/type@3.0.10(@types/node@25.2.0)": optionalDependencies: - '@types/node': 25.0.10 + "@types/node": 25.2.0 - '@isaacs/balanced-match@4.0.1': {} + "@isaacs/balanced-match@4.0.1": {} - '@isaacs/brace-expansion@5.0.0': + "@isaacs/brace-expansion@5.0.0": dependencies: - '@isaacs/balanced-match': 4.0.1 + "@isaacs/balanced-match": 4.0.1 - '@isaacs/cliui@8.0.2': + "@isaacs/cliui@8.0.2": dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 @@ -10422,77 +10524,67 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@isaacs/fs-minipass@4.0.1': + "@isaacs/fs-minipass@4.0.1": dependencies: minipass: 7.1.2 - '@isaacs/string-locale-compare@1.1.0': {} + "@isaacs/string-locale-compare@1.1.0": {} - '@jest/diff-sequences@30.0.1': {} + "@jest/diff-sequences@30.0.1": {} - '@jest/get-type@30.1.0': {} + "@jest/get-type@30.1.0": {} - '@jest/schemas@30.0.5': + "@jest/schemas@30.0.5": dependencies: - '@sinclair/typebox': 0.34.41 + "@sinclair/typebox": 0.34.41 - '@jridgewell/gen-mapping@0.3.12': + "@jridgewell/gen-mapping@0.3.5": dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.31 + "@jridgewell/set-array": 1.2.1 + "@jridgewell/sourcemap-codec": 1.5.5 + "@jridgewell/trace-mapping": 0.3.31 - '@jridgewell/gen-mapping@0.3.5': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.31 - - '@jridgewell/remapping@2.3.5': - dependencies: - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.31 + "@jridgewell/resolve-uri@3.1.1": {} - '@jridgewell/resolve-uri@3.1.1': {} + "@jridgewell/set-array@1.2.1": {} - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/source-map@0.3.5': + "@jridgewell/source-map@0.3.5": dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 + "@jridgewell/gen-mapping": 0.3.5 + "@jridgewell/trace-mapping": 0.3.25 - '@jridgewell/sourcemap-codec@1.5.0': {} + "@jridgewell/sourcemap-codec@1.5.0": {} - '@jridgewell/sourcemap-codec@1.5.5': {} + "@jridgewell/sourcemap-codec@1.5.5": {} - '@jridgewell/trace-mapping@0.3.25': + "@jridgewell/trace-mapping@0.3.25": dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.5.5 + "@jridgewell/resolve-uri": 3.1.1 + "@jridgewell/sourcemap-codec": 1.5.5 - '@jridgewell/trace-mapping@0.3.29': + "@jridgewell/trace-mapping@0.3.29": dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.5.0 + "@jridgewell/resolve-uri": 3.1.1 + "@jridgewell/sourcemap-codec": 1.5.0 - '@jridgewell/trace-mapping@0.3.31': + "@jridgewell/trace-mapping@0.3.31": dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.5.5 + "@jridgewell/resolve-uri": 3.1.1 + "@jridgewell/sourcemap-codec": 1.5.5 - '@jridgewell/trace-mapping@0.3.9': + "@jridgewell/trace-mapping@0.3.9": dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.5.5 + "@jridgewell/resolve-uri": 3.1.1 + "@jridgewell/sourcemap-codec": 1.5.5 - '@lerna/create@9.0.3(@swc/core@1.15.10)(@types/node@25.0.10)(typescript@5.9.3)': + "@lerna/create@9.0.3(@swc/core@1.15.11)(@types/node@25.2.0)(typescript@5.9.3)": dependencies: - '@npmcli/arborist': 9.1.6 - '@npmcli/package-json': 7.0.2 - '@npmcli/run-script': 10.0.2 - '@nx/devkit': 22.3.3(nx@22.4.1(@swc/core@1.15.10)) - '@octokit/plugin-enterprise-rest': 6.0.1 - '@octokit/rest': 20.1.2 + "@npmcli/arborist": 9.1.6 + "@npmcli/package-json": 7.0.2 + "@npmcli/run-script": 10.0.2 + "@nx/devkit": 22.3.3(nx@22.4.4(@swc/core@1.15.11)) + "@octokit/plugin-enterprise-rest": 6.0.1 + "@octokit/rest": 20.1.2 aproba: 2.0.0 byte-size: 8.1.1 chalk: 4.1.0 @@ -10512,7 +10604,7 @@ snapshots: has-unicode: 2.0.1 ini: 1.3.8 init-package-json: 8.2.2 - inquirer: 12.9.6(@types/node@25.0.10) + inquirer: 12.9.6(@types/node@25.2.0) is-ci: 3.0.1 is-stream: 2.0.0 js-yaml: 4.1.1 @@ -10525,7 +10617,7 @@ snapshots: npm-package-arg: 13.0.1 npm-packlist: 10.0.3 npm-registry-fetch: 19.1.0 - nx: 22.4.1(@swc/core@1.15.10) + nx: 22.4.4(@swc/core@1.15.11) p-map: 4.0.0 p-map-series: 2.1.0 p-queue: 6.6.2 @@ -10555,42 +10647,42 @@ snapshots: yargs: 17.7.2 yargs-parser: 21.1.1 transitivePeerDependencies: - - '@swc-node/register' - - '@swc/core' - - '@types/node' + - "@swc-node/register" + - "@swc/core" + - "@types/node" - babel-plugin-macros - debug - supports-color - typescript - '@microsoft/tsdoc-config@0.18.0': + "@microsoft/tsdoc-config@0.18.0": dependencies: - '@microsoft/tsdoc': 0.16.0 + "@microsoft/tsdoc": 0.16.0 ajv: 8.12.0 jju: 1.4.0 resolve: 1.22.10 - '@microsoft/tsdoc@0.16.0': {} + "@microsoft/tsdoc@0.16.0": {} - '@napi-rs/wasm-runtime@0.2.4': + "@napi-rs/wasm-runtime@0.2.4": dependencies: - '@emnapi/core': 1.2.0 - '@emnapi/runtime': 1.2.0 - '@tybys/wasm-util': 0.9.0 + "@emnapi/core": 1.2.0 + "@emnapi/runtime": 1.2.0 + "@tybys/wasm-util": 0.9.0 - '@nodelib/fs.scandir@2.1.5': + "@nodelib/fs.scandir@2.1.5": dependencies: - '@nodelib/fs.stat': 2.0.5 + "@nodelib/fs.stat": 2.0.5 run-parallel: 1.2.0 - '@nodelib/fs.stat@2.0.5': {} + "@nodelib/fs.stat@2.0.5": {} - '@nodelib/fs.walk@1.2.8': + "@nodelib/fs.walk@1.2.8": dependencies: - '@nodelib/fs.scandir': 2.1.5 + "@nodelib/fs.scandir": 2.1.5 fastq: 1.15.0 - '@npmcli/agent@3.0.0': + "@npmcli/agent@3.0.0": dependencies: agent-base: 7.1.3 http-proxy-agent: 7.0.2 @@ -10600,7 +10692,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@npmcli/agent@4.0.0': + "@npmcli/agent@4.0.0": dependencies: agent-base: 7.1.3 http-proxy-agent: 7.0.2 @@ -10610,19 +10702,19 @@ snapshots: transitivePeerDependencies: - supports-color - '@npmcli/arborist@9.1.6': - dependencies: - '@isaacs/string-locale-compare': 1.1.0 - '@npmcli/fs': 4.0.0 - '@npmcli/installed-package-contents': 3.0.0 - '@npmcli/map-workspaces': 5.0.3 - '@npmcli/metavuln-calculator': 9.0.3 - '@npmcli/name-from-folder': 3.0.0 - '@npmcli/node-gyp': 4.0.0 - '@npmcli/package-json': 7.0.2 - '@npmcli/query': 4.0.1 - '@npmcli/redact': 3.2.2 - '@npmcli/run-script': 10.0.2 + "@npmcli/arborist@9.1.6": + dependencies: + "@isaacs/string-locale-compare": 1.1.0 + "@npmcli/fs": 4.0.0 + "@npmcli/installed-package-contents": 3.0.0 + "@npmcli/map-workspaces": 5.0.3 + "@npmcli/metavuln-calculator": 9.0.3 + "@npmcli/name-from-folder": 3.0.0 + "@npmcli/node-gyp": 4.0.0 + "@npmcli/package-json": 7.0.2 + "@npmcli/query": 4.0.1 + "@npmcli/redact": 3.2.2 + "@npmcli/run-script": 10.0.2 bin-links: 5.0.0 cacache: 20.0.3 common-ancestor-path: 1.0.1 @@ -10641,24 +10733,24 @@ snapshots: proggy: 3.0.0 promise-all-reject-late: 1.0.1 promise-call-limit: 3.0.1 - semver: 7.7.2 + semver: 7.7.3 ssri: 12.0.0 treeverse: 3.0.0 walk-up-path: 4.0.0 transitivePeerDependencies: - supports-color - '@npmcli/fs@4.0.0': + "@npmcli/fs@4.0.0": dependencies: semver: 7.7.3 - '@npmcli/fs@5.0.0': + "@npmcli/fs@5.0.0": dependencies: semver: 7.7.3 - '@npmcli/git@6.0.3': + "@npmcli/git@6.0.3": dependencies: - '@npmcli/promise-spawn': 8.0.3 + "@npmcli/promise-spawn": 8.0.3 ini: 5.0.0 lru-cache: 10.4.3 npm-pick-manifest: 10.0.0 @@ -10667,9 +10759,9 @@ snapshots: semver: 7.7.3 which: 5.0.0 - '@npmcli/git@7.0.1': + "@npmcli/git@7.0.1": dependencies: - '@npmcli/promise-spawn': 9.0.1 + "@npmcli/promise-spawn": 9.0.1 ini: 6.0.0 lru-cache: 11.2.4 npm-pick-manifest: 11.0.3 @@ -10678,24 +10770,24 @@ snapshots: semver: 7.7.3 which: 6.0.0 - '@npmcli/installed-package-contents@3.0.0': + "@npmcli/installed-package-contents@3.0.0": dependencies: npm-bundled: 4.0.0 npm-normalize-package-bin: 4.0.0 - '@npmcli/installed-package-contents@4.0.0': + "@npmcli/installed-package-contents@4.0.0": dependencies: npm-bundled: 5.0.0 npm-normalize-package-bin: 5.0.0 - '@npmcli/map-workspaces@5.0.3': + "@npmcli/map-workspaces@5.0.3": dependencies: - '@npmcli/name-from-folder': 4.0.0 - '@npmcli/package-json': 7.0.2 + "@npmcli/name-from-folder": 4.0.0 + "@npmcli/package-json": 7.0.2 glob: 13.0.0 minimatch: 10.1.1 - '@npmcli/metavuln-calculator@9.0.3': + "@npmcli/metavuln-calculator@9.0.3": dependencies: cacache: 20.0.3 json-parse-even-better-errors: 5.0.0 @@ -10705,494 +10797,482 @@ snapshots: transitivePeerDependencies: - supports-color - '@npmcli/name-from-folder@3.0.0': {} + "@npmcli/name-from-folder@3.0.0": {} - '@npmcli/name-from-folder@4.0.0': {} + "@npmcli/name-from-folder@4.0.0": {} - '@npmcli/node-gyp@4.0.0': {} + "@npmcli/node-gyp@4.0.0": {} - '@npmcli/node-gyp@5.0.0': {} + "@npmcli/node-gyp@5.0.0": {} - '@npmcli/package-json@7.0.2': + "@npmcli/package-json@7.0.2": dependencies: - '@npmcli/git': 7.0.1 + "@npmcli/git": 7.0.1 glob: 11.1.0 hosted-git-info: 9.0.2 json-parse-even-better-errors: 5.0.0 proc-log: 6.1.0 - semver: 7.7.2 + semver: 7.7.3 validate-npm-package-license: 3.0.4 - '@npmcli/promise-spawn@8.0.3': + "@npmcli/promise-spawn@8.0.3": dependencies: which: 5.0.0 - '@npmcli/promise-spawn@9.0.1': + "@npmcli/promise-spawn@9.0.1": dependencies: which: 6.0.0 - '@npmcli/query@4.0.1': + "@npmcli/query@4.0.1": dependencies: postcss-selector-parser: 7.1.1 - '@npmcli/redact@3.2.2': {} + "@npmcli/redact@3.2.2": {} - '@npmcli/run-script@10.0.2': + "@npmcli/run-script@10.0.2": dependencies: - '@npmcli/node-gyp': 5.0.0 - '@npmcli/package-json': 7.0.2 - '@npmcli/promise-spawn': 9.0.1 + "@npmcli/node-gyp": 5.0.0 + "@npmcli/package-json": 7.0.2 + "@npmcli/promise-spawn": 9.0.1 node-gyp: 11.5.0 proc-log: 6.1.0 which: 5.0.0 transitivePeerDependencies: - supports-color - '@nrwl/nx-cloud@19.1.0': + "@nrwl/nx-cloud@19.1.0": dependencies: nx-cloud: 19.1.0 transitivePeerDependencies: - debug - '@nx/devkit@22.3.3(nx@22.4.1(@swc/core@1.15.10))': + "@nx/devkit@22.3.3(nx@22.4.4(@swc/core@1.15.11))": dependencies: - '@zkochan/js-yaml': 0.0.7 + "@zkochan/js-yaml": 0.0.7 ejs: 3.1.9 enquirer: 2.3.6 minimatch: 9.0.3 - nx: 22.4.1(@swc/core@1.15.10) - semver: 7.7.2 + nx: 22.4.4(@swc/core@1.15.11) + semver: 7.7.3 tslib: 2.8.1 yargs-parser: 21.1.1 - '@nx/nx-darwin-arm64@22.4.1': + "@nx/nx-darwin-arm64@22.4.4": optional: true - '@nx/nx-darwin-x64@22.4.1': + "@nx/nx-darwin-x64@22.4.4": optional: true - '@nx/nx-freebsd-x64@22.4.1': + "@nx/nx-freebsd-x64@22.4.4": optional: true - '@nx/nx-linux-arm-gnueabihf@22.4.1': + "@nx/nx-linux-arm-gnueabihf@22.4.4": optional: true - '@nx/nx-linux-arm64-gnu@22.4.1': + "@nx/nx-linux-arm64-gnu@22.4.4": optional: true - '@nx/nx-linux-arm64-musl@22.4.1': + "@nx/nx-linux-arm64-musl@22.4.4": optional: true - '@nx/nx-linux-x64-gnu@22.4.1': + "@nx/nx-linux-x64-gnu@22.4.4": optional: true - '@nx/nx-linux-x64-musl@22.4.1': + "@nx/nx-linux-x64-musl@22.4.4": optional: true - '@nx/nx-win32-arm64-msvc@22.4.1': + "@nx/nx-win32-arm64-msvc@22.4.4": optional: true - '@nx/nx-win32-x64-msvc@22.4.1': + "@nx/nx-win32-x64-msvc@22.4.4": optional: true - '@octokit/auth-token@4.0.0': {} + "@octokit/auth-token@4.0.0": {} - '@octokit/core@5.2.1': + "@octokit/core@5.2.1": dependencies: - '@octokit/auth-token': 4.0.0 - '@octokit/graphql': 7.1.1 - '@octokit/request': 8.4.1 - '@octokit/request-error': 5.1.1 - '@octokit/types': 13.10.0 + "@octokit/auth-token": 4.0.0 + "@octokit/graphql": 7.1.1 + "@octokit/request": 8.4.1 + "@octokit/request-error": 5.1.1 + "@octokit/types": 13.10.0 before-after-hook: 2.2.3 universal-user-agent: 6.0.0 - '@octokit/endpoint@9.0.6': + "@octokit/endpoint@9.0.6": dependencies: - '@octokit/types': 13.10.0 + "@octokit/types": 13.10.0 universal-user-agent: 6.0.0 - '@octokit/graphql@7.1.1': + "@octokit/graphql@7.1.1": dependencies: - '@octokit/request': 8.4.1 - '@octokit/types': 13.10.0 + "@octokit/request": 8.4.1 + "@octokit/types": 13.10.0 universal-user-agent: 6.0.0 - '@octokit/openapi-types@24.2.0': {} + "@octokit/openapi-types@24.2.0": {} - '@octokit/plugin-enterprise-rest@6.0.1': {} + "@octokit/plugin-enterprise-rest@6.0.1": {} - '@octokit/plugin-paginate-rest@11.4.4-cjs.2(@octokit/core@5.2.1)': + "@octokit/plugin-paginate-rest@11.4.4-cjs.2(@octokit/core@5.2.1)": dependencies: - '@octokit/core': 5.2.1 - '@octokit/types': 13.10.0 + "@octokit/core": 5.2.1 + "@octokit/types": 13.10.0 - '@octokit/plugin-request-log@4.0.1(@octokit/core@5.2.1)': + "@octokit/plugin-request-log@4.0.1(@octokit/core@5.2.1)": dependencies: - '@octokit/core': 5.2.1 + "@octokit/core": 5.2.1 - '@octokit/plugin-rest-endpoint-methods@13.3.2-cjs.1(@octokit/core@5.2.1)': + "@octokit/plugin-rest-endpoint-methods@13.3.2-cjs.1(@octokit/core@5.2.1)": dependencies: - '@octokit/core': 5.2.1 - '@octokit/types': 13.10.0 + "@octokit/core": 5.2.1 + "@octokit/types": 13.10.0 - '@octokit/request-error@5.1.1': + "@octokit/request-error@5.1.1": dependencies: - '@octokit/types': 13.10.0 + "@octokit/types": 13.10.0 deprecation: 2.3.1 once: 1.4.0 - '@octokit/request@8.4.1': + "@octokit/request@8.4.1": dependencies: - '@octokit/endpoint': 9.0.6 - '@octokit/request-error': 5.1.1 - '@octokit/types': 13.10.0 + "@octokit/endpoint": 9.0.6 + "@octokit/request-error": 5.1.1 + "@octokit/types": 13.10.0 universal-user-agent: 6.0.0 - '@octokit/rest@20.1.2': + "@octokit/rest@20.1.2": dependencies: - '@octokit/core': 5.2.1 - '@octokit/plugin-paginate-rest': 11.4.4-cjs.2(@octokit/core@5.2.1) - '@octokit/plugin-request-log': 4.0.1(@octokit/core@5.2.1) - '@octokit/plugin-rest-endpoint-methods': 13.3.2-cjs.1(@octokit/core@5.2.1) + "@octokit/core": 5.2.1 + "@octokit/plugin-paginate-rest": 11.4.4-cjs.2(@octokit/core@5.2.1) + "@octokit/plugin-request-log": 4.0.1(@octokit/core@5.2.1) + "@octokit/plugin-rest-endpoint-methods": 13.3.2-cjs.1(@octokit/core@5.2.1) - '@octokit/types@13.10.0': + "@octokit/types@13.10.0": dependencies: - '@octokit/openapi-types': 24.2.0 + "@octokit/openapi-types": 24.2.0 - '@parcel/watcher-android-arm64@2.5.1': + "@parcel/watcher-android-arm64@2.5.1": optional: true - '@parcel/watcher-darwin-arm64@2.5.1': + "@parcel/watcher-darwin-arm64@2.5.1": optional: true - '@parcel/watcher-darwin-x64@2.5.1': + "@parcel/watcher-darwin-x64@2.5.1": optional: true - '@parcel/watcher-freebsd-x64@2.5.1': + "@parcel/watcher-freebsd-x64@2.5.1": optional: true - '@parcel/watcher-linux-arm-glibc@2.5.1': + "@parcel/watcher-linux-arm-glibc@2.5.1": optional: true - '@parcel/watcher-linux-arm-musl@2.5.1': + "@parcel/watcher-linux-arm-musl@2.5.1": optional: true - '@parcel/watcher-linux-arm64-glibc@2.5.1': + "@parcel/watcher-linux-arm64-glibc@2.5.1": optional: true - '@parcel/watcher-linux-arm64-musl@2.5.1': + "@parcel/watcher-linux-arm64-musl@2.5.1": optional: true - '@parcel/watcher-linux-x64-glibc@2.5.1': + "@parcel/watcher-linux-x64-glibc@2.5.1": optional: true - '@parcel/watcher-linux-x64-musl@2.5.1': + "@parcel/watcher-linux-x64-musl@2.5.1": optional: true - '@parcel/watcher-win32-arm64@2.5.1': + "@parcel/watcher-win32-arm64@2.5.1": optional: true - '@parcel/watcher-win32-ia32@2.5.1': + "@parcel/watcher-win32-ia32@2.5.1": optional: true - '@parcel/watcher-win32-x64@2.5.1': + "@parcel/watcher-win32-x64@2.5.1": optional: true - '@parcel/watcher@2.5.1': + "@parcel/watcher@2.5.1": dependencies: detect-libc: 1.0.3 is-glob: 4.0.3 micromatch: 4.0.5 node-addon-api: 7.1.1 optionalDependencies: - '@parcel/watcher-android-arm64': 2.5.1 - '@parcel/watcher-darwin-arm64': 2.5.1 - '@parcel/watcher-darwin-x64': 2.5.1 - '@parcel/watcher-freebsd-x64': 2.5.1 - '@parcel/watcher-linux-arm-glibc': 2.5.1 - '@parcel/watcher-linux-arm-musl': 2.5.1 - '@parcel/watcher-linux-arm64-glibc': 2.5.1 - '@parcel/watcher-linux-arm64-musl': 2.5.1 - '@parcel/watcher-linux-x64-glibc': 2.5.1 - '@parcel/watcher-linux-x64-musl': 2.5.1 - '@parcel/watcher-win32-arm64': 2.5.1 - '@parcel/watcher-win32-ia32': 2.5.1 - '@parcel/watcher-win32-x64': 2.5.1 + "@parcel/watcher-android-arm64": 2.5.1 + "@parcel/watcher-darwin-arm64": 2.5.1 + "@parcel/watcher-darwin-x64": 2.5.1 + "@parcel/watcher-freebsd-x64": 2.5.1 + "@parcel/watcher-linux-arm-glibc": 2.5.1 + "@parcel/watcher-linux-arm-musl": 2.5.1 + "@parcel/watcher-linux-arm64-glibc": 2.5.1 + "@parcel/watcher-linux-arm64-musl": 2.5.1 + "@parcel/watcher-linux-x64-glibc": 2.5.1 + "@parcel/watcher-linux-x64-musl": 2.5.1 + "@parcel/watcher-win32-arm64": 2.5.1 + "@parcel/watcher-win32-ia32": 2.5.1 + "@parcel/watcher-win32-x64": 2.5.1 optional: true - '@pkgjs/parseargs@0.11.0': + "@pkgjs/parseargs@0.11.0": optional: true - '@pkgr/core@0.2.9': {} + "@pkgr/core@0.2.9": {} - '@polka/url@1.0.0-next.25': {} + "@polka/url@1.0.0-next.25": {} - '@popperjs/core@2.11.8': {} + "@popperjs/core@2.11.8": {} - '@putout/minify@6.0.0': {} + "@putout/minify@6.0.0": {} - '@rollup/rollup-android-arm-eabi@4.55.1': + "@rollup/rollup-android-arm-eabi@4.55.1": optional: true - '@rollup/rollup-android-arm64@4.55.1': + "@rollup/rollup-android-arm64@4.55.1": optional: true - '@rollup/rollup-darwin-arm64@4.55.1': + "@rollup/rollup-darwin-arm64@4.55.1": optional: true - '@rollup/rollup-darwin-x64@4.55.1': + "@rollup/rollup-darwin-x64@4.55.1": optional: true - '@rollup/rollup-freebsd-arm64@4.55.1': + "@rollup/rollup-freebsd-arm64@4.55.1": optional: true - '@rollup/rollup-freebsd-x64@4.55.1': + "@rollup/rollup-freebsd-x64@4.55.1": optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.55.1': + "@rollup/rollup-linux-arm-gnueabihf@4.55.1": optional: true - '@rollup/rollup-linux-arm-musleabihf@4.55.1': + "@rollup/rollup-linux-arm-musleabihf@4.55.1": optional: true - '@rollup/rollup-linux-arm64-gnu@4.55.1': + "@rollup/rollup-linux-arm64-gnu@4.55.1": optional: true - '@rollup/rollup-linux-arm64-musl@4.55.1': + "@rollup/rollup-linux-arm64-musl@4.55.1": optional: true - '@rollup/rollup-linux-loong64-gnu@4.55.1': + "@rollup/rollup-linux-loong64-gnu@4.55.1": optional: true - '@rollup/rollup-linux-loong64-musl@4.55.1': + "@rollup/rollup-linux-loong64-musl@4.55.1": optional: true - '@rollup/rollup-linux-ppc64-gnu@4.55.1': + "@rollup/rollup-linux-ppc64-gnu@4.55.1": optional: true - '@rollup/rollup-linux-ppc64-musl@4.55.1': + "@rollup/rollup-linux-ppc64-musl@4.55.1": optional: true - '@rollup/rollup-linux-riscv64-gnu@4.55.1': + "@rollup/rollup-linux-riscv64-gnu@4.55.1": optional: true - '@rollup/rollup-linux-riscv64-musl@4.55.1': + "@rollup/rollup-linux-riscv64-musl@4.55.1": optional: true - '@rollup/rollup-linux-s390x-gnu@4.55.1': + "@rollup/rollup-linux-s390x-gnu@4.55.1": optional: true - '@rollup/rollup-linux-x64-gnu@4.55.1': + "@rollup/rollup-linux-x64-gnu@4.55.1": optional: true - '@rollup/rollup-linux-x64-musl@4.55.1': + "@rollup/rollup-linux-x64-musl@4.55.1": optional: true - '@rollup/rollup-openbsd-x64@4.55.1': + "@rollup/rollup-openbsd-x64@4.55.1": optional: true - '@rollup/rollup-openharmony-arm64@4.55.1': + "@rollup/rollup-openharmony-arm64@4.55.1": optional: true - '@rollup/rollup-win32-arm64-msvc@4.55.1': + "@rollup/rollup-win32-arm64-msvc@4.55.1": optional: true - '@rollup/rollup-win32-ia32-msvc@4.55.1': + "@rollup/rollup-win32-ia32-msvc@4.55.1": optional: true - '@rollup/rollup-win32-x64-gnu@4.55.1': + "@rollup/rollup-win32-x64-gnu@4.55.1": optional: true - '@rollup/rollup-win32-x64-msvc@4.55.1': + "@rollup/rollup-win32-x64-msvc@4.55.1": optional: true - '@rtsao/scc@1.1.0': {} + "@rtsao/scc@1.1.0": {} - '@shikijs/engine-oniguruma@3.20.0': + "@shikijs/engine-oniguruma@3.20.0": dependencies: - '@shikijs/types': 3.20.0 - '@shikijs/vscode-textmate': 10.0.2 + "@shikijs/types": 3.20.0 + "@shikijs/vscode-textmate": 10.0.2 - '@shikijs/langs@3.20.0': + "@shikijs/langs@3.20.0": dependencies: - '@shikijs/types': 3.20.0 + "@shikijs/types": 3.20.0 - '@shikijs/themes@3.20.0': + "@shikijs/themes@3.20.0": dependencies: - '@shikijs/types': 3.20.0 + "@shikijs/types": 3.20.0 - '@shikijs/types@3.20.0': + "@shikijs/types@3.20.0": dependencies: - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 + "@shikijs/vscode-textmate": 10.0.2 + "@types/hast": 3.0.4 - '@shikijs/vscode-textmate@10.0.2': {} + "@shikijs/vscode-textmate@10.0.2": {} - '@sigstore/bundle@4.0.0': + "@sigstore/bundle@4.0.0": dependencies: - '@sigstore/protobuf-specs': 0.5.0 + "@sigstore/protobuf-specs": 0.5.0 - '@sigstore/core@3.1.0': {} + "@sigstore/core@3.1.0": {} - '@sigstore/protobuf-specs@0.5.0': {} + "@sigstore/protobuf-specs@0.5.0": {} - '@sigstore/sign@4.1.0': + "@sigstore/sign@4.1.0": dependencies: - '@sigstore/bundle': 4.0.0 - '@sigstore/core': 3.1.0 - '@sigstore/protobuf-specs': 0.5.0 + "@sigstore/bundle": 4.0.0 + "@sigstore/core": 3.1.0 + "@sigstore/protobuf-specs": 0.5.0 make-fetch-happen: 15.0.3 proc-log: 6.1.0 promise-retry: 2.0.1 transitivePeerDependencies: - supports-color - '@sigstore/tuf@4.0.1': + "@sigstore/tuf@4.0.1": dependencies: - '@sigstore/protobuf-specs': 0.5.0 + "@sigstore/protobuf-specs": 0.5.0 tuf-js: 4.1.0 transitivePeerDependencies: - supports-color - '@sigstore/verify@3.1.0': + "@sigstore/verify@3.1.0": dependencies: - '@sigstore/bundle': 4.0.0 - '@sigstore/core': 3.1.0 - '@sigstore/protobuf-specs': 0.5.0 + "@sigstore/bundle": 4.0.0 + "@sigstore/core": 3.1.0 + "@sigstore/protobuf-specs": 0.5.0 - '@sinclair/typebox@0.34.41': {} + "@sinclair/typebox@0.34.41": {} - '@sindresorhus/base62@1.0.0': {} + "@sindresorhus/base62@1.0.0": {} - '@sindresorhus/is@4.6.0': {} + "@sindresorhus/is@4.6.0": {} - '@so-ric/colorspace@1.1.6': + "@so-ric/colorspace@1.1.6": dependencies: color: 5.0.3 text-hex: 1.0.0 - '@sphinxxxx/color-conversion@2.2.2': {} + "@sphinxxxx/color-conversion@2.2.2": {} - '@standard-schema/spec@1.1.0': {} + "@standard-schema/spec@1.1.0": {} - '@stylistic/eslint-plugin@5.7.0(eslint@9.39.2(jiti@2.4.2))': + "@stylistic/eslint-plugin@5.7.1(eslint@9.39.2(jiti@2.4.2))": dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.4.2)) - '@typescript-eslint/types': 8.53.1 + "@eslint-community/eslint-utils": 4.9.1(eslint@9.39.2(jiti@2.4.2)) + "@typescript-eslint/types": 8.54.0 eslint: 9.39.2(jiti@2.4.2) - eslint-visitor-keys: 5.0.0 - espree: 11.1.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 estraverse: 5.3.0 picomatch: 4.0.3 - '@swc/core-darwin-arm64@1.15.10': + "@swc/core-darwin-arm64@1.15.11": optional: true - '@swc/core-darwin-x64@1.15.10': + "@swc/core-darwin-x64@1.15.11": optional: true - '@swc/core-linux-arm-gnueabihf@1.15.10': + "@swc/core-linux-arm-gnueabihf@1.15.11": optional: true - '@swc/core-linux-arm64-gnu@1.15.10': + "@swc/core-linux-arm64-gnu@1.15.11": optional: true - '@swc/core-linux-arm64-musl@1.15.10': + "@swc/core-linux-arm64-musl@1.15.11": optional: true - '@swc/core-linux-x64-gnu@1.15.10': + "@swc/core-linux-x64-gnu@1.15.11": optional: true - '@swc/core-linux-x64-musl@1.15.10': + "@swc/core-linux-x64-musl@1.15.11": optional: true - '@swc/core-win32-arm64-msvc@1.15.10': + "@swc/core-win32-arm64-msvc@1.15.11": optional: true - '@swc/core-win32-ia32-msvc@1.15.10': + "@swc/core-win32-ia32-msvc@1.15.11": optional: true - '@swc/core-win32-x64-msvc@1.15.10': + "@swc/core-win32-x64-msvc@1.15.11": optional: true - '@swc/core@1.15.10': + "@swc/core@1.15.11": dependencies: - '@swc/counter': 0.1.3 - '@swc/types': 0.1.25 + "@swc/counter": 0.1.3 + "@swc/types": 0.1.25 optionalDependencies: - '@swc/core-darwin-arm64': 1.15.10 - '@swc/core-darwin-x64': 1.15.10 - '@swc/core-linux-arm-gnueabihf': 1.15.10 - '@swc/core-linux-arm64-gnu': 1.15.10 - '@swc/core-linux-arm64-musl': 1.15.10 - '@swc/core-linux-x64-gnu': 1.15.10 - '@swc/core-linux-x64-musl': 1.15.10 - '@swc/core-win32-arm64-msvc': 1.15.10 - '@swc/core-win32-ia32-msvc': 1.15.10 - '@swc/core-win32-x64-msvc': 1.15.10 + "@swc/core-darwin-arm64": 1.15.11 + "@swc/core-darwin-x64": 1.15.11 + "@swc/core-linux-arm-gnueabihf": 1.15.11 + "@swc/core-linux-arm64-gnu": 1.15.11 + "@swc/core-linux-arm64-musl": 1.15.11 + "@swc/core-linux-x64-gnu": 1.15.11 + "@swc/core-linux-x64-musl": 1.15.11 + "@swc/core-win32-arm64-msvc": 1.15.11 + "@swc/core-win32-ia32-msvc": 1.15.11 + "@swc/core-win32-x64-msvc": 1.15.11 - '@swc/counter@0.1.3': {} + "@swc/counter@0.1.3": {} - '@swc/types@0.1.25': + "@swc/types@0.1.25": dependencies: - '@swc/counter': 0.1.3 + "@swc/counter": 0.1.3 - '@szmarczak/http-timer@4.0.6': + "@szmarczak/http-timer@4.0.6": dependencies: defer-to-connect: 2.0.1 - '@ts-graphviz/adapter@2.0.3': - dependencies: - '@ts-graphviz/common': 2.1.2 + "@tsconfig/node10@1.0.9": {} - '@ts-graphviz/ast@2.0.3': - dependencies: - '@ts-graphviz/common': 2.1.2 - - '@ts-graphviz/common@2.1.2': {} - - '@ts-graphviz/core@2.0.3': - dependencies: - '@ts-graphviz/ast': 2.0.3 - '@ts-graphviz/common': 2.1.2 - - '@tsconfig/node10@1.0.9': {} + "@tsconfig/node12@1.0.11": {} - '@tsconfig/node12@1.0.11': {} + "@tsconfig/node14@1.0.3": {} - '@tsconfig/node14@1.0.3': {} + "@tsconfig/node16@1.0.4": {} - '@tsconfig/node16@1.0.4': {} - - '@tsparticles/cli@3.0.16(@swc/core@1.15.10)(@types/eslint@8.56.6)(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3))(jiti@2.4.2)(webpack-cli@6.0.1)': + "@tsparticles/cli@3.1.3(@types/eslint@8.56.6)(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3))(jiti@2.4.2)(webpack-cli@6.0.1)": dependencies: - '@tsparticles/eslint-config': 3.0.11(eslint@9.39.2(jiti@2.4.2)) - '@tsparticles/prettier-config': 3.0.11 - '@tsparticles/tsconfig': 3.0.9 - '@tsparticles/webpack-plugin': 3.0.11(@swc/core@1.15.10)(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3))(jiti@2.4.2) - commander: 14.0.2 + "@swc/core": 1.15.11 + "@tsparticles/depcruise-config": 3.1.2(dependency-cruiser@17.3.7) + "@tsparticles/eslint-config": 3.1.1(eslint@9.39.2(jiti@2.4.2)) + "@tsparticles/prettier-config": 3.0.11 + "@tsparticles/tsconfig": 3.1.0 + "@tsparticles/webpack-plugin": 3.1.2(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3))(jiti@2.4.2) + commander: 14.0.3 + dependency-cruiser: 17.3.7 eslint: 9.39.2(jiti@2.4.2) eslint-config-prettier: 10.1.8(eslint@9.39.2(jiti@2.4.2)) - eslint-plugin-jsdoc: 62.3.1(eslint@9.39.2(jiti@2.4.2)) + eslint-plugin-jsdoc: 62.5.0(eslint@9.39.2(jiti@2.4.2)) eslint-plugin-prettier: 5.5.5(@types/eslint@8.56.6)(eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.4.2)))(eslint@9.39.2(jiti@2.4.2))(prettier@3.8.1) eslint-plugin-tsdoc: 0.5.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) fs-extra: 11.3.3 klaw: 4.1.0 lookpath: 1.2.3 - madge: 8.0.0(typescript@5.9.3) path-scurry: 2.0.1 prettier: 3.8.1 prettier-plugin-multiline-arrays: 4.1.3(prettier@3.8.1) prompts: 2.4.2 rimraf: 6.1.2 + swc-loader: 0.2.7(@swc/core@1.15.11)(webpack@5.104.1) typescript: 5.9.3 - typescript-eslint: 8.53.1(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) - webpack: 5.104.1(@swc/core@1.15.10)(webpack-cli@6.0.1) + typescript-eslint: 8.54.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) + webpack: 5.104.1(@swc/core@1.15.11)(webpack-cli@6.0.1) transitivePeerDependencies: - - '@swc/core' - - '@types/eslint' - - '@typescript-eslint/parser' + - "@swc/helpers" + - "@types/eslint" + - "@typescript-eslint/parser" - bufferutil - esbuild - eslint-import-resolver-typescript @@ -11204,49 +11284,52 @@ snapshots: - webpack-cli - webpack-dev-server - '@tsparticles/eslint-config@3.0.11(eslint@9.39.2(jiti@2.4.2))': + "@tsparticles/depcruise-config@3.1.2(dependency-cruiser@17.3.7)": + dependencies: + dependency-cruiser: 17.3.7 + + "@tsparticles/eslint-config@3.1.1(eslint@9.39.2(jiti@2.4.2))": dependencies: eslint: 9.39.2(jiti@2.4.2) - '@tsparticles/prettier-config@3.0.11': + "@tsparticles/prettier-config@3.0.11": dependencies: prettier: 3.8.1 prettier-plugin-multiline-arrays: 4.1.3(prettier@3.8.1) - '@tsparticles/tsconfig@3.0.9': + "@tsparticles/tsconfig@3.1.0": dependencies: typescript: 5.9.3 - '@tsparticles/webpack-plugin@3.0.11(@swc/core@1.15.10)(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3))(jiti@2.4.2)': - dependencies: - '@babel/core': 7.28.6 - '@babel/preset-env': 7.28.6(@babel/core@7.28.6) - '@stylistic/eslint-plugin': 5.7.0(eslint@9.39.2(jiti@2.4.2)) - '@tsparticles/eslint-config': 3.0.11(eslint@9.39.2(jiti@2.4.2)) - '@tsparticles/prettier-config': 3.0.11 - '@types/node': 25.0.10 - '@types/webpack-bundle-analyzer': 4.7.0(@swc/core@1.15.10)(webpack-cli@6.0.1) - '@types/webpack-env': 1.18.8 - babel-loader: 10.0.0(@babel/core@7.28.6)(webpack@5.104.1) + "@tsparticles/webpack-plugin@3.1.2(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3))(jiti@2.4.2)": + dependencies: + "@stylistic/eslint-plugin": 5.7.1(eslint@9.39.2(jiti@2.4.2)) + "@swc/core": 1.15.11 + "@tsparticles/eslint-config": 3.1.1(eslint@9.39.2(jiti@2.4.2)) + "@tsparticles/prettier-config": 3.0.11 + "@types/node": 25.2.0 + "@types/webpack-bundle-analyzer": 4.7.0(@swc/core@1.15.11)(webpack-cli@6.0.1) + "@types/webpack-env": 1.18.8 browserslist: 4.28.1 copyfiles: 2.4.1 eslint: 9.39.2(jiti@2.4.2) eslint-config-prettier: 10.1.8(eslint@9.39.2(jiti@2.4.2)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3))(eslint@9.39.2(jiti@2.4.2)) - eslint-plugin-jsdoc: 62.3.1(eslint@9.39.2(jiti@2.4.2)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3))(eslint@9.39.2(jiti@2.4.2)) + eslint-plugin-jsdoc: 62.5.0(eslint@9.39.2(jiti@2.4.2)) eslint-plugin-tsdoc: 0.5.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) prettier: 3.8.1 prettier-plugin-multiline-arrays: 4.1.3(prettier@3.8.1) rimraf: 6.1.2 - terser-webpack-plugin: 5.3.16(@swc/core@1.15.10)(webpack@5.104.1) + swc-loader: 0.2.7(@swc/core@1.15.11)(webpack@5.104.1) + terser-webpack-plugin: 5.3.16(@swc/core@1.15.11)(webpack@5.104.1) typescript: 5.9.3 - typescript-eslint: 8.53.1(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) - webpack: 5.104.1(@swc/core@1.15.10)(webpack-cli@6.0.1) + typescript-eslint: 8.54.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) + webpack: 5.104.1(@swc/core@1.15.11)(webpack-cli@6.0.1) webpack-bundle-analyzer: 5.2.0 webpack-cli: 6.0.1(webpack-bundle-analyzer@5.2.0)(webpack@5.104.1) transitivePeerDependencies: - - '@swc/core' - - '@typescript-eslint/parser' + - "@swc/helpers" + - "@typescript-eslint/parser" - bufferutil - esbuild - eslint-import-resolver-typescript @@ -11257,180 +11340,176 @@ snapshots: - utf-8-validate - webpack-dev-server - '@tufjs/canonical-json@2.0.0': {} + "@tufjs/canonical-json@2.0.0": {} - '@tufjs/models@4.1.0': + "@tufjs/models@4.1.0": dependencies: - '@tufjs/canonical-json': 2.0.0 + "@tufjs/canonical-json": 2.0.0 minimatch: 10.1.1 - '@tybys/wasm-util@0.9.0': + "@tybys/wasm-util@0.9.0": dependencies: tslib: 2.8.1 - '@types/body-parser@1.19.2': - dependencies: - '@types/connect': 3.4.35 - '@types/node': 25.0.10 - - '@types/cacheable-request@6.0.3': + "@types/body-parser@1.19.2": dependencies: - '@types/http-cache-semantics': 4.0.4 - '@types/keyv': 3.1.4 - '@types/node': 25.0.10 - '@types/responselike': 1.0.3 + "@types/connect": 3.4.35 + "@types/node": 25.2.0 - '@types/chai@5.2.2': + "@types/cacheable-request@6.0.3": dependencies: - '@types/deep-eql': 4.0.2 + "@types/http-cache-semantics": 4.0.4 + "@types/keyv": 3.1.4 + "@types/node": 25.2.0 + "@types/responselike": 1.0.3 - '@types/connect-livereload@0.6.3': + "@types/chai@5.2.2": dependencies: - '@types/connect': 3.4.35 + "@types/deep-eql": 4.0.2 - '@types/connect@3.4.35': + "@types/connect-livereload@0.6.3": dependencies: - '@types/node': 25.0.10 + "@types/connect": 3.4.35 - '@types/conventional-commits-parser@5.0.0': + "@types/connect@3.4.35": dependencies: - '@types/node': 25.0.10 + "@types/node": 25.2.0 - '@types/deep-eql@4.0.2': {} + "@types/deep-eql@4.0.2": {} - '@types/eslint-scope@3.7.7': + "@types/eslint-scope@3.7.7": dependencies: - '@types/eslint': 8.56.6 - '@types/estree': 1.0.8 + "@types/eslint": 8.56.6 + "@types/estree": 1.0.8 - '@types/eslint@8.56.6': + "@types/eslint@8.56.6": dependencies: - '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 + "@types/estree": 1.0.8 + "@types/json-schema": 7.0.15 - '@types/estree@1.0.8': {} + "@types/estree@1.0.8": {} - '@types/express-serve-static-core@5.0.0': + "@types/express-serve-static-core@5.0.0": dependencies: - '@types/node': 25.0.10 - '@types/qs': 6.9.7 - '@types/range-parser': 1.2.4 - '@types/send': 0.17.1 + "@types/node": 25.2.0 + "@types/qs": 6.9.7 + "@types/range-parser": 1.2.4 + "@types/send": 0.17.1 - '@types/express@5.0.6': + "@types/express@5.0.6": dependencies: - '@types/body-parser': 1.19.2 - '@types/express-serve-static-core': 5.0.0 - '@types/serve-static': 2.2.0 + "@types/body-parser": 1.19.2 + "@types/express-serve-static-core": 5.0.0 + "@types/serve-static": 2.2.0 - '@types/hast@3.0.4': + "@types/hast@3.0.4": dependencies: - '@types/unist': 3.0.3 + "@types/unist": 3.0.3 - '@types/http-cache-semantics@4.0.4': {} + "@types/http-cache-semantics@4.0.4": {} - '@types/http-errors@2.0.5': {} + "@types/http-errors@2.0.5": {} - '@types/jsdom@27.0.0': + "@types/jsdom@27.0.0": dependencies: - '@types/node': 25.0.10 - '@types/tough-cookie': 4.0.2 + "@types/node": 25.2.0 + "@types/tough-cookie": 4.0.2 parse5: 7.2.1 - '@types/json-schema@7.0.15': {} + "@types/json-schema@7.0.15": {} - '@types/json5@0.0.29': {} + "@types/json5@0.0.29": {} - '@types/keyv@3.1.4': + "@types/keyv@3.1.4": dependencies: - '@types/node': 25.0.10 + "@types/node": 25.2.0 - '@types/livereload@0.9.5': + "@types/livereload@0.9.5": dependencies: - '@types/ws': 8.5.4 + "@types/ws": 8.5.4 - '@types/luxon@3.7.1': {} + "@types/luxon@3.7.1": {} - '@types/mime@1.3.2': {} + "@types/mime@1.3.2": {} - '@types/minimatch@3.0.5': {} + "@types/minimatch@3.0.5": {} - '@types/minimist@1.2.2': {} + "@types/minimist@1.2.2": {} - '@types/node@18.19.45': + "@types/node@18.19.45": dependencies: undici-types: 5.26.5 - '@types/node@24.10.9': + "@types/node@24.10.9": dependencies: undici-types: 7.16.0 - '@types/node@25.0.10': + "@types/node@25.2.0": dependencies: undici-types: 7.16.0 - '@types/normalize-package-data@2.4.1': {} + "@types/normalize-package-data@2.4.1": {} - '@types/qs@6.9.7': {} + "@types/qs@6.9.7": {} - '@types/range-parser@1.2.4': {} + "@types/range-parser@1.2.4": {} - '@types/relateurl@0.2.33': {} + "@types/relateurl@0.2.33": {} - '@types/responselike@1.0.3': + "@types/responselike@1.0.3": dependencies: - '@types/node': 25.0.10 + "@types/node": 25.2.0 - '@types/send@0.17.1': + "@types/send@0.17.1": dependencies: - '@types/mime': 1.3.2 - '@types/node': 25.0.10 + "@types/mime": 1.3.2 + "@types/node": 25.2.0 - '@types/serve-static@2.2.0': + "@types/serve-static@2.2.0": dependencies: - '@types/http-errors': 2.0.5 - '@types/node': 25.0.10 + "@types/http-errors": 2.0.5 + "@types/node": 25.2.0 - '@types/stylus@0.48.43': + "@types/stylus@0.48.43": dependencies: - '@types/node': 25.0.10 + "@types/node": 25.2.0 - '@types/tough-cookie@4.0.2': {} + "@types/tough-cookie@4.0.2": {} - '@types/triple-beam@1.3.2': {} + "@types/triple-beam@1.3.2": {} - '@types/unist@3.0.3': {} + "@types/unist@3.0.3": {} - '@types/webpack-bundle-analyzer@4.7.0(@swc/core@1.15.10)(webpack-cli@6.0.1)': + "@types/webpack-bundle-analyzer@4.7.0(@swc/core@1.15.11)(webpack-cli@6.0.1)": dependencies: - '@types/node': 25.0.10 + "@types/node": 25.2.0 tapable: 2.3.0 - webpack: 5.104.1(@swc/core@1.15.10)(webpack-cli@6.0.1) + webpack: 5.104.1(@swc/core@1.15.11)(webpack-cli@6.0.1) transitivePeerDependencies: - - '@swc/core' + - "@swc/core" - esbuild - uglify-js - webpack-cli - '@types/webpack-env@1.18.8': {} + "@types/webpack-env@1.18.8": {} - '@types/ws@8.5.4': + "@types/ws@8.5.4": dependencies: - '@types/node': 25.0.10 + "@types/node": 25.2.0 - '@types/yauzl@2.10.3': + "@types/yauzl@2.10.3": dependencies: - '@types/node': 25.0.10 + "@types/node": 25.2.0 optional: true - '@typescript-eslint/eslint-plugin@8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3))(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3)': + "@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3))(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3)": dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.53.1(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.53.1 - '@typescript-eslint/type-utils': 8.53.1(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) - '@typescript-eslint/utils': 8.53.1(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.53.1 + "@eslint-community/regexpp": 4.12.2 + "@typescript-eslint/parser": 8.54.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) + "@typescript-eslint/scope-manager": 8.54.0 + "@typescript-eslint/type-utils": 8.54.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) + "@typescript-eslint/utils": 8.54.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) + "@typescript-eslint/visitor-keys": 8.54.0 eslint: 9.39.2(jiti@2.4.2) ignore: 7.0.5 natural-compare: 1.4.0 @@ -11439,63 +11518,63 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3)': + "@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3)": dependencies: - '@typescript-eslint/scope-manager': 8.53.1 - '@typescript-eslint/types': 8.53.1 - '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.53.1 + "@typescript-eslint/scope-manager": 8.54.0 + "@typescript-eslint/types": 8.54.0 + "@typescript-eslint/typescript-estree": 8.54.0(typescript@5.9.3) + "@typescript-eslint/visitor-keys": 8.54.0 debug: 4.4.3(supports-color@5.5.0) eslint: 9.39.2(jiti@2.4.2) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.46.4(typescript@5.9.3)': + "@typescript-eslint/project-service@8.46.4(typescript@5.9.3)": dependencies: - '@typescript-eslint/tsconfig-utils': 8.53.0(typescript@5.9.3) - '@typescript-eslint/types': 8.53.0 + "@typescript-eslint/tsconfig-utils": 8.53.0(typescript@5.9.3) + "@typescript-eslint/types": 8.53.0 debug: 4.4.3(supports-color@5.5.0) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.53.1(typescript@5.9.3)': + "@typescript-eslint/project-service@8.54.0(typescript@5.9.3)": dependencies: - '@typescript-eslint/tsconfig-utils': 8.53.1(typescript@5.9.3) - '@typescript-eslint/types': 8.53.1 + "@typescript-eslint/tsconfig-utils": 8.54.0(typescript@5.9.3) + "@typescript-eslint/types": 8.54.0 debug: 4.4.3(supports-color@5.5.0) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.46.4': + "@typescript-eslint/scope-manager@8.46.4": dependencies: - '@typescript-eslint/types': 8.46.4 - '@typescript-eslint/visitor-keys': 8.46.4 + "@typescript-eslint/types": 8.46.4 + "@typescript-eslint/visitor-keys": 8.46.4 - '@typescript-eslint/scope-manager@8.53.1': + "@typescript-eslint/scope-manager@8.54.0": dependencies: - '@typescript-eslint/types': 8.53.1 - '@typescript-eslint/visitor-keys': 8.53.1 + "@typescript-eslint/types": 8.54.0 + "@typescript-eslint/visitor-keys": 8.54.0 - '@typescript-eslint/tsconfig-utils@8.46.4(typescript@5.9.3)': + "@typescript-eslint/tsconfig-utils@8.46.4(typescript@5.9.3)": dependencies: typescript: 5.9.3 - '@typescript-eslint/tsconfig-utils@8.53.0(typescript@5.9.3)': + "@typescript-eslint/tsconfig-utils@8.53.0(typescript@5.9.3)": dependencies: typescript: 5.9.3 - '@typescript-eslint/tsconfig-utils@8.53.1(typescript@5.9.3)': + "@typescript-eslint/tsconfig-utils@8.54.0(typescript@5.9.3)": dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.53.1(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3)': + "@typescript-eslint/type-utils@8.54.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3)": dependencies: - '@typescript-eslint/types': 8.53.1 - '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.53.1(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) + "@typescript-eslint/types": 8.54.0 + "@typescript-eslint/typescript-estree": 8.54.0(typescript@5.9.3) + "@typescript-eslint/utils": 8.54.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) debug: 4.4.3(supports-color@5.5.0) eslint: 9.39.2(jiti@2.4.2) ts-api-utils: 2.4.0(typescript@5.9.3) @@ -11503,35 +11582,18 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@7.18.0': {} - - '@typescript-eslint/types@8.46.4': {} - - '@typescript-eslint/types@8.53.0': {} + "@typescript-eslint/types@8.46.4": {} - '@typescript-eslint/types@8.53.1': {} + "@typescript-eslint/types@8.53.0": {} - '@typescript-eslint/typescript-estree@7.18.0(typescript@5.9.3)': - dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.4.3(supports-color@5.5.0) - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.3 - ts-api-utils: 1.3.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color + "@typescript-eslint/types@8.54.0": {} - '@typescript-eslint/typescript-estree@8.46.4(typescript@5.9.3)': + "@typescript-eslint/typescript-estree@8.46.4(typescript@5.9.3)": dependencies: - '@typescript-eslint/project-service': 8.46.4(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.46.4(typescript@5.9.3) - '@typescript-eslint/types': 8.46.4 - '@typescript-eslint/visitor-keys': 8.46.4 + "@typescript-eslint/project-service": 8.46.4(typescript@5.9.3) + "@typescript-eslint/tsconfig-utils": 8.46.4(typescript@5.9.3) + "@typescript-eslint/types": 8.46.4 + "@typescript-eslint/visitor-keys": 8.46.4 debug: 4.4.3(supports-color@5.5.0) fast-glob: 3.3.2 is-glob: 4.0.3 @@ -11542,12 +11604,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.53.1(typescript@5.9.3)': + "@typescript-eslint/typescript-estree@8.54.0(typescript@5.9.3)": dependencies: - '@typescript-eslint/project-service': 8.53.1(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.53.1(typescript@5.9.3) - '@typescript-eslint/types': 8.53.1 - '@typescript-eslint/visitor-keys': 8.53.1 + "@typescript-eslint/project-service": 8.54.0(typescript@5.9.3) + "@typescript-eslint/tsconfig-utils": 8.54.0(typescript@5.9.3) + "@typescript-eslint/types": 8.54.0 + "@typescript-eslint/visitor-keys": 8.54.0 debug: 4.4.3(supports-color@5.5.0) minimatch: 9.0.5 semver: 7.7.3 @@ -11557,47 +11619,42 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.46.4(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3)': + "@typescript-eslint/utils@8.46.4(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3)": dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.39.2(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.46.4 - '@typescript-eslint/types': 8.46.4 - '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3) + "@eslint-community/eslint-utils": 4.7.0(eslint@9.39.2(jiti@2.4.2)) + "@typescript-eslint/scope-manager": 8.46.4 + "@typescript-eslint/types": 8.46.4 + "@typescript-eslint/typescript-estree": 8.46.4(typescript@5.9.3) eslint: 9.39.2(jiti@2.4.2) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.53.1(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3)': + "@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3)": dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.53.1 - '@typescript-eslint/types': 8.53.1 - '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) + "@eslint-community/eslint-utils": 4.9.1(eslint@9.39.2(jiti@2.4.2)) + "@typescript-eslint/scope-manager": 8.54.0 + "@typescript-eslint/types": 8.54.0 + "@typescript-eslint/typescript-estree": 8.54.0(typescript@5.9.3) eslint: 9.39.2(jiti@2.4.2) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@7.18.0': + "@typescript-eslint/visitor-keys@8.46.4": dependencies: - '@typescript-eslint/types': 7.18.0 - eslint-visitor-keys: 3.4.3 - - '@typescript-eslint/visitor-keys@8.46.4': - dependencies: - '@typescript-eslint/types': 8.46.4 + "@typescript-eslint/types": 8.46.4 eslint-visitor-keys: 4.2.1 - '@typescript-eslint/visitor-keys@8.53.1': + "@typescript-eslint/visitor-keys@8.54.0": dependencies: - '@typescript-eslint/types': 8.53.1 + "@typescript-eslint/types": 8.54.0 eslint-visitor-keys: 4.2.1 - '@vitest/coverage-v8@4.0.18(vitest@4.0.18)': + "@vitest/coverage-v8@4.0.18(vitest@4.0.18)": dependencies: - '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.0.18 + "@bcoe/v8-coverage": 1.0.2 + "@vitest/utils": 4.0.18 ast-v8-to-istanbul: 0.3.10 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 @@ -11606,193 +11663,161 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.18(@types/node@25.0.10)(@vitest/ui@4.0.18)(jiti@2.4.2)(jsdom@27.4.0(canvas@3.2.1))(lightningcss@1.30.2)(sass@1.97.3)(stylus@0.64.0)(terser@5.44.1)(yaml@2.8.1) + vitest: 4.0.18(@types/node@25.2.0)(@vitest/ui@4.0.18)(jiti@2.4.2)(jsdom@28.0.0(canvas@3.2.1))(lightningcss@1.30.2)(sass@1.97.3)(stylus@0.64.0)(terser@5.44.1)(yaml@2.8.1) - '@vitest/expect@4.0.18': + "@vitest/expect@4.0.18": dependencies: - '@standard-schema/spec': 1.1.0 - '@types/chai': 5.2.2 - '@vitest/spy': 4.0.18 - '@vitest/utils': 4.0.18 + "@standard-schema/spec": 1.1.0 + "@types/chai": 5.2.2 + "@vitest/spy": 4.0.18 + "@vitest/utils": 4.0.18 chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.18(vite@7.3.1(@types/node@25.0.10)(jiti@2.4.2)(lightningcss@1.30.2)(sass@1.97.3)(stylus@0.64.0)(terser@5.44.1)(yaml@2.8.1))': + "@vitest/mocker@4.0.18(vite@7.3.1(@types/node@25.2.0)(jiti@2.4.2)(lightningcss@1.30.2)(sass@1.97.3)(stylus@0.64.0)(terser@5.44.1)(yaml@2.8.1))": dependencies: - '@vitest/spy': 4.0.18 + "@vitest/spy": 4.0.18 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@25.0.10)(jiti@2.4.2)(lightningcss@1.30.2)(sass@1.97.3)(stylus@0.64.0)(terser@5.44.1)(yaml@2.8.1) + vite: 7.3.1(@types/node@25.2.0)(jiti@2.4.2)(lightningcss@1.30.2)(sass@1.97.3)(stylus@0.64.0)(terser@5.44.1)(yaml@2.8.1) - '@vitest/pretty-format@4.0.18': + "@vitest/pretty-format@4.0.18": dependencies: tinyrainbow: 3.0.3 - '@vitest/runner@4.0.18': + "@vitest/runner@4.0.18": dependencies: - '@vitest/utils': 4.0.18 + "@vitest/utils": 4.0.18 pathe: 2.0.3 - '@vitest/snapshot@4.0.18': + "@vitest/snapshot@4.0.18": dependencies: - '@vitest/pretty-format': 4.0.18 + "@vitest/pretty-format": 4.0.18 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.0.18': {} + "@vitest/spy@4.0.18": {} - '@vitest/ui@4.0.18(vitest@4.0.18)': + "@vitest/ui@4.0.18(vitest@4.0.18)": dependencies: - '@vitest/utils': 4.0.18 + "@vitest/utils": 4.0.18 fflate: 0.8.2 flatted: 3.3.3 pathe: 2.0.3 sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vitest: 4.0.18(@types/node@25.0.10)(@vitest/ui@4.0.18)(jiti@2.4.2)(jsdom@27.4.0(canvas@3.2.1))(lightningcss@1.30.2)(sass@1.97.3)(stylus@0.64.0)(terser@5.44.1)(yaml@2.8.1) + vitest: 4.0.18(@types/node@25.2.0)(@vitest/ui@4.0.18)(jiti@2.4.2)(jsdom@28.0.0(canvas@3.2.1))(lightningcss@1.30.2)(sass@1.97.3)(stylus@0.64.0)(terser@5.44.1)(yaml@2.8.1) - '@vitest/utils@4.0.18': + "@vitest/utils@4.0.18": dependencies: - '@vitest/pretty-format': 4.0.18 + "@vitest/pretty-format": 4.0.18 tinyrainbow: 3.0.3 - '@vue/compiler-core@3.4.35': + "@webassemblyjs/ast@1.14.1": dependencies: - '@babel/parser': 7.28.6 - '@vue/shared': 3.4.35 - entities: 4.5.0 - estree-walker: 2.0.2 - source-map-js: 1.2.1 + "@webassemblyjs/helper-numbers": 1.13.2 + "@webassemblyjs/helper-wasm-bytecode": 1.13.2 - '@vue/compiler-dom@3.4.35': - dependencies: - '@vue/compiler-core': 3.4.35 - '@vue/shared': 3.4.35 - - '@vue/compiler-sfc@3.4.35': - dependencies: - '@babel/parser': 7.28.5 - '@vue/compiler-core': 3.4.35 - '@vue/compiler-dom': 3.4.35 - '@vue/compiler-ssr': 3.4.35 - '@vue/shared': 3.4.35 - estree-walker: 2.0.2 - magic-string: 0.30.21 - postcss: 8.5.6 - source-map-js: 1.2.1 + "@webassemblyjs/floating-point-hex-parser@1.13.2": {} - '@vue/compiler-ssr@3.4.35': - dependencies: - '@vue/compiler-dom': 3.4.35 - '@vue/shared': 3.4.35 + "@webassemblyjs/helper-api-error@1.13.2": {} - '@vue/shared@3.4.35': {} + "@webassemblyjs/helper-buffer@1.14.1": {} - '@webassemblyjs/ast@1.14.1': + "@webassemblyjs/helper-numbers@1.13.2": dependencies: - '@webassemblyjs/helper-numbers': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - - '@webassemblyjs/floating-point-hex-parser@1.13.2': {} + "@webassemblyjs/floating-point-hex-parser": 1.13.2 + "@webassemblyjs/helper-api-error": 1.13.2 + "@xtuc/long": 4.2.2 - '@webassemblyjs/helper-api-error@1.13.2': {} + "@webassemblyjs/helper-wasm-bytecode@1.13.2": {} - '@webassemblyjs/helper-buffer@1.14.1': {} - - '@webassemblyjs/helper-numbers@1.13.2': + "@webassemblyjs/helper-wasm-section@1.14.1": dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.13.2 - '@webassemblyjs/helper-api-error': 1.13.2 - '@xtuc/long': 4.2.2 - - '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/helper-buffer": 1.14.1 + "@webassemblyjs/helper-wasm-bytecode": 1.13.2 + "@webassemblyjs/wasm-gen": 1.14.1 - '@webassemblyjs/helper-wasm-section@1.14.1': + "@webassemblyjs/ieee754@1.13.2": dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/wasm-gen': 1.14.1 + "@xtuc/ieee754": 1.2.0 - '@webassemblyjs/ieee754@1.13.2': + "@webassemblyjs/leb128@1.13.2": dependencies: - '@xtuc/ieee754': 1.2.0 + "@xtuc/long": 4.2.2 - '@webassemblyjs/leb128@1.13.2': - dependencies: - '@xtuc/long': 4.2.2 - - '@webassemblyjs/utf8@1.13.2': {} + "@webassemblyjs/utf8@1.13.2": {} - '@webassemblyjs/wasm-edit@1.14.1': + "@webassemblyjs/wasm-edit@1.14.1": dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/helper-wasm-section': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-opt': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - '@webassemblyjs/wast-printer': 1.14.1 + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/helper-buffer": 1.14.1 + "@webassemblyjs/helper-wasm-bytecode": 1.13.2 + "@webassemblyjs/helper-wasm-section": 1.14.1 + "@webassemblyjs/wasm-gen": 1.14.1 + "@webassemblyjs/wasm-opt": 1.14.1 + "@webassemblyjs/wasm-parser": 1.14.1 + "@webassemblyjs/wast-printer": 1.14.1 - '@webassemblyjs/wasm-gen@1.14.1': + "@webassemblyjs/wasm-gen@1.14.1": dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/helper-wasm-bytecode": 1.13.2 + "@webassemblyjs/ieee754": 1.13.2 + "@webassemblyjs/leb128": 1.13.2 + "@webassemblyjs/utf8": 1.13.2 - '@webassemblyjs/wasm-opt@1.14.1': + "@webassemblyjs/wasm-opt@1.14.1": dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/helper-buffer": 1.14.1 + "@webassemblyjs/wasm-gen": 1.14.1 + "@webassemblyjs/wasm-parser": 1.14.1 - '@webassemblyjs/wasm-parser@1.14.1': + "@webassemblyjs/wasm-parser@1.14.1": dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-api-error': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/helper-api-error": 1.13.2 + "@webassemblyjs/helper-wasm-bytecode": 1.13.2 + "@webassemblyjs/ieee754": 1.13.2 + "@webassemblyjs/leb128": 1.13.2 + "@webassemblyjs/utf8": 1.13.2 - '@webassemblyjs/wast-printer@1.14.1': + "@webassemblyjs/wast-printer@1.14.1": dependencies: - '@webassemblyjs/ast': 1.14.1 - '@xtuc/long': 4.2.2 + "@webassemblyjs/ast": 1.14.1 + "@xtuc/long": 4.2.2 - '@webpack-cli/configtest@3.0.1(webpack-cli@6.0.1)(webpack@5.104.1)': + "@webpack-cli/configtest@3.0.1(webpack-cli@6.0.1)(webpack@5.104.1)": dependencies: - webpack: 5.104.1(@swc/core@1.15.10)(webpack-cli@6.0.1) + webpack: 5.104.1(@swc/core@1.15.11)(webpack-cli@6.0.1) webpack-cli: 6.0.1(webpack-bundle-analyzer@5.2.0)(webpack@5.104.1) - '@webpack-cli/info@3.0.1(webpack-cli@6.0.1)(webpack@5.104.1)': + "@webpack-cli/info@3.0.1(webpack-cli@6.0.1)(webpack@5.104.1)": dependencies: - webpack: 5.104.1(@swc/core@1.15.10)(webpack-cli@6.0.1) + webpack: 5.104.1(@swc/core@1.15.11)(webpack-cli@6.0.1) webpack-cli: 6.0.1(webpack-bundle-analyzer@5.2.0)(webpack@5.104.1) - '@webpack-cli/serve@3.0.1(webpack-cli@6.0.1)(webpack@5.104.1)': + "@webpack-cli/serve@3.0.1(webpack-cli@6.0.1)(webpack@5.104.1)": dependencies: - webpack: 5.104.1(@swc/core@1.15.10)(webpack-cli@6.0.1) + webpack: 5.104.1(@swc/core@1.15.11)(webpack-cli@6.0.1) webpack-cli: 6.0.1(webpack-bundle-analyzer@5.2.0)(webpack@5.104.1) - '@xtuc/ieee754@1.2.0': {} + "@xtuc/ieee754@1.2.0": {} - '@xtuc/long@4.2.2': {} + "@xtuc/long@4.2.2": {} - '@yarnpkg/lockfile@1.1.0': {} + "@yarnpkg/lockfile@1.1.0": {} - '@yarnpkg/parsers@3.0.2': + "@yarnpkg/parsers@3.0.2": dependencies: js-yaml: 3.14.1 tslib: 2.8.1 - '@zkochan/js-yaml@0.0.7': + "@zkochan/js-yaml@0.0.7": dependencies: argparse: 2.0.1 @@ -11814,16 +11839,22 @@ snapshots: mime-types: 3.0.2 negotiator: 1.0.0 - ace-builds@1.43.5: {} + ace-builds@1.43.6: {} acorn-import-phases@1.0.4(acorn@8.15.0): dependencies: acorn: 8.15.0 + acorn-jsx-walk@2.0.0: {} + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: acorn: 8.15.0 + acorn-loose@8.5.2: + dependencies: + acorn: 8.15.0 + acorn-walk@8.2.0: {} acorn-walk@8.3.4: @@ -11882,19 +11913,13 @@ snapshots: ansi-styles@5.2.0: {} - ansi-styles@6.2.1: {} - ansi-styles@6.2.3: {} - any-promise@1.3.0: {} - anymatch@3.1.3: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - app-module-path@2.2.0: {} - aproba@2.0.0: {} are-docs-informative@0.0.2: {} @@ -11971,11 +11996,9 @@ snapshots: assert-never@1.3.0: {} - ast-module-types@6.0.0: {} - ast-v8-to-istanbul@0.3.10: dependencies: - '@jridgewell/trace-mapping': 0.3.31 + "@jridgewell/trace-mapping": 0.3.31 estree-walker: 3.0.3 js-tokens: 9.0.1 @@ -12005,39 +12028,9 @@ snapshots: transitivePeerDependencies: - debug - babel-loader@10.0.0(@babel/core@7.28.6)(webpack@5.104.1): - dependencies: - '@babel/core': 7.28.6 - find-up: 5.0.0 - webpack: 5.104.1(@swc/core@1.15.10)(webpack-cli@6.0.1) - - babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.6): - dependencies: - '@babel/compat-data': 7.28.6 - '@babel/core': 7.28.6 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.6) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.6): - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.6) - core-js-compat: 3.45.1 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.6): - dependencies: - '@babel/core': 7.28.6 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.6) - transitivePeerDependencies: - - supports-color - babel-walk@3.0.0-canary-5: dependencies: - '@babel/types': 7.28.5 + "@babel/types": 7.28.5 balanced-match@1.0.2: {} @@ -12086,7 +12079,7 @@ snapshots: bootstrap@5.3.8(@popperjs/core@2.11.8): dependencies: - '@popperjs/core': 2.11.8 + "@popperjs/core": 2.11.8 brace-expansion@1.1.11: dependencies: @@ -12126,7 +12119,7 @@ snapshots: cacache@19.0.1: dependencies: - '@npmcli/fs': 4.0.0 + "@npmcli/fs": 4.0.0 fs-minipass: 3.0.2 glob: 10.4.5 lru-cache: 10.4.3 @@ -12141,7 +12134,7 @@ snapshots: cacache@20.0.3: dependencies: - '@npmcli/fs': 5.0.0 + "@npmcli/fs": 5.0.0 fs-minipass: 3.0.2 glob: 13.0.0 lru-cache: 11.2.4 @@ -12172,10 +12165,10 @@ snapshots: call-bind@1.0.7: dependencies: - es-define-property: 1.0.0 + es-define-property: 1.0.1 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.4 + get-intrinsic: 1.3.0 set-function-length: 1.2.2 call-bind@1.0.8: @@ -12230,8 +12223,6 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.3.0: {} - change-case@4.1.2: dependencies: camel-case: 4.1.2 @@ -12365,20 +12356,18 @@ snapshots: dependencies: delayed-stream: 1.0.0 - commander@12.0.0: {} - commander@12.1.0: {} commander@13.1.0: {} commander@14.0.2: {} + commander@14.0.3: {} + commander@2.20.3: {} commander@7.2.0: {} - comment-parser@1.4.4: {} - comment-parser@1.4.5: {} common-ancestor-path@1.0.1: {} @@ -12420,8 +12409,8 @@ snapshots: constantinople@4.0.1: dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + "@babel/parser": 7.28.5 + "@babel/types": 7.28.5 content-disposition@1.0.1: {} @@ -12431,7 +12420,11 @@ snapshots: dependencies: compare-func: 2.0.0 - conventional-changelog-conventionalcommits@7.0.2: + conventional-changelog-angular@8.1.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-conventionalcommits@9.1.0: dependencies: compare-func: 2.0.0 @@ -12473,12 +12466,9 @@ snapshots: meow: 8.1.2 split2: 3.2.2 - conventional-commits-parser@5.0.0: + conventional-commits-parser@6.2.1: dependencies: - JSONStream: 1.3.5 - is-text-path: 2.0.0 - meow: 12.1.1 - split2: 4.2.0 + meow: 13.2.0 conventional-recommended-bump@7.0.1: dependencies: @@ -12490,8 +12480,6 @@ snapshots: git-semver-tags: 5.0.0 meow: 8.1.2 - convert-source-map@2.0.0: {} - cookie-signature@1.2.2: {} cookie@0.7.2: {} @@ -12506,15 +12494,11 @@ snapshots: untildify: 4.0.0 yargs: 16.2.0 - core-js-compat@3.45.1: - dependencies: - browserslist: 4.28.1 - core-util-is@1.0.3: {} - cosmiconfig-typescript-loader@6.1.0(@types/node@25.0.10)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3): + cosmiconfig-typescript-loader@6.1.0(@types/node@25.2.0)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3): dependencies: - '@types/node': 25.0.10 + "@types/node": 25.2.0 cosmiconfig: 9.0.0(typescript@5.9.3) jiti: 2.4.2 typescript: 5.9.3 @@ -12532,7 +12516,7 @@ snapshots: cross-env@10.1.0: dependencies: - '@epic-web/invariant': 1.0.0 + "@epic-web/invariant": 1.0.0 cross-spawn: 7.0.6 cross-spawn@7.0.3: @@ -12556,20 +12540,23 @@ snapshots: cssesc@3.0.0: {} - cssstyle@5.3.5: + cssstyle@5.3.7: dependencies: - '@asamuzakjp/css-color': 4.1.1 - '@csstools/css-syntax-patches-for-csstree': 1.0.21 + "@asamuzakjp/css-color": 4.1.1 + "@csstools/css-syntax-patches-for-csstree": 1.0.21 css-tree: 3.1.0 + lru-cache: 11.2.4 dargs@7.0.0: {} dargs@8.1.0: {} - data-urls@6.0.0: + data-urls@7.0.0: dependencies: - whatwg-mimetype: 4.0.0 - whatwg-url: 15.1.0 + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.0 + transitivePeerDependencies: + - "@noble/hashes" data-view-buffer@1.0.2: dependencies: @@ -12597,10 +12584,6 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.3.4: - dependencies: - ms: 2.1.2 - debug@4.3.6: dependencies: ms: 2.1.2 @@ -12646,7 +12629,7 @@ snapshots: define-data-property@1.1.4: dependencies: - es-define-property: 1.0.0 + es-define-property: 1.0.1 es-errors: 1.3.0 gopd: 1.2.0 @@ -12662,14 +12645,26 @@ snapshots: depd@2.0.0: {} - dependency-tree@11.0.1: + dependency-cruiser@17.3.7: dependencies: - commander: 12.0.0 - filing-cabinet: 5.0.2 - precinct: 12.1.2 - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + acorn-jsx-walk: 2.0.0 + acorn-loose: 8.5.2 + acorn-walk: 8.3.4 + commander: 14.0.2 + enhanced-resolve: 5.18.4 + ignore: 7.0.5 + interpret: 3.1.1 + is-installed-globally: 1.0.0 + json5: 2.2.3 + picomatch: 4.0.3 + prompts: 2.4.2 + rechoir: 0.8.0 + safe-regex: 2.1.1 + semver: 7.7.3 + tsconfig-paths-webpack-plugin: 4.2.0 + watskeburt: 5.0.2 deprecation@2.3.1: {} @@ -12683,61 +12678,6 @@ snapshots: detect-node@2.1.0: optional: true - detective-amd@6.0.0: - dependencies: - ast-module-types: 6.0.0 - escodegen: 2.1.0 - get-amd-module-type: 6.0.0 - node-source-walk: 7.0.0 - - detective-cjs@6.0.0: - dependencies: - ast-module-types: 6.0.0 - node-source-walk: 7.0.0 - - detective-es6@5.0.0: - dependencies: - node-source-walk: 7.0.0 - - detective-postcss@7.0.0(postcss@8.5.6): - dependencies: - is-url: 1.2.4 - postcss: 8.5.6 - postcss-values-parser: 6.0.2(postcss@8.5.6) - - detective-sass@6.0.0: - dependencies: - gonzales-pe: 4.3.0 - node-source-walk: 7.0.0 - - detective-scss@5.0.0: - dependencies: - gonzales-pe: 4.3.0 - node-source-walk: 7.0.0 - - detective-stylus@5.0.0: {} - - detective-typescript@13.0.0(typescript@5.9.3): - dependencies: - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.3) - ast-module-types: 6.0.0 - node-source-walk: 7.0.0 - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - detective-vue2@2.0.3(typescript@5.9.3): - dependencies: - '@vue/compiler-sfc': 3.4.35 - detective-es6: 5.0.0 - detective-sass: 6.0.0 - detective-scss: 5.0.0 - detective-stylus: 5.0.0 - detective-typescript: 13.0.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - diff@4.0.2: {} diff@8.0.2: {} @@ -12787,10 +12727,10 @@ snapshots: electron-to-chromium@1.5.267: {} - electron@40.0.0: + electron@40.1.0: dependencies: - '@electron/get': 2.0.3 - '@types/node': 24.10.9 + "@electron/get": 2.0.3 + "@types/node": 24.10.9 extract-zip: 2.0.1 transitivePeerDependencies: - supports-color @@ -12816,12 +12756,12 @@ snapshots: dependencies: once: 1.4.0 - enhanced-resolve@5.17.1: + enhanced-resolve@5.18.2: dependencies: graceful-fs: 4.2.11 - tapable: 2.2.1 + tapable: 2.3.0 - enhanced-resolve@5.18.2: + enhanced-resolve@5.18.4: dependencies: graceful-fs: 4.2.11 tapable: 2.3.0 @@ -12905,10 +12845,6 @@ snapshots: unbox-primitive: 1.1.0 which-typed-array: 1.1.19 - es-define-property@1.0.0: - dependencies: - get-intrinsic: 1.2.4 - es-define-property@1.0.1: {} es-errors@1.3.0: {} @@ -12943,32 +12879,32 @@ snapshots: esbuild@0.27.2: optionalDependencies: - '@esbuild/aix-ppc64': 0.27.2 - '@esbuild/android-arm': 0.27.2 - '@esbuild/android-arm64': 0.27.2 - '@esbuild/android-x64': 0.27.2 - '@esbuild/darwin-arm64': 0.27.2 - '@esbuild/darwin-x64': 0.27.2 - '@esbuild/freebsd-arm64': 0.27.2 - '@esbuild/freebsd-x64': 0.27.2 - '@esbuild/linux-arm': 0.27.2 - '@esbuild/linux-arm64': 0.27.2 - '@esbuild/linux-ia32': 0.27.2 - '@esbuild/linux-loong64': 0.27.2 - '@esbuild/linux-mips64el': 0.27.2 - '@esbuild/linux-ppc64': 0.27.2 - '@esbuild/linux-riscv64': 0.27.2 - '@esbuild/linux-s390x': 0.27.2 - '@esbuild/linux-x64': 0.27.2 - '@esbuild/netbsd-arm64': 0.27.2 - '@esbuild/netbsd-x64': 0.27.2 - '@esbuild/openbsd-arm64': 0.27.2 - '@esbuild/openbsd-x64': 0.27.2 - '@esbuild/openharmony-arm64': 0.27.2 - '@esbuild/sunos-x64': 0.27.2 - '@esbuild/win32-arm64': 0.27.2 - '@esbuild/win32-ia32': 0.27.2 - '@esbuild/win32-x64': 0.27.2 + "@esbuild/aix-ppc64": 0.27.2 + "@esbuild/android-arm": 0.27.2 + "@esbuild/android-arm64": 0.27.2 + "@esbuild/android-x64": 0.27.2 + "@esbuild/darwin-arm64": 0.27.2 + "@esbuild/darwin-x64": 0.27.2 + "@esbuild/freebsd-arm64": 0.27.2 + "@esbuild/freebsd-x64": 0.27.2 + "@esbuild/linux-arm": 0.27.2 + "@esbuild/linux-arm64": 0.27.2 + "@esbuild/linux-ia32": 0.27.2 + "@esbuild/linux-loong64": 0.27.2 + "@esbuild/linux-mips64el": 0.27.2 + "@esbuild/linux-ppc64": 0.27.2 + "@esbuild/linux-riscv64": 0.27.2 + "@esbuild/linux-s390x": 0.27.2 + "@esbuild/linux-x64": 0.27.2 + "@esbuild/netbsd-arm64": 0.27.2 + "@esbuild/netbsd-x64": 0.27.2 + "@esbuild/openbsd-arm64": 0.27.2 + "@esbuild/openbsd-x64": 0.27.2 + "@esbuild/openharmony-arm64": 0.27.2 + "@esbuild/sunos-x64": 0.27.2 + "@esbuild/win32-arm64": 0.27.2 + "@esbuild/win32-ia32": 0.27.2 + "@esbuild/win32-x64": 0.27.2 escalade@3.1.1: {} @@ -12980,14 +12916,6 @@ snapshots: escape-string-regexp@4.0.0: {} - escodegen@2.1.0: - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionalDependencies: - source-map: 0.6.1 - eslint-config-prettier@10.1.8(eslint@9.39.2(jiti@2.4.2)): dependencies: eslint: 9.39.2(jiti@2.4.2) @@ -13000,19 +12928,19 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.4.2)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.4.2)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.53.1(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) + "@typescript-eslint/parser": 8.54.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) eslint: 9.39.2(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3))(eslint@9.39.2(jiti@2.4.2)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3))(eslint@9.39.2(jiti@2.4.2)): dependencies: - '@rtsao/scc': 1.1.0 + "@rtsao/scc": 1.1.0 array-includes: 3.1.9 array.prototype.findlastindex: 1.2.6 array.prototype.flat: 1.3.3 @@ -13021,7 +12949,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.2(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.4.2)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.4.2)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -13033,16 +12961,16 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.53.1(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) + "@typescript-eslint/parser": 8.54.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsdoc@62.3.1(eslint@9.39.2(jiti@2.4.2)): + eslint-plugin-jsdoc@62.5.0(eslint@9.39.2(jiti@2.4.2)): dependencies: - '@es-joy/jsdoccomment': 0.82.0 - '@es-joy/resolve.exports': 1.2.0 + "@es-joy/jsdoccomment": 0.83.0 + "@es-joy/resolve.exports": 1.2.0 are-docs-informative: 0.0.2 comment-parser: 1.4.5 debug: 4.4.3(supports-color@5.5.0) @@ -13066,14 +12994,14 @@ snapshots: prettier-linter-helpers: 1.0.1 synckit: 0.11.12 optionalDependencies: - '@types/eslint': 8.56.6 + "@types/eslint": 8.56.6 eslint-config-prettier: 10.1.8(eslint@9.39.2(jiti@2.4.2)) eslint-plugin-tsdoc@0.5.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3): dependencies: - '@microsoft/tsdoc': 0.16.0 - '@microsoft/tsdoc-config': 0.18.0 - '@typescript-eslint/utils': 8.46.4(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) + "@microsoft/tsdoc": 0.16.0 + "@microsoft/tsdoc-config": 0.18.0 + "@typescript-eslint/utils": 8.46.4(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) transitivePeerDependencies: - eslint - supports-color @@ -13097,18 +13025,18 @@ snapshots: eslint@9.39.2(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.4.2)) - '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.21.1 - '@eslint/config-helpers': 0.4.2 - '@eslint/core': 0.17.0 - '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.39.2 - '@eslint/plugin-kit': 0.4.1 - '@humanfs/node': 0.16.6 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.8 + "@eslint-community/eslint-utils": 4.9.0(eslint@9.39.2(jiti@2.4.2)) + "@eslint-community/regexpp": 4.12.1 + "@eslint/config-array": 0.21.1 + "@eslint/config-helpers": 0.4.2 + "@eslint/core": 0.17.0 + "@eslint/eslintrc": 3.3.1 + "@eslint/js": 9.39.2 + "@eslint/plugin-kit": 0.4.1 + "@humanfs/node": 0.16.6 + "@humanwhocodes/module-importer": 1.0.1 + "@humanwhocodes/retry": 0.4.3 + "@types/estree": 1.0.8 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 @@ -13166,11 +13094,9 @@ snapshots: estraverse@5.3.0: {} - estree-walker@2.0.2: {} - estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.8 + "@types/estree": 1.0.8 esutils@2.0.3: {} @@ -13244,7 +13170,7 @@ snapshots: get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: - '@types/yauzl': 2.10.3 + "@types/yauzl": 2.10.3 transitivePeerDependencies: - supports-color @@ -13254,8 +13180,8 @@ snapshots: fast-glob@3.3.2: dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 + "@nodelib/fs.stat": 2.0.5 + "@nodelib/fs.walk": 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.5 @@ -13302,20 +13228,6 @@ snapshots: strip-outer: 1.0.1 trim-repeated: 1.0.0 - filing-cabinet@5.0.2: - dependencies: - app-module-path: 2.2.0 - commander: 12.1.0 - enhanced-resolve: 5.17.1 - module-definition: 6.0.0 - module-lookup-amd: 9.0.2 - resolve: 1.22.8 - resolve-dependency-path: 4.0.0 - sass-lookup: 6.0.1 - stylus-lookup: 6.0.0 - tsconfig-paths: 4.2.0 - typescript: 5.9.3 - fill-range@7.0.1: dependencies: to-regex-range: 5.0.1 @@ -13351,12 +13263,6 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - find-up@7.0.0: - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - unicorn-magic: 0.1.0 - find-up@8.0.0: dependencies: locate-path: 8.0.0 @@ -13451,25 +13357,10 @@ snapshots: functions-have-names@1.2.3: {} - gensync@1.0.0-beta.2: {} - - get-amd-module-type@6.0.0: - dependencies: - ast-module-types: 6.0.0 - node-source-walk: 7.0.0 - get-caller-file@2.0.5: {} get-east-asian-width@1.3.0: {} - get-intrinsic@1.2.4: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -13483,11 +13374,9 @@ snapshots: hasown: 2.0.2 math-intrinsics: 1.1.0 - get-own-enumerable-property-symbols@3.0.2: {} - get-pkg-repo@4.2.1: dependencies: - '@hutson/parse-repository-url': 3.0.2 + "@hutson/parse-repository-url": 3.0.2 hosted-git-info: 4.1.0 through2: 2.0.5 yargs: 16.2.0 @@ -13595,7 +13484,7 @@ snapshots: minimatch: 10.1.1 minipass: 7.1.2 package-json-from-dist: 1.0.0 - path-scurry: 2.0.0 + path-scurry: 2.0.1 glob@13.0.0: dependencies: @@ -13649,18 +13538,14 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - gonzales-pe@4.3.0: - dependencies: - minimist: 1.2.8 - gopd@1.2.0: {} got@11.8.6: dependencies: - '@sindresorhus/is': 4.6.0 - '@szmarczak/http-timer': 4.0.6 - '@types/cacheable-request': 6.0.3 - '@types/responselike': 1.0.3 + "@sindresorhus/is": 4.6.0 + "@szmarczak/http-timer": 4.0.6 + "@types/cacheable-request": 6.0.3 + "@types/responselike": 1.0.3 cacheable-lookup: 5.0.4 cacheable-request: 7.0.4 decompress-response: 6.0.0 @@ -13690,21 +13575,17 @@ snapshots: has-property-descriptors@1.0.2: dependencies: - es-define-property: 1.0.0 - - has-proto@1.0.3: {} + es-define-property: 1.0.1 has-proto@1.2.0: dependencies: dunder-proto: 1.0.1 - has-symbols@1.0.3: {} - has-symbols@1.1.0: {} has-tostringtag@1.0.2: dependencies: - has-symbols: 1.0.3 + has-symbols: 1.1.0 has-unicode@2.0.1: {} @@ -13735,25 +13616,25 @@ snapshots: html-encoding-sniffer@6.0.0: dependencies: - '@exodus/bytes': 1.6.0 + "@exodus/bytes": 1.11.0 transitivePeerDependencies: - - '@exodus/crypto' + - "@noble/hashes" html-entities@2.6.0: {} html-escaper@2.0.2: {} - html-minifier-next@4.16.4(@swc/core@1.15.10): + html-minifier-next@4.16.4(@swc/core@1.15.11): dependencies: - '@types/relateurl': 0.2.33 + "@types/relateurl": 0.2.33 change-case: 4.1.2 - commander: 14.0.2 + commander: 14.0.3 entities: 7.0.0 lightningcss: 1.30.2 relateurl: 0.2.7 terser: 5.44.1 optionalDependencies: - '@swc/core': 1.15.10 + "@swc/core": 1.15.11 http-cache-semantics@4.1.1: {} @@ -13856,25 +13737,25 @@ snapshots: init-package-json@8.2.2: dependencies: - '@npmcli/package-json': 7.0.2 + "@npmcli/package-json": 7.0.2 npm-package-arg: 13.0.1 promzard: 2.0.0 read: 4.1.0 - semver: 7.7.2 + semver: 7.7.3 validate-npm-package-license: 3.0.4 validate-npm-package-name: 6.0.2 - inquirer@12.9.6(@types/node@25.0.10): + inquirer@12.9.6(@types/node@25.2.0): dependencies: - '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@25.0.10) - '@inquirer/prompts': 7.10.1(@types/node@25.0.10) - '@inquirer/type': 3.0.10(@types/node@25.0.10) + "@inquirer/ansi": 1.0.2 + "@inquirer/core": 10.3.2(@types/node@25.2.0) + "@inquirer/prompts": 7.10.1(@types/node@25.2.0) + "@inquirer/type": 3.0.10(@types/node@25.2.0) mute-stream: 2.0.0 run-async: 4.0.6 rxjs: 7.8.2 optionalDependencies: - '@types/node': 25.0.10 + "@types/node": 25.2.0 internal-slot@1.1.0: dependencies: @@ -13970,6 +13851,11 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-installed-globally@1.0.0: + dependencies: + global-directory: 4.0.1 + is-path-inside: 4.0.0 + is-interactive@1.0.0: {} is-map@2.0.3: {} @@ -13983,12 +13869,14 @@ snapshots: is-number@7.0.0: {} - is-obj@1.0.1: {} - is-obj@2.0.0: {} + is-path-inside@4.0.0: {} + is-plain-obj@1.1.0: {} + is-plain-obj@4.1.0: {} + is-plain-object@2.0.4: dependencies: isobject: 3.0.1 @@ -14011,8 +13899,6 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.2 - is-regexp@1.0.0: {} - is-set@2.0.3: {} is-shared-array-buffer@1.0.4: @@ -14042,20 +13928,12 @@ snapshots: dependencies: text-extensions: 1.9.0 - is-text-path@2.0.0: - dependencies: - text-extensions: 2.4.0 - is-typed-array@1.1.15: dependencies: which-typed-array: 1.1.19 is-unicode-supported@0.1.0: {} - is-url-superb@4.0.0: {} - - is-url@1.2.4: {} - is-weakmap@2.0.2: {} is-weakref@1.1.1: @@ -14098,19 +13976,19 @@ snapshots: jackspeak@3.4.3: dependencies: - '@isaacs/cliui': 8.0.2 + "@isaacs/cliui": 8.0.2 optionalDependencies: - '@pkgjs/parseargs': 0.11.0 + "@pkgjs/parseargs": 0.11.0 jackspeak@4.0.1: dependencies: - '@isaacs/cliui': 8.0.2 + "@isaacs/cliui": 8.0.2 optionalDependencies: - '@pkgjs/parseargs': 0.11.0 + "@pkgjs/parseargs": 0.11.0 jackspeak@4.1.1: dependencies: - '@isaacs/cliui': 8.0.2 + "@isaacs/cliui": 8.0.2 jake@10.8.7: dependencies: @@ -14123,14 +14001,14 @@ snapshots: jest-diff@30.2.0: dependencies: - '@jest/diff-sequences': 30.0.1 - '@jest/get-type': 30.1.0 + "@jest/diff-sequences": 30.0.1 + "@jest/get-type": 30.1.0 chalk: 4.1.2 pretty-format: 30.2.0 jest-worker@27.5.1: dependencies: - '@types/node': 25.0.10 + "@types/node": 25.2.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -14163,17 +14041,17 @@ snapshots: jsdoc-type-pratt-parser@7.1.0: {} - jsdom-global@3.0.2(jsdom@27.4.0(canvas@3.2.1)): + jsdom-global@3.0.2(jsdom@28.0.0(canvas@3.2.1)): dependencies: - jsdom: 27.4.0(canvas@3.2.1) + jsdom: 28.0.0(canvas@3.2.1) - jsdom@27.4.0(canvas@3.2.1): + jsdom@28.0.0(canvas@3.2.1): dependencies: - '@acemir/cssom': 0.9.29 - '@asamuzakjp/dom-selector': 6.7.6 - '@exodus/bytes': 1.6.0 - cssstyle: 5.3.5 - data-urls: 6.0.0 + "@acemir/cssom": 0.9.31 + "@asamuzakjp/dom-selector": 6.7.6 + "@exodus/bytes": 1.11.0 + cssstyle: 5.3.7 + data-urls: 7.0.0 decimal.js: 10.6.0 html-encoding-sniffer: 6.0.0 http-proxy-agent: 7.0.2 @@ -14183,23 +14061,17 @@ snapshots: saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 6.0.0 + undici: 7.20.0 w3c-xmlserializer: 5.0.0 - webidl-conversions: 8.0.0 - whatwg-mimetype: 4.0.0 - whatwg-url: 15.1.0 - ws: 8.18.3 + webidl-conversions: 8.0.1 + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.0 xml-name-validator: 5.0.0 optionalDependencies: canvas: 3.2.1 transitivePeerDependencies: - - '@exodus/crypto' - - bufferutil + - "@noble/hashes" - supports-color - - utf-8-validate - - jsesc@3.0.2: {} - - jsesc@3.1.0: {} json-buffer@3.0.1: {} @@ -14233,7 +14105,7 @@ snapshots: jsoneditor@10.4.2: dependencies: - ace-builds: 1.43.5 + ace-builds: 1.43.6 ajv: 6.12.6 javascript-natural-sort: 0.7.1 jmespath: 0.16.0 @@ -14277,15 +14149,15 @@ snapshots: kuler@2.0.0: {} - lerna@9.0.3(@swc/core@1.15.10)(@types/node@25.0.10): + lerna@9.0.3(@swc/core@1.15.11)(@types/node@25.2.0): dependencies: - '@lerna/create': 9.0.3(@swc/core@1.15.10)(@types/node@25.0.10)(typescript@5.9.3) - '@npmcli/arborist': 9.1.6 - '@npmcli/package-json': 7.0.2 - '@npmcli/run-script': 10.0.2 - '@nx/devkit': 22.3.3(nx@22.4.1(@swc/core@1.15.10)) - '@octokit/plugin-enterprise-rest': 6.0.1 - '@octokit/rest': 20.1.2 + "@lerna/create": 9.0.3(@swc/core@1.15.11)(@types/node@25.2.0)(typescript@5.9.3) + "@npmcli/arborist": 9.1.6 + "@npmcli/package-json": 7.0.2 + "@npmcli/run-script": 10.0.2 + "@nx/devkit": 22.3.3(nx@22.4.4(@swc/core@1.15.11)) + "@octokit/plugin-enterprise-rest": 6.0.1 + "@octokit/rest": 20.1.2 aproba: 2.0.0 byte-size: 8.1.1 chalk: 4.1.0 @@ -14309,7 +14181,7 @@ snapshots: import-local: 3.1.0 ini: 1.3.8 init-package-json: 8.2.2 - inquirer: 12.9.6(@types/node@25.0.10) + inquirer: 12.9.6(@types/node@25.2.0) is-ci: 3.0.1 is-stream: 2.0.0 jest-diff: 30.2.0 @@ -14324,7 +14196,7 @@ snapshots: npm-package-arg: 13.0.1 npm-packlist: 10.0.3 npm-registry-fetch: 19.1.0 - nx: 22.4.1(@swc/core@1.15.10) + nx: 22.4.4(@swc/core@1.15.11) p-map: 4.0.0 p-map-series: 2.1.0 p-pipe: 3.1.0 @@ -14357,9 +14229,9 @@ snapshots: yargs: 17.7.2 yargs-parser: 21.1.1 transitivePeerDependencies: - - '@swc-node/register' - - '@swc/core' - - '@types/node' + - "@swc-node/register" + - "@swc/core" + - "@types/node" - babel-plugin-macros - debug - supports-color @@ -14378,12 +14250,12 @@ snapshots: libnpmpublish@11.1.2: dependencies: - '@npmcli/package-json': 7.0.2 + "@npmcli/package-json": 7.0.2 ci-info: 4.0.0 npm-package-arg: 13.0.1 npm-registry-fetch: 19.1.0 proc-log: 5.0.0 - semver: 7.7.2 + semver: 7.7.3 sigstore: 4.1.0 ssri: 12.0.0 transitivePeerDependencies: @@ -14487,22 +14359,14 @@ snapshots: dependencies: p-locate: 5.0.0 - locate-path@7.2.0: - dependencies: - p-locate: 6.0.0 - locate-path@8.0.0: dependencies: p-locate: 6.0.0 lodash.camelcase@4.3.0: {} - lodash.debounce@4.0.8: {} - lodash.ismatch@4.4.0: {} - lodash.isplainobject@4.0.6: {} - lodash.kebabcase@4.1.1: {} lodash.merge@4.6.2: {} @@ -14513,8 +14377,6 @@ snapshots: lodash.startcase@4.4.0: {} - lodash.uniq@4.5.0: {} - lodash.upperfirst@4.3.1: {} lodash@4.17.23: {} @@ -14526,8 +14388,8 @@ snapshots: logform@2.7.0: dependencies: - '@colors/colors': 1.6.0 - '@types/triple-beam': 1.3.2 + "@colors/colors": 1.6.0 + "@types/triple-beam": 1.3.2 fecha: 4.2.3 ms: 2.1.3 safe-stable-stringify: 2.5.0 @@ -14541,18 +14403,12 @@ snapshots: lowercase-keys@2.0.0: {} - lru-cache@10.2.2: {} - lru-cache@10.4.3: {} lru-cache@11.0.0: {} lru-cache@11.2.4: {} - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - lru-cache@6.0.0: dependencies: yallist: 4.0.0 @@ -14561,33 +14417,14 @@ snapshots: luxon@3.7.2: {} - madge@8.0.0(typescript@5.9.3): - dependencies: - chalk: 4.1.2 - commander: 7.2.0 - commondir: 1.0.1 - debug: 4.3.4 - dependency-tree: 11.0.1 - ora: 5.4.1 - pluralize: 8.0.0 - pretty-ms: 7.0.1 - rc: 1.2.8 - stream-to-array: 2.3.0 - ts-graphviz: 2.1.2 - walkdir: 0.4.1 - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - magic-string@0.30.21: dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + "@jridgewell/sourcemap-codec": 1.5.5 magicast@0.5.1: dependencies: - '@babel/parser': 7.28.6 - '@babel/types': 7.28.6 + "@babel/parser": 7.28.6 + "@babel/types": 7.28.6 source-map-js: 1.2.1 make-dir@2.1.0: @@ -14601,13 +14438,13 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.7.2 + semver: 7.7.3 make-error@1.3.6: {} make-fetch-happen@14.0.3: dependencies: - '@npmcli/agent': 3.0.0 + "@npmcli/agent": 3.0.0 cacache: 19.0.1 http-cache-semantics: 4.1.1 minipass: 7.1.2 @@ -14623,7 +14460,7 @@ snapshots: make-fetch-happen@15.0.2: dependencies: - '@npmcli/agent': 4.0.0 + "@npmcli/agent": 4.0.0 cacache: 20.0.3 http-cache-semantics: 4.1.1 minipass: 7.1.2 @@ -14639,7 +14476,7 @@ snapshots: make-fetch-happen@15.0.3: dependencies: - '@npmcli/agent': 4.0.0 + "@npmcli/agent": 4.0.0 cacache: 20.0.3 http-cache-semantics: 4.1.1 minipass: 7.1.2 @@ -14681,9 +14518,11 @@ snapshots: meow@12.1.1: {} + meow@13.2.0: {} + meow@8.1.2: dependencies: - '@types/minimist': 1.2.2 + "@types/minimist": 1.2.2 camelcase-keys: 6.2.2 decamelize-keys: 1.1.1 hard-rejection: 2.1.0 @@ -14728,14 +14567,14 @@ snapshots: minify@15.0.1: dependencies: - '@putout/minify': 6.0.0 - '@swc/core': 1.15.10 + "@putout/minify": 6.0.0 + "@swc/core": 1.15.11 clean-css: 5.3.3 css-b64-images: 0.2.5 debug: 4.4.3(supports-color@5.5.0) esbuild: 0.27.2 find-up: 8.0.0 - html-minifier-next: 4.16.4(@swc/core@1.15.10) + html-minifier-next: 4.16.4(@swc/core@1.15.11) lightningcss: 1.30.2 montag: 1.2.1 readjson: 2.2.2 @@ -14743,7 +14582,7 @@ snapshots: try-catch: 4.0.7 try-to-catch: 4.0.3 transitivePeerDependencies: - - '@swc/helpers' + - "@swc/helpers" - supports-color minimatch@10.0.1: @@ -14752,7 +14591,7 @@ snapshots: minimatch@10.1.1: dependencies: - '@isaacs/brace-expansion': 5.0.0 + "@isaacs/brace-expansion": 5.0.0 minimatch@3.0.5: dependencies: @@ -14843,18 +14682,6 @@ snapshots: modify-values@1.0.1: {} - module-definition@6.0.0: - dependencies: - ast-module-types: 6.0.0 - node-source-walk: 7.0.0 - - module-lookup-amd@9.0.2: - dependencies: - commander: 12.1.0 - glob: 7.2.3 - requirejs: 2.3.7 - requirejs-config-file: 4.0.0 - montag@1.2.1: {} mrmime@2.0.0: {} @@ -14865,7 +14692,7 @@ snapshots: multimatch@5.0.0: dependencies: - '@types/minimatch': 3.0.5 + "@types/minimatch": 3.0.5 array-differ: 3.0.0 array-union: 2.1.0 arrify: 2.0.1 @@ -14919,10 +14746,6 @@ snapshots: node-releases@2.0.27: {} - node-source-walk@7.0.0: - dependencies: - '@babel/parser': 7.28.5 - nodemon@3.1.11: dependencies: chokidar: 3.5.3 @@ -14998,7 +14821,7 @@ snapshots: dependencies: hosted-git-info: 9.0.2 proc-log: 5.0.0 - semver: 7.7.2 + semver: 7.7.3 validate-npm-package-name: 6.0.2 npm-packlist@10.0.3: @@ -15022,7 +14845,7 @@ snapshots: npm-registry-fetch@19.1.0: dependencies: - '@npmcli/redact': 3.2.2 + "@npmcli/redact": 3.2.2 jsonparse: 1.3.1 make-fetch-happen: 15.0.2 minipass: 7.1.2 @@ -15039,7 +14862,7 @@ snapshots: nx-cloud@19.1.0: dependencies: - '@nrwl/nx-cloud': 19.1.0 + "@nrwl/nx-cloud": 19.1.0 axios: 1.7.4 chalk: 4.1.2 dotenv: 10.0.0 @@ -15052,12 +14875,12 @@ snapshots: transitivePeerDependencies: - debug - nx@22.4.1(@swc/core@1.15.10): + nx@22.4.4(@swc/core@1.15.11): dependencies: - '@napi-rs/wasm-runtime': 0.2.4 - '@yarnpkg/lockfile': 1.1.0 - '@yarnpkg/parsers': 3.0.2 - '@zkochan/js-yaml': 0.0.7 + "@napi-rs/wasm-runtime": 0.2.4 + "@yarnpkg/lockfile": 1.1.0 + "@yarnpkg/parsers": 3.0.2 + "@zkochan/js-yaml": 0.0.7 axios: 1.13.2 chalk: 4.1.2 cli-cursor: 3.1.0 @@ -15090,17 +14913,17 @@ snapshots: yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: - '@nx/nx-darwin-arm64': 22.4.1 - '@nx/nx-darwin-x64': 22.4.1 - '@nx/nx-freebsd-x64': 22.4.1 - '@nx/nx-linux-arm-gnueabihf': 22.4.1 - '@nx/nx-linux-arm64-gnu': 22.4.1 - '@nx/nx-linux-arm64-musl': 22.4.1 - '@nx/nx-linux-x64-gnu': 22.4.1 - '@nx/nx-linux-x64-musl': 22.4.1 - '@nx/nx-win32-arm64-msvc': 22.4.1 - '@nx/nx-win32-x64-msvc': 22.4.1 - '@swc/core': 1.15.10 + "@nx/nx-darwin-arm64": 22.4.4 + "@nx/nx-darwin-x64": 22.4.4 + "@nx/nx-freebsd-x64": 22.4.4 + "@nx/nx-linux-arm-gnueabihf": 22.4.4 + "@nx/nx-linux-arm64-gnu": 22.4.4 + "@nx/nx-linux-arm64-musl": 22.4.4 + "@nx/nx-linux-x64-gnu": 22.4.4 + "@nx/nx-linux-x64-musl": 22.4.4 + "@nx/nx-win32-arm64-msvc": 22.4.4 + "@nx/nx-win32-x64-msvc": 22.4.4 + "@swc/core": 1.15.11 transitivePeerDependencies: - debug @@ -15169,7 +14992,7 @@ snapshots: optionator@0.9.3: dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 + "@aashutoshrathi/word-wrap": 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 @@ -15189,18 +15012,6 @@ snapshots: strip-ansi: 6.0.1 wcwidth: 1.0.1 - ora@5.4.1: - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.0 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - own-keys@1.0.1: dependencies: get-intrinsic: 1.3.0 @@ -15278,11 +15089,11 @@ snapshots: pacote@21.0.1: dependencies: - '@npmcli/git': 6.0.3 - '@npmcli/installed-package-contents': 3.0.0 - '@npmcli/package-json': 7.0.2 - '@npmcli/promise-spawn': 8.0.3 - '@npmcli/run-script': 10.0.2 + "@npmcli/git": 6.0.3 + "@npmcli/installed-package-contents": 3.0.0 + "@npmcli/package-json": 7.0.2 + "@npmcli/promise-spawn": 8.0.3 + "@npmcli/run-script": 10.0.2 cacache: 20.0.3 fs-minipass: 3.0.2 minipass: 7.1.2 @@ -15300,11 +15111,11 @@ snapshots: pacote@21.0.4: dependencies: - '@npmcli/git': 7.0.1 - '@npmcli/installed-package-contents': 4.0.0 - '@npmcli/package-json': 7.0.2 - '@npmcli/promise-spawn': 9.0.1 - '@npmcli/run-script': 10.0.2 + "@npmcli/git": 7.0.1 + "@npmcli/installed-package-contents": 4.0.0 + "@npmcli/package-json": 7.0.2 + "@npmcli/promise-spawn": 9.0.1 + "@npmcli/run-script": 10.0.2 cacache: 20.0.3 fs-minipass: 3.0.2 minipass: 7.1.2 @@ -15346,13 +15157,11 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.27.1 + "@babel/code-frame": 7.27.1 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - parse-ms@2.1.0: {} - parse-path@7.0.0: dependencies: protocols: 2.0.1 @@ -15389,8 +15198,6 @@ snapshots: path-exists@4.0.0: {} - path-exists@5.0.0: {} - path-is-absolute@1.0.1: {} path-key@3.1.1: {} @@ -15399,7 +15206,7 @@ snapshots: path-scurry@1.11.1: dependencies: - lru-cache: 10.2.2 + lru-cache: 10.4.3 minipass: 7.1.2 path-scurry@2.0.0: @@ -15444,8 +15251,6 @@ snapshots: dependencies: find-up: 4.1.0 - pluralize@8.0.0: {} - possible-typed-array-names@1.1.0: {} postcss-selector-parser@7.1.1: @@ -15453,13 +15258,6 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-values-parser@6.0.2(postcss@8.5.6): - dependencies: - color-name: 1.1.4 - is-url-superb: 4.0.0 - postcss: 8.5.6 - quote-unquote: 1.0.0 - postcss@8.5.6: dependencies: nanoid: 3.3.11 @@ -15481,26 +15279,6 @@ snapshots: tar-fs: 2.1.2 tunnel-agent: 0.6.0 - precinct@12.1.2: - dependencies: - '@dependents/detective-less': 5.0.0 - commander: 12.1.0 - detective-amd: 6.0.0 - detective-cjs: 6.0.0 - detective-es6: 5.0.0 - detective-postcss: 7.0.0(postcss@8.5.6) - detective-sass: 6.0.0 - detective-scss: 5.0.0 - detective-stylus: 5.0.0 - detective-typescript: 13.0.0(typescript@5.9.3) - detective-vue2: 2.0.3(typescript@5.9.3) - module-definition: 6.0.0 - node-source-walk: 7.0.0 - postcss: 8.5.6 - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - prelude-ls@1.2.1: {} prettier-linter-helpers@1.0.1: @@ -15509,7 +15287,7 @@ snapshots: prettier-plugin-multiline-arrays@4.1.3(prettier@3.8.1): dependencies: - '@augment-vir/common': 31.54.4 + "@augment-vir/common": 31.54.4 prettier: 3.8.1 proxy-vir: 2.0.1 @@ -15517,14 +15295,10 @@ snapshots: pretty-format@30.2.0: dependencies: - '@jest/schemas': 30.0.5 + "@jest/schemas": 30.0.5 ansi-styles: 5.2.0 react-is: 18.3.1 - pretty-ms@7.0.1: - dependencies: - parse-ms: 2.1.0 - proc-log@5.0.0: {} proc-log@6.1.0: {} @@ -15568,8 +15342,8 @@ snapshots: proxy-vir@2.0.1: dependencies: - '@augment-vir/assert': 31.54.4 - '@augment-vir/common': 31.54.4 + "@augment-vir/assert": 31.54.4 + "@augment-vir/common": 31.54.4 pstree.remy@1.1.8: {} @@ -15659,8 +15433,6 @@ snapshots: quick-lru@5.1.1: {} - quote-unquote@1.0.0: {} - randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 @@ -15706,7 +15478,7 @@ snapshots: read-pkg@5.2.0: dependencies: - '@types/normalize-package-data': 2.4.1 + "@types/normalize-package-data": 2.4.1 normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 @@ -15769,15 +15541,7 @@ snapshots: get-proto: 1.0.1 which-builtin-type: 1.2.1 - regenerate-unicode-properties@10.2.0: - dependencies: - regenerate: 1.4.2 - - regenerate-unicode-properties@10.2.2: - dependencies: - regenerate: 1.4.2 - - regenerate@1.4.2: {} + regexp-tree@0.1.27: {} regexp.prototype.flags@1.5.4: dependencies: @@ -15788,47 +15552,12 @@ snapshots: gopd: 1.2.0 set-function-name: 2.0.2 - 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 - - regexpu-core@6.4.0: - dependencies: - regenerate: 1.4.2 - regenerate-unicode-properties: 10.2.2 - regjsgen: 0.8.0 - regjsparser: 0.13.0 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.2.1 - - regjsgen@0.8.0: {} - - regjsparser@0.12.0: - dependencies: - jsesc: 3.0.2 - - regjsparser@0.13.0: - dependencies: - jsesc: 3.1.0 - relateurl@0.2.7: {} require-directory@2.1.1: {} require-from-string@2.0.2: {} - requirejs-config-file@4.0.0: - dependencies: - esprima: 4.0.1 - stringify-object: 3.3.0 - - requirejs@2.3.7: {} - reserved-identifiers@1.2.0: {} resolve-alpn@1.2.1: {} @@ -15837,8 +15566,6 @@ snapshots: dependencies: resolve-from: 5.0.0 - resolve-dependency-path@4.0.0: {} - resolve-from@4.0.0: {} resolve-from@5.0.0: {} @@ -15895,33 +15622,33 @@ snapshots: rollup@4.55.1: dependencies: - '@types/estree': 1.0.8 + "@types/estree": 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.55.1 - '@rollup/rollup-android-arm64': 4.55.1 - '@rollup/rollup-darwin-arm64': 4.55.1 - '@rollup/rollup-darwin-x64': 4.55.1 - '@rollup/rollup-freebsd-arm64': 4.55.1 - '@rollup/rollup-freebsd-x64': 4.55.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.55.1 - '@rollup/rollup-linux-arm-musleabihf': 4.55.1 - '@rollup/rollup-linux-arm64-gnu': 4.55.1 - '@rollup/rollup-linux-arm64-musl': 4.55.1 - '@rollup/rollup-linux-loong64-gnu': 4.55.1 - '@rollup/rollup-linux-loong64-musl': 4.55.1 - '@rollup/rollup-linux-ppc64-gnu': 4.55.1 - '@rollup/rollup-linux-ppc64-musl': 4.55.1 - '@rollup/rollup-linux-riscv64-gnu': 4.55.1 - '@rollup/rollup-linux-riscv64-musl': 4.55.1 - '@rollup/rollup-linux-s390x-gnu': 4.55.1 - '@rollup/rollup-linux-x64-gnu': 4.55.1 - '@rollup/rollup-linux-x64-musl': 4.55.1 - '@rollup/rollup-openbsd-x64': 4.55.1 - '@rollup/rollup-openharmony-arm64': 4.55.1 - '@rollup/rollup-win32-arm64-msvc': 4.55.1 - '@rollup/rollup-win32-ia32-msvc': 4.55.1 - '@rollup/rollup-win32-x64-gnu': 4.55.1 - '@rollup/rollup-win32-x64-msvc': 4.55.1 + "@rollup/rollup-android-arm-eabi": 4.55.1 + "@rollup/rollup-android-arm64": 4.55.1 + "@rollup/rollup-darwin-arm64": 4.55.1 + "@rollup/rollup-darwin-x64": 4.55.1 + "@rollup/rollup-freebsd-arm64": 4.55.1 + "@rollup/rollup-freebsd-x64": 4.55.1 + "@rollup/rollup-linux-arm-gnueabihf": 4.55.1 + "@rollup/rollup-linux-arm-musleabihf": 4.55.1 + "@rollup/rollup-linux-arm64-gnu": 4.55.1 + "@rollup/rollup-linux-arm64-musl": 4.55.1 + "@rollup/rollup-linux-loong64-gnu": 4.55.1 + "@rollup/rollup-linux-loong64-musl": 4.55.1 + "@rollup/rollup-linux-ppc64-gnu": 4.55.1 + "@rollup/rollup-linux-ppc64-musl": 4.55.1 + "@rollup/rollup-linux-riscv64-gnu": 4.55.1 + "@rollup/rollup-linux-riscv64-musl": 4.55.1 + "@rollup/rollup-linux-s390x-gnu": 4.55.1 + "@rollup/rollup-linux-x64-gnu": 4.55.1 + "@rollup/rollup-linux-x64-musl": 4.55.1 + "@rollup/rollup-openbsd-x64": 4.55.1 + "@rollup/rollup-openharmony-arm64": 4.55.1 + "@rollup/rollup-win32-arm64-msvc": 4.55.1 + "@rollup/rollup-win32-ia32-msvc": 4.55.1 + "@rollup/rollup-win32-x64-gnu": 4.55.1 + "@rollup/rollup-win32-x64-msvc": 4.55.1 fsevents: 2.3.3 router@2.2.0: @@ -15967,21 +15694,21 @@ snapshots: es-errors: 1.3.0 is-regex: 1.2.1 + safe-regex@2.1.1: + dependencies: + regexp-tree: 0.1.27 + safe-stable-stringify@2.5.0: {} safer-buffer@2.1.2: {} - sass-lookup@6.0.1: - dependencies: - commander: 12.1.0 - sass@1.97.3: dependencies: chokidar: 4.0.3 immutable: 5.1.4 source-map-js: 1.2.1 optionalDependencies: - '@parcel/watcher': 2.5.1 + "@parcel/watcher": 2.5.1 sax@1.4.1: {} @@ -15991,14 +15718,14 @@ snapshots: schema-utils@4.3.2: dependencies: - '@types/json-schema': 7.0.15 + "@types/json-schema": 7.0.15 ajv: 8.12.0 ajv-formats: 2.1.1(ajv@8.12.0) ajv-keywords: 5.1.0(ajv@8.12.0) schema-utils@4.3.3: dependencies: - '@types/json-schema': 7.0.15 + "@types/json-schema": 7.0.15 ajv: 8.12.0 ajv-formats: 2.1.1(ajv@8.12.0) ajv-keywords: 5.1.0(ajv@8.12.0) @@ -16068,7 +15795,7 @@ snapshots: define-data-property: 1.1.4 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.4 + get-intrinsic: 1.3.0 gopd: 1.2.0 has-property-descriptors: 1.0.2 @@ -16135,12 +15862,12 @@ snapshots: sigstore@4.1.0: dependencies: - '@sigstore/bundle': 4.0.0 - '@sigstore/core': 3.1.0 - '@sigstore/protobuf-specs': 0.5.0 - '@sigstore/sign': 4.1.0 - '@sigstore/tuf': 4.0.1 - '@sigstore/verify': 3.1.0 + "@sigstore/bundle": 4.0.0 + "@sigstore/core": 3.1.0 + "@sigstore/protobuf-specs": 0.5.0 + "@sigstore/sign": 4.1.0 + "@sigstore/tuf": 4.0.1 + "@sigstore/verify": 3.1.0 transitivePeerDependencies: - supports-color @@ -16158,7 +15885,7 @@ snapshots: sirv@3.0.2: dependencies: - '@polka/url': 1.0.0-next.25 + "@polka/url": 1.0.0-next.25 mrmime: 2.0.0 totalist: 3.0.1 @@ -16260,10 +15987,6 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 - stream-to-array@2.3.0: - dependencies: - any-promise: 1.3.0 - string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -16315,12 +16038,6 @@ snapshots: dependencies: safe-buffer: 5.2.1 - stringify-object@3.3.0: - dependencies: - get-own-enumerable-property-symbols: 3.0.2 - is-obj: 1.0.1 - is-regexp: 1.0.0 - strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -16347,13 +16064,9 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - stylus-lookup@6.0.0: - dependencies: - commander: 12.1.0 - stylus@0.64.0: dependencies: - '@adobe/css-tools': 4.3.3 + "@adobe/css-tools": 4.3.3 debug: 4.3.6 glob: 10.4.5 sax: 1.4.1 @@ -16381,16 +16094,20 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + swc-loader@0.2.7(@swc/core@1.15.11)(webpack@5.104.1): + dependencies: + "@swc/core": 1.15.11 + "@swc/counter": 0.1.3 + webpack: 5.104.1(@swc/core@1.15.11)(webpack-cli@6.0.1) + symbol-tree@3.2.4: {} synckit@0.11.12: dependencies: - '@pkgr/core': 0.2.9 + "@pkgr/core": 0.2.9 tagged-tag@1.0.0: {} - tapable@2.2.1: {} - tapable@2.3.0: {} tar-fs@2.1.2: @@ -16419,7 +16136,7 @@ snapshots: tar@7.5.2: dependencies: - '@isaacs/fs-minipass': 4.0.1 + "@isaacs/fs-minipass": 4.0.1 chownr: 3.0.0 minipass: 7.1.2 minizlib: 3.1.0 @@ -16427,35 +16144,33 @@ snapshots: temp-dir@1.0.0: {} - terser-webpack-plugin@5.3.16(@swc/core@1.15.10)(webpack@5.104.1): + terser-webpack-plugin@5.3.16(@swc/core@1.15.11)(webpack@5.104.1): dependencies: - '@jridgewell/trace-mapping': 0.3.29 + "@jridgewell/trace-mapping": 0.3.29 jest-worker: 27.5.1 schema-utils: 4.3.2 serialize-javascript: 6.0.2 terser: 5.36.0 - webpack: 5.104.1(@swc/core@1.15.10)(webpack-cli@6.0.1) + webpack: 5.104.1(@swc/core@1.15.11)(webpack-cli@6.0.1) optionalDependencies: - '@swc/core': 1.15.10 + "@swc/core": 1.15.11 terser@5.36.0: dependencies: - '@jridgewell/source-map': 0.3.5 + "@jridgewell/source-map": 0.3.5 acorn: 8.12.1 commander: 2.20.3 source-map-support: 0.5.21 terser@5.44.1: dependencies: - '@jridgewell/source-map': 0.3.5 + "@jridgewell/source-map": 0.3.5 acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 text-extensions@1.9.0: {} - text-extensions@2.4.0: {} - text-hex@1.0.0: {} through2@2.0.5: @@ -16497,7 +16212,7 @@ snapshots: to-valid-identifier@1.0.0: dependencies: - '@sindresorhus/base62': 1.0.0 + "@sindresorhus/base62": 1.0.0 reserved-identifiers: 1.2.0 toidentifier@1.0.1: {} @@ -16538,10 +16253,6 @@ snapshots: try-to-catch@4.0.3: {} - ts-api-utils@1.3.0(typescript@5.9.3): - dependencies: - typescript: 5.9.3 - ts-api-utils@2.3.0(typescript@5.9.3): dependencies: typescript: 5.9.3 @@ -16550,16 +16261,9 @@ snapshots: dependencies: typescript: 5.9.3 - ts-graphviz@2.1.2: - dependencies: - '@ts-graphviz/adapter': 2.0.3 - '@ts-graphviz/ast': 2.0.3 - '@ts-graphviz/common': 2.1.2 - '@ts-graphviz/core': 2.0.3 - ts-json-schema-generator@2.4.0: dependencies: - '@types/json-schema': 7.0.15 + "@types/json-schema": 7.0.15 commander: 13.1.0 glob: 11.0.2 json5: 2.2.3 @@ -16568,14 +16272,14 @@ snapshots: tslib: 2.8.1 typescript: 5.9.3 - ts-node@10.9.2(@swc/core@1.15.10)(@types/node@18.19.45)(typescript@5.5.4): + ts-node@10.9.2(@swc/core@1.15.11)(@types/node@18.19.45)(typescript@5.5.4): dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 18.19.45 + "@cspotcode/source-map-support": 0.8.1 + "@tsconfig/node10": 1.0.9 + "@tsconfig/node12": 1.0.11 + "@tsconfig/node14": 1.0.3 + "@tsconfig/node16": 1.0.4 + "@types/node": 18.19.45 acorn: 8.10.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -16586,16 +16290,16 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.15.10 + "@swc/core": 1.15.11 - ts-node@10.9.2(@swc/core@1.15.10)(@types/node@25.0.10)(typescript@5.9.3): + ts-node@10.9.2(@swc/core@1.15.11)(@types/node@25.2.0)(typescript@5.9.3): dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 25.0.10 + "@cspotcode/source-map-support": 0.8.1 + "@tsconfig/node10": 1.0.9 + "@tsconfig/node12": 1.0.11 + "@tsconfig/node14": 1.0.3 + "@tsconfig/node16": 1.0.4 + "@types/node": 25.2.0 acorn: 8.10.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -16606,11 +16310,18 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.15.10 + "@swc/core": 1.15.11 + + tsconfig-paths-webpack-plugin@4.2.0: + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.18.4 + tapable: 2.3.0 + tsconfig-paths: 4.2.0 tsconfig-paths@3.15.0: dependencies: - '@types/json5': 0.0.29 + "@types/json5": 0.0.29 json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 @@ -16625,7 +16336,7 @@ snapshots: tuf-js@4.1.0: dependencies: - '@tufjs/models': 4.1.0 + "@tufjs/models": 4.1.0 debug: 4.4.3(supports-color@5.5.0) make-fetch-happen: 15.0.2 transitivePeerDependencies: @@ -16695,9 +16406,9 @@ snapshots: typed-event-target@4.1.0: dependencies: - '@augment-vir/assert': 31.54.4 - '@augment-vir/common': 31.54.4 - '@augment-vir/core': 31.54.4 + "@augment-vir/assert": 31.54.4 + "@augment-vir/common": 31.54.4 + "@augment-vir/core": 31.54.4 typedarray@0.0.6: {} @@ -16720,7 +16431,7 @@ snapshots: typedoc: 0.28.16(typescript@5.9.3) typescript: 5.9.3 - typedoc-plugin-mdn-links@5.1.0(typedoc@0.28.16(typescript@5.9.3)): + typedoc-plugin-mdn-links@5.1.1(typedoc@0.28.16(typescript@5.9.3)): dependencies: typedoc: 0.28.16(typescript@5.9.3) @@ -16730,38 +16441,38 @@ snapshots: typedoc@0.28.16(typescript@5.9.3): dependencies: - '@gerrit0/mini-shiki': 3.20.0 + "@gerrit0/mini-shiki": 3.20.0 lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 typescript: 5.9.3 yaml: 2.8.1 - typescript-eslint@8.53.1(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3): + typescript-eslint@8.54.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3))(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) - '@typescript-eslint/parser': 8.53.1(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.53.1(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) + "@typescript-eslint/eslint-plugin": 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3))(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) + "@typescript-eslint/parser": 8.54.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) + "@typescript-eslint/typescript-estree": 8.54.0(typescript@5.9.3) + "@typescript-eslint/utils": 8.54.0(eslint@9.39.2(jiti@2.4.2))(typescript@5.9.3) eslint: 9.39.2(jiti@2.4.2) typescript: 5.9.3 transitivePeerDependencies: - supports-color - typescript-json-schema@0.67.1(@swc/core@1.15.10): + typescript-json-schema@0.67.1(@swc/core@1.15.11): dependencies: - '@types/json-schema': 7.0.15 - '@types/node': 18.19.45 + "@types/json-schema": 7.0.15 + "@types/node": 18.19.45 glob: 7.2.3 path-equal: 1.2.5 safe-stable-stringify: 2.5.0 - ts-node: 10.9.2(@swc/core@1.15.10)(@types/node@18.19.45)(typescript@5.5.4) + ts-node: 10.9.2(@swc/core@1.15.11)(@types/node@18.19.45)(typescript@5.5.4) typescript: 5.5.4 vm2: 3.10.0 yargs: 17.7.2 transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' + - "@swc/core" + - "@swc/wasm" typescript@5.5.4: {} @@ -16785,20 +16496,7 @@ snapshots: undici-types@7.16.0: {} - unicode-canonical-property-names-ecmascript@2.0.0: {} - - unicode-match-property-ecmascript@2.0.0: - dependencies: - unicode-canonical-property-names-ecmascript: 2.0.0 - unicode-property-aliases-ecmascript: 2.1.0 - - unicode-match-property-value-ecmascript@2.1.0: {} - - unicode-match-property-value-ecmascript@2.2.1: {} - - unicode-property-aliases-ecmascript@2.1.0: {} - - unicorn-magic@0.1.0: {} + undici@7.20.0: {} unicorn-magic@0.3.0: {} @@ -16863,11 +16561,11 @@ snapshots: vanilla-picker@2.12.3: dependencies: - '@sphinxxxx/color-conversion': 2.2.2 + "@sphinxxxx/color-conversion": 2.2.2 vary@1.1.2: {} - vite@7.3.1(@types/node@25.0.10)(jiti@2.4.2)(lightningcss@1.30.2)(sass@1.97.3)(stylus@0.64.0)(terser@5.44.1)(yaml@2.8.1): + vite@7.3.1(@types/node@25.2.0)(jiti@2.4.2)(lightningcss@1.30.2)(sass@1.97.3)(stylus@0.64.0)(terser@5.44.1)(yaml@2.8.1): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -16876,7 +16574,7 @@ snapshots: rollup: 4.55.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 25.0.10 + "@types/node": 25.2.0 fsevents: 2.3.3 jiti: 2.4.2 lightningcss: 1.30.2 @@ -16885,15 +16583,15 @@ snapshots: terser: 5.44.1 yaml: 2.8.1 - vitest@4.0.18(@types/node@25.0.10)(@vitest/ui@4.0.18)(jiti@2.4.2)(jsdom@27.4.0(canvas@3.2.1))(lightningcss@1.30.2)(sass@1.97.3)(stylus@0.64.0)(terser@5.44.1)(yaml@2.8.1): + vitest@4.0.18(@types/node@25.2.0)(@vitest/ui@4.0.18)(jiti@2.4.2)(jsdom@28.0.0(canvas@3.2.1))(lightningcss@1.30.2)(sass@1.97.3)(stylus@0.64.0)(terser@5.44.1)(yaml@2.8.1): dependencies: - '@vitest/expect': 4.0.18 - '@vitest/mocker': 4.0.18(vite@7.3.1(@types/node@25.0.10)(jiti@2.4.2)(lightningcss@1.30.2)(sass@1.97.3)(stylus@0.64.0)(terser@5.44.1)(yaml@2.8.1)) - '@vitest/pretty-format': 4.0.18 - '@vitest/runner': 4.0.18 - '@vitest/snapshot': 4.0.18 - '@vitest/spy': 4.0.18 - '@vitest/utils': 4.0.18 + "@vitest/expect": 4.0.18 + "@vitest/mocker": 4.0.18(vite@7.3.1(@types/node@25.2.0)(jiti@2.4.2)(lightningcss@1.30.2)(sass@1.97.3)(stylus@0.64.0)(terser@5.44.1)(yaml@2.8.1)) + "@vitest/pretty-format": 4.0.18 + "@vitest/runner": 4.0.18 + "@vitest/snapshot": 4.0.18 + "@vitest/spy": 4.0.18 + "@vitest/utils": 4.0.18 es-module-lexer: 1.7.0 expect-type: 1.3.0 magic-string: 0.30.21 @@ -16905,12 +16603,12 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.1(@types/node@25.0.10)(jiti@2.4.2)(lightningcss@1.30.2)(sass@1.97.3)(stylus@0.64.0)(terser@5.44.1)(yaml@2.8.1) + vite: 7.3.1(@types/node@25.2.0)(jiti@2.4.2)(lightningcss@1.30.2)(sass@1.97.3)(stylus@0.64.0)(terser@5.44.1)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 25.0.10 - '@vitest/ui': 4.0.18(vitest@4.0.18) - jsdom: 27.4.0(canvas@3.2.1) + "@types/node": 25.2.0 + "@vitest/ui": 4.0.18(vitest@4.0.18) + jsdom: 28.0.0(canvas@3.2.1) transitivePeerDependencies: - jiti - less @@ -16937,24 +16635,24 @@ snapshots: walk-up-path@4.0.0: {} - walkdir@0.4.1: {} - watchpack@2.4.4: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 + watskeburt@5.0.2: {} + wcwidth@1.0.1: dependencies: defaults: 1.0.4 webidl-conversions@3.0.1: {} - webidl-conversions@8.0.0: {} + webidl-conversions@8.0.1: {} webpack-bundle-analyzer@5.2.0: dependencies: - '@discoveryjs/json-ext': 0.5.7 + "@discoveryjs/json-ext": 0.5.7 acorn: 8.15.0 acorn-walk: 8.3.4 commander: 7.2.0 @@ -16971,10 +16669,10 @@ snapshots: webpack-cli@6.0.1(webpack-bundle-analyzer@5.2.0)(webpack@5.104.1): dependencies: - '@discoveryjs/json-ext': 0.6.3 - '@webpack-cli/configtest': 3.0.1(webpack-cli@6.0.1)(webpack@5.104.1) - '@webpack-cli/info': 3.0.1(webpack-cli@6.0.1)(webpack@5.104.1) - '@webpack-cli/serve': 3.0.1(webpack-cli@6.0.1)(webpack@5.104.1) + "@discoveryjs/json-ext": 0.6.3 + "@webpack-cli/configtest": 3.0.1(webpack-cli@6.0.1)(webpack@5.104.1) + "@webpack-cli/info": 3.0.1(webpack-cli@6.0.1)(webpack@5.104.1) + "@webpack-cli/serve": 3.0.1(webpack-cli@6.0.1)(webpack@5.104.1) colorette: 2.0.20 commander: 12.1.0 cross-spawn: 7.0.3 @@ -16983,7 +16681,7 @@ snapshots: import-local: 3.1.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.104.1(@swc/core@1.15.10)(webpack-cli@6.0.1) + webpack: 5.104.1(@swc/core@1.15.11)(webpack-cli@6.0.1) webpack-merge: 6.0.1 optionalDependencies: webpack-bundle-analyzer: 5.2.0 @@ -16996,14 +16694,14 @@ snapshots: webpack-sources@3.3.3: {} - webpack@5.104.1(@swc/core@1.15.10)(webpack-cli@6.0.1): + webpack@5.104.1(@swc/core@1.15.11)(webpack-cli@6.0.1): dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/wasm-edit': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 + "@types/eslint-scope": 3.7.7 + "@types/estree": 1.0.8 + "@types/json-schema": 7.0.15 + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/wasm-edit": 1.14.1 + "@webassemblyjs/wasm-parser": 1.14.1 acorn: 8.15.0 acorn-import-phases: 1.0.4(acorn@8.15.0) browserslist: 4.28.1 @@ -17020,22 +16718,25 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.16(@swc/core@1.15.10)(webpack@5.104.1) + terser-webpack-plugin: 5.3.16(@swc/core@1.15.11)(webpack@5.104.1) watchpack: 2.4.4 webpack-sources: 3.3.3 optionalDependencies: webpack-cli: 6.0.1(webpack-bundle-analyzer@5.2.0)(webpack@5.104.1) transitivePeerDependencies: - - '@swc/core' + - "@swc/core" - esbuild - uglify-js - whatwg-mimetype@4.0.0: {} + whatwg-mimetype@5.0.0: {} - whatwg-url@15.1.0: + whatwg-url@16.0.0: dependencies: + "@exodus/bytes": 1.11.0 tr46: 6.0.0 - webidl-conversions: 8.0.0 + webidl-conversions: 8.0.1 + transitivePeerDependencies: + - "@noble/hashes" whatwg-url@5.0.0: dependencies: @@ -17114,8 +16815,8 @@ snapshots: winston@3.19.0: dependencies: - '@colors/colors': 1.6.0 - '@dabh/diagnostics': 2.0.8 + "@colors/colors": 1.6.0 + "@dabh/diagnostics": 2.0.8 async: 3.2.4 is-stream: 2.0.1 logform: 2.7.0 @@ -17128,8 +16829,8 @@ snapshots: with@7.0.2: dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + "@babel/parser": 7.28.5 + "@babel/types": 7.28.5 assert-never: 1.3.0 babel-walk: 3.0.0-canary-5 @@ -17155,7 +16856,7 @@ snapshots: wrap-ansi@9.0.0: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 7.2.0 strip-ansi: 7.1.0 @@ -17204,8 +16905,6 @@ snapshots: y18n@5.0.8: {} - yallist@3.1.1: {} - yallist@4.0.0: {} yallist@5.0.0: {} @@ -17231,7 +16930,7 @@ snapshots: yargs@17.7.2: dependencies: cliui: 8.0.1 - escalade: 3.1.1 + escalade: 3.2.0 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 diff --git a/shapes/arrow/CHANGELOG.md b/shapes/arrow/CHANGELOG.md index ff74361383c..7bb4e205ae3 100644 --- a/shapes/arrow/CHANGELOG.md +++ b/shapes/arrow/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-arrow + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-arrow + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-arrow + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/shape-arrow diff --git a/shapes/arrow/package.dist.json b/shapes/arrow/package.dist.json index 470cedbc404..5301934395c 100644 --- a/shapes/arrow/package.dist.json +++ b/shapes/arrow/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-arrow", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles arrow shape", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/shapes/arrow/package.json b/shapes/arrow/package.json index 0390c67ac6f..248fc288a16 100644 --- a/shapes/arrow/package.json +++ b/shapes/arrow/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-arrow", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles arrow shape", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/shapes/arrow/src/ArrowDrawer.ts b/shapes/arrow/src/ArrowDrawer.ts index 84908a797b7..de1c5184be4 100644 --- a/shapes/arrow/src/ArrowDrawer.ts +++ b/shapes/arrow/src/ArrowDrawer.ts @@ -8,8 +8,6 @@ const defaultHeightFactor = 0.5, defaultBodyHeightFactor = 0.5; export class ArrowDrawer implements IShapeDrawer { - readonly validTypes = ["arrow"] as const; - draw(data: IShapeDrawData): void { drawArrow(data); } diff --git a/shapes/arrow/src/index.ts b/shapes/arrow/src/index.ts index bfc5ad544ec..f6a21f194e3 100644 --- a/shapes/arrow/src/index.ts +++ b/shapes/arrow/src/index.ts @@ -8,9 +8,11 @@ declare const __VERSION__: string; export async function loadArrowShape(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { ArrowDrawer } = await import("./ArrowDrawer.js"); + await engine.register(e => { + e.addShape(["arrow"], async () => { + const { ArrowDrawer } = await import("./ArrowDrawer.js"); - e.addShape(new ArrowDrawer()); + return new ArrowDrawer(); + }); }); } diff --git a/shapes/cards/CHANGELOG.md b/shapes/cards/CHANGELOG.md index eefbd38d058..a8e4fa98ef5 100644 --- a/shapes/cards/CHANGELOG.md +++ b/shapes/cards/CHANGELOG.md @@ -3,6 +3,24 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-cards + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-cards + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Bug Fixes + +- update getCacheKey function to include hdr parameter ([8dfa161](https://github.com/tsparticles/tsparticles/commit/8dfa16101a63de4d5d7df4c4073feb74ec6bce90)) + +### Features + +- add full card shape, and utilities for path drawing ([f4a985f](https://github.com/tsparticles/tsparticles/commit/f4a985f092e7da94e6f8bd211c3007246d0488b3)) + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/shape-cards diff --git a/shapes/cards/package.dist.json b/shapes/cards/package.dist.json index 05d9509cd4d..3d3edef83c1 100644 --- a/shapes/cards/package.dist.json +++ b/shapes/cards/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-cards", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles cards shape", "homepage": "https://particles.js.org", "repository": { @@ -100,8 +100,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/path-utils": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/path-utils": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/shapes/cards/package.json b/shapes/cards/package.json index 5e9e49aab87..79c95c85f7e 100644 --- a/shapes/cards/package.json +++ b/shapes/cards/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-cards", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles cards shape", "homepage": "https://particles.js.org", "scripts": { @@ -108,8 +108,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/path-utils": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/path-utils": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/shapes/cards/src/cards/CardDrawer.ts b/shapes/cards/src/cards/CardDrawer.ts index 579e9dabd81..0b49aac78b7 100644 --- a/shapes/cards/src/cards/CardDrawer.ts +++ b/shapes/cards/src/cards/CardDrawer.ts @@ -4,16 +4,27 @@ import type { ICardData } from "../ICardData.js"; import { drawRoundedCard } from "../utils.js"; export class CardDrawer implements IShapeDrawer { - readonly validTypes = ["card"] as const; - draw(data: IShapeDrawData): void { - const { context, particle, radius } = data; + const { context, particle, opacity, radius } = data; if (!particle.cardData) { return; } - drawRoundedCard(context, radius, particle.cardData, particle.container.hdr, particle.isShowingBack()); + const defaultOpacity = context.globalAlpha; + + context.globalAlpha = opacity; + + drawRoundedCard( + context, + radius, + particle.cardData, + particle.container.hdr, + particle.isShowingBack(), + particle.container.canvas.settings, + ); + + context.globalAlpha = defaultOpacity; } particleInit(_container: Container, particle: CardParticle): void { diff --git a/shapes/cards/src/cards/index.ts b/shapes/cards/src/cards/index.ts index ea4a106f7c8..0af7b98c5f6 100644 --- a/shapes/cards/src/cards/index.ts +++ b/shapes/cards/src/cards/index.ts @@ -8,9 +8,11 @@ declare const __VERSION__: string; export async function loadFullCardsShape(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { CardDrawer } = await import("./CardDrawer.js"); + await engine.register(e => { + e.addShape(["card"], async () => { + const { CardDrawer } = await import("./CardDrawer.js"); - e.addShape(new CardDrawer()); + return new CardDrawer(); + }); }); } diff --git a/shapes/cards/src/clubs/ClubDrawer.ts b/shapes/cards/src/clubs/ClubDrawer.ts index c3c1ad22503..380db49f2dd 100644 --- a/shapes/cards/src/clubs/ClubDrawer.ts +++ b/shapes/cards/src/clubs/ClubDrawer.ts @@ -3,8 +3,6 @@ import { drawPath } from "@tsparticles/path-utils"; import { paths } from "../paths.js"; export class ClubDrawer implements IShapeDrawer { - readonly validTypes = ["club", "clubs"] as const; - draw(data: IShapeDrawData): void { const { context, radius } = data; diff --git a/shapes/cards/src/clubs/index.ts b/shapes/cards/src/clubs/index.ts index 12de6aee36e..07911293eae 100644 --- a/shapes/cards/src/clubs/index.ts +++ b/shapes/cards/src/clubs/index.ts @@ -8,9 +8,11 @@ declare const __VERSION__: string; export async function loadClubsSuitShape(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { ClubDrawer } = await import("./ClubDrawer.js"); + await engine.register(e => { + e.addShape(["club", "clubs"], async () => { + const { ClubDrawer } = await import("./ClubDrawer.js"); - e.addShape(new ClubDrawer()); + return new ClubDrawer(); + }); }); } diff --git a/shapes/cards/src/diamonds/DiamondDrawer.ts b/shapes/cards/src/diamonds/DiamondDrawer.ts index 287cef55b09..440045033f2 100644 --- a/shapes/cards/src/diamonds/DiamondDrawer.ts +++ b/shapes/cards/src/diamonds/DiamondDrawer.ts @@ -3,8 +3,6 @@ import { drawPath } from "@tsparticles/path-utils"; import { paths } from "../paths.js"; export class DiamondDrawer implements IShapeDrawer { - readonly validTypes = ["diamond", "diamonds"] as const; - draw(data: IShapeDrawData): void { const { context, radius } = data; diff --git a/shapes/cards/src/diamonds/index.ts b/shapes/cards/src/diamonds/index.ts index be22ed5b863..d0b51fdcad9 100644 --- a/shapes/cards/src/diamonds/index.ts +++ b/shapes/cards/src/diamonds/index.ts @@ -8,9 +8,11 @@ declare const __VERSION__: string; export async function loadDiamondsSuitShape(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { DiamondDrawer } = await import("./DiamondDrawer.js"); + await engine.register(e => { + e.addShape(["diamond", "diamonds"], async () => { + const { DiamondDrawer } = await import("./DiamondDrawer.js"); - e.addShape(new DiamondDrawer()); + return new DiamondDrawer(); + }); }); } diff --git a/shapes/cards/src/hearts/HeartDrawer.ts b/shapes/cards/src/hearts/HeartDrawer.ts index e38e3f6bed8..ca9de4fb1ad 100644 --- a/shapes/cards/src/hearts/HeartDrawer.ts +++ b/shapes/cards/src/hearts/HeartDrawer.ts @@ -3,8 +3,6 @@ import { drawPath } from "@tsparticles/path-utils"; import { paths } from "../paths.js"; export class HeartDrawer implements IShapeDrawer { - readonly validTypes = ["heart", "hearts"] as const; - draw(data: IShapeDrawData): void { const { context, radius } = data; diff --git a/shapes/cards/src/hearts/index.ts b/shapes/cards/src/hearts/index.ts index 0eb87f1a386..c884bad6b2b 100644 --- a/shapes/cards/src/hearts/index.ts +++ b/shapes/cards/src/hearts/index.ts @@ -8,9 +8,11 @@ declare const __VERSION__: string; export async function loadHeartsSuitShape(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { HeartDrawer } = await import("./HeartDrawer.js"); + await engine.register(e => { + e.addShape(["heart", "hearts"], async () => { + const { HeartDrawer } = await import("./HeartDrawer.js"); - e.addShape(new HeartDrawer()); + return new HeartDrawer(); + }); }); } diff --git a/shapes/cards/src/spades/SpadeDrawer.ts b/shapes/cards/src/spades/SpadeDrawer.ts index b282943e4b1..df8d360c00c 100644 --- a/shapes/cards/src/spades/SpadeDrawer.ts +++ b/shapes/cards/src/spades/SpadeDrawer.ts @@ -3,8 +3,6 @@ import { drawPath } from "@tsparticles/path-utils"; import { paths } from "../paths.js"; export class SpadeDrawer implements IShapeDrawer { - readonly validTypes = ["spade", "spades"] as const; - draw(data: IShapeDrawData): void { const { context, radius } = data; diff --git a/shapes/cards/src/spades/index.ts b/shapes/cards/src/spades/index.ts index 67fc68e5989..fbe80568598 100644 --- a/shapes/cards/src/spades/index.ts +++ b/shapes/cards/src/spades/index.ts @@ -8,9 +8,11 @@ declare const __VERSION__: string; export async function loadSpadesSuitShape(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { SpadeDrawer } = await import("./SpadeDrawer.js"); + await engine.register(e => { + e.addShape(["spade", "spades"], async () => { + const { SpadeDrawer } = await import("./SpadeDrawer.js"); - e.addShape(new SpadeDrawer()); + return new SpadeDrawer(); + }); }); } diff --git a/shapes/cards/src/utils.ts b/shapes/cards/src/utils.ts index 24dc66567a4..e93a0a85f01 100644 --- a/shapes/cards/src/utils.ts +++ b/shapes/cards/src/utils.ts @@ -1,4 +1,13 @@ -import { double, doublePI, getStyleFromRgb, half, originPoint, triple } from "@tsparticles/engine"; +import { + type IRgb, + double, + doublePI, + getStyleFromRgb, + half, + originPoint, + safeDocument, + triple, +} from "@tsparticles/engine"; import type { ICardData } from "./ICardData.js"; import { SuitType } from "./SuitType.js"; import { drawPath } from "@tsparticles/path-utils"; @@ -9,7 +18,7 @@ const cardWidthRatio = (double * double) / triple, cornerRadiusRatio = 0.2, cornerFontRatio = 0.4, cornerSuitRatio = 0.3, - centerSuitRatio = 0.9, + centerSuitRatio = 0.7, cornerPaddingRatio = 0.2, // Adjusted for a tighter fit between suit and text textHorizontalOffsetRatio = 0.25, @@ -17,7 +26,9 @@ const cardWidthRatio = (double * double) / triple, minAngle = 0, suitEdgeBufferFactor = 0.1, fixedCacheKey = 2, - cardsCache = new Map(); + cardsCache = new Map(), + redSuitColor: IRgb = { r: 215, g: 20, b: 20 }, + blackSuitColor: IRgb = { r: 18, g: 18, b: 18 }; /** * Draws a rounded card with suit and value side-by-side. @@ -27,6 +38,7 @@ const cardWidthRatio = (double * double) / triple, * @param cardData - * @param hdr - * @param flipped - + * @param canvasSettings - */ export function drawRoundedCard( ctx: CanvasRenderingContext2D, @@ -34,33 +46,48 @@ export function drawRoundedCard( cardData: ICardData, hdr: boolean, flipped: boolean, + canvasSettings?: CanvasRenderingContext2DSettings, ): void { if (flipped) { drawRoundedCardBack(ctx, radius); } else { - const cacheKey = getCacheKey(radius, cardData), + const cacheKey = getCacheKey(radius, hdr, cardData), cardWidth = radius * cardWidthRatio, cardHeight = radius * cardHeightRatio, halfWidth = cardWidth * half, halfHeight = cardHeight * half; - if (!cardsCache.has(cacheKey)) { - const canvas = new OffscreenCanvas(cardWidth, cardHeight), - offCtx = canvas.getContext("2d"); + let cachedData = cardsCache.get(cacheKey); - if (offCtx) { - offCtx.translate(halfWidth, halfHeight); + if (!cachedData) { + let cacheCanvas: HTMLCanvasElement | OffscreenCanvas, + cacheCtx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D | null; - drawRoundedCardFront(offCtx, radius, cardData, hdr); + if (typeof OffscreenCanvas === "undefined") { + cacheCanvas = safeDocument().createElement("canvas"); - cardsCache.set(cacheKey, canvas); + cacheCanvas.width = cardWidth; + cacheCanvas.height = cardHeight; + + cacheCtx = cacheCanvas.getContext("2d", canvasSettings); + } else { + cacheCanvas = new OffscreenCanvas(cardWidth, cardHeight); + cacheCtx = cacheCanvas.getContext("2d", canvasSettings); } - } - const cachedCanvas = cardsCache.get(cacheKey); + if (cacheCtx) { + cacheCtx.translate(halfWidth, halfHeight); + + drawRoundedCardFront(cacheCtx, radius, cardData, hdr); + + cachedData = cacheCanvas instanceof HTMLCanvasElement ? cacheCanvas : cacheCanvas.transferToImageBitmap(); - if (cachedCanvas) { - ctx.drawImage(cachedCanvas, -halfWidth, -halfHeight, cardWidth, cardHeight); + cardsCache.set(cacheKey, cachedData); + } + } + + if (cachedData) { + ctx.drawImage(cachedData, -halfWidth, -halfHeight, cardWidth, cardHeight); } else { drawRoundedCardFront(ctx, radius, cardData, hdr); } @@ -69,11 +96,12 @@ export function drawRoundedCard( /** * @param radius - + * @param hdr - * @param cardData - * @returns - */ -function getCacheKey(radius: number, cardData: ICardData): string { - return `${radius.toFixed(fixedCacheKey)}-${cardData.suit}-${cardData.value}`; +function getCacheKey(radius: number, hdr: boolean, cardData: ICardData): string { + return `${radius.toFixed(fixedCacheKey)}-${hdr ? "hdr" : "sdr"}-${cardData.suit}-${cardData.value}`; } /** @@ -110,7 +138,7 @@ function drawRoundedCardFront( // Extra padding to keep the suit away from the card edge suitEdgeBuffer = radius * suitEdgeBufferFactor, isRed = suit === SuitType.hearts || suit === SuitType.diamonds, - color = isRed ? getStyleFromRgb({ r: 255, g: 0, b: 0 }, hdr) : getStyleFromRgb({ r: 0, g: 0, b: 0 }, hdr); + color = isRed ? getStyleFromRgb(redSuitColor, hdr) : getStyleFromRgb(blackSuitColor, hdr); ctx.save(); @@ -129,8 +157,8 @@ function drawRoundedCardFront( ctx.textBaseline = "middle"; // Base coordinates for the corner content - const topLeftX = -halfWidth + cornerPadding + suitEdgeBuffer; - const topLeftY = -halfHeight + cornerPadding + cornerFontSize * half; + const topLeftX = -halfWidth + cornerPadding + suitEdgeBuffer, + topLeftY = -halfHeight + cornerPadding + cornerFontSize * half; // --- 3. Top Left Corner (Suit then Value) --- ctx.save(); diff --git a/shapes/circle/CHANGELOG.md b/shapes/circle/CHANGELOG.md index 3e4138fa6b1..68ce6e5522a 100644 --- a/shapes/circle/CHANGELOG.md +++ b/shapes/circle/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-circle + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-circle + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-circle + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/shape-circle diff --git a/shapes/circle/package.dist.json b/shapes/circle/package.dist.json index 9443ff991ff..3113779d98e 100644 --- a/shapes/circle/package.dist.json +++ b/shapes/circle/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-circle", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles circle shape", "homepage": "https://particles.js.org", "repository": { @@ -59,7 +59,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/shapes/circle/package.json b/shapes/circle/package.json index 578f406f461..7d466dc86a0 100644 --- a/shapes/circle/package.json +++ b/shapes/circle/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-circle", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles circle shape", "homepage": "https://particles.js.org", "scripts": { @@ -64,7 +64,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/shapes/circle/src/CircleDrawer.ts b/shapes/circle/src/CircleDrawer.ts index 199560f2e1f..3375b8cf947 100644 --- a/shapes/circle/src/CircleDrawer.ts +++ b/shapes/circle/src/CircleDrawer.ts @@ -10,8 +10,6 @@ const sides = 12, /** */ export class CircleDrawer implements IShapeDrawer { - readonly validTypes = ["circle"] as const; - draw(data: IShapeDrawData): void { drawCircle(data); } diff --git a/shapes/circle/src/index.ts b/shapes/circle/src/index.ts index a89392e6af5..46bebc31df8 100644 --- a/shapes/circle/src/index.ts +++ b/shapes/circle/src/index.ts @@ -8,9 +8,11 @@ declare const __VERSION__: string; export async function loadCircleShape(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { CircleDrawer } = await import("./CircleDrawer.js"); + await engine.register(e => { + e.addShape(["circle"], async () => { + const { CircleDrawer } = await import("./CircleDrawer.js"); - e.addShape(new CircleDrawer()); + return new CircleDrawer(); + }); }); } diff --git a/shapes/cog/CHANGELOG.md b/shapes/cog/CHANGELOG.md index e45a9369c5a..6b40198bcce 100644 --- a/shapes/cog/CHANGELOG.md +++ b/shapes/cog/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-cog + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-cog + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-cog + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/shape-cog diff --git a/shapes/cog/package.dist.json b/shapes/cog/package.dist.json index fb6aea5059d..7b64a6716cd 100644 --- a/shapes/cog/package.dist.json +++ b/shapes/cog/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-cog", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles cog shape", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/shapes/cog/package.json b/shapes/cog/package.json index 70bf6ecf3ed..9e94c78d014 100644 --- a/shapes/cog/package.json +++ b/shapes/cog/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-cog", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles cog shape", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/shapes/cog/src/CogDrawer.ts b/shapes/cog/src/CogDrawer.ts index 3dbff445c91..ff4d7f3d0ac 100644 --- a/shapes/cog/src/CogDrawer.ts +++ b/shapes/cog/src/CogDrawer.ts @@ -10,8 +10,6 @@ const defaultHoleRadius = 44, defaultOuterTaper = 50; export class CogDrawer implements IShapeDrawer { - readonly validTypes = ["cog"] as const; - afterDraw(data: IShapeDrawData): void { drawCogHole(data); } diff --git a/shapes/cog/src/index.ts b/shapes/cog/src/index.ts index f6e6be7b8f4..0c5b7a4ce4c 100644 --- a/shapes/cog/src/index.ts +++ b/shapes/cog/src/index.ts @@ -8,9 +8,11 @@ declare const __VERSION__: string; export async function loadCogShape(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { CogDrawer } = await import("./CogDrawer.js"); + await engine.register(e => { + e.addShape(["cog"], async () => { + const { CogDrawer } = await import("./CogDrawer.js"); - e.addShape(new CogDrawer()); + return new CogDrawer(); + }); }); } diff --git a/shapes/emoji/CHANGELOG.md b/shapes/emoji/CHANGELOG.md index b0de6339a87..636813e5b09 100644 --- a/shapes/emoji/CHANGELOG.md +++ b/shapes/emoji/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-emoji + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-emoji + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-emoji + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/shape-emoji diff --git a/shapes/emoji/package.dist.json b/shapes/emoji/package.dist.json index a1103033abb..47d44d4401c 100644 --- a/shapes/emoji/package.dist.json +++ b/shapes/emoji/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-emoji", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles emoji shape", "homepage": "https://particles.js.org", "repository": { @@ -59,7 +59,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/canvas-utils": "4.0.0-alpha.14", + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/shapes/emoji/package.json b/shapes/emoji/package.json index 3078731895e..eadd27e21c6 100644 --- a/shapes/emoji/package.json +++ b/shapes/emoji/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-emoji", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles emoji shape", "homepage": "https://particles.js.org", "scripts": { @@ -67,7 +67,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/canvas-utils": "workspace:4.0.0-alpha.14", + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/shapes/emoji/src/EmojiDrawer.ts b/shapes/emoji/src/EmojiDrawer.ts index 40cbdfcd94c..f69eab46c13 100644 --- a/shapes/emoji/src/EmojiDrawer.ts +++ b/shapes/emoji/src/EmojiDrawer.ts @@ -8,20 +8,18 @@ import { getRangeMax, isInArray, itemFromSingleOrMultiple, - loadFont, safeDocument, } from "@tsparticles/engine"; +import { drawEmoji, validTypes } from "./Utils.js"; import type { EmojiParticle } from "./EmojiParticle.js"; import type { IEmojiShape } from "./IEmojiShape.js"; -import { drawEmoji } from "./Utils.js"; +import { loadFont } from "@tsparticles/canvas-utils"; -const defaultFont = '"Twemoji Mozilla", Apple Color Emoji, "Segoe UI Emoji", "Noto Color Emoji", "EmojiOne Color"', +const defaultFont = '"Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif', noPadding = 0, firstItem = 0; export class EmojiDrawer implements IShapeDrawer { - readonly validTypes = ["emoji"] as const; - private readonly _emojiShapeDict: Map = new Map(); destroy(): void { @@ -52,16 +50,14 @@ export class EmojiDrawer implements IShapeDrawer { async init(container: Container): Promise { const options = container.actualOptions, - { validTypes } = this; + shapeData = options.particles.shape; - if (!validTypes.find(t => isInArray(t, options.particles.shape.type))) { + if (!validTypes.some(t => isInArray(t, shapeData.type))) { return; } const promises: Promise[] = [loadFont(defaultFont)], - shapeOptions = validTypes.map(t => options.particles.shape.options[t])[ - firstItem - ] as SingleOrMultiple; + shapeOptions = validTypes.map(t => shapeData.options[t])[firstItem] as SingleOrMultiple; executeOnSingleOrMultiple(shapeOptions, shape => { if (shape.font) { @@ -76,7 +72,7 @@ export class EmojiDrawer implements IShapeDrawer { particle.emojiDataKey = undefined; } - particleInit(_container: Container, particle: EmojiParticle): void { + particleInit(container: Container, particle: EmojiParticle): void { const shapeData = particle.shapeData as unknown as IEmojiShape; if (!shapeData.value) { @@ -103,12 +99,11 @@ export class EmojiDrawer implements IShapeDrawer { ...emoji, }, font = emojiOptions.font, - value = emojiOptions.value; - - const key = `${value}_${font}`; + value = emojiOptions.value, + cacheKey = `${value}_${font}`; - if (this._emojiShapeDict.has(key)) { - particle.emojiDataKey = key; + if (this._emojiShapeDict.has(cacheKey)) { + particle.emojiDataKey = cacheKey; return; } @@ -118,46 +113,36 @@ export class EmojiDrawer implements IShapeDrawer { fullSize = maxSize + padding, canvasSize = fullSize * double; - let image: ImageBitmap | HTMLCanvasElement; - - if (typeof OffscreenCanvas !== "undefined") { - const canvas = new OffscreenCanvas(canvasSize, canvasSize), - context = canvas.getContext("2d"); - - if (!context) { - return; - } - - context.font = `400 ${(maxSize * double).toString()}px ${font}`; - context.textBaseline = "middle"; - context.textAlign = "center"; - - context.fillText(value, fullSize, fullSize); + let cacheCanvas: HTMLCanvasElement | OffscreenCanvas, + context: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D | null; - image = canvas.transferToImageBitmap(); - } else { + if (typeof OffscreenCanvas === "undefined") { const canvas = safeDocument().createElement("canvas"); canvas.width = canvasSize; canvas.height = canvasSize; - const context = canvas.getContext("2d"); + context = canvas.getContext("2d", container.canvas.settings); + cacheCanvas = canvas; + } else { + cacheCanvas = new OffscreenCanvas(canvasSize, canvasSize); + context = cacheCanvas.getContext("2d", container.canvas.settings); + } - if (!context) { - return; - } + if (!context) { + return; + } - context.font = `400 ${(maxSize * double).toString()}px ${font}`; - context.textBaseline = "middle"; - context.textAlign = "center"; + context.font = `400 ${(maxSize * double).toString()}px ${font}`; + context.textBaseline = "middle"; + context.textAlign = "center"; - context.fillText(value, fullSize, fullSize); + context.fillText(value, fullSize, fullSize); - image = canvas; - } + const image = cacheCanvas instanceof HTMLCanvasElement ? cacheCanvas : cacheCanvas.transferToImageBitmap(); - this._emojiShapeDict.set(key, image); + this._emojiShapeDict.set(cacheKey, image); - particle.emojiDataKey = key; + particle.emojiDataKey = cacheKey; } } diff --git a/shapes/emoji/src/Utils.ts b/shapes/emoji/src/Utils.ts index 49179bbd7a3..7da2e09364c 100644 --- a/shapes/emoji/src/Utils.ts +++ b/shapes/emoji/src/Utils.ts @@ -1,6 +1,8 @@ import { type IShapeDrawData, half } from "@tsparticles/engine"; import type { EmojiParticle } from "./EmojiParticle.js"; +export const validTypes = ["emoji"]; + /** * * @param data - diff --git a/shapes/emoji/src/index.ts b/shapes/emoji/src/index.ts index cb82a035875..fb8a2e8ffb9 100644 --- a/shapes/emoji/src/index.ts +++ b/shapes/emoji/src/index.ts @@ -1,4 +1,5 @@ import { type Engine } from "@tsparticles/engine"; +import { validTypes } from "./Utils.js"; declare const __VERSION__: string; @@ -8,9 +9,11 @@ declare const __VERSION__: string; export async function loadEmojiShape(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { EmojiDrawer } = await import("./EmojiDrawer.js"); + await engine.register(e => { + e.addShape(validTypes, async () => { + const { EmojiDrawer } = await import("./EmojiDrawer.js"); - e.addShape(new EmojiDrawer()); + return new EmojiDrawer(); + }); }); } diff --git a/shapes/heart/CHANGELOG.md b/shapes/heart/CHANGELOG.md index a805e7c813a..853f68c245d 100644 --- a/shapes/heart/CHANGELOG.md +++ b/shapes/heart/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-heart + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-heart + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-heart + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/shape-heart diff --git a/shapes/heart/package.dist.json b/shapes/heart/package.dist.json index 5174f5047d9..0e6b2c566e9 100644 --- a/shapes/heart/package.dist.json +++ b/shapes/heart/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-heart", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles heart shape", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/shapes/heart/package.json b/shapes/heart/package.json index 14f2b65f2cd..0f3bb1b51a6 100644 --- a/shapes/heart/package.json +++ b/shapes/heart/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-heart", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles heart shape", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/shapes/heart/src/HeartDrawer.ts b/shapes/heart/src/HeartDrawer.ts index 0ab690300e8..d75f51b1dfe 100644 --- a/shapes/heart/src/HeartDrawer.ts +++ b/shapes/heart/src/HeartDrawer.ts @@ -2,8 +2,6 @@ import type { IShapeDrawData, IShapeDrawer } from "@tsparticles/engine"; import { drawHeart } from "./Utils.js"; export class HeartDrawer implements IShapeDrawer { - readonly validTypes = ["heart"] as const; - draw(data: IShapeDrawData): void { drawHeart(data); } diff --git a/shapes/heart/src/index.ts b/shapes/heart/src/index.ts index 80254ed4412..ac8a27d93b7 100644 --- a/shapes/heart/src/index.ts +++ b/shapes/heart/src/index.ts @@ -8,9 +8,11 @@ declare const __VERSION__: string; export async function loadHeartShape(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { HeartDrawer } = await import("./HeartDrawer.js"); + await engine.register(e => { + e.addShape(["heart"], async () => { + const { HeartDrawer } = await import("./HeartDrawer.js"); - e.addShape(new HeartDrawer()); + return new HeartDrawer(); + }); }); } diff --git a/shapes/image/CHANGELOG.md b/shapes/image/CHANGELOG.md index e6f5e03d000..4319b9479ab 100644 --- a/shapes/image/CHANGELOG.md +++ b/shapes/image/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-image + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-image + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-image + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/shape-image diff --git a/shapes/image/package.dist.json b/shapes/image/package.dist.json index bab94e5ffaf..592e7738c30 100644 --- a/shapes/image/package.dist.json +++ b/shapes/image/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-image", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles image shape", "homepage": "https://particles.js.org", "repository": { @@ -59,7 +59,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/shapes/image/package.json b/shapes/image/package.json index 11bc38c7a63..c25f4adc42f 100644 --- a/shapes/image/package.json +++ b/shapes/image/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-image", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles image shape", "homepage": "https://particles.js.org", "scripts": { @@ -67,7 +67,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/shapes/image/src/GifUtils/Utils.ts b/shapes/image/src/GifUtils/Utils.ts index a2b18865d6b..bde73c60cc6 100644 --- a/shapes/image/src/GifUtils/Utils.ts +++ b/shapes/image/src/GifUtils/Utils.ts @@ -47,7 +47,6 @@ function parseColorTable(byteStream: ByteStream, count: number): IRgb[] { * @param gif - GIF object to write to * @param getFrameIndex - function to get current frame index in `GIF.frames` (optionally increment before next call) * @param getTransparencyIndex - function to get current transparency index into global/local color table (optionally update value) - * @throws if an unknown block type was encountered */ function parseExtensionBlock( byteStream: ByteStream, @@ -166,7 +165,6 @@ function parseExtensionBlock( * @param getTransparencyIndex - function to get current transparency index into global/local color table (optionally update value) * @param progressCallback - callback function to report progress * @returns true if EOF was reached - * @throws if an unknown block type was encountered */ async function parseImageBlock( byteStream: ByteStream, @@ -215,26 +213,25 @@ async function parseImageBlock( * @returns RGBA color value */ const getColor = (index: number): IRgba => { - const { r, g, b } = (localColorTableFlag ? frame.localColorTable : gif.globalColorTable)[index]!; + const { r, g, b } = (localColorTableFlag ? frame.localColorTable : gif.globalColorTable)[index]!; - if (index !== getTransparencyIndex(null)) { - return { r, g, b, a: 255 }; - } + if (index !== getTransparencyIndex(null)) { + return { r, g, b, a: 255 }; + } - return { r, g, b, a: avgAlpha ? Math.trunc((r + g + b) / 3) : 0 }; - }; + return { r, g, b, a: avgAlpha ? Math.trunc((r + g + b) / 3) : 0 }; + }, + image = ((): ImageData | null => { + try { + return new ImageData(frame.width, frame.height, { colorSpace: "srgb" }); + } catch (error) { + if (error instanceof DOMException && error.name === "IndexSizeError") { + return null; + } - const image = ((): ImageData | null => { - try { - return new ImageData(frame.width, frame.height, { colorSpace: "srgb" }); - } catch (error) { - if (error instanceof DOMException && error.name === "IndexSizeError") { - return null; + throw error; } - - throw error; - } - })(); + })(); if (image == null) { throw new EvalError("GIF frame size is to large"); @@ -242,22 +239,22 @@ async function parseImageBlock( const minCodeSize = byteStream.nextByte(), imageData = byteStream.readSubBlocksBin(), - clearCode = 1 << minCodeSize; - /** - * __read `len` bits from `imageData` at `pos`__ - * @param pos - bit position in `imageData` - * @param len - bit length to read [1-12 bits] - * @returns `len` bits at `pos` - */ - const readBits = (pos: number, len: number): number => { - const bytePos = pos >>> 3, - bitPos = pos & 7; - return ( - ((imageData[bytePos]! + (imageData[bytePos + 1]! << 8) + (imageData[bytePos + 2]! << 16)) & - (((1 << len) - 1) << bitPos)) >>> - bitPos - ); - }; + clearCode = 1 << minCodeSize, + /** + * __read `len` bits from `imageData` at `pos`__ + * @param pos - bit position in `imageData` + * @param len - bit length to read [1-12 bits] + * @returns `len` bits at `pos` + */ + readBits = (pos: number, len: number): number => { + const bytePos = pos >>> 3, + bitPos = pos & 7; + return ( + ((imageData[bytePos]! + (imageData[bytePos + 1]! << 8) + (imageData[bytePos + 2]! << 16)) & + (((1 << len) - 1) << bitPos)) >>> + bitPos + ); + }; if (interlacedFlag) { for (let code = 0, size = minCodeSize + 1, pos = 0, dic = [[0]], pass = 0; pass < 4; pass++) { @@ -394,7 +391,6 @@ async function parseImageBlock( * @param getTransparencyIndex - function to get current transparency index into global/local color table (optionally update value) * @param progressCallback - callback function to report progress * @returns true if EOF was reached - * @throws if an unknown block type was encountered */ async function parseBlock( byteStream: ByteStream, @@ -458,13 +454,12 @@ export async function decodeGIF( throw new EvalError("file not found"); } - const buffer = await res.arrayBuffer(); - - // ? https://www.w3.org/Graphics/GIF/spec-gif89a.txt - // ? https://www.matthewflickinger.com/lab/whatsinagif/bits_and_bytes.asp - // ~ load stream and start decoding - /** the output gif object */ - const gif: GIF = { + const buffer = await res.arrayBuffer(), + // ? https://www.w3.org/Graphics/GIF/spec-gif89a.txt + // ? https://www.matthewflickinger.com/lab/whatsinagif/bits_and_bytes.asp + // ~ load stream and start decoding + /** the output gif object */ + gif: GIF = { width: 0, height: 0, totalTime: 0, @@ -553,24 +548,24 @@ export async function decodeGIF( * @returns current frame index */ const getframeIndex = (increment: boolean): number => { - if (increment) { - incrementFrameIndex = true; - } + if (increment) { + incrementFrameIndex = true; + } - return frameIndex; - }; - /** - * __get the current transparency index for this frame__ - * @param newValue - if set updates value of transparencyIndex to this - * @returns current transparency index - */ - const getTransparencyIndex = (newValue?: number | null): number => { - if (newValue != null) { - transparencyIndex = newValue; - } + return frameIndex; + }, + /** + * __get the current transparency index for this frame__ + * @param newValue - if set updates value of transparencyIndex to this + * @returns current transparency index + */ + getTransparencyIndex = (newValue?: number | null): number => { + if (newValue != null) { + transparencyIndex = newValue; + } - return transparencyIndex; - }; + return transparencyIndex; + }; try { do { if (incrementFrameIndex) { @@ -618,10 +613,10 @@ export async function decodeGIF( } /** - * * @param data - + * @param canvasSettings - */ -export function drawGif(data: IShapeDrawData): void { +export function drawGif(data: IShapeDrawData, canvasSettings?: CanvasRenderingContext2DSettings): void { const { context, radius, particle, delta } = data, image = particle.image; @@ -630,7 +625,7 @@ export function drawGif(data: IShapeDrawData): void { } const offscreenCanvas = new OffscreenCanvas(image.gifData.width, image.gifData.height), - offscreenContext = offscreenCanvas.getContext("2d"); + offscreenContext = offscreenCanvas.getContext("2d", canvasSettings); if (!offscreenContext) { throw new Error("could not create offscreen canvas context"); diff --git a/shapes/image/src/ImageDrawer.ts b/shapes/image/src/ImageDrawer.ts index e626dd827a8..9109306c30d 100644 --- a/shapes/image/src/ImageDrawer.ts +++ b/shapes/image/src/ImageDrawer.ts @@ -17,8 +17,6 @@ const sides = 12; * Particles Image Drawer */ export class ImageDrawer implements IShapeDrawer { - readonly validTypes = ["image", "images"] as const; - private readonly _engine: ImageEngine; /** @@ -55,7 +53,7 @@ export class ImageDrawer implements IShapeDrawer { context.globalAlpha = opacity; if (image.gif && image.gifData) { - drawGif(data); + drawGif(data, particle.container.canvas.settings); } else if (element) { const ratio = image.ratio, pos = { diff --git a/shapes/image/src/ImagePreloader.ts b/shapes/image/src/ImagePreloader.ts index 4f683a6ff59..a98762ba217 100644 --- a/shapes/image/src/ImagePreloader.ts +++ b/shapes/image/src/ImagePreloader.ts @@ -3,11 +3,7 @@ import type { IPreloadOptions, PreloadOptions } from "./types.js"; import { Preload } from "./Options/Classes/Preload.js"; export class ImagePreloaderPlugin implements IPlugin { - readonly id; - - constructor() { - this.id = "imagePreloader"; - } + readonly id = "image-preloader"; async getPlugin(): Promise { await Promise.resolve(); diff --git a/shapes/image/src/index.ts b/shapes/image/src/index.ts index 332b3e5be9d..fe45bb3a3d2 100644 --- a/shapes/image/src/index.ts +++ b/shapes/image/src/index.ts @@ -2,9 +2,8 @@ import type { IImage } from "./Utils.js"; import type { IPreload } from "./Options/Interfaces/IPreload.js"; import type { ImageEngine } from "./types.js"; -declare const __VERSION__: string; - -const extLength = 3; +declare const __VERSION__: string, + extLength = 3; /** * @@ -71,14 +70,17 @@ export async function loadImageShape(engine: ImageEngine): Promise { engine.checkVersion(__VERSION__); await engine.register(async e => { - const { ImageDrawer } = await import("./ImageDrawer.js"), - { ImagePreloaderPlugin } = await import("./ImagePreloader.js"); + const { ImagePreloaderPlugin } = await import("./ImagePreloader.js"); addLoadImageToEngine(e); const preloader = new ImagePreloaderPlugin(); e.addPlugin(preloader); - e.addShape(new ImageDrawer(e)); + e.addShape(["image", "images"], async () => { + const { ImageDrawer } = await import("./ImageDrawer.js"); + + return new ImageDrawer(e); + }); }); } diff --git a/shapes/infinity/CHANGELOG.md b/shapes/infinity/CHANGELOG.md index c74ef3ea92d..587bb6b6988 100644 --- a/shapes/infinity/CHANGELOG.md +++ b/shapes/infinity/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-infinity + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-infinity + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-infinity + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/shape-infinity diff --git a/shapes/infinity/package.dist.json b/shapes/infinity/package.dist.json index a95eb80d196..ed105d7e441 100644 --- a/shapes/infinity/package.dist.json +++ b/shapes/infinity/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-infinity", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles infinity shape", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/shapes/infinity/package.json b/shapes/infinity/package.json index 1841316796b..5353a5ff389 100644 --- a/shapes/infinity/package.json +++ b/shapes/infinity/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-infinity", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles infinity shape", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/shapes/infinity/src/InfinityDrawer.ts b/shapes/infinity/src/InfinityDrawer.ts index 6ce3d5b5886..2ccc703b1e8 100644 --- a/shapes/infinity/src/InfinityDrawer.ts +++ b/shapes/infinity/src/InfinityDrawer.ts @@ -2,8 +2,6 @@ import { type IShapeDrawData, type IShapeDrawer } from "@tsparticles/engine"; import { drawInfinity } from "./Utils.js"; export class InfinityDrawer implements IShapeDrawer { - readonly validTypes = ["infinity"] as const; - draw(data: IShapeDrawData): void { drawInfinity(data); } diff --git a/shapes/infinity/src/index.ts b/shapes/infinity/src/index.ts index 50a08de32bf..9abf8cdf43d 100644 --- a/shapes/infinity/src/index.ts +++ b/shapes/infinity/src/index.ts @@ -8,9 +8,11 @@ declare const __VERSION__: string; export async function loadInfinityShape(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { InfinityDrawer } = await import("./InfinityDrawer.js"); + await engine.register(e => { + e.addShape(["infinity"], async () => { + const { InfinityDrawer } = await import("./InfinityDrawer.js"); - e.addShape(new InfinityDrawer()); + return new InfinityDrawer(); + }); }); } diff --git a/shapes/line/CHANGELOG.md b/shapes/line/CHANGELOG.md index 660070775f6..04a887e2f93 100644 --- a/shapes/line/CHANGELOG.md +++ b/shapes/line/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-line + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-line + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-line + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/shape-line diff --git a/shapes/line/package.dist.json b/shapes/line/package.dist.json index 302a37484f4..b35f296574c 100644 --- a/shapes/line/package.dist.json +++ b/shapes/line/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-line", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles line shape", "homepage": "https://particles.js.org", "repository": { @@ -59,7 +59,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/shapes/line/package.json b/shapes/line/package.json index c88f9981ee6..a07594244e9 100644 --- a/shapes/line/package.json +++ b/shapes/line/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-line", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles line shape", "homepage": "https://particles.js.org", "scripts": { @@ -72,7 +72,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "type": "module" } diff --git a/shapes/line/src/LineDrawer.ts b/shapes/line/src/LineDrawer.ts index 522dce72b9a..e9edf5d4d63 100644 --- a/shapes/line/src/LineDrawer.ts +++ b/shapes/line/src/LineDrawer.ts @@ -6,8 +6,6 @@ const sides = 1; /** */ export class LineDrawer implements IShapeDrawer { - readonly validTypes = ["line"] as const; - draw(data: IShapeDrawData): void { drawLine(data); } diff --git a/shapes/line/src/index.ts b/shapes/line/src/index.ts index be498caaef1..ba194632b37 100644 --- a/shapes/line/src/index.ts +++ b/shapes/line/src/index.ts @@ -8,9 +8,11 @@ declare const __VERSION__: string; export async function loadLineShape(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { LineDrawer } = await import("./LineDrawer.js"); + await engine.register(e => { + e.addShape(["line"], async () => { + const { LineDrawer } = await import("./LineDrawer.js"); - e.addShape(new LineDrawer()); + return new LineDrawer(); + }); }); } diff --git a/shapes/path/CHANGELOG.md b/shapes/path/CHANGELOG.md index 159e4c20e56..cbbbde6b27e 100644 --- a/shapes/path/CHANGELOG.md +++ b/shapes/path/CHANGELOG.md @@ -3,6 +3,20 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-path + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-path + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Features + +- add full card shape, and utilities for path drawing ([f4a985f](https://github.com/tsparticles/tsparticles/commit/f4a985f092e7da94e6f8bd211c3007246d0488b3)) + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/shape-path diff --git a/shapes/path/package.dist.json b/shapes/path/package.dist.json index 74b3c933739..28498fbd1c3 100644 --- a/shapes/path/package.dist.json +++ b/shapes/path/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-path", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles path shape", "homepage": "https://particles.js.org", "repository": { @@ -100,8 +100,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8", - "@tsparticles/path-utils": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14", + "@tsparticles/path-utils": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/shapes/path/package.json b/shapes/path/package.json index eff2cde687e..8fd0ac08e9b 100644 --- a/shapes/path/package.json +++ b/shapes/path/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-path", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles path shape", "homepage": "https://particles.js.org", "scripts": { @@ -108,8 +108,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/path-utils": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/path-utils": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/shapes/path/src/PathDrawer.ts b/shapes/path/src/PathDrawer.ts index 2be89bd60b1..cc098ea0954 100644 --- a/shapes/path/src/PathDrawer.ts +++ b/shapes/path/src/PathDrawer.ts @@ -4,8 +4,6 @@ import type { PathParticle } from "./PathParticle.js"; import { drawPath } from "@tsparticles/path-utils"; export class PathDrawer implements IShapeDrawer { - readonly validTypes = ["path"] as const; - draw(data: IShapeDrawData): void { const { context, particle, radius } = data; diff --git a/shapes/path/src/index.ts b/shapes/path/src/index.ts index f1097cf93f9..69058ad0f3d 100644 --- a/shapes/path/src/index.ts +++ b/shapes/path/src/index.ts @@ -8,9 +8,11 @@ declare const __VERSION__: string; export async function loadPathShape(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { PathDrawer } = await import("./PathDrawer.js"); + await engine.register(e => { + e.addShape(["path"], async () => { + const { PathDrawer } = await import("./PathDrawer.js"); - e.addShape(new PathDrawer()); + return new PathDrawer(); + }); }); } diff --git a/shapes/polygon/CHANGELOG.md b/shapes/polygon/CHANGELOG.md index b749169c90a..0a8026e4d44 100644 --- a/shapes/polygon/CHANGELOG.md +++ b/shapes/polygon/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-polygon + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-polygon + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-polygon + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/shape-polygon diff --git a/shapes/polygon/package.dist.json b/shapes/polygon/package.dist.json index 5330c31e819..40be5c78bc4 100644 --- a/shapes/polygon/package.dist.json +++ b/shapes/polygon/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-polygon", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles polygon shape", "homepage": "https://particles.js.org", "repository": { @@ -59,7 +59,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/shapes/polygon/package.json b/shapes/polygon/package.json index 8dc4e9b7380..4a865cc0781 100644 --- a/shapes/polygon/package.json +++ b/shapes/polygon/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-polygon", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles polygon shape", "homepage": "https://particles.js.org", "scripts": { @@ -67,7 +67,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/shapes/polygon/src/PolygonDrawer.ts b/shapes/polygon/src/PolygonDrawer.ts index 9464fd55586..6a978e7d76c 100644 --- a/shapes/polygon/src/PolygonDrawer.ts +++ b/shapes/polygon/src/PolygonDrawer.ts @@ -9,8 +9,6 @@ const sidesCenterFactor = 3.5, /** */ export class PolygonDrawer extends PolygonDrawerBase { - readonly validTypes = ["polygon"] as const; - getCenter(particle: Particle, radius: number): ICoordinates { return { x: -radius / (particle.sides / sidesCenterFactor), diff --git a/shapes/polygon/src/PolygonDrawerBase.ts b/shapes/polygon/src/PolygonDrawerBase.ts index 0a69455a99b..4bb30d08599 100644 --- a/shapes/polygon/src/PolygonDrawerBase.ts +++ b/shapes/polygon/src/PolygonDrawerBase.ts @@ -14,8 +14,6 @@ const defaultSides = 5; /** */ export abstract class PolygonDrawerBase implements IShapeDrawer { - abstract readonly validTypes: readonly string[]; - draw(data: IShapeDrawData): void { const { particle, radius } = data, start = this.getCenter(particle, radius), diff --git a/shapes/polygon/src/TriangleDrawer.ts b/shapes/polygon/src/TriangleDrawer.ts index c191168e09b..26bed820f6f 100644 --- a/shapes/polygon/src/TriangleDrawer.ts +++ b/shapes/polygon/src/TriangleDrawer.ts @@ -8,8 +8,6 @@ const yFactor = 1.66, /** */ export class TriangleDrawer extends PolygonDrawerBase { - readonly validTypes = ["triangle"] as const; - getCenter(_particle: Particle, radius: number): ICoordinates { return { x: -radius, diff --git a/shapes/polygon/src/index.ts b/shapes/polygon/src/index.ts index 70338a8b161..6c5a5966624 100644 --- a/shapes/polygon/src/index.ts +++ b/shapes/polygon/src/index.ts @@ -8,10 +8,12 @@ declare const __VERSION__: string; export async function loadGenericPolygonShape(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { PolygonDrawer } = await import("./PolygonDrawer.js"); + await engine.register(e => { + e.addShape(["polygon"], async () => { + const { PolygonDrawer } = await import("./PolygonDrawer.js"); - e.addShape(new PolygonDrawer()); + return new PolygonDrawer(); + }); }); } @@ -21,10 +23,12 @@ export async function loadGenericPolygonShape(engine: Engine): Promise { export async function loadTriangleShape(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { TriangleDrawer } = await import("./TriangleDrawer.js"); + await engine.register(e => { + e.addShape(["triangle"], async () => { + const { TriangleDrawer } = await import("./TriangleDrawer.js"); - e.addShape(new TriangleDrawer()); + return new TriangleDrawer(); + }); }); } @@ -34,8 +38,6 @@ export async function loadTriangleShape(engine: Engine): Promise { export async function loadPolygonShape(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - await loadGenericPolygonShape(e); - await loadTriangleShape(e); - }); + await loadGenericPolygonShape(engine); + await loadTriangleShape(engine); } diff --git a/shapes/rounded-polygon/CHANGELOG.md b/shapes/rounded-polygon/CHANGELOG.md index 7e45384d3ef..bdfef65d548 100644 --- a/shapes/rounded-polygon/CHANGELOG.md +++ b/shapes/rounded-polygon/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-rounded-polygon + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-rounded-polygon + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-rounded-polygon + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/shape-rounded-polygon diff --git a/shapes/rounded-polygon/package.dist.json b/shapes/rounded-polygon/package.dist.json index 9de6fe43fd6..c7026a1f8a5 100644 --- a/shapes/rounded-polygon/package.dist.json +++ b/shapes/rounded-polygon/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-rounded-polygon", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles rounded polygon shape", "homepage": "https://particles.js.org", "repository": { @@ -59,7 +59,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/shapes/rounded-polygon/package.json b/shapes/rounded-polygon/package.json index 25896fae542..b0ddc48c499 100644 --- a/shapes/rounded-polygon/package.json +++ b/shapes/rounded-polygon/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-rounded-polygon", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles rounded polygon shape", "homepage": "https://particles.js.org", "scripts": { @@ -67,7 +67,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/shapes/rounded-polygon/src/RoundedPolygonDrawer.ts b/shapes/rounded-polygon/src/RoundedPolygonDrawer.ts index 74a28aa94da..0e8e70e8fac 100644 --- a/shapes/rounded-polygon/src/RoundedPolygonDrawer.ts +++ b/shapes/rounded-polygon/src/RoundedPolygonDrawer.ts @@ -15,8 +15,6 @@ const defaultSides = 5, /** */ export class RoundedPolygonDrawer implements IShapeDrawer { - readonly validTypes = ["rounded-polygon"] as const; - draw(data: IShapeDrawData): void { const { context, particle, radius } = data; diff --git a/shapes/rounded-polygon/src/index.ts b/shapes/rounded-polygon/src/index.ts index 004e606fe10..453cec5d90b 100644 --- a/shapes/rounded-polygon/src/index.ts +++ b/shapes/rounded-polygon/src/index.ts @@ -8,9 +8,11 @@ declare const __VERSION__: string; export async function loadRoundedPolygonShape(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { RoundedPolygonDrawer } = await import("./RoundedPolygonDrawer.js"); + await engine.register(e => { + e.addShape(["rounded-polygon"], async () => { + const { RoundedPolygonDrawer } = await import("./RoundedPolygonDrawer.js"); - e.addShape(new RoundedPolygonDrawer()); + return new RoundedPolygonDrawer(); + }); }); } diff --git a/shapes/rounded-rect/CHANGELOG.md b/shapes/rounded-rect/CHANGELOG.md index 65337ab7a6e..0709bea0283 100644 --- a/shapes/rounded-rect/CHANGELOG.md +++ b/shapes/rounded-rect/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-rounded-rect + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-rounded-rect + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-rounded-rect + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/shape-rounded-rect diff --git a/shapes/rounded-rect/package.dist.json b/shapes/rounded-rect/package.dist.json index 6966f1c8a54..33ab3df5493 100644 --- a/shapes/rounded-rect/package.dist.json +++ b/shapes/rounded-rect/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-rounded-rect", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles rounded rect shape", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/shapes/rounded-rect/package.json b/shapes/rounded-rect/package.json index 5ad278cbb69..7b17c63ca3f 100644 --- a/shapes/rounded-rect/package.json +++ b/shapes/rounded-rect/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-rounded-rect", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles rounded rect shape", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/shapes/rounded-rect/src/RoundedRectDrawer.ts b/shapes/rounded-rect/src/RoundedRectDrawer.ts index 398738c1d40..7f08d4475dc 100644 --- a/shapes/rounded-rect/src/RoundedRectDrawer.ts +++ b/shapes/rounded-rect/src/RoundedRectDrawer.ts @@ -8,8 +8,6 @@ const fixFactorSquare = 2, defaultRadius = 5; export class RoundedRectDrawer implements IShapeDrawer { - readonly validTypes = ["rounded-rect"] as const; - draw(data: IShapeDrawData): void { const { context, particle, radius } = data, fixedRadius = radius / fixFactor, diff --git a/shapes/rounded-rect/src/index.ts b/shapes/rounded-rect/src/index.ts index 54735d70759..a1cf73f64f8 100644 --- a/shapes/rounded-rect/src/index.ts +++ b/shapes/rounded-rect/src/index.ts @@ -8,9 +8,11 @@ declare const __VERSION__: string; export async function loadRoundedRectShape(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { RoundedRectDrawer } = await import("./RoundedRectDrawer.js"); + await engine.register(e => { + e.addShape(["rounded-rect"], async () => { + const { RoundedRectDrawer } = await import("./RoundedRectDrawer.js"); - e.addShape(new RoundedRectDrawer()); + return new RoundedRectDrawer(); + }); }); } diff --git a/shapes/spiral/CHANGELOG.md b/shapes/spiral/CHANGELOG.md index ca80d58a2f8..458a95054f9 100644 --- a/shapes/spiral/CHANGELOG.md +++ b/shapes/spiral/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-spiral + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-spiral + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-spiral + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/shape-spiral diff --git a/shapes/spiral/package.dist.json b/shapes/spiral/package.dist.json index 59a3b188e6d..536649a379b 100644 --- a/shapes/spiral/package.dist.json +++ b/shapes/spiral/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-spiral", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles spiral shape", "homepage": "https://particles.js.org", "repository": { @@ -100,7 +100,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/shapes/spiral/package.json b/shapes/spiral/package.json index 8c4375e12b8..0e2bc973ab4 100644 --- a/shapes/spiral/package.json +++ b/shapes/spiral/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-spiral", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles spiral shape", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/shapes/spiral/src/SpiralDrawer.ts b/shapes/spiral/src/SpiralDrawer.ts index e922b8f6324..9080fcc5734 100644 --- a/shapes/spiral/src/SpiralDrawer.ts +++ b/shapes/spiral/src/SpiralDrawer.ts @@ -8,8 +8,6 @@ const defaultInnerRadius = 1, defaultWidthFactor = 10; export class SpiralDrawer implements IShapeDrawer { - readonly validTypes = ["spiral"] as const; - draw(data: IShapeDrawData): void { drawSpiral(data); } diff --git a/shapes/spiral/src/index.ts b/shapes/spiral/src/index.ts index a0e0ffeae08..1c0f6729302 100644 --- a/shapes/spiral/src/index.ts +++ b/shapes/spiral/src/index.ts @@ -8,9 +8,11 @@ declare const __VERSION__: string; export async function loadSpiralShape(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { SpiralDrawer } = await import("./SpiralDrawer.js"); + await engine.register(e => { + e.addShape(["spiral"], async () => { + const { SpiralDrawer } = await import("./SpiralDrawer.js"); - e.addShape(new SpiralDrawer()); + return new SpiralDrawer(); + }); }); } diff --git a/shapes/square/CHANGELOG.md b/shapes/square/CHANGELOG.md index e65a732433e..c19ac55fe21 100644 --- a/shapes/square/CHANGELOG.md +++ b/shapes/square/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-square + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-square + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-square + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/shape-square diff --git a/shapes/square/package.dist.json b/shapes/square/package.dist.json index c14b0e0dfd8..e585220d976 100644 --- a/shapes/square/package.dist.json +++ b/shapes/square/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-square", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles square shape", "homepage": "https://particles.js.org", "repository": { @@ -59,7 +59,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/shapes/square/package.json b/shapes/square/package.json index 21fe3f3a229..54c4ce86fd6 100644 --- a/shapes/square/package.json +++ b/shapes/square/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-square", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles square shape", "homepage": "https://particles.js.org", "scripts": { @@ -72,7 +72,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "type": "module" } diff --git a/shapes/square/src/SquareDrawer.ts b/shapes/square/src/SquareDrawer.ts index d2fdbd7267e..126512deeb5 100644 --- a/shapes/square/src/SquareDrawer.ts +++ b/shapes/square/src/SquareDrawer.ts @@ -6,8 +6,6 @@ const sides = 4; /** */ export class SquareDrawer implements IShapeDrawer { - readonly validTypes = ["edge", "square"] as const; - draw(data: IShapeDrawData): void { drawSquare(data); } diff --git a/shapes/square/src/index.ts b/shapes/square/src/index.ts index 3204bea4846..b978c557acc 100644 --- a/shapes/square/src/index.ts +++ b/shapes/square/src/index.ts @@ -8,9 +8,11 @@ declare const __VERSION__: string; export async function loadSquareShape(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { SquareDrawer } = await import("./SquareDrawer.js"); + await engine.register(e => { + e.addShape(["edge", "square"], async () => { + const { SquareDrawer } = await import("./SquareDrawer.js"); - e.addShape(new SquareDrawer()); + return new SquareDrawer(); + }); }); } diff --git a/shapes/star/CHANGELOG.md b/shapes/star/CHANGELOG.md index 0b32b34deaa..de82a352e6f 100644 --- a/shapes/star/CHANGELOG.md +++ b/shapes/star/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-star + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-star + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-star + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/shape-star diff --git a/shapes/star/package.dist.json b/shapes/star/package.dist.json index 244aa26c0da..68ebcbc65e8 100644 --- a/shapes/star/package.dist.json +++ b/shapes/star/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-star", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles star shape", "homepage": "https://particles.js.org", "repository": { @@ -59,7 +59,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/shapes/star/package.json b/shapes/star/package.json index 67c195072b7..d30cb30995a 100644 --- a/shapes/star/package.json +++ b/shapes/star/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-star", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles star shape", "homepage": "https://particles.js.org", "scripts": { @@ -67,7 +67,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/shapes/star/src/StarDrawer.ts b/shapes/star/src/StarDrawer.ts index 7a936dc6912..19136920889 100644 --- a/shapes/star/src/StarDrawer.ts +++ b/shapes/star/src/StarDrawer.ts @@ -15,8 +15,6 @@ const defaultInset = 2, /** */ export class StarDrawer implements IShapeDrawer { - readonly validTypes = ["star"] as const; - draw(data: IShapeDrawData): void { drawStar(data); } diff --git a/shapes/star/src/index.ts b/shapes/star/src/index.ts index 732242b3bd7..771c4bc472e 100644 --- a/shapes/star/src/index.ts +++ b/shapes/star/src/index.ts @@ -8,9 +8,11 @@ declare const __VERSION__: string; export async function loadStarShape(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { StarDrawer } = await import("./StarDrawer.js"); + await engine.register(e => { + e.addShape(["star"], async () => { + const { StarDrawer } = await import("./StarDrawer.js"); - e.addShape(new StarDrawer()); + return new StarDrawer(); + }); }); } diff --git a/shapes/text/CHANGELOG.md b/shapes/text/CHANGELOG.md index ff26d08c817..c9c7ff08ae3 100644 --- a/shapes/text/CHANGELOG.md +++ b/shapes/text/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-text + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-text + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/shape-text + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/shape-text diff --git a/shapes/text/package.dist.json b/shapes/text/package.dist.json index b5fad6301e6..7e682758282 100644 --- a/shapes/text/package.dist.json +++ b/shapes/text/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-text", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles text shape", "homepage": "https://particles.js.org", "repository": { @@ -59,7 +59,8 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/canvas-utils": "4.0.0-alpha.14", + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/shapes/text/package.json b/shapes/text/package.json index 6f299b24e53..6b1e297dbba 100644 --- a/shapes/text/package.json +++ b/shapes/text/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/shape-text", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles text shape", "homepage": "https://particles.js.org", "scripts": { @@ -67,7 +67,8 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/canvas-utils": "workspace:4.0.0-alpha.14", + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/shapes/text/src/TextDrawer.ts b/shapes/text/src/TextDrawer.ts index 1df34ec2405..6d43ab0a1ff 100644 --- a/shapes/text/src/TextDrawer.ts +++ b/shapes/text/src/TextDrawer.ts @@ -6,11 +6,11 @@ import { executeOnSingleOrMultiple, isInArray, itemFromSingleOrMultiple, - loadFont, } from "@tsparticles/engine"; +import { drawText, validTypes } from "./Utils.js"; import type { ITextShape } from "./ITextShape.js"; import type { TextParticle } from "./TextParticle.js"; -import { drawText } from "./Utils.js"; +import { loadFont } from "@tsparticles/canvas-utils"; const firstItem = 0; @@ -18,15 +18,12 @@ const firstItem = 0; * Multiline text drawer */ export class TextDrawer implements IShapeDrawer { - readonly validTypes = ["text", "character", "char", "multiline-text"] as const; - draw(data: IShapeDrawData): void { drawText(data); } async init(container: Container): Promise { - const options = container.actualOptions, - { validTypes } = this; + const options = container.actualOptions; if (validTypes.find(t => isInArray(t, options.particles.shape.type))) { const shapeOptions = validTypes.map(t => options.particles.shape.options[t])[ @@ -48,7 +45,7 @@ export class TextDrawer implements IShapeDrawer { * @param particle - the particle loading the text shape */ particleInit(_container: Container, particle: TextParticle): void { - if (!particle.shape || !(this.validTypes as unknown as string[]).includes(particle.shape)) { + if (!particle.shape || !validTypes.includes(particle.shape)) { return; } diff --git a/shapes/text/src/Utils.ts b/shapes/text/src/Utils.ts index f47b0362a0f..dc35726bf76 100644 --- a/shapes/text/src/Utils.ts +++ b/shapes/text/src/Utils.ts @@ -2,6 +2,8 @@ import { type IShapeDrawData, double, half, itemFromSingleOrMultiple } from "@ts import type { ITextShape } from "./ITextShape.js"; import type { TextParticle } from "./TextParticle.js"; +export const validTypes = ["text", "character", "char", "multiline-text"]; + /** * * @param data - @@ -22,12 +24,13 @@ export function drawText(data: IShapeDrawData): void { style = character.style, weight = character.weight, size = Math.round(radius) * double, - font = character.font; - - const lines = text?.split("\n") ?? []; + font = character.font, + lines = text?.split("\n") ?? []; context.font = `${style} ${weight} ${size.toString()}px "${font}"`; + const originalGlobalAlpha = context.globalAlpha; + context.globalAlpha = opacity; for (let i = 0; i < lines.length; i++) { @@ -37,26 +40,24 @@ export function drawText(data: IShapeDrawData): void { continue; } - drawLine(context, currentLine, radius, opacity, i, fill, stroke); + drawTextLine(context, currentLine, radius, i, fill, stroke); } - context.globalAlpha = 1; + context.globalAlpha = originalGlobalAlpha; } /** * @param context - * @param line - * @param radius - - * @param _opacity - * @param index - * @param fill - * @param stroke - */ -function drawLine( +function drawTextLine( context: CanvasRenderingContext2D, line: string, radius: number, - _opacity: number, index: number, fill: boolean, stroke: boolean, diff --git a/shapes/text/src/index.ts b/shapes/text/src/index.ts index 4b4f16180de..fe3ea2d149c 100644 --- a/shapes/text/src/index.ts +++ b/shapes/text/src/index.ts @@ -1,4 +1,5 @@ import { type Engine } from "@tsparticles/engine"; +import { validTypes } from "./Utils.js"; declare const __VERSION__: string; @@ -8,9 +9,11 @@ declare const __VERSION__: string; export async function loadTextShape(engine: Engine): Promise { engine.checkVersion(__VERSION__); - await engine.register(async e => { - const { TextDrawer } = await import("./TextDrawer.js"); + await engine.register(e => { + e.addShape(validTypes, async () => { + const { TextDrawer } = await import("./TextDrawer.js"); - e.addShape(new TextDrawer()); + return new TextDrawer(); + }); }); } diff --git a/updaters/color/CHANGELOG.md b/updaters/color/CHANGELOG.md index 247a589f60b..0886102739c 100644 --- a/updaters/color/CHANGELOG.md +++ b/updaters/color/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-color + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-color + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-color + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/updater-color diff --git a/updaters/color/package.dist.json b/updaters/color/package.dist.json index 5548718eeaf..c09cda018f7 100644 --- a/updaters/color/package.dist.json +++ b/updaters/color/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-color", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles color updater", "homepage": "https://particles.js.org", "repository": { @@ -87,7 +87,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/updaters/color/package.json b/updaters/color/package.json index 1c18b02246a..ffbcb961617 100644 --- a/updaters/color/package.json +++ b/updaters/color/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-color", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles color updater", "homepage": "https://particles.js.org", "scripts": { @@ -97,7 +97,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "type": "module" } diff --git a/updaters/destroy/CHANGELOG.md b/updaters/destroy/CHANGELOG.md index c99471f3eec..06c6d37cbb1 100644 --- a/updaters/destroy/CHANGELOG.md +++ b/updaters/destroy/CHANGELOG.md @@ -3,6 +3,20 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-destroy + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-destroy + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Features + +- add effect particles with configuration and drawing logic ([dee10d8](https://github.com/tsparticles/tsparticles/commit/dee10d847b4339f38432906cd36e4a5c51679f7a)) + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/updater-destroy diff --git a/updaters/destroy/package.dist.json b/updaters/destroy/package.dist.json index 84c4fd5d3f1..f233f9381d4 100644 --- a/updaters/destroy/package.dist.json +++ b/updaters/destroy/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-destroy", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles destroy updater", "homepage": "https://particles.js.org", "repository": { @@ -87,7 +87,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/updaters/destroy/package.json b/updaters/destroy/package.json index 6645878c400..66831465785 100644 --- a/updaters/destroy/package.json +++ b/updaters/destroy/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-destroy", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles destroy updater", "homepage": "https://particles.js.org", "scripts": { @@ -95,7 +95,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/updaters/gradient/CHANGELOG.md b/updaters/gradient/CHANGELOG.md index 8f74bf83da8..037f2d5b37b 100644 --- a/updaters/gradient/CHANGELOG.md +++ b/updaters/gradient/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-gradient + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-gradient + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-gradient + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/updater-gradient diff --git a/updaters/gradient/package.dist.json b/updaters/gradient/package.dist.json index 655a9f10cff..acfc034acdf 100644 --- a/updaters/gradient/package.dist.json +++ b/updaters/gradient/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-gradient", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles gradient updater", "homepage": "https://particles.js.org", "repository": { @@ -101,7 +101,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/updaters/gradient/package.json b/updaters/gradient/package.json index 73504fea14d..48316707565 100644 --- a/updaters/gradient/package.json +++ b/updaters/gradient/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-gradient", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles gradient updater", "homepage": "https://particles.js.org", "scripts": { @@ -109,7 +109,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/updaters/gradient/src/GradientUpdater.ts b/updaters/gradient/src/GradientUpdater.ts index e8a2cd806da..594243f05ce 100644 --- a/updaters/gradient/src/GradientUpdater.ts +++ b/updaters/gradient/src/GradientUpdater.ts @@ -114,6 +114,9 @@ export class GradientUpdater implements IParticleUpdater { case RotateDirection.clockwise: particle.gradient.angle.status = AnimationStatus.increasing; break; + default: + // no-op + break; } const reduceDuplicates = particle.options.reduceDuplicates; @@ -148,9 +151,8 @@ export class GradientUpdater implements IParticleUpdater { time: 0, } : undefined, - }; - - const { opacity: addOpacity } = addColor; + }, + { opacity: addOpacity } = addColor; if (grColor.opacity && addOpacity) { const opacityRange = grColor.opacity.value; diff --git a/updaters/life/CHANGELOG.md b/updaters/life/CHANGELOG.md index 3f149c430c7..e850530925e 100644 --- a/updaters/life/CHANGELOG.md +++ b/updaters/life/CHANGELOG.md @@ -3,6 +3,20 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-life + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-life + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Features + +- add effect particles with configuration and drawing logic ([dee10d8](https://github.com/tsparticles/tsparticles/commit/dee10d847b4339f38432906cd36e4a5c51679f7a)) + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/updater-life diff --git a/updaters/life/package.dist.json b/updaters/life/package.dist.json index 9f8ee7691a3..751d8b21081 100644 --- a/updaters/life/package.dist.json +++ b/updaters/life/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-life", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles life updater", "homepage": "https://particles.js.org", "repository": { @@ -87,7 +87,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/updaters/life/package.json b/updaters/life/package.json index be0d49f170c..d10114f42a2 100644 --- a/updaters/life/package.json +++ b/updaters/life/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-life", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles life updater", "homepage": "https://particles.js.org", "scripts": { @@ -95,7 +95,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/updaters/opacity/CHANGELOG.md b/updaters/opacity/CHANGELOG.md index 43a480722ea..967ed1aa10c 100644 --- a/updaters/opacity/CHANGELOG.md +++ b/updaters/opacity/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-opacity + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-opacity + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-opacity + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/updater-opacity diff --git a/updaters/opacity/package.dist.json b/updaters/opacity/package.dist.json index 14ec4ea9053..588da365ccc 100644 --- a/updaters/opacity/package.dist.json +++ b/updaters/opacity/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-opacity", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles opacity updater", "homepage": "https://particles.js.org", "repository": { @@ -87,7 +87,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/updaters/opacity/package.json b/updaters/opacity/package.json index 03d88993316..acead9c4be0 100644 --- a/updaters/opacity/package.json +++ b/updaters/opacity/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-opacity", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles opacity updater", "homepage": "https://particles.js.org", "scripts": { @@ -92,7 +92,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/updaters/orbit/CHANGELOG.md b/updaters/orbit/CHANGELOG.md index 5530d160960..f9b290ae198 100644 --- a/updaters/orbit/CHANGELOG.md +++ b/updaters/orbit/CHANGELOG.md @@ -3,6 +3,20 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-orbit + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-orbit + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Features + +- add effect particles with configuration and drawing logic ([dee10d8](https://github.com/tsparticles/tsparticles/commit/dee10d847b4339f38432906cd36e4a5c51679f7a)) + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/updater-orbit diff --git a/updaters/orbit/package.dist.json b/updaters/orbit/package.dist.json index 79421ec3882..c90e4935687 100644 --- a/updaters/orbit/package.dist.json +++ b/updaters/orbit/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-orbit", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles orbit updater", "homepage": "https://particles.js.org", "repository": { @@ -101,7 +101,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/updaters/orbit/package.json b/updaters/orbit/package.json index 6e5b21a2458..028efe9cca3 100644 --- a/updaters/orbit/package.json +++ b/updaters/orbit/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-orbit", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles orbit updater", "homepage": "https://particles.js.org", "scripts": { @@ -109,7 +109,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/updaters/outModes/CHANGELOG.md b/updaters/outModes/CHANGELOG.md index 14e46dc0e5f..c88ca45fcb1 100644 --- a/updaters/outModes/CHANGELOG.md +++ b/updaters/outModes/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-out-modes + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-out-modes + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-out-modes + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/updater-out-modes diff --git a/updaters/outModes/package.dist.json b/updaters/outModes/package.dist.json index 8c1cbdbb4b4..471566f872a 100644 --- a/updaters/outModes/package.dist.json +++ b/updaters/outModes/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-out-modes", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles out modes updater", "homepage": "https://particles.js.org", "repository": { @@ -87,7 +87,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/updaters/outModes/package.json b/updaters/outModes/package.json index 9ecbed23bec..978a596be8f 100644 --- a/updaters/outModes/package.json +++ b/updaters/outModes/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-out-modes", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles out modes updater", "homepage": "https://particles.js.org", "scripts": { @@ -92,7 +92,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/updaters/outModes/src/BounceOutMode.ts b/updaters/outModes/src/BounceOutMode.ts index 905f8c7c694..637e307a759 100644 --- a/updaters/outModes/src/BounceOutMode.ts +++ b/updaters/outModes/src/BounceOutMode.ts @@ -1,5 +1,6 @@ import { type Container, + type IContainerPlugin, type IDelta, OutMode, type OutModeDirection, @@ -12,11 +13,14 @@ import type { IOutModeManager } from "./IOutModeManager.js"; export class BounceOutMode implements IOutModeManager { modes: (OutMode | keyof typeof OutMode)[]; + private readonly _particleBouncePlugins: IContainerPlugin[]; + constructor(private readonly container: Container) { this.modes = [ OutMode.bounce, OutMode.split, ]; + this._particleBouncePlugins = container.plugins.filter(p => p.particleBounce !== undefined); } update( @@ -32,10 +36,8 @@ export class BounceOutMode implements IOutModeManager { const container = this.container; let handled = false; - for (const plugin of container.plugins) { - if (plugin.particleBounce !== undefined) { - handled = plugin.particleBounce(particle, delta, direction); - } + for (const plugin of this._particleBouncePlugins) { + handled = plugin.particleBounce?.(particle, delta, direction) ?? false; if (handled) { break; diff --git a/updaters/outModes/src/OutOutMode.ts b/updaters/outModes/src/OutOutMode.ts index 51f7cb7885a..6594f415cd7 100644 --- a/updaters/outModes/src/OutOutMode.ts +++ b/updaters/outModes/src/OutOutMode.ts @@ -38,9 +38,8 @@ export class OutOutMode implements IOutModeManager { switch (particle.outType) { case ParticleOutType.inside: { - const { x: vx, y: vy } = particle.velocity; - - const circVec = Vector.origin; + const { x: vx, y: vy } = particle.velocity, + circVec = Vector.origin; circVec.length = particle.moveCenter.radius; circVec.angle = particle.velocity.angle + Math.PI; diff --git a/updaters/roll/CHANGELOG.md b/updaters/roll/CHANGELOG.md index 21fa609e2aa..8daf9a1c7a3 100644 --- a/updaters/roll/CHANGELOG.md +++ b/updaters/roll/CHANGELOG.md @@ -3,6 +3,20 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-roll + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-roll + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Features + +- add effect particles with configuration and drawing logic ([dee10d8](https://github.com/tsparticles/tsparticles/commit/dee10d847b4339f38432906cd36e4a5c51679f7a)) + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/updater-roll diff --git a/updaters/roll/package.dist.json b/updaters/roll/package.dist.json index fdc5f5d442d..5a80065cf00 100644 --- a/updaters/roll/package.dist.json +++ b/updaters/roll/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-roll", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles roll updater", "homepage": "https://particles.js.org", "repository": { @@ -87,7 +87,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/updaters/roll/package.json b/updaters/roll/package.json index f783454a957..94bf671ca32 100644 --- a/updaters/roll/package.json +++ b/updaters/roll/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-roll", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles roll updater", "homepage": "https://particles.js.org", "scripts": { @@ -95,7 +95,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/updaters/rotate/CHANGELOG.md b/updaters/rotate/CHANGELOG.md index a0aa3fd3814..480465cc025 100644 --- a/updaters/rotate/CHANGELOG.md +++ b/updaters/rotate/CHANGELOG.md @@ -3,6 +3,20 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-rotate + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-rotate + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Features + +- add effect particles with configuration and drawing logic ([dee10d8](https://github.com/tsparticles/tsparticles/commit/dee10d847b4339f38432906cd36e4a5c51679f7a)) + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/updater-rotate diff --git a/updaters/rotate/package.dist.json b/updaters/rotate/package.dist.json index 5edabad9f3e..457aad46c42 100644 --- a/updaters/rotate/package.dist.json +++ b/updaters/rotate/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-rotate", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles rotate updater", "homepage": "https://particles.js.org", "repository": { @@ -87,7 +87,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/updaters/rotate/package.json b/updaters/rotate/package.json index 6dc103619e3..d43ed0c276f 100644 --- a/updaters/rotate/package.json +++ b/updaters/rotate/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-rotate", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles rotate updater", "homepage": "https://particles.js.org", "scripts": { @@ -95,7 +95,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/updaters/rotate/src/RotateUpdater.ts b/updaters/rotate/src/RotateUpdater.ts index eabba81ee42..12195125db9 100644 --- a/updaters/rotate/src/RotateUpdater.ts +++ b/updaters/rotate/src/RotateUpdater.ts @@ -76,6 +76,9 @@ export class RotateUpdater implements IParticleUpdater { case RotateDirection.clockwise: particle.rotate.status = AnimationStatus.increasing; break; + default: + // no-op + break; } const rotateAnimation = rotateOptions.animation; diff --git a/updaters/size/CHANGELOG.md b/updaters/size/CHANGELOG.md index 7265d5c6083..0a5abe56298 100644 --- a/updaters/size/CHANGELOG.md +++ b/updaters/size/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-size + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-size + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-size + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/updater-size diff --git a/updaters/size/package.dist.json b/updaters/size/package.dist.json index 5e22f413a6d..7501daa15bf 100644 --- a/updaters/size/package.dist.json +++ b/updaters/size/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-size", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles size updater", "homepage": "https://particles.js.org", "repository": { @@ -87,7 +87,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/updaters/size/package.json b/updaters/size/package.json index bbcddb3411d..9b3faa0c790 100644 --- a/updaters/size/package.json +++ b/updaters/size/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-size", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles size updater", "homepage": "https://particles.js.org", "scripts": { @@ -92,7 +92,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/updaters/strokeColor/CHANGELOG.md b/updaters/strokeColor/CHANGELOG.md index 69f694d2a28..f82a63e38c2 100644 --- a/updaters/strokeColor/CHANGELOG.md +++ b/updaters/strokeColor/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-stroke-color + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-stroke-color + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-stroke-color + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/updater-stroke-color diff --git a/updaters/strokeColor/package.dist.json b/updaters/strokeColor/package.dist.json index fe09b0dcc06..427d89a5856 100644 --- a/updaters/strokeColor/package.dist.json +++ b/updaters/strokeColor/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-stroke-color", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles stroke color updater", "homepage": "https://particles.js.org", "repository": { @@ -87,7 +87,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/updaters/strokeColor/package.json b/updaters/strokeColor/package.json index 07693fb5d5a..f2681c336a4 100644 --- a/updaters/strokeColor/package.json +++ b/updaters/strokeColor/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-stroke-color", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles stroke color updater", "homepage": "https://particles.js.org", "scripts": { @@ -95,7 +95,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/updaters/strokeColor/src/StrokeColorUpdater.ts b/updaters/strokeColor/src/StrokeColorUpdater.ts index f7a8f11f875..deef143aef6 100644 --- a/updaters/strokeColor/src/StrokeColorUpdater.ts +++ b/updaters/strokeColor/src/StrokeColorUpdater.ts @@ -25,10 +25,9 @@ export class StrokeColorUpdater implements IParticleUpdater { init(particle: StrokeParticle): void { const container = this._container, - options = particle.options; - - /* strokeColor */ - const stroke = itemFromSingleOrMultiple(options.stroke, particle.id, options.reduceDuplicates); + options = particle.options, + /* strokeColor */ + stroke = itemFromSingleOrMultiple(options.stroke, particle.id, options.reduceDuplicates); if (!stroke) { return; diff --git a/updaters/tilt/CHANGELOG.md b/updaters/tilt/CHANGELOG.md index b221c15e8db..560716a328a 100644 --- a/updaters/tilt/CHANGELOG.md +++ b/updaters/tilt/CHANGELOG.md @@ -3,6 +3,20 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-tilt + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-tilt + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Features + +- add effect particles with configuration and drawing logic ([dee10d8](https://github.com/tsparticles/tsparticles/commit/dee10d847b4339f38432906cd36e4a5c51679f7a)) + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/updater-tilt diff --git a/updaters/tilt/package.dist.json b/updaters/tilt/package.dist.json index 877180b87a9..1276aa3bffa 100644 --- a/updaters/tilt/package.dist.json +++ b/updaters/tilt/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-tilt", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles tilt updater", "homepage": "https://particles.js.org", "repository": { @@ -87,7 +87,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/updaters/tilt/package.json b/updaters/tilt/package.json index 647757aee93..2407050ae25 100644 --- a/updaters/tilt/package.json +++ b/updaters/tilt/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-tilt", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles tilt updater", "homepage": "https://particles.js.org", "scripts": { @@ -95,7 +95,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/updaters/tilt/src/TiltUpdater.ts b/updaters/tilt/src/TiltUpdater.ts index 6d31e96660c..6f563a8e47f 100644 --- a/updaters/tilt/src/TiltUpdater.ts +++ b/updaters/tilt/src/TiltUpdater.ts @@ -70,6 +70,9 @@ export class TiltUpdater implements IParticleUpdater { case TiltDirection.clockwise: particle.tilt.status = AnimationStatus.increasing; break; + default: + // no-op + break; } const tiltAnimation = particle.options.tilt?.animation; diff --git a/updaters/twinkle/CHANGELOG.md b/updaters/twinkle/CHANGELOG.md index a66f855b856..f1bdcf57980 100644 --- a/updaters/twinkle/CHANGELOG.md +++ b/updaters/twinkle/CHANGELOG.md @@ -3,6 +3,20 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-twinkle + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-twinkle + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Features + +- add effect particles with configuration and drawing logic ([dee10d8](https://github.com/tsparticles/tsparticles/commit/dee10d847b4339f38432906cd36e4a5c51679f7a)) + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/updater-twinkle diff --git a/updaters/twinkle/package.dist.json b/updaters/twinkle/package.dist.json index 7bff72b116d..73f936eab64 100644 --- a/updaters/twinkle/package.dist.json +++ b/updaters/twinkle/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-twinkle", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles twinkle updater", "homepage": "https://particles.js.org", "repository": { @@ -87,7 +87,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/updaters/twinkle/package.json b/updaters/twinkle/package.json index 5cd1c0bd372..b0c8ff14e65 100644 --- a/updaters/twinkle/package.json +++ b/updaters/twinkle/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-twinkle", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles twinkle updater", "homepage": "https://particles.js.org", "scripts": { @@ -95,7 +95,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/updaters/wobble/CHANGELOG.md b/updaters/wobble/CHANGELOG.md index 1a8c4c91115..8fccc0cabec 100644 --- a/updaters/wobble/CHANGELOG.md +++ b/updaters/wobble/CHANGELOG.md @@ -3,6 +3,20 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-wobble + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/updater-wobble + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Features + +- add effect particles with configuration and drawing logic ([dee10d8](https://github.com/tsparticles/tsparticles/commit/dee10d847b4339f38432906cd36e4a5c51679f7a)) + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/updater-wobble diff --git a/updaters/wobble/package.dist.json b/updaters/wobble/package.dist.json index d71209885a5..f70f9ee98fc 100644 --- a/updaters/wobble/package.dist.json +++ b/updaters/wobble/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-wobble", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles wobble updater", "homepage": "https://particles.js.org", "repository": { @@ -87,7 +87,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/updaters/wobble/package.json b/updaters/wobble/package.json index 70b08506f1e..bcfc4a7f8f7 100644 --- a/updaters/wobble/package.json +++ b/updaters/wobble/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/updater-wobble", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles particles wobble updater", "homepage": "https://particles.js.org", "scripts": { @@ -95,7 +95,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/utils/canvasUtils/.npmignore b/utils/canvasUtils/.npmignore new file mode 100644 index 00000000000..5c901533f98 --- /dev/null +++ b/utils/canvasUtils/.npmignore @@ -0,0 +1 @@ +report.html \ No newline at end of file diff --git a/utils/canvasUtils/CHANGELOG.md b/utils/canvasUtils/CHANGELOG.md new file mode 100644 index 00000000000..40d25939f2d --- /dev/null +++ b/utils/canvasUtils/CHANGELOG.md @@ -0,0 +1,16 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/canvas-utils + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/canvas-utils + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/canvas-utils diff --git a/utils/canvasUtils/LICENSE b/utils/canvasUtils/LICENSE new file mode 100644 index 00000000000..bdc05f528fa --- /dev/null +++ b/utils/canvasUtils/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Matteo Bruni + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/utils/canvasUtils/README.md b/utils/canvasUtils/README.md new file mode 100644 index 00000000000..67d02d87aa5 --- /dev/null +++ b/utils/canvasUtils/README.md @@ -0,0 +1,74 @@ +[![banner](https://particles.js.org/images/banner3.png)](https://particles.js.org) + +# tsParticles Canvas Utils Library + +[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/@tsparticles/canvas-utils/badge)](https://www.jsdelivr.com/package/npm/@tsparticles/canvas-utils) +[![npmjs](https://badge.fury.io/js/@tsparticles/canvas-utils.svg)](https://www.npmjs.com/package/@tsparticles/canvas-utils) +[![npmjs](https://img.shields.io/npm/dt/@tsparticles/canvas-utils)](https://www.npmjs.com/package/@tsparticles/canvas-utils) [![GitHub Sponsors](https://img.shields.io/github/sponsors/matteobruni)](https://github.com/sponsors/matteobruni) + +[tsParticles](https://github.com/tsparticles/tsparticles) canvas utils. + +## How to use it + +### CDN / Vanilla JS / jQuery + +The CDN/Vanilla version JS has one required file in vanilla configuration: + +Including the `tsparticles.canvas.utils.min.js` file will export the function to load the canvas utils: + +```text +loadCanvasUtilsPath +``` + +### Usage + +Once the scripts are loaded you can set up `tsParticles` and the canvas utils like this: + +```javascript +(async () => { + await loadCanvasUtilsPath(tsParticles); + + await tsParticles.load({ + id: "tsparticles", + options: { + /* options */ + }, + }); +})(); +``` + +### ESM / CommonJS + +This package is compatible also with ES or CommonJS modules, firstly this needs to be installed, like this: + +```shell +$ npm install @tsparticles/canvas-utils +``` + +or + +```shell +$ yarn add @tsparticles/canvas-utils +``` + +Then you need to import it in the app, like this: + +```javascript +const { tsParticles } = require("@tsparticles/engine"); +const { loadCanvasUtilsPath } = require("@tsparticles/canvas-utils"); + +(async () => { + await loadCanvasUtilsPath(tsParticles); +})(); +``` + +or + +```javascript +import { tsParticles } from "@tsparticles/engine"; +import { loadCanvasUtilsPath } from "@tsparticles/canvas-utils"; + +(async () => { + await loadCanvasUtilsPath(tsParticles); +})(); +``` diff --git a/utils/canvasUtils/eslint.config.js b/utils/canvasUtils/eslint.config.js new file mode 100644 index 00000000000..a461ddbce48 --- /dev/null +++ b/utils/canvasUtils/eslint.config.js @@ -0,0 +1,6 @@ +import tsParticlesESLintConfig from "@tsparticles/eslint-config"; +import { defineConfig } from "eslint/config"; + +export default defineConfig([ + tsParticlesESLintConfig, +]); diff --git a/utils/canvasUtils/package.dist.json b/utils/canvasUtils/package.dist.json new file mode 100644 index 00000000000..dcb8054e0fd --- /dev/null +++ b/utils/canvasUtils/package.dist.json @@ -0,0 +1,109 @@ +{ + "name": "@tsparticles/canvas-utils", + "version": "4.0.0-alpha.14", + "description": "tsParticles canvas utils library", + "homepage": "https://particles.js.org", + "repository": { + "type": "git", + "url": "git+https://github.com/tsparticles/tsparticles.git", + "directory": "utils/canvasUtils" + }, + "keywords": [ + "front-end", + "frontend", + "tsparticles", + "particles.js", + "particlesjs", + "particles", + "particle", + "canvas", + "jsparticles", + "xparticles", + "particles-js", + "particles-bg", + "particles-bg-vue", + "particles-ts", + "particles.ts", + "react-particles-js", + "react-particles.js", + "react-particles", + "react", + "reactjs", + "vue-particles", + "ngx-particles", + "angular-particles", + "particleground", + "vue", + "vuejs", + "preact", + "preactjs", + "jquery", + "angularjs", + "angular", + "typescript", + "javascript", + "animation", + "web", + "html5", + "web-design", + "webdesign", + "css", + "html", + "css3", + "animated", + "background", + "confetti", + "canvas", + "fireworks", + "fireworks-js", + "confetti-js", + "confettijs", + "fireworksjs", + "canvas-confetti", + "tsparticles-plugin" + ], + "publishConfig": { + "access": "public" + }, + "author": "Matteo Bruni ", + "license": "MIT", + "bugs": { + "url": "https://github.com/tsparticles/tsparticles/issues" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "sideEffects": false, + "jsdelivr": "tsparticles.canvas.utils.min.js", + "unpkg": "tsparticles.canvas.utils.min.js", + "browser": "browser/index.js", + "main": "cjs/index.js", + "module": "esm/index.js", + "types": "types/index.d.ts", + "exports": { + ".": { + "types": "./types/index.d.ts", + "browser": "./browser/index.js", + "import": "./esm/index.js", + "require": "./cjs/index.js", + "umd": "./umd/index.js", + "default": "./cjs/index.js" + }, + "./package.json": "./package.json" + }, + "dependencies": { + "@tsparticles/engine": "4.0.0-alpha.14" + }, + "type": "module" +} diff --git a/utils/canvasUtils/package.json b/utils/canvasUtils/package.json new file mode 100644 index 00000000000..3aead30e7cc --- /dev/null +++ b/utils/canvasUtils/package.json @@ -0,0 +1,119 @@ +{ + "name": "@tsparticles/canvas-utils", + "version": "4.0.0-alpha.14", + "description": "tsParticles canvas utils path", + "homepage": "https://particles.js.org", + "scripts": { + "build": "tsparticles-cli build", + "build:ci": "tsparticles-cli build --ci", + "version": "tsparticles-cli build -d && git add package.dist.json && tsparticles-cli build -p -l && git add .", + "prepack": "pnpm run build" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/tsparticles/tsparticles.git", + "directory": "paths/canvasUtils" + }, + "keywords": [ + "front-end", + "frontend", + "tsparticles", + "particles.js", + "particlesjs", + "particles", + "particle", + "canvas", + "jsparticles", + "xparticles", + "particles-js", + "particles-bg", + "particles-bg-vue", + "particles-ts", + "particles.ts", + "react-particles-js", + "react-particles.js", + "react-particles", + "react", + "reactjs", + "vue-particles", + "ngx-particles", + "angular-particles", + "particleground", + "vue", + "vuejs", + "preact", + "preactjs", + "jquery", + "angularjs", + "angular", + "typescript", + "javascript", + "animation", + "web", + "html5", + "web-design", + "webdesign", + "css", + "html", + "css3", + "animated", + "background", + "confetti", + "canvas", + "fireworks", + "fireworks-js", + "confetti-js", + "confettijs", + "fireworksjs", + "canvas-confetti", + "tsparticles-plugin" + ], + "author": "Matteo Bruni ", + "license": "MIT", + "bugs": { + "url": "https://github.com/tsparticles/tsparticles/issues" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/matteobruni" + }, + { + "type": "github", + "url": "https://github.com/sponsors/tsparticles" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/matteobruni" + } + ], + "prettier": "@tsparticles/prettier-config", + "files": [ + "dist" + ], + "sideEffects": false, + "browser": "dist/browser/index.js", + "main": "dist/cjs/index.js", + "module": "dist/esm/index.js", + "types": "dist/types/index.d.ts", + "exports": { + ".": { + "types": "./dist/types/index.d.ts", + "browser": "./dist/browser/index.js", + "import": "./dist/esm/index.js", + "require": "./dist/cjs/index.js", + "umd": "./dist/umd/index.js", + "default": "./dist/cjs/index.js" + }, + "./package.json": "./dist/package.json" + }, + "dependencies": { + "@tsparticles/engine": "workspace:4.0.0-alpha.14" + }, + "publishConfig": { + "access": "public", + "directory": "dist", + "linkDirectory": true + }, + "type": "module" +} diff --git a/plugins/emittersShapes/canvas/src/utils.ts b/utils/canvasUtils/src/Utils.ts similarity index 56% rename from plugins/emittersShapes/canvas/src/utils.ts rename to utils/canvasUtils/src/Utils.ts index 8f3d0459ed0..89d014afbe7 100644 --- a/plugins/emittersShapes/canvas/src/utils.ts +++ b/utils/canvasUtils/src/Utils.ts @@ -1,14 +1,29 @@ -import type { CanvasPixelData, TextLineData } from "./types.js"; -import { type ICoordinates, type IDimension, type IRgba, isNumber, safeDocument } from "@tsparticles/engine"; -import type { TextOptions } from "./Options/Classes/TextOptions.js"; - -const origin: ICoordinates = { - x: 0, - y: 0, - }, - minWidth = 0, - defaultRgbValue = 0, - defaultAlphaValue = 1; +import type { CanvasPixelData, ITextDataOptions, TextLineData } from "./types.js"; +import { + type ICoordinates, + type IDimension, + type IRgba, + defaultAlpha, + defaultRgbMin, + isNumber, + originPoint, + safeDocument, +} from "@tsparticles/engine"; + +const defaultWidth = 0; + +/** + * Draws a line between two points using canvas API in the given context. + * @param context - The canvas context to draw on. + * @param begin - The start point of the line. + * @param end - The end point of the line. + */ +export function drawLine(context: CanvasRenderingContext2D, begin: ICoordinates, end: ICoordinates): void { + context.beginPath(); + context.moveTo(begin.x, begin.y); + context.lineTo(end.x, end.y); + context.closePath(); +} /** * @param ctx - @@ -23,10 +38,10 @@ export function getCanvasImageData( offset: number, clear = true, ): CanvasPixelData { - const imageData = ctx.getImageData(origin.x, origin.y, size.width, size.height).data; + const imageData = ctx.getImageData(originPoint.x, originPoint.y, size.width, size.height).data; if (clear) { - ctx.clearRect(origin.x, origin.y, size.width, size.height); + ctx.clearRect(originPoint.x, originPoint.y, size.width, size.height); } const pixels: IRgba[][] = []; @@ -54,10 +69,10 @@ export function getCanvasImageData( } row[pos.x] = { - r: imageData[i + indexesOffset.r] ?? defaultRgbValue, - g: imageData[i + indexesOffset.g] ?? defaultRgbValue, - b: imageData[i + indexesOffset.b] ?? defaultRgbValue, - a: (imageData[i + indexesOffset.a] ?? defaultAlphaValue) / alphaFactor, + r: imageData[i + indexesOffset.r] ?? defaultRgbMin, + g: imageData[i + indexesOffset.g] ?? defaultRgbMin, + b: imageData[i + indexesOffset.b] ?? defaultRgbMin, + a: (imageData[i + indexesOffset.a] ?? defaultAlpha) / alphaFactor, }; } @@ -71,9 +86,14 @@ export function getCanvasImageData( /** * @param src - * @param offset - + * @param canvasSettings - * @returns the canvas pixel data */ -export function getImageData(src: string, offset: number): Promise { +export function getImageData( + src: string, + offset: number, + canvasSettings?: CanvasRenderingContext2DSettings, +): Promise { const image = new Image(); image.crossOrigin = "Anonymous"; @@ -86,7 +106,7 @@ export function getImageData(src: string, offset: number): Promise { + try { + await safeDocument().fonts.load(`${weight ?? "400"} 36px '${font ?? "Verdana"}'`); + } catch { + // ignores any error + } +} diff --git a/utils/canvasUtils/src/index.ts b/utils/canvasUtils/src/index.ts new file mode 100644 index 00000000000..e9a4fa294f5 --- /dev/null +++ b/utils/canvasUtils/src/index.ts @@ -0,0 +1,2 @@ +export type * from "./types.js"; +export * from "./Utils.js"; diff --git a/utils/canvasUtils/src/types.ts b/utils/canvasUtils/src/types.ts new file mode 100644 index 00000000000..c47e51402f0 --- /dev/null +++ b/utils/canvasUtils/src/types.ts @@ -0,0 +1,34 @@ +import type { IRgba } from "@tsparticles/engine"; + +export interface CanvasPixelData { + height: number; + pixels: IRgba[][]; + width: number; +} + +export interface TextLineData { + height: number; + measure: TextMetrics; + text: string; + width: number; +} + +export interface ITextDataOptions { + color: string; + font: ITextDataFontOptions; + lines: ITextDataLinesOptions; + text: string; +} + +export interface ITextDataFontOptions { + family: string; + size: string | number; + style: string; + variant: string; + weight: string; +} + +export interface ITextDataLinesOptions { + separator: string; + spacing: number; +} diff --git a/utils/canvasUtils/tsconfig.base.json b/utils/canvasUtils/tsconfig.base.json new file mode 100644 index 00000000000..d43f4eba9bd --- /dev/null +++ b/utils/canvasUtils/tsconfig.base.json @@ -0,0 +1,9 @@ +{ + "extends": "@tsparticles/tsconfig/tsconfig.base.json", + "compilerOptions": { + "rootDir": "./src" + }, + "include": [ + "./src" + ] +} diff --git a/utils/canvasUtils/tsconfig.browser.json b/utils/canvasUtils/tsconfig.browser.json new file mode 100644 index 00000000000..3bb4173186c --- /dev/null +++ b/utils/canvasUtils/tsconfig.browser.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.browser.json"], + "compilerOptions": { + "outDir": "./dist/browser" + } +} diff --git a/utils/canvasUtils/tsconfig.json b/utils/canvasUtils/tsconfig.json new file mode 100644 index 00000000000..4c843651531 --- /dev/null +++ b/utils/canvasUtils/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.json"], + "compilerOptions": { + "outDir": "./dist/cjs" + } +} diff --git a/utils/canvasUtils/tsconfig.module.json b/utils/canvasUtils/tsconfig.module.json new file mode 100644 index 00000000000..fa94c2a6293 --- /dev/null +++ b/utils/canvasUtils/tsconfig.module.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.module.json"], + "compilerOptions": { + "outDir": "./dist/esm" + } +} diff --git a/utils/canvasUtils/tsconfig.types.json b/utils/canvasUtils/tsconfig.types.json new file mode 100644 index 00000000000..8ec1d3edd57 --- /dev/null +++ b/utils/canvasUtils/tsconfig.types.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.types.json"], + "compilerOptions": { + "outDir": "./dist/types" + } +} diff --git a/utils/canvasUtils/tsconfig.umd.json b/utils/canvasUtils/tsconfig.umd.json new file mode 100644 index 00000000000..41b78634d8c --- /dev/null +++ b/utils/canvasUtils/tsconfig.umd.json @@ -0,0 +1,6 @@ +{ + "extends": ["./tsconfig.base.json", "@tsparticles/tsconfig/tsconfig.umd.json"], + "compilerOptions": { + "outDir": "./dist/umd" + } +} diff --git a/utils/canvasUtils/typedoc.json b/utils/canvasUtils/typedoc.json new file mode 100644 index 00000000000..2a618563d3f --- /dev/null +++ b/utils/canvasUtils/typedoc.json @@ -0,0 +1,15 @@ +{ + "projectDocuments": ["../markdown/**/*.md"], + "entryPoints": [ + "./src/" + ], + "entryPointStrategy": "expand", + "name": "tsParticles Canvas Utils", + "includeVersion": true, + "hideGenerator": true, + "out": "./docs", + "validation": { + "invalidLink": true, + "notDocumented": true + } +} diff --git a/utils/canvasUtils/webpack.config.js b/utils/canvasUtils/webpack.config.js new file mode 100644 index 00000000000..7eb06a1f52d --- /dev/null +++ b/utils/canvasUtils/webpack.config.js @@ -0,0 +1,12 @@ +import { loadParticlesBundle } from "@tsparticles/webpack-plugin"; +import { fileURLToPath } from "url"; +import fs from "fs-extra"; +import path from "path"; + +const __filename = fileURLToPath(import.meta.url), + __dirname = path.dirname(__filename), + rootPkgPath = path.join(__dirname, "package.json"), + pkg = await fs.readJson(rootPkgPath), + version = pkg.version; + +export default loadParticlesBundle({ moduleName: "canvas.utils", bundle: false, bundleName: "Canvas Utils", version, dir: __dirname }); diff --git a/utils/configs/CHANGELOG.md b/utils/configs/CHANGELOG.md index 3e946d68b1f..a4a59c857c1 100644 --- a/utils/configs/CHANGELOG.md +++ b/utils/configs/CHANGELOG.md @@ -3,6 +3,26 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/configs + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/configs + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Features + +- add branches path generator and related configurations ([41de076](https://github.com/tsparticles/tsparticles/commit/41de07658b1d5ab92f566520ac197fcacc17ac18)) +- add brownian path generator and related configurations ([d42ccaf](https://github.com/tsparticles/tsparticles/commit/d42ccaf6903309bc3c9c55ca7e4d501f767c6bcb)) +- add effect particles with configuration and drawing logic ([dee10d8](https://github.com/tsparticles/tsparticles/commit/dee10d847b4339f38432906cd36e4a5c51679f7a)) +- add full card shape, and utilities for path drawing ([f4a985f](https://github.com/tsparticles/tsparticles/commit/f4a985f092e7da94e6f8bd211c3007246d0488b3)) +- add grid and maze path options for particle movement ([400a6f6](https://github.com/tsparticles/tsparticles/commit/400a6f652de8bbd192ceda25a37517f25e3f01d2)) +- add Levy path generator and related configurations ([ae59df8](https://github.com/tsparticles/tsparticles/commit/ae59df81081c2436be6d38afb6f2c5997820d1fb)) +- refactor path generators to use container-specific options and add spiral path generator ([3aa87c3](https://github.com/tsparticles/tsparticles/commit/3aa87c39c5a70adfb146cd281b62a229623e3412)) + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/configs diff --git a/utils/configs/package.dist.json b/utils/configs/package.dist.json index 9afad1a191b..1d3166682cb 100644 --- a/utils/configs/package.dist.json +++ b/utils/configs/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/configs", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles demo configurations", "homepage": "https://particles.js.org", "repository": { @@ -99,7 +99,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "publishConfig": { "access": "public" diff --git a/utils/configs/package.json b/utils/configs/package.json index 71afbeb690c..7c9769c8ec2 100644 --- a/utils/configs/package.json +++ b/utils/configs/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/configs", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "homepage": "https://particles.js.org", "scripts": { "build": "tsparticles-cli build", @@ -106,7 +106,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/utils/configs/src/c/cards.ts b/utils/configs/src/c/cards.ts index 5fef3c7e860..ecc585145c6 100644 --- a/utils/configs/src/c/cards.ts +++ b/utils/configs/src/c/cards.ts @@ -7,63 +7,62 @@ const cardSuits = ["spades", "hearts", "diamonds", "clubs"] as const, suit, value, })), - ); - -const options: ISourceOptions = { - key: "cards", - name: "Cards", - particles: { - color: { - value: "#fff", - }, - number: { - value: 52, - }, - reduceDuplicates: true, - shape: { - type: ["card"], - options: { - card: allCards, + ), + options: ISourceOptions = { + key: "cards", + name: "Cards", + particles: { + color: { + value: "#fff", }, - }, - opacity: { - value: 1, - }, - size: { - value: 30, - }, - move: { - enable: true, - speed: 2, - }, - stroke: { - width: 1, - color: "#000", - }, - }, - interactivity: { - events: { - onHover: { - enable: true, - mode: "repulse", + number: { + value: 52, + }, + reduceDuplicates: true, + shape: { + type: ["card"], + options: { + card: allCards, + }, + }, + opacity: { + value: 1, }, - onClick: { + size: { + value: 30, + }, + move: { enable: true, - mode: "push", + speed: 2, + }, + stroke: { + width: 1, + color: "#000", }, }, - modes: { - repulse: { - distance: 200, + interactivity: { + events: { + onHover: { + enable: true, + mode: "repulse", + }, + onClick: { + enable: true, + mode: "push", + }, }, - push: { - quantity: 4, + modes: { + repulse: { + distance: 200, + }, + push: { + quantity: 4, + }, }, }, - }, - background: { - color: "#fff", - }, -}; + background: { + color: "#fff", + }, + }; export default options; diff --git a/utils/configs/src/c/cardsRolling.ts b/utils/configs/src/c/cardsRolling.ts index cbbd4289b18..e84038649b8 100644 --- a/utils/configs/src/c/cardsRolling.ts +++ b/utils/configs/src/c/cardsRolling.ts @@ -7,91 +7,90 @@ const cardSuits = ["spades", "hearts", "diamonds", "clubs"] as const, suit, value, })), - ); - -const options: ISourceOptions = { - key: "cardsRolling", - name: "Cards Rolling", - particles: { - color: { - value: "#000", - }, - number: { - value: 52, - }, - reduceDuplicates: true, - shape: { - type: ["card"], - options: { - card: allCards, + ), + options: ISourceOptions = { + key: "cardsRolling", + name: "Cards Rolling", + particles: { + color: { + value: "#000", }, - }, - opacity: { - value: 1, - }, - size: { - value: 30, - }, - stroke: { - width: 1, - color: "#000", - }, - move: { - enable: true, - speed: 2, - }, - roll: { - darken: { - enable: true, - value: 30, + number: { + value: 52, }, - enlighten: { - enable: true, - value: 30, + reduceDuplicates: true, + shape: { + type: ["card"], + options: { + card: allCards, + }, }, - enable: true, - mode: "both", - speed: { - min: 5, - max: 15, + opacity: { + value: 1, }, - }, - tilt: { - direction: "random", - enable: true, - value: { - min: 0, - max: 360, + size: { + value: 30, + }, + stroke: { + width: 1, + color: "#000", }, - animation: { + move: { enable: true, - speed: 15, + speed: 2, }, - }, - }, - interactivity: { - events: { - onHover: { + roll: { + darken: { + enable: true, + value: 30, + }, + enlighten: { + enable: true, + value: 30, + }, enable: true, - mode: "repulse", + mode: "both", + speed: { + min: 5, + max: 15, + }, }, - onClick: { + tilt: { + direction: "random", enable: true, - mode: "push", + value: { + min: 0, + max: 360, + }, + animation: { + enable: true, + speed: 15, + }, }, }, - modes: { - repulse: { - distance: 200, + interactivity: { + events: { + onHover: { + enable: true, + mode: "repulse", + }, + onClick: { + enable: true, + mode: "push", + }, }, - push: { - quantity: 4, + modes: { + repulse: { + distance: 200, + }, + push: { + quantity: 4, + }, }, }, - }, - background: { - color: "#fff", - }, -}; + background: { + color: "#fff", + }, + }; export default options; diff --git a/utils/configs/src/e/effectParticles.ts b/utils/configs/src/e/effectParticles.ts new file mode 100644 index 00000000000..11f7b0889d3 --- /dev/null +++ b/utils/configs/src/e/effectParticles.ts @@ -0,0 +1,93 @@ +import type { ISourceOptions } from "@tsparticles/engine"; + +const options: ISourceOptions = { + key: "effectParticles", + name: "Effect Particles", + particles: { + number: { + value: 25, + }, + color: { + value: "#ffff00", + }, + effect: { + type: "particles", + options: { + particles: { + spawn: { + particles: { + color: { + value: "#ffff00", + animation: { + enable: true, + speed: -70, + sync: true, + }, + }, + effect: { + type: "none", + }, + shape: { + type: "star", + }, + move: { + enable: true, + speed: 1, + }, + life: { + duration: { + sync: false, + value: { + min: 1, + max: 2, + }, + }, + count: 1, + }, + size: { + value: { + min: 2, + max: 3, + }, + }, + zIndex: { + value: 5, + }, + }, + rate: { + delay: 0.1, + quantity: { min: 3, max: 5 }, + }, + }, + }, + }, + }, + shape: { + type: "star", + }, + opacity: { + value: 1, + }, + size: { + value: { + min: 10, + max: 15, + }, + }, + move: { + enable: true, + speed: 6, + }, + rotate: { + path: true, + }, + zIndex: { + value: 0, + }, + }, + background: { + color: "#000000", + }, +}; + +export default options; diff --git a/utils/configs/src/e/emitterShapes.ts b/utils/configs/src/e/emitterShapes.ts index 58129295225..452a8ec4e84 100644 --- a/utils/configs/src/e/emitterShapes.ts +++ b/utils/configs/src/e/emitterShapes.ts @@ -1,114 +1,111 @@ import type { ICoordinates, ISourceOptions } from "@tsparticles/engine"; const rate = { - delay: 0.1, - quantity: 3, -}; - -const generateEmitter = ( - shape: string, - options: Record, - fill: boolean, - position: ICoordinates, -): unknown => { - return { - shape: { - type: shape, - options, - }, - position: position, - size: { - width: 200, - height: 200, - mode: "precise", - }, - life: { - duration: 10, - delay: 0.5, - count: 1, - }, - rate, - fill, - }; -}; - -const path = [ - { x: 0, y: 0 }, - { x: 0, y: 50 }, - { x: 25, y: 50 }, - { x: 0, y: 100 }, - { x: 50, y: 100 }, - { x: 50, y: 75 }, - { x: 100, y: 100 }, - { x: 100, y: 50 }, - { x: 75, y: 50 }, - { x: 100, y: 0 }, - { x: 50, y: 0 }, - { x: 50, y: 25 }, -]; - -const options: ISourceOptions = { - key: "emitterShapes", - name: "Emitter Shapes", - particles: { - number: { - value: 0, - }, - color: { - value: "#000000", - }, - shape: { - type: "circle", - }, - opacity: { - value: 1, - }, - size: { - value: 1, - }, + delay: 0.1, + quantity: 3, }, - background: { - color: "#fff", + generateEmitter = ( + shape: string, + options: Record, + fill: boolean, + position: ICoordinates, + ): unknown => { + return { + shape: { + type: shape, + options, + }, + position: position, + size: { + width: 200, + height: 200, + mode: "precise", + }, + life: { + duration: 10, + delay: 0.5, + count: 1, + }, + rate, + fill, + }; }, - emitters: [ - generateEmitter("square", {}, true, { x: 25, y: 25 }), - generateEmitter("circle", {}, true, { x: 50, y: 25 }), - generateEmitter( - "polygon", - { - angle: -18, - sides: 5, + path = [ + { x: 0, y: 0 }, + { x: 0, y: 50 }, + { x: 25, y: 50 }, + { x: 0, y: 100 }, + { x: 50, y: 100 }, + { x: 50, y: 75 }, + { x: 100, y: 100 }, + { x: 100, y: 50 }, + { x: 75, y: 50 }, + { x: 100, y: 0 }, + { x: 50, y: 0 }, + { x: 50, y: 25 }, + ], + options: ISourceOptions = { + key: "emitterShapes", + name: "Emitter Shapes", + particles: { + number: { + value: 0, }, - true, - { x: 75, y: 25 }, - ), - generateEmitter("square", {}, false, { x: 25, y: 50 }), - generateEmitter("circle", {}, false, { x: 50, y: 50 }), - generateEmitter( - "polygon", - { - sides: 6, + color: { + value: "#000000", }, - false, - { x: 75, y: 50 }, - ), - generateEmitter( - "path", - { - points: path, + shape: { + type: "circle", }, - true, - { x: 25, y: 75 }, - ), - generateEmitter( - "path", - { - points: path, + opacity: { + value: 1, }, - false, - { x: 50, y: 75 }, - ), - ], -}; + size: { + value: 1, + }, + }, + background: { + color: "#fff", + }, + emitters: [ + generateEmitter("square", {}, true, { x: 25, y: 25 }), + generateEmitter("circle", {}, true, { x: 50, y: 25 }), + generateEmitter( + "polygon", + { + angle: -18, + sides: 5, + }, + true, + { x: 75, y: 25 }, + ), + generateEmitter("square", {}, false, { x: 25, y: 50 }), + generateEmitter("circle", {}, false, { x: 50, y: 50 }), + generateEmitter( + "polygon", + { + sides: 6, + }, + false, + { x: 75, y: 50 }, + ), + generateEmitter( + "path", + { + points: path, + }, + true, + { x: 25, y: 75 }, + ), + generateEmitter( + "path", + { + points: path, + }, + false, + { x: 50, y: 75 }, + ), + ], + }; export default options; diff --git a/utils/configs/src/e/index.ts b/utils/configs/src/e/index.ts index 470f4bc7cdb..88460a6e044 100644 --- a/utils/configs/src/e/index.ts +++ b/utils/configs/src/e/index.ts @@ -1,4 +1,5 @@ import effectBubble from "./effectBubble.js"; +import effectParticles from "./effectParticles.js"; import effectTrail from "./effectTrail.js"; import effectTrailTransform from "./effectTrailTransform.js"; import emitter from "./emitter.js"; @@ -14,6 +15,7 @@ import emitterTextStrokeShape from "./emitterTextStrokeShape.js"; export default { effectBubble, + effectParticles, effectTrail, effectTrailTransform, emitter, diff --git a/utils/configs/src/p/index.ts b/utils/configs/src/p/index.ts index ca581acdcba..a69f7506631 100644 --- a/utils/configs/src/p/index.ts +++ b/utils/configs/src/p/index.ts @@ -1,5 +1,11 @@ import parallax from "./parallax.js"; +import pathBranches from "./pathBranches.js"; +import pathBrownian from "./pathBrownian.js"; +import pathGrid from "./pathGrid.js"; +import pathLevy from "./pathLevy.js"; +import pathMaze from "./pathMaze.js"; import pathPolygonMask from "./pathPolygonMask.js"; +import pathSpiral from "./pathSpiral.js"; import pathSvg from "./pathSvg.js"; import pathZigZag from "./pathZigZag.js"; import planes from "./planes.js"; @@ -11,7 +17,13 @@ import pop from "./pop.js"; export default { parallax, + pathBranches, + pathBrownian, + pathGrid, + pathLevy, + pathMaze, pathPolygonMask, + pathSpiral, pathSvg, pathZigZag, planes, diff --git a/utils/configs/src/p/pathBranches.ts b/utils/configs/src/p/pathBranches.ts new file mode 100644 index 00000000000..a3a2e552ae3 --- /dev/null +++ b/utils/configs/src/p/pathBranches.ts @@ -0,0 +1,54 @@ +import { type ISourceOptions, half } from "@tsparticles/engine"; + +const options: ISourceOptions = { + key: "pathBranches", + name: "Path Branches", + particles: { + color: { + value: ["#ffffff", "#ff0000", "#00ff00", "#0000ff"], + }, + move: { + enable: true, + outModes: "out", + speed: { min: 10, max: 15 }, + path: { + enable: true, + options: { + segmentLength: 25, + branchChance: 0.35, + maxAngle: Math.PI * half, + speedVariation: 0.4, + }, + generator: "branchesPathGenerator", + }, + }, + number: { + value: 80, + }, + opacity: { + value: 1, + }, + shape: { + type: "circle", + }, + effect: { + type: "trail", + options: { + trail: { + length: { + min: 30, + max: 50, + }, + }, + }, + }, + size: { + value: 3, + }, + }, + background: { + color: "#000000", + }, +}; + +export default options; diff --git a/utils/configs/src/p/pathBrownian.ts b/utils/configs/src/p/pathBrownian.ts new file mode 100644 index 00000000000..7de51a73ab5 --- /dev/null +++ b/utils/configs/src/p/pathBrownian.ts @@ -0,0 +1,53 @@ +import { type ISourceOptions } from "@tsparticles/engine"; + +const angleDeltaFactor = 18, + options: ISourceOptions = { + key: "pathBrownian", + name: "Path Brownian", + particles: { + color: { + value: ["#ffffff", "#ff0000", "#00ff00", "#0000ff"], + }, + move: { + enable: true, + outModes: "out", + speed: { min: 10, max: 15 }, + path: { + enable: true, + options: { + angleDelta: Math.PI / angleDeltaFactor, + damping: 0.95, + }, + generator: "brownianPathGenerator", + }, + }, + number: { + value: 80, + }, + opacity: { + value: 1, + }, + shape: { + type: "circle", + }, + effect: { + type: "trail", + options: { + trail: { + length: { + min: 30, + max: 50, + }, + }, + }, + }, + size: { + value: 3, + }, + }, + background: { + color: "#000000", + }, + }; + +export default options; diff --git a/utils/configs/src/p/pathGrid.ts b/utils/configs/src/p/pathGrid.ts new file mode 100644 index 00000000000..d73d058731c --- /dev/null +++ b/utils/configs/src/p/pathGrid.ts @@ -0,0 +1,51 @@ +import type { ISourceOptions } from "@tsparticles/engine"; + +const options: ISourceOptions = { + key: "pathGrid", + name: "Path Grid", + particles: { + color: { + value: ["#ffffff", "#ff0000", "#00ff00", "#0000ff"], + }, + move: { + enable: true, + outModes: "out", + speed: { min: 1, max: 3 }, + path: { + enable: true, + options: { + cellSize: 40, + }, + generator: "gridPathGenerator", + }, + }, + number: { + value: 80, + }, + opacity: { + value: 1, + }, + shape: { + type: "circle", + }, + effect: { + type: "trail", + options: { + trail: { + length: { + min: 30, + max: 50, + }, + }, + }, + }, + size: { + value: 3, + }, + }, + background: { + color: "#000000", + }, +}; + +export default options; diff --git a/utils/configs/src/p/pathLevy.ts b/utils/configs/src/p/pathLevy.ts new file mode 100644 index 00000000000..f1f2d7cd33c --- /dev/null +++ b/utils/configs/src/p/pathLevy.ts @@ -0,0 +1,53 @@ +import type { ISourceOptions } from "@tsparticles/engine"; + +const options: ISourceOptions = { + key: "pathLevy", + name: "Path Levy", + particles: { + color: { + value: ["#ffffff", "#ff0000", "#00ff00", "#0000ff"], + }, + move: { + enable: true, + outModes: "out", + speed: { min: 10, max: 15 }, + path: { + enable: true, + options: { + alpha: 1.7, + scale: 0.8, + maxStep: 50, + }, + generator: "levyPathGenerator", + }, + }, + number: { + value: 80, + }, + opacity: { + value: 1, + }, + shape: { + type: "circle", + }, + effect: { + type: "trail", + options: { + trail: { + length: { + min: 30, + max: 50, + }, + }, + }, + }, + size: { + value: 3, + }, + }, + background: { + color: "#000000", + }, +}; + +export default options; diff --git a/utils/configs/src/p/pathMaze.ts b/utils/configs/src/p/pathMaze.ts new file mode 100644 index 00000000000..af25d757abe --- /dev/null +++ b/utils/configs/src/p/pathMaze.ts @@ -0,0 +1,52 @@ +import type { ISourceOptions } from "@tsparticles/engine"; + +const options: ISourceOptions = { + key: "pathMaze", + name: "Path Maze", + particles: { + color: { + value: ["#ffffff", "#ff0000", "#00ff00", "#0000ff"], + }, + move: { + enable: true, + outModes: "out", + speed: { min: 1, max: 3 }, + path: { + enable: true, + options: { + cellSize: 40, + autoMaze: true, + }, + generator: "gridPathGenerator", + }, + }, + number: { + value: 80, + }, + opacity: { + value: 1, + }, + shape: { + type: "circle", + }, + effect: { + type: "trail", + options: { + trail: { + length: { + min: 30, + max: 50, + }, + }, + }, + }, + size: { + value: 3, + }, + }, + background: { + color: "#000000", + }, +}; + +export default options; diff --git a/utils/configs/src/p/pathSpiral.ts b/utils/configs/src/p/pathSpiral.ts new file mode 100644 index 00000000000..a8b9abce8bf --- /dev/null +++ b/utils/configs/src/p/pathSpiral.ts @@ -0,0 +1,53 @@ +import type { ISourceOptions } from "@tsparticles/engine"; + +const options: ISourceOptions = { + key: "pathSpiral", + name: "Path Spiral", + particles: { + color: { + value: ["#ffffff", "#ff0000", "#00ff00", "#0000ff"], + }, + move: { + enable: true, + outModes: "out", + speed: 0, + path: { + enable: true, + options: { + maxRadius: { min: 5, max: 10 }, + angularSpeed: { min: 10, max: 15 }, + radialSpeed: { min: 3, max: 6 }, + }, + generator: "spiralPathGenerator", + }, + }, + number: { + value: 80, + }, + opacity: { + value: 1, + }, + shape: { + type: "circle", + }, + effect: { + type: "trail", + options: { + trail: { + length: { + min: 15, + max: 30, + }, + }, + }, + }, + size: { + value: 3, + }, + }, + background: { + color: "#000000", + }, +}; + +export default options; diff --git a/utils/fractalNoise/CHANGELOG.md b/utils/fractalNoise/CHANGELOG.md index 25807fb67a6..6567c0685fd 100644 --- a/utils/fractalNoise/CHANGELOG.md +++ b/utils/fractalNoise/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/fractal-noise + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/fractal-noise diff --git a/utils/fractalNoise/package.dist.json b/utils/fractalNoise/package.dist.json index 20823b33a3b..0cdbe376a81 100644 --- a/utils/fractalNoise/package.dist.json +++ b/utils/fractalNoise/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/fractal-noise", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles fractal noise library", "homepage": "https://particles.js.org", "repository": { @@ -92,7 +92,7 @@ "module": "esm/index.js", "types": "types/index.d.ts", "dependencies": { - "@tsparticles/smooth-value-noise": "4.0.0-alpha.8" + "@tsparticles/smooth-value-noise": "4.0.0-alpha.14" }, "exports": { ".": { diff --git a/utils/fractalNoise/package.json b/utils/fractalNoise/package.json index 517f63ac07c..ed4dc2cbdcc 100644 --- a/utils/fractalNoise/package.json +++ b/utils/fractalNoise/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/fractal-noise", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles fractal noise path", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/smooth-value-noise": "workspace:4.0.0-alpha.8" + "@tsparticles/smooth-value-noise": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/utils/noiseField/CHANGELOG.md b/utils/noiseField/CHANGELOG.md index b1a04854ec7..184f55cb2e8 100644 --- a/utils/noiseField/CHANGELOG.md +++ b/utils/noiseField/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/noise-field + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/noise-field + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/noise-field + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/noise-field diff --git a/utils/noiseField/package.dist.json b/utils/noiseField/package.dist.json index 88dc02b6351..aac467aacd0 100644 --- a/utils/noiseField/package.dist.json +++ b/utils/noiseField/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/noise-field", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles noise field library", "homepage": "https://particles.js.org", "repository": { @@ -92,7 +92,7 @@ "module": "esm/index.js", "types": "types/index.d.ts", "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "exports": { ".": { diff --git a/utils/noiseField/package.json b/utils/noiseField/package.json index 92b66b4bb50..f1a96763b98 100644 --- a/utils/noiseField/package.json +++ b/utils/noiseField/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/noise-field", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles noise field library", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/utils/noiseField/src/NoiseFieldGenerator.ts b/utils/noiseField/src/NoiseFieldGenerator.ts index a739a779b32..8f8ce283373 100644 --- a/utils/noiseField/src/NoiseFieldGenerator.ts +++ b/utils/noiseField/src/NoiseFieldGenerator.ts @@ -44,13 +44,14 @@ const originCoordinate = 0, }; export abstract class NoiseFieldGenerator implements IMovePathGenerator { - container?: Container; + readonly container: Container; field: Vector[][][]; readonly noiseGen: INoiseGenerator; noiseW: number; readonly options: INoiseFieldOptions; - protected constructor(noiseGen: INoiseGenerator) { + protected constructor(container: Container, noiseGen: INoiseGenerator) { + this.container = container; this.noiseGen = noiseGen; this.field = []; this.noiseW = 0; @@ -71,9 +72,7 @@ export abstract class NoiseFieldGenerator implements IMovePathGenerator { return fieldPoint ? fieldPoint.copy() : Vector.origin; } - init(container: Container): void { - this.container = container; - + init(): void { this._setup(); } @@ -82,10 +81,6 @@ export abstract class NoiseFieldGenerator implements IMovePathGenerator { } update(): void { - if (!this.container) { - return; - } - this._calculateField(); this.noiseW += this.options.increment; @@ -211,13 +206,8 @@ export abstract class NoiseFieldGenerator implements IMovePathGenerator { } private _resetField(): void { - const container = this.container; - - if (!container) { - return; - } - - const sourceOptions = container.actualOptions.particles.move.path.options, + const container = this.container, + sourceOptions = container.actualOptions.particles.move.path.options, { options } = this; options.width = container.canvas.size.width; diff --git a/utils/pathUtils/CHANGELOG.md b/utils/pathUtils/CHANGELOG.md new file mode 100644 index 00000000000..8f61e0c9e3d --- /dev/null +++ b/utils/pathUtils/CHANGELOG.md @@ -0,0 +1,18 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-utils + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/path-utils + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +### Features + +- add full card shape, and utilities for path drawing ([f4a985f](https://github.com/tsparticles/tsparticles/commit/f4a985f092e7da94e6f8bd211c3007246d0488b3)) diff --git a/utils/pathUtils/package.dist.json b/utils/pathUtils/package.dist.json index 2959560d667..560bb8893cf 100644 --- a/utils/pathUtils/package.dist.json +++ b/utils/pathUtils/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/path-utils", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles path utils library", "homepage": "https://particles.js.org", "repository": { @@ -103,7 +103,7 @@ "./package.json": "./package.json" }, "dependencies": { - "@tsparticles/engine": "4.0.0-alpha.8" + "@tsparticles/engine": "4.0.0-alpha.14" }, "type": "module" } diff --git a/utils/pathUtils/package.json b/utils/pathUtils/package.json index a623c9f0b8b..308f1e8ddbe 100644 --- a/utils/pathUtils/package.json +++ b/utils/pathUtils/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/path-utils", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles path utils path", "homepage": "https://particles.js.org", "scripts": { @@ -108,7 +108,7 @@ "./package.json": "./dist/package.json" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14" }, "publishConfig": { "access": "public", diff --git a/utils/perlinNoise/CHANGELOG.md b/utils/perlinNoise/CHANGELOG.md index 78c15a40eb6..43231c46438 100644 --- a/utils/perlinNoise/CHANGELOG.md +++ b/utils/perlinNoise/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/perlin-noise + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/perlin-noise diff --git a/utils/perlinNoise/package.dist.json b/utils/perlinNoise/package.dist.json index e2ff3f0df44..e7b2fb956ec 100644 --- a/utils/perlinNoise/package.dist.json +++ b/utils/perlinNoise/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/perlin-noise", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles perlin noise library", "homepage": "https://particles.js.org", "repository": { diff --git a/utils/perlinNoise/package.json b/utils/perlinNoise/package.json index 0293cf92639..8aa46f20fed 100644 --- a/utils/perlinNoise/package.json +++ b/utils/perlinNoise/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/perlin-noise", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles perlin noise path", "homepage": "https://particles.js.org", "scripts": { diff --git a/utils/simplexNoise/CHANGELOG.md b/utils/simplexNoise/CHANGELOG.md index 3e0a5b11657..c12fdf3fc8f 100644 --- a/utils/simplexNoise/CHANGELOG.md +++ b/utils/simplexNoise/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/simplex-noise + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/simplex-noise + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/simplex-noise diff --git a/utils/simplexNoise/package.dist.json b/utils/simplexNoise/package.dist.json index 23c529e5c24..2cb2a1f2bd8 100644 --- a/utils/simplexNoise/package.dist.json +++ b/utils/simplexNoise/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/simplex-noise", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles simplex noise library", "homepage": "https://particles.js.org", "repository": { diff --git a/utils/simplexNoise/package.json b/utils/simplexNoise/package.json index fa80ed29df1..5caf54e7b2f 100644 --- a/utils/simplexNoise/package.json +++ b/utils/simplexNoise/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/simplex-noise", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles simplex noise library", "homepage": "https://particles.js.org", "scripts": { diff --git a/utils/simplexNoise/src/Classes/SimplexNoise2D.ts b/utils/simplexNoise/src/Classes/SimplexNoise2D.ts index b70ddf75964..6d3c78d1603 100644 --- a/utils/simplexNoise/src/Classes/SimplexNoise2D.ts +++ b/utils/simplexNoise/src/Classes/SimplexNoise2D.ts @@ -101,9 +101,8 @@ export class SimplexNoise2D { } noise(x: number, y: number): number { - const { _gradients2D, _NORM_2D, _SQUISH_2D, _STRETCH_2D, _lookup, _perm, _perm2D } = this; - - const stretchOffset = (x + y) * _STRETCH_2D, + const { _gradients2D, _NORM_2D, _SQUISH_2D, _STRETCH_2D, _lookup, _perm, _perm2D } = this, + stretchOffset = (x + y) * _STRETCH_2D, xs = x + stretchOffset, ys = y + stretchOffset, xsb = Math.floor(xs), @@ -138,9 +137,8 @@ export class SimplexNoise2D { } seed(clientSeed: number): void { - const { _p2D, _base2D, _lookupPairs2D } = this; - - const contributions: Contribution2D[] = []; + const { _p2D, _base2D, _lookupPairs2D } = this, + contributions: Contribution2D[] = []; for (let i = 0; i < _p2D.length; i += 4) { const baseSet = _base2D[_p2D[i]!]!; diff --git a/utils/simplexNoise/src/Classes/SimplexNoise4D.ts b/utils/simplexNoise/src/Classes/SimplexNoise4D.ts index e687f831d15..baf9021065f 100644 --- a/utils/simplexNoise/src/Classes/SimplexNoise4D.ts +++ b/utils/simplexNoise/src/Classes/SimplexNoise4D.ts @@ -2806,9 +2806,8 @@ export class SimplexNoise4D { * @returns the noise value */ noise(x: number, y: number, z: number, w: number): number { - const { _perm, _perm4D, _lookup, _STRETCH_4D, _SQUISH_4D, _gradients4D, _NORM_4D } = this; - - const stretchOffset = (x + y + z + w) * _STRETCH_4D, + const { _perm, _perm4D, _lookup, _STRETCH_4D, _SQUISH_4D, _gradients4D, _NORM_4D } = this, + stretchOffset = (x + y + z + w) * _STRETCH_4D, xs = x + stretchOffset, ys = y + stretchOffset, zs = z + stretchOffset, @@ -2871,9 +2870,8 @@ export class SimplexNoise4D { } seed(clientSeed: number): void { - const { _p4D, _base4D, _lookupPairs4D } = this; - - const contributions: Contribution4D[] = []; + const { _p4D, _base4D, _lookupPairs4D } = this, + contributions: Contribution4D[] = []; for (let i = 0; i < _p4D.length; i += 16) { const baseSet = _base4D[_p4D[i]!]!; diff --git a/utils/smoothValueNoise/CHANGELOG.md b/utils/smoothValueNoise/CHANGELOG.md index 6d31d0f6a28..711642a50bb 100644 --- a/utils/smoothValueNoise/CHANGELOG.md +++ b/utils/smoothValueNoise/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/smooth-value-noise + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/smooth-value-noise diff --git a/utils/smoothValueNoise/package.dist.json b/utils/smoothValueNoise/package.dist.json index ace85e34eb9..db9e884a4dd 100644 --- a/utils/smoothValueNoise/package.dist.json +++ b/utils/smoothValueNoise/package.dist.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/smooth-value-noise", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles smooth value noise library", "homepage": "https://particles.js.org", "repository": { diff --git a/utils/smoothValueNoise/package.json b/utils/smoothValueNoise/package.json index b9d6b079189..7fcf1898174 100644 --- a/utils/smoothValueNoise/package.json +++ b/utils/smoothValueNoise/package.json @@ -1,6 +1,6 @@ { "name": "@tsparticles/smooth-value-noise", - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "description": "tsParticles smooth value noise path", "homepage": "https://particles.js.org", "scripts": { diff --git a/utils/tests/CHANGELOG.md b/utils/tests/CHANGELOG.md index c6c829f1b08..230725a988a 100644 --- a/utils/tests/CHANGELOG.md +++ b/utils/tests/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.0.0-alpha.14](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/tests + +# [4.0.0-alpha.10](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/tests + +# [4.0.0-alpha.9](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2026-02-02) + +**Note:** Version bump only for package @tsparticles/tests + # [4.0.0-alpha.8](https://github.com/tsparticles/tsparticles/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2026-01-22) **Note:** Version bump only for package @tsparticles/tests diff --git a/utils/tests/package.json b/utils/tests/package.json index 73dc5440cec..47c42e3a0ec 100644 --- a/utils/tests/package.json +++ b/utils/tests/package.json @@ -1,7 +1,7 @@ { "name": "@tsparticles/tests", "private": true, - "version": "4.0.0-alpha.8", + "version": "4.0.0-alpha.14", "scripts": { "prettify:ci": "prettier --check ./src", "prettify": "prettier --write ./src", @@ -16,11 +16,11 @@ "test:ci": "vitest run" }, "dependencies": { - "@tsparticles/engine": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-hex-color": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-hsl-color": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-hsv-color": "workspace:4.0.0-alpha.8", - "@tsparticles/plugin-rgb-color": "workspace:4.0.0-alpha.8" + "@tsparticles/engine": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-hex-color": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-hsl-color": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-hsv-color": "workspace:4.0.0-alpha.14", + "@tsparticles/plugin-rgb-color": "workspace:4.0.0-alpha.14" }, "type": "module" } diff --git a/utils/tests/src/tests/ColorUtils.ts b/utils/tests/src/tests/ColorUtils.ts index 175acc394e0..7d8a84c2827 100644 --- a/utils/tests/src/tests/ColorUtils.ts +++ b/utils/tests/src/tests/ColorUtils.ts @@ -223,16 +223,15 @@ describe("ColorUtils", async () => { it("hsl value zero saturation", () => { const color: IHsl = { - h: 180, - l: 50, - s: 0, - }; - - const grey: IRgb = { - b: 128, - g: 128, - r: 128, - }; + h: 180, + l: 50, + s: 0, + }, + grey: IRgb = { + b: 128, + g: 128, + r: 128, + }; expect(hslToRgb(color)).to.include(grey).and.not.be.undefined.and.not.be.null; }); @@ -241,13 +240,12 @@ describe("ColorUtils", async () => { describe("hslaToRgba", () => { it("hsl value", () => { const color: IHsla = { - a: 1, - h: 0, - l: 50, - s: 100, - }; - - const rgb = hslaToRgba(color); + a: 1, + h: 0, + l: 50, + s: 100, + }, + rgb = hslaToRgba(color); console.log("rgb", rgb, red); @@ -312,10 +310,9 @@ describe("ColorUtils", async () => { // }); describe("getRandomRgbColor", () => { - const checkRange = (n: number, min?: number): boolean => n >= (min ?? 0) && n < 256; - - const checkColor = (rgb: IRgb, min?: number): boolean => - checkRange(rgb.r, min) && checkRange(rgb.g, min) && checkRange(rgb.b, min); + const checkRange = (n: number, min?: number): boolean => n >= (min ?? 0) && n < 256, + checkColor = (rgb: IRgb, min?: number): boolean => + checkRange(rgb.r, min) && checkRange(rgb.g, min) && checkRange(rgb.b, min); it("totally random color", () => { expect(getRandomRgbColor()).to.satisfy((rgb: IRgb) => checkColor(rgb)).and.not.be.undefined.and.not.be.null; diff --git a/utils/tests/src/tests/Options.ts b/utils/tests/src/tests/Options.ts index f31c9fb9621..2766dfb9359 100644 --- a/utils/tests/src/tests/Options.ts +++ b/utils/tests/src/tests/Options.ts @@ -542,11 +542,9 @@ describe("Options tests", () => { value: ["#5bc0eb", "#fde74c", "#9bc53d", "#e55934", "#fa7921"], }); - const otherOptions = new OptionsColor(); - - const copyOptions = OptionsColor.create(otherOptions, colorOptions); - - const copyOptions2 = OptionsColor.create(otherOptions, copyOptions); + const otherOptions = new OptionsColor(), + copyOptions = OptionsColor.create(otherOptions, colorOptions), + copyOptions2 = OptionsColor.create(otherOptions, copyOptions); expect(colorOptions.value).to.be.an("array"); expect(copyOptions.value).to.be.an("array"); diff --git a/utils/tests/src/tests/Particle.ts b/utils/tests/src/tests/Particle.ts index 9edb896308a..0c84572ef72 100644 --- a/utils/tests/src/tests/Particle.ts +++ b/utils/tests/src/tests/Particle.ts @@ -12,16 +12,15 @@ describe("Particle", async () => { globalThis.window = TestWindow; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-explicit-any - const canvas = createCustomCanvas(width, height) as any; - - const container = await tsParticles.load({ - id: "test-particle", - options: { - autoPlay: false, - }, - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - element: canvas, - }); + const canvas = createCustomCanvas(width, height) as any, + container = await tsParticles.load({ + id: "test-particle", + options: { + autoPlay: false, + }, + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + element: canvas, + }); if (!container) { throw new Error("test container not initialized"); diff --git a/utils/tests/src/tests/Utils.ts b/utils/tests/src/tests/Utils.ts index af82eb2a442..f3f64f1aa97 100644 --- a/utils/tests/src/tests/Utils.ts +++ b/utils/tests/src/tests/Utils.ts @@ -23,12 +23,12 @@ import { describe, expect, it } from "vitest"; describe("Utils", () => { describe("clamp", () => { - const min = 1; - const max = 10; + const min = 1, + max = 10; it("should return minimum when number is less than minimum", () => { - const num = -5; - const clampedNumber = clamp(num, min, max); + const num = -5, + clampedNumber = clamp(num, min, max); expect(clampedNumber).to.equal(min); }); @@ -40,8 +40,8 @@ describe("Utils", () => { }); it("should return number when number is between minimum and maximum", () => { - const num = 5; - const clampedNumber = clamp(num, min, max); + const num = 5, + clampedNumber = clamp(num, min, max); expect(clampedNumber).to.equal(num); }); @@ -53,16 +53,16 @@ describe("Utils", () => { }); it("should return maximum when number is greater than maximum", () => { - const num = 15; - const clampedNumber = clamp(num, min, max); + const num = 15, + clampedNumber = clamp(num, min, max); expect(clampedNumber).to.equal(max); }); }); describe("isInArray", () => { - const numericArray: number[] = [1, 2, 3, Math.PI, Math.E]; - const stringArray: string[] = ["lorem", "ipsum", "dolor"]; + const numericArray: number[] = [1, 2, 3, Math.PI, Math.E], + stringArray: string[] = ["lorem", "ipsum", "dolor"]; // Numeric @@ -106,46 +106,46 @@ describe("Utils", () => { }); describe("mix", () => { - const comp1 = 5; - const comp2 = 10; - const size = 10; + const comp1 = 5, + comp2 = 10, + size = 10; it("should return the average when weights are identical", () => { - const weight1 = Math.floor(getRandom() * (size - 1) + 1); - const weight2 = weight1; - const mean = Math.floor((comp1 + comp2) / 2); + const weight1 = Math.floor(getRandom() * (size - 1) + 1), + weight2 = weight1, + mean = Math.floor((comp1 + comp2) / 2); expect(mix(comp1, comp2, weight1, weight2)).to.be.equal(mean); }); it("should return comp1 when weight2 is 0 (and weight1 > 0)", () => { - const weight1 = Math.floor(getRandom() * (size - 1) + 1); - const weight2 = 0; + const weight1 = Math.floor(getRandom() * (size - 1) + 1), + weight2 = 0; expect(mix(comp1, comp2, weight1, weight2), `weight 1: ${weight1.toString()}`).to.be.equal(Math.floor(comp1)); }); it("should return comp2 when weight1 is 0 (and weight2 > 0)", () => { - const weight1 = 0; - const weight2 = Math.floor(getRandom() * (size - 1) + 1); + const weight1 = 0, + weight2 = Math.floor(getRandom() * (size - 1) + 1); expect(mix(comp1, comp2, weight1, weight2)).to.be.equal(Math.floor(comp2)); }); it("should return the expected weighted-average when weights differ", () => { - const comp1 = 6; - const comp2 = 9; - const weight1 = 2; - const weight2 = 1; + const comp1 = 6, + comp2 = 9, + weight1 = 2, + weight2 = 1; expect(mix(comp1, comp2, weight1, weight2)).to.be.equal(7); }); it("should handle negative components", () => { - const comp1 = -6; - const comp2 = -9; - const weight1 = 2; - const weight2 = 1; + const comp1 = -6, + comp2 = -9, + weight1 = 2, + weight2 = 1; expect(mix(comp1, comp2, weight1, weight2)).to.be.equal(-7); }); @@ -153,8 +153,8 @@ describe("Utils", () => { describe("arrayRandomIndex", () => { it("should always return an index that is not out of the bounds of the array", () => { - const array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; - const randomIndex = arrayRandomIndex(array); + const array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], + randomIndex = arrayRandomIndex(array); expect(randomIndex % 1).to.equal(0); // Make sure it is an integer expect(randomIndex).to.be.at.least(0); @@ -164,9 +164,9 @@ describe("Utils", () => { }); describe("itemFromArray", () => { - const numericArray = [1, 2, 3, Math.PI, Math.E]; - const stringArray = ["lorem", "ipsum", "dolor"]; - const objectArray = [{ x: 1 }, { y: 2 }, { z: 3 }]; + const numericArray = [1, 2, 3, Math.PI, Math.E], + stringArray = ["lorem", "ipsum", "dolor"], + objectArray = [{ x: 1 }, { y: 2 }, { z: 3 }]; it("should always return a random item from a numeric array", () => { const randomItem = itemFromArray(numericArray); @@ -204,70 +204,70 @@ describe("Utils", () => { describe("randomInRange", () => { it("should generate a random number in the specified range, range in positive reals", () => { - const min = 1; - const max = 10; - const randomNumber = randomInRangeValue(setRangeValue(min, max)); + const min = 1, + max = 10, + randomNumber = randomInRangeValue(setRangeValue(min, max)); expect(randomNumber).to.be.within(min, max); }); it("should generate a random number in the specified range, range in negative reals", () => { - const min = -10; - const max = -1; - const randomNumber = randomInRangeValue(setRangeValue(min, max)); + const min = -10, + max = -1, + randomNumber = randomInRangeValue(setRangeValue(min, max)); expect(randomNumber).to.be.within(min, max); }); it("should generate a random number in the specified range, range crossing negative and positive reals", () => { - const min = -10; - const max = 10; - const randomNumber = randomInRangeValue(setRangeValue(min, max)); + const min = -10, + max = 10, + randomNumber = randomInRangeValue(setRangeValue(min, max)); expect(randomNumber).to.be.within(min, max); }); it("should set min as 0 when max equals to min", () => { - const min = 10; - const max = 10; - const randomNumber = randomInRangeValue(setRangeValue(min, max)); + const min = 10, + max = 10, + randomNumber = randomInRangeValue(setRangeValue(min, max)); expect(randomNumber).to.be.within(0, max); }); }); describe("getDistanceBetweenCoordinates", () => { - const point = { x: 1, y: 1 }; - const precision = 1e-10; + const point = { x: 1, y: 1 }, + precision = 1e-10; it("should return 0 whenever points are identical", () => { expect(getDistance(point, point)).to.be.closeTo(0, precision); }); it("should calculate correct distance when both points are in first quadrant", () => { - const pointA = point; - const pointB = { x: 2, y: 2 }; + const pointA = point, + pointB = { x: 2, y: 2 }; expect(getDistance(pointA, pointB)).to.be.closeTo(Math.SQRT2, precision); }); it("should calculate correct distance when one point is in first quadrant and one is in second quadrant", () => { - const pointA = point; - const pointB = { x: -1, y: 1 }; + const pointA = point, + pointB = { x: -1, y: 1 }; expect(getDistance(pointA, pointB)).to.be.closeTo(2, precision); }); it("should calculate correct distance when one point is in first quadrant and one is in third quadrant", () => { - const pointA = point; - const pointB = { x: -1, y: -1 }; + const pointA = point, + pointB = { x: -1, y: -1 }; expect(getDistance(pointA, pointB)).to.be.closeTo(2 * Math.SQRT2, precision); }); it("should return the same distance regardless of the order of the points", () => { - const pointA = point; - const pointB = { x: -1, y: -1 }; + const pointA = point, + pointB = { x: -1, y: -1 }; expect(getDistance(pointA, pointB)).to.equal(getDistance(pointB, pointA)); }); @@ -275,15 +275,15 @@ describe("Utils", () => { describe("calculateBounds", () => { it("should return the correct bounds", () => { - const point = { x: 0, y: 0 }; - const radius = 1; - const calculatedBounds = calculateBounds(point, radius); - const expectedBounds = { - bottom: radius, // On a display, going down the screen is actually increasing in y - left: -radius, - right: radius, - top: -radius, // On a display, going up the screen is actually decreasing in y - }; + const point = { x: 0, y: 0 }, + radius = 1, + calculatedBounds = calculateBounds(point, radius), + expectedBounds = { + bottom: radius, // On a display, going down the screen is actually increasing in y + left: -radius, + right: radius, + top: -radius, // On a display, going up the screen is actually decreasing in y + }; expect(calculatedBounds).to.eql(expectedBounds); }); @@ -404,108 +404,108 @@ describe("Utils", () => { it("should return true when direction is top and the bounds do not intersect the screen and are below", () => { const bounds = { - bottom: dimension.height + 2, - top: dimension.height + 1, - left: 100, - right: 101, - }; - const direction = OutModeDirection.top; + bottom: dimension.height + 2, + top: dimension.height + 1, + left: 100, + right: 101, + }, + direction = OutModeDirection.top; expect(areBoundsInside(bounds, dimension, Vector.origin, direction)).to.be.true; }); it("should return false when direction is top and the bounds do not intersect the screen and are above", () => { const bounds = { - bottom: -1, - top: -2, - left: 100, - right: 101, - }; - const direction = OutModeDirection.top; + bottom: -1, + top: -2, + left: 100, + right: 101, + }, + direction = OutModeDirection.top; expect(areBoundsInside(bounds, dimension, Vector.origin, direction)).to.be.false; }); it("should return true when direction is bottom and the bounds do not intersect the screen and are above", () => { const bounds = { - bottom: -1, - top: -2, - left: 100, - right: 101, - }; - const direction = OutModeDirection.bottom; + bottom: -1, + top: -2, + left: 100, + right: 101, + }, + direction = OutModeDirection.bottom; expect(areBoundsInside(bounds, dimension, Vector.origin, direction)).to.be.true; }); it("should return false when direction is bottom and the bounds do not intersect the screen and are below", () => { const bounds = { - bottom: dimension.height + 2, - top: dimension.height + 1, - left: 100, - right: 101, - }; - const direction = OutModeDirection.bottom; + bottom: dimension.height + 2, + top: dimension.height + 1, + left: 100, + right: 101, + }, + direction = OutModeDirection.bottom; expect(areBoundsInside(bounds, dimension, Vector.origin, direction)).to.be.false; }); it("should return true when direction is left and the bounds do not intersect the screen and are to the right", () => { const bounds = { - bottom: 101, - top: 100, - left: dimension.width + 1, - right: dimension.width + 2, - }; - const direction = OutModeDirection.left; + bottom: 101, + top: 100, + left: dimension.width + 1, + right: dimension.width + 2, + }, + direction = OutModeDirection.left; expect(areBoundsInside(bounds, dimension, Vector.origin, direction)).to.be.true; }); it("should return false when direction is left and the bounds do not intersect the screen and are to the left", () => { const bounds = { - bottom: 101, - top: 100, - left: -2, - right: -1, - }; - const direction = OutModeDirection.left; + bottom: 101, + top: 100, + left: -2, + right: -1, + }, + direction = OutModeDirection.left; expect(areBoundsInside(bounds, dimension, Vector.origin, direction)).to.be.false; }); it("should return true when direction is right and the bounds do not intersect the screen and are to the left", () => { const bounds = { - bottom: 101, - top: 100, - left: -2, - right: -1, - }; - const direction = OutModeDirection.right; + bottom: 101, + top: 100, + left: -2, + right: -1, + }, + direction = OutModeDirection.right; expect(areBoundsInside(bounds, dimension, Vector.origin, direction)).to.be.true; }); it("should return false when direction is right and the bounds do not intersect the screen and are to the right", () => { const bounds = { - bottom: 101, - top: 100, - left: dimension.width + 1, - right: dimension.width + 2, - }; - const direction = OutModeDirection.right; + bottom: 101, + top: 100, + left: dimension.width + 1, + right: dimension.width + 2, + }, + direction = OutModeDirection.right; expect(areBoundsInside(bounds, dimension, Vector.origin, direction)).to.be.false; }); }); describe("isPointInside", () => { - const dimension = { width: 1920, height: 1080 }; - const centerPoint = { x: dimension.width / 2, y: dimension.height / 2 }; - const topPoint = { x: dimension.width / 2, y: 0 }; - const bottomPoint = { x: dimension.width / 2, y: dimension.height }; - const leftPoint = { x: 0, y: dimension.height / 2 }; - const rightPoint = { x: dimension.width, y: dimension.height / 2 }; + const dimension = { width: 1920, height: 1080 }, + centerPoint = { x: dimension.width / 2, y: dimension.height / 2 }, + topPoint = { x: dimension.width / 2, y: 0 }, + bottomPoint = { x: dimension.width / 2, y: dimension.height }, + leftPoint = { x: 0, y: dimension.height / 2 }, + rightPoint = { x: dimension.width, y: dimension.height / 2 }; it("should return true when the point lies inside the screen, no radius", () => { expect(isPointInside(centerPoint, dimension, Vector.origin)).to.be.true;