diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml
index 723af3e..37de96c 100644
--- a/.github/workflows/nodejs.yml
+++ b/.github/workflows/nodejs.yml
@@ -3,14 +3,16 @@ run-name: Node.js โฌข CI
on:
push:
- branches: [develop]
+ branches: [master]
+ pull_request:
+ branches: [master]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
- node-version: [22.x]
+ node-version: [24.x]
name: Node.js ${{ matrix.node-version }} ๐
steps:
@@ -45,6 +47,10 @@ jobs:
run: |
pnpm install --frozen-lockfile
+ - name: Typecheck ๐
+ run: |
+ pnpm run typecheck
+
- name: Run tests ๐งช
run: |
make test
diff --git a/.gitignore b/.gitignore
index 371168f..17c7e58 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@
.vscode
bin
node_modules
+*.tsbuildinfo
diff --git a/.npmrc b/.npmrc
index 8e14603..1b78f1c 100644
--- a/.npmrc
+++ b/.npmrc
@@ -1,3 +1,2 @@
save-exact=true
legacy-peer-deps=true
-ignore-scripts=true #giflossy, zopflipng
diff --git a/.nvmrc b/.nvmrc
index 3d3475a..dbf2bf2 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
-v22.5.1
+v26.8.1
diff --git a/.prettierignore b/.prettierignore
deleted file mode 100644
index 3b3cbb5..0000000
--- a/.prettierignore
+++ /dev/null
@@ -1,12 +0,0 @@
-!**/.eslintrc*
-.gitignore
-.hooks/*
-.husky/*
-*.ico
-*.js
-*.lock
-*.log
-*.md
-*.svg
-dist
-node_modules*
diff --git a/.prettierrc b/.prettierrc
deleted file mode 100644
index 41d3eeb..0000000
--- a/.prettierrc
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "$schema": "https://json.schemastore.org/prettierrc",
- "arrowParens": "always",
- "bracketSpacing": true,
- "bracketSameLine": false,
- "printWidth": 100,
- "proseWrap": "preserve",
- "quoteProps": "as-needed",
- "semi": false,
- "singleQuote": true,
- "tabWidth": 2,
- "trailingComma": "all",
- "useTabs": false,
- "endOfLine": "lf"
-}
diff --git a/.swcrc b/.swcrc
index 3e07533..b7ff707 100644
--- a/.swcrc
+++ b/.swcrc
@@ -1,5 +1,5 @@
{
- "$schema": "https://json.schemastore.org/swcrc",
+ "$schema": "https://swc.rs/schema.json",
"jsc": {
"target": "esnext",
"parser": {
diff --git a/CLAUDE.md b/CLAUDE.md
new file mode 100644
index 0000000..fba8e8b
--- /dev/null
+++ b/CLAUDE.md
@@ -0,0 +1,130 @@
+# CLAUDE.md
+
+This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
+
+## Project Overview
+
+DVX CLI is a TypeScript-based command-line tool for image processing and asset optimization in frontend development. It provides utilities for image minification, format conversion, resizing, HTML validation, and CSS source map cleaning.
+
+## Build & Development Commands
+
+### Building the project
+
+```bash
+pnpm run build
+```
+
+This compiles TypeScript to JavaScript using SWC, outputs to `bin/` directory, and replaces import paths.
+
+### Clean build artifacts
+
+```bash
+pnpm run build:clean
+```
+
+### Typechecking
+
+```bash
+pnpm run typecheck
+```
+
+SWC does not typecheck during build โ run this before committing. CI runs it too.
+
+### Running tests
+
+```bash
+pnpm run test # Run all tests (unit + features)
+pnpm run test:unit # Run only unit tests
+make test # Alternative using Makefile
+```
+
+### Running a single test file
+
+```bash
+node --import @swc-node/register/esm-register --test tests/lib/file.test.ts
+```
+
+### Code formatting
+
+```bash
+# Project uses Biome for formatting and linting
+# Configuration in biome.json
+```
+
+### Rebuilding native dependencies
+
+```bash
+pnpm run rebuild # Rebuild native image processing binaries
+```
+
+### Dependency management
+
+```bash
+pnpm run package:update # Update dependencies
+make deps/update # Comprehensive dependency update with deduplication
+```
+
+## Code Architecture
+
+### Entry Point
+
+- `src/index.ts` - CLI entry: configures yargs and auto-registers commands via `.commandDir()`
+- `bin/index.js` - Built entry point for the CLI binary
+
+### Command Structure
+
+Commands are auto-discovered from `src/commands/` (recursively) using the pattern `*.command.ts`. Each command is a module-style yargs command exporting `command`, `description`, `builder`, and `handler`. Handlers must return/await their promise so yargs waits for completion.
+
+Available command categories:
+
+- **Images**: `img:minify`, `img:towebp`, `img:resize`, `img:optimize` (all support `--quality high|medium|low`)
+- **HTML**: `html:validate` (using HTMLHint)
+- **Files**: `files:clean-sourcemaps`
+
+### Key Directories
+
+- `src/commands/` - Command implementations organized by category
+- `src/shared/domain/` - Pure utilities (file ops, worker runner, quality presets, formatting)
+- `src/shared/infrastructure/` - Side-effectful services (logger, notifications, config)
+- `tests/` - Test files using Node.js native test runner
+- `bin/` - Compiled output directory
+
+### Architecture Patterns
+
+- Module-style yargs commands loaded with `.commandDir()`
+- Worker-based processing for image operations: helper (`image-minifier.ts`) chunks files per CPU and spawns a `*.job.ts` worker per chunk via `runWorker`; workers post `WorkerResult` (`processed`, `endTime`, optional `bytesIn`/`bytesOut`)
+- Quality presets shared across jobs in `src/shared/domain/quality-presets.ts`
+
+### Testing Structure
+
+- Uses Node.js native test runner (`node:test`)
+- Test files follow `*.test.ts` pattern
+- Tests use `node:assert/strict` for assertions
+- Test stubs in `tests/stubs/` directory
+
+## Key Dependencies
+
+### Runtime
+
+- `yargs` - CLI argument parsing
+- `imagemin` ecosystem - Image optimization
+- `sharp` - Image processing fallback
+- `htmlhint` - HTML validation
+
+### Build
+
+- `@swc/core` - TypeScript compilation
+- `@swc/cli` - SWC command-line interface
+- `@swc-node/register` - SWC Node.js loader for tests
+- `replace-in-file` - Post-build path replacement
+
+## Development Notes
+
+- Uses ES modules (`"type": "module"` in package.json)
+- Import paths use `#/` prefix that gets replaced during build
+- Node.js >=24 required (`engineStrict: true`)
+- Package manager: pnpm >=11
+- Build target: ESNext with SWC compiler
+- Code formatting with Biome (configuration in biome.json)
+- Native dependencies require periodic rebuilding (`pnpm run rebuild`)
+- Make targets available for common tasks (test, dependency updates)
diff --git a/Makefile b/Makefile
index 4390627..5d7eee8 100644
--- a/Makefile
+++ b/Makefile
@@ -1,3 +1,4 @@
+SHELL:=$(shell which bash)
MAKEFLAGS += -s
current_work_directory := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
@@ -23,11 +24,31 @@ help: ## ๐ Display help message with descriptions of all available commands.
.PHONY: deps/update
.SILENT: deps/update
deps/update: ## โฌ๏ธ Update all project dependencies to their latest versions.
- $(print_message) "updating dependencies"
- ncu -u && ncu --target minor -u && ncu --target patch -u
- corepack up
- NODE_ENV= pnpm install
- NODE_ENV= pnpm audit --fix
+ set -eo pipefail
+ $(print_message) "bump dependencies"
+ PNPM_QUIET_FLAGS="--config.loglevel=error"
+ NODE_ENV= pnpm audit || true
+ find . -type d -name node_modules -not -path '*/.git/*' -prune -exec rm -rf '{}' +
+ rm -f pnpm-lock.yaml
+ CI=true corepack use pnpm@latest-11
+ if command -v ncu &>/dev/null; then
+ NCU_CMD=ncu
+ elif [ -f ./node_modules/.bin/ncu ]; then
+ NCU_CMD=./node_modules/.bin/ncu
+ else
+ echo "ncu (npm-check-updates) not found. Install with one of:"
+ echo " npm i -g npm-check-updates"
+ echo " pnpm add -g npm-check-updates"
+ echo " pnpm add -O npm-check-updates # optional/local"
+ exit 1
+ fi
+ $$NCU_CMD --target patch -u && $$NCU_CMD --target minor -u && $$NCU_CMD -u
+ NODE_ENV= pnpm install --no-frozen-lockfile $$PNPM_QUIET_FLAGS
+ NODE_ENV= pnpm up --recursive $$PNPM_QUIET_FLAGS
+ NODE_ENV= pnpm audit --fix=update $$PNPM_QUIET_FLAGS
+ NODE_ENV= pnpm dedupe $$PNPM_QUIET_FLAGS
+ NODE_ENV= pnpm rebuild @swc-node/register @swc/cli @swc/core sharp
+ NODE_ENV= pnpm audit --ignore-unfixable
.PHONY: test
.SILENT: test
diff --git a/NOTES.md b/NOTES.md
index ee626f0..4cdddda 100644
--- a/NOTES.md
+++ b/NOTES.md
@@ -270,3 +270,15 @@ https://nodejs.org/api/process.html#processargv0
node ~/src/github.com/devlegacy/dvx-cli html:validate
@squoosh/lib
imagemin-svgo
+
+bun pm untrusted
+bun pm trust
+
+pnpm approve-builds
+
+img:minify open TODOs:
+
+- Skip unchanged files โ no mtime/hash check; reruns on already-optimized images
+- Progress indicator โ large batches (24+ files) have no ETA or count
+- Results table โ before/after per-file KB would help identify worst offenders
+- exclude only filters the resizer โ minifier still processes excluded patterns (inconsistent with docs)
diff --git a/README.md b/README.md
index 23fff4d..718f5d5 100644
--- a/README.md
+++ b/README.md
@@ -2,6 +2,15 @@
๐ฆ Install
+### macOS prerequisites
+
+Some optimizers build native binaries from source and need these libraries:
+
+```sh
+brew install libpng libimagequant
+brew link libpng
+```
+
### Global installation
To install the CLI tool globally, run the following command:
diff --git a/biome.json b/biome.json
new file mode 100644
index 0000000..0dbd51a
--- /dev/null
+++ b/biome.json
@@ -0,0 +1,40 @@
+{
+ "$schema": "https://biomejs.dev/schemas/latest/schema.json",
+ "formatter": {
+ "enabled": true,
+ "indentStyle": "space",
+ "lineEnding": "lf",
+ "indentWidth": 2,
+ "lineWidth": 120
+ },
+ "linter": {
+ "enabled": true,
+ "rules": {
+ "recommended": true
+ }
+ },
+ "assist": {
+ "enabled": true,
+ "actions": {
+ "source": {
+ "organizeImports": "on"
+ }
+ }
+ },
+ "files": {
+ "ignoreUnknown": false
+ },
+ "vcs": {
+ "enabled": true,
+ "clientKind": "git",
+ "useIgnoreFile": true
+ },
+ "javascript": {
+ "formatter": {
+ "quoteStyle": "single",
+ "semicolons": "asNeeded",
+ "trailingCommas": "all",
+ "expand": "always"
+ }
+ }
+}
diff --git a/package.json b/package.json
index f7a66fc..4627fdb 100644
--- a/package.json
+++ b/package.json
@@ -8,16 +8,18 @@
"dvx": "bin/index.js"
},
"imports": {
- "#@/*": "./*"
+ "#/*": "./*"
},
"type": "module",
+ "packageManager": "pnpm@12.2.1",
"scripts": {
"prebuild": "node --run build:clean",
- "build": "swc ./src/ --out-dir ./bin/ --strip-leading-paths && replace-in-file \"/#@/src//g\" \"#@/bin/\" \"./bin/**/*.js\" --isRegex",
+ "build": "swc ./src/ --out-dir ./bin/ --strip-leading-paths && replace-in-file \"/#/src//g\" \"#/bin/\" \"./bin/**/*.js\" --isRegex && chmod +x ./bin/*",
"build:clean": "rm -Rf ./bin",
"test": "pnpm run test:unit && pnpm run test:features",
"test:features": "true",
"test:unit": "node --import @swc-node/register/esm-register --test ./tests/**/*.test.ts",
+ "typecheck": "tsc --noEmit",
"package:update": "ncu -u && pnpm i && pnpm audit --fix"
},
"keywords": [
@@ -32,50 +34,46 @@
"assets/icons",
"README.md"
],
- "author": "Samuel R. ",
+ "author": "Samuel R. ",
"private": false,
"devDependencies": {
- "@swc-node/register": "1.10.9",
- "@swc/cli": "0.4.0",
- "@swc/core": "1.7.5",
+ "@swc-node/register": "1.12.1",
+ "@swc/cli": "0.8.1",
+ "@swc/core": "1.16.1",
"@types/htmlhint": "1.1.5",
- "@types/imagemin": "9.0.0",
+ "@types/imagemin": "9.0.1",
+ "@types/imagemin-gifsicle": "7.0.4",
"@types/imagemin-jpegtran": "5.0.4",
"@types/imagemin-mozjpeg": "8.0.4",
- "@types/imagemin-svgo": "10.0.5",
+ "@types/imagemin-svgo": "11.0.0",
"@types/imagemin-zopfli": "7.0.4",
- "@types/node": "22.1.0",
- "@types/node-notifier": "8.0.5",
- "@types/shelljs": "0.8.15",
- "@types/yargs": "17.0.32",
- "replace-in-file": "8.1.0",
- "ts-node": "10.9.2",
- "type-fest": "4.23.0",
- "typescript": "5.5.4"
+ "@types/node": "26.4.0",
+ "@types/yargs": "17.0.35",
+ "replace-in-file": "9.0.0",
+ "type-fest": "5.9.0",
+ "@typescript/native": "npm:typescript@7.0.2",
+ "typescript": "npm:@typescript/typescript6@6.0.2"
},
"dependencies": {
- "htmlhint": "1.1.4",
+ "htmlhint": "1.9.2",
"htmlhint-stylish": "1.0.3",
- "imagemin": "9.0.0",
- "imagemin-giflossy": "5.1.10",
- "imagemin-jpegtran": "7.0.0",
+ "imagemin": "9.0.1",
+ "imagemin-gifsicle": "7.0.0",
+ "imagemin-jpegtran": "8.0.0",
"imagemin-mozjpeg": "10.0.0",
"imagemin-pngquant": "10.0.0",
- "imagemin-webp": "8.0.0",
+ "imagemin-svgo": "12.0.0",
"imagemin-zopfli": "7.0.0",
- "is-svg": "5.0.1",
- "node-notifier": "10.0.1",
- "sharp": "0.33.4",
- "shelljs": "0.8.5",
- "svgo": "3.3.2",
- "yargs": "17.7.2"
+ "pino": "10.3.1",
+ "pino-pretty": "13.1.3",
+ "sharp": "0.35.4",
+ "yargs": "18.1.0"
},
"engines": {
- "node": ">=22.5.1",
- "npm": ">=10.8.2",
- "pnpm": ">=9.6.0"
+ "node": ">=v24",
+ "npm": ">=11",
+ "pnpm": ">=11"
},
- "engineStrict": true,
"repository": {
"type": "git",
"url": "git+https://github.com/devlegacy/dvx-cli.git"
@@ -83,20 +81,5 @@
"bugs": {
"url": "https://github.com/devlegacy/dvx-cli/issues"
},
- "homepage": "https://github.com/devlegacy/dvx-cli#readme",
- "packageManager": "pnpm@9.6.0+sha512.38dc6fba8dba35b39340b9700112c2fe1e12f10b17134715a4aa98ccf7bb035e76fd981cf0bb384dfa98f8d6af5481c2bef2f4266a24bfa20c34eb7147ce0b5e",
- "pnpm": {
- "overrides": {
- "braces@<2.3.1": ">=2.3.1",
- "tunnel-agent@<0.6.0": ">=0.6.0",
- "got@<11.8.5": ">=11.8.5",
- "decompress@<4.2.1": ">=4.2.1",
- "http-cache-semantics@<4.1.1": ">=4.1.1",
- "semver-regex@<3.1.3": ">=3.1.3",
- "semver-regex@<3.1.4": ">=3.1.4",
- "trim-newlines@<3.0.1": ">=3.0.1",
- "semver@<5.7.2": ">=5.7.2",
- "braces@<3.0.3": ">=3.0.3"
- }
- }
+ "homepage": "https://github.com/devlegacy/dvx-cli#readme"
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 79149c5..25af380 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,3 +1,104 @@
+---
+lockfileVersion: '9.0'
+
+importers:
+
+ .:
+ configDependencies: {}
+ packageManagerDependencies:
+ pnpm:
+ specifier: 12.2.1
+ version: 12.2.1
+
+packages:
+
+ '@pnpm/exe.darwin-arm64@12.2.1':
+ resolution: {integrity: sha512-efC1yfz2xbyHiMLrQAYtnoo5XP20LeAiYYcyL1962qQagZrMXIB0BoQYeZoPTLggLh0Q4MD7jpZUInU5fWxCgQ==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@pnpm/exe.darwin-x64@12.2.1':
+ resolution: {integrity: sha512-0bloFmxrvYY5LYex5V6SZySwg+egBk0pOW+YUeOm9fiG2U1wv+qRVLBOUvIzLAeJE7vBlAzxUwXkQAYtr12n+Q==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@pnpm/exe.linux-arm64-musl@12.2.1':
+ resolution: {integrity: sha512-AZl7apVZC4TV1/vTp/bS16XUsHeqx9AHsU4V55joiGR+iR6vl+WF0WlGvGCTjqjICS4q/kThpgNrtG8aqQ9seQ==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@pnpm/exe.linux-arm64@12.2.1':
+ resolution: {integrity: sha512-S36+tMEGrPz3nwtfFU9kYxbHoi8sV7WJfMO9njEL4jRaShTNaLRERMAqyI2DUCiA5QCr6/a50lt4+pKCV2mCvw==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@pnpm/exe.linux-x64-musl@12.2.1':
+ resolution: {integrity: sha512-4MQClkAk1em55LFZJpeIqb7j+gEqCgX8yC42j9DFWL42q1uMX1e1tvTy2Dtd4NoWQqgdkLxOStZ+D9CYC+28ow==}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@pnpm/exe.linux-x64@12.2.1':
+ resolution: {integrity: sha512-A/AlR71Leph7qgB3ThSU9yU/vLfre4HmP6nbt3/qt51fzAjQ0xuq7j+cw0f1yDskzOsGzmo5uD6ruefCwLK5uQ==}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@pnpm/exe.win32-arm64@12.2.1':
+ resolution: {integrity: sha512-TEGUmroT6NGfo2O2+tHK9Zr1lhP1zLzpwx+QAQV19l8V4ljUoMfz8Os5V9zzNCtIpzyKcK7SuG7fkVbxFgRMzg==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@pnpm/exe.win32-x64@12.2.1':
+ resolution: {integrity: sha512-V2Q+AF8fCsw8/CC3bWF8kopOmH0aAjgk9m7H7uAQNulOYIJs9YJBiAlgByswmt+igV9axc4dBI//ZlK2NKpDcw==}
+ cpu: [x64]
+ os: [win32]
+
+ pnpm@12.2.1:
+ resolution: {integrity: sha512-9Vymiqy561q2nGb4KKmK+JoyKGcDrvH42hMcp+q01nfzS/qF4YZGepGcB5nfi29KokD33CkZszsycxkBBBYmFg==}
+ engines: {node: '>=18.*'}
+ hasBin: true
+
+snapshots:
+
+ '@pnpm/exe.darwin-arm64@12.2.1':
+ optional: true
+
+ '@pnpm/exe.darwin-x64@12.2.1':
+ optional: true
+
+ '@pnpm/exe.linux-arm64-musl@12.2.1':
+ optional: true
+
+ '@pnpm/exe.linux-arm64@12.2.1':
+ optional: true
+
+ '@pnpm/exe.linux-x64-musl@12.2.1':
+ optional: true
+
+ '@pnpm/exe.linux-x64@12.2.1':
+ optional: true
+
+ '@pnpm/exe.win32-arm64@12.2.1':
+ optional: true
+
+ '@pnpm/exe.win32-x64@12.2.1':
+ optional: true
+
+ pnpm@12.2.1:
+ optionalDependencies:
+ '@pnpm/exe.darwin-arm64': 12.2.1
+ '@pnpm/exe.darwin-x64': 12.2.1
+ '@pnpm/exe.linux-arm64': 12.2.1
+ '@pnpm/exe.linux-arm64-musl': 12.2.1
+ '@pnpm/exe.linux-x64': 12.2.1
+ '@pnpm/exe.linux-x64-musl': 12.2.1
+ '@pnpm/exe.win32-arm64': 12.2.1
+ '@pnpm/exe.win32-x64': 12.2.1
+
+---
lockfileVersion: '9.0'
settings:
@@ -6,81 +107,84 @@ settings:
overrides:
braces@<2.3.1: '>=2.3.1'
- tunnel-agent@<0.6.0: '>=0.6.0'
- got@<11.8.5: '>=11.8.5'
+ braces@<3.0.3: '>=3.0.3'
+ cross-spawn@<6.0.6: '>=6.0.6'
decompress@<4.2.1: '>=4.2.1'
+ file-type@>=13.0.0 <21.3.1: '>=21.3.1'
+ got@<11.8.5: '>=11.8.5'
+ download>got: 7.1.0
http-cache-semantics@<4.1.1: '>=4.1.1'
+ micromatch@<4.0.8: '>=4.0.8'
semver-regex@<3.1.3: '>=3.1.3'
semver-regex@<3.1.4: '>=3.1.4'
+ semver@>=2.0.0-alpha <5.7.2: '>=5.7.2'
trim-newlines@<3.0.1: '>=3.0.1'
- semver@<5.7.2: '>=5.7.2'
- braces@<3.0.3: '>=3.0.3'
+ tunnel-agent@<0.6.0: '>=0.6.0'
+ uuid@<14.0.0: '>=14.0.0'
+ web-worker: '>=1.5.0'
importers:
.:
dependencies:
htmlhint:
- specifier: 1.1.4
- version: 1.1.4
+ specifier: 1.9.2
+ version: 1.9.2
htmlhint-stylish:
specifier: 1.0.3
version: 1.0.3
imagemin:
- specifier: 9.0.0
- version: 9.0.0
- imagemin-giflossy:
- specifier: 5.1.10
- version: 5.1.10
- imagemin-jpegtran:
+ specifier: 9.0.1
+ version: 9.0.1(supports-color@7.2.0)
+ imagemin-gifsicle:
specifier: 7.0.0
version: 7.0.0
+ imagemin-jpegtran:
+ specifier: 8.0.0
+ version: 8.0.0(supports-color@7.2.0)
imagemin-mozjpeg:
specifier: 10.0.0
version: 10.0.0
imagemin-pngquant:
specifier: 10.0.0
version: 10.0.0
- imagemin-webp:
- specifier: 8.0.0
- version: 8.0.0
+ imagemin-svgo:
+ specifier: 12.0.0
+ version: 12.0.0
imagemin-zopfli:
specifier: 7.0.0
version: 7.0.0
- is-svg:
- specifier: 5.0.1
- version: 5.0.1
- node-notifier:
- specifier: 10.0.1
- version: 10.0.1
+ pino:
+ specifier: 10.3.1
+ version: 10.3.1
+ pino-pretty:
+ specifier: 13.1.3
+ version: 13.1.3
sharp:
- specifier: 0.33.4
- version: 0.33.4
- shelljs:
- specifier: 0.8.5
- version: 0.8.5
- svgo:
- specifier: 3.3.2
- version: 3.3.2
+ specifier: 0.35.4
+ version: 0.35.4(@types/node@26.4.0)
yargs:
- specifier: 17.7.2
- version: 17.7.2
+ specifier: 18.1.0
+ version: 18.1.0
devDependencies:
'@swc-node/register':
- specifier: 1.10.9
- version: 1.10.9(@swc/core@1.7.5)(@swc/types@0.1.12)(typescript@5.5.4)
+ specifier: 1.12.1
+ version: 1.12.1(@swc/core@1.16.1)(@swc/types@0.1.28)(@typescript/typescript6@6.0.2)(supports-color@7.2.0)
'@swc/cli':
- specifier: 0.4.0
- version: 0.4.0(@swc/core@1.7.5)
+ specifier: 0.8.1
+ version: 0.8.1(@swc/core@1.16.1)(supports-color@7.2.0)
'@swc/core':
- specifier: 1.7.5
- version: 1.7.5
+ specifier: 1.16.1
+ version: 1.16.1
'@types/htmlhint':
specifier: 1.1.5
version: 1.1.5
'@types/imagemin':
- specifier: 9.0.0
- version: 9.0.0
+ specifier: 9.0.1
+ version: 9.0.1
+ '@types/imagemin-gifsicle':
+ specifier: 7.0.4
+ version: 7.0.4
'@types/imagemin-jpegtran':
specifier: 5.0.4
version: 5.0.4
@@ -88,184 +192,420 @@ importers:
specifier: 8.0.4
version: 8.0.4
'@types/imagemin-svgo':
- specifier: 10.0.5
- version: 10.0.5
+ specifier: 11.0.0
+ version: 11.0.0
'@types/imagemin-zopfli':
specifier: 7.0.4
version: 7.0.4
'@types/node':
- specifier: 22.1.0
- version: 22.1.0
- '@types/node-notifier':
- specifier: 8.0.5
- version: 8.0.5
- '@types/shelljs':
- specifier: 0.8.15
- version: 0.8.15
+ specifier: 26.4.0
+ version: 26.4.0
'@types/yargs':
- specifier: 17.0.32
- version: 17.0.32
+ specifier: 17.0.35
+ version: 17.0.35
+ '@typescript/native':
+ specifier: npm:typescript@7.0.2
+ version: typescript@7.0.2
replace-in-file:
- specifier: 8.1.0
- version: 8.1.0
- ts-node:
- specifier: 10.9.2
- version: 10.9.2(@swc/core@1.7.5)(@types/node@22.1.0)(typescript@5.5.4)
+ specifier: 9.0.0
+ version: 9.0.0
type-fest:
- specifier: 4.23.0
- version: 4.23.0
+ specifier: 5.9.0
+ version: 5.9.0
typescript:
- specifier: 5.5.4
- version: 5.5.4
+ specifier: npm:@typescript/typescript6@6.0.2
+ version: '@typescript/typescript6@6.0.2'
packages:
- '@cspotcode/source-map-support@0.8.1':
- resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
- engines: {node: '>=12'}
+ '@borewit/text-codec@0.2.2':
+ resolution: {integrity: sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==}
+
+ '@emnapi/core@1.11.2':
+ resolution: {integrity: sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA==}
+
+ '@emnapi/runtime@1.11.2':
+ resolution: {integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==}
+
+ '@emnapi/runtime@1.11.3':
+ resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==}
- '@emnapi/core@1.2.0':
- resolution: {integrity: sha512-E7Vgw78I93we4ZWdYCb4DGAwRROGkMIXk7/y87UmANR+J6qsWusmC3gLt0H+O0KOt5e6O38U8oJamgbudrES/w==}
+ '@emnapi/wasi-threads@1.2.2':
+ resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==}
- '@emnapi/runtime@1.2.0':
- resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==}
+ '@file-type/xml@0.4.4':
+ resolution: {integrity: sha512-NhCyXoHlVZ8TqM476hyzwGJ24+D5IPSaZhmrPj7qXnEVb3q6jrFzA3mM9TBpknKSI9EuQeGTKRg2DXGUwvBBoQ==}
- '@emnapi/wasi-threads@1.0.1':
- resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==}
+ '@img/colour@1.1.0':
+ resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==}
+ engines: {node: '>=18'}
- '@img/sharp-darwin-arm64@0.33.4':
- resolution: {integrity: sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==}
- engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-darwin-arm64@0.35.4':
+ resolution: {integrity: sha512-Uhfl4V4lhP2nbUVF9+hyH1+luj86f1gUFeo8ALYxFoULoU+G87D43BfeMP8XHsk9boxAnCY/bf2EHwhA7MuGsA==}
+ engines: {node: '>=20.9.0'}
cpu: [arm64]
os: [darwin]
- '@img/sharp-darwin-x64@0.33.4':
- resolution: {integrity: sha512-0l7yRObwtTi82Z6ebVI2PnHT8EB2NxBgpK2MiKJZJ7cz32R4lxd001ecMhzzsZig3Yv9oclvqqdV93jo9hy+Dw==}
- engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-darwin-x64@0.35.4':
+ resolution: {integrity: sha512-hWniXY3bG5qKpkKrAwPe4y+VTPmf086YQAnkxWh7uA1YrlRouWGa0M0Mxj3ZjnXFkv7/TD1bTy9lGUK26vRvWw==}
+ engines: {node: '>=20.9.0'}
cpu: [x64]
os: [darwin]
- '@img/sharp-libvips-darwin-arm64@1.0.2':
- resolution: {integrity: sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==}
- engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-freebsd-wasm32@0.35.4':
+ resolution: {integrity: sha512-lIsKw/BU+kjB4eZjxrYrZmwOJYi3Ajrv66iAlBmUPyKc3HpnloevB1g3wxGD9P/5BbQ1brBGl65VRRrCvQDEqA==}
+ engines: {node: '>=20.9.0'}
+ os: [freebsd]
+
+ '@img/sharp-libvips-darwin-arm64@1.3.3':
+ resolution: {integrity: sha512-suTBPTDGrI9WodccaDdwZItTSaBYASlBk1NSfElSHrUfzu3szG6lvIF58+WiFvnfzuK8ZBFS5zE00PxqxnRiPg==}
cpu: [arm64]
os: [darwin]
- '@img/sharp-libvips-darwin-x64@1.0.2':
- resolution: {integrity: sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==}
- engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-libvips-darwin-x64@1.3.3':
+ resolution: {integrity: sha512-FVJZ5mITMobmXIz/hPDTw0EintTW5H3WfrxwLqEqjiIihlu+hVRyGrFQ60xl0Lxn7Bt3zdpevPaQi0HEzqz9fw==}
cpu: [x64]
os: [darwin]
- '@img/sharp-libvips-linux-arm64@1.0.2':
- resolution: {integrity: sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==}
- engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-libvips-linux-arm64@1.3.3':
+ resolution: {integrity: sha512-0DaL0A6Xu6sQSQFwe4iVCrKWU2cCTItnRsYsCdxAMm9NF6twAA9BKnoqy4hqz4+azQ0JHuA26qiUKsf1XJ/v5A==}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
- '@img/sharp-libvips-linux-arm@1.0.2':
- resolution: {integrity: sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==}
- engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-libvips-linux-arm@1.3.3':
+ resolution: {integrity: sha512-3rbU4vqXXc3hY/OiXdl52xZvT0F1yEngWfvqudtPJg/KkyiaQw2DRsFrNzpmLvfavbwOq3qXn36GP8obHRULQA==}
cpu: [arm]
os: [linux]
+ libc: [glibc]
+
+ '@img/sharp-libvips-linux-ppc64@1.3.3':
+ resolution: {integrity: sha512-cdn1OvUBwsXhbC0zSzJnNzf5MZ/mTrobawDvNXBTxe8VtqKAm0sRuEY2Evzovb/w9JMk4TvRxqt1mekSuJz64w==}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@img/sharp-libvips-linux-riscv64@1.3.3':
+ resolution: {integrity: sha512-HjPVx7yKz+0lqdhDlTw1tt90wamBoxhiXpvl1XZpJLiHH4RCJ5yDTqH+VlYPv2fwFs89JFw4c1IexYOcQUi4IQ==}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [glibc]
- '@img/sharp-libvips-linux-s390x@1.0.2':
- resolution: {integrity: sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==}
- engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-libvips-linux-s390x@1.3.3':
+ resolution: {integrity: sha512-neWLh+3yCNThxnfy3c4BbVBeGgt9aftno+XbT56iK28RgeDs3UOFWviLWlUu0bArYVYJaFDK+RRohbicUNCm8Q==}
cpu: [s390x]
os: [linux]
+ libc: [glibc]
- '@img/sharp-libvips-linux-x64@1.0.2':
- resolution: {integrity: sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==}
- engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-libvips-linux-x64@1.3.3':
+ resolution: {integrity: sha512-4vKmvAst9nrowcqquKFAyZJUDolUaIp8uRiN0mWFguJ1IplC9/pitXtlnnlU4aa/eJw3J7i67V+pwUL+wZGdsA==}
cpu: [x64]
os: [linux]
+ libc: [glibc]
- '@img/sharp-libvips-linuxmusl-arm64@1.0.2':
- resolution: {integrity: sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==}
- engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-libvips-linuxmusl-arm64@1.3.3':
+ resolution: {integrity: sha512-Y9kQaLMuNoB0bPYOOdcZMaseNrFpPodIWWMrx+CZyydf2xn68j9WYc6sWWRrDwNkzCQjKYfc68L7jKjGlHMibw==}
cpu: [arm64]
os: [linux]
+ libc: [musl]
- '@img/sharp-libvips-linuxmusl-x64@1.0.2':
- resolution: {integrity: sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==}
- engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-libvips-linuxmusl-x64@1.3.3':
+ resolution: {integrity: sha512-fj8Mv0HHfD1Rr+4I68+3agJynxDWtBFgicTbSOb9Bke6pIwzGcJ+RX/yHjmiEGFMCavY/dxvem7MyNaJF+wDiw==}
cpu: [x64]
os: [linux]
+ libc: [musl]
- '@img/sharp-linux-arm64@0.33.4':
- resolution: {integrity: sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q==}
- engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-linux-arm64@0.35.4':
+ resolution: {integrity: sha512-De4jpEnAU8Hd5oT0j1G3uL4ZvTuipVMn7YC6vPaJhy6/7EwEae0SVAoBrUMYQbkLGDm85taVWwuPc1a44LTzCQ==}
+ engines: {node: '>=20.9.0'}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
- '@img/sharp-linux-arm@0.33.4':
- resolution: {integrity: sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ==}
- engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-linux-arm@0.35.4':
+ resolution: {integrity: sha512-7OAS8gI0EReKGVN2HssHlM6umJgxF5VI3xN0p9FA91p/YO+ou5hiNghLdZ5BEHztwaaK5+bLKRf8x/o2L2nk9A==}
+ engines: {node: '>=20.9.0'}
cpu: [arm]
os: [linux]
+ libc: [glibc]
- '@img/sharp-linux-s390x@0.33.4':
- resolution: {integrity: sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ==}
- engines: {glibc: '>=2.31', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-linux-ppc64@0.35.4':
+ resolution: {integrity: sha512-2oYZJeIl4kCcMGk4ouZVjnkCtFrpQFlNEtJ6GbxzhHQchwH0NH/qEb9ykmOl29dqwMq+JhFdZn+1ak2FKhI9fQ==}
+ engines: {node: '>=20.9.0'}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@img/sharp-linux-riscv64@0.35.4':
+ resolution: {integrity: sha512-cPbNChoRURAWdebDIHSenxRpgEdy7JkPydSnUxRm9VvKD7m0/xVaR/8Fzlu81pk5nHEvHH87UZUA7cTtwnbJSA==}
+ engines: {node: '>=20.9.0'}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [glibc]
+
+ '@img/sharp-linux-s390x@0.35.4':
+ resolution: {integrity: sha512-RY0JFY8Fd6RonCBtHz+DvadaPkXDSI1AUn6yWL9TipqkZ1vY8w8evqdgyDFnkm4/K1ve1TvZiaePP5oSd4+WVQ==}
+ engines: {node: '>=20.9.0'}
cpu: [s390x]
os: [linux]
+ libc: [glibc]
- '@img/sharp-linux-x64@0.33.4':
- resolution: {integrity: sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw==}
- engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-linux-x64@0.35.4':
+ resolution: {integrity: sha512-9qvvEAuk8k89TfWUoX2htWjbAMX8p+NxCppjpcg5k6xMsjhBQPTsoIh36h9Qde4WRuGpJeYnOjdosDn/cnv+OA==}
+ engines: {node: '>=20.9.0'}
cpu: [x64]
os: [linux]
+ libc: [glibc]
- '@img/sharp-linuxmusl-arm64@0.33.4':
- resolution: {integrity: sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ==}
- engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-linuxmusl-arm64@0.35.4':
+ resolution: {integrity: sha512-KB5jxpfWQTr0nc3xdHtWChdbifHrBGsd2SM62Eyxrl8afikm+f5qGBU75SJIZBT/S1MC8XyacdlXBMSWq6OURA==}
+ engines: {node: '>=20.9.0'}
cpu: [arm64]
os: [linux]
+ libc: [musl]
- '@img/sharp-linuxmusl-x64@0.33.4':
- resolution: {integrity: sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw==}
- engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-linuxmusl-x64@0.35.4':
+ resolution: {integrity: sha512-f+eZJZIQNEEd26RPSW+76chwOf1XtA2Y/O+5ocVyLliHkeih3e+jhLVBdNTd2rS3IbNXK8+ug93Vf5ZXtF5Lxg==}
+ engines: {node: '>=20.9.0'}
cpu: [x64]
os: [linux]
+ libc: [musl]
+
+ '@img/sharp-wasm32@0.35.4':
+ resolution: {integrity: sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA==}
+ engines: {node: '>=20.9.0'}
- '@img/sharp-wasm32@0.33.4':
- resolution: {integrity: sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-webcontainers-wasm32@0.35.4':
+ resolution: {integrity: sha512-ESfNkywmCfPNyaZjxooddJQiQ+l/nTpGEOGthxiLnIHXC/CmcBixnfwUleX9mCz9ovrUUvKMap/pm8RYbzfwaA==}
+ engines: {node: '>=20.9.0'}
cpu: [wasm32]
- '@img/sharp-win32-ia32@0.33.4':
- resolution: {integrity: sha512-99SJ91XzUhYHbx7uhK3+9Lf7+LjwMGQZMDlO/E/YVJ7Nc3lyDFZPGhjwiYdctoH2BOzW9+TnfqcaMKt0jHLdqw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-win32-arm64@0.35.4':
+ resolution: {integrity: sha512-iNdlBX9gLVvqe2I3uIJSIKTq6wckP/DYxZtcqxm09x5Gi24DnFBmPAWZmr60ZyYMG0xlzo6goG3670ar+RXvRw==}
+ engines: {node: '>=20.9.0'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@img/sharp-win32-ia32@0.35.4':
+ resolution: {integrity: sha512-kqRsbaa5CS6KHlpxnN7WhE6vAAugXyZButpRdvDWetlv6Qv4N9WTcrWzF7tXfB9T7MsoadqdI8hmwLq6UlLvtw==}
+ engines: {node: ^20.9.0}
cpu: [ia32]
os: [win32]
- '@img/sharp-win32-x64@0.33.4':
- resolution: {integrity: sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
+ '@img/sharp-win32-x64@0.35.4':
+ resolution: {integrity: sha512-XtmnYhBcrORsJ4XJngyzr/EWP0hRZLAZRFaApdKuviyqF78+ylxh2y06ZmtULAMOnObJ3ucpN0AcwSWnMowTRg==}
+ engines: {node: '>=20.9.0'}
cpu: [x64]
os: [win32]
- '@isaacs/cliui@8.0.2':
- resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
- engines: {node: '>=12'}
+ '@keyv/serialize@1.1.1':
+ resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==}
- '@jridgewell/resolve-uri@3.1.2':
- resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
- engines: {node: '>=6.0.0'}
+ '@napi-rs/nice-android-arm-eabi@1.1.1':
+ resolution: {integrity: sha512-kjirL3N6TnRPv5iuHw36wnucNqXAO46dzK9oPb0wj076R5Xm8PfUVA9nAFB5ZNMmfJQJVKACAPd/Z2KYMppthw==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [android]
- '@jridgewell/sourcemap-codec@1.5.0':
- resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
+ '@napi-rs/nice-android-arm64@1.1.1':
+ resolution: {integrity: sha512-blG0i7dXgbInN5urONoUCNf+DUEAavRffrO7fZSeoRMJc5qD+BJeNcpr54msPF6qfDD6kzs9AQJogZvT2KD5nw==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [android]
- '@jridgewell/trace-mapping@0.3.9':
- resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
+ '@napi-rs/nice-darwin-arm64@1.1.1':
+ resolution: {integrity: sha512-s/E7w45NaLqTGuOjC2p96pct4jRfo61xb9bU1unM/MJ/RFkKlJyJDx7OJI/O0ll/hrfpqKopuAFDV8yo0hfT7A==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [darwin]
- '@mole-inc/bin-wrapper@8.0.1':
- resolution: {integrity: sha512-sTGoeZnjI8N4KS+sW2AN95gDBErhAguvkw/tWdCjeM8bvxpz5lqrnd0vOJABA1A+Ic3zED7PYoLP/RANLgVotA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ '@napi-rs/nice-darwin-x64@1.1.1':
+ resolution: {integrity: sha512-dGoEBnVpsdcC+oHHmW1LRK5eiyzLwdgNQq3BmZIav+9/5WTZwBYX7r5ZkQC07Nxd3KHOCkgbHSh4wPkH1N1LiQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@napi-rs/nice-freebsd-x64@1.1.1':
+ resolution: {integrity: sha512-kHv4kEHAylMYmlNwcQcDtXjklYp4FCf0b05E+0h6nDHsZ+F0bDe04U/tXNOqrx5CmIAth4vwfkjjUmp4c4JktQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [freebsd]
- '@napi-rs/wasm-runtime@0.2.4':
- resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==}
+ '@napi-rs/nice-linux-arm-gnueabihf@1.1.1':
+ resolution: {integrity: sha512-E1t7K0efyKXZDoZg1LzCOLxgolxV58HCkaEkEvIYQx12ht2pa8hoBo+4OB3qh7e+QiBlp1SRf+voWUZFxyhyqg==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [linux]
+
+ '@napi-rs/nice-linux-arm64-gnu@1.1.1':
+ resolution: {integrity: sha512-CIKLA12DTIZlmTaaKhQP88R3Xao+gyJxNWEn04wZwC2wmRapNnxCUZkVwggInMJvtVElA+D4ZzOU5sX4jV+SmQ==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@napi-rs/nice-linux-arm64-musl@1.1.1':
+ resolution: {integrity: sha512-+2Rzdb3nTIYZ0YJF43qf2twhqOCkiSrHx2Pg6DJaCPYhhaxbLcdlV8hCRMHghQ+EtZQWGNcS2xF4KxBhSGeutg==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@napi-rs/nice-linux-ppc64-gnu@1.1.1':
+ resolution: {integrity: sha512-4FS8oc0GeHpwvv4tKciKkw3Y4jKsL7FRhaOeiPei0X9T4Jd619wHNe4xCLmN2EMgZoeGg+Q7GY7BsvwKpL22Tg==}
+ engines: {node: '>= 10'}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@napi-rs/nice-linux-riscv64-gnu@1.1.1':
+ resolution: {integrity: sha512-HU0nw9uD4FO/oGCCk409tCi5IzIZpH2agE6nN4fqpwVlCn5BOq0MS1dXGjXaG17JaAvrlpV5ZeyZwSon10XOXw==}
+ engines: {node: '>= 10'}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [glibc]
+
+ '@napi-rs/nice-linux-s390x-gnu@1.1.1':
+ resolution: {integrity: sha512-2YqKJWWl24EwrX0DzCQgPLKQBxYDdBxOHot1KWEq7aY2uYeX+Uvtv4I8xFVVygJDgf6/92h9N3Y43WPx8+PAgQ==}
+ engines: {node: '>= 10'}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ '@napi-rs/nice-linux-x64-gnu@1.1.1':
+ resolution: {integrity: sha512-/gaNz3R92t+dcrfCw/96pDopcmec7oCcAQ3l/M+Zxr82KT4DljD37CpgrnXV+pJC263JkW572pdbP3hP+KjcIg==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@napi-rs/nice-linux-x64-musl@1.1.1':
+ resolution: {integrity: sha512-xScCGnyj/oppsNPMnevsBe3pvNaoK7FGvMjT35riz9YdhB2WtTG47ZlbxtOLpjeO9SqqQ2J2igCmz6IJOD5JYw==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@napi-rs/nice-openharmony-arm64@1.1.1':
+ resolution: {integrity: sha512-6uJPRVwVCLDeoOaNyeiW0gp2kFIM4r7PL2MczdZQHkFi9gVlgm+Vn+V6nTWRcu856mJ2WjYJiumEajfSm7arPQ==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@napi-rs/nice-win32-arm64-msvc@1.1.1':
+ resolution: {integrity: sha512-uoTb4eAvM5B2aj/z8j+Nv8OttPf2m+HVx3UjA5jcFxASvNhQriyCQF1OB1lHL43ZhW+VwZlgvjmP5qF3+59atA==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@napi-rs/nice-win32-ia32-msvc@1.1.1':
+ resolution: {integrity: sha512-CNQqlQT9MwuCsg1Vd/oKXiuH+TcsSPJmlAFc5frFyX/KkOh0UpBLEj7aoY656d5UKZQMQFP7vJNa1DNUNORvug==}
+ engines: {node: '>= 10'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@napi-rs/nice-win32-x64-msvc@1.1.1':
+ resolution: {integrity: sha512-vB+4G/jBQCAh0jelMTY3+kgFy00Hlx2f2/1zjMoH821IbplbWZOkLiTYXQkygNTzQJTq5cvwBDgn2ppHD+bglQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [win32]
+
+ '@napi-rs/nice@1.1.1':
+ resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==}
+ engines: {node: '>= 10'}
+
+ '@napi-rs/wasm-runtime@1.2.3':
+ resolution: {integrity: sha512-UMduMbqO5s5zF2NkNacMT/yK5Y5QiKvWr2+50bzIIxFDwVJ2h49b+oyjaCGPhJxd2/gC2x39EHv/gHVuu36x2Q==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0}
+ peerDependencies:
+ '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4
+ '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4
+
+ '@node-rs/xxhash-android-arm-eabi@1.7.7':
+ resolution: {integrity: sha512-9uOAXzMmayilkSmoSgrtZDKG2a4E8I0f58Ydm0/us2ubfUGqBr6AjaxzRjipuDBGeNZYYQP1wmoUzLAmuUajIQ==}
+ engines: {node: '>= 12'}
+ cpu: [arm]
+ os: [android]
+
+ '@node-rs/xxhash-android-arm64@1.7.7':
+ resolution: {integrity: sha512-NDqhut7aniQegfLEYBDxmhI5gFHcDur3D9G7E724SzF3aPw0lTAN9cLixd/Cs+BJRwq3oziOdGtYW9j0xM/B0Q==}
+ engines: {node: '>= 12'}
+ cpu: [arm64]
+ os: [android]
+
+ '@node-rs/xxhash-darwin-arm64@1.7.7':
+ resolution: {integrity: sha512-uwrEQELN50J2leUNBTir50nRxJJT3Dts3WDnvEij+MMJco++uI2dXoHbwP/UoavGuyoPtngrWxKP8XS9/mLvOA==}
+ engines: {node: '>= 12'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@node-rs/xxhash-darwin-x64@1.7.7':
+ resolution: {integrity: sha512-y7AUeH573Ks5BDaJtmyvPxHhPDGedwZnU/hqFbS/DLUqpYGxXLwYkV5iSBtEfFnYyyae1MVjUBqSaCXB6wuLDg==}
+ engines: {node: '>= 12'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@node-rs/xxhash-freebsd-x64@1.7.7':
+ resolution: {integrity: sha512-4kOYAbnPcFgcpOVQvthha09hjlmswIsfcZWm8uTZC1sau3tdynyyQy1/OcOG03EdP1W0qHOC3ORfUTS9oxbI9A==}
+ engines: {node: '>= 12'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@node-rs/xxhash-linux-arm-gnueabihf@1.7.7':
+ resolution: {integrity: sha512-zO9DsqETMS+8/UarCugj1NW+PcD4haFfYQuVXFaPTskgtocvFY8nYY0N59YZukBWlSGh3xBtXPMVd39zeRiNKg==}
+ engines: {node: '>= 12'}
+ cpu: [arm]
+ os: [linux]
+
+ '@node-rs/xxhash-linux-arm64-gnu@1.7.7':
+ resolution: {integrity: sha512-48kFnEIy8w1R8pGKblG+em6Q7YuDRWcLsSRpFCIrbpsA6aAQdvZnMXiyx+HSq5gEWwM35Hrb30L1sStUSetFmw==}
+ engines: {node: '>= 12'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@node-rs/xxhash-linux-arm64-musl@1.7.7':
+ resolution: {integrity: sha512-m1Wz3ySODY7XZixTgLn9n59tUVSTmhO4iwcTLX5lRNnJaCOiWywsySPPbo3++oebSGTwAdJEmPJq5BLPSEZGGQ==}
+ engines: {node: '>= 12'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@node-rs/xxhash-linux-x64-gnu@1.7.7':
+ resolution: {integrity: sha512-rdLsrNjOUbOCdsdZZqfqeE24y/yeSR8c11w5Xkwj/Qkrcpaq3qB5f3aIW+6WuQJjdBsJwOxHCspSuUiaY6Xx4g==}
+ engines: {node: '>= 12'}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@node-rs/xxhash-linux-x64-musl@1.7.7':
+ resolution: {integrity: sha512-1LmaKDAIoqZcSQJG22cZMH9aL4B6jg5kQygg6pY7NyICzw+taLPLHhaMMEE+E0n2BodRXzVjZvF15pxi4qXtug==}
+ engines: {node: '>= 12'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@node-rs/xxhash-win32-arm64-msvc@1.7.7':
+ resolution: {integrity: sha512-F2QaHmplRZbg1T/AlQuW11MmRsxLvNVEsofeQd92/u704L5+BBEVc13MutJwioXNIAW1GmgOpfwVG6ZGeLAoyA==}
+ engines: {node: '>= 12'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@node-rs/xxhash-win32-ia32-msvc@1.7.7':
+ resolution: {integrity: sha512-YnHHBQVHju1Sx8vc2s2RauAGXAwWeqFMC4CvaJJ8j5WPnW2x8p9hTQRURMl/ATPLp/t8j4C9AEmLNtrNdE6JXQ==}
+ engines: {node: '>= 12'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@node-rs/xxhash-win32-x64-msvc@1.7.7':
+ resolution: {integrity: sha512-0uVSktuJUetF467YZwHoGuBGcY8RF30DixboXTgMYG5amWze2j+OvaSpQKLsHhf0fs2UZH9W4KQG3SfUizlmGA==}
+ engines: {node: '>= 12'}
+ cpu: [x64]
+ os: [win32]
+
+ '@node-rs/xxhash@1.7.7':
+ resolution: {integrity: sha512-lQflJcUTqTvIbFNvq+6DnXQr2MCAqEBsXt9IgTiuhQeaFPejoUJBRF2WlfU5hfUzsCjU+DrzZlxzob0Q4zdHLw==}
+ engines: {node: '>= 12'}
'@nodelib/fs.scandir@2.1.5':
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
@@ -279,176 +619,241 @@ packages:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
- '@oxc-resolver/binding-darwin-arm64@1.10.2':
- resolution: {integrity: sha512-aOCZYXqmFL+2sXlaVkYbAOtICGGeTFtmdul8OimQfOXHJods6YHJ2nR6+rEeBcJzaXyXPP18ne1IsEc4AYL1IA==}
+ '@oxc-resolver/binding-android-arm-eabi@11.24.2':
+ resolution: {integrity: sha512-y09e0L0SRI2OA2tUIrjBgoV3eH5hvUKXNkJqXmNo5V2WxIjyC7I7aJfRLMEVpA8yi95f90gFDvO0VMgrDw+vwA==}
+ cpu: [arm]
+ os: [android]
+
+ '@oxc-resolver/binding-android-arm64@11.24.2':
+ resolution: {integrity: sha512-cl4icWaZFnLdg8m6qtnh5rBMuGbxc/ptStFHLeCNwr+2cZjkjNwQu/jYRS0CHlnPecOJMpuS5M6/BH+0J/YkEg==}
+ cpu: [arm64]
+ os: [android]
+
+ '@oxc-resolver/binding-darwin-arm64@11.24.2':
+ resolution: {integrity: sha512-At29QEMF6HajbQvgY8K6OXnHD1x9rad74xBEfmCB6ZqCGsdq75aK7tOYcTbOanMy8qdIBrfL3SMr3p/lfSlb9w==}
cpu: [arm64]
os: [darwin]
- '@oxc-resolver/binding-darwin-x64@1.10.2':
- resolution: {integrity: sha512-6WD7lHGkoduFZfUgnC2suKOlqttQRKxWsiVXiiGPu3mfXvQAhMd/gekuH1t8vOhFlPJduaww15n5UB0bSjCK+w==}
+ '@oxc-resolver/binding-darwin-x64@11.24.2':
+ resolution: {integrity: sha512-A5Kqr1EUj4oIL5CF4WRssq/o5P0Y11cwoFouMRmQ7YnC/A8V93nv1nb7aSU8HwcgmXropjLNkVTl4MN87cu28Q==}
cpu: [x64]
os: [darwin]
- '@oxc-resolver/binding-freebsd-x64@1.10.2':
- resolution: {integrity: sha512-nEqHWx/Ot5p7Mafj8qH6vFlLSvHjECxAcZwhnAMqRuQu1NgXC/QM3emkdhVGy7QJgsxZbHpPaF6TERNf5/NL9Q==}
+ '@oxc-resolver/binding-freebsd-x64@11.24.2':
+ resolution: {integrity: sha512-R5xkRBRRz7ceH/P5Jrc6G7FmdUdgpLYyESFAUDVTNQ9K0sGPxcp4ljiwEwEqsvNcQ4sYbMRrWcHHBCu7ksAJVw==}
cpu: [x64]
os: [freebsd]
- '@oxc-resolver/binding-linux-arm-gnueabihf@1.10.2':
- resolution: {integrity: sha512-+AlZI0fPnpfArh8aC5k2295lmQrxa2p8gBLxC3buvCkz0ZpbVLxyyAXz3J2jGwJnmc5MUPLEqPYw6ZlAGH4XHA==}
+ '@oxc-resolver/binding-linux-arm-gnueabihf@11.24.2':
+ resolution: {integrity: sha512-k/RuYL4L/R58IBn3wT5ma3Wh4k62bp1eYCFRWCmMsasUOqL+H6sW0VGFadEzKWXFFlz+2uIMoeMk9ySSZJHgbg==}
+ cpu: [arm]
+ os: [linux]
+
+ '@oxc-resolver/binding-linux-arm-musleabihf@11.24.2':
+ resolution: {integrity: sha512-bnHAak3ujYfH5pKk4NieFNbvYvernfoQDgwLddbZ3OtMYrem87/qjlA+u+aKG0oZcqSLGCful/6/CEA+aeAgaA==}
cpu: [arm]
os: [linux]
- '@oxc-resolver/binding-linux-arm64-gnu@1.10.2':
- resolution: {integrity: sha512-8fZ8NszFaUZaoA8eUwkF2lHjgUs76aFiewWgG/cjcZmwKp+ErZQLW8eOvIWZ4SohHQ+ScvhVsSaU2PU38c88gw==}
+ '@oxc-resolver/binding-linux-arm64-gnu@11.24.2':
+ resolution: {integrity: sha512-vDT3KHgzYp47gmtNOqL2VNhCyl5Zv643eyxm//A68J8DeUGXrvD1pZFiaT4jSfe+RInfnn1R2yVHye4enx6RnA==}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
- '@oxc-resolver/binding-linux-arm64-musl@1.10.2':
- resolution: {integrity: sha512-oPrLICrw96Ym9n04FWXWGkbkpF6qJtZ57JSnqI3oQ24xHTt4iWyjHKHQO46NbJAK9sFb3Qce4BzV8faDI5Rifg==}
+ '@oxc-resolver/binding-linux-arm64-musl@11.24.2':
+ resolution: {integrity: sha512-+kMlQvbzfyEYtu5FcjE4p+ttBLpKW4d/AsAsuE69BxV6V4twZJeIQZFfD8gh/wqglY0MkPSezWXQH0jBV13MUw==}
cpu: [arm64]
os: [linux]
+ libc: [musl]
+
+ '@oxc-resolver/binding-linux-ppc64-gnu@11.24.2':
+ resolution: {integrity: sha512-shjfMhmZ3gq9fv/w7bi3PnZlgOPG+2QAOFf0BJF0EgBSIGZ6PMLN2zbGEblTUYB/NKVDRyYhE2ff3dJ1QqNPkA==}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxc-resolver/binding-linux-riscv64-gnu@11.24.2':
+ resolution: {integrity: sha512-zGelwFR5oRo+b69k8Lrzun86DyUHzfKN6cnjbR9l7Z7NIRznOE/2ZvPa1IUKqAL2PzAXOdwkfVqNvO1H2RlpAw==}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [glibc]
- '@oxc-resolver/binding-linux-x64-gnu@1.10.2':
- resolution: {integrity: sha512-eli74jTAUiIfqi8IPFqiPxQS69Alcr6w/IFRyf3XxrkxeFGgcgxJkRIxWNTKJ6T3EXxjuma+49LdZn6l9rEj7A==}
+ '@oxc-resolver/binding-linux-riscv64-musl@11.24.2':
+ resolution: {integrity: sha512-qxZ1SWCXJY0eyhAlP6Lmo9F2Nrtx7EkYj9oCgL8apDPCwXwCEDA2U697bbT81JIc2IrVjxO4KX6WU2N+oN9Z4w==}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [musl]
+
+ '@oxc-resolver/binding-linux-s390x-gnu@11.24.2':
+ resolution: {integrity: sha512-sGCecF3cx2DFlH4t/z7ApnOnXqN48p5p5mlHDEnHTAukQa2P+qMVE4CwyWE9W+q/m3QJ7kKfGrIjax31f44oFQ==}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxc-resolver/binding-linux-x64-gnu@11.24.2':
+ resolution: {integrity: sha512-k/VlMMcSzMlahb3/fENM4rTlsJ0s3fFROA0KXPBmKggqmTSaE383sl8F3KCOXPLmVsYfW6hCitMhXCEtNeZxxg==}
cpu: [x64]
os: [linux]
+ libc: [glibc]
- '@oxc-resolver/binding-linux-x64-musl@1.10.2':
- resolution: {integrity: sha512-HH9zmjNSQo3rkbqJH5nIjGrtjC+QPrUy0KGGMR/oRCSLuD0cNFJ/Uly1XAugwSm4oEw0+rv6PmeclXmVTKsxhw==}
+ '@oxc-resolver/binding-linux-x64-musl@11.24.2':
+ resolution: {integrity: sha512-8hbnZyNi97b/8wapYaIF9+t9GmZKBW2vunaOc3h9HGJptH7b7XpvZqOTBSm/MpTjr7H497BlgOaSfLUdhmy2bw==}
cpu: [x64]
os: [linux]
+ libc: [musl]
+
+ '@oxc-resolver/binding-openharmony-arm64@11.24.2':
+ resolution: {integrity: sha512-MvyGik3a6pVgZ0t/kWlbmFxFLmXQJwgLsY2eYFHLpy0wGwRbfzeIGgDwQ3kXqE30z+kSXennRkCrT7TUvkptNg==}
+ cpu: [arm64]
+ os: [openharmony]
- '@oxc-resolver/binding-wasm32-wasi@1.10.2':
- resolution: {integrity: sha512-3ItX23q33sfVBtMMdMhVDSe0NX5zBHxHfmFiXhSJuwNaVIwGpLFU7WU2nmq9oNdnmTOvjL8vlhOqiGvumBLlRA==}
+ '@oxc-resolver/binding-wasm32-wasi@11.24.2':
+ resolution: {integrity: sha512-vHcssMPwO08RTvj/c0iOBz90attxyG3wQJ0dTcyEQK43LRpcdLWZlV5feBhv6Isn6ahbQIzHbCgfa81+RiML0Q==}
engines: {node: '>=14.0.0'}
cpu: [wasm32]
- '@oxc-resolver/binding-win32-arm64-msvc@1.10.2':
- resolution: {integrity: sha512-aVoj2V+jmQ1N+lVy9AhaLmzssJM0lcKt8D0UL83aNLZJ5lSN7hgBuUXTVmL+VF268f167khjo38z+fbELDVm8Q==}
+ '@oxc-resolver/binding-win32-arm64-msvc@11.24.2':
+ resolution: {integrity: sha512-uokJqro2iBqkFvJdKQLP7d8/BUmFwESQFVmIJUQKj1Xn1a/LysJoe1vmeECLF5b3jsV8CAL5sEMJXX6SdK9Nhg==}
cpu: [arm64]
os: [win32]
- '@oxc-resolver/binding-win32-x64-msvc@1.10.2':
- resolution: {integrity: sha512-l8BDQWyP0Piw8hlmYPUqTRKLsq+ceG9h+9p6ZrjNzwW9AmJX7T7T2hgoVVHqS6f4WNA/CFkb3RyZP9QTzNkyyA==}
+ '@oxc-resolver/binding-win32-x64-msvc@11.24.2':
+ resolution: {integrity: sha512-UqGPmo56KDfLlfXFAFIrNflHT8tFxWGEivWg3Zeyp4Uy2NlKN1FGPr6/BxcLGG3+kZ6Wp14g5Uj+n71boqZfiw==}
cpu: [x64]
os: [win32]
- '@pkgjs/parseargs@0.11.0':
- resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
- engines: {node: '>=14'}
+ '@pinojs/redact@0.4.0':
+ resolution: {integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==}
'@sec-ant/readable-stream@0.4.1':
resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
- '@sindresorhus/is@4.6.0':
- resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==}
- engines: {node: '>=10'}
-
'@sindresorhus/is@6.3.1':
resolution: {integrity: sha512-FX4MfcifwJyFOI2lPoX7PQxCqx8BG1HCho7WdiXwpEQx1Ycij0JxkfYtGK7yqNScrZGSlt6RE6sw8QYoH7eKnQ==}
engines: {node: '>=16'}
- '@sindresorhus/is@7.0.0':
- resolution: {integrity: sha512-WDTlVTyvFivSOuyvMeedzg2hdoBLZ3f1uNVuEida2Rl9BrfjrIRjWA/VZIrMRLvSwJYCAlCRA3usDt1THytxWQ==}
+ '@sindresorhus/is@7.2.0':
+ resolution: {integrity: sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==}
engines: {node: '>=18'}
'@sindresorhus/merge-streams@2.3.0':
resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==}
engines: {node: '>=18'}
- '@swc-node/core@1.13.3':
- resolution: {integrity: sha512-OGsvXIid2Go21kiNqeTIn79jcaX4l0G93X2rAnas4LFoDyA9wAwVK7xZdm+QsKoMn5Mus2yFLCc4OtX2dD/PWA==}
+ '@sindresorhus/merge-streams@4.0.0':
+ resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==}
+ engines: {node: '>=18'}
+
+ '@swc-node/core@1.15.0':
+ resolution: {integrity: sha512-WAerrrl087WgenB92XG4Th2t0NQFfMNLYSe0sW2cEMMqM/LQmP4rozsDJl0vuzTrbewjpKQryxFXI+aYig/dBg==}
engines: {node: '>= 10'}
peerDependencies:
- '@swc/core': '>= 1.4.13'
+ '@swc/core': '>= 1.13.3'
'@swc/types': '>= 0.1'
- '@swc-node/register@1.10.9':
- resolution: {integrity: sha512-iXy2sjP0phPEpK2yivjRC3PAgoLaT4sjSk0LDWCTdcTBJmR4waEog0E6eJbvoOkLkOtWw37SB8vCkl/bbh4+8A==}
+ '@swc-node/register@1.12.1':
+ resolution: {integrity: sha512-t6t+0bDos+bj0+jcSqKl7+ys/i1an5cEViC0LuIskJFSHONX871nXN8j+gxdKVOgCCpjs0buXUPNnp/0DaV4EQ==}
peerDependencies:
'@swc/core': '>= 1.4.13'
- typescript: '>= 4.3'
+ typescript: '>= 4.3 < 7'
- '@swc-node/sourcemap-support@0.5.1':
- resolution: {integrity: sha512-JxIvIo/Hrpv0JCHSyRpetAdQ6lB27oFYhv0PKCNf1g2gUXOjpeR1exrXccRxLMuAV5WAmGFBwRnNOJqN38+qtg==}
+ '@swc-node/sourcemap-support@0.6.1':
+ resolution: {integrity: sha512-ovltDVH5QpdHXZkW138vG4+dgcNsxfwxHVoV6BtmTbz2KKl1A8ZSlbdtxzzfNjCjbpayda8Us9eMtcHobm38dA==}
- '@swc/cli@0.4.0':
- resolution: {integrity: sha512-4JdVrPtF/4rCMXp6Q1h5I6YkYZrCCcqod7Wk97ZQq7K8vNGzJUryBv4eHCvqx5sJOJBrbYm9fcswe1B0TygNoA==}
- engines: {node: '>= 16.14.0'}
+ '@swc/cli@0.8.1':
+ resolution: {integrity: sha512-L+ACCGHCiS0VqHVep/INLVnvRvJ2XooQFLZq4L8snhxw1jsqz+XRcY313UsyPVturPPE1shW3jic7rt3qEQTSQ==}
+ engines: {node: '>= 20.19.0'}
hasBin: true
peerDependencies:
'@swc/core': ^1.2.66
- chokidar: ^3.5.1
+ chokidar: ^5.0.0
peerDependenciesMeta:
chokidar:
optional: true
- '@swc/core-darwin-arm64@1.7.5':
- resolution: {integrity: sha512-Y+bvW9C4/u26DskMbtQKT4FU6QQenaDYkKDi028vDIKAa7v1NZqYG9wmhD/Ih7n5EUy2uJ5I5EWD7WaoLzT6PA==}
+ '@swc/core-darwin-arm64@1.16.1':
+ resolution: {integrity: sha512-zlJblJ8ncErD43lKdxjbUaUskJQf+LxiPXYcWXD8/8ZMV+7uuAT+CwjciLXpyZBd5Pq/S726bMpeeAwSeL1hhg==}
engines: {node: '>=10'}
cpu: [arm64]
os: [darwin]
- '@swc/core-darwin-x64@1.7.5':
- resolution: {integrity: sha512-AuIbDlcaAhYS6mtF4UqvXgrLeAfXZbVf4pgtgShPbutF80VbCQiIB55zOFz5aZdCpsBVuCWcBq0zLneK+VQKkQ==}
+ '@swc/core-darwin-x64@1.16.1':
+ resolution: {integrity: sha512-IN0BmPWb0YAh/17mmlWB/HDBtTw2MfuW4hulf/tQAgTQBRH17l+z499bNJLK6LizSjqs0P7V+jU38Zj+vJC1DA==}
engines: {node: '>=10'}
cpu: [x64]
os: [darwin]
- '@swc/core-linux-arm-gnueabihf@1.7.5':
- resolution: {integrity: sha512-99uBPHITRqgGwCXAjHY94VaV3Z40+D2NQNgR1t6xQpO8ZnevI6YSzX6GVZfBnV7+7oisiGkrVEwfIRRa+1s8FA==}
+ '@swc/core-linux-arm-gnueabihf@1.16.1':
+ resolution: {integrity: sha512-EYgrx2YOCQ2Twz2S793kqNjPkpvYVUPzzR95bIb7by+VQcyaai4lZZ2iz/tZvcFVKSNcN3/JTKwx+aBn2ZL52A==}
engines: {node: '>=10'}
cpu: [arm]
os: [linux]
- '@swc/core-linux-arm64-gnu@1.7.5':
- resolution: {integrity: sha512-xHL3Erlz+OGGCG4h6K2HWiR56H5UYMuBWWPbbUufi2bJpfhuKQy/X3vWffwL8ZVfJmCUwr4/G91GHcm32uYzRg==}
+ '@swc/core-linux-arm64-gnu@1.16.1':
+ resolution: {integrity: sha512-moyKm0YZlHdHohzm1YwgAyesqnE853rO0REMfJLFAova51wF9BNi+3ZW2PeS7Vqvn6HeJuepLpAHbBdZctxpHA==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
- '@swc/core-linux-arm64-musl@1.7.5':
- resolution: {integrity: sha512-5ArGdqvFMszNHdi4a67vopeYq8d1K+FuTWDrblHrAvZFhAyv+GQz2PnKqYOgl0sWmQxsNPfNwBFtxACpUO3Jzg==}
+ '@swc/core-linux-arm64-musl@1.16.1':
+ resolution: {integrity: sha512-kKGBO9wdapiSzuf5ZzZ2fYtlu1BNSYtIIUxvH1ir/gcelTOREEHGDCLTDFx/2Knf878nU11A40z7LxwasEFxqA==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
+ libc: [musl]
+
+ '@swc/core-linux-ppc64-gnu@1.16.1':
+ resolution: {integrity: sha512-nZ6qahtLxC3PM54cWOQZHxt4lTCF/3J4LIoWWzz6v7A+rLs8Dx54anYQf7mH3eIi8KlNpgKci/ie8ZSqFN8O7A==}
+ engines: {node: '>=10'}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
- '@swc/core-linux-x64-gnu@1.7.5':
- resolution: {integrity: sha512-mSVVV/PFzCGtI1nVQQyx34NwCMgSurF6ZX/me8pUAX054vsE/pSFL66xN+kQOe/1Z/LOd4UmXFkZ/EzOSnYcSg==}
+ '@swc/core-linux-s390x-gnu@1.16.1':
+ resolution: {integrity: sha512-4ji5PNzhYq193Z4/4xUaSoNJza6iCkDJSzhetrbB6KOYxsr+kxtQr8ePWhMJUiMt6JUWtXaZ1PYT8FhtED+nGA==}
+ engines: {node: '>=10'}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ '@swc/core-linux-x64-gnu@1.16.1':
+ resolution: {integrity: sha512-VJQxqrisHV+B394IgrOu8YsIIXZgffnf5tO+yc9Z/hoUpuZEvuQTjWwlnpZdpyD+0nx6LTD1/3k646JYm43yJA==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
+ libc: [glibc]
- '@swc/core-linux-x64-musl@1.7.5':
- resolution: {integrity: sha512-09hY3ZKMUORXVunESKS9yuP78+gQbr759GKHo8wyCdtAx8lCZdEjfI5NtC7/1VqwfeE32/U6u+5MBTVhZTt0AA==}
+ '@swc/core-linux-x64-musl@1.16.1':
+ resolution: {integrity: sha512-r9oV1mwxxsIGcLV1IQ/tw76MW3doatKze1QFWuC+a7QqJUkhY/bKTSVk6NpKKUGm2LDsE33Va8VqSClfA7vSiQ==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
+ libc: [musl]
- '@swc/core-win32-arm64-msvc@1.7.5':
- resolution: {integrity: sha512-B/UDtPI3RlYRFW42xQxOpl6kI/9LtkD7No+XeRIKQTPe15EP2o+rUlv7CmKljVBXgJ8KmaQbZlaEh1YP+QZEEQ==}
+ '@swc/core-win32-arm64-msvc@1.16.1':
+ resolution: {integrity: sha512-6huNRessoBLxWEqBm5zJXyCQ27TO7anvkdiuQ5MDO4CJni0nOXEqKtV9RllQ2TdyENKKsUMXVnIfW2hIXx/R5Q==}
engines: {node: '>=10'}
cpu: [arm64]
os: [win32]
- '@swc/core-win32-ia32-msvc@1.7.5':
- resolution: {integrity: sha512-BgLesVGmIY6Nub/sURqtSRvWYcbCE/ACfuZB3bZHVKD6nsZJJuOpdB8oC41fZPyc8yZUzL3XTBIifkT2RP+w9w==}
+ '@swc/core-win32-ia32-msvc@1.16.1':
+ resolution: {integrity: sha512-OVKJFUzphrGmsh+BGtcZDesx0YryV7/Yvy5XGgTqnrZfjnyfcr5uaqYQugCckdIlupc5Vs3XtDjRAj12z4ZPlw==}
engines: {node: '>=10'}
cpu: [ia32]
os: [win32]
- '@swc/core-win32-x64-msvc@1.7.5':
- resolution: {integrity: sha512-CnF557tidLfQRPczcqDJ8x+LBQYsFa0Ra6w2+YU1iFUboaI2jJVuqt3vEChu80y6JiRIBAaaV2L/GawDJh1dIQ==}
+ '@swc/core-win32-x64-msvc@1.16.1':
+ resolution: {integrity: sha512-Bt+VIhWYCGk4urklnkkteLUOeLv1VxigwTCeB/xC6rBZxY6IIKdDwCJf6on3E3SUGsIqmQS6QqtuJQc1VxF4Aw==}
engines: {node: '>=10'}
cpu: [x64]
os: [win32]
- '@swc/core@1.7.5':
- resolution: {integrity: sha512-qKK0/Ta4qvxs/ok3XyYVPT7OBenwRn1sSINf1cKQTBHPqr7U/uB4k2GTl6JgEs8H4PiJrMTNWfMLTucIoVSfAg==}
+ '@swc/core@1.16.1':
+ resolution: {integrity: sha512-nUaeu91O5QZKrQdaDCHd402ogUIoNOOjpkZNq0UomWK0G6gDaGmLhvddF1/3BXf5O8aLyo6ZPY/aMDWvaJQ/hg==}
engines: {node: '>=10'}
peerDependencies:
- '@swc/helpers': '*'
+ '@swc/helpers': '>=0.5.17'
peerDependenciesMeta:
'@swc/helpers':
optional: true
@@ -456,50 +861,27 @@ packages:
'@swc/counter@0.1.3':
resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
- '@swc/types@0.1.12':
- resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==}
+ '@swc/types@0.1.28':
+ resolution: {integrity: sha512-V6Mnml8v09QALx6K0elJ7o9K/MkVDtW3t6L+7Ou/JcWtb3xwId2AH4FeOceySd2JaO87IMw4+6vSZxLm34LPbw==}
- '@szmarczak/http-timer@4.0.6':
- resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==}
- engines: {node: '>=10'}
-
- '@szmarczak/http-timer@5.0.1':
- resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==}
- engines: {node: '>=14.16'}
+ '@tokenizer/inflate@0.4.1':
+ resolution: {integrity: sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==}
+ engines: {node: '>=18'}
'@tokenizer/token@0.3.0':
resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==}
- '@trysound/sax@0.2.0':
- resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
- engines: {node: '>=10.13.0'}
-
- '@tsconfig/node10@1.0.11':
- resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==}
-
- '@tsconfig/node12@1.0.11':
- resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==}
-
- '@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==}
-
- '@tybys/wasm-util@0.9.0':
- resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==}
-
- '@types/cacheable-request@6.0.3':
- resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==}
-
- '@types/glob@7.2.0':
- resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==}
+ '@tybys/wasm-util@0.10.3':
+ resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==}
'@types/htmlhint@1.1.5':
resolution: {integrity: sha512-BnMb05tZKcK0M/GK28H1jmCYRDqhmMUbxakbmmrBJ2vNpKPHLmAEWkq4UXdPN3cq3MDySZizhcbmYEg9i9G/QA==}
- '@types/http-cache-semantics@4.0.4':
- resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==}
+ '@types/http-cache-semantics@4.2.0':
+ resolution: {integrity: sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==}
+
+ '@types/imagemin-gifsicle@7.0.4':
+ resolution: {integrity: sha512-ZghMBd/Jgqg5utTJNPmvf6DkuHzMhscJ8vgf/7MUGCpO+G+cLrhYltL+5d+h3A1B4W73S2SrmJZ1jS5LACpX+A==}
'@types/imagemin-jpegtran@5.0.4':
resolution: {integrity: sha512-PSMxOeJa8q94Y+qx8Yriw+qj1+vH5xWpvar63o6SGO0Xi5RlKuwHHfJmN2GRUngPrlhe394jOUmpVq8jQlVmFA==}
@@ -507,65 +889,203 @@ packages:
'@types/imagemin-mozjpeg@8.0.4':
resolution: {integrity: sha512-ZCAxV8SYJB8ehwHpnbRpHjg5Wc4HcyuAMiDhXbkgC7gujDoOTyHO3dhDkUtZ1oK1DLBRZapqG9etdLVhUml7yQ==}
- '@types/imagemin-svgo@10.0.5':
- resolution: {integrity: sha512-9U2Rf7vWBHeqJvzmWNP3vYAKqR0208QqQ9Mkrq9OLIL5AeoF/dRVRou6iUYCufBSim57BpBpCJhZLrTgfS3k1g==}
+ '@types/imagemin-svgo@11.0.0':
+ resolution: {integrity: sha512-NNwCDWaiD8u9zMgRZBwClgnhovpZJeckfAHEBRgBvRmUZQoja6+XzGKZHJra32+8dp6e1yL4fc2S9rM8d94acQ==}
'@types/imagemin-zopfli@7.0.4':
resolution: {integrity: sha512-rBPcaLKAbUEP96ak6Bylm8nNHzgCdP+bkMr8bgzmGC3rF4ijDWySv9jFPysaMp4fQepCtptUSJ+/c7dYotQ8Zw==}
- '@types/imagemin@9.0.0':
- resolution: {integrity: sha512-4IaT+BdPUAFf/AAy3XlFAbqGk4RawhdidxWO5XTe+PJAYAr4d7m2FHiqyEPXbDpwS+IaLIJq5AIjLE9HcwMGBg==}
+ '@types/imagemin@9.0.1':
+ resolution: {integrity: sha512-xMWpvrUhtYxl6EeW+UhVH3rwUKhCRx21XddcoWByjDAasXZT5pQaCn0YVnXoTijX5hlTrGqV4TGQL/Htpp00+w==}
'@types/keyv@3.1.4':
resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
- '@types/minimatch@5.1.2':
- resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==}
-
- '@types/node-notifier@8.0.5':
- resolution: {integrity: sha512-LX7+8MtTsv6szumAp6WOy87nqMEdGhhry/Qfprjm1Ma6REjVzeF7SCyvPtp5RaF6IkXCS9V4ra8g5fwvf2ZAYg==}
-
- '@types/node@22.1.0':
- resolution: {integrity: sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw==}
+ '@types/node@26.4.0':
+ resolution: {integrity: sha512-faiGnoIrLH/V8cibOMEAZ8pMw6oXqSukl29ra4mN8GdaB2ZewzeaLj+INpV5N+Z1eKWzY+IzaIZH2EIR6YZRNQ==}
'@types/responselike@1.0.3':
resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==}
- '@types/shelljs@0.8.15':
- resolution: {integrity: sha512-vzmnCHl6hViPu9GNLQJ+DZFd6BQI2DBTUeOvYHqkWQLMfKAAQYMb/xAmZkTogZI/vqXHCWkqDRymDI5p0QTi5Q==}
-
- '@types/svgo@2.6.4':
- resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==}
+ '@types/sarif@2.1.7':
+ resolution: {integrity: sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ==}
'@types/yargs-parser@21.0.3':
resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
- '@types/yargs@17.0.32':
- resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==}
+ '@types/yargs@17.0.35':
+ resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==}
+
+ '@typescript/typescript-aix-ppc64@7.0.2':
+ resolution: {integrity: sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==}
+ engines: {node: '>=16.20.0'}
+ cpu: [ppc64]
+ os: [aix]
+
+ '@typescript/typescript-darwin-arm64@7.0.2':
+ resolution: {integrity: sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==}
+ engines: {node: '>=16.20.0'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@typescript/typescript-darwin-x64@7.0.2':
+ resolution: {integrity: sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==}
+ engines: {node: '>=16.20.0'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@typescript/typescript-freebsd-arm64@7.0.2':
+ resolution: {integrity: sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==}
+ engines: {node: '>=16.20.0'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@typescript/typescript-freebsd-x64@7.0.2':
+ resolution: {integrity: sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==}
+ engines: {node: '>=16.20.0'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@typescript/typescript-linux-arm64@7.0.2':
+ resolution: {integrity: sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==}
+ engines: {node: '>=16.20.0'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@typescript/typescript-linux-arm@7.0.2':
+ resolution: {integrity: sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==}
+ engines: {node: '>=16.20.0'}
+ cpu: [arm]
+ os: [linux]
+
+ '@typescript/typescript-linux-loong64@7.0.2':
+ resolution: {integrity: sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==}
+ engines: {node: '>=16.20.0'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@typescript/typescript-linux-mips64el@7.0.2':
+ resolution: {integrity: sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==}
+ engines: {node: '>=16.20.0'}
+ cpu: [mips64el]
+ os: [linux]
+
+ '@typescript/typescript-linux-ppc64@7.0.2':
+ resolution: {integrity: sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==}
+ engines: {node: '>=16.20.0'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@typescript/typescript-linux-riscv64@7.0.2':
+ resolution: {integrity: sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==}
+ engines: {node: '>=16.20.0'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@typescript/typescript-linux-s390x@7.0.2':
+ resolution: {integrity: sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==}
+ engines: {node: '>=16.20.0'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@typescript/typescript-linux-x64@7.0.2':
+ resolution: {integrity: sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==}
+ engines: {node: '>=16.20.0'}
+ cpu: [x64]
+ os: [linux]
+
+ '@typescript/typescript-netbsd-arm64@7.0.2':
+ resolution: {integrity: sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==}
+ engines: {node: '>=16.20.0'}
+ cpu: [arm64]
+ os: [netbsd]
- acorn-walk@8.3.3:
- resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==}
- engines: {node: '>=0.4.0'}
+ '@typescript/typescript-netbsd-x64@7.0.2':
+ resolution: {integrity: sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==}
+ engines: {node: '>=16.20.0'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@typescript/typescript-openbsd-arm64@7.0.2':
+ resolution: {integrity: sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==}
+ engines: {node: '>=16.20.0'}
+ cpu: [arm64]
+ os: [openbsd]
- acorn@8.12.1:
- resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==}
- engines: {node: '>=0.4.0'}
+ '@typescript/typescript-openbsd-x64@7.0.2':
+ resolution: {integrity: sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==}
+ engines: {node: '>=16.20.0'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@typescript/typescript-sunos-x64@7.0.2':
+ resolution: {integrity: sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==}
+ engines: {node: '>=16.20.0'}
+ cpu: [x64]
+ os: [sunos]
+
+ '@typescript/typescript-win32-arm64@7.0.2':
+ resolution: {integrity: sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==}
+ engines: {node: '>=16.20.0'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@typescript/typescript-win32-x64@7.0.2':
+ resolution: {integrity: sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==}
+ engines: {node: '>=16.20.0'}
+ cpu: [x64]
+ os: [win32]
+
+ '@typescript/typescript6@6.0.2':
+ resolution: {integrity: sha512-mbCddXd+jm7hfx7w2YU64/Av4/NqqeG3GoRZgxPcgoTxYjhrcfJRw9ULch71SS4G+Q3bOXFhRvPqjguN0Hyp5w==}
hasBin: true
- ansi-gray@0.1.1:
- resolution: {integrity: sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==}
- engines: {node: '>=0.10.0'}
+ '@xhmikosr/archive-type@8.1.0':
+ resolution: {integrity: sha512-EXOjEbnZFE5c/nFMf4FOrEURVanzHpnkPYmnmr78u02/8hAhE0FMq8p9TK1IM0/bFr5VcyBUY0gfLm8f7dKy+Q==}
+ engines: {node: '>=20'}
+
+ '@xhmikosr/bin-check@8.2.2':
+ resolution: {integrity: sha512-Y/b0YJoCDda6DCFj8ikks06GrEWDsz/3vdgGLeectV9p+YJc76YugRjtqFdd2KTf2rnEPjalL2hcXP+x2KcSLQ==}
+ engines: {node: '>=20'}
+
+ '@xhmikosr/bin-wrapper@14.5.1':
+ resolution: {integrity: sha512-UZUuTYWxeAbTIiRKKEAmV3csoE36B3CGFZrYYn87+bSEBTyJ32p5gx5Gmj5HOgyOtioFUypbOZ1V5M/l/VoePw==}
+ engines: {node: '>=20'}
+
+ '@xhmikosr/decompress-tar@9.0.2':
+ resolution: {integrity: sha512-8nPZ6lZ3ExhsSxi/X/PMB3K+Vtsuxk43HowxYpxw4AsCHTYqFBXwC8B3Y+M/meaUOGOVm+2tFNUAfWGRjBt+Ww==}
+ engines: {node: '>=20'}
+
+ '@xhmikosr/decompress-tarbz2@9.0.2':
+ resolution: {integrity: sha512-m0DvZhE7remCxtS8xY2iHSjivT4v+iyYDdfNoeuu8Nm+7g8xEXdLKSyDEicu4u1ImJLLGEfjMuTLera/F6UGWw==}
+ engines: {node: '>=20'}
+
+ '@xhmikosr/decompress-targz@9.0.1':
+ resolution: {integrity: sha512-1JXu2b6yrpm5EuBoOzMU57B4qrHXJKWQQ7LlMynNEiz85mEjDciO3ayf//GXaTLLCEKiHjWlU3q3THjgf7uODA==}
+ engines: {node: '>=20'}
+
+ '@xhmikosr/decompress-unzip@8.2.1':
+ resolution: {integrity: sha512-2MS94QnmXQwjkKN8WyFiu1sU7J3rcWJcMze4kRYsX7tN+CXpUGECgkh4YSOhujpkWPuVlFudIziJHO/TxOqkQQ==}
+ engines: {node: '>=20'}
+
+ '@xhmikosr/decompress@11.1.4':
+ resolution: {integrity: sha512-ZbYL7SAfY37/TMpopqBR3mQiuQ76kI/RNpN4q82YHSw/UxktZNy8P4wgiKPSrTImMAWRaUG8UK1pgEa56YdLaw==}
+ engines: {node: '>=20'}
+
+ '@xhmikosr/downloader@16.3.1':
+ resolution: {integrity: sha512-M67dvznaFbsvoqhGT4FsHWysaXXQ8386OViGZm0WOyQS3apW9p16WgvHp9nWj2vfKQAR2ZdqIBPNCHSM5rKSCg==}
+ engines: {node: '>=20'}
+
+ '@xhmikosr/os-filter-obj@4.1.0':
+ resolution: {integrity: sha512-y5ArHvQ7BVule/+L9yE2nYMhceiJhgsqo58lOfnisQ7bg+Kjfmkgr7JBuVFiTkl+ErdShpp829QstZQyLugl8g==}
+ engines: {node: '>=20'}
ansi-regex@2.1.1:
resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==}
engines: {node: '>=0.10.0'}
- ansi-regex@5.0.1:
- resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
- engines: {node: '>=8'}
-
- ansi-regex@6.0.1:
- resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
+ ansi-regex@6.3.0:
+ resolution: {integrity: sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ==}
engines: {node: '>=12'}
ansi-styles@2.2.1:
@@ -576,62 +1096,55 @@ packages:
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
engines: {node: '>=8'}
- ansi-styles@6.2.1:
- resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
+ ansi-styles@6.2.3:
+ resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}
engines: {node: '>=12'}
- ansi-wrap@0.1.0:
- resolution: {integrity: sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==}
- engines: {node: '>=0.10.0'}
-
arch@2.2.0:
resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==}
- archive-type@3.2.0:
- resolution: {integrity: sha512-6cAWDM0lUYTbb7F436FAjbBYnsn5E3L2AgTOLzrFfLt7FVM6uJwKUvllE8VjLKTmKCU8PqtWlUAezEYjg5iGqA==}
- engines: {node: '>=0.10.0'}
-
archive-type@4.0.0:
resolution: {integrity: sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==}
engines: {node: '>=4'}
- arg@4.1.3:
- resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
-
- arr-diff@2.0.0:
- resolution: {integrity: sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA==}
- engines: {node: '>=0.10.0'}
-
- arr-flatten@1.1.0:
- resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==}
- engines: {node: '>=0.10.0'}
-
- array-differ@1.0.0:
- resolution: {integrity: sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==}
- engines: {node: '>=0.10.0'}
-
array-find-index@1.0.2:
resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==}
engines: {node: '>=0.10.0'}
- array-uniq@1.0.3:
- resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==}
- engines: {node: '>=0.10.0'}
+ async@3.2.6:
+ resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==}
- array-unique@0.2.1:
- resolution: {integrity: sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==}
- engines: {node: '>=0.10.0'}
+ atomic-sleep@1.0.0:
+ resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==}
+ engines: {node: '>=8.0.0'}
- async-each-series@1.1.0:
- resolution: {integrity: sha512-/VIpPVIJJlJObJiXkHBJ1RhjDtydBRG/3/dWpsXoVGOShNw5tameXnC7Yys+wpb0p/myItxGmSGgNi/dNlsIiA==}
- engines: {node: '>=0.8.0'}
+ available-typed-arrays@1.0.7:
+ resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
+ engines: {node: '>= 0.4'}
- async@3.2.3:
- resolution: {integrity: sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==}
+ b4a@1.8.1:
+ resolution: {integrity: sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw==}
+ peerDependencies:
+ react-native-b4a: '*'
+ peerDependenciesMeta:
+ react-native-b4a:
+ optional: true
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+ balanced-match@4.0.4:
+ resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
+ engines: {node: 18 || 20 || >=22}
+
+ bare-events@2.9.2:
+ resolution: {integrity: sha512-AIPKioV7/Y/8KfZ3AAhjPJxLLbY49S64Ym5DakZlUg75qQiTgUq9hEJoEwa4eUezPUlXRy/i5NpsKvo9jgKmoA==}
+ peerDependencies:
+ bare-abort-controller: '*'
+ peerDependenciesMeta:
+ bare-abort-controller:
+ optional: true
+
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
@@ -639,66 +1152,49 @@ packages:
resolution: {integrity: sha512-3vqtKL1N45I5dV0RdssXZG7X6pCqQrWPNOlBPZPrd+QkE2HEhR57Z04m0KtpbsZH73j+a3F8UD1TQnn+ExTvIA==}
engines: {node: '>=0.10.0'}
- bin-build@2.2.0:
- resolution: {integrity: sha512-m8gaq/BdoePIT5RlHW3KNJZwNkg9YtPn2C89x85/0KYIExoHMm3D/RL/Wxrvum9CI6pbF2KUQa8a/WWFudVmng==}
- engines: {node: '>=0.10.0'}
-
bin-build@3.0.0:
resolution: {integrity: sha512-jcUOof71/TNAI2uM5uoUaDq2ePcVBQ3R/qhxAz1rX7UfvduAL/RXD3jXzvn8cVcDJdGVkiR1shal3OH0ImpuhA==}
engines: {node: '>=4'}
- bin-check@2.0.0:
- resolution: {integrity: sha512-jf6fesAGnXBynRU3JLpo0qe8vw8JBPBJCKK0v8NV3iH1P2UkQ6UEcIy7uPw1OdWkPUtpmX1uqeyTGrpeKd2CwQ==}
- engines: {node: '>=0.10.0'}
-
bin-check@4.1.0:
resolution: {integrity: sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==}
engines: {node: '>=4'}
- bin-version-check@2.1.0:
- resolution: {integrity: sha512-3lUeqGAbnWQG7OCfIiHXw1EmzzvAGlMYqqgRahkr7oDeY1Qra8r2DZH2bbfXZI4NA3aaD1Ap+xt8CeVO/fftrw==}
- engines: {node: '>=0.10.0'}
- hasBin: true
-
bin-version-check@4.0.0:
resolution: {integrity: sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ==}
engines: {node: '>=6'}
- bin-version-check@5.1.0:
- resolution: {integrity: sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g==}
- engines: {node: '>=12'}
-
- bin-version@1.0.4:
- resolution: {integrity: sha512-o9u3aS7w6RqoH9BErxuilhQG2fn3srr3ZekEEGailMnj5F+0p+R3TXENvO+vGaLnKlmq8xhhh/Fvl1RRxx/FdQ==}
- engines: {node: '>=0.10.0'}
-
bin-version@3.1.0:
resolution: {integrity: sha512-Mkfm4iE1VFt4xd4vH+gx+0/71esbfus2LsnCGe8Pi4mndSPyT+NGES/Eg99jx8/lUGWfu3z2yuB/bt5UB+iVbQ==}
engines: {node: '>=6'}
- bin-version@6.0.0:
- resolution: {integrity: sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==}
- engines: {node: '>=12'}
-
- bin-wrapper@3.0.2:
- resolution: {integrity: sha512-5QEiUnaE7hgRlQxaV2jpeTg0+IA3o4zZ2sduuSqyJCdOuJ1wDuEmM1ntGelDf4ueCOaOam4bOMtOU4W6lG+hUg==}
- engines: {node: '>=0.10.0'}
-
bin-wrapper@4.1.0:
resolution: {integrity: sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q==}
engines: {node: '>=6'}
+ binary-version-check@6.1.0:
+ resolution: {integrity: sha512-REKdLKmuViV2WrtWXvNSiPX04KbIjfUV3Cy8batUeOg+FtmowavzJorfFhWq95cVJzINnL/44ixP26TrdJZACA==}
+ engines: {node: '>=18'}
+
+ binary-version@7.1.0:
+ resolution: {integrity: sha512-Iy//vPc3ANPNlIWd242Npqc8MK0a/i4kVcHDlDA6HNMv5zMxz4ulIFhOSYJVKw/8AbHdHy0CnGYEt1QqSXxPsw==}
+ engines: {node: '>=18'}
+
bl@1.2.3:
resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==}
boolbase@1.0.0:
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
- brace-expansion@1.1.11:
- resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+ brace-expansion@1.1.18:
+ resolution: {integrity: sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==}
+
+ brace-expansion@2.1.4:
+ resolution: {integrity: sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==}
- brace-expansion@2.0.1:
- resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+ brace-expansion@5.0.9:
+ resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==}
+ engines: {node: 20 || >=22}
braces@3.0.3:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
@@ -722,21 +1218,29 @@ packages:
buffer@5.7.1:
resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
- cacheable-lookup@5.0.4:
- resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==}
- engines: {node: '>=10.6.0'}
+ byte-counter@0.1.0:
+ resolution: {integrity: sha512-jheRLVMeUKrDBjVw2O5+k4EvR4t9wtxHL+bo/LxfkxsVeuGMy3a5SEGgXdAFA4FSzTrU8rQXQIrsZ3oBq5a0pQ==}
+ engines: {node: '>=20'}
cacheable-lookup@7.0.0:
resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==}
engines: {node: '>=14.16'}
- cacheable-request@12.0.1:
- resolution: {integrity: sha512-Yo9wGIQUaAfIbk+qY0X4cDQgCosecfBe3V9NSyeY4qPC2SAkbCS4Xj79VP8WOzitpJUZKc/wsRCYF5ariDIwkg==}
+ cacheable-request@13.0.19:
+ resolution: {integrity: sha512-SVXGH037+Mo1aIMO5B2UcleR43FGjFdN+M8JObSyEoQ2Mn4CODRWx28gN5jiTF0n5ItsgtIZfyargMNs8GX4kg==}
engines: {node: '>=18'}
- cacheable-request@7.0.4:
- 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'}
+
+ call-bind@1.0.9:
+ resolution: {integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==}
+ engines: {node: '>= 0.4'}
+
+ call-bound@1.0.4:
+ resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
+ engines: {node: '>= 0.4'}
callsites@4.2.0:
resolution: {integrity: sha512-kfzR4zzQtAE9PC7CzZsjl3aBNbXWuXiSeOCdLcPpBfGW8YuCqQHcRPFDbr/BPVmd3EEPVpuFzLyuT/cUhPr4OQ==}
@@ -750,10 +1254,6 @@ packages:
resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==}
engines: {node: '>=0.10.0'}
- caw@1.2.0:
- resolution: {integrity: sha512-GIAlMoessjWW8p0mkStU4kMvV35toVCAyOWhUajk7O0d7wJI8F9TDjfrkSoO26b0d1QsnDLmw5I3X+yd6OKorQ==}
- engines: {node: '>=0.10.0'}
-
caw@2.0.1:
resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==}
engines: {node: '>=4'}
@@ -766,30 +1266,17 @@ packages:
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}
+ chalk@6.0.0:
+ resolution: {integrity: sha512-2uNTXIuTTxk7ciZgAU1BQcgnchcG0xXnrs6jzkQfj9SsRa9M2s5zE8WT96hS6KmG4MzWHSrvH43DF1m4XRkrFg==}
+ engines: {node: '>=22'}
change-file-extension@0.1.1:
resolution: {integrity: sha512-lB0j9teu8JtDPDHRfU8pNH33w4wMu5bOaKoT4PxH+AKugBrIfpiJMTTKIm0TErNeJPkeQEgvH31YpccTwOKPRg==}
engines: {node: '>=18'}
- cliui@8.0.1:
- resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
- engines: {node: '>=12'}
-
- clone-response@1.0.3:
- resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==}
-
- clone-stats@0.0.1:
- resolution: {integrity: sha512-dhUqc57gSMCo6TX85FLfe51eC/s+Im2MLkAgJwfaRRexR2tA4dd3eLEW4L6efzHc2iNorrRRXITifnDLlRrhaA==}
-
- clone@1.0.4:
- resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
- engines: {node: '>=0.8'}
-
- co@3.1.0:
- resolution: {integrity: sha512-CQsjCRiNObI8AtTsNIBDRMQ4oMR83CzEswHYahClvul7gKk+lDQiOKv+5qh7LQWf5sh6jkZNispz/QlsZxyNgA==}
+ cliui@9.0.1:
+ resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==}
+ engines: {node: '>=20'}
color-convert@2.0.1:
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
@@ -798,23 +1285,20 @@ packages:
color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
- color-string@1.9.1:
- resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
-
- color-support@1.1.3:
- resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==}
- hasBin: true
-
- color@4.2.3:
- resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
- engines: {node: '>=12.5.0'}
-
colorette@2.0.20:
resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
+ commander@11.1.0:
+ resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==}
+ engines: {node: '>=16'}
+
commander@2.20.3:
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
+ commander@6.2.1:
+ resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==}
+ engines: {node: '>= 6'}
+
commander@7.2.0:
resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
engines: {node: '>= 10'}
@@ -823,17 +1307,9 @@ packages:
resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
engines: {node: '>= 12'}
- commander@9.5.0:
- resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==}
- engines: {node: ^12.20.0 || >=14}
-
concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
- concat-stream@1.6.2:
- resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==}
- engines: {'0': node >= 0.8}
-
config-chain@1.1.13:
resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==}
@@ -844,32 +1320,26 @@ packages:
resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
engines: {node: '>= 0.6'}
+ content-disposition@2.0.1:
+ resolution: {integrity: sha512-e+H0ZXHSWYrENhQzw1LPuP4oF5MzVKmDU6d3hxlvaPEYLLg62MxtQNPRx4SYSuYJSBUgnQIG4HIN2tEtNv7Dog==}
+ engines: {node: '>=18'}
+
convert-hrtime@5.0.0:
resolution: {integrity: sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==}
engines: {node: '>=12'}
- convert-source-map@1.9.0:
- resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
-
core-util-is@1.0.3:
resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
- create-require@1.1.1:
- resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
-
- cross-spawn@5.1.0:
- resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==}
-
- cross-spawn@6.0.5:
- resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==}
- engines: {node: '>=4.8'}
-
- cross-spawn@7.0.3:
- resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
+ cross-spawn@7.0.6:
+ resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
- css-select@5.1.0:
- resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==}
+ css-select@5.2.2:
+ resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==}
+
+ css-select@6.0.0:
+ resolution: {integrity: sha512-rZZVSLle8v0+EY8QAkDWrKhpgt6SA5OtHsgBnsj6ZaLb5dmDVOWUDtQitd9ydxxvEjhewNudS6eTVU7uOyzvXw==}
css-tree@2.2.1:
resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==}
@@ -879,8 +1349,16 @@ packages:
resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==}
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
- css-what@6.1.0:
- resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==}
+ css-tree@3.2.1:
+ resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==}
+ engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
+
+ css-what@6.2.2:
+ resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==}
+ engines: {node: '>= 6'}
+
+ css-what@7.0.0:
+ resolution: {integrity: sha512-wD5oz5xibMOPHzy13CyGmogB3phdvcDaB5t0W/Nr5Z2O/agcB8YwOz6e2Lsp10pNDzBoDO9nVa3RGs/2BttpHQ==}
engines: {node: '>= 6'}
csso@5.0.5:
@@ -891,16 +1369,11 @@ packages:
resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==}
engines: {node: '>=0.10.0'}
- cwebp-bin@8.0.0:
- resolution: {integrity: sha512-j2s6jA84aG20lB0i/FBwqZGc8nHx4VASUK8OTDxy3xoUHoX/+pP6T15/TnWwhMcD0pZ05y5GgRPkurufOC8tnQ==}
- engines: {node: ^14.13.1 || >=16.0.0}
- hasBin: true
-
- dateformat@2.2.0:
- resolution: {integrity: sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw==}
+ dateformat@4.6.3:
+ resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==}
- debug@4.3.6:
- resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==}
+ debug@4.4.3:
+ resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
@@ -912,9 +1385,13 @@ packages:
resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
engines: {node: '>=0.10.0'}
- decompress-response@6.0.0:
- resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
- engines: {node: '>=10'}
+ decompress-response@10.0.0:
+ resolution: {integrity: sha512-oj7KWToJuuxlPr7VV0vabvxEIiqNMo+q0NueIiL3XhtwC6FVOX7Hr1c0C4eD0bmf7Zr+S/dSf2xvkH3Ad6sU3Q==}
+ engines: {node: '>=20'}
+
+ decompress-response@3.3.0:
+ resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==}
+ engines: {node: '>=4'}
decompress-tar@4.1.1:
resolution: {integrity: sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==}
@@ -936,22 +1413,14 @@ packages:
resolution: {integrity: sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==}
engines: {node: '>=4'}
- deep-extend@0.6.0:
- resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
- engines: {node: '>=4.0.0'}
-
- defer-to-connect@2.0.1:
- 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'}
- detect-libc@2.0.3:
- resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
+ detect-libc@2.1.2:
+ resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
engines: {node: '>=8'}
- diff@4.0.2:
- resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
- engines: {node: '>=0.3.1'}
-
dom-serializer@2.0.0:
resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
@@ -962,17 +1431,13 @@ packages:
resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
engines: {node: '>= 4'}
- domutils@3.1.0:
- resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==}
+ domutils@3.2.2:
+ resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==}
dot-prop@8.0.2:
resolution: {integrity: sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ==}
engines: {node: '>=16'}
- download@4.4.3:
- resolution: {integrity: sha512-yOTsksXxUQ9b/p/HA3g9L97JZThcAKq8v3+Afwhf/kIoV0spu6pOvj+OKQbyGKYAwBGqSPbO+x1pCFSg5ce9OA==}
- engines: {node: '>=0.10.0'}
-
download@6.2.5:
resolution: {integrity: sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA==}
engines: {node: '>=4'}
@@ -981,30 +1446,18 @@ packages:
resolution: {integrity: sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==}
engines: {node: '>=6'}
- duplexer2@0.0.2:
- resolution: {integrity: sha512-+AWBwjGadtksxjOQSFDhPNQbed7icNXApT4+2BNpsXzcCBiInq2H9XW0O8sfHFaPmnQRs7cg/P0fAr2IWQSW0g==}
-
- duplexer2@0.1.4:
- resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==}
-
- duplexify@3.7.1:
- resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==}
-
- each-async@1.1.1:
- resolution: {integrity: sha512-0hJGub96skwr+sUojv7zQ0kc9i4jn3SwLiLk8Jr7KDz7aaaMzkN5UX3a/9ZhzC0OfZVyXHhlHcjC0KVOiKZ+HQ==}
- engines: {node: '>=0.10.0'}
-
- eastasianwidth@0.2.0:
- resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+ dunder-proto@1.0.1:
+ resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
+ engines: {node: '>= 0.4'}
- emoji-regex@8.0.0:
- resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+ duplexer3@0.1.5:
+ resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==}
- emoji-regex@9.2.2:
- resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+ emoji-regex@10.6.0:
+ resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
- end-of-stream@1.4.4:
- resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
+ end-of-stream@1.4.5:
+ resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==}
entities@4.5.0:
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
@@ -1014,28 +1467,36 @@ packages:
resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==}
engines: {node: '>=18'}
- error-ex@1.3.2:
- resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
+ error-ex@1.3.4:
+ resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==}
+
+ es-define-property@1.0.1:
+ resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
+ engines: {node: '>= 0.4'}
+
+ es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
- escalade@3.1.2:
- resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
+ es-object-atoms@1.1.2:
+ resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==}
+ engines: {node: '>= 0.4'}
+
+ escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
engines: {node: '>=6'}
escape-string-regexp@1.0.5:
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
engines: {node: '>=0.8.0'}
- escape-string-regexp@5.0.0:
- resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
- engines: {node: '>=12'}
+ events-universal@1.0.1:
+ resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==}
exec-buffer@3.2.0:
resolution: {integrity: sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA==}
engines: {node: '>=4'}
- exec-series@1.0.3:
- resolution: {integrity: sha512-VkmGmKa4oWkVBcPPfSzOEmry9ELWKk4oodvXpmtYmvGD82k/TnT0CGNw9VoxQLYGwNJR6fIaXpHUhBm4tNTSMQ==}
-
execa@0.7.0:
resolution: {integrity: sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==}
engines: {node: '>=4'}
@@ -1056,19 +1517,14 @@ packages:
resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
engines: {node: '>=16.17'}
- executable@1.1.0:
- resolution: {integrity: sha512-qZLuUgqTqYRLdF8Gl56y/JhT+X15uPX6y0Vpmj0cF4SCwbswBPc6yxzr1nClQa+SwRQ5Sk9+Mxa3ZBX9t6aWzg==}
- engines: {node: '>=0.10.0'}
- hasBin: true
+ execa@9.6.1:
+ resolution: {integrity: sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==}
+ engines: {node: ^18.19.0 || >=20.5.0}
executable@4.1.1:
resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==}
engines: {node: '>=4'}
- expand-brackets@0.1.5:
- resolution: {integrity: sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA==}
- engines: {node: '>=0.10.0'}
-
ext-list@2.2.2:
resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==}
engines: {node: '>=0.10.0'}
@@ -1077,54 +1533,60 @@ packages:
resolution: {integrity: sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==}
engines: {node: '>=4'}
- extend-shallow@2.0.1:
- resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
- engines: {node: '>=0.10.0'}
-
- extend@3.0.2:
- resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
-
- extglob@0.3.2:
- resolution: {integrity: sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg==}
- engines: {node: '>=0.10.0'}
+ fast-copy@4.1.0:
+ resolution: {integrity: sha512-f5oNUvGAmBPLP85im9czQ7fVWh3RfcIIIzyXrcXKmCiWoDn+CRmfsoQN3jmE5J+UEquj4Ugc1woTaxD0oa37Gg==}
- fancy-log@1.3.3:
- resolution: {integrity: sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==}
- engines: {node: '>= 0.10'}
-
- fast-equals@5.0.1:
- resolution: {integrity: sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==}
+ fast-equals@5.4.1:
+ resolution: {integrity: sha512-DjlFSM5Pk9cGcL0q5QXl66eGzx0N6szNgaswwc5ZphlBohjTVJSnGgI+rJVOgOi65qUoQnDZN4nDqi33udtydQ==}
engines: {node: '>=6.0.0'}
- fast-glob@3.3.2:
- resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
+ fast-fifo@1.3.2:
+ resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
+
+ fast-glob@3.3.3:
+ resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
engines: {node: '>=8.6.0'}
- fast-xml-parser@4.4.1:
- resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==}
- hasBin: true
+ fast-json-stable-stringify@2.1.0:
+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+
+ fast-safe-stringify@2.1.1:
+ resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==}
- fastq@1.17.1:
- resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
+ fastq@1.20.3:
+ resolution: {integrity: sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==}
fd-slicer@1.1.0:
resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==}
+ fdir@6.5.0:
+ resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ picomatch: ^3 || ^4
+ peerDependenciesMeta:
+ picomatch:
+ optional: true
+
figures@1.7.0:
resolution: {integrity: sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==}
engines: {node: '>=0.10.0'}
+ figures@6.1.0:
+ resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==}
+ engines: {node: '>=18'}
+
file-type@10.11.0:
resolution: {integrity: sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==}
engines: {node: '>=6'}
- file-type@17.1.6:
- resolution: {integrity: sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ file-type@21.3.4:
+ resolution: {integrity: sha512-Ievi/yy8DS3ygGvT47PjSfdFoX+2isQueoYP1cntFW1JLYAuS4GD7NUPGg4zv2iZfV52uDyk5w5Z0TdpRS6Q1g==}
+ engines: {node: '>=20'}
- file-type@19.3.0:
- resolution: {integrity: sha512-mROwiKLZf/Kwa/2Rol+OOZQn1eyTkPB3ZTwC0ExY6OLFCbgxHYZvBm7xI77NvfZFMKBsmuXfmLJnD4eEftEhrA==}
- engines: {node: '>=18'}
+ file-type@22.0.2:
+ resolution: {integrity: sha512-0H8TsCUGBLx+V5adH3EY52hTAcyLKbV1D4gq5cIOJ6DnQAHeV9Z2Hhuc5CoBX4YmvB2oL+JIC84z0qO7JsCoNw==}
+ engines: {node: '>=22'}
file-type@3.9.0:
resolution: {integrity: sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==}
@@ -1146,33 +1608,21 @@ packages:
resolution: {integrity: sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==}
engines: {node: '>=6'}
- filename-regex@2.0.1:
- resolution: {integrity: sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ==}
- engines: {node: '>=0.10.0'}
-
- filename-reserved-regex@1.0.0:
- resolution: {integrity: sha512-UZArj7+U+2reBBVCvVmRlyq9D7EYQdUtuNN+1iz7pF1jGcJ2L0TjiRCxsTZfj2xFbM4c25uGCUDpKTHA7L2TKg==}
- engines: {node: '>=0.10.0'}
-
filename-reserved-regex@2.0.0:
resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==}
engines: {node: '>=4'}
- filename-reserved-regex@3.0.0:
- resolution: {integrity: sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- filenamify@1.2.1:
- resolution: {integrity: sha512-DKVP0WQcB7WaIMSwDETqImRej2fepPqvXQjaVib7LRZn9Rxn5UbvK2tYTqGf1A1DkIprQQkG4XSQXSOZp7Q3GQ==}
- engines: {node: '>=0.10.0'}
+ filename-reserved-regex@4.0.1:
+ resolution: {integrity: sha512-qUet2faQFKvtvVUsEf7wCrTURwxBOIZpspsLHGifw9QCWk55ITE2FrG8XhfQqG/uxMA1xEGFVQbL+Yfm0O94+Q==}
+ engines: {node: '>=20'}
filenamify@2.1.0:
resolution: {integrity: sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==}
engines: {node: '>=4'}
- filenamify@5.1.1:
- resolution: {integrity: sha512-M45CbrJLGACfrPOkrTp3j2EcO9OBkKUYME0eiqOCa7i2poaklU0jhlIaMlr8ijLorT0uLAzrn3qXOp5684CkfA==}
- engines: {node: '>=12.20'}
+ filenamify@7.0.3:
+ resolution: {integrity: sha512-Pf0dwHrWs1GcIK15ps304fmxp2AOcfNR6vOIMvCPEy6ZztKYxzRQHlOuPVWo2HRjbCLHaRTY+kD8n3RbQ0A/fw==}
+ engines: {node: '>=20'}
fill-range@7.1.1:
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
@@ -1182,42 +1632,29 @@ packages:
resolution: {integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==}
engines: {node: '>=0.10.0'}
- find-versions@1.2.1:
- resolution: {integrity: sha512-t0ciYD8XnoFVirFJN2niUJAQ/kyZU5UDSJobyekmiMPCBsYsWd4nd75e7HU2Xf4m+1Y7iLEo3fovNRNIV5MaDQ==}
- engines: {node: '>=0.10.0'}
- hasBin: true
-
find-versions@3.2.0:
resolution: {integrity: sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==}
engines: {node: '>=6'}
- find-versions@5.1.0:
- resolution: {integrity: sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==}
- engines: {node: '>=12'}
-
- first-chunk-stream@1.0.0:
- resolution: {integrity: sha512-ArRi5axuv66gEsyl3UuK80CzW7t56hem73YGNYxNWTGNKFJUadSb9Gu9SHijYEUi8ulQMf1bJomYNwSCPHhtTQ==}
- engines: {node: '>=0.10.0'}
-
- for-in@1.0.2:
- resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==}
- engines: {node: '>=0.10.0'}
-
- for-own@0.1.5:
- resolution: {integrity: sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==}
- engines: {node: '>=0.10.0'}
+ find-versions@6.0.0:
+ resolution: {integrity: sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==}
+ engines: {node: '>=18'}
- foreground-child@3.2.1:
- resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==}
- engines: {node: '>=14'}
+ for-each@0.3.5:
+ resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
+ engines: {node: '>= 0.4'}
- form-data-encoder@4.0.2:
- resolution: {integrity: sha512-KQVhvhK8ZkWzxKxOr56CPulAhH3dobtuQ4+hNQ+HekH/Wp5gSOafqRAeTphQUJAIk0GBvHZgJ2ZGRWd5kphMuw==}
+ form-data-encoder@4.1.0:
+ resolution: {integrity: sha512-G6NsmEW15s0Uw9XnCg+33H3ViYRyiM0hMrMhhqQOR8NFc5GhYrI+6I3u7OTw7b91J2g8rtvMBZJDbcGb2YUniw==}
engines: {node: '>= 18'}
fs-constants@1.0.0:
resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
+ fs-extra@11.4.0:
+ resolution: {integrity: sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==}
+ engines: {node: '>=14.14'}
+
fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
@@ -1232,9 +1669,17 @@ packages:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*}
- get-proxy@1.1.0:
- resolution: {integrity: sha512-3cJ+77wC52qD2PqWNXtB2HkU6tQXc/X3hSMtSN0Y8c8nbYMMxF7vpsjH4H0iSt+28l/NK13DKl8iKAVGkqDFnA==}
- engines: {node: '>=0.10.0'}
+ get-east-asian-width@1.6.0:
+ resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==}
+ engines: {node: '>=18'}
+
+ get-intrinsic@1.3.0:
+ resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
+ engines: {node: '>= 0.4'}
+
+ get-proto@1.0.1:
+ resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
+ engines: {node: '>= 0.4'}
get-proxy@2.1.0:
resolution: {integrity: sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==}
@@ -1256,10 +1701,6 @@ packages:
resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==}
engines: {node: '>=6'}
- get-stream@5.2.0:
- resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==}
- engines: {node: '>=8'}
-
get-stream@6.0.1:
resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
engines: {node: '>=10'}
@@ -1272,82 +1713,41 @@ packages:
resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==}
engines: {node: '>=18'}
- giflossy@3.0.41:
- resolution: {integrity: sha512-MwUixKaFP/+3ytW+2Ct0jHSEoBew/UW029yzpsMAWnhUd20KeXtLvH3HfSEkD11wrYpWwDdznqWsFJfX5D422g==}
- engines: {node: '>=0.10.0'}
+ gifsicle@5.3.0:
+ resolution: {integrity: sha512-FJTpgdj1Ow/FITB7SVza5HlzXa+/lqEY0tHQazAJbuAdvyJtkH4wIdsR2K414oaTwRXHFLLF+tYbipj+OpYg+Q==}
+ engines: {node: '>=10'}
hasBin: true
- glob-base@0.3.0:
- resolution: {integrity: sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA==}
- engines: {node: '>=0.10.0'}
-
- glob-parent@2.0.0:
- resolution: {integrity: sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w==}
-
- glob-parent@3.1.0:
- resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==}
-
glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
- glob-stream@5.3.5:
- resolution: {integrity: sha512-piN8XVAO2sNxwVLokL4PswgJvK/uQ6+awwXUVRTGF+rRfgCZpn4hOqxiRuTEbU/k3qgKl0DACYQ/0Sge54UMQg==}
- engines: {node: '>= 0.10'}
-
- glob@10.4.5:
- resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
- hasBin: true
-
- glob@5.0.15:
- resolution: {integrity: sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==}
- deprecated: Glob versions prior to v9 are no longer supported
+ glob@13.0.6:
+ resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==}
+ engines: {node: 18 || 20 || >=22}
glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
- deprecated: Glob versions prior to v9 are no longer supported
+ deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
- globby@14.0.2:
- resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==}
+ globby@14.1.0:
+ resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==}
engines: {node: '>=18'}
- glogg@1.0.2:
- resolution: {integrity: sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==}
- engines: {node: '>= 0.10'}
-
- got@11.8.6:
- resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==}
- engines: {node: '>=10.19.0'}
+ gopd@1.2.0:
+ resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
+ engines: {node: '>= 0.4'}
- got@14.4.2:
- resolution: {integrity: sha512-+Te/qEZ6hr7i+f0FNgXx/6WQteSM/QqueGvxeYQQFm0GDfoxLVJ/oiwUKYMTeioColWUTdewZ06hmrBjw6F7tw==}
+ got@14.6.6:
+ resolution: {integrity: sha512-QLV1qeYSo5l13mQzWgP/y0LbMr5Plr5fJilgAIwgnwseproEbtNym8xpLsDzeZ6MWXgNE6kdWGBjdh3zT/Qerg==}
engines: {node: '>=20'}
- graceful-fs@4.2.11:
- resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
-
- growly@1.3.0:
- resolution: {integrity: sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==}
-
- gulp-decompress@1.2.0:
- resolution: {integrity: sha512-ChTv+4/4BwAdQLUgQoAvLFjYFvxYF6p9Mmf/b19/Lp7yNCvb8+KRkdXV8Gd7XErxtrEh8XDCCVon3DgqW4TgfA==}
- engines: {node: '>=0.10.0'}
-
- gulp-rename@1.4.0:
- resolution: {integrity: sha512-swzbIGb/arEoFK89tPY58vg3Ok1bw+d35PfUNwWqdo7KM4jkmuGA78JiDNqR+JeZFaeeHnRg9N7aihX3YPmsyg==}
+ got@7.1.0:
+ resolution: {integrity: sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==}
engines: {node: '>=4'}
- gulp-sourcemaps@1.6.0:
- resolution: {integrity: sha512-NjRy6+Qb5K1xbwOvPviD3uA4KSq2zsalPL+4vxPQPuL+kKzHjXJL10/kLaESic3LmBto8VIBHr3gIN3F9AjnhA==}
-
- gulp-util@3.0.8:
- resolution: {integrity: sha512-q5oWPc12lwSFS9h/4VIjG+1NuNDlJ48ywV2JKItY4Ycc/n1fXJeYPVQsfu5ZrhQi7FGSDBalwUCLar/GyHXKGw==}
- engines: {node: '>=0.10'}
- deprecated: gulp-util is deprecated - replace it, following the guidelines at https://medium.com/gulpjs/gulp-util-ca3b1f9f9ac5
-
- gulplog@1.0.0:
- resolution: {integrity: sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==}
- engines: {node: '>= 0.10'}
+ graceful-fs@4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
has-ansi@2.0.0:
resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==}
@@ -1357,20 +1757,30 @@ packages:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
- has-gulplog@0.1.0:
- resolution: {integrity: sha512-+F4GzLjwHNNDEAJW2DC1xXfEoPkRDmUdJ7CBYw4MpqtDwOnqdImJl7GWlpqx+Wko6//J8uKTnIe4wZSv7yCqmw==}
- engines: {node: '>= 0.10'}
+ has-property-descriptors@1.0.2:
+ resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
has-symbol-support-x@1.4.2:
resolution: {integrity: sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==}
+ has-symbols@1.1.0:
+ resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
+ engines: {node: '>= 0.4'}
+
has-to-string-tag-x@1.4.1:
resolution: {integrity: sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==}
- hasown@2.0.2:
- resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ has-tostringtag@1.0.2:
+ resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
+ engines: {node: '>= 0.4'}
+
+ hasown@2.0.4:
+ resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==}
engines: {node: '>= 0.4'}
+ help-me@5.0.0:
+ resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==}
+
hosted-git-info@2.8.9:
resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
@@ -1378,16 +1788,13 @@ packages:
resolution: {integrity: sha512-fwOzPwhRlfQ7nAAOFwLoN43BVqGeWs66DtSL7oeMAgz3EirXShH3g/tBwNTmpT9zEmIWO/OMHfuC+JqDdlgloQ==}
engines: {node: '>=0.10.0'}
- htmlhint@1.1.4:
- resolution: {integrity: sha512-tSKPefhIaaWDk/vKxAOQbN+QwZmDeJCq3bZZGbJMoMQAfTjepudC+MkuT9MOBbuQI3dLLzDWbmU7fLV3JASC7Q==}
+ htmlhint@1.9.2:
+ resolution: {integrity: sha512-PweWSPA1Pb+AVFIOSpIGu5KhLdmtk/uf/0CpjvrDf6XUWmdTyqUljlylwSxQ0AWLvPGcBxK2n8uISsI4lCOkBQ==}
+ engines: {node: '>=18'}
hasBin: true
- http-cache-semantics@4.1.1:
- resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==}
-
- http2-wrapper@1.0.3:
- resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==}
- engines: {node: '>=10.19.0'}
+ http-cache-semantics@4.2.0:
+ resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==}
http2-wrapper@2.2.1:
resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==}
@@ -1405,25 +1812,34 @@ packages:
resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
engines: {node: '>=16.17.0'}
- identifier-regex@1.0.0:
- resolution: {integrity: sha512-Rcy5cjBOM9iTR+Vwy0Llyip9u0cA99T1yiWOhDW/+PDaTQhyski0tMovsipQ/FRNDkudjLWusJ/IMVIlG5WZnQ==}
+ human-signals@8.0.1:
+ resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==}
+ engines: {node: '>=18.18.0'}
+
+ identifier-regex@1.1.0:
+ resolution: {integrity: sha512-SLX4H/vtcYlYnL7XqnuJKHU7Z8517TgsW9nmQiGOgMCjQ8V/deLYu6bEmbGoXe7WMMhc9+EUGyFFneHja8KabA==}
engines: {node: '>=18'}
ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
- ignore@5.3.1:
- resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==}
+ ignore@7.0.8:
+ resolution: {integrity: sha512-YYNsSlXBjMk92SKnkwvB5LOVSa6OznlFUGcsvrFgNJbJCd0M1XKeFVRc8ZByeCqz32FivYNHJVooLmdqrmvp/Q==}
engines: {node: '>= 4'}
- imagemin-giflossy@5.1.10:
- resolution: {integrity: sha512-oinoVmEHClkGEzDGPhNLPMgBCocd54JSbK8n2C/sj9GZCYuNMD0AT94tVGc3fwP1pSbVGcII/CdHas0XeagRuw==}
- engines: {node: '>=4'}
+ image-dimensions@2.5.1:
+ resolution: {integrity: sha512-It7CkTNp7IYA8jhvGgz8K18OAbHF3/Juk8RNEyTyMFfolJOIU1Y2wGDnzDQPbGCjyxVF/++pwIZE0BKJUEOb1g==}
+ engines: {node: '>=18'}
+ hasBin: true
- imagemin-jpegtran@7.0.0:
- resolution: {integrity: sha512-MJoyTCW8YjMJf56NorFE41SR/WkaGA3IYk4JgvMlRwguJEEd3PnP9UxA8Y2UWjquz8d+On3Ds/03ZfiiLS8xTQ==}
+ imagemin-gifsicle@7.0.0:
+ resolution: {integrity: sha512-LaP38xhxAwS3W8PFh4y5iQ6feoTSF+dTAXFRUEYQWYst6Xd+9L/iPk34QGgK/VO/objmIlmq9TStGfVY2IcHIA==}
engines: {node: '>=10'}
+ imagemin-jpegtran@8.0.0:
+ resolution: {integrity: sha512-iGaaImltX4oJ1lmS9jb7Qw3NRusQnVBr7hYJuhyL0CHRV42pDMkIGBVCHKA9j9mcWHnO5Ryu3LV7t4fU4sC4xg==}
+ engines: {node: '>=18'}
+
imagemin-mozjpeg@10.0.0:
resolution: {integrity: sha512-DK85QNOjS3/GzWYfNB3CACMZD10sIQgFDv1+WTOnZljgltQTEyATjdyUVyjKu5q4sCESQdwvwq7WEZzJ5fFjlg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -1432,16 +1848,16 @@ packages:
resolution: {integrity: sha512-kt0LFxyv7sBxUbZyvt+JXoU0HvSnmTJkEW32rZPQ9d7AQJPVh0vkz9mGkvbX0yntY2zW/3N20Yw69PBSt1UQzw==}
engines: {node: '>=18'}
- imagemin-webp@8.0.0:
- resolution: {integrity: sha512-yN6kNKir6T/U3AtP3uLHrLn9XYafk2m49EbUqLCQ3GPRRLRs+4pUQxxaHz+lnTDM+LQpkSjGQaFVcSgYqvW3dQ==}
- engines: {node: '>=14.16'}
+ imagemin-svgo@12.0.0:
+ resolution: {integrity: sha512-6f2bS/QTBsGafHCvG3FPxe3efHWq7EryznpDPg1PnfhnD4JO90sKrzW4W4AcN2HoWBsZl4yqiBWw/qxIWiPHJA==}
+ engines: {node: '>=20'}
imagemin-zopfli@7.0.0:
resolution: {integrity: sha512-nmffj58rVb0O3AlCZLBBVKGyZ5MYPZZfKxUhvA7bwPGougHl/F7EUKSse9jkgXjdvtJYG2ojJeh5N67mYgBM9g==}
engines: {node: '>=10'}
- imagemin@9.0.0:
- resolution: {integrity: sha512-oFlmioXTIrDCNYiKUVPjzUzm8M/7X74WEO6v8NFjn3ZtxjArdVJiRRdbPpq/OG4BdwaHMUz8ej9Fp4AcaDzMnA==}
+ imagemin@9.0.1:
+ resolution: {integrity: sha512-UoHOfynN8QeqRoUGunn6ilMnLpJ+utbmleP2ufcFqaGal8mY/PeOpV43N31uqtb+CBMFqQ7hxgKzIaAAnmcrdA==}
engines: {node: '>=18'}
import-lazy@3.1.0:
@@ -1462,13 +1878,8 @@ packages:
ini@1.3.8:
resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
- interpret@1.4.0:
- resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==}
- engines: {node: '>= 0.10'}
-
- ip-regex@1.0.3:
- resolution: {integrity: sha512-HjpCHTuxbR/6jWJroc/VN+npo5j0T4Vv2TAI5qdEHQx7hsL767MeccGFSsLtF694EiZKTSEqgoeU6DtGFCcuqQ==}
- engines: {node: '>=0.10.0'}
+ inspect-with-kind@1.0.5:
+ resolution: {integrity: sha512-MAQUJuIo7Xqk8EVNP+6d3CKq9c80hi4tjIbIAT6lmGW9W6WzlHiu9PS8uSuUYU+Do+j1baiFp3H25XEVxDIG2g==}
irregular-plurals@1.4.0:
resolution: {integrity: sha512-kniTIJmaZYiwa17eTtWIfm0K342seyugl6vuC8DiiyiRAJWAVlLkqGCI0Im0neo0TkXw+pRcKaBPRdcKHnQJ6Q==}
@@ -1477,39 +1888,13 @@ packages:
is-arrayish@0.2.1:
resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
- is-arrayish@0.3.2:
- resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
-
- is-buffer@1.1.6:
- resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==}
-
- is-core-module@2.15.0:
- resolution: {integrity: sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==}
+ is-callable@1.2.7:
+ resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
engines: {node: '>= 0.4'}
- is-cwebp-readable@3.0.0:
- resolution: {integrity: sha512-bpELc7/Q1/U5MWHn4NdHI44R3jxk0h9ew9ljzabiRl70/UIjL/ZAqRMb52F5+eke/VC8yTiv4Ewryo1fPWidvA==}
-
- is-docker@2.2.1:
- resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
- engines: {node: '>=8'}
- hasBin: true
-
- is-dotfile@1.0.3:
- resolution: {integrity: sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg==}
- engines: {node: '>=0.10.0'}
-
- is-equal-shallow@0.1.3:
- resolution: {integrity: sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA==}
- engines: {node: '>=0.10.0'}
-
- is-extendable@0.1.1:
- resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
- engines: {node: '>=0.10.0'}
-
- is-extglob@1.0.0:
- resolution: {integrity: sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==}
- engines: {node: '>=0.10.0'}
+ is-core-module@2.16.2:
+ resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==}
+ engines: {node: '>= 0.4'}
is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
@@ -1519,34 +1904,18 @@ packages:
resolution: {integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==}
engines: {node: '>=0.10.0'}
- is-fullwidth-code-point@3.0.0:
- resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
- engines: {node: '>=8'}
-
- is-gif@1.0.0:
- resolution: {integrity: sha512-WDzHvXD3xfQ5einLRHRH7iReMuPwuXImHikxQeTWP09kGIv2mf2ZM63e9YHVSq9kEgjJuxRSp5AzH8Hga0+lNw==}
- engines: {node: '>=0.10.0'}
-
- is-glob@2.0.1:
- resolution: {integrity: sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==}
- engines: {node: '>=0.10.0'}
-
- is-glob@3.1.0:
- resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==}
- engines: {node: '>=0.10.0'}
+ is-gif@3.0.0:
+ resolution: {integrity: sha512-IqJ/jlbw5WJSNfwQ/lHEDXF8rxhRgF6ythk2oiEvhpG29F704eX9NO6TvPfMiq9DrbwgcEDnETYNcZDPewQoVw==}
+ engines: {node: '>=6'}
is-glob@4.0.3:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
engines: {node: '>=0.10.0'}
- is-identifier@1.0.1:
- resolution: {integrity: sha512-HQ5v4rEJ7REUV54bCd2l5FaD299SGDEn2UPoVXaTHAyGviLq2menVUD2udi3trQ32uvB6LdAh/0ck2EuizrtpA==}
+ is-identifier@1.1.0:
+ resolution: {integrity: sha512-NhOds0mDx9lJu+1lBRO0xbwFo5nobA7GCk/0e5xjr6+6XugX985+0OyGX35BNrTkPAsdLcIKg02HUQJOK8D8kw==}
engines: {node: '>=18'}
- is-jpg@2.0.0:
- resolution: {integrity: sha512-ODlO0ruzhkzD3sdynIainVP5eoOFNN85rxA1+cwwnPe4dKyX0r5+hxNO5XpCrxlHcmb9vkOit9mhRD2JVuimHg==}
- engines: {node: '>=6'}
-
is-jpg@3.0.0:
resolution: {integrity: sha512-Vcd67KWHZblEKEBrtP25qLZ8wN9ICoAhl1pKUqD7SM7hf2qtuRl7loDgP5Zigh2oN/+7uj+KVyC0eRJvgOEFeQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -1558,10 +1927,6 @@ packages:
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'}
-
is-object@1.0.2:
resolution: {integrity: sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==}
@@ -1569,6 +1934,10 @@ packages:
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-png@2.0.0:
resolution: {integrity: sha512-4KPGizaVGj2LK7xwJIz8o5B2ubu1D/vcQsgOGFEDlpcvgZHto4gBnyd0ig7Ws+67ixmwKoNmu0hYnpo6AaKb5g==}
engines: {node: '>=8'}
@@ -1577,12 +1946,8 @@ packages:
resolution: {integrity: sha512-8TqC8+bdsm3YkpI2aECCDycFDl1hTB0HMVRnP3xRRa3Tqx2oVE7sBi1G6CuO9IqEyWSzbBZr1mGqdb3it9h/pg==}
engines: {node: '>=12'}
- is-posix-bracket@0.1.1:
- resolution: {integrity: sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ==}
- engines: {node: '>=0.10.0'}
-
- is-primitive@2.0.0:
- resolution: {integrity: sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==}
+ is-retry-allowed@1.2.0:
+ resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==}
engines: {node: '>=0.10.0'}
is-stream@1.1.0:
@@ -1601,129 +1966,69 @@ packages:
resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==}
engines: {node: '>=18'}
- is-svg@5.0.1:
- resolution: {integrity: sha512-mLYxDsfisQWdS4+gSblAwhATDoNMS/tx8G7BKA+aBIf7F0m1iUwMvuKAo6mW4WMleQAEE50I1Zqef9yMMfHk3w==}
- engines: {node: '>=14.16'}
+ is-svg@6.1.0:
+ resolution: {integrity: sha512-i7YPdvYuSCYcaLQrKwt8cvKTlwHcdA6Hp8N9SO3Q5jIzo8x6kH3N47W0BvPP7NdxVBmIHx7X9DK36czYYW7lHg==}
+ engines: {node: '>=20'}
+
+ is-typed-array@1.1.15:
+ resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
+ engines: {node: '>= 0.4'}
- is-url@1.2.4:
- resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==}
+ is-unicode-supported@2.1.0:
+ resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==}
+ engines: {node: '>=18'}
is-utf8@0.2.1:
resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==}
- is-valid-glob@0.3.0:
- resolution: {integrity: sha512-CvG8EtJZ8FyzVOGPzrDorzyN65W1Ld8BVnqshRCah6pFIsprGx3dKgFtjLn/Vw9kGqR4OlR84U7yhT9ZVTyWIQ==}
- engines: {node: '>=0.10.0'}
-
- is-wsl@2.2.0:
- resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
- engines: {node: '>=8'}
-
- isarray@0.0.1:
- resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==}
-
isarray@1.0.0:
resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
+ isarray@2.0.5:
+ resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
+
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+ isexe@4.0.0:
+ resolution: {integrity: sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==}
+ engines: {node: '>=20'}
+
isurl@1.0.0:
resolution: {integrity: sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==}
engines: {node: '>= 4'}
- jackspeak@3.4.3:
- resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
-
- jpegtran-bin@5.0.2:
- resolution: {integrity: sha512-4FSmgIcr8d5+V6T1+dHbPZjaFH0ogVyP4UVsE+zri7S9YLO4qAT2our4IN3sW3STVgNTbqPermdIgt2XuAJ4EA==}
+ joycon@3.1.1:
+ resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
engines: {node: '>=10'}
+
+ jpegtran-bin@7.0.0:
+ resolution: {integrity: sha512-8ecI4vXIV7eI2+nzRQsHAVaQVBGDotUY76CJZhlYaBAljBnK/509+sGGCs8eJyiS5N4tOcYZS+8Q4KgzorqlBA==}
+ engines: {node: ^14.13.1 || >=16.0.0}
hasBin: true
jshint-stylish@2.2.1:
resolution: {integrity: sha512-7ySPIM1/gONcJ1isbd1IPKuBzQ/iDTvofILFSsIaMrWZUO7OJkV9kdU0O6O1pxM+bNj/9mbJ31LyXgQgOhIa0A==}
engines: {node: '>=0.10.0'}
- json-buffer@3.0.1:
- resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
-
- json-stable-stringify-without-jsonify@1.0.1:
- resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
+ jsonfile@6.2.1:
+ resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==}
junk@4.0.1:
resolution: {integrity: sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==}
engines: {node: '>=12.20'}
- keyv@4.5.4:
- resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
+ keyv@5.6.0:
+ resolution: {integrity: sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==}
- kind-of@3.2.2:
- resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==}
+ kind-of@6.0.3:
+ resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
engines: {node: '>=0.10.0'}
- lazy-req@1.1.0:
- resolution: {integrity: sha512-Vn/JuGaYykbelAVNAhfVJxuwHQCOSNE6mqMtD+gnd+QORlAHwWVmVFqQga3yWt84G5vAwEwpT6sAsZ+tgJ88/Q==}
- engines: {node: '>=0.10.0'}
-
- lazystream@1.0.1:
- resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==}
- engines: {node: '>= 0.6.3'}
-
load-json-file@1.1.0:
resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==}
engines: {node: '>=0.10.0'}
- lodash._basecopy@3.0.1:
- resolution: {integrity: sha512-rFR6Vpm4HeCK1WPGvjZSJ+7yik8d8PVUdCJx5rT2pogG4Ve/2ZS7kfmO5l5T2o5V2mqlNIfSF5MZlr1+xOoYQQ==}
-
- lodash._basetostring@3.0.1:
- resolution: {integrity: sha512-mTzAr1aNAv/i7W43vOR/uD/aJ4ngbtsRaCubp2BfZhlGU/eORUjg/7F6X0orNMdv33JOrdgGybtvMN/po3EWrA==}
-
- lodash._basevalues@3.0.0:
- resolution: {integrity: sha512-H94wl5P13uEqlCg7OcNNhMQ8KvWSIyqXzOPusRgHC9DK3o54P6P3xtbXlVbRABG4q5gSmp7EDdJ0MSuW9HX6Mg==}
-
- lodash._getnative@3.9.1:
- resolution: {integrity: sha512-RrL9VxMEPyDMHOd9uFbvMe8X55X16/cGM5IgOKgRElQZutpX89iS6vwl64duTV1/16w5JY7tuFNXqoekmh1EmA==}
-
- lodash._isiterateecall@3.0.9:
- resolution: {integrity: sha512-De+ZbrMu6eThFti/CSzhRvTKMgQToLxbij58LMfM8JnYDNSOjkjTCIaa8ixglOeGh2nyPlakbt5bJWJ7gvpYlQ==}
-
- lodash._reescape@3.0.0:
- resolution: {integrity: sha512-Sjlavm5y+FUVIF3vF3B75GyXrzsfYV8Dlv3L4mEpuB9leg8N6yf/7rU06iLPx9fY0Mv3khVp9p7Dx0mGV6V5OQ==}
-
- lodash._reevaluate@3.0.0:
- resolution: {integrity: sha512-OrPwdDc65iJiBeUe5n/LIjd7Viy99bKwDdk7Z5ljfZg0uFRFlfQaCy9tZ4YMAag9WAZmlVpe1iZrkIMMSMHD3w==}
-
- lodash._reinterpolate@3.0.0:
- resolution: {integrity: sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==}
-
- lodash._root@3.0.1:
- resolution: {integrity: sha512-O0pWuFSK6x4EXhM1dhZ8gchNtG7JMqBtrHdoUFUWXD7dJnNSUze1GuyQr5sOs0aCvgGeI3o/OJW8f4ca7FDxmQ==}
-
- lodash.escape@3.2.0:
- resolution: {integrity: sha512-n1PZMXgaaDWZDSvuNZ/8XOcYO2hOKDqZel5adtR30VKQAtoWs/5AOeFA0vPV8moiPzlqe7F4cP2tzpFewQyelQ==}
-
- lodash.isarguments@3.1.0:
- resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==}
-
- lodash.isarray@3.0.4:
- resolution: {integrity: sha512-JwObCrNJuT0Nnbuecmqr5DgtuBppuCvGD9lxjFpAzwnVtdGoDQ1zig+5W8k5/6Gcn0gZ3936HDAlGd28i7sOGQ==}
-
- lodash.isequal@4.5.0:
- resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
-
- lodash.keys@3.1.2:
- resolution: {integrity: sha512-CuBsapFjcubOGMn3VD+24HOAPxM79tH+V6ivJL3CHYjtrawauDJHUk//Yew9Hvc6e9rbCrURGk8z6PC+8WJBfQ==}
-
- lodash.restparam@3.6.1:
- resolution: {integrity: sha512-L4/arjjuq4noiUJpt3yS6KIKDtJwNe2fIYgMqyYYKoeIfV1iEqvPwhCx23o+R9dzouGihDAPN1dTIRWa7zk8tw==}
-
- lodash.template@3.6.2:
- resolution: {integrity: sha512-0B4Y53I0OgHUJkt+7RmlDFWKjVAI/YUpWNiL9GQz5ORDr4ttgfQGo+phBWKFLJbBdtOwgMuUkdOHOnPg45jKmQ==}
-
- lodash.templatesettings@3.1.1:
- resolution: {integrity: sha512-TcrlEr31tDYnWkHFWDCV3dHYroKEXpJZ2YJYvJdhN+y4AkWMDZ5I4I8XDtUKqSAyG81N7w+I1mFEJtcED+tGqQ==}
-
log-symbols@1.0.2:
resolution: {integrity: sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==}
engines: {node: '>=0.10.0'}
@@ -1740,9 +2045,9 @@ packages:
resolution: {integrity: sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==}
engines: {node: '>=0.10.0'}
- lowercase-keys@2.0.0:
- resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==}
- engines: {node: '>=8'}
+ lowercase-keys@1.0.1:
+ resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==}
+ engines: {node: '>=0.10.0'}
lowercase-keys@3.0.0:
resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==}
@@ -1753,36 +2058,39 @@ packages:
engines: {node: '>=0.10.0'}
hasBin: true
- lru-cache@10.4.3:
- resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
+ lru-cache@11.5.2:
+ resolution: {integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==}
+ engines: {node: 20 || >=22}
- lru-cache@4.1.5:
- resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==}
+ make-asynchronous@1.1.0:
+ resolution: {integrity: sha512-ayF7iT+44LXdxJLTrTd3TLQpFDDvPCBxXxbv+pMUSuHA5Q8zyAfwkRP6aHHwNVFBUFWtxAHqwNJxF8vMZLAbVg==}
+ engines: {node: '>=18'}
make-dir@1.3.0:
resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==}
engines: {node: '>=4'}
- make-error@1.3.6:
- resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
-
map-obj@1.0.1:
resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==}
engines: {node: '>=0.10.0'}
+ math-intrinsics@1.1.0:
+ resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
+ engines: {node: '>= 0.4'}
+
mdn-data@2.0.28:
resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==}
mdn-data@2.0.30:
resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
+ mdn-data@2.27.1:
+ resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==}
+
meow@3.7.0:
resolution: {integrity: sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==}
engines: {node: '>=0.10.0'}
- merge-stream@1.0.1:
- resolution: {integrity: sha512-e6RM36aegd4f+r8BZCcYXlO2P3H6xbUM6ktL2Xmf45GAOit9bI4z6/3VU7JwllVO1L7u0UDSg/EhzQ5lmMLolA==}
-
merge-stream@2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
@@ -1790,16 +2098,12 @@ packages:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
- micromatch@2.3.11:
- resolution: {integrity: sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA==}
- engines: {node: '>=0.10.0'}
-
- micromatch@4.0.7:
- resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==}
+ micromatch@4.0.8:
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
engines: {node: '>=8.6'}
- mime-db@1.53.0:
- resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==}
+ mime-db@1.54.0:
+ resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==}
engines: {node: '>= 0.6'}
mimic-fn@2.1.0:
@@ -1814,82 +2118,45 @@ packages:
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'}
-
mimic-response@4.0.0:
resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- minimatch@3.1.2:
- resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+ minimatch@10.2.6:
+ resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==}
+ engines: {node: 18 || 20 || >=22}
- minimatch@9.0.5:
- resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
+ minimatch@3.1.5:
+ resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==}
+
+ minimatch@9.0.9:
+ resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==}
engines: {node: '>=16 || 14 >=14.17'}
minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
- minipass@7.1.2:
- resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
+ minipass@7.1.3:
+ resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==}
engines: {node: '>=16 || 14 >=14.17'}
- mkdirp@0.5.6:
- resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
- hasBin: true
-
mozjpeg@8.0.0:
resolution: {integrity: sha512-Ca2Yhah9hG0Iutgsn8MOrAl37P9ThnKsJatjXoWdUO+8X8GeG/6ahvHZrTyqvbs6leMww1SauWUCao/L9qBuFQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
hasBin: true
- ms@2.1.2:
- resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
-
- multipipe@0.1.2:
- resolution: {integrity: sha512-7ZxrUybYv9NonoXgwoOqtStIu18D1c3eFZj27hqgf5kBrBF8Q+tE8V0MW8dKM5QLkQPh1JhhbKgHLY9kifov4Q==}
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
- nice-napi@1.0.2:
- resolution: {integrity: sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==}
- os: ['!win32']
-
- nice-try@1.0.5:
- resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==}
-
- node-addon-api@3.2.1:
- resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==}
-
- node-fetch@2.7.0:
- resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
- engines: {node: 4.x || >=6.0.0}
- peerDependencies:
- encoding: ^0.1.0
- peerDependenciesMeta:
- encoding:
- optional: true
-
- node-gyp-build@4.8.1:
- resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==}
- hasBin: true
-
- node-notifier@10.0.1:
- resolution: {integrity: sha512-YX7TSyDukOZ0g+gmzjB6abKu+hTGvO8+8+gIFDsRCU2t8fLV/P2unmt+LGFaIa4y64aX98Qksa97rgz4vMNeLQ==}
+ node-sarif-builder@3.2.0:
+ resolution: {integrity: sha512-kVIOdynrF2CRodHZeP/97Rh1syTUHBNiw17hUCIVhlhEsWlfJm19MuO56s4MdKbr22xWx6mzMnNAgXzVlIYM9Q==}
+ engines: {node: '>=18'}
normalize-package-data@2.5.0:
resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
- normalize-path@2.1.1:
- resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==}
- engines: {node: '>=0.10.0'}
-
- normalize-url@6.1.0:
- resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==}
- engines: {node: '>=10'}
-
- normalize-url@8.0.1:
- resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==}
+ normalize-url@8.1.1:
+ resolution: {integrity: sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==}
engines: {node: '>=14.16'}
npm-conf@1.1.3:
@@ -1908,28 +2175,24 @@ packages:
resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ npm-run-path@6.0.0:
+ resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==}
+ engines: {node: '>=18'}
+
nth-check@2.1.1:
resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
- object-assign@3.0.0:
- resolution: {integrity: sha512-jHP15vXVGeVh1HuaA2wY6lxk+whK/x4KBG88VXeRma7CCun7iGD5qPc4eYykQ9sdQvg8jkwFKsSxHln2ybW3xQ==}
- engines: {node: '>=0.10.0'}
-
object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
- object.omit@2.0.1:
- resolution: {integrity: sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA==}
- engines: {node: '>=0.10.0'}
+ on-exit-leak-free@2.1.2:
+ resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==}
+ engines: {node: '>=14.0.0'}
once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
- onetime@1.1.0:
- resolution: {integrity: sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==}
- engines: {node: '>=0.10.0'}
-
onetime@5.1.2:
resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
engines: {node: '>=6'}
@@ -1938,31 +2201,20 @@ packages:
resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
engines: {node: '>=12'}
- ordered-read-streams@0.3.0:
- resolution: {integrity: sha512-xQvd8qvx9U1iYY9aVqPpoF5V9uaWJKV6ZGljkh/jkiNX0DiQsjbWvRumbh10QTMDE8DheaOEU8xi0szbrgjzcw==}
-
- os-filter-obj@1.0.3:
- resolution: {integrity: sha512-rohpWX8f46ASEOR77j8ZlJ2j5Rzg0j7gxC73ceZaDeMyE6H3nXnwgEjgg5ySlcT0bDuPUw7qcdWtd8Pzp/FJxg==}
- engines: {node: '>=0.10.0'}
-
os-filter-obj@2.0.0:
resolution: {integrity: sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==}
engines: {node: '>=4'}
- os-tmpdir@1.0.2:
- resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
- engines: {node: '>=0.10.0'}
-
ow@2.0.0:
resolution: {integrity: sha512-ESUigmGrdhUZ2nQSFNkeKSl6ZRPupXzprMs3yF9DYlNVpJ8XAjM/fI9RUZxA7PI1K9HQDCCvBo1jr/GEIo9joQ==}
engines: {node: '>=18'}
- oxc-resolver@1.10.2:
- resolution: {integrity: sha512-NIbwVqoU8Bhl7PVtItHCg+VFFokIDwBgIgFUwFG2Y8ePhxftFh5xG+KLar5PLWXlCP4WunPIuXD3jr3v6/MfRw==}
+ oxc-resolver@11.24.2:
+ resolution: {integrity: sha512-FY91FiDBj7ls5MsFS9jN3tjz2o0/zsdSsymlakySaBwVJZorHhkWyICLZMKxlu1R9vYo+sd3z1jwb4J8x7bNDw==}
- p-cancelable@2.1.1:
- resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==}
- engines: {node: '>=8'}
+ p-cancelable@0.3.0:
+ resolution: {integrity: sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==}
+ engines: {node: '>=4'}
p-cancelable@4.0.1:
resolution: {integrity: sha512-wBowNApzd45EIKdO1LaU+LrMBwAcjfPaYtVzV3lmfM3gf8Z4CHZsiIqlM8TZZ8okYvh5A1cP6gTfCRQtwUpaUg==}
@@ -1976,6 +2228,10 @@ packages:
resolution: {integrity: sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==}
engines: {node: '>=6'}
+ p-event@6.0.1:
+ resolution: {integrity: sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==}
+ engines: {node: '>=16.17'}
+
p-finally@1.0.0:
resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==}
engines: {node: '>=4'}
@@ -2000,23 +2256,17 @@ packages:
resolution: {integrity: sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==}
engines: {node: '>=4'}
- package-json-from-dist@1.0.0:
- resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==}
-
- parse-glob@3.0.4:
- resolution: {integrity: sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA==}
- engines: {node: '>=0.10.0'}
+ p-timeout@6.1.4:
+ resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==}
+ engines: {node: '>=14.16'}
parse-json@2.2.0:
resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==}
engines: {node: '>=0.10.0'}
- parse-node-version@1.0.1:
- resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==}
- engines: {node: '>= 0.10'}
-
- path-dirname@1.0.2:
- resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==}
+ parse-ms@4.0.0:
+ resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==}
+ engines: {node: '>=18'}
path-exists@2.1.0:
resolution: {integrity: sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==}
@@ -2041,32 +2291,32 @@ packages:
path-parse@1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
- path-scurry@1.11.1:
- resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
- engines: {node: '>=16 || 14 >=14.18'}
+ path-scurry@2.0.2:
+ resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==}
+ engines: {node: 18 || 20 || >=22}
path-type@1.1.0:
resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==}
engines: {node: '>=0.10.0'}
- path-type@5.0.0:
- resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==}
- engines: {node: '>=12'}
-
- peek-readable@5.1.3:
- resolution: {integrity: sha512-kCsc9HwH5RgVA3H3VqkWFyGQwsxUxLdiSX1d5nqAm7hnMFjNFX1VhBLmJoUY0hZNc8gmDNgBkLjfhiWPsziXWA==}
- engines: {node: '>=14.16'}
+ path-type@6.0.0:
+ resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==}
+ engines: {node: '>=18'}
pend@1.2.0:
resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==}
- picocolors@1.0.1:
- resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
+ picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
- picomatch@2.3.1:
- resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ picomatch@2.3.2:
+ resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==}
engines: {node: '>=8.6'}
+ picomatch@4.0.7:
+ resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==}
+ engines: {node: '>=12'}
+
pify@2.3.0:
resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
engines: {node: '>=0.10.0'}
@@ -2087,12 +2337,26 @@ packages:
resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==}
engines: {node: '>=0.10.0'}
- pirates@4.0.6:
- resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
+ pino-abstract-transport@3.0.0:
+ resolution: {integrity: sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg==}
+
+ pino-pretty@13.1.3:
+ resolution: {integrity: sha512-ttXRkkOz6WWC95KeY9+xxWL6AtImwbyMHrL1mSwqwW9u+vLp/WIElvHvCSDg0xO/Dzrggz1zv3rN5ovTRVowKg==}
+ hasBin: true
+
+ pino-std-serializers@7.1.0:
+ resolution: {integrity: sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==}
+
+ pino@10.3.1:
+ resolution: {integrity: sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg==}
+ hasBin: true
+
+ pirates@4.0.7:
+ resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==}
engines: {node: '>= 6'}
- piscina@4.6.1:
- resolution: {integrity: sha512-z30AwWGtQE+Apr+2WBZensP2lIvwoaMcOPkQlIEmSGMJNUvaYACylPYrQM6wSdUNJlnDVMSpLv7xTMJqlVshOA==}
+ piscina@4.9.4:
+ resolution: {integrity: sha512-RyBDr2VheQ8ZfH3N8SzQZHztqVyOtadTwLnUYof6gdj5161/eu2wNhCbGl5GHnNKDpnkicJYpKtL2J+y/gk6XA==}
plur@2.1.2:
resolution: {integrity: sha512-WhcHk576xg9y/iv6RWOuroZgsqvCbJN+XGvAypCJwLAYs2iWDp5LUmvaCdV6JR2O0SMBf8l6p7A94AyLCFVMlQ==}
@@ -2103,33 +2367,40 @@ packages:
engines: {node: '>=18'}
hasBin: true
+ possible-typed-array-names@1.1.0:
+ resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
+ engines: {node: '>= 0.4'}
+
+ prepend-http@1.0.4:
+ resolution: {integrity: sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==}
+ engines: {node: '>=0.10.0'}
+
+ pretty-ms@9.3.1:
+ resolution: {integrity: sha512-HzMy3Geq23nVALD/M2LliU+F+M+gVNsvkQWWqeBZ8HDiCgzo6YPJ/Omrmtq24EFrIsk0a3EkQGEd7bDOo+IhGA==}
+ engines: {node: '>=18'}
+
process-nextick-args@2.0.1:
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+ process-warning@5.1.0:
+ resolution: {integrity: sha512-jQSaVHsPgtyw60e1rQ/A+/ArPEj/S8pS/vFnyGa/gYFXrKk/6RuDkoqVDQ5NI5MmS01698ltlAk0NoDBNLujRw==}
+
proto-list@1.2.4:
resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
- pseudomap@1.0.2:
- resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==}
-
- pump@3.0.0:
- resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==}
+ pump@3.0.4:
+ resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==}
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+ quick-format-unescaped@4.0.4:
+ resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==}
+
quick-lru@5.1.1:
resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
engines: {node: '>=10'}
- rc@1.2.8:
- resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
- hasBin: true
-
- read-all-stream@3.1.0:
- resolution: {integrity: sha512-DI1drPHbmBcUDWrJ7ull/F2Qb8HkwBncVx8/RpKYFSIACYaVRQReISYPdZz/mt1y1+qMCOrfReTopERmaxtP6w==}
- engines: {node: '>=0.10.0'}
-
read-pkg-up@1.0.1:
resolution: {integrity: sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==}
engines: {node: '>=0.10.0'}
@@ -2138,75 +2409,47 @@ packages:
resolution: {integrity: sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==}
engines: {node: '>=0.10.0'}
- readable-stream@1.0.34:
- resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==}
-
- readable-stream@1.1.14:
- resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==}
-
readable-stream@2.3.8:
resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
- readable-stream@3.6.2:
- resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
- engines: {node: '>= 6'}
-
- readable-web-to-node-stream@3.0.2:
- resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==}
- engines: {node: '>=8'}
+ real-require@0.2.0:
+ resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==}
+ engines: {node: '>= 12.13.0'}
- rechoir@0.6.2:
- resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==}
- engines: {node: '>= 0.10'}
+ real-require@1.0.0:
+ resolution: {integrity: sha512-P4nbQYQfePJxRSmY+v/KINxVucm4NF3p3s7pJveMTtom52FR4YGltUQLB8idDXwDDWW+eYrWDFbuzUnjoWHF7g==}
redent@1.0.0:
resolution: {integrity: sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==}
engines: {node: '>=0.10.0'}
- regex-cache@0.4.4:
- resolution: {integrity: sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==}
- engines: {node: '>=0.10.0'}
-
- remove-trailing-separator@1.1.0:
- resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==}
-
repeating@2.0.1:
resolution: {integrity: sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==}
engines: {node: '>=0.10.0'}
- replace-ext@0.0.1:
- resolution: {integrity: sha512-AFBWBy9EVRTa/LhEcG8QDP3FvpwZqmvN2QFDuJswFeaVhWnZMp8q3E6Zd90SR04PlIwfGdyVjNyLPyen/ek5CQ==}
- engines: {node: '>= 0.4'}
-
- replace-in-file@8.1.0:
- resolution: {integrity: sha512-ySYfKDH6uFVC4Wt6DcZ2UX0UMCqE7xhWGVqje/15WFVwHxnel1gdZjV8nOW9Nms6h/yQE2MWyeIToeqFLZkp4w==}
- engines: {node: '>=18'}
+ replace-in-file@9.0.0:
+ resolution: {integrity: sha512-ACFXyc5ninRlHSVw8ZRht0Fd/BKoje8mpbIDZjbOU/LCaaoZzD9uo3zDQNkULDhcrvhXyL38FCcF1D2SiHM6Vg==}
+ engines: {node: '>=22.12.0'}
hasBin: true
- require-directory@2.1.1:
- resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
- engines: {node: '>=0.10.0'}
-
- reserved-identifiers@1.0.0:
- resolution: {integrity: sha512-h0bP2Katmvf3hv4Z3WtDl4+6xt/OglQ2Xa6TnhZ/Rm9/7IH1crXQqMwD4J2ngKBonVv+fB55zfGgNDAmsevLVQ==}
+ reserved-identifiers@1.2.0:
+ resolution: {integrity: sha512-yE7KUfFvaBFzGPs5H3Ops1RevfUEsDc5Iz65rOwWg4lE8HJSYtle77uul3+573457oHvBKuHYDl/xqUkKpEEdw==}
engines: {node: '>=18'}
resolve-alpn@1.2.1:
resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==}
- resolve@1.22.8:
- resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
+ resolve@1.22.12:
+ resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==}
+ engines: {node: '>= 0.4'}
hasBin: true
- responselike@2.0.1:
- resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==}
-
- responselike@3.0.0:
- resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==}
- engines: {node: '>=14.16'}
+ responselike@4.0.2:
+ resolution: {integrity: sha512-cGk8IbWEAnaCpdAt1BHzJ3Ahz5ewDJa0KseTsE3qIRMJ3C698W8psM7byCeWVpd/Ha7FUYzuRVzXoKoM6nRUbA==}
+ engines: {node: '>=20'}
- reusify@1.0.4:
- resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
+ reusify@1.1.0:
+ resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
rimraf@2.7.1:
@@ -2223,10 +2466,25 @@ packages:
safe-buffer@5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+ safe-stable-stringify@2.5.0:
+ resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==}
+ engines: {node: '>=10'}
+
+ sax@1.6.1:
+ resolution: {integrity: sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==}
+ engines: {node: '>=11.0.0'}
+
+ secure-json-parse@4.1.0:
+ resolution: {integrity: sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==}
+
seek-bzip@1.0.6:
resolution: {integrity: sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==}
hasBin: true
+ seek-bzip@2.0.0:
+ resolution: {integrity: sha512-SMguiTnYrhpLdk3PwfzHeotrcwi8bNV4iemL9tx9poR/yeaMYwB9VzR1w7b57DuWpuqR8n6oZboi0hj3AxZxQg==}
+ hasBin: true
+
semver-regex@4.0.5:
resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==}
engines: {node: '>=12'}
@@ -2239,43 +2497,32 @@ packages:
resolution: {integrity: sha512-LJWA9kSvMolR51oDE6PN3kALBNaUdkxzAGcexw8gjMA8xr5zUqK0JiR3CgARSqanYF3Z1YHvsErb1KDgh+v7Rg==}
engines: {node: '>=12'}
- semver@7.6.3:
- resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
+ semver@7.8.5:
+ resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==}
engines: {node: '>=10'}
hasBin: true
- set-immediate-shim@1.0.1:
- resolution: {integrity: sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ==}
- engines: {node: '>=0.10.0'}
-
- sharp@0.33.4:
- resolution: {integrity: sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q==}
- engines: {libvips: '>=8.15.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ set-function-length@1.2.2:
+ resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
+ engines: {node: '>= 0.4'}
- shebang-command@1.2.0:
- resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
- engines: {node: '>=0.10.0'}
+ sharp@0.35.4:
+ resolution: {integrity: sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA==}
+ engines: {node: '>=20.9.0'}
+ peerDependencies:
+ '@types/node': '*'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'}
- shebang-regex@1.0.0:
- resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==}
- engines: {node: '>=0.10.0'}
-
shebang-regex@3.0.0:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
- shelljs@0.8.5:
- resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==}
- engines: {node: '>=4'}
- hasBin: true
-
- shellwords@0.1.1:
- resolution: {integrity: sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==}
-
signal-exit@3.0.7:
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
@@ -2283,9 +2530,6 @@ packages:
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
engines: {node: '>=14'}
- simple-swizzle@0.2.2:
- resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
-
slash@3.0.0:
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
engines: {node: '>=8'}
@@ -2294,6 +2538,9 @@ packages:
resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==}
engines: {node: '>=14.16'}
+ sonic-boom@4.2.1:
+ resolution: {integrity: sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==}
+
sort-keys-length@1.0.1:
resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==}
engines: {node: '>=0.10.0'}
@@ -2302,8 +2549,8 @@ packages:
resolution: {integrity: sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==}
engines: {node: '>=0.10.0'}
- source-map-js@1.2.0:
- resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
+ source-map-js@1.2.1:
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
source-map-support@0.5.21:
@@ -2313,13 +2560,9 @@ packages:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
engines: {node: '>=0.10.0'}
- source-map@0.7.4:
- resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
- engines: {node: '>= 8'}
-
- sparkles@1.0.1:
- resolution: {integrity: sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==}
- engines: {node: '>= 0.10'}
+ source-map@0.7.6:
+ resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==}
+ engines: {node: '>= 12'}
spdx-correct@3.2.0:
resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
@@ -2330,56 +2573,43 @@ packages:
spdx-expression-parse@3.0.1:
resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
- spdx-license-ids@3.0.18:
- resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==}
+ spdx-license-ids@3.0.23:
+ resolution: {integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==}
+
+ split2@4.2.0:
+ resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
+ engines: {node: '>= 10.x'}
squeak@1.3.0:
resolution: {integrity: sha512-YQL1ulInM+ev8nXX7vfXsCsDh6IqXlrremc1hzi77776BtpWgYJUMto3UM05GSAaGzJgWekszjoKDrVNB5XG+A==}
engines: {node: '>=0.10.0'}
- stream-combiner2@1.1.1:
- resolution: {integrity: sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==}
-
- stream-shift@1.0.3:
- resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==}
+ streamx@2.28.1:
+ resolution: {integrity: sha512-zEzXb0s5Cds7tqMH6rhZ05lcJydCWiQPEwiNngVqzsxCc962vLY4Uw+mW7od8kDH258k2Uz/JrOkdIAAhSh9VA==}
string-length@1.0.1:
resolution: {integrity: sha512-MNCACnufWUf3pQ57O5WTBMkKhzYIaKEcUioO0XHrTMafrbBaNk4IyDOLHBv5xbXO0jLLdsYWeFjpjG2hVHRDtw==}
engines: {node: '>=0.10.0'}
- string-width@4.2.3:
- 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'}
+ string-width@7.2.0:
+ resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}
+ engines: {node: '>=18'}
- string_decoder@0.10.31:
- resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==}
+ string-width@8.2.2:
+ resolution: {integrity: sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==}
+ engines: {node: '>=20'}
string_decoder@1.1.1:
resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
- string_decoder@1.3.0:
- resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
-
strip-ansi@3.0.1:
resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==}
engines: {node: '>=0.10.0'}
- strip-ansi@6.0.1:
- resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
- engines: {node: '>=8'}
-
- strip-ansi@7.1.0:
- resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
+ strip-ansi@7.2.0:
+ resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==}
engines: {node: '>=12'}
- strip-bom-stream@1.0.0:
- resolution: {integrity: sha512-7jfJB9YpI2Z0aH3wu10ZqitvYJaE0s5IzFuWE+0pbb4Q/armTloEUShymkDO47YSLnjAW52mlXT//hs9wXNNJQ==}
- engines: {node: '>=0.10.0'}
-
strip-bom@2.0.0:
resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==}
engines: {node: '>=0.10.0'}
@@ -2387,6 +2617,9 @@ packages:
strip-dirs@2.1.0:
resolution: {integrity: sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==}
+ strip-dirs@3.0.0:
+ resolution: {integrity: sha512-I0sdgcFTfKQlUPZyAqPJmSG3HLO9rWDFnxonnIbskYNM3DwFOeTNB5KzVq3dA1GdRAc/25b5Y7UO2TQfKWw4aQ==}
+
strip-eof@1.0.0:
resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==}
engines: {node: '>=0.10.0'}
@@ -2399,40 +2632,33 @@ packages:
resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
engines: {node: '>=12'}
+ strip-final-newline@4.0.0:
+ resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==}
+ engines: {node: '>=18'}
+
strip-indent@1.0.1:
resolution: {integrity: sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==}
engines: {node: '>=0.10.0'}
hasBin: true
- strip-json-comments@2.0.1:
- resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
- engines: {node: '>=0.10.0'}
-
- strip-json-comments@3.1.0:
- resolution: {integrity: sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==}
+ strip-json-comments@3.1.1:
+ 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'}
-
- strip-outer@2.0.0:
- resolution: {integrity: sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- strnum@1.0.5:
- resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==}
+ strip-json-comments@5.0.3:
+ resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==}
+ engines: {node: '>=14.16'}
- strtok3@7.1.1:
- resolution: {integrity: sha512-mKX8HA/cdBqMKUr0MMZAFssCkIGoZeSCMXgnt79yKxNFguMLVFgRe6wB+fsL0NmoHDbeyZXczy7vEPSoo3rkzg==}
- engines: {node: '>=16'}
+ strip-outer@1.0.1:
+ resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==}
+ engines: {node: '>=0.10.0'}
- strtok3@8.0.1:
- resolution: {integrity: sha512-HNkTAnNWQj2YBzfTtoC5OQyu1QwPsMwiB7VyQmNvQKCrmEDSvFB857Vh97UY9InGLNRAB91sdS1ztifRo/3hdA==}
- engines: {node: '>=16'}
+ strtok3@10.3.5:
+ resolution: {integrity: sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA==}
+ engines: {node: '>=18'}
- super-regex@1.0.0:
- resolution: {integrity: sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==}
+ super-regex@1.1.0:
+ resolution: {integrity: sha512-WHkws2ZflZe41zj6AolvvmaTrWds/VuyeYr9iPVv/oQeaIoVxMKaushfFWpOGDT+GuBrM/sVqF8KUCYQlSSTdQ==}
engines: {node: '>=18'}
supports-color@2.0.0:
@@ -2447,41 +2673,48 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
- svgo@3.3.2:
- resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==}
+ svgo@3.3.5:
+ resolution: {integrity: sha512-8SQMzdrvWaD8deUmrnYB+ASyxBVgWUOilg+A75nE/76WdLpj6LopCwiAVvkzkcqy/9b7t2Mg7faFLjg0ZRcZ3w==}
engines: {node: '>=14.0.0'}
hasBin: true
+ svgo@4.1.0:
+ resolution: {integrity: sha512-bkxnTg1kSU0guhIBmibA6UUhrQmPVA1XsQLN+ylCd+UWzbnLkySOcXpyk1mrl05f+pcaCx2eHb+sp6BgMZWX+Q==}
+ engines: {node: '>=16'}
+ hasBin: true
+
+ system-architecture@1.0.0:
+ resolution: {integrity: sha512-0OJWD12D7XX3KUg1DYkMaTTjSTo2k/mhIYI3HlBlceXSMcJhW/1qO735fPKS5prcyjvn57Ub151vvASYXpQrEw==}
+ engines: {node: '>=18'}
+
+ tagged-tag@1.0.0:
+ resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==}
+ engines: {node: '>=20'}
+
tar-stream@1.6.2:
resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==}
engines: {node: '>= 0.8.0'}
+ tar-stream@3.1.7:
+ resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==}
+
temp-dir@1.0.0:
resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==}
engines: {node: '>=4'}
- tempfile@1.1.1:
- resolution: {integrity: sha512-NjT12fW6pSEKz1eVcADgaKfeM+XZ4+zSaqVz46XH7+CiEwcelnwtGWRRjF1p+xyW2PVgKKKS2UUw1LzRelntxg==}
- engines: {node: '>=0.10.0'}
-
tempfile@2.0.0:
resolution: {integrity: sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA==}
engines: {node: '>=4'}
+ text-decoder@1.2.7:
+ resolution: {integrity: sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==}
+
text-table@0.2.0:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
- through2-filter@2.0.0:
- resolution: {integrity: sha512-miwWajb1B80NvIVKXFPN/o7+vJc4jYUvnZCwvhicRAoTxdD9wbcjri70j+BenCrN/JXEPKDjhpw4iY7yiNsCGg==}
-
- through2-filter@3.0.0:
- resolution: {integrity: sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==}
-
- through2@0.6.5:
- resolution: {integrity: sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==}
-
- through2@2.0.5:
- resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==}
+ thread-stream@4.2.0:
+ resolution: {integrity: sha512-e2zZ96wSChazBsbENf/Pcm/4swHt2cEKQ92rhUjkL9GCKiTDJIaTBenjE/m9DXi0QBmTMDkFDdOomUy20A1tDQ==}
+ engines: {node: '>=20'}
through@2.3.8:
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
@@ -2490,32 +2723,26 @@ packages:
resolution: {integrity: sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==}
engines: {node: '>=12'}
- time-stamp@1.1.0:
- resolution: {integrity: sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==}
+ timed-out@4.0.1:
+ resolution: {integrity: sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==}
engines: {node: '>=0.10.0'}
- to-absolute-glob@0.1.1:
- resolution: {integrity: sha512-Vvl5x6zNf9iVG1QTWeknmWrKzZxaeKfIDRibrZCR3b2V/2NlFJuD2HV7P7AVjaKLZNqLPHqyr0jGrW0fTcxCPQ==}
- engines: {node: '>=0.10.0'}
+ tinyglobby@0.2.17:
+ resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==}
+ engines: {node: '>=12.0.0'}
- to-buffer@1.1.1:
- resolution: {integrity: sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==}
+ to-buffer@1.2.2:
+ resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==}
+ engines: {node: '>= 0.4'}
to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
- token-types@5.0.1:
- resolution: {integrity: sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==}
- engines: {node: '>=14.16'}
-
- token-types@6.0.0:
- resolution: {integrity: sha512-lbDrTLVsHhOMljPscd0yitpozq7Ga2M5Cvez5AjGg8GASBjtt6iERCAJ93yommPmz62fb45oFIXHEZ3u9bfJEA==}
+ token-types@6.1.2:
+ resolution: {integrity: sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==}
engines: {node: '>=14.16'}
- tr46@0.0.3:
- resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
-
trim-newlines@5.0.0:
resolution: {integrity: sha512-kstfs+hgwmdsOadN3KgA+C68wPJwnZq4DN6WMDCvZapDWEF34W2TyPKN2v2+BJnZgIz5QOfxFeldLyYvdgRAwg==}
engines: {node: '>=14.16'}
@@ -2524,26 +2751,8 @@ packages:
resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==}
engines: {node: '>=0.10.0'}
- trim-repeated@2.0.0:
- resolution: {integrity: sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg==}
- engines: {node: '>=12'}
-
- ts-node@10.9.2:
- resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==}
- hasBin: true
- peerDependencies:
- '@swc/core': '>=1.2.50'
- '@swc/wasm': '>=1.2.50'
- '@types/node': '*'
- typescript: '>=2.7'
- peerDependenciesMeta:
- '@swc/core':
- optional: true
- '@swc/wasm':
- optional: true
-
- tslib@2.6.3:
- resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==}
+ tslib@2.8.1:
+ resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
tunnel-agent@0.6.0:
resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
@@ -2552,37 +2761,48 @@ packages:
resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==}
engines: {node: '>=14.16'}
- type-fest@4.23.0:
- resolution: {integrity: sha512-ZiBujro2ohr5+Z/hZWHESLz3g08BBdrdLMieYFULJO+tWc437sn8kQsWLJoZErY8alNhxre9K4p3GURAG11n+w==}
+ type-fest@4.41.0:
+ resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
engines: {node: '>=16'}
- typedarray@0.0.6:
- resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==}
+ type-fest@5.9.0:
+ resolution: {integrity: sha512-yANm3Jr3GiJ1qgJlxGAVxTOIcEOk1rhQHamlXtnrCK7EHP4HeM9OGxtMg/W7HFdrVzw/ZWJKGVIJusVH85sLtw==}
+ engines: {node: '>=20'}
+
+ typed-array-buffer@1.0.3:
+ resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
+ engines: {node: '>= 0.4'}
- typescript@5.5.4:
- resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==}
+ typescript@6.0.3:
+ resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==}
engines: {node: '>=14.17'}
hasBin: true
- uint8array-extras@1.4.0:
- resolution: {integrity: sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ==}
+ typescript@7.0.2:
+ resolution: {integrity: sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==}
+ engines: {node: '>=16.20.0'}
+ hasBin: true
+
+ uint8array-extras@1.5.0:
+ resolution: {integrity: sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==}
engines: {node: '>=18'}
unbzip2-stream@1.4.3:
resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==}
- undici-types@6.13.0:
- resolution: {integrity: sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==}
+ undici-types@8.3.0:
+ resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==}
- unicorn-magic@0.1.0:
- resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==}
+ unicorn-magic@0.3.0:
+ resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==}
engines: {node: '>=18'}
- unique-stream@2.3.1:
- resolution: {integrity: sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==}
+ universalify@2.0.1:
+ resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
+ engines: {node: '>= 10.0.0'}
- url-regex@3.2.0:
- resolution: {integrity: sha512-dQ9cJzMou5OKr6ZzfvwJkCq3rC72PNXhqz0v3EIhF4a3Np+ujr100AhUx2cKx5ei3iymoJpJrPB3sVSEMdqAeg==}
+ url-parse-lax@1.0.0:
+ resolution: {integrity: sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==}
engines: {node: '>=0.10.0'}
url-to-options@1.0.1:
@@ -2592,69 +2812,28 @@ packages:
util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
- uuid@2.0.3:
- resolution: {integrity: sha512-FULf7fayPdpASncVy4DLh3xydlXEJJpvIELjYjNeQWYUZ9pclcpvCZSr2gkmN2FrrGcI7G/cJsIEwk5/8vfXpg==}
- deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
-
- uuid@3.4.0:
- resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==}
- deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
- hasBin: true
-
- uuid@8.3.2:
- resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
+ uuid@14.0.2:
+ resolution: {integrity: sha512-xZe/16rV4aa+HGSOCiY2YeLT1OybRLrrkL/Rqaq7p7GMVXjFh+6wN4oMYgjFmnSnhY8t6Xpdl2l9qmnHYuMHwQ==}
hasBin: true
- v8-compile-cache-lib@3.0.1:
- resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
-
- vali-date@1.0.0:
- resolution: {integrity: sha512-sgECfZthyaCKW10N0fm27cg8HYTFK5qMWgypqkXMQ4Wbl/zZKx7xZICgcoxIIE+WFAP/MBL2EFwC/YvLxw3Zeg==}
- engines: {node: '>=0.10.0'}
-
validate-npm-package-license@3.0.4:
resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
- vinyl-fs@2.4.4:
- resolution: {integrity: sha512-lxMlQW/Wxk/pwhooY3Ut0Q11OH5ZvZfV0Gg1c306fBNWznQ6ZeQaCdE7XX0O/PpGSqgAsHMBxwFgcGxiYW3hZg==}
- engines: {node: '>=0.10'}
-
- vinyl@0.5.3:
- resolution: {integrity: sha512-P5zdf3WB9uzr7IFoVQ2wZTmUwHL8cMZWJGzLBNCHNZ3NB6HTMsYABtt7z8tAGIINLXyAob9B9a1yzVGMFOYKEA==}
- engines: {node: '>= 0.9'}
+ web-worker@1.5.0:
+ resolution: {integrity: sha512-RiMReJrTAiA+mBjGONMnjVDP2u3p9R1vkcGz6gDIrOMT3oGuYwX2WRMYI9ipkphSuE5XKEhydbhNEJh4NY9mlw==}
- vinyl@1.2.0:
- resolution: {integrity: sha512-Ci3wnR2uuSAWFMSglZuB8Z2apBdtOyz8CV7dC6/U1XbltXBC+IuutUkXQISz01P+US2ouBuesSbV6zILZ6BuzQ==}
- engines: {node: '>= 0.9'}
-
- ware@1.3.0:
- resolution: {integrity: sha512-Y2HUDMktriUm+SR2gZWxlrszcgtXExlhQYZ8QJNYbl22jum00KIUcHJ/h/sdAXhWTJcbSkiMYN9Z2tWbWYSrrw==}
-
- webidl-conversions@3.0.1:
- resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
-
- whatwg-url@5.0.0:
- resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
-
- which@1.3.1:
- resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
- hasBin: true
+ which-typed-array@1.1.22:
+ resolution: {integrity: sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==}
+ engines: {node: '>= 0.4'}
which@2.0.2:
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
engines: {node: '>= 8'}
hasBin: true
- wrap-ansi@7.0.0:
- resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
- engines: {node: '>=10'}
-
- wrap-ansi@8.1.0:
- resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
- engines: {node: '>=12'}
-
- wrap-fn@0.1.5:
- resolution: {integrity: sha512-xDLdGx0M8JQw9QDAC9s5NUxtg9MI09F6Vbxa2LYoSoCvzJnx2n81YMIfykmXEGsUvuLaxnblJTzhSOjUOX37ag==}
+ wrap-ansi@9.0.2:
+ resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==}
+ engines: {node: '>=18'}
wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
@@ -2670,23 +2849,24 @@ packages:
resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
engines: {node: '>=10'}
- yallist@2.1.2:
- resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==}
-
- yargs-parser@21.1.1:
- 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}
- yargs@17.7.2:
- resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
- engines: {node: '>=12'}
+ yargs@18.1.0:
+ resolution: {integrity: sha512-2rAgRKu54VsHkqI0/tYkmluGXHD4KW7yZoycuqDQ15QOTnc2VVfy0nN/1eMhnQLO00A+dwtK20xuCnc1YGeUyg==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=23}
yauzl@2.10.0:
resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==}
- yn@3.1.1:
- resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
- engines: {node: '>=6'}
+ yauzl@3.4.0:
+ resolution: {integrity: sha512-jIH9yLR9wqr0wOS0TpBvo/g/2UgZH5qePVbjgRliiF0BYvOZyaBknKsF+x9Iht0O6sqgnB93rCICdOZFecJuDw==}
+ engines: {node: '>=12'}
+
+ yoctocolors@2.2.0:
+ resolution: {integrity: sha512-xYqdZFUK/VYazNl/oCDYN+3WloWQwMfZxBoiNt6qNyk+xfOdi598muWE42rNZFp1kNOiqW936q5RhUdnpqElSg==}
+ engines: {node: '>=18'}
zopflipng-bin@6.0.1:
resolution: {integrity: sha512-+aybvXv/xafL6I67uSH5yLHrSy4/OaSOV9tniw4yZFIHpINXUcctVHE/WzHxOONrL2GHzJ8Fd4iDrNyaS6TVbg==}
@@ -2695,137 +2875,276 @@ packages:
snapshots:
- '@cspotcode/source-map-support@0.8.1':
+ '@borewit/text-codec@0.2.2': {}
+
+ '@emnapi/core@1.11.2':
dependencies:
- '@jridgewell/trace-mapping': 0.3.9
+ '@emnapi/wasi-threads': 1.2.2
+ tslib: 2.8.1
+ optional: true
- '@emnapi/core@1.2.0':
+ '@emnapi/runtime@1.11.2':
dependencies:
- '@emnapi/wasi-threads': 1.0.1
- tslib: 2.6.3
+ tslib: 2.8.1
optional: true
- '@emnapi/runtime@1.2.0':
+ '@emnapi/runtime@1.11.3':
dependencies:
- tslib: 2.6.3
+ tslib: 2.8.1
optional: true
- '@emnapi/wasi-threads@1.0.1':
+ '@emnapi/wasi-threads@1.2.2':
dependencies:
- tslib: 2.6.3
+ tslib: 2.8.1
optional: true
- '@img/sharp-darwin-arm64@0.33.4':
+ '@file-type/xml@0.4.4':
+ dependencies:
+ sax: 1.6.1
+ strtok3: 10.3.5
+
+ '@img/colour@1.1.0': {}
+
+ '@img/sharp-darwin-arm64@0.35.4':
optionalDependencies:
- '@img/sharp-libvips-darwin-arm64': 1.0.2
+ '@img/sharp-libvips-darwin-arm64': 1.3.3
optional: true
- '@img/sharp-darwin-x64@0.33.4':
+ '@img/sharp-darwin-x64@0.35.4':
optionalDependencies:
- '@img/sharp-libvips-darwin-x64': 1.0.2
+ '@img/sharp-libvips-darwin-x64': 1.3.3
+ optional: true
+
+ '@img/sharp-freebsd-wasm32@0.35.4':
+ dependencies:
+ '@img/sharp-wasm32': 0.35.4
+ optional: true
+
+ '@img/sharp-libvips-darwin-arm64@1.3.3':
optional: true
- '@img/sharp-libvips-darwin-arm64@1.0.2':
+ '@img/sharp-libvips-darwin-x64@1.3.3':
optional: true
- '@img/sharp-libvips-darwin-x64@1.0.2':
+ '@img/sharp-libvips-linux-arm64@1.3.3':
optional: true
- '@img/sharp-libvips-linux-arm64@1.0.2':
+ '@img/sharp-libvips-linux-arm@1.3.3':
optional: true
- '@img/sharp-libvips-linux-arm@1.0.2':
+ '@img/sharp-libvips-linux-ppc64@1.3.3':
optional: true
- '@img/sharp-libvips-linux-s390x@1.0.2':
+ '@img/sharp-libvips-linux-riscv64@1.3.3':
optional: true
- '@img/sharp-libvips-linux-x64@1.0.2':
+ '@img/sharp-libvips-linux-s390x@1.3.3':
optional: true
- '@img/sharp-libvips-linuxmusl-arm64@1.0.2':
+ '@img/sharp-libvips-linux-x64@1.3.3':
optional: true
- '@img/sharp-libvips-linuxmusl-x64@1.0.2':
+ '@img/sharp-libvips-linuxmusl-arm64@1.3.3':
optional: true
- '@img/sharp-linux-arm64@0.33.4':
+ '@img/sharp-libvips-linuxmusl-x64@1.3.3':
+ optional: true
+
+ '@img/sharp-linux-arm64@0.35.4':
optionalDependencies:
- '@img/sharp-libvips-linux-arm64': 1.0.2
+ '@img/sharp-libvips-linux-arm64': 1.3.3
optional: true
- '@img/sharp-linux-arm@0.33.4':
+ '@img/sharp-linux-arm@0.35.4':
optionalDependencies:
- '@img/sharp-libvips-linux-arm': 1.0.2
+ '@img/sharp-libvips-linux-arm': 1.3.3
optional: true
- '@img/sharp-linux-s390x@0.33.4':
+ '@img/sharp-linux-ppc64@0.35.4':
optionalDependencies:
- '@img/sharp-libvips-linux-s390x': 1.0.2
+ '@img/sharp-libvips-linux-ppc64': 1.3.3
optional: true
- '@img/sharp-linux-x64@0.33.4':
+ '@img/sharp-linux-riscv64@0.35.4':
optionalDependencies:
- '@img/sharp-libvips-linux-x64': 1.0.2
+ '@img/sharp-libvips-linux-riscv64': 1.3.3
optional: true
- '@img/sharp-linuxmusl-arm64@0.33.4':
+ '@img/sharp-linux-s390x@0.35.4':
optionalDependencies:
- '@img/sharp-libvips-linuxmusl-arm64': 1.0.2
+ '@img/sharp-libvips-linux-s390x': 1.3.3
optional: true
- '@img/sharp-linuxmusl-x64@0.33.4':
+ '@img/sharp-linux-x64@0.35.4':
optionalDependencies:
- '@img/sharp-libvips-linuxmusl-x64': 1.0.2
+ '@img/sharp-libvips-linux-x64': 1.3.3
optional: true
- '@img/sharp-wasm32@0.33.4':
- dependencies:
- '@emnapi/runtime': 1.2.0
+ '@img/sharp-linuxmusl-arm64@0.35.4':
+ optionalDependencies:
+ '@img/sharp-libvips-linuxmusl-arm64': 1.3.3
optional: true
- '@img/sharp-win32-ia32@0.33.4':
+ '@img/sharp-linuxmusl-x64@0.35.4':
+ optionalDependencies:
+ '@img/sharp-libvips-linuxmusl-x64': 1.3.3
optional: true
- '@img/sharp-win32-x64@0.33.4':
+ '@img/sharp-wasm32@0.35.4':
+ dependencies:
+ '@emnapi/runtime': 1.11.3
optional: true
- '@isaacs/cliui@8.0.2':
+ '@img/sharp-webcontainers-wasm32@0.35.4':
dependencies:
- string-width: 5.1.2
- string-width-cjs: string-width@4.2.3
- strip-ansi: 7.1.0
- strip-ansi-cjs: strip-ansi@6.0.1
- wrap-ansi: 8.1.0
- wrap-ansi-cjs: wrap-ansi@7.0.0
+ '@img/sharp-wasm32': 0.35.4
+ optional: true
- '@jridgewell/resolve-uri@3.1.2': {}
+ '@img/sharp-win32-arm64@0.35.4':
+ optional: true
- '@jridgewell/sourcemap-codec@1.5.0': {}
+ '@img/sharp-win32-ia32@0.35.4':
+ optional: true
- '@jridgewell/trace-mapping@0.3.9':
- dependencies:
- '@jridgewell/resolve-uri': 3.1.2
- '@jridgewell/sourcemap-codec': 1.5.0
+ '@img/sharp-win32-x64@0.35.4':
+ optional: true
- '@mole-inc/bin-wrapper@8.0.1':
- dependencies:
- bin-check: 4.1.0
- bin-version-check: 5.1.0
- content-disposition: 0.5.4
- ext-name: 5.0.0
- file-type: 17.1.6
- filenamify: 5.1.1
- got: 11.8.6
- os-filter-obj: 2.0.0
+ '@keyv/serialize@1.1.1': {}
+
+ '@napi-rs/nice-android-arm-eabi@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-android-arm64@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-darwin-arm64@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-darwin-x64@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-freebsd-x64@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-linux-arm-gnueabihf@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-linux-arm64-gnu@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-linux-arm64-musl@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-linux-ppc64-gnu@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-linux-riscv64-gnu@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-linux-s390x-gnu@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-linux-x64-gnu@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-linux-x64-musl@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-openharmony-arm64@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-win32-arm64-msvc@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-win32-ia32-msvc@1.1.1':
+ optional: true
+
+ '@napi-rs/nice-win32-x64-msvc@1.1.1':
+ optional: true
+
+ '@napi-rs/nice@1.1.1':
+ optionalDependencies:
+ '@napi-rs/nice-android-arm-eabi': 1.1.1
+ '@napi-rs/nice-android-arm64': 1.1.1
+ '@napi-rs/nice-darwin-arm64': 1.1.1
+ '@napi-rs/nice-darwin-x64': 1.1.1
+ '@napi-rs/nice-freebsd-x64': 1.1.1
+ '@napi-rs/nice-linux-arm-gnueabihf': 1.1.1
+ '@napi-rs/nice-linux-arm64-gnu': 1.1.1
+ '@napi-rs/nice-linux-arm64-musl': 1.1.1
+ '@napi-rs/nice-linux-ppc64-gnu': 1.1.1
+ '@napi-rs/nice-linux-riscv64-gnu': 1.1.1
+ '@napi-rs/nice-linux-s390x-gnu': 1.1.1
+ '@napi-rs/nice-linux-x64-gnu': 1.1.1
+ '@napi-rs/nice-linux-x64-musl': 1.1.1
+ '@napi-rs/nice-openharmony-arm64': 1.1.1
+ '@napi-rs/nice-win32-arm64-msvc': 1.1.1
+ '@napi-rs/nice-win32-ia32-msvc': 1.1.1
+ '@napi-rs/nice-win32-x64-msvc': 1.1.1
+ optional: true
- '@napi-rs/wasm-runtime@0.2.4':
+ '@napi-rs/wasm-runtime@1.2.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)':
dependencies:
- '@emnapi/core': 1.2.0
- '@emnapi/runtime': 1.2.0
- '@tybys/wasm-util': 0.9.0
+ '@emnapi/core': 1.11.2
+ '@emnapi/runtime': 1.11.2
+ '@tybys/wasm-util': 0.10.3
+ optional: true
+
+ '@node-rs/xxhash-android-arm-eabi@1.7.7':
+ optional: true
+
+ '@node-rs/xxhash-android-arm64@1.7.7':
+ optional: true
+
+ '@node-rs/xxhash-darwin-arm64@1.7.7':
+ optional: true
+
+ '@node-rs/xxhash-darwin-x64@1.7.7':
+ optional: true
+
+ '@node-rs/xxhash-freebsd-x64@1.7.7':
+ optional: true
+
+ '@node-rs/xxhash-linux-arm-gnueabihf@1.7.7':
+ optional: true
+
+ '@node-rs/xxhash-linux-arm64-gnu@1.7.7':
+ optional: true
+
+ '@node-rs/xxhash-linux-arm64-musl@1.7.7':
+ optional: true
+
+ '@node-rs/xxhash-linux-x64-gnu@1.7.7':
+ optional: true
+
+ '@node-rs/xxhash-linux-x64-musl@1.7.7':
+ optional: true
+
+ '@node-rs/xxhash-win32-arm64-msvc@1.7.7':
+ optional: true
+
+ '@node-rs/xxhash-win32-ia32-msvc@1.7.7':
+ optional: true
+
+ '@node-rs/xxhash-win32-x64-msvc@1.7.7':
optional: true
+ '@node-rs/xxhash@1.7.7':
+ optionalDependencies:
+ '@node-rs/xxhash-android-arm-eabi': 1.7.7
+ '@node-rs/xxhash-android-arm64': 1.7.7
+ '@node-rs/xxhash-darwin-arm64': 1.7.7
+ '@node-rs/xxhash-darwin-x64': 1.7.7
+ '@node-rs/xxhash-freebsd-x64': 1.7.7
+ '@node-rs/xxhash-linux-arm-gnueabihf': 1.7.7
+ '@node-rs/xxhash-linux-arm64-gnu': 1.7.7
+ '@node-rs/xxhash-linux-arm64-musl': 1.7.7
+ '@node-rs/xxhash-linux-x64-gnu': 1.7.7
+ '@node-rs/xxhash-linux-x64-musl': 1.7.7
+ '@node-rs/xxhash-win32-arm64-msvc': 1.7.7
+ '@node-rs/xxhash-win32-ia32-msvc': 1.7.7
+ '@node-rs/xxhash-win32-x64-msvc': 1.7.7
+
'@nodelib/fs.scandir@2.1.5':
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -2836,256 +3155,408 @@ snapshots:
'@nodelib/fs.walk@1.2.8':
dependencies:
'@nodelib/fs.scandir': 2.1.5
- fastq: 1.17.1
+ fastq: 1.20.3
- '@oxc-resolver/binding-darwin-arm64@1.10.2':
+ '@oxc-resolver/binding-android-arm-eabi@11.24.2':
optional: true
- '@oxc-resolver/binding-darwin-x64@1.10.2':
+ '@oxc-resolver/binding-android-arm64@11.24.2':
optional: true
- '@oxc-resolver/binding-freebsd-x64@1.10.2':
+ '@oxc-resolver/binding-darwin-arm64@11.24.2':
optional: true
- '@oxc-resolver/binding-linux-arm-gnueabihf@1.10.2':
+ '@oxc-resolver/binding-darwin-x64@11.24.2':
optional: true
- '@oxc-resolver/binding-linux-arm64-gnu@1.10.2':
+ '@oxc-resolver/binding-freebsd-x64@11.24.2':
optional: true
- '@oxc-resolver/binding-linux-arm64-musl@1.10.2':
+ '@oxc-resolver/binding-linux-arm-gnueabihf@11.24.2':
optional: true
- '@oxc-resolver/binding-linux-x64-gnu@1.10.2':
+ '@oxc-resolver/binding-linux-arm-musleabihf@11.24.2':
optional: true
- '@oxc-resolver/binding-linux-x64-musl@1.10.2':
+ '@oxc-resolver/binding-linux-arm64-gnu@11.24.2':
optional: true
- '@oxc-resolver/binding-wasm32-wasi@1.10.2':
- dependencies:
- '@napi-rs/wasm-runtime': 0.2.4
+ '@oxc-resolver/binding-linux-arm64-musl@11.24.2':
optional: true
- '@oxc-resolver/binding-win32-arm64-msvc@1.10.2':
+ '@oxc-resolver/binding-linux-ppc64-gnu@11.24.2':
optional: true
- '@oxc-resolver/binding-win32-x64-msvc@1.10.2':
+ '@oxc-resolver/binding-linux-riscv64-gnu@11.24.2':
optional: true
- '@pkgjs/parseargs@0.11.0':
+ '@oxc-resolver/binding-linux-riscv64-musl@11.24.2':
optional: true
- '@sec-ant/readable-stream@0.4.1': {}
+ '@oxc-resolver/binding-linux-s390x-gnu@11.24.2':
+ optional: true
- '@sindresorhus/is@4.6.0': {}
+ '@oxc-resolver/binding-linux-x64-gnu@11.24.2':
+ optional: true
+
+ '@oxc-resolver/binding-linux-x64-musl@11.24.2':
+ optional: true
+
+ '@oxc-resolver/binding-openharmony-arm64@11.24.2':
+ optional: true
+
+ '@oxc-resolver/binding-wasm32-wasi@11.24.2':
+ dependencies:
+ '@emnapi/core': 1.11.2
+ '@emnapi/runtime': 1.11.2
+ '@napi-rs/wasm-runtime': 1.2.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)
+ optional: true
+
+ '@oxc-resolver/binding-win32-arm64-msvc@11.24.2':
+ optional: true
+
+ '@oxc-resolver/binding-win32-x64-msvc@11.24.2':
+ optional: true
+
+ '@pinojs/redact@0.4.0': {}
+
+ '@sec-ant/readable-stream@0.4.1': {}
'@sindresorhus/is@6.3.1': {}
- '@sindresorhus/is@7.0.0': {}
+ '@sindresorhus/is@7.2.0': {}
'@sindresorhus/merge-streams@2.3.0': {}
- '@swc-node/core@1.13.3(@swc/core@1.7.5)(@swc/types@0.1.12)':
+ '@sindresorhus/merge-streams@4.0.0': {}
+
+ '@swc-node/core@1.15.0(@swc/core@1.16.1)(@swc/types@0.1.28)':
dependencies:
- '@swc/core': 1.7.5
- '@swc/types': 0.1.12
+ '@swc/core': 1.16.1
+ '@swc/types': 0.1.28
- '@swc-node/register@1.10.9(@swc/core@1.7.5)(@swc/types@0.1.12)(typescript@5.5.4)':
+ '@swc-node/register@1.12.1(@swc/core@1.16.1)(@swc/types@0.1.28)(@typescript/typescript6@6.0.2)(supports-color@7.2.0)':
dependencies:
- '@swc-node/core': 1.13.3(@swc/core@1.7.5)(@swc/types@0.1.12)
- '@swc-node/sourcemap-support': 0.5.1
- '@swc/core': 1.7.5
+ '@node-rs/xxhash': 1.7.7
+ '@swc-node/core': 1.15.0(@swc/core@1.16.1)(@swc/types@0.1.28)
+ '@swc-node/sourcemap-support': 0.6.1
+ '@swc/core': 1.16.1
colorette: 2.0.20
- debug: 4.3.6
- oxc-resolver: 1.10.2
- pirates: 4.0.6
- tslib: 2.6.3
- typescript: 5.5.4
+ debug: 4.4.3(supports-color@7.2.0)
+ fast-json-stable-stringify: 2.1.0
+ oxc-resolver: 11.24.2
+ pirates: 4.0.7
+ tslib: 2.8.1
+ typescript: '@typescript/typescript6@6.0.2'
transitivePeerDependencies:
- '@swc/types'
- supports-color
- '@swc-node/sourcemap-support@0.5.1':
+ '@swc-node/sourcemap-support@0.6.1':
dependencies:
source-map-support: 0.5.21
- tslib: 2.6.3
+ tslib: 2.8.1
- '@swc/cli@0.4.0(@swc/core@1.7.5)':
+ '@swc/cli@0.8.1(@swc/core@1.16.1)(supports-color@7.2.0)':
dependencies:
- '@mole-inc/bin-wrapper': 8.0.1
- '@swc/core': 1.7.5
+ '@swc/core': 1.16.1
'@swc/counter': 0.1.3
+ '@xhmikosr/bin-wrapper': 14.5.1(supports-color@7.2.0)
commander: 8.3.0
- fast-glob: 3.3.2
- minimatch: 9.0.5
- piscina: 4.6.1
- semver: 7.6.3
+ minimatch: 9.0.9
+ piscina: 4.9.4
+ semver: 7.8.5
slash: 3.0.0
- source-map: 0.7.4
+ source-map: 0.7.6
+ tinyglobby: 0.2.17
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - react-native-b4a
+ - supports-color
+
+ '@swc/core-darwin-arm64@1.16.1':
+ optional: true
- '@swc/core-darwin-arm64@1.7.5':
+ '@swc/core-darwin-x64@1.16.1':
optional: true
- '@swc/core-darwin-x64@1.7.5':
+ '@swc/core-linux-arm-gnueabihf@1.16.1':
optional: true
- '@swc/core-linux-arm-gnueabihf@1.7.5':
+ '@swc/core-linux-arm64-gnu@1.16.1':
optional: true
- '@swc/core-linux-arm64-gnu@1.7.5':
+ '@swc/core-linux-arm64-musl@1.16.1':
optional: true
- '@swc/core-linux-arm64-musl@1.7.5':
+ '@swc/core-linux-ppc64-gnu@1.16.1':
optional: true
- '@swc/core-linux-x64-gnu@1.7.5':
+ '@swc/core-linux-s390x-gnu@1.16.1':
optional: true
- '@swc/core-linux-x64-musl@1.7.5':
+ '@swc/core-linux-x64-gnu@1.16.1':
optional: true
- '@swc/core-win32-arm64-msvc@1.7.5':
+ '@swc/core-linux-x64-musl@1.16.1':
optional: true
- '@swc/core-win32-ia32-msvc@1.7.5':
+ '@swc/core-win32-arm64-msvc@1.16.1':
optional: true
- '@swc/core-win32-x64-msvc@1.7.5':
+ '@swc/core-win32-ia32-msvc@1.16.1':
optional: true
- '@swc/core@1.7.5':
+ '@swc/core-win32-x64-msvc@1.16.1':
+ optional: true
+
+ '@swc/core@1.16.1':
dependencies:
'@swc/counter': 0.1.3
- '@swc/types': 0.1.12
+ '@swc/types': 0.1.28
optionalDependencies:
- '@swc/core-darwin-arm64': 1.7.5
- '@swc/core-darwin-x64': 1.7.5
- '@swc/core-linux-arm-gnueabihf': 1.7.5
- '@swc/core-linux-arm64-gnu': 1.7.5
- '@swc/core-linux-arm64-musl': 1.7.5
- '@swc/core-linux-x64-gnu': 1.7.5
- '@swc/core-linux-x64-musl': 1.7.5
- '@swc/core-win32-arm64-msvc': 1.7.5
- '@swc/core-win32-ia32-msvc': 1.7.5
- '@swc/core-win32-x64-msvc': 1.7.5
+ '@swc/core-darwin-arm64': 1.16.1
+ '@swc/core-darwin-x64': 1.16.1
+ '@swc/core-linux-arm-gnueabihf': 1.16.1
+ '@swc/core-linux-arm64-gnu': 1.16.1
+ '@swc/core-linux-arm64-musl': 1.16.1
+ '@swc/core-linux-ppc64-gnu': 1.16.1
+ '@swc/core-linux-s390x-gnu': 1.16.1
+ '@swc/core-linux-x64-gnu': 1.16.1
+ '@swc/core-linux-x64-musl': 1.16.1
+ '@swc/core-win32-arm64-msvc': 1.16.1
+ '@swc/core-win32-ia32-msvc': 1.16.1
+ '@swc/core-win32-x64-msvc': 1.16.1
'@swc/counter@0.1.3': {}
- '@swc/types@0.1.12':
+ '@swc/types@0.1.28':
dependencies:
'@swc/counter': 0.1.3
- '@szmarczak/http-timer@4.0.6':
- dependencies:
- defer-to-connect: 2.0.1
-
- '@szmarczak/http-timer@5.0.1':
+ '@tokenizer/inflate@0.4.1(supports-color@7.2.0)':
dependencies:
- defer-to-connect: 2.0.1
+ debug: 4.4.3(supports-color@7.2.0)
+ token-types: 6.1.2
+ transitivePeerDependencies:
+ - supports-color
'@tokenizer/token@0.3.0': {}
- '@trysound/sax@0.2.0': {}
-
- '@tsconfig/node10@1.0.11': {}
-
- '@tsconfig/node12@1.0.11': {}
-
- '@tsconfig/node14@1.0.3': {}
-
- '@tsconfig/node16@1.0.4': {}
-
- '@tybys/wasm-util@0.9.0':
+ '@tybys/wasm-util@0.10.3':
dependencies:
- tslib: 2.6.3
+ tslib: 2.8.1
optional: true
- '@types/cacheable-request@6.0.3':
- dependencies:
- '@types/http-cache-semantics': 4.0.4
- '@types/keyv': 3.1.4
- '@types/node': 22.1.0
- '@types/responselike': 1.0.3
-
- '@types/glob@7.2.0':
- dependencies:
- '@types/minimatch': 5.1.2
- '@types/node': 22.1.0
-
'@types/htmlhint@1.1.5': {}
- '@types/http-cache-semantics@4.0.4': {}
+ '@types/http-cache-semantics@4.2.0': {}
+
+ '@types/imagemin-gifsicle@7.0.4':
+ dependencies:
+ '@types/imagemin': 9.0.1
'@types/imagemin-jpegtran@5.0.4':
dependencies:
- '@types/imagemin': 9.0.0
+ '@types/imagemin': 9.0.1
'@types/imagemin-mozjpeg@8.0.4':
dependencies:
- '@types/imagemin': 9.0.0
+ '@types/imagemin': 9.0.1
- '@types/imagemin-svgo@10.0.5':
+ '@types/imagemin-svgo@11.0.0':
dependencies:
- '@types/imagemin': 9.0.0
- '@types/svgo': 2.6.4
+ '@types/imagemin': 9.0.1
+ svgo: 3.3.5
'@types/imagemin-zopfli@7.0.4':
dependencies:
- '@types/imagemin': 9.0.0
+ '@types/imagemin': 9.0.1
- '@types/imagemin@9.0.0':
+ '@types/imagemin@9.0.1':
dependencies:
- '@types/node': 22.1.0
+ '@types/node': 26.4.0
'@types/keyv@3.1.4':
dependencies:
- '@types/node': 22.1.0
+ '@types/node': 26.4.0
- '@types/minimatch@5.1.2': {}
+ '@types/node@26.4.0':
+ dependencies:
+ undici-types: 8.3.0
- '@types/node-notifier@8.0.5':
+ '@types/responselike@1.0.3':
dependencies:
- '@types/node': 22.1.0
+ '@types/node': 26.4.0
+
+ '@types/sarif@2.1.7': {}
+
+ '@types/yargs-parser@21.0.3': {}
- '@types/node@22.1.0':
+ '@types/yargs@17.0.35':
dependencies:
- undici-types: 6.13.0
+ '@types/yargs-parser': 21.0.3
- '@types/responselike@1.0.3':
+ '@typescript/typescript-aix-ppc64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-darwin-arm64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-darwin-x64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-freebsd-arm64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-freebsd-x64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-linux-arm64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-linux-arm@7.0.2':
+ optional: true
+
+ '@typescript/typescript-linux-loong64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-linux-mips64el@7.0.2':
+ optional: true
+
+ '@typescript/typescript-linux-ppc64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-linux-riscv64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-linux-s390x@7.0.2':
+ optional: true
+
+ '@typescript/typescript-linux-x64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-netbsd-arm64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-netbsd-x64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-openbsd-arm64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-openbsd-x64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-sunos-x64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-win32-arm64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-win32-x64@7.0.2':
+ optional: true
+
+ '@typescript/typescript6@6.0.2':
+ dependencies:
+ '@typescript/old': typescript@6.0.3
+
+ '@xhmikosr/archive-type@8.1.0(supports-color@7.2.0)':
dependencies:
- '@types/node': 22.1.0
+ file-type: 21.3.4(supports-color@7.2.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@xhmikosr/bin-check@8.2.2':
+ dependencies:
+ execa: 9.6.1
+ isexe: 4.0.0
+
+ '@xhmikosr/bin-wrapper@14.5.1(supports-color@7.2.0)':
+ dependencies:
+ '@xhmikosr/bin-check': 8.2.2
+ '@xhmikosr/downloader': 16.3.1(supports-color@7.2.0)
+ '@xhmikosr/os-filter-obj': 4.1.0
+ binary-version-check: 6.1.0
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - react-native-b4a
+ - supports-color
- '@types/shelljs@0.8.15':
+ '@xhmikosr/decompress-tar@9.0.2(supports-color@7.2.0)':
dependencies:
- '@types/glob': 7.2.0
- '@types/node': 22.1.0
+ file-type: 21.3.4(supports-color@7.2.0)
+ is-stream: 4.0.1
+ tar-stream: 3.1.7
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - react-native-b4a
+ - supports-color
- '@types/svgo@2.6.4':
+ '@xhmikosr/decompress-tarbz2@9.0.2(supports-color@7.2.0)':
dependencies:
- '@types/node': 22.1.0
+ '@xhmikosr/decompress-tar': 9.0.2(supports-color@7.2.0)
+ file-type: 21.3.4(supports-color@7.2.0)
+ is-stream: 4.0.1
+ seek-bzip: 2.0.0
+ unbzip2-stream: 1.4.3
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - react-native-b4a
+ - supports-color
- '@types/yargs-parser@21.0.3': {}
+ '@xhmikosr/decompress-targz@9.0.1(supports-color@7.2.0)':
+ dependencies:
+ '@xhmikosr/decompress-tar': 9.0.2(supports-color@7.2.0)
+ file-type: 21.3.4(supports-color@7.2.0)
+ is-stream: 4.0.1
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - react-native-b4a
+ - supports-color
- '@types/yargs@17.0.32':
+ '@xhmikosr/decompress-unzip@8.2.1(supports-color@7.2.0)':
dependencies:
- '@types/yargs-parser': 21.0.3
+ file-type: 21.3.4(supports-color@7.2.0)
+ get-stream: 9.0.1
+ yauzl: 3.4.0
+ transitivePeerDependencies:
+ - supports-color
- acorn-walk@8.3.3:
+ '@xhmikosr/decompress@11.1.4(supports-color@7.2.0)':
dependencies:
- acorn: 8.12.1
+ '@xhmikosr/decompress-tar': 9.0.2(supports-color@7.2.0)
+ '@xhmikosr/decompress-tarbz2': 9.0.2(supports-color@7.2.0)
+ '@xhmikosr/decompress-targz': 9.0.1(supports-color@7.2.0)
+ '@xhmikosr/decompress-unzip': 8.2.1(supports-color@7.2.0)
+ graceful-fs: 4.2.11
+ strip-dirs: 3.0.0
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - react-native-b4a
+ - supports-color
- acorn@8.12.1: {}
+ '@xhmikosr/downloader@16.3.1(supports-color@7.2.0)':
+ dependencies:
+ '@xhmikosr/archive-type': 8.1.0(supports-color@7.2.0)
+ '@xhmikosr/decompress': 11.1.4(supports-color@7.2.0)
+ content-disposition: 2.0.1
+ ext-name: 5.0.0
+ file-type: 21.3.4(supports-color@7.2.0)
+ filenamify: 7.0.3
+ got: 14.6.6
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - react-native-b4a
+ - supports-color
- ansi-gray@0.1.1:
+ '@xhmikosr/os-filter-obj@4.1.0':
dependencies:
- ansi-wrap: 0.1.0
+ system-architecture: 1.0.0
ansi-regex@2.1.1: {}
- ansi-regex@5.0.1: {}
-
- ansi-regex@6.0.1: {}
+ ansi-regex@6.3.0: {}
ansi-styles@2.2.1: {}
@@ -3093,56 +3564,36 @@ snapshots:
dependencies:
color-convert: 2.0.1
- ansi-styles@6.2.1: {}
-
- ansi-wrap@0.1.0: {}
+ ansi-styles@6.2.3: {}
arch@2.2.0: {}
- archive-type@3.2.0:
- dependencies:
- file-type: 3.9.0
-
archive-type@4.0.0:
dependencies:
file-type: 4.4.0
- arg@4.1.3: {}
-
- arr-diff@2.0.0:
- dependencies:
- arr-flatten: 1.1.0
-
- arr-flatten@1.1.0: {}
-
- array-differ@1.0.0: {}
-
array-find-index@1.0.2: {}
- array-uniq@1.0.3: {}
+ async@3.2.6: {}
- array-unique@0.2.1: {}
+ atomic-sleep@1.0.0: {}
- async-each-series@1.1.0: {}
+ available-typed-arrays@1.0.7:
+ dependencies:
+ possible-typed-array-names: 1.1.0
- async@3.2.3: {}
+ b4a@1.8.1: {}
balanced-match@1.0.2: {}
+ balanced-match@4.0.4: {}
+
+ bare-events@2.9.2: {}
+
base64-js@1.5.1: {}
beeper@1.1.1: {}
- bin-build@2.2.0:
- dependencies:
- archive-type: 3.2.0
- decompress: 4.2.1
- download: 4.4.3
- exec-series: 1.0.3
- rimraf: 2.7.1
- tempfile: 1.1.1
- url-regex: 3.2.0
-
bin-build@3.0.0:
dependencies:
decompress: 4.2.1
@@ -3151,57 +3602,22 @@ snapshots:
p-map-series: 1.0.0
tempfile: 2.0.0
- bin-check@2.0.0:
- dependencies:
- executable: 1.1.0
-
bin-check@4.1.0:
dependencies:
execa: 0.7.0
executable: 4.1.1
- bin-version-check@2.1.0:
- dependencies:
- bin-version: 1.0.4
- minimist: 1.2.8
- semver: 7.6.3
- semver-truncate: 1.1.2
-
bin-version-check@4.0.0:
dependencies:
bin-version: 3.1.0
- semver: 7.6.3
+ semver: 7.8.5
semver-truncate: 1.1.2
- bin-version-check@5.1.0:
- dependencies:
- bin-version: 6.0.0
- semver: 7.6.3
- semver-truncate: 3.0.0
-
- bin-version@1.0.4:
- dependencies:
- find-versions: 1.2.1
-
bin-version@3.1.0:
dependencies:
execa: 1.0.0
find-versions: 3.2.0
- bin-version@6.0.0:
- dependencies:
- execa: 5.1.1
- find-versions: 5.1.0
-
- bin-wrapper@3.0.2:
- dependencies:
- bin-check: 2.0.0
- bin-version-check: 2.1.0
- download: 4.4.3
- each-async: 1.1.1
- lazy-req: 1.1.0
- os-filter-obj: 1.0.3
-
bin-wrapper@4.1.0:
dependencies:
bin-check: 4.1.0
@@ -3211,6 +3627,17 @@ snapshots:
os-filter-obj: 2.0.0
pify: 4.0.1
+ binary-version-check@6.1.0:
+ dependencies:
+ binary-version: 7.1.0
+ semver: 7.8.5
+ semver-truncate: 3.0.0
+
+ binary-version@7.1.0:
+ dependencies:
+ execa: 8.0.1
+ find-versions: 6.0.0
+
bl@1.2.3:
dependencies:
readable-stream: 2.3.8
@@ -3218,15 +3645,19 @@ snapshots:
boolbase@1.0.0: {}
- brace-expansion@1.1.11:
+ brace-expansion@1.1.18:
dependencies:
balanced-match: 1.0.2
concat-map: 0.0.1
- brace-expansion@2.0.1:
+ brace-expansion@2.1.4:
dependencies:
balanced-match: 1.0.2
+ brace-expansion@5.0.9:
+ dependencies:
+ balanced-match: 4.0.4
+
braces@3.0.3:
dependencies:
fill-range: 7.1.1
@@ -3249,29 +3680,36 @@ snapshots:
base64-js: 1.5.1
ieee754: 1.2.1
- cacheable-lookup@5.0.4: {}
+ byte-counter@0.1.0: {}
cacheable-lookup@7.0.0: {}
- cacheable-request@12.0.1:
+ cacheable-request@13.0.19:
dependencies:
- '@types/http-cache-semantics': 4.0.4
+ '@types/http-cache-semantics': 4.2.0
get-stream: 9.0.1
- http-cache-semantics: 4.1.1
- keyv: 4.5.4
+ http-cache-semantics: 4.2.0
+ keyv: 5.6.0
mimic-response: 4.0.0
- normalize-url: 8.0.1
- responselike: 3.0.0
+ normalize-url: 8.1.1
+ responselike: 4.0.2
- cacheable-request@7.0.4:
+ call-bind-apply-helpers@1.0.2:
dependencies:
- clone-response: 1.0.3
- get-stream: 5.2.0
- http-cache-semantics: 4.1.1
- keyv: 4.5.4
- lowercase-keys: 2.0.0
- normalize-url: 6.1.0
- responselike: 2.0.1
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+
+ call-bind@1.0.9:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ get-intrinsic: 1.3.0
+ set-function-length: 1.2.2
+
+ call-bound@1.0.4:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ get-intrinsic: 1.3.0
callsites@4.2.0: {}
@@ -3282,13 +3720,6 @@ snapshots:
camelcase@2.1.1: {}
- caw@1.2.0:
- dependencies:
- get-proxy: 1.1.0
- is-obj: 1.0.1
- object-assign: 3.0.0
- tunnel-agent: 0.6.0
-
caw@2.0.1:
dependencies:
get-proxy: 2.1.0
@@ -3309,25 +3740,15 @@ snapshots:
ansi-styles: 4.3.0
supports-color: 7.2.0
- chalk@5.3.0: {}
+ chalk@6.0.0: {}
change-file-extension@0.1.1: {}
- cliui@8.0.1:
+ cliui@9.0.1:
dependencies:
- string-width: 4.2.3
- strip-ansi: 6.0.1
- wrap-ansi: 7.0.0
-
- clone-response@1.0.3:
- dependencies:
- mimic-response: 1.0.1
-
- clone-stats@0.0.1: {}
-
- clone@1.0.4: {}
-
- co@3.1.0: {}
+ string-width: 7.2.0
+ strip-ansi: 7.2.0
+ wrap-ansi: 9.0.2
color-convert@2.0.1:
dependencies:
@@ -3335,37 +3756,20 @@ snapshots:
color-name@1.1.4: {}
- color-string@1.9.1:
- dependencies:
- color-name: 1.1.4
- simple-swizzle: 0.2.2
-
- color-support@1.1.3: {}
-
- color@4.2.3:
- dependencies:
- color-convert: 2.0.1
- color-string: 1.9.1
-
colorette@2.0.20: {}
+ commander@11.1.0: {}
+
commander@2.20.3: {}
+ commander@6.2.1: {}
+
commander@7.2.0: {}
commander@8.3.0: {}
- commander@9.5.0: {}
-
concat-map@0.0.1: {}
- concat-stream@1.6.2:
- dependencies:
- buffer-from: 1.1.2
- inherits: 2.0.4
- readable-stream: 2.3.8
- typedarray: 0.0.6
-
config-chain@1.1.13:
dependencies:
ini: 1.3.8
@@ -3377,53 +3781,52 @@ snapshots:
dependencies:
safe-buffer: 5.2.1
- convert-hrtime@5.0.0: {}
+ content-disposition@2.0.1: {}
- convert-source-map@1.9.0: {}
+ convert-hrtime@5.0.0: {}
core-util-is@1.0.3: {}
- create-require@1.1.1: {}
-
- cross-spawn@5.1.0:
- dependencies:
- lru-cache: 4.1.5
- shebang-command: 1.2.0
- which: 1.3.1
-
- cross-spawn@6.0.5:
- dependencies:
- nice-try: 1.0.5
- path-key: 2.0.1
- semver: 7.6.3
- shebang-command: 1.2.0
- which: 1.3.1
-
- cross-spawn@7.0.3:
+ cross-spawn@7.0.6:
dependencies:
path-key: 3.1.1
shebang-command: 2.0.0
which: 2.0.2
- css-select@5.1.0:
+ css-select@5.2.2:
+ dependencies:
+ boolbase: 1.0.0
+ css-what: 6.2.2
+ domhandler: 5.0.3
+ domutils: 3.2.2
+ nth-check: 2.1.1
+
+ css-select@6.0.0:
dependencies:
boolbase: 1.0.0
- css-what: 6.1.0
+ css-what: 7.0.0
domhandler: 5.0.3
- domutils: 3.1.0
+ domutils: 3.2.2
nth-check: 2.1.1
css-tree@2.2.1:
dependencies:
mdn-data: 2.0.28
- source-map-js: 1.2.0
+ source-map-js: 1.2.1
css-tree@2.3.1:
dependencies:
mdn-data: 2.0.30
- source-map-js: 1.2.0
+ source-map-js: 1.2.1
+
+ css-tree@3.2.1:
+ dependencies:
+ mdn-data: 2.27.1
+ source-map-js: 1.2.1
- css-what@6.1.0: {}
+ css-what@6.2.2: {}
+
+ css-what@7.0.0: {}
csso@5.0.5:
dependencies:
@@ -3433,22 +3836,23 @@ snapshots:
dependencies:
array-find-index: 1.0.2
- cwebp-bin@8.0.0:
- dependencies:
- bin-build: 3.0.0
- bin-wrapper: 4.1.0
-
- dateformat@2.2.0: {}
+ dateformat@4.6.3: {}
- debug@4.3.6:
+ debug@4.4.3(supports-color@7.2.0):
dependencies:
- ms: 2.1.2
+ ms: 2.1.3
+ optionalDependencies:
+ supports-color: 7.2.0
decamelize@1.2.0: {}
- decompress-response@6.0.0:
+ decompress-response@10.0.0:
+ dependencies:
+ mimic-response: 4.0.0
+
+ decompress-response@3.3.0:
dependencies:
- mimic-response: 3.1.0
+ mimic-response: 1.0.1
decompress-tar@4.1.1:
dependencies:
@@ -3488,13 +3892,13 @@ snapshots:
pify: 2.3.0
strip-dirs: 2.1.0
- deep-extend@0.6.0: {}
-
- defer-to-connect@2.0.1: {}
-
- detect-libc@2.0.3: {}
+ define-data-property@1.1.4:
+ dependencies:
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ gopd: 1.2.0
- diff@4.0.2: {}
+ detect-libc@2.1.2: {}
dom-serializer@2.0.0:
dependencies:
@@ -3508,7 +3912,7 @@ snapshots:
dependencies:
domelementtype: 2.3.0
- domutils@3.1.0:
+ domutils@3.2.2:
dependencies:
dom-serializer: 2.0.0
domelementtype: 2.3.0
@@ -3518,24 +3922,6 @@ snapshots:
dependencies:
type-fest: 3.13.1
- download@4.4.3:
- dependencies:
- caw: 1.2.0
- concat-stream: 1.6.2
- each-async: 1.1.1
- filenamify: 1.2.1
- got: 14.4.2
- gulp-decompress: 1.2.0
- gulp-rename: 1.4.0
- is-url: 1.2.4
- object-assign: 4.1.1
- read-all-stream: 3.1.0
- readable-stream: 2.3.8
- stream-combiner2: 1.1.1
- vinyl: 1.2.0
- vinyl-fs: 2.4.4
- ware: 1.3.0
-
download@6.2.5:
dependencies:
caw: 2.0.1
@@ -3545,7 +3931,7 @@ snapshots:
file-type: 5.2.0
filenamify: 2.1.0
get-stream: 3.0.0
- got: 14.4.2
+ got: 7.1.0
make-dir: 1.3.0
p-event: 1.3.0
pify: 3.0.0
@@ -3560,38 +3946,22 @@ snapshots:
file-type: 8.1.0
filenamify: 2.1.0
get-stream: 3.0.0
- got: 14.4.2
+ got: 7.1.0
make-dir: 1.3.0
p-event: 2.3.1
pify: 3.0.0
- duplexer2@0.0.2:
- dependencies:
- readable-stream: 1.1.14
-
- duplexer2@0.1.4:
+ dunder-proto@1.0.1:
dependencies:
- readable-stream: 2.3.8
-
- duplexify@3.7.1:
- dependencies:
- end-of-stream: 1.4.4
- inherits: 2.0.4
- readable-stream: 2.3.8
- stream-shift: 1.0.3
-
- each-async@1.1.1:
- dependencies:
- onetime: 1.1.0
- set-immediate-shim: 1.0.1
-
- eastasianwidth@0.2.0: {}
+ call-bind-apply-helpers: 1.0.2
+ es-errors: 1.3.0
+ gopd: 1.2.0
- emoji-regex@8.0.0: {}
+ duplexer3@0.1.5: {}
- emoji-regex@9.2.2: {}
+ emoji-regex@10.6.0: {}
- end-of-stream@1.4.4:
+ end-of-stream@1.4.5:
dependencies:
once: 1.4.0
@@ -3599,15 +3969,27 @@ snapshots:
environment@1.1.0: {}
- error-ex@1.3.2:
+ error-ex@1.3.4:
dependencies:
is-arrayish: 0.2.1
- escalade@3.1.2: {}
+ es-define-property@1.0.1: {}
+
+ es-errors@1.3.0: {}
+
+ es-object-atoms@1.1.2:
+ dependencies:
+ es-errors: 1.3.0
+
+ escalade@3.2.0: {}
escape-string-regexp@1.0.5: {}
- escape-string-regexp@5.0.0: {}
+ events-universal@1.0.1:
+ dependencies:
+ bare-events: 2.9.2
+ transitivePeerDependencies:
+ - bare-abort-controller
exec-buffer@3.2.0:
dependencies:
@@ -3617,14 +3999,9 @@ snapshots:
rimraf: 2.7.1
tempfile: 2.0.0
- exec-series@1.0.3:
- dependencies:
- async-each-series: 1.1.0
- object-assign: 4.1.1
-
execa@0.7.0:
dependencies:
- cross-spawn: 5.1.0
+ cross-spawn: 7.0.6
get-stream: 3.0.0
is-stream: 1.1.0
npm-run-path: 2.0.2
@@ -3634,7 +4011,7 @@ snapshots:
execa@1.0.0:
dependencies:
- cross-spawn: 6.0.5
+ cross-spawn: 7.0.6
get-stream: 4.1.0
is-stream: 1.1.0
npm-run-path: 2.0.2
@@ -3644,7 +4021,7 @@ snapshots:
execa@5.1.1:
dependencies:
- cross-spawn: 7.0.3
+ cross-spawn: 7.0.6
get-stream: 6.0.1
human-signals: 2.1.0
is-stream: 2.0.1
@@ -3656,7 +4033,7 @@ snapshots:
execa@6.1.0:
dependencies:
- cross-spawn: 7.0.3
+ cross-spawn: 7.0.6
get-stream: 6.0.1
human-signals: 3.0.1
is-stream: 3.0.0
@@ -3668,7 +4045,7 @@ snapshots:
execa@8.0.1:
dependencies:
- cross-spawn: 7.0.3
+ cross-spawn: 7.0.6
get-stream: 8.0.1
human-signals: 5.0.0
is-stream: 3.0.0
@@ -3678,84 +4055,92 @@ snapshots:
signal-exit: 4.1.0
strip-final-newline: 3.0.0
- executable@1.1.0:
+ execa@9.6.1:
dependencies:
- meow: 3.7.0
+ '@sindresorhus/merge-streams': 4.0.0
+ cross-spawn: 7.0.6
+ figures: 6.1.0
+ get-stream: 9.0.1
+ human-signals: 8.0.1
+ is-plain-obj: 4.1.0
+ is-stream: 4.0.1
+ npm-run-path: 6.0.0
+ pretty-ms: 9.3.1
+ signal-exit: 4.1.0
+ strip-final-newline: 4.0.0
+ yoctocolors: 2.2.0
executable@4.1.1:
dependencies:
pify: 2.3.0
- expand-brackets@0.1.5:
- dependencies:
- is-posix-bracket: 0.1.1
-
ext-list@2.2.2:
dependencies:
- mime-db: 1.53.0
+ mime-db: 1.54.0
ext-name@5.0.0:
dependencies:
ext-list: 2.2.2
sort-keys-length: 1.0.1
- extend-shallow@2.0.1:
- dependencies:
- is-extendable: 0.1.1
-
- extend@3.0.2: {}
-
- extglob@0.3.2:
- dependencies:
- is-extglob: 1.0.0
+ fast-copy@4.1.0: {}
- fancy-log@1.3.3:
- dependencies:
- ansi-gray: 0.1.1
- color-support: 1.1.3
- parse-node-version: 1.0.1
- time-stamp: 1.1.0
+ fast-equals@5.4.1: {}
- fast-equals@5.0.1: {}
+ fast-fifo@1.3.2: {}
- fast-glob@3.3.2:
+ fast-glob@3.3.3:
dependencies:
'@nodelib/fs.stat': 2.0.5
'@nodelib/fs.walk': 1.2.8
glob-parent: 5.1.2
merge2: 1.4.1
- micromatch: 4.0.7
+ micromatch: 4.0.8
- fast-xml-parser@4.4.1:
- dependencies:
- strnum: 1.0.5
+ fast-json-stable-stringify@2.1.0: {}
+
+ fast-safe-stringify@2.1.1: {}
- fastq@1.17.1:
+ fastq@1.20.3:
dependencies:
- reusify: 1.0.4
+ reusify: 1.1.0
fd-slicer@1.1.0:
dependencies:
pend: 1.2.0
+ fdir@6.5.0(picomatch@4.0.7):
+ optionalDependencies:
+ picomatch: 4.0.7
+
figures@1.7.0:
dependencies:
escape-string-regexp: 1.0.5
object-assign: 4.1.1
+ figures@6.1.0:
+ dependencies:
+ is-unicode-supported: 2.1.0
+
file-type@10.11.0: {}
- file-type@17.1.6:
+ file-type@21.3.4(supports-color@7.2.0):
dependencies:
- readable-web-to-node-stream: 3.0.2
- strtok3: 7.1.1
- token-types: 5.0.1
+ '@tokenizer/inflate': 0.4.1(supports-color@7.2.0)
+ strtok3: 10.3.5
+ token-types: 6.1.2
+ uint8array-extras: 1.5.0
+ transitivePeerDependencies:
+ - supports-color
- file-type@19.3.0:
+ file-type@22.0.2(supports-color@7.2.0):
dependencies:
- strtok3: 8.0.1
- token-types: 6.0.0
- uint8array-extras: 1.4.0
+ '@tokenizer/inflate': 0.4.1(supports-color@7.2.0)
+ strtok3: 10.3.5
+ token-types: 6.1.2
+ uint8array-extras: 1.5.0
+ transitivePeerDependencies:
+ - supports-color
file-type@3.9.0: {}
@@ -3767,19 +4152,9 @@ snapshots:
file-type@8.1.0: {}
- filename-regex@2.0.1: {}
-
- filename-reserved-regex@1.0.0: {}
-
filename-reserved-regex@2.0.0: {}
- filename-reserved-regex@3.0.0: {}
-
- filenamify@1.2.1:
- dependencies:
- filename-reserved-regex: 1.0.0
- strip-outer: 1.0.1
- trim-repeated: 1.0.0
+ filename-reserved-regex@4.0.1: {}
filenamify@2.1.0:
dependencies:
@@ -3787,11 +4162,9 @@ snapshots:
strip-outer: 1.0.1
trim-repeated: 1.0.0
- filenamify@5.1.1:
+ filenamify@7.0.3:
dependencies:
- filename-reserved-regex: 3.0.0
- strip-outer: 2.0.0
- trim-repeated: 2.0.0
+ filename-reserved-regex: 4.0.1
fill-range@7.1.1:
dependencies:
@@ -3802,38 +4175,29 @@ snapshots:
path-exists: 2.1.0
pinkie-promise: 2.0.1
- find-versions@1.2.1:
- dependencies:
- array-uniq: 1.0.3
- get-stdin: 4.0.1
- meow: 3.7.0
- semver-regex: 4.0.5
-
find-versions@3.2.0:
dependencies:
semver-regex: 4.0.5
- find-versions@5.1.0:
+ find-versions@6.0.0:
dependencies:
semver-regex: 4.0.5
+ super-regex: 1.1.0
- first-chunk-stream@1.0.0: {}
-
- for-in@1.0.2: {}
-
- for-own@0.1.5:
- dependencies:
- for-in: 1.0.2
-
- foreground-child@3.2.1:
+ for-each@0.3.5:
dependencies:
- cross-spawn: 7.0.3
- signal-exit: 4.1.0
+ is-callable: 1.2.7
- form-data-encoder@4.0.2: {}
+ form-data-encoder@4.1.0: {}
fs-constants@1.0.0: {}
+ fs-extra@11.4.0:
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 6.2.1
+ universalify: 2.0.1
+
fs.realpath@1.0.0: {}
function-bind@1.1.2: {}
@@ -3842,9 +4206,25 @@ snapshots:
get-caller-file@2.0.5: {}
- get-proxy@1.1.0:
+ get-east-asian-width@1.6.0: {}
+
+ get-intrinsic@1.3.0:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.2
+ function-bind: 1.1.2
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.4
+ math-intrinsics: 1.1.0
+
+ get-proto@1.0.1:
dependencies:
- rc: 1.2.8
+ dunder-proto: 1.0.1
+ es-object-atoms: 1.1.2
get-proxy@2.1.0:
dependencies:
@@ -3861,11 +4241,7 @@ snapshots:
get-stream@4.1.0:
dependencies:
- pump: 3.0.0
-
- get-stream@5.2.0:
- dependencies:
- pump: 3.0.0
+ pump: 3.0.4
get-stream@6.0.1: {}
@@ -3876,153 +4252,77 @@ snapshots:
'@sec-ant/readable-stream': 0.4.1
is-stream: 4.0.1
- giflossy@3.0.41:
- dependencies:
- bin-build: 2.2.0
- bin-wrapper: 3.0.2
- logalot: 2.1.0
-
- glob-base@0.3.0:
- dependencies:
- glob-parent: 2.0.0
- is-glob: 2.0.1
-
- glob-parent@2.0.0:
+ gifsicle@5.3.0:
dependencies:
- is-glob: 2.0.1
-
- glob-parent@3.1.0:
- dependencies:
- is-glob: 3.1.0
- path-dirname: 1.0.2
+ bin-build: 3.0.0
+ bin-wrapper: 4.1.0
+ execa: 5.1.1
glob-parent@5.1.2:
dependencies:
is-glob: 4.0.3
- glob-stream@5.3.5:
- dependencies:
- extend: 3.0.2
- glob: 5.0.15
- glob-parent: 3.1.0
- micromatch: 2.3.11
- ordered-read-streams: 0.3.0
- through2: 0.6.5
- to-absolute-glob: 0.1.1
- unique-stream: 2.3.1
-
- glob@10.4.5:
- dependencies:
- foreground-child: 3.2.1
- jackspeak: 3.4.3
- minimatch: 9.0.5
- minipass: 7.1.2
- package-json-from-dist: 1.0.0
- path-scurry: 1.11.1
-
- glob@5.0.15:
+ glob@13.0.6:
dependencies:
- inflight: 1.0.6
- inherits: 2.0.4
- minimatch: 3.1.2
- once: 1.4.0
- path-is-absolute: 1.0.1
+ minimatch: 10.2.6
+ minipass: 7.1.3
+ path-scurry: 2.0.2
glob@7.2.3:
dependencies:
fs.realpath: 1.0.0
inflight: 1.0.6
inherits: 2.0.4
- minimatch: 3.1.2
+ minimatch: 3.1.5
once: 1.4.0
path-is-absolute: 1.0.1
- globby@14.0.2:
+ globby@14.1.0:
dependencies:
'@sindresorhus/merge-streams': 2.3.0
- fast-glob: 3.3.2
- ignore: 5.3.1
- path-type: 5.0.0
+ fast-glob: 3.3.3
+ ignore: 7.0.8
+ path-type: 6.0.0
slash: 5.1.0
- unicorn-magic: 0.1.0
+ unicorn-magic: 0.3.0
- glogg@1.0.2:
- dependencies:
- sparkles: 1.0.1
+ gopd@1.2.0: {}
- got@11.8.6:
+ got@14.6.6:
dependencies:
- '@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
- http2-wrapper: 1.0.3
- lowercase-keys: 2.0.0
- p-cancelable: 2.1.1
- responselike: 2.0.1
-
- got@14.4.2:
- dependencies:
- '@sindresorhus/is': 7.0.0
- '@szmarczak/http-timer': 5.0.1
+ '@sindresorhus/is': 7.2.0
+ byte-counter: 0.1.0
cacheable-lookup: 7.0.0
- cacheable-request: 12.0.1
- decompress-response: 6.0.0
- form-data-encoder: 4.0.2
+ cacheable-request: 13.0.19
+ decompress-response: 10.0.0
+ form-data-encoder: 4.1.0
http2-wrapper: 2.2.1
+ keyv: 5.6.0
lowercase-keys: 3.0.0
p-cancelable: 4.0.1
- responselike: 3.0.0
- type-fest: 4.23.0
-
- graceful-fs@4.2.11: {}
-
- growly@1.3.0: {}
-
- gulp-decompress@1.2.0:
- dependencies:
- archive-type: 3.2.0
- decompress: 4.2.1
- gulp-util: 3.0.8
- readable-stream: 2.3.8
-
- gulp-rename@1.4.0: {}
-
- gulp-sourcemaps@1.6.0:
- dependencies:
- convert-source-map: 1.9.0
- graceful-fs: 4.2.11
- strip-bom: 2.0.0
- through2: 2.0.5
- vinyl: 1.2.0
+ responselike: 4.0.2
+ type-fest: 4.41.0
- gulp-util@3.0.8:
+ got@7.1.0:
dependencies:
- array-differ: 1.0.0
- array-uniq: 1.0.3
- beeper: 1.1.1
- chalk: 1.1.3
- dateformat: 2.2.0
- fancy-log: 1.3.3
- gulplog: 1.0.0
- has-gulplog: 0.1.0
- lodash._reescape: 3.0.0
- lodash._reevaluate: 3.0.0
- lodash._reinterpolate: 3.0.0
- lodash.template: 3.6.2
- minimist: 1.2.8
- multipipe: 0.1.2
- object-assign: 3.0.0
- replace-ext: 0.0.1
- through2: 2.0.5
- vinyl: 0.5.3
+ '@types/keyv': 3.1.4
+ '@types/responselike': 1.0.3
+ decompress-response: 3.3.0
+ duplexer3: 0.1.5
+ get-stream: 3.0.0
+ is-plain-obj: 1.1.0
+ is-retry-allowed: 1.2.0
+ is-stream: 1.1.0
+ isurl: 1.0.0
+ lowercase-keys: 1.0.1
+ p-cancelable: 0.3.0
+ p-timeout: 1.2.1
+ safe-buffer: 5.2.1
+ timed-out: 4.0.1
+ url-parse-lax: 1.0.0
+ url-to-options: 1.0.1
- gulplog@1.0.0:
- dependencies:
- glogg: 1.0.2
+ graceful-fs@4.2.11: {}
has-ansi@2.0.0:
dependencies:
@@ -4030,45 +4330,46 @@ snapshots:
has-flag@4.0.0: {}
- has-gulplog@0.1.0:
+ has-property-descriptors@1.0.2:
dependencies:
- sparkles: 1.0.1
+ es-define-property: 1.0.1
has-symbol-support-x@1.4.2: {}
+ has-symbols@1.1.0: {}
+
has-to-string-tag-x@1.4.1:
dependencies:
has-symbol-support-x: 1.4.2
- hasown@2.0.2:
+ has-tostringtag@1.0.2:
+ dependencies:
+ has-symbols: 1.1.0
+
+ hasown@2.0.4:
dependencies:
function-bind: 1.1.2
+ help-me@5.0.0: {}
+
hosted-git-info@2.8.9: {}
htmlhint-stylish@1.0.3:
dependencies:
jshint-stylish: 2.2.1
- htmlhint@1.1.4:
+ htmlhint@1.9.2:
dependencies:
- async: 3.2.3
+ async: 3.2.6
chalk: 4.1.2
- commander: 9.5.0
- glob: 7.2.3
+ commander: 11.1.0
+ glob: 13.0.6
is-glob: 4.0.3
- node-fetch: 2.7.0
- strip-json-comments: 3.1.0
+ node-sarif-builder: 3.2.0
+ strip-json-comments: 3.1.1
xml: 1.0.1
- transitivePeerDependencies:
- - encoding
-
- http-cache-semantics@4.1.1: {}
- http2-wrapper@1.0.3:
- dependencies:
- quick-lru: 5.1.1
- resolve-alpn: 1.2.1
+ http-cache-semantics@4.2.0: {}
http2-wrapper@2.2.1:
dependencies:
@@ -4081,25 +4382,33 @@ snapshots:
human-signals@5.0.0: {}
- identifier-regex@1.0.0:
+ human-signals@8.0.1: {}
+
+ identifier-regex@1.1.0:
dependencies:
- reserved-identifiers: 1.0.0
+ reserved-identifiers: 1.2.0
ieee754@1.2.1: {}
- ignore@5.3.1: {}
+ ignore@7.0.8: {}
- imagemin-giflossy@5.1.10:
+ image-dimensions@2.5.1: {}
+
+ imagemin-gifsicle@7.0.0:
dependencies:
- exec-buffer: 3.2.0
- giflossy: 3.0.41
- is-gif: 1.0.0
+ execa: 1.0.0
+ gifsicle: 5.3.0
+ is-gif: 3.0.0
- imagemin-jpegtran@7.0.0:
+ imagemin-jpegtran@8.0.0(supports-color@7.2.0):
dependencies:
- exec-buffer: 3.2.0
- is-jpg: 2.0.0
- jpegtran-bin: 5.0.2
+ execa: 9.6.1
+ file-type: 22.0.2(supports-color@7.2.0)
+ image-dimensions: 2.5.1
+ jpegtran-bin: 7.0.0
+ uint8array-extras: 1.5.0
+ transitivePeerDependencies:
+ - supports-color
imagemin-mozjpeg@10.0.0:
dependencies:
@@ -4114,13 +4423,12 @@ snapshots:
is-png: 3.0.1
ow: 2.0.0
pngquant-bin: 9.0.0
- uint8array-extras: 1.4.0
+ uint8array-extras: 1.5.0
- imagemin-webp@8.0.0:
+ imagemin-svgo@12.0.0:
dependencies:
- cwebp-bin: 8.0.0
- exec-buffer: 3.2.0
- is-cwebp-readable: 3.0.0
+ is-svg: 6.1.0
+ svgo: 4.1.0
imagemin-zopfli@7.0.0:
dependencies:
@@ -4128,17 +4436,20 @@ snapshots:
is-png: 2.0.0
zopflipng-bin: 6.0.1
- imagemin@9.0.0:
+ imagemin@9.0.1(supports-color@7.2.0):
dependencies:
change-file-extension: 0.1.1
environment: 1.1.0
- file-type: 19.3.0
- globby: 14.0.2
+ file-type: 22.0.2(supports-color@7.2.0)
+ globby: 14.1.0
+ image-dimensions: 2.5.1
junk: 4.0.1
ow: 2.0.0
p-pipe: 4.0.0
slash: 5.1.0
- uint8array-extras: 1.4.0
+ uint8array-extras: 1.5.0
+ transitivePeerDependencies:
+ - supports-color
import-lazy@3.1.0: {}
@@ -4155,64 +4466,36 @@ snapshots:
ini@1.3.8: {}
- interpret@1.4.0: {}
-
- ip-regex@1.0.3: {}
+ inspect-with-kind@1.0.5:
+ dependencies:
+ kind-of: 6.0.3
irregular-plurals@1.4.0: {}
is-arrayish@0.2.1: {}
- is-arrayish@0.3.2: {}
-
- is-buffer@1.1.6: {}
-
- is-core-module@2.15.0:
- dependencies:
- hasown: 2.0.2
-
- is-cwebp-readable@3.0.0:
- dependencies:
- file-type: 10.11.0
-
- is-docker@2.2.1: {}
+ is-callable@1.2.7: {}
- is-dotfile@1.0.3: {}
-
- is-equal-shallow@0.1.3:
+ is-core-module@2.16.2:
dependencies:
- is-primitive: 2.0.0
-
- is-extendable@0.1.1: {}
-
- is-extglob@1.0.0: {}
+ hasown: 2.0.4
is-extglob@2.1.1: {}
is-finite@1.1.0: {}
- is-fullwidth-code-point@3.0.0: {}
-
- is-gif@1.0.0: {}
-
- is-glob@2.0.1:
- dependencies:
- is-extglob: 1.0.0
-
- is-glob@3.1.0:
+ is-gif@3.0.0:
dependencies:
- is-extglob: 2.1.1
+ file-type: 10.11.0
is-glob@4.0.3:
dependencies:
is-extglob: 2.1.1
- is-identifier@1.0.1:
+ is-identifier@1.1.0:
dependencies:
- identifier-regex: 1.0.0
- super-regex: 1.0.0
-
- is-jpg@2.0.0: {}
+ identifier-regex: 1.1.0
+ super-regex: 1.1.0
is-jpg@3.0.0: {}
@@ -4220,19 +4503,17 @@ snapshots:
is-number@7.0.0: {}
- is-obj@1.0.1: {}
-
is-object@1.0.2: {}
is-plain-obj@1.1.0: {}
+ is-plain-obj@4.1.0: {}
+
is-png@2.0.0: {}
is-png@3.0.1: {}
- is-posix-bracket@0.1.1: {}
-
- is-primitive@2.0.0: {}
+ is-retry-allowed@1.2.0: {}
is-stream@1.1.0: {}
@@ -4242,42 +4523,37 @@ snapshots:
is-stream@4.0.1: {}
- is-svg@5.0.1:
+ is-svg@6.1.0:
dependencies:
- fast-xml-parser: 4.4.1
-
- is-url@1.2.4: {}
+ '@file-type/xml': 0.4.4
- is-utf8@0.2.1: {}
-
- is-valid-glob@0.3.0: {}
-
- is-wsl@2.2.0:
+ is-typed-array@1.1.15:
dependencies:
- is-docker: 2.2.1
+ which-typed-array: 1.1.22
+
+ is-unicode-supported@2.1.0: {}
- isarray@0.0.1: {}
+ is-utf8@0.2.1: {}
isarray@1.0.0: {}
+ isarray@2.0.5: {}
+
isexe@2.0.0: {}
+ isexe@4.0.0: {}
+
isurl@1.0.0:
dependencies:
has-to-string-tag-x: 1.4.1
is-object: 1.0.2
- jackspeak@3.4.3:
- dependencies:
- '@isaacs/cliui': 8.0.2
- optionalDependencies:
- '@pkgjs/parseargs': 0.11.0
+ joycon@3.1.1: {}
- jpegtran-bin@5.0.2:
+ jpegtran-bin@7.0.0:
dependencies:
bin-build: 3.0.0
bin-wrapper: 4.1.0
- logalot: 2.1.0
jshint-stylish@2.2.1:
dependencies:
@@ -4288,25 +4564,19 @@ snapshots:
string-length: 1.0.1
text-table: 0.2.0
- json-buffer@3.0.1: {}
-
- json-stable-stringify-without-jsonify@1.0.1: {}
+ jsonfile@6.2.1:
+ dependencies:
+ universalify: 2.0.1
+ optionalDependencies:
+ graceful-fs: 4.2.11
junk@4.0.1: {}
- keyv@4.5.4:
- dependencies:
- json-buffer: 3.0.1
-
- kind-of@3.2.2:
+ keyv@5.6.0:
dependencies:
- is-buffer: 1.1.6
+ '@keyv/serialize': 1.1.1
- lazy-req@1.1.0: {}
-
- lazystream@1.0.1:
- dependencies:
- readable-stream: 2.3.8
+ kind-of@6.0.3: {}
load-json-file@1.1.0:
dependencies:
@@ -4316,59 +4586,6 @@ snapshots:
pinkie-promise: 2.0.1
strip-bom: 2.0.0
- lodash._basecopy@3.0.1: {}
-
- lodash._basetostring@3.0.1: {}
-
- lodash._basevalues@3.0.0: {}
-
- lodash._getnative@3.9.1: {}
-
- lodash._isiterateecall@3.0.9: {}
-
- lodash._reescape@3.0.0: {}
-
- lodash._reevaluate@3.0.0: {}
-
- lodash._reinterpolate@3.0.0: {}
-
- lodash._root@3.0.1: {}
-
- lodash.escape@3.2.0:
- dependencies:
- lodash._root: 3.0.1
-
- lodash.isarguments@3.1.0: {}
-
- lodash.isarray@3.0.4: {}
-
- lodash.isequal@4.5.0: {}
-
- lodash.keys@3.1.2:
- dependencies:
- lodash._getnative: 3.9.1
- lodash.isarguments: 3.1.0
- lodash.isarray: 3.0.4
-
- lodash.restparam@3.6.1: {}
-
- lodash.template@3.6.2:
- dependencies:
- lodash._basecopy: 3.0.1
- lodash._basetostring: 3.0.1
- lodash._basevalues: 3.0.0
- lodash._isiterateecall: 3.0.9
- lodash._reinterpolate: 3.0.0
- lodash.escape: 3.2.0
- lodash.keys: 3.1.2
- lodash.restparam: 3.6.1
- lodash.templatesettings: 3.1.1
-
- lodash.templatesettings@3.1.1:
- dependencies:
- lodash._reinterpolate: 3.0.0
- lodash.escape: 3.2.0
-
log-symbols@1.0.2:
dependencies:
chalk: 1.1.3
@@ -4385,7 +4602,7 @@ snapshots:
currently-unhandled: 0.4.1
signal-exit: 3.0.7
- lowercase-keys@2.0.0: {}
+ lowercase-keys@1.0.1: {}
lowercase-keys@3.0.0: {}
@@ -4396,25 +4613,28 @@ snapshots:
longest: 1.0.1
meow: 3.7.0
- lru-cache@10.4.3: {}
+ lru-cache@11.5.2: {}
- lru-cache@4.1.5:
+ make-asynchronous@1.1.0:
dependencies:
- pseudomap: 1.0.2
- yallist: 2.1.2
+ p-event: 6.0.1
+ type-fest: 4.41.0
+ web-worker: 1.5.0
make-dir@1.3.0:
dependencies:
pify: 3.0.0
- make-error@1.3.6: {}
-
map-obj@1.0.1: {}
+ math-intrinsics@1.1.0: {}
+
mdn-data@2.0.28: {}
mdn-data@2.0.30: {}
+ mdn-data@2.27.1: {}
+
meow@3.7.0:
dependencies:
camelcase-keys: 2.1.0
@@ -4428,36 +4648,16 @@ snapshots:
redent: 1.0.0
trim-newlines: 5.0.0
- merge-stream@1.0.1:
- dependencies:
- readable-stream: 2.3.8
-
merge-stream@2.0.0: {}
merge2@1.4.1: {}
- micromatch@2.3.11:
- dependencies:
- arr-diff: 2.0.0
- array-unique: 0.2.1
- braces: 3.0.3
- expand-brackets: 0.1.5
- extglob: 0.3.2
- filename-regex: 2.0.1
- is-extglob: 1.0.0
- is-glob: 2.0.1
- kind-of: 3.2.2
- normalize-path: 2.1.1
- object.omit: 2.0.1
- parse-glob: 3.0.4
- regex-cache: 0.4.4
-
- micromatch@4.0.7:
+ micromatch@4.0.8:
dependencies:
braces: 3.0.3
- picomatch: 2.3.1
+ picomatch: 2.3.2
- mime-db@1.53.0: {}
+ mime-db@1.54.0: {}
mimic-fn@2.1.0: {}
@@ -4465,78 +4665,44 @@ snapshots:
mimic-response@1.0.1: {}
- mimic-response@3.1.0: {}
-
mimic-response@4.0.0: {}
- minimatch@3.1.2:
+ minimatch@10.2.6:
dependencies:
- brace-expansion: 1.1.11
+ brace-expansion: 5.0.9
- minimatch@9.0.5:
+ minimatch@3.1.5:
dependencies:
- brace-expansion: 2.0.1
+ brace-expansion: 1.1.18
- minimist@1.2.8: {}
+ minimatch@9.0.9:
+ dependencies:
+ brace-expansion: 2.1.4
- minipass@7.1.2: {}
+ minimist@1.2.8: {}
- mkdirp@0.5.6:
- dependencies:
- minimist: 1.2.8
+ minipass@7.1.3: {}
mozjpeg@8.0.0:
dependencies:
bin-build: 3.0.0
bin-wrapper: 4.1.0
- ms@2.1.2: {}
-
- multipipe@0.1.2:
- dependencies:
- duplexer2: 0.0.2
-
- nice-napi@1.0.2:
- dependencies:
- node-addon-api: 3.2.1
- node-gyp-build: 4.8.1
- optional: true
-
- nice-try@1.0.5: {}
-
- node-addon-api@3.2.1:
- optional: true
-
- node-fetch@2.7.0:
- dependencies:
- whatwg-url: 5.0.0
-
- node-gyp-build@4.8.1:
- optional: true
+ ms@2.1.3: {}
- node-notifier@10.0.1:
+ node-sarif-builder@3.2.0:
dependencies:
- growly: 1.3.0
- is-wsl: 2.2.0
- semver: 7.6.3
- shellwords: 0.1.1
- uuid: 8.3.2
- which: 2.0.2
+ '@types/sarif': 2.1.7
+ fs-extra: 11.4.0
normalize-package-data@2.5.0:
dependencies:
hosted-git-info: 2.8.9
- resolve: 1.22.8
- semver: 7.6.3
+ resolve: 1.22.12
+ semver: 7.8.5
validate-npm-package-license: 3.0.4
- normalize-path@2.1.1:
- dependencies:
- remove-trailing-separator: 1.1.0
-
- normalize-url@6.1.0: {}
-
- normalize-url@8.0.1: {}
+ normalize-url@8.1.1: {}
npm-conf@1.1.3:
dependencies:
@@ -4555,25 +4721,23 @@ snapshots:
dependencies:
path-key: 4.0.0
+ npm-run-path@6.0.0:
+ dependencies:
+ path-key: 4.0.0
+ unicorn-magic: 0.3.0
+
nth-check@2.1.1:
dependencies:
boolbase: 1.0.0
- object-assign@3.0.0: {}
-
object-assign@4.1.1: {}
- object.omit@2.0.1:
- dependencies:
- for-own: 0.1.5
- is-extendable: 0.1.1
+ on-exit-leak-free@2.1.2: {}
once@1.4.0:
dependencies:
wrappy: 1.0.2
- onetime@1.1.0: {}
-
onetime@5.1.2:
dependencies:
mimic-fn: 2.1.0
@@ -4582,43 +4746,42 @@ snapshots:
dependencies:
mimic-fn: 4.0.0
- ordered-read-streams@0.3.0:
- dependencies:
- is-stream: 1.1.0
- readable-stream: 2.3.8
-
- os-filter-obj@1.0.3: {}
-
os-filter-obj@2.0.0:
dependencies:
arch: 2.2.0
- os-tmpdir@1.0.2: {}
-
ow@2.0.0:
dependencies:
'@sindresorhus/is': 6.3.1
callsites: 4.2.0
dot-prop: 8.0.2
environment: 1.1.0
- fast-equals: 5.0.1
- is-identifier: 1.0.1
+ fast-equals: 5.4.1
+ is-identifier: 1.1.0
- oxc-resolver@1.10.2:
+ oxc-resolver@11.24.2:
optionalDependencies:
- '@oxc-resolver/binding-darwin-arm64': 1.10.2
- '@oxc-resolver/binding-darwin-x64': 1.10.2
- '@oxc-resolver/binding-freebsd-x64': 1.10.2
- '@oxc-resolver/binding-linux-arm-gnueabihf': 1.10.2
- '@oxc-resolver/binding-linux-arm64-gnu': 1.10.2
- '@oxc-resolver/binding-linux-arm64-musl': 1.10.2
- '@oxc-resolver/binding-linux-x64-gnu': 1.10.2
- '@oxc-resolver/binding-linux-x64-musl': 1.10.2
- '@oxc-resolver/binding-wasm32-wasi': 1.10.2
- '@oxc-resolver/binding-win32-arm64-msvc': 1.10.2
- '@oxc-resolver/binding-win32-x64-msvc': 1.10.2
-
- p-cancelable@2.1.1: {}
+ '@oxc-resolver/binding-android-arm-eabi': 11.24.2
+ '@oxc-resolver/binding-android-arm64': 11.24.2
+ '@oxc-resolver/binding-darwin-arm64': 11.24.2
+ '@oxc-resolver/binding-darwin-x64': 11.24.2
+ '@oxc-resolver/binding-freebsd-x64': 11.24.2
+ '@oxc-resolver/binding-linux-arm-gnueabihf': 11.24.2
+ '@oxc-resolver/binding-linux-arm-musleabihf': 11.24.2
+ '@oxc-resolver/binding-linux-arm64-gnu': 11.24.2
+ '@oxc-resolver/binding-linux-arm64-musl': 11.24.2
+ '@oxc-resolver/binding-linux-ppc64-gnu': 11.24.2
+ '@oxc-resolver/binding-linux-riscv64-gnu': 11.24.2
+ '@oxc-resolver/binding-linux-riscv64-musl': 11.24.2
+ '@oxc-resolver/binding-linux-s390x-gnu': 11.24.2
+ '@oxc-resolver/binding-linux-x64-gnu': 11.24.2
+ '@oxc-resolver/binding-linux-x64-musl': 11.24.2
+ '@oxc-resolver/binding-openharmony-arm64': 11.24.2
+ '@oxc-resolver/binding-wasm32-wasi': 11.24.2
+ '@oxc-resolver/binding-win32-arm64-msvc': 11.24.2
+ '@oxc-resolver/binding-win32-x64-msvc': 11.24.2
+
+ p-cancelable@0.3.0: {}
p-cancelable@4.0.1: {}
@@ -4630,6 +4793,10 @@ snapshots:
dependencies:
p-timeout: 2.0.1
+ p-event@6.0.1:
+ dependencies:
+ p-timeout: 6.1.4
+
p-finally@1.0.0: {}
p-map-series@1.0.0:
@@ -4648,22 +4815,13 @@ snapshots:
dependencies:
p-finally: 1.0.0
- package-json-from-dist@1.0.0: {}
-
- parse-glob@3.0.4:
- dependencies:
- glob-base: 0.3.0
- is-dotfile: 1.0.3
- is-extglob: 1.0.0
- is-glob: 2.0.1
+ p-timeout@6.1.4: {}
parse-json@2.2.0:
dependencies:
- error-ex: 1.3.2
+ error-ex: 1.3.4
- parse-node-version@1.0.1: {}
-
- path-dirname@1.0.2: {}
+ parse-ms@4.0.0: {}
path-exists@2.1.0:
dependencies:
@@ -4679,10 +4837,10 @@ snapshots:
path-parse@1.0.7: {}
- path-scurry@1.11.1:
+ path-scurry@2.0.2:
dependencies:
- lru-cache: 10.4.3
- minipass: 7.1.2
+ lru-cache: 11.5.2
+ minipass: 7.1.3
path-type@1.1.0:
dependencies:
@@ -4690,15 +4848,15 @@ snapshots:
pify: 2.3.0
pinkie-promise: 2.0.1
- path-type@5.0.0: {}
-
- peek-readable@5.1.3: {}
+ path-type@6.0.0: {}
pend@1.2.0: {}
- picocolors@1.0.1: {}
+ picocolors@1.1.1: {}
- picomatch@2.3.1: {}
+ picomatch@2.3.2: {}
+
+ picomatch@4.0.7: {}
pify@2.3.0: {}
@@ -4712,11 +4870,47 @@ snapshots:
pinkie@2.0.4: {}
- pirates@4.0.6: {}
+ pino-abstract-transport@3.0.0:
+ dependencies:
+ split2: 4.2.0
- piscina@4.6.1:
+ pino-pretty@13.1.3:
+ dependencies:
+ colorette: 2.0.20
+ dateformat: 4.6.3
+ fast-copy: 4.1.0
+ fast-safe-stringify: 2.1.1
+ help-me: 5.0.0
+ joycon: 3.1.1
+ minimist: 1.2.8
+ on-exit-leak-free: 2.1.2
+ pino-abstract-transport: 3.0.0
+ pump: 3.0.4
+ secure-json-parse: 4.1.0
+ sonic-boom: 4.2.1
+ strip-json-comments: 5.0.3
+
+ pino-std-serializers@7.1.0: {}
+
+ pino@10.3.1:
+ dependencies:
+ '@pinojs/redact': 0.4.0
+ atomic-sleep: 1.0.0
+ on-exit-leak-free: 2.1.2
+ pino-abstract-transport: 3.0.0
+ pino-std-serializers: 7.1.0
+ process-warning: 5.1.0
+ quick-format-unescaped: 4.0.4
+ real-require: 0.2.0
+ safe-stable-stringify: 2.5.0
+ sonic-boom: 4.2.1
+ thread-stream: 4.2.0
+
+ pirates@4.0.7: {}
+
+ piscina@4.9.4:
optionalDependencies:
- nice-napi: 1.0.2
+ '@napi-rs/nice': 1.1.1
plur@2.1.2:
dependencies:
@@ -4728,32 +4922,30 @@ snapshots:
bin-wrapper: 4.1.0
execa: 8.0.1
+ possible-typed-array-names@1.1.0: {}
+
+ prepend-http@1.0.4: {}
+
+ pretty-ms@9.3.1:
+ dependencies:
+ parse-ms: 4.0.0
+
process-nextick-args@2.0.1: {}
- proto-list@1.2.4: {}
+ process-warning@5.1.0: {}
- pseudomap@1.0.2: {}
+ proto-list@1.2.4: {}
- pump@3.0.0:
+ pump@3.0.4:
dependencies:
- end-of-stream: 1.4.4
+ end-of-stream: 1.4.5
once: 1.4.0
queue-microtask@1.2.3: {}
- quick-lru@5.1.1: {}
-
- rc@1.2.8:
- dependencies:
- deep-extend: 0.6.0
- ini: 1.3.8
- minimist: 1.2.8
- strip-json-comments: 2.0.1
+ quick-format-unescaped@4.0.4: {}
- read-all-stream@3.1.0:
- dependencies:
- pinkie-promise: 2.0.1
- readable-stream: 2.3.8
+ quick-lru@5.1.1: {}
read-pkg-up@1.0.1:
dependencies:
@@ -4766,20 +4958,6 @@ snapshots:
normalize-package-data: 2.5.0
path-type: 1.1.0
- readable-stream@1.0.34:
- dependencies:
- core-util-is: 1.0.3
- inherits: 2.0.4
- isarray: 0.0.1
- string_decoder: 0.10.31
-
- readable-stream@1.1.14:
- dependencies:
- core-util-is: 1.0.3
- inherits: 2.0.4
- isarray: 0.0.1
- string_decoder: 0.10.31
-
readable-stream@2.3.8:
dependencies:
core-util-is: 1.0.3
@@ -4790,64 +4968,41 @@ snapshots:
string_decoder: 1.1.1
util-deprecate: 1.0.2
- readable-stream@3.6.2:
- dependencies:
- inherits: 2.0.4
- string_decoder: 1.3.0
- util-deprecate: 1.0.2
-
- readable-web-to-node-stream@3.0.2:
- dependencies:
- readable-stream: 3.6.2
+ real-require@0.2.0: {}
- rechoir@0.6.2:
- dependencies:
- resolve: 1.22.8
+ real-require@1.0.0: {}
redent@1.0.0:
dependencies:
indent-string: 2.1.0
strip-indent: 1.0.1
- regex-cache@0.4.4:
- dependencies:
- is-equal-shallow: 0.1.3
-
- remove-trailing-separator@1.1.0: {}
-
repeating@2.0.1:
dependencies:
is-finite: 1.1.0
- replace-ext@0.0.1: {}
-
- replace-in-file@8.1.0:
+ replace-in-file@9.0.0:
dependencies:
- chalk: 5.3.0
- glob: 10.4.5
- yargs: 17.7.2
+ chalk: 6.0.0
+ glob: 13.0.6
+ yargs: 18.1.0
- require-directory@2.1.1: {}
-
- reserved-identifiers@1.0.0: {}
+ reserved-identifiers@1.2.0: {}
resolve-alpn@1.2.1: {}
- resolve@1.22.8:
+ resolve@1.22.12:
dependencies:
- is-core-module: 2.15.0
+ es-errors: 1.3.0
+ is-core-module: 2.16.2
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
- responselike@2.0.1:
- dependencies:
- lowercase-keys: 2.0.0
-
- responselike@3.0.0:
+ responselike@4.0.2:
dependencies:
lowercase-keys: 3.0.0
- reusify@1.0.4: {}
+ reusify@1.1.0: {}
rimraf@2.7.1:
dependencies:
@@ -4861,82 +5016,92 @@ snapshots:
safe-buffer@5.2.1: {}
+ safe-stable-stringify@2.5.0: {}
+
+ sax@1.6.1: {}
+
+ secure-json-parse@4.1.0: {}
+
seek-bzip@1.0.6:
dependencies:
commander: 2.20.3
+ seek-bzip@2.0.0:
+ dependencies:
+ commander: 6.2.1
+
semver-regex@4.0.5: {}
semver-truncate@1.1.2:
dependencies:
- semver: 7.6.3
+ semver: 7.8.5
semver-truncate@3.0.0:
dependencies:
- semver: 7.6.3
+ semver: 7.8.5
- semver@7.6.3: {}
+ semver@7.8.5: {}
- set-immediate-shim@1.0.1: {}
+ set-function-length@1.2.2:
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.3.0
+ gopd: 1.2.0
+ has-property-descriptors: 1.0.2
- sharp@0.33.4:
+ sharp@0.35.4(@types/node@26.4.0):
dependencies:
- color: 4.2.3
- detect-libc: 2.0.3
- semver: 7.6.3
+ '@img/colour': 1.1.0
+ detect-libc: 2.1.2
+ semver: 7.8.5
optionalDependencies:
- '@img/sharp-darwin-arm64': 0.33.4
- '@img/sharp-darwin-x64': 0.33.4
- '@img/sharp-libvips-darwin-arm64': 1.0.2
- '@img/sharp-libvips-darwin-x64': 1.0.2
- '@img/sharp-libvips-linux-arm': 1.0.2
- '@img/sharp-libvips-linux-arm64': 1.0.2
- '@img/sharp-libvips-linux-s390x': 1.0.2
- '@img/sharp-libvips-linux-x64': 1.0.2
- '@img/sharp-libvips-linuxmusl-arm64': 1.0.2
- '@img/sharp-libvips-linuxmusl-x64': 1.0.2
- '@img/sharp-linux-arm': 0.33.4
- '@img/sharp-linux-arm64': 0.33.4
- '@img/sharp-linux-s390x': 0.33.4
- '@img/sharp-linux-x64': 0.33.4
- '@img/sharp-linuxmusl-arm64': 0.33.4
- '@img/sharp-linuxmusl-x64': 0.33.4
- '@img/sharp-wasm32': 0.33.4
- '@img/sharp-win32-ia32': 0.33.4
- '@img/sharp-win32-x64': 0.33.4
-
- shebang-command@1.2.0:
- dependencies:
- shebang-regex: 1.0.0
+ '@img/sharp-darwin-arm64': 0.35.4
+ '@img/sharp-darwin-x64': 0.35.4
+ '@img/sharp-freebsd-wasm32': 0.35.4
+ '@img/sharp-libvips-darwin-arm64': 1.3.3
+ '@img/sharp-libvips-darwin-x64': 1.3.3
+ '@img/sharp-libvips-linux-arm': 1.3.3
+ '@img/sharp-libvips-linux-arm64': 1.3.3
+ '@img/sharp-libvips-linux-ppc64': 1.3.3
+ '@img/sharp-libvips-linux-riscv64': 1.3.3
+ '@img/sharp-libvips-linux-s390x': 1.3.3
+ '@img/sharp-libvips-linux-x64': 1.3.3
+ '@img/sharp-libvips-linuxmusl-arm64': 1.3.3
+ '@img/sharp-libvips-linuxmusl-x64': 1.3.3
+ '@img/sharp-linux-arm': 0.35.4
+ '@img/sharp-linux-arm64': 0.35.4
+ '@img/sharp-linux-ppc64': 0.35.4
+ '@img/sharp-linux-riscv64': 0.35.4
+ '@img/sharp-linux-s390x': 0.35.4
+ '@img/sharp-linux-x64': 0.35.4
+ '@img/sharp-linuxmusl-arm64': 0.35.4
+ '@img/sharp-linuxmusl-x64': 0.35.4
+ '@img/sharp-webcontainers-wasm32': 0.35.4
+ '@img/sharp-win32-arm64': 0.35.4
+ '@img/sharp-win32-ia32': 0.35.4
+ '@img/sharp-win32-x64': 0.35.4
+ '@types/node': 26.4.0
shebang-command@2.0.0:
dependencies:
shebang-regex: 3.0.0
- shebang-regex@1.0.0: {}
-
shebang-regex@3.0.0: {}
- shelljs@0.8.5:
- dependencies:
- glob: 7.2.3
- interpret: 1.4.0
- rechoir: 0.6.2
-
- shellwords@0.1.1: {}
-
signal-exit@3.0.7: {}
signal-exit@4.1.0: {}
- simple-swizzle@0.2.2:
- dependencies:
- is-arrayish: 0.3.2
-
slash@3.0.0: {}
slash@5.1.0: {}
+ sonic-boom@4.2.1:
+ dependencies:
+ atomic-sleep: 1.0.0
+
sort-keys-length@1.0.1:
dependencies:
sort-keys: 1.1.2
@@ -4945,7 +5110,7 @@ snapshots:
dependencies:
is-plain-obj: 1.1.0
- source-map-js@1.2.0: {}
+ source-map-js@1.2.1: {}
source-map-support@0.5.21:
dependencies:
@@ -4954,23 +5119,23 @@ snapshots:
source-map@0.6.1: {}
- source-map@0.7.4: {}
-
- sparkles@1.0.1: {}
+ source-map@0.7.6: {}
spdx-correct@3.2.0:
dependencies:
spdx-expression-parse: 3.0.1
- spdx-license-ids: 3.0.18
+ spdx-license-ids: 3.0.23
spdx-exceptions@2.5.0: {}
spdx-expression-parse@3.0.1:
dependencies:
spdx-exceptions: 2.5.0
- spdx-license-ids: 3.0.18
+ spdx-license-ids: 3.0.23
- spdx-license-ids@3.0.18: {}
+ spdx-license-ids@3.0.23: {}
+
+ split2@4.2.0: {}
squeak@1.3.0:
dependencies:
@@ -4978,55 +5143,41 @@ snapshots:
console-stream: 0.1.1
lpad-align: 1.1.2
- stream-combiner2@1.1.1:
+ streamx@2.28.1:
dependencies:
- duplexer2: 0.1.4
- readable-stream: 2.3.8
-
- stream-shift@1.0.3: {}
+ events-universal: 1.0.1
+ fast-fifo: 1.3.2
+ text-decoder: 1.2.7
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - react-native-b4a
string-length@1.0.1:
dependencies:
strip-ansi: 3.0.1
- string-width@4.2.3:
+ string-width@7.2.0:
dependencies:
- emoji-regex: 8.0.0
- is-fullwidth-code-point: 3.0.0
- strip-ansi: 6.0.1
+ emoji-regex: 10.6.0
+ get-east-asian-width: 1.6.0
+ strip-ansi: 7.2.0
- string-width@5.1.2:
+ string-width@8.2.2:
dependencies:
- eastasianwidth: 0.2.0
- emoji-regex: 9.2.2
- strip-ansi: 7.1.0
-
- string_decoder@0.10.31: {}
+ get-east-asian-width: 1.6.0
+ strip-ansi: 7.2.0
string_decoder@1.1.1:
dependencies:
safe-buffer: 5.1.2
- string_decoder@1.3.0:
- dependencies:
- safe-buffer: 5.2.1
-
strip-ansi@3.0.1:
dependencies:
ansi-regex: 2.1.1
- strip-ansi@6.0.1:
- dependencies:
- ansi-regex: 5.0.1
-
- strip-ansi@7.1.0:
+ strip-ansi@7.2.0:
dependencies:
- ansi-regex: 6.0.1
-
- strip-bom-stream@1.0.0:
- dependencies:
- first-chunk-stream: 1.0.0
- strip-bom: 2.0.0
+ ansi-regex: 6.3.0
strip-bom@2.0.0:
dependencies:
@@ -5036,41 +5187,39 @@ snapshots:
dependencies:
is-natural-number: 4.0.1
+ strip-dirs@3.0.0:
+ dependencies:
+ inspect-with-kind: 1.0.5
+ is-plain-obj: 1.1.0
+
strip-eof@1.0.0: {}
strip-final-newline@2.0.0: {}
strip-final-newline@3.0.0: {}
+ strip-final-newline@4.0.0: {}
+
strip-indent@1.0.1:
dependencies:
get-stdin: 4.0.1
- strip-json-comments@2.0.1: {}
+ strip-json-comments@3.1.1: {}
- strip-json-comments@3.1.0: {}
+ strip-json-comments@5.0.3: {}
strip-outer@1.0.1:
dependencies:
escape-string-regexp: 1.0.5
- strip-outer@2.0.0: {}
-
- strnum@1.0.5: {}
-
- strtok3@7.1.1:
- dependencies:
- '@tokenizer/token': 0.3.0
- peek-readable: 5.1.3
-
- strtok3@8.0.1:
+ strtok3@10.3.5:
dependencies:
'@tokenizer/token': 0.3.0
- peek-readable: 5.1.3
- super-regex@1.0.0:
+ super-regex@1.1.0:
dependencies:
function-timeout: 1.0.2
+ make-asynchronous: 1.1.0
time-span: 5.1.0
supports-color@2.0.0: {}
@@ -5081,59 +5230,67 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
- svgo@3.3.2:
+ svgo@3.3.5:
dependencies:
- '@trysound/sax': 0.2.0
commander: 7.2.0
- css-select: 5.1.0
+ css-select: 5.2.2
css-tree: 2.3.1
- css-what: 6.1.0
+ css-what: 6.2.2
csso: 5.0.5
- picocolors: 1.0.1
+ picocolors: 1.1.1
+ sax: 1.6.1
+
+ svgo@4.1.0:
+ dependencies:
+ commander: 11.1.0
+ css-select: 6.0.0
+ css-tree: 3.2.1
+ css-what: 7.0.0
+ csso: 5.0.5
+ picocolors: 1.1.1
+ sax: 1.6.1
+
+ system-architecture@1.0.0: {}
+
+ tagged-tag@1.0.0: {}
tar-stream@1.6.2:
dependencies:
bl: 1.2.3
buffer-alloc: 1.2.0
- end-of-stream: 1.4.4
+ end-of-stream: 1.4.5
fs-constants: 1.0.0
readable-stream: 2.3.8
- to-buffer: 1.1.1
+ to-buffer: 1.2.2
xtend: 4.0.2
- temp-dir@1.0.0: {}
-
- tempfile@1.1.1:
+ tar-stream@3.1.7:
dependencies:
- os-tmpdir: 1.0.2
- uuid: 2.0.3
+ b4a: 1.8.1
+ fast-fifo: 1.3.2
+ streamx: 2.28.1
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - react-native-b4a
+
+ temp-dir@1.0.0: {}
tempfile@2.0.0:
dependencies:
temp-dir: 1.0.0
- uuid: 3.4.0
-
- text-table@0.2.0: {}
+ uuid: 14.0.2
- through2-filter@2.0.0:
+ text-decoder@1.2.7:
dependencies:
- through2: 2.0.5
- xtend: 4.0.2
-
- through2-filter@3.0.0:
- dependencies:
- through2: 2.0.5
- xtend: 4.0.2
+ b4a: 1.8.1
+ transitivePeerDependencies:
+ - react-native-b4a
- through2@0.6.5:
- dependencies:
- readable-stream: 1.0.34
- xtend: 4.0.2
+ text-table@0.2.0: {}
- through2@2.0.5:
+ thread-stream@4.2.0:
dependencies:
- readable-stream: 2.3.8
- xtend: 4.0.2
+ real-require: 1.0.0
through@2.3.8: {}
@@ -5141,61 +5298,36 @@ snapshots:
dependencies:
convert-hrtime: 5.0.0
- time-stamp@1.1.0: {}
+ timed-out@4.0.1: {}
- to-absolute-glob@0.1.1:
+ tinyglobby@0.2.17:
dependencies:
- extend-shallow: 2.0.1
+ fdir: 6.5.0(picomatch@4.0.7)
+ picomatch: 4.0.7
- to-buffer@1.1.1: {}
+ to-buffer@1.2.2:
+ dependencies:
+ isarray: 2.0.5
+ safe-buffer: 5.2.1
+ typed-array-buffer: 1.0.3
to-regex-range@5.0.1:
dependencies:
is-number: 7.0.0
- token-types@5.0.1:
+ token-types@6.1.2:
dependencies:
+ '@borewit/text-codec': 0.2.2
'@tokenizer/token': 0.3.0
ieee754: 1.2.1
- token-types@6.0.0:
- dependencies:
- '@tokenizer/token': 0.3.0
- ieee754: 1.2.1
-
- tr46@0.0.3: {}
-
trim-newlines@5.0.0: {}
trim-repeated@1.0.0:
dependencies:
escape-string-regexp: 1.0.5
- trim-repeated@2.0.0:
- dependencies:
- escape-string-regexp: 5.0.0
-
- ts-node@10.9.2(@swc/core@1.7.5)(@types/node@22.1.0)(typescript@5.5.4):
- dependencies:
- '@cspotcode/source-map-support': 0.8.1
- '@tsconfig/node10': 1.0.11
- '@tsconfig/node12': 1.0.11
- '@tsconfig/node14': 1.0.3
- '@tsconfig/node16': 1.0.4
- '@types/node': 22.1.0
- acorn: 8.12.1
- acorn-walk: 8.3.3
- arg: 4.1.3
- create-require: 1.1.1
- diff: 4.0.2
- make-error: 1.3.6
- typescript: 5.5.4
- v8-compile-cache-lib: 3.0.1
- yn: 3.1.1
- optionalDependencies:
- '@swc/core': 1.7.5
-
- tslib@2.6.3: {}
+ tslib@2.8.1: {}
tunnel-agent@0.6.0:
dependencies:
@@ -5203,117 +5335,92 @@ snapshots:
type-fest@3.13.1: {}
- type-fest@4.23.0: {}
+ type-fest@4.41.0: {}
+
+ type-fest@5.9.0:
+ dependencies:
+ tagged-tag: 1.0.0
- typedarray@0.0.6: {}
+ typed-array-buffer@1.0.3:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-typed-array: 1.1.15
- typescript@5.5.4: {}
+ typescript@6.0.3: {}
- uint8array-extras@1.4.0: {}
+ typescript@7.0.2:
+ optionalDependencies:
+ '@typescript/typescript-aix-ppc64': 7.0.2
+ '@typescript/typescript-darwin-arm64': 7.0.2
+ '@typescript/typescript-darwin-x64': 7.0.2
+ '@typescript/typescript-freebsd-arm64': 7.0.2
+ '@typescript/typescript-freebsd-x64': 7.0.2
+ '@typescript/typescript-linux-arm': 7.0.2
+ '@typescript/typescript-linux-arm64': 7.0.2
+ '@typescript/typescript-linux-loong64': 7.0.2
+ '@typescript/typescript-linux-mips64el': 7.0.2
+ '@typescript/typescript-linux-ppc64': 7.0.2
+ '@typescript/typescript-linux-riscv64': 7.0.2
+ '@typescript/typescript-linux-s390x': 7.0.2
+ '@typescript/typescript-linux-x64': 7.0.2
+ '@typescript/typescript-netbsd-arm64': 7.0.2
+ '@typescript/typescript-netbsd-x64': 7.0.2
+ '@typescript/typescript-openbsd-arm64': 7.0.2
+ '@typescript/typescript-openbsd-x64': 7.0.2
+ '@typescript/typescript-sunos-x64': 7.0.2
+ '@typescript/typescript-win32-arm64': 7.0.2
+ '@typescript/typescript-win32-x64': 7.0.2
+
+ uint8array-extras@1.5.0: {}
unbzip2-stream@1.4.3:
dependencies:
buffer: 5.7.1
through: 2.3.8
- undici-types@6.13.0: {}
+ undici-types@8.3.0: {}
- unicorn-magic@0.1.0: {}
+ unicorn-magic@0.3.0: {}
- unique-stream@2.3.1:
- dependencies:
- json-stable-stringify-without-jsonify: 1.0.1
- through2-filter: 3.0.0
+ universalify@2.0.1: {}
- url-regex@3.2.0:
+ url-parse-lax@1.0.0:
dependencies:
- ip-regex: 1.0.3
+ prepend-http: 1.0.4
url-to-options@1.0.1: {}
util-deprecate@1.0.2: {}
- uuid@2.0.3: {}
-
- uuid@3.4.0: {}
-
- uuid@8.3.2: {}
-
- v8-compile-cache-lib@3.0.1: {}
-
- vali-date@1.0.0: {}
+ uuid@14.0.2: {}
validate-npm-package-license@3.0.4:
dependencies:
spdx-correct: 3.2.0
spdx-expression-parse: 3.0.1
- vinyl-fs@2.4.4:
- dependencies:
- duplexify: 3.7.1
- glob-stream: 5.3.5
- graceful-fs: 4.2.11
- gulp-sourcemaps: 1.6.0
- is-valid-glob: 0.3.0
- lazystream: 1.0.1
- lodash.isequal: 4.5.0
- merge-stream: 1.0.1
- mkdirp: 0.5.6
- object-assign: 4.1.1
- readable-stream: 2.3.8
- strip-bom: 2.0.0
- strip-bom-stream: 1.0.0
- through2: 2.0.5
- through2-filter: 2.0.0
- vali-date: 1.0.0
- vinyl: 1.2.0
-
- vinyl@0.5.3:
- dependencies:
- clone: 1.0.4
- clone-stats: 0.0.1
- replace-ext: 0.0.1
-
- vinyl@1.2.0:
- dependencies:
- clone: 1.0.4
- clone-stats: 0.0.1
- replace-ext: 0.0.1
-
- ware@1.3.0:
- dependencies:
- wrap-fn: 0.1.5
-
- webidl-conversions@3.0.1: {}
+ web-worker@1.5.0: {}
- whatwg-url@5.0.0:
+ which-typed-array@1.1.22:
dependencies:
- tr46: 0.0.3
- webidl-conversions: 3.0.1
-
- which@1.3.1:
- dependencies:
- isexe: 2.0.0
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ for-each: 0.3.5
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-tostringtag: 1.0.2
which@2.0.2:
dependencies:
isexe: 2.0.0
- wrap-ansi@7.0.0:
- dependencies:
- ansi-styles: 4.3.0
- string-width: 4.2.3
- strip-ansi: 6.0.1
-
- wrap-ansi@8.1.0:
- dependencies:
- ansi-styles: 6.2.1
- string-width: 5.1.2
- strip-ansi: 7.1.0
-
- wrap-fn@0.1.5:
+ wrap-ansi@9.0.2:
dependencies:
- co: 3.1.0
+ ansi-styles: 6.2.3
+ string-width: 7.2.0
+ strip-ansi: 7.2.0
wrappy@1.0.2: {}
@@ -5323,26 +5430,27 @@ snapshots:
y18n@5.0.8: {}
- yallist@2.1.2: {}
+ yargs-parser@22.0.0: {}
- yargs-parser@21.1.1: {}
-
- yargs@17.7.2:
+ yargs@18.1.0:
dependencies:
- cliui: 8.0.1
- escalade: 3.1.2
+ cliui: 9.0.1
+ escalade: 3.2.0
get-caller-file: 2.0.5
- require-directory: 2.1.1
- string-width: 4.2.3
+ string-width: 8.2.2
y18n: 5.0.8
- yargs-parser: 21.1.1
+ yargs-parser: 22.0.0
yauzl@2.10.0:
dependencies:
buffer-crc32: 0.2.13
fd-slicer: 1.1.0
- yn@3.1.1: {}
+ yauzl@3.4.0:
+ dependencies:
+ pend: 1.2.0
+
+ yoctocolors@2.2.0: {}
zopflipng-bin@6.0.1:
dependencies:
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
new file mode 100644
index 0000000..05fdaa8
--- /dev/null
+++ b/pnpm-workspace.yaml
@@ -0,0 +1,34 @@
+allowBuilds:
+ '@swc/core': true
+ gifsicle: true
+ jpegtran-bin: true
+ mozjpeg: true
+ pngquant-bin: true
+ sharp: true
+ zopflipng-bin: true
+engineStrict: true
+minimumReleaseAge: 10080
+minimumReleaseAgeExclude:
+ - brace-expansion@1.1.17 || 1.1.18 || 2.1.3 || 2.1.4 || 5.0.9
+ - got@11.8.5
+ - decompress@4.2.2
+minimumReleaseAgeIgnoreMissingTime: true
+minimumReleaseAgeStrict: false
+overrides:
+ braces@<2.3.1: '>=2.3.1'
+ braces@<3.0.3: '>=3.0.3'
+ cross-spawn@<6.0.6: '>=6.0.6'
+ decompress@<4.2.1: '>=4.2.1'
+ file-type@>=13.0.0 <21.3.1: '>=21.3.1'
+ got@<11.8.5: '>=11.8.5'
+ download>got: '7.1.0'
+ http-cache-semantics@<4.1.1: '>=4.1.1'
+ micromatch@<4.0.8: '>=4.0.8'
+ semver-regex@<3.1.3: '>=3.1.3'
+ semver-regex@<3.1.4: '>=3.1.4'
+ semver@>=2.0.0-alpha <5.7.2: '>=5.7.2'
+ trim-newlines@<3.0.1: '>=3.0.1'
+ tunnel-agent@<0.6.0: '>=0.6.0'
+ uuid@<14.0.0: '>=14.0.0'
+ web-worker: '>=1.5.0'
+saveExact: true
diff --git a/src/commands/files/clean-sourcemap.command.ts b/src/commands/files/clean-sourcemap.command.ts
index bcfcc04..b891dbf 100644
--- a/src/commands/files/clean-sourcemap.command.ts
+++ b/src/commands/files/clean-sourcemap.command.ts
@@ -2,80 +2,69 @@ import { cwd, uptime } from 'node:process'
import type { ArgumentsCamelCase, InferredOptionTypes } from 'yargs'
-import { error, log } from '#@/src/shared/helpers/console.js'
-import { File } from '#@/src/shared/lib/file.js'
-import { Notify } from '#@/src/shared/lib/notify.js'
-import config from '#@/src/shared/helpers/config.js'
-import { YargsCommand } from '#@/src/shared/yargs-command.js'
+import { error, log } from '#/src/shared/domain/console.js'
+import { File } from '#/src/shared/domain/file.js'
+import config from '#/src/shared/infrastructure/config.js'
-export class CleanSourcemap extends YargsCommand {
- readonly command = 'files:clean-sourcemaps'
- readonly description =
- 'Clean sourcemaps comments (like /*# sourceMappingURL=foo.css.map */) from your CSS files. They can cause conflict in the compiling or packaging process.'
- readonly builder = this.options({
- source: {
- alias: 'src',
- describe: 'Source path of the files.',
- type: 'string',
- default: './node_modules/',
- },
- packages: {
- alias: 'pkg',
- describe: 'List of npm packages with CSS files to clean.',
- type: 'array',
- default: ['bootstrap-datepicker', 'tinymce'],
- },
- } as const)
+export const command = 'files:clean-sourcemaps'
+export const description = 'Clean sourcemaps'
+export const builder = {
+ source: {
+ alias: 'src',
+ describe: 'Source path of the files.',
+ type: 'string',
+ default: './node_modules/',
+ },
+ packages: {
+ alias: 'pkg',
+ describe: 'List of npm packages with CSS files to clean.',
+ type: 'array',
+ default: [
+ 'bootstrap-datepicker',
+ 'tinymce',
+ ],
+ },
+} as const
+export const handler = (args: ArgumentsCamelCase>) => {
+ const commandStartedAt = uptime()
+ const packageJson = getPackageJson()
- constructor() {
- super()
- }
-
- handler(args: ArgumentsCamelCase>) {
- const commandStartedAt = uptime()
- const packageJson = getPackageJson()
-
- // https://github.com/npm/validate-npm-package-name
- const packages = args.packages.map((_) => _.toString().trim()) // sanitize
- const { source } = args
+ // https://github.com/npm/validate-npm-package-name
+ const packages = args.packages.map((_) => _.toString().trim()) // sanitize
+ const { source } = args
- const ensurePackages = [
- ...Object.keys(packageJson?.dependencies ?? {}),
- ...Object.keys(packageJson?.devDependencies ?? {}),
- ].some((dependencies) => packages.indexOf(dependencies) >= 0)
+ const ensurePackages = [
+ ...Object.keys(packageJson?.dependencies ?? {}),
+ ...Object.keys(packageJson?.devDependencies ?? {}),
+ ].some((dependencies) => packages.indexOf(dependencies) >= 0)
- if (!ensurePackages) {
- error(`[${this.command}]:`, 'Dependencies not found')
- return
- }
-
- const directories = packages
- .map((pkg) => getDirectory(source, pkg))
- .filter((file) => file.isDirectory())
- const files = directories.reduce(
- (files: File[], { info: { absolutePath } }) =>
- files.concat(
- ...File.sync('**/*.css', {
- cwd: absolutePath,
- absolute: true,
- }).map((file) => File.find(file)),
- ),
- [],
- )
+ if (!ensurePackages) {
+ error(`[${command}]:`, 'Dependencies not found')
+ return
+ }
- const regexp = config.CSS_SOURCEMAP_REGEX
- for (const file of files) {
- const data = file.read()
- const replaced = data.replace(regexp, '')
- file.write(replaced)
- log('[File]:', file.info.path)
- }
- const commandFinishedAt = uptime()
- const commandElapsedTime = commandFinishedAt - commandStartedAt
+ const directories = packages.map((pkg) => getDirectory(source, pkg)).filter((file) => file.isDirectory())
+ const files = directories.reduce(
+ (files: File[], { info: { absolutePath } }) =>
+ files.concat(
+ ...File.sync('**/*.css', {
+ cwd: absolutePath,
+ }).map((file) => File.find(file)),
+ ),
+ [],
+ )
- log(`[${this.command}]:`, `${commandElapsedTime.toFixed(3)}s`)
- Notify.done(this.command, 'Done, watch console results')
+ const regexp = config.CSS_SOURCEMAP_REGEX
+ for (const file of files) {
+ const data = file.read()
+ const replaced = data.replace(regexp, '')
+ file.write(replaced)
+ log('[File]:', file.info.path)
}
+ const commandFinishedAt = uptime()
+ const commandElapsedTime = commandFinishedAt - commandStartedAt
+
+ log(`[${command}]:`, `${commandElapsedTime.toFixed(3)}s`)
}
const getPackageJson = (): {
@@ -94,9 +83,7 @@ const getPackageJson = (): {
const json = JSON.parse(file.read())
return json
} catch (error) {
- throw new Error(
- `Error parsing the file <${filename}> in the root directory of the project located at <${cwd()}>`,
- )
+ throw new Error(`Error parsing the file <${filename}> in the root directory of the project located at <${cwd()}>`)
}
}
diff --git a/src/commands/html/html-validate.command.ts b/src/commands/html/html-validate.command.ts
index 5a7ca3e..39dcfb9 100644
--- a/src/commands/html/html-validate.command.ts
+++ b/src/commands/html/html-validate.command.ts
@@ -1,85 +1,72 @@
-import { cwd, uptime, exit } from 'node:process'
-
-import type { ArgumentsCamelCase, InferredOptionTypes } from 'yargs'
-import { HTMLHint } from 'htmlhint'
+import { cwd, exit, uptime } from 'node:process'
+import htmlhint, { type HTMLHint } from 'htmlhint'
import htmlhintStylish from 'htmlhint-stylish'
-
-import { File } from '#@/src/shared/lib/file.js'
-import { log, warn } from '#@/src/shared/helpers/console.js'
-import { Notify } from '#@/src/shared/lib/notify.js'
-import config from '#@/src/shared/helpers/config.js'
-import { YargsCommand } from '#@/src/shared/yargs-command.js'
+import type { ArgumentsCamelCase, InferredOptionTypes } from 'yargs'
+import { log, warn } from '#/src/shared/domain/console.js'
+import { File } from '#/src/shared/domain/file.js'
+import config from '#/src/shared/infrastructure/config.js'
type Ruleset = (typeof HTMLHint)['defaultRuleset']
type Hint = ReturnType<(typeof HTMLHint)['verify']>[number]
-export class HtmlValidate extends YargsCommand {
- readonly command = 'html:validate'
- readonly description =
- 'Validate html files with htmlhint. \nRead about rules on:\n- https://github.com/htmlhint/HTMLHint/wiki/Rules\n- https://htmlhint.com/docs/user-guide/list-rules'
- readonly builder = this.options({
- source: {
- alias: 'src',
- describe: 'Source path of the html files.',
- type: 'string',
- default: 'public',
- },
- } as const)
-
- constructor() {
- super()
- }
+export const command = 'html:validate'
+export const builder = {
+ source: {
+ alias: 'src',
+ describe: 'Directory containing HTML files to validate',
+ type: 'string',
+ default: 'public',
+ },
+} as const
+export const description =
+ 'Validate HTML files for syntax errors and best practices using HTMLHint. \nRead about rules on:\n- https://github.com/htmlhint/HTMLHint/wiki/Rules\n- https://htmlhint.com/docs/user-guide/list-rules'
- handler(args: ArgumentsCamelCase>) {
- const commandStartedAt = uptime()
+export const handler = (args: ArgumentsCamelCase>) => {
+ const commandStartedAt = uptime()
- const { source } = args
- const files = File.sync(`${source}/**/*.+(html)`, { absolute: true })
+ const { source } = args
+ const files = File.sync(`${source}/**/*.+(html)`)
- if (!files.length) {
- warn(this.command, 'HTML files not found')
- exit(0)
- }
+ if (!files.length) {
+ warn(command, 'HTML files not found')
+ exit(0)
+ }
- /**
- * DEBT: Can it be a factory of configs?
- */
- const htmlhintrc = File.find('.htmlhintrc')
- const ruleSet: Ruleset = htmlhintrc.isFile()
- ? JSON.parse(htmlhintrc.read())
- : config.HTML_RULE_SET
+ /**
+ * DEBT: Can it be a factory of configs?
+ */
+ const htmlhintrc = File.find('.htmlhintrc')
+ const ruleSet: Ruleset = htmlhintrc.isFile() ? JSON.parse(htmlhintrc.read()) : config.HTML_RULE_SET
- const lintResults = files
- .map((file) => ({
- fileContent: File.find(file).read(),
+ const lintResults = files
+ .map((file) => ({
+ fileContent: File.find(file).read(),
+ file,
+ }))
+ .map(({ fileContent, file }) =>
+ htmlhint?.HTMLHint?.verify?.(fileContent, ruleSet).map((lintResult: Hint) => ({
file,
- }))
- .map(({ fileContent, file }) =>
- HTMLHint.verify(fileContent, ruleSet).map((lintResult: Hint) => ({
- file,
- error: lintResult,
- })),
- )
- .filter((lintResult) => lintResult.length !== 0)
+ error: lintResult,
+ })),
+ )
+ .filter((lintResult) => lintResult.length !== 0)
- if (!lintResults.length) {
- log(this.command, 'No html errors have been found :)')
- return
- }
+ if (!lintResults.length) {
+ log(command, 'No html errors have been found :)')
+ return
+ }
- for (const messages of lintResults) {
- htmlhintStylish({
- cwd: cwd(),
- htmlhint: {
- messages,
- },
- })
- }
+ for (const messages of lintResults) {
+ htmlhintStylish({
+ cwd: cwd(),
+ htmlhint: {
+ messages,
+ },
+ })
+ }
- const commandFinishedAt = uptime()
- const commandElapsedTime = commandFinishedAt - commandStartedAt
+ const commandFinishedAt = uptime()
+ const commandElapsedTime = commandFinishedAt - commandStartedAt
- log(this.command, `${commandElapsedTime.toFixed(3)}s`)
- Notify.info(this.command, 'Task done, watch results in console')
- }
+ log(command, `${commandElapsedTime.toFixed(3)}s`)
}
diff --git a/src/commands/images/image-minifier.ts b/src/commands/images/image-minifier.ts
new file mode 100644
index 0000000..48debda
--- /dev/null
+++ b/src/commands/images/image-minifier.ts
@@ -0,0 +1,78 @@
+import { cpus } from 'node:os'
+import { join, resolve } from 'node:path'
+import type { URL } from 'node:url'
+import { isMainThread } from 'node:worker_threads'
+import { chunkArray } from '#/src/shared/domain/chunkArray.js'
+import { log } from '#/src/shared/domain/console.js'
+import { File } from '#/src/shared/domain/file.js'
+import { formatSizeDelta } from '#/src/shared/domain/formatBytes.js'
+import type { Quality } from '#/src/shared/domain/quality-presets.js'
+import { runWorker, summarizeWorkerResults, type WorkerResult } from '#/src/shared/domain/runWorker.js'
+
+export async function imageMinifier(
+ {
+ source,
+ distribution,
+ command,
+ quality,
+ }: {
+ source: string
+ distribution: string
+ command: string
+ quality?: Quality
+ },
+ jobFile: URL,
+) {
+ if (isMainThread) {
+ const src = File.find(source)
+ if (!src.isDirectory()) {
+ throw new Error(`Directory <${src.info.absolutePath}> not found`)
+ }
+ const dist = File.find(distribution)
+
+ log(`[${command}]: Processing images
+ Source: ${src.info.absolutePath}
+ Distribution: ${dist.info.absolutePath}`)
+
+ const extensions = 'png,jpeg,jpg,gif,svg'
+ const files = File.sync(`**/*.{${extensions}}`, {
+ cwd: src.info.absolutePath,
+ }).map((path) => {
+ const file = File.find(path)
+ // [input]: /dvx-demo-project/src/assets/img/src/webpack/webpack.png
+ // [output]: /webpack/webpack.png
+ const distDir = file.info.dir.replace(src.info.absolutePath, '')
+ // [input]: /webpack/webpack.png
+ // [output]: /dvx-demo-project/src/assets/img/dist/webpack
+ const destination =
+ distDir.startsWith('\\') || distDir.startsWith('/')
+ ? join(dist.info.absolutePath, distDir)
+ : resolve(dist.info.absolutePath, distDir)
+ return {
+ source: path,
+ destination,
+ ext: file.info.ext.toLowerCase(),
+ }
+ })
+ const cpuCount = cpus().length - 1
+ const tasks: Promise[] = []
+
+ const chunkedTasks = chunkArray(files, cpuCount)
+ for (const chunk of chunkedTasks) {
+ tasks.push(
+ runWorker(
+ {
+ files: chunk,
+ command,
+ quality,
+ },
+ jobFile,
+ ),
+ )
+ }
+ const results = await Promise.allSettled(tasks)
+ const { processed, time, bytesIn, bytesOut } = summarizeWorkerResults(results)
+ const sizes = bytesIn > 0 ? `, ${formatSizeDelta(bytesIn, bytesOut)}` : ''
+ log(`[${command}]: minify done โ ${processed} files${sizes} in ${time.toFixed(2)}s`)
+ }
+}
diff --git a/src/commands/images/image-minify.command.ts b/src/commands/images/image-minify.command.ts
deleted file mode 100644
index 9447c72..0000000
--- a/src/commands/images/image-minify.command.ts
+++ /dev/null
@@ -1,93 +0,0 @@
-import { join, resolve } from 'node:path'
-import { cpus } from 'node:os'
-import { isMainThread } from 'node:worker_threads'
-import { URL } from 'node:url'
-
-import type { ArgumentsCamelCase, InferredOptionTypes } from 'yargs'
-
-import { warn } from '#@/src/shared/helpers/console.js'
-import { File } from '#@/src/shared/lib/file.js'
-// import { Notify } from '#@/src/shared/lib/notify.js'
-import { YargsCommand } from '#@/src/shared/yargs-command.js'
-import { chunkArray } from '#@/src/shared/chunkArray.js'
-import { runWorker } from '#@/src/shared/runWorker.js'
-
-const command = 'img:minify'
-const tasks: Promise[] = []
-export class ImageMinify extends YargsCommand {
- readonly command = command
-
- readonly builder = this.options({
- source: {
- alias: 'src',
- describe: 'Source path without optimization.',
- type: 'string',
- default: 'src/assets/img/src',
- },
- distribution: {
- alias: 'dist',
- describe: 'Distribution path for optimized images.',
- type: 'string',
- default: 'src/assets/img/dist',
- },
- } as const)
-
- readonly description = 'Minify images'
-
- async handler(args: ArgumentsCamelCase>) {
- // console.time(this.command)
- minify(args)
- // console.timeEnd(this.command)
- // Notify.info('Minify', 'Minify images task has ended')
- }
-}
-
-export async function minify({ source, distribution }: { source: string; distribution: string }) {
- if (isMainThread) {
- const src = File.find(source)
- if (!src.isDirectory()) {
- throw new Error(`Directory ${src.info.absolutePath} not found`)
- }
- const dist = File.find(distribution)
-
- warn(`[${command}]:`, 'search in:', src.info.absolutePath)
- warn(`[${command}]:`, 'result in:', dist.info.absolutePath)
-
- const extensions = 'png,jpeg,jpg,gif,svg'
- const files = File.sync(`**/*.{${extensions}}`, {
- cwd: src.info.absolutePath,
- absolute: true,
- }).map((path) => {
- const file = File.find(path)
- // [input]: /dvx-demo-project/src/assets/img/src/webpack/webpack.png
- // [output]: /webpack/webpack.png
- const distDir = file.info.dir.replace(src.info.absolutePath, '')
- // [input]: /webpack/webpack.png
- // [output]: /dvx-demo-project/src/assets/img/dist/webpack
- const destination =
- distDir.startsWith('\\') || distDir.startsWith('/')
- ? join(dist.info.absolutePath, distDir)
- : resolve(dist.info.absolutePath, distDir)
- return {
- source: path,
- destination,
- ext: file.info.ext.toLocaleLowerCase(),
- }
- })
- const cpuCount = cpus().length - 1
-
- const chunkedTasks = chunkArray(files, cpuCount)
- for (const chunk of chunkedTasks) {
- tasks.push(
- runWorker(
- {
- files: chunk,
- command,
- },
- new URL('./minify.job.js', import.meta.url),
- ),
- )
- }
- Promise.allSettled(tasks)
- }
-}
diff --git a/src/commands/images/image-optimize.command.ts b/src/commands/images/image-optimize.command.ts
index 6a90536..9db7614 100644
--- a/src/commands/images/image-optimize.command.ts
+++ b/src/commands/images/image-optimize.command.ts
@@ -1,62 +1,103 @@
import type { ArgumentsCamelCase, InferredOptionTypes } from 'yargs'
-import { minify } from './image-minify.command.js'
-import { resize } from './image-resize.command.js'
-import { towebp } from './image-to-webp.command.js'
-import { YargsCommand } from '#@/src/shared/yargs-command.js'
+import { log } from '#/src/shared/domain/console.js'
+import { imageMinifier } from './image-minifier.js'
+import { imageResizer } from './image-resizer.js'
+import { webPConverter } from './image-webp-converter.js'
-export class ImageOptimize extends YargsCommand {
- readonly command = 'img:optimize'
- readonly builder = this.options({
- source: {
- alias: 'src',
- describe: 'Source path of the images without optimization.',
- type: 'string',
- default: 'src/assets/img/src',
- },
- distribution: {
- alias: 'dist',
- describe: 'Distribution path for optimized image .',
- type: 'string',
- default: 'src/assets/img/dist',
- },
- width: {
- alias: 'w',
- type: 'number',
- describe: 'Set the width',
- default: 1024,
- },
- height: {
- alias: 'h',
- type: 'number',
- describe: 'Set the height',
- },
- tool: {
- alias: 't',
- describe: 'Tool to use',
- type: 'string',
- default: 'sharp',
- choices: ['sharp', 'mogrify'],
- },
- exclude: {
- alias: 'e',
- describe: 'Files to exclude / ignore, separated by spaces',
- type: 'array',
- default: ['opengraph'],
+export const command = 'img:optimize'
+export const builder = {
+ source: {
+ alias: 'src',
+ describe: 'Source directory containing unoptimized images to process',
+ type: 'string',
+ default: 'src/assets/img/src',
+ },
+ distribution: {
+ alias: 'dist',
+ describe: 'Output directory for optimized images',
+ type: 'string',
+ default: 'src/assets/img/dist',
+ },
+ width: {
+ alias: 'w',
+ type: 'number',
+ describe: 'Target width for resized images in pixels',
+ default: 1024,
+ },
+ height: {
+ alias: 'h',
+ type: 'number',
+ describe: 'Target height for resized images in pixels (optional)',
+ },
+ tool: {
+ alias: 't',
+ describe: 'Image processing tool to use for resizing operations',
+ type: 'string',
+ default: 'sharp',
+ choices: [
+ 'sharp',
+ 'mogrify',
+ ],
+ },
+ exclude: {
+ alias: 'e',
+ describe: 'File patterns to exclude from processing (space-separated)',
+ type: 'array',
+ default: [
+ 'opengraph',
+ ],
+ },
+ quality: {
+ alias: 'q',
+ describe: 'Compression quality preset',
+ type: 'string',
+ default: 'medium',
+ choices: [
+ 'high',
+ 'medium',
+ 'low',
+ ],
+ },
+} as const
+
+export const description = 'Comprehensive image optimization: minify, resize, and convert to WebP format'
+
+export const handler = async (args: ArgumentsCamelCase>) => {
+ const { source, distribution } = args
+
+ log(`[${command}]: Step 1/3 โ minify: ${source} โ ${distribution}`)
+ await imageMinifier(
+ {
+ source,
+ distribution,
+ command,
+ quality: args.quality,
},
- } as const)
+ new URL('./imagemin-minifier.job.js', import.meta.url),
+ )
- readonly description = 'Process images (minify, convert to webp and resize).'
+ log(`[${command}]: Step 2/3 โ resize: ${distribution} (in-place, max ${args.width}px)`)
+ await imageResizer(
+ {
+ source: distribution,
+ width: args.width,
+ height: args.height,
+ tool: args.tool,
+ exclude: args.exclude,
+ command,
+ },
+ new URL('./image-resizer.job.js', import.meta.url),
+ )
- async handler(args: ArgumentsCamelCase>) {
- const dist = args.distribution
- await minify(args)
- // @ts-ignore
- args.distribution = 'src/assets/img/dist/webp'
- await towebp(args)
- // @ts-ignore
- args.source = dist
- // @ts-ignore
- await resize(args)
- }
+ log(`[${command}]: Step 3/3 โ webp: ${distribution} โ ${distribution} (alongside originals)`)
+ await webPConverter(
+ {
+ source: distribution,
+ distribution,
+ command,
+ quality: args.quality,
+ },
+ new URL('./sharp-webp-converter.job.js', import.meta.url),
+ )
}
diff --git a/src/commands/images/image-resize.command.ts b/src/commands/images/image-resize.command.ts
index 22436ed..91e9ef8 100644
--- a/src/commands/images/image-resize.command.ts
+++ b/src/commands/images/image-resize.command.ts
@@ -1,110 +1,58 @@
-import { cpus } from 'node:os'
+import { URL } from 'node:url'
import type { ArgumentsCamelCase, InferredOptionTypes } from 'yargs'
-import { File } from '#@/src/shared/lib/file.js'
-// import { Notify } from '#@/src/shared/lib/notify.js'
-import { YargsCommand } from '#@/src/shared/yargs-command.js'
-import { chunkArray } from '#@/src/shared/chunkArray.js'
-import { runWorker } from '#@/src/shared/runWorker.js'
-import { isMainThread } from 'node:worker_threads'
-
-const command = 'img:resize'
-const tasks: Promise[] = []
-
-export class ImageResize extends YargsCommand {
- readonly command = command
-
- readonly builder = this.options({
- source: {
- alias: 'src',
- describe: 'Source path of the images to resize',
- type: 'string',
- default: 'src/assets/img/dist',
- },
- width: {
- alias: 'w',
- type: 'number',
- describe: 'Set the width',
- default: 1024,
- },
- height: {
- alias: 'h',
- type: 'number',
- describe: 'Set the height',
- },
- tool: {
- alias: 't',
- describe: 'Tool to use',
- type: 'string',
- default: 'sharp',
- choices: ['sharp', 'mogrify'],
- },
- exclude: {
- alias: 'e',
- describe: 'Files to exclude / ignore, separated by spaces',
- type: 'array',
- default: ['opengraph'],
+// import { Notify } from '#/src/shared/lib/notify.js'
+import { imageResizer } from './image-resizer.js'
+
+export const command = 'img:resize'
+export const builder = {
+ source: {
+ alias: 'src',
+ describe: 'Source directory containing images to resize',
+ type: 'string',
+ default: 'src/assets/img/dist',
+ },
+ width: {
+ alias: 'w',
+ type: 'number',
+ describe: 'Target width in pixels for resized images',
+ default: 1024,
+ },
+ height: {
+ alias: 'h',
+ type: 'number',
+ describe: 'Target height in pixels for resized images (optional, maintains aspect ratio if not set)',
+ },
+ tool: {
+ alias: 't',
+ describe: 'Image processing tool to use for resizing',
+ type: 'string',
+ default: 'sharp',
+ choices: [
+ 'sharp',
+ 'mogrify',
+ ],
+ },
+ exclude: {
+ alias: 'e',
+ describe: 'File patterns to exclude from resizing (space-separated)',
+ type: 'array',
+ default: [
+ 'opengraph',
+ ],
+ },
+} as const
+export const description = 'Resize images to specified dimensions while maintaining aspect ratio'
+export const handler = async (args: ArgumentsCamelCase>) => {
+ // console.time(this.command)
+ imageResizer(
+ {
+ ...args,
+ command,
},
- } as const)
-
- readonly description = 'Resize images, fixes to 1024px width'
-
- constructor() {
- super()
- }
-
- async handler(args: ArgumentsCamelCase>) {
- // console.time(this.command)
- resize(args)
- // console.timeEnd(this.command)
- // Notify.info('Resize', 'End resize images task')
- }
-}
-
-export async function resize({
- source,
- width,
- height,
- tool,
- exclude,
-}: {
- source: string
- exclude: readonly (string | number)[]
- tool: string
- width: number
- height?: number
-}) {
- if (isMainThread) {
- const src = File.find(source)
- if (!src.isDirectory()) {
- throw new Error(`Directory ${src.info.absolutePath} not found`)
- }
-
- const extensions = 'png,jpeg,jpg'
- const ignore = exclude.map((_) => `**/*${_}*.{${extensions}}`)
- const files = File.sync(`**/*.{${extensions}}`, {
- cwd: src.info.absolutePath,
- absolute: true,
- ignore,
- })
- const cpuCount = cpus().length - 1
-
- const chunkedTasks = chunkArray(files, cpuCount)
- for (const chunk of chunkedTasks) {
- tasks.push(
- runWorker(
- {
- files: chunk,
- width,
- height,
- tool,
- command,
- },
- new URL('./resize.job.js', import.meta.url),
- ),
- )
- }
- Promise.allSettled(tasks)
- }
+ new URL('./image-resizer.job.js', import.meta.url),
+ )
+ // console.timeEnd(this.command)
+ // Notify.info('Resize', 'End resize images task')
}
diff --git a/src/commands/images/image-resizer.job.ts b/src/commands/images/image-resizer.job.ts
new file mode 100644
index 0000000..b5c22be
--- /dev/null
+++ b/src/commands/images/image-resizer.job.ts
@@ -0,0 +1,75 @@
+import { execSync } from 'node:child_process'
+import { extname } from 'node:path'
+import { performance } from 'node:perf_hooks'
+import { exit } from 'node:process'
+import { isMainThread, parentPort, workerData } from 'node:worker_threads'
+
+import sharp from 'sharp'
+
+import { error, log } from '#/src/shared/domain/console.js'
+import { Shell } from '#/src/shared/domain/shell.js'
+
+const useMogrify = async (file: string, width: number = 1024, height: number | undefined, command: string) => {
+ const mogrify = 'mogrify'
+ try {
+ if (!Shell.exists(mogrify)) {
+ throw new Error(`The command ${mogrify} does not exist.`)
+ }
+
+ const ext = extname(file).toLowerCase()
+ let stdOut = ''
+ const resize = height ? `-resize "${width}x${height}" -extent "${width}x${height}" ` : `-resize "${width}>"`
+ if (ext.includes('.jpg')) {
+ stdOut = execSync(`${mogrify} -verbose -format jpg -layers Dispose ${resize} ${file}`).toString()
+ } else if (ext.includes('.jpeg')) {
+ stdOut = execSync(`${mogrify} -verbose -format jpeg -layers Dispose ${resize} ${file}`).toString()
+ } else if (ext.includes('.png')) {
+ stdOut = execSync(`${mogrify} -verbose -format png ${resize} ${file}`).toString()
+ }
+ log(`[${command}]:`, stdOut)
+ } catch (e) {
+ error(`[${command}]:`, e)
+ exit(1)
+ }
+}
+
+const useSharp = async (
+ file: string,
+ width: number | undefined = 1024,
+ height: number | undefined,
+ command: string,
+) => {
+ const { width: w, height: h } = await sharp(file).metadata()
+ const fitsWidth = (w ?? 0) <= (width ?? Infinity)
+ const fitsHeight = !height || (h ?? 0) <= height
+ if (fitsWidth && fitsHeight) return
+
+ return sharp(file)
+ .resize({
+ width,
+ height,
+ withoutEnlargement: true,
+ fit: sharp.fit.inside,
+ })
+ .sharpen()
+ .toBuffer()
+ .then((data) => sharp(data).toFile(file))
+ .then(() => log(`[${command}]:`, file))
+}
+
+const promises: Promise[] = []
+
+if (!isMainThread) {
+ const startsAt = performance.now()
+ const { files, width, height, tool, command } = workerData
+ const resizer = tool === 'mogrify' ? useMogrify : useSharp
+ for (const file of files) {
+ promises.push(resizer(file, width, height, command))
+ }
+ Promise.allSettled(promises).then(() => {
+ parentPort?.postMessage({
+ processed: files.length,
+ endTime: (performance.now() - startsAt) / 1000,
+ })
+ })
+}
diff --git a/src/commands/images/image-resizer.ts b/src/commands/images/image-resizer.ts
new file mode 100644
index 0000000..5b033fa
--- /dev/null
+++ b/src/commands/images/image-resizer.ts
@@ -0,0 +1,61 @@
+import { cpus } from 'node:os'
+import type { URL } from 'node:url'
+import { isMainThread } from 'node:worker_threads'
+import { chunkArray } from '#/src/shared/domain/chunkArray.js'
+import { log } from '#/src/shared/domain/console.js'
+import { File } from '#/src/shared/domain/file.js'
+import { runWorker, summarizeWorkerResults, type WorkerResult } from '#/src/shared/domain/runWorker.js'
+
+export async function imageResizer(
+ {
+ source,
+ width,
+ height,
+ tool,
+ exclude,
+ command,
+ }: {
+ source: string
+ exclude: readonly (string | number)[]
+ tool: string
+ width: number
+ command: string
+ height?: number
+ },
+ jobFile: URL,
+) {
+ if (isMainThread) {
+ const src = File.find(source)
+ if (!src.isDirectory()) {
+ throw new Error(`Directory ${src.info.absolutePath} not found`)
+ }
+
+ const extensions = 'png,jpeg,jpg'
+ const ignore = exclude.map((_) => `**/*${_}*.{${extensions}}`)
+ const files = File.sync(`**/*.{${extensions}}`, {
+ cwd: src.info.absolutePath,
+ exclude: ignore,
+ })
+ const cpuCount = cpus().length - 1
+ const tasks: Promise[] = []
+
+ const chunkedTasks = chunkArray(files, cpuCount)
+ for (const chunk of chunkedTasks) {
+ tasks.push(
+ runWorker(
+ {
+ files: chunk,
+ width,
+ height,
+ tool,
+ command,
+ },
+ jobFile,
+ ),
+ )
+ }
+ const results = await Promise.allSettled(tasks)
+ const { processed, time } = summarizeWorkerResults(results)
+ log(`[${command}]: resize done โ ${processed} files in ${time.toFixed(2)}s`)
+ }
+}
diff --git a/src/commands/images/image-to-webp.command.ts b/src/commands/images/image-to-webp.command.ts
deleted file mode 100644
index 02f856a..0000000
--- a/src/commands/images/image-to-webp.command.ts
+++ /dev/null
@@ -1,91 +0,0 @@
-import { isMainThread } from 'node:worker_threads'
-import { join, resolve } from 'node:path'
-import { mkdirSync } from 'node:fs'
-import { cpus } from 'node:os'
-
-import type { ArgumentsCamelCase, InferredOptionTypes } from 'yargs'
-
-import { warn } from '#@/src/shared/helpers/console.js'
-import { File } from '#@/src/shared/lib/file.js'
-// import { Notify } from '#@/src/shared/lib/notify.js'
-import { YargsCommand } from '#@/src/shared/yargs-command.js'
-import { chunkArray } from '#@/src/shared/chunkArray.js'
-import { runWorker } from '#@/src/shared/runWorker.js'
-
-const command = 'img:towebp'
-const tasks: Promise[] = []
-
-export class ImageToWebP extends YargsCommand {
- readonly command = command
-
- readonly builder = this.options({
- source: {
- alias: 'src',
- describe: 'Source path of the images to convert webp.',
- type: 'string',
- default: 'src/assets/img/dist',
- },
- distribution: {
- alias: 'dist',
- describe: 'Distribution path for webp images.',
- type: 'string',
- default: 'src/assets/img/dist/webp',
- },
- } as const)
-
- readonly description = 'Format/Convert images to webp'
-
- async handler(args: ArgumentsCamelCase>) {
- // console.time(this.command)
- towebp(args)
- // console.timeEnd(this.command)
- // Notify.info('To webp', 'End images to webp task')
- }
-}
-
-export async function towebp({ source, distribution }: { source: string; distribution: string }) {
- if (isMainThread) {
- const src = File.find(source)
- if (!src.isDirectory()) {
- throw new Error(`Directory ${src.info.absolutePath} not found`)
- }
- const dist = resolve(distribution)
-
- const extensions = 'png,jpeg,jpg,gif'
- const files = File.sync(`**/*.{${extensions}}`, {
- absolute: true,
- cwd: src.info.absolutePath,
- }).map((path) => {
- const file = File.find(path)
- const distDir = file.info.dir.replace(src.info.absolutePath, '')
- const destination = File.find(
- distDir.startsWith('\\') || distDir.startsWith('/')
- ? join(dist, distDir)
- : resolve(dist, distDir),
- )
- if (!destination.isDirectory()) {
- warn(`[${command}]:`, `Creating directory <${destination.info.absolutePath}>`)
- mkdirSync(destination.info.absolutePath, { recursive: true })
- }
- return {
- file: file.info,
- destination: destination.info.absolutePath,
- }
- })
- const cpuCount = cpus().length - 1
-
- const chunkedTasks = chunkArray(files, cpuCount)
- for (const chunk of chunkedTasks) {
- tasks.push(
- runWorker(
- {
- files: chunk,
- command,
- },
- new URL('./to-webp.job.js', import.meta.url),
- ),
- )
- }
- Promise.allSettled(tasks)
- }
-}
diff --git a/src/commands/images/image-webp-converter.ts b/src/commands/images/image-webp-converter.ts
new file mode 100644
index 0000000..be63720
--- /dev/null
+++ b/src/commands/images/image-webp-converter.ts
@@ -0,0 +1,75 @@
+import { mkdirSync } from 'node:fs'
+import { cpus } from 'node:os'
+import { join, resolve } from 'node:path'
+import { isMainThread } from 'node:worker_threads'
+
+import { chunkArray } from '#/src/shared/domain/chunkArray.js'
+import { log, warn } from '#/src/shared/domain/console.js'
+import { File } from '#/src/shared/domain/file.js'
+import { formatSizeDelta } from '#/src/shared/domain/formatBytes.js'
+import type { Quality } from '#/src/shared/domain/quality-presets.js'
+import { runWorker, summarizeWorkerResults, type WorkerResult } from '#/src/shared/domain/runWorker.js'
+
+export async function webPConverter(
+ {
+ source,
+ distribution,
+ command,
+ quality,
+ }: {
+ source: string
+ distribution: string
+ command: string
+ quality?: Quality
+ },
+ jobFile: URL,
+) {
+ if (isMainThread) {
+ const src = File.find(source)
+ if (!src.isDirectory()) {
+ throw new Error(`Directory ${src.info.absolutePath} not found`)
+ }
+ const dist = resolve(distribution)
+
+ const extensions = 'png,jpeg,jpg,gif'
+ const files = File.sync(`**/*.{${extensions}}`, {
+ cwd: src.info.absolutePath,
+ }).map((path) => {
+ const file = File.find(path)
+ const distDir = file.info.dir.replace(src.info.absolutePath, '')
+ const destination = File.find(
+ distDir.startsWith('\\') || distDir.startsWith('/') ? join(dist, distDir) : resolve(dist, distDir),
+ )
+ if (!destination.isDirectory()) {
+ warn(`[${command}]:`, `Creating directory <${destination.info.absolutePath}>`)
+ mkdirSync(destination.info.absolutePath, {
+ recursive: true,
+ })
+ }
+ return {
+ file: file.info,
+ destination: destination.info.absolutePath,
+ }
+ })
+ const cpuCount = cpus().length - 1
+ const tasks: Promise[] = []
+
+ const chunkedTasks = chunkArray(files, cpuCount)
+ for (const chunk of chunkedTasks) {
+ tasks.push(
+ runWorker(
+ {
+ files: chunk,
+ command,
+ quality,
+ },
+ jobFile,
+ ),
+ )
+ }
+ const results = await Promise.allSettled(tasks)
+ const { processed, time, bytesIn, bytesOut } = summarizeWorkerResults(results)
+ const sizes = bytesIn > 0 ? `, ${formatSizeDelta(bytesIn, bytesOut)}` : ''
+ log(`[${command}]: webp done โ ${processed} files${sizes} in ${time.toFixed(2)}s`)
+ }
+}
diff --git a/src/commands/images/imagemin-minifier.job.ts b/src/commands/images/imagemin-minifier.job.ts
new file mode 100644
index 0000000..00faf99
--- /dev/null
+++ b/src/commands/images/imagemin-minifier.job.ts
@@ -0,0 +1,144 @@
+import { statSync } from 'node:fs'
+import { performance } from 'node:perf_hooks'
+import { isMainThread, parentPort, workerData } from 'node:worker_threads'
+import imagemin, { type Plugin } from 'imagemin'
+import imageminGifsicle from 'imagemin-gifsicle'
+import imageminMozjpeg from 'imagemin-mozjpeg'
+import imageminPngquant from 'imagemin-pngquant'
+import imageminSvgo from 'imagemin-svgo'
+import imageminZopfli from 'imagemin-zopfli'
+
+import { log } from '#/src/shared/domain/console.js'
+import { formatSizeDelta } from '#/src/shared/domain/formatBytes.js'
+import { QUALITY_PRESETS, type Quality, type QualityPreset } from '#/src/shared/domain/quality-presets.js'
+
+const buildPlugins = (preset: QualityPreset) => {
+ const jpgPlugins = [
+ // mozjpeg alone: running jpegtran first only added a redundant re-encode
+ imageminMozjpeg({
+ quality: preset.jpeg,
+ progressive: true,
+ arithmetic: false, // Keep false for better compatibility
+ dct: 'int', // Use integer DCT for better quality
+ quantTable: 3, // Use quality-based quantization table
+ }),
+ ]
+ return {
+ '.png': [
+ imageminPngquant({
+ speed: 1,
+ quality: preset.png, // lossy settings
+ strip: true, // remove metadata
+ dithering: 1, // floyd-steinberg dithering for better gradients
+ }),
+ imageminZopfli({
+ more: true,
+ iterations: preset.zopfliIterations,
+ }),
+ ],
+ '.gif': [
+ // imagemin-giflossy: abandoned wrapper of the giflossy fork; its lossy flag was merged
+ // upstream into gifsicle 1.92+, so the maintained imagemin-gifsicle is preferred
+ imageminGifsicle({
+ optimizationLevel: 3,
+ colors: 256, // Limit color palette
+ interlaced: false, // Usually better for web
+ }),
+ ],
+ '.svg': [
+ // @ts-expect-error plugins is not well typed
+ imageminSvgo({
+ plugins: [
+ {
+ name: 'preset-default',
+ params: {
+ overrides: {
+ // removeViewBox: false, // Not part of preset-default in current SVGO version โ configured below
+ cleanupIds: false, // Keep IDs for external references
+ },
+ },
+ },
+ {
+ name: 'removeViewBox',
+ active: false, // Keep viewBox for responsive SVGs
+ },
+ {
+ name: 'removeXMLProcInst',
+ active: true,
+ },
+ {
+ name: 'removeDimensions',
+ active: true, // Remove width/height, keep viewBox
+ },
+ {
+ name: 'sortAttrs',
+ params: {
+ xmlnsOrder: 'alphabetical',
+ },
+ },
+ ],
+ }) as Plugin,
+ ],
+ '.jpg': jpgPlugins,
+ '.jpeg': jpgPlugins,
+ }
+}
+
+if (!isMainThread) {
+ const startsAt = performance.now()
+ const {
+ files,
+ command,
+ quality = 'medium',
+ } = workerData as {
+ files: {
+ source: string
+ destination: string
+ ext: string
+ }[]
+ command: string
+ quality?: Quality
+ }
+ const imageminPlugins = buildPlugins(QUALITY_PRESETS[quality])
+ const promises: Promise[] = []
+ let bytesIn = 0
+ let bytesOut = 0
+ for (const file of files) {
+ const { source, destination, ext } = file
+ const plugins = imageminPlugins[ext as keyof typeof imageminPlugins] as readonly Plugin[]
+
+ promises.push(
+ imagemin(
+ [
+ source,
+ ],
+ {
+ destination,
+ plugins,
+ },
+ )
+ .then((images) => {
+ const image = images[0]
+ if (!image) return
+ const sourceSize = statSync(source).size
+ const destinationSize = image.data.length
+ bytesIn += sourceSize
+ bytesOut += destinationSize
+ log(`[${command}]:`, image.destinationPath, formatSizeDelta(sourceSize, destinationSize))
+ })
+ .catch((e) => {
+ log(`[${command}]:`, `${e instanceof Error ? e.message : 'unknown error'}`)
+ }),
+ )
+ }
+ Promise.allSettled(promises).then(() => {
+ parentPort?.postMessage({
+ processed: files.length,
+ endTime: (performance.now() - startsAt) / 1000,
+ bytesIn,
+ bytesOut,
+ })
+ })
+}
+
+// LDFLAGS="-L/usr/local/lib" CPPFLAGS="-I/usr/local/include" pnpm rebuild mozjpeg // is not working
diff --git a/src/commands/images/minify.job.ts b/src/commands/images/minify.job.ts
deleted file mode 100644
index d9b8683..0000000
--- a/src/commands/images/minify.job.ts
+++ /dev/null
@@ -1,113 +0,0 @@
-import { isMainThread, parentPort, workerData } from 'node:worker_threads'
-import { performance } from 'node:perf_hooks'
-
-import imageminPngquant from 'imagemin-pngquant'
-import imageminJpegtran from 'imagemin-jpegtran'
-import imageminZopfli from 'imagemin-zopfli'
-import imagemin, { type Plugin } from 'imagemin'
-import imageminMozjpeg from 'imagemin-mozjpeg'
-import imageminGiflossy from 'imagemin-giflossy'
-
-import imageminSvgo from '#@/src/shared/imagemin-svgo.js'
-import {
- // error,
- log,
- // success
-} from '#@/src/shared/helpers/console.js'
-
-const jpgPlugins = [
- imageminJpegtran({
- progressive: true,
- }),
- imageminMozjpeg({
- quality: 90,
- }),
-]
-const imageminPlugins = {
- '.png': [
- imageminPngquant({
- speed: 1,
- quality: [0.6, 0.8], //98 //lossy settings
- }),
- imageminZopfli({
- more: true,
- }),
- ],
- '.gif': [
- imageminGiflossy({
- optimizationLevel: 3,
- optimize: 3, //keep-empty: Preserve empty transparent frames
- lossy: 2,
- }),
- ],
- '.svg': [
- imageminSvgo({
- plugins: [
- {
- name: 'preset-default',
- },
- {
- name: 'removeViewBox',
- // @ts-ignore
- active: true,
- },
- {
- name: 'cleanupIds',
- // @ts-ignore
- active: false,
- },
- {
- name: 'sortAttrs',
- params: {
- xmlnsOrder: 'alphabetical',
- },
- },
- ],
- }),
- ],
- '.jpg': jpgPlugins,
- '.jpeg': jpgPlugins,
-}
-const promises = []
-if (!isMainThread) {
- const startsAt = performance.now()
- const { files, command } = workerData as {
- files: {
- source: string
- destination: string
- ext: string
- }[]
- command: string
- }
- for (const file of files) {
- const { source, destination, ext } = file
- const plugins = imageminPlugins[ext as keyof typeof imageminPlugins] as readonly Plugin[]
- promises.push(
- imagemin([source], {
- destination,
- plugins,
- }).then((images) => {
- // Note: Extra process, evaluate
- // File.find(images[0].sourcePath).info.path
- // File.find(images[0].destinationPath).info.path
- log(
- `[${command}]:`,
- '\n[from]\t:',
- images[0]!.sourcePath,
- '\n[to]\t:',
- images[0]!.destinationPath,
- )
- //=> [{data: , path: 'build/images/foo.jpg'}, โฆ]
- }),
- )
- }
- Promise.allSettled(promises).then(() => {
- parentPort?.postMessage({
- processed: files.length,
- endTime: (performance.now() - startsAt) / 1000,
- })
- })
- // .catch((e) => {
- // error(`[${command}]:`, `${e instanceof Error ? e.message : 'unknown error'}`)
- // })
-}
diff --git a/src/commands/images/resize.job.ts b/src/commands/images/resize.job.ts
deleted file mode 100644
index b705a45..0000000
--- a/src/commands/images/resize.job.ts
+++ /dev/null
@@ -1,83 +0,0 @@
-import { isMainThread, parentPort, workerData } from 'node:worker_threads'
-import { extname } from 'node:path'
-import { performance } from 'node:perf_hooks'
-
-import sharp from 'sharp'
-import shelljs from 'shelljs'
-
-import { error, log } from '#@/src/shared/helpers/console.js'
-
-const { exec, exit, which } = shelljs
-
-const useMogrify = async (file: any, width: any = 1024, height: any) => {
- const mogrify = 'mogrify'
- try {
- if (!which(mogrify)) {
- throw new Error(`The command ${mogrify} does not exist.`)
- }
-
- const ext = extname(file).toLowerCase()
- let stdOut = ''
- const resize = height
- ? `-resize \"${width}x${height}\" -extent \"${width}x${height}\" `
- : `-resize \"${width}>\"`
- // console.log(resize); -path processed
- if (ext.includes('.jpg')) {
- stdOut = exec(`${mogrify} -verbose -format jpg -layers Dispose ${resize} ${file}`, {
- async: false,
- silent: true,
- }).stdout
- } else if (ext.includes('.jpeg')) {
- stdOut = exec(`${mogrify} -verbose -format jpeg -layers Dispose ${resize} ${file}`, {
- async: false,
- silent: true,
- }).stdout
- } else if (ext.includes('.png')) {
- stdOut = exec(`${mogrify} -verbose -format png ${resize} ${file}`, {
- async: false,
- silent: true,
- }).stdout
- }
- log('[Resize]:', stdOut)
- } catch (e) {
- error('[Resize - Error]:', e)
- exit(1)
- }
-}
-
-const useSharp = async (
- file: string,
- width: number | undefined = 1024,
- height: number | undefined,
-) => {
- return sharp(file)
- .resize({
- width,
- height,
- withoutEnlargement: true,
- fit: sharp.fit.inside,
- })
- .sharpen()
- .toBuffer()
- .then((data) => sharp(data).toFile(file))
-}
-const promises = []
-
-if (!isMainThread) {
- const startsAt = performance.now()
- const { files, width, height, tool, command } = workerData
- for (const file of files) {
- if (tool === 'mogrify') {
- promises.push(useMogrify(file, width, height))
- } else if (tool === 'sharp') {
- promises.push(useSharp(file, width, height).then(() => log(`[${command}]:`, file)))
- }
- }
- Promise.allSettled(promises).then(() => {
- parentPort?.postMessage({
- processed: files.length,
- endTime: (performance.now() - startsAt) / 1000,
- })
- })
- // .catch((e) => error(`[${command}]:`, `${e instanceof Error ? e.message : 'unknown error'}`))
-}
diff --git a/src/commands/images/sharp-webp-converter.job.ts b/src/commands/images/sharp-webp-converter.job.ts
new file mode 100644
index 0000000..0f988f4
--- /dev/null
+++ b/src/commands/images/sharp-webp-converter.job.ts
@@ -0,0 +1,66 @@
+import { statSync } from 'node:fs'
+import { resolve } from 'node:path'
+import { performance } from 'node:perf_hooks'
+import { isMainThread, parentPort, workerData } from 'node:worker_threads'
+
+import sharp from 'sharp'
+
+import { log } from '#/src/shared/domain/console.js'
+import { formatSizeDelta } from '#/src/shared/domain/formatBytes.js'
+import { QUALITY_PRESETS, type Quality } from '#/src/shared/domain/quality-presets.js'
+
+if (!isMainThread) {
+ const startsAt = performance.now()
+ const {
+ files,
+ command,
+ quality = 'medium',
+ } = workerData as {
+ files: {
+ file: {
+ name: string
+ absolutePath: string
+ }
+ destination: string
+ }[]
+ command: string
+ quality?: Quality
+ }
+ const preset = QUALITY_PRESETS[quality]
+ const promises: Promise[] = []
+ let bytesIn = 0
+ let bytesOut = 0
+ for (const fileInfo of files) {
+ const { file, destination } = fileInfo
+
+ const fileName = resolve(destination, `${file.name}.webp`)
+ promises.push(
+ sharp(file.absolutePath)
+ .webp({
+ quality: preset.webp,
+ effort: 4, // Compression effort (0-6, higher = better compression)
+ lossless: false, // Use lossy compression for smaller files
+ nearLossless: false, // Optional: true for better quality at cost of size
+ smartSubsample: true, // Better chroma subsampling
+
+ preset: 'default',
+ alphaQuality: 80, // for images with transparency
+ })
+ .toFile(fileName)
+ .then((info) => {
+ const sourceSize = statSync(file.absolutePath).size
+ bytesIn += sourceSize
+ bytesOut += info.size
+ log(`[${command}]:`, fileName, formatSizeDelta(sourceSize, info.size))
+ }),
+ )
+ }
+ Promise.allSettled(promises).then(() => {
+ parentPort?.postMessage({
+ processed: files.length,
+ endTime: (performance.now() - startsAt) / 1000,
+ bytesIn,
+ bytesOut,
+ })
+ })
+}
diff --git a/src/commands/images/to-webp.job.ts b/src/commands/images/to-webp.job.ts
deleted file mode 100644
index 9185b57..0000000
--- a/src/commands/images/to-webp.job.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import { isMainThread, parentPort, workerData } from 'node:worker_threads'
-import { resolve } from 'node:path'
-import { performance } from 'node:perf_hooks'
-
-import sharp from 'sharp'
-
-import {
- // error,
- log,
-} from '#@/src/shared/helpers/console.js'
-
-const promises = []
-if (!isMainThread) {
- const startsAt = performance.now()
- const { files, command } = workerData
- for (const fileInfo of files) {
- const { file, destination } = fileInfo
-
- const fileName = resolve(destination, `${file.name}.webp`)
- promises.push(
- sharp(file.absolutePath)
- .webp({ lossless: true })
- .toBuffer()
- .then((data) => sharp(data).toFile(fileName))
- .then(() => log(`[${command}]:`, fileName)),
- )
- }
- Promise.allSettled(promises).then(() => {
- parentPort?.postMessage({
- processed: files.length,
- endTime: (performance.now() - startsAt) / 1000,
- })
- })
- // .catch((e) => error(`[${command}]:`, `${e instanceof Error ? e.message : 'unknown error'}`))
-}
diff --git a/src/commands/images/yargs-image-minifier.command.ts b/src/commands/images/yargs-image-minifier.command.ts
new file mode 100644
index 0000000..9a91e3f
--- /dev/null
+++ b/src/commands/images/yargs-image-minifier.command.ts
@@ -0,0 +1,41 @@
+import { URL } from 'node:url'
+import type { ArgumentsCamelCase, InferredOptionTypes } from 'yargs'
+import { imageMinifier } from './image-minifier.js'
+
+export const command = 'img:minify'
+export const builder = {
+ source: {
+ alias: 'src',
+ describe: 'Source directory containing unoptimized images (png, jpeg, jpg, gif, svg)',
+ type: 'string',
+ default: 'src/assets/img/src',
+ },
+ distribution: {
+ alias: 'dist',
+ describe: 'Output directory where minified and optimized images will be saved',
+ type: 'string',
+ default: 'src/assets/img/dist',
+ },
+ quality: {
+ alias: 'q',
+ describe: 'Compression quality preset',
+ type: 'string',
+ default: 'medium',
+ choices: [
+ 'high',
+ 'medium',
+ 'low',
+ ],
+ },
+} as const
+export const description = 'Minify and optimize images for better web performance and smaller file sizes'
+
+export const handler = (args: ArgumentsCamelCase>) => {
+ return imageMinifier(
+ {
+ ...args,
+ command,
+ },
+ new URL('./imagemin-minifier.job.js', import.meta.url),
+ )
+}
diff --git a/src/commands/images/yargs-image-to-webp.command.ts b/src/commands/images/yargs-image-to-webp.command.ts
new file mode 100644
index 0000000..69f29c2
--- /dev/null
+++ b/src/commands/images/yargs-image-to-webp.command.ts
@@ -0,0 +1,41 @@
+import type { ArgumentsCamelCase, InferredOptionTypes } from 'yargs'
+
+// import { Notify } from '#/src/shared/lib/notify.js'
+import { webPConverter } from './image-webp-converter.js'
+
+export const command = 'img:towebp'
+export const builder = {
+ source: {
+ alias: 'src',
+ describe: 'Source directory containing images to convert to WebP format',
+ type: 'string',
+ default: 'src/assets/img/dist',
+ },
+ distribution: {
+ alias: 'dist',
+ describe: 'Output directory where converted WebP images will be saved',
+ type: 'string',
+ default: 'src/assets/img/dist/webp',
+ },
+ quality: {
+ alias: 'q',
+ describe: 'Compression quality preset',
+ type: 'string',
+ default: 'medium',
+ choices: [
+ 'high',
+ 'medium',
+ 'low',
+ ],
+ },
+} as const
+export const description = 'Convert images to WebP format for better web performance and smaller file sizes'
+export const handler = async (args: ArgumentsCamelCase>) => {
+ await webPConverter(
+ {
+ ...args,
+ command,
+ },
+ new URL('./sharp-webp-converter.job.js', import.meta.url),
+ )
+}
diff --git a/src/dvx.ts b/src/dvx.ts
deleted file mode 100644
index 16f5e30..0000000
--- a/src/dvx.ts
+++ /dev/null
@@ -1,72 +0,0 @@
-import type { Argv } from 'yargs'
-import yargs from 'yargs/yargs'
-import { hideBin } from 'yargs/helpers'
-
-import { version, epilogue, usage, scriptName } from '#@/src/commands/version.js'
-import type { YargsCommand } from './shared/yargs-command.js'
-import { readModulesRecursively } from './shared/readModulesRecursively.js'
-import { isConstructor } from './shared/isConstructor.js'
-import { error } from '#@/src/shared/helpers/console.js'
-import { exit } from 'node:process'
-
-export class DvxCLI {
- #yargs: Argv
-
- constructor(argv: string[]) {
- this.#yargs = yargs(hideBin(argv))
- this.#configureYargs()
- }
-
- #configureYargs() {
- this.#yargs
- .epilogue(epilogue)
- .help('help', 'Show help', false)
- .locale('en')
- .scriptName(scriptName)
- .usage(usage)
- .wrap(95)
- .version('version', 'Show current version number', version)
- .hide('version')
- .hide('help')
- .strictCommands()
- }
-
- #onError(command: string, err: unknown) {
- error(`[${command}]:`, err instanceof Error ? err.message : 'unknown error')
- exit(0)
- }
-
- async installCommands(path = 'commands') {
- const parentUrl = new URL(path, import.meta.url)
- const mask = /\.command\.(ts|js)$/
- for await (const entities of readModulesRecursively(parentUrl, mask)) {
- const keys = Object.keys(entities)
- for (const key of keys) {
- const entity = entities[`${key}`]
- if (!isConstructor(entity)) continue
- const cmd = new entity()
- this.#yargs.command(cmd.command, cmd.description, cmd.builder, cmd.handler.bind(cmd))
- }
- }
-
- return this
- }
-
- async parse() {
- try {
- /**
- * DOC: argv, the letter v is an abbreviation of vector, arg - vector | arg - array
- * Read more on: http://decsai.ugr.es/~jfv/ed1/c/cdrom/cap6/cap64.htm
- */
- const argv = await this.#yargs.parse() // args vector - without flags
- const argsCount = argv._.length
-
- if (!argsCount) this.#yargs.showHelp()
- } catch (err) {
- const help = await this.#yargs.getHelp()
- if (err instanceof Error) console.error('[error]:', `${err.message}\n${help}`)
-
- console.error('[error]:', `unknown error\n${help}`)
- }
- }
-}
diff --git a/src/index.ts b/src/index.ts
index 6f29dfb..6caba3a 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,6 +1,38 @@
#!/usr/bin/env node
import { argv } from 'node:process'
-import { DvxCLI } from './dvx.js'
+import { hideBin } from 'yargs/helpers'
+import yargs from 'yargs/yargs'
-await (await new DvxCLI(argv).installCommands()).parse()
+import { epilogue, scriptName, usage, version } from '#/src/shared/domain/cli-metadata.js'
+
+const cli = yargs(hideBin(argv))
+
+// configure yargs
+cli
+ .epilogue(epilogue)
+ .commandDir('./commands', {
+ include: /.command\.js$/,
+ extensions: [
+ 'js',
+ ],
+ recurse: true,
+ })
+ .help('help', 'Show help', false)
+ .locale('en')
+ .scriptName(scriptName)
+ .usage(usage)
+ .wrap(95)
+ .version('version', 'Show current version number', version)
+ .hide('version')
+ .hide('help')
+ .strictCommands()
+
+/**
+ * DOC: argv, the letter v is an abbreviation of vector, arg - vector | arg - array
+ * Read more on: http://decsai.ugr.es/~jfv/ed1/c/cdrom/cap6/cap64.htm
+ */
+const args = await cli.parse() // args vector - without flags
+const argsCount = args._.length
+
+if (!argsCount) cli.showHelp()
diff --git a/src/shared/chunkArray.ts b/src/shared/domain/chunkArray.ts
similarity index 100%
rename from src/shared/chunkArray.ts
rename to src/shared/domain/chunkArray.ts
diff --git a/src/commands/version.ts b/src/shared/domain/cli-metadata.ts
similarity index 64%
rename from src/commands/version.ts
rename to src/shared/domain/cli-metadata.ts
index 827a6d2..044dd47 100644
--- a/src/commands/version.ts
+++ b/src/shared/domain/cli-metadata.ts
@@ -1,16 +1,15 @@
-import { styleText } from 'node:util'
-import process from 'node:process'
import { arch } from 'node:os'
-
-import Shell from '#@/src/shared/lib/shell.js'
-import pkg from '#@/package.json' with { type: 'json' }
+import process from 'node:process'
+import { styleText } from 'node:util'
+import pkg from '#/package.json' with { type: 'json' }
+import { Shell } from '#/src/shared/domain/shell.js'
const brand = `
____ _ ____ _ ___
- | _ \\ _____ _______ _| |_ ___ __ _ _ __ ___ \/ ___| | |_ _|
- | | | |\/ _ \\ \\ \/ \/ _ \\ \\\/ \/ __\/ _ \\\/ _\` | '_ \` _ \\ | | | | | |
- | |_| | __\/\\ V \/ __\/> <| || __\/ (_| | | | | | | | |___| |___ | |
- |____\/ \\___| \\_\/ \\___\/_\/\\_\\\\__\\___|\\__,_|_| |_| |_| \\____|_____|___|\n`
+ | _ \\ _____ _______ _| |_ ___ __ _ _ __ ___ / ___| | |_ _|
+ | | | |/ _ \\ \\ / / _ \\ \\/ / __/ _ \\/ _\` | '_ \` _ \\ | | | | | |
+ | |_| | __/\\ V / __/> <| || __/ (_| | | | | | | | |___| |___ | |
+ |____/ \\___| \\_/ \\___/_/\\_\\\\__\\___|\\__,_|_| |_| |_| \\____|_____|___|\n`
export const version = `${styleText('yellowBright', brand)}
Devexteam CLI\t: ${styleText('yellowBright', `v${pkg.version || ''}`)}
diff --git a/src/shared/helpers/color.ts b/src/shared/domain/color.ts
similarity index 93%
rename from src/shared/helpers/color.ts
rename to src/shared/domain/color.ts
index 326dffd..a6c5daf 100644
--- a/src/shared/helpers/color.ts
+++ b/src/shared/domain/color.ts
@@ -14,16 +14,11 @@ abstract class Text {
abstract class Background {
static yellow(text: string, bright = true) {
- return `${Color.RESET}${Color.BG_YELLOW}${Color.bright(bright)}${text.replace(
- Color.RESET,
- '',
- )}${Color.RESET}`
+ return `${Color.RESET}${Color.BG_YELLOW}${Color.bright(bright)}${text.replace(Color.RESET, '')}${Color.RESET}`
}
static green(text: string, bright = true) {
- return `${Color.RESET}${Color.BG_GREEN}${Color.bright(bright)}${text.replace(Color.RESET, '')}${
- Color.RESET
- }`
+ return `${Color.RESET}${Color.BG_GREEN}${Color.bright(bright)}${text.replace(Color.RESET, '')}${Color.RESET}`
}
}
diff --git a/src/shared/helpers/console.ts b/src/shared/domain/console.ts
similarity index 97%
rename from src/shared/helpers/console.ts
rename to src/shared/domain/console.ts
index 5470f1e..0df28f7 100644
--- a/src/shared/helpers/console.ts
+++ b/src/shared/domain/console.ts
@@ -10,7 +10,9 @@ export const CONSOLE_COLOR = {
info: `${Color.BG_BLUE}${Color.FG_BLACK}`,
}
-const CONSOLE_EMOJI: { [key: string]: string } = {
+const CONSOLE_EMOJI: {
+ [key: string]: string
+} = {
info: ' โน ', //`${Color.FG_BLUE} โน ${Color.RESET}`, \u2139
log: ' โ ', //`${Color.FG_GREEN} โ ${Color.RESET}`, \u2714
warn: ' โ ', //`${Color.FG_YELLOW} โ ${Color.RESET}`, \u26A0
diff --git a/src/shared/emptyDirSync.ts b/src/shared/domain/emptyDirSync.ts
similarity index 84%
rename from src/shared/emptyDirSync.ts
rename to src/shared/domain/emptyDirSync.ts
index 50f758d..dd92c93 100644
--- a/src/shared/emptyDirSync.ts
+++ b/src/shared/domain/emptyDirSync.ts
@@ -1,9 +1,10 @@
-import { join } from 'node:path'
import { existsSync, lstatSync, readdirSync, rmdirSync, unlinkSync } from 'node:fs'
+import { join } from 'node:path'
export function emptyDirSync(path: string) {
if (!existsSync(path)) return
- readdirSync(path).forEach((file) => {
+ const files = readdirSync(path)
+ for (const file of files) {
const curPath = join(path, file)
if (lstatSync(curPath).isDirectory()) {
emptyDirSync(curPath)
@@ -11,5 +12,5 @@ export function emptyDirSync(path: string) {
} else {
unlinkSync(curPath)
}
- })
+ }
}
diff --git a/src/shared/lib/file.ts b/src/shared/domain/file.ts
similarity index 58%
rename from src/shared/lib/file.ts
rename to src/shared/domain/file.ts
index 2c0c27b..c43203b 100644
--- a/src/shared/lib/file.ts
+++ b/src/shared/domain/file.ts
@@ -1,8 +1,7 @@
-import { statSync, existsSync, writeFileSync, readFileSync, lstatSync } from 'node:fs'
+import { existsSync, type GlobOptions, globSync, lstatSync, readFileSync, type Stats, writeFileSync } from 'node:fs'
import { EOL } from 'node:os'
-import { resolve, relative, parse } from 'node:path'
+import { parse, relative, resolve } from 'node:path'
import { cwd } from 'node:process'
-import { globSync } from 'node:fs'
export interface FileParsed {
isDir: boolean
@@ -22,6 +21,9 @@ export interface FileParsed {
export class File {
#absolutePath: string
#filePath: string
+ // Cache the result of `lstatSync` or `statSync` for performance
+ #stats?: Stats
+
readonly info: FileParsed
/**
@@ -32,6 +34,9 @@ export class File {
constructor(filePath: string, context: string = cwd()) {
this.#absolutePath = resolve(context, filePath)
this.#filePath = this.relativePath()
+ this.#stats = lstatSync(this.#absolutePath, {
+ throwIfNoEntry: false,
+ })
this.info = this.parse()
}
@@ -46,10 +51,17 @@ export class File {
return new File(path, context)
}
- static sync(pattern: string, opts?: { cwd?: string; absolute?: boolean; ignore?: string[] }) {
- const files = globSync(pattern, {
- ...opts,
- }).map((file) => resolve(opts?.cwd!, file))
+ // absolute?: boolean; ignore?: string[]
+ static sync(pattern: string, opts?: GlobOptions) {
+ const context = typeof opts?.cwd === 'string' ? opts.cwd : cwd()
+ // Glob plain paths and resolve them against the search cwd: Bun's fs.glob
+ // does not support the withFileTypes option
+ const files = (
+ globSync(pattern, {
+ ...opts,
+ withFileTypes: false,
+ }) as string[]
+ ).map((path) => resolve(context, path))
return files
}
@@ -63,26 +75,49 @@ export class File {
return existsSync(file)
}
+ /**
+ * Format a size value into a human-readable string with appropriate suffix (T, B, M, k)
+ *
+ * @param {number | null | undefined} size - The size value to format (e.g., file size in bytes)
+ * @return {string} Human-readable size string with suffix or 'N/A' for null/undefined
+ * @example
+ * File.compact(1500000) // Returns "1.5M"
+ * File.compact(2500) // Returns "2.5k"
+ * File.compact(null) // Returns "N/A"
+ */
+ static sizeCompact(size: number | null | undefined): string {
+ if (size === null || size === undefined) return 'N/A'
+
+ if (size >= 1e12) return `${(size / 1e12).toFixed(2).replace(/\.00$/, '')}T`
+ if (size >= 1e9) return `${(size / 1e9).toFixed(2).replace(/\.00$/, '')}B`
+ if (size >= 1e6) return `${(size / 1e6).toFixed(2).replace(/\.00$/, '')}M`
+ if (size >= 1e3) return `${(size / 1e3).toFixed(2).replace(/\.00$/, '')}k`
+
+ return size.toString()
+ }
+
/**
* Determine if the file is a directory.
*/
isDirectory() {
- try {
- return lstatSync(this.#absolutePath).isDirectory()
- } catch (err) {
- return false
- }
+ // try {
+ // return lstatSync(this.#absolutePath).isDirectory()
+ // } catch (err) {
+ // return false
+ // }
+ return this.#stats ? this.#stats.isDirectory() : false
}
/**
* Determine if the path is a file, and not a directory.
*/
isFile() {
- try {
- return statSync(this.#absolutePath).isFile()
- } catch (err) {
- return false
- }
+ // try {
+ // return statSync(this.#absolutePath).isFile()
+ // } catch (err) {
+ // return false
+ // }
+ return this.#stats ? this.#stats.isFile() : false
}
/**
@@ -104,6 +139,7 @@ export class File {
const isFile = this.isFile()
const path = this.#filePath
const absolutePath = this.#absolutePath
+
const info = {
isDir,
isFile,
diff --git a/src/shared/domain/formatBytes.ts b/src/shared/domain/formatBytes.ts
new file mode 100644
index 0000000..b9a319f
--- /dev/null
+++ b/src/shared/domain/formatBytes.ts
@@ -0,0 +1,22 @@
+const UNITS = [
+ 'B',
+ 'KB',
+ 'MB',
+ 'GB',
+] as const
+
+export const formatBytes = (bytes: number) => {
+ let value = bytes
+ let unit = 0
+ while (value >= 1024 && unit < UNITS.length - 1) {
+ value /= 1024
+ unit += 1
+ }
+ return `${unit === 0 ? value : value.toFixed(1)} ${UNITS[unit]}`
+}
+
+export const formatSizeDelta = (bytesIn: number, bytesOut: number) => {
+ const percent = bytesIn > 0 ? Math.round((1 - bytesOut / bytesIn) * 100) : 0
+ const change = percent >= 0 ? `โ${percent}%` : `+${-percent}%`
+ return `${formatBytes(bytesIn)} โ ${formatBytes(bytesOut)} (${change})`
+}
diff --git a/src/shared/domain/quality-presets.ts b/src/shared/domain/quality-presets.ts
new file mode 100644
index 0000000..f15f6ef
--- /dev/null
+++ b/src/shared/domain/quality-presets.ts
@@ -0,0 +1,41 @@
+export interface QualityPreset {
+ jpeg: number
+ png: [
+ number,
+ number,
+ ]
+ webp: number
+ zopfliIterations: number
+}
+
+export type Quality = 'high' | 'medium' | 'low'
+
+export const QUALITY_PRESETS: Record = {
+ high: {
+ jpeg: 90,
+ png: [
+ 0.7,
+ 0.9,
+ ],
+ webp: 85,
+ zopfliIterations: 15,
+ },
+ medium: {
+ jpeg: 80,
+ png: [
+ 0.65,
+ 0.85,
+ ],
+ webp: 80,
+ zopfliIterations: 8,
+ },
+ low: {
+ jpeg: 70,
+ png: [
+ 0.5,
+ 0.7,
+ ],
+ webp: 75,
+ zopfliIterations: 5,
+ },
+}
diff --git a/src/shared/domain/runWorker.ts b/src/shared/domain/runWorker.ts
new file mode 100644
index 0000000..13c477e
--- /dev/null
+++ b/src/shared/domain/runWorker.ts
@@ -0,0 +1,47 @@
+import type { URL } from 'node:url'
+import { Worker } from 'node:worker_threads'
+
+import { error } from '#/src/shared/infrastructure/logger.js'
+
+export interface WorkerResult {
+ processed: number
+ endTime: number
+ bytesIn?: number
+ bytesOut?: number
+}
+
+export const summarizeWorkerResults = (results: PromiseSettledResult[]) => {
+ const fulfilled = results.filter((r): r is PromiseFulfilledResult => r.status === 'fulfilled')
+ return {
+ processed: fulfilled.reduce((sum, r) => sum + r.value.processed, 0),
+ time: fulfilled.reduce((max, r) => Math.max(max, r.value.endTime), 0),
+ bytesIn: fulfilled.reduce((sum, r) => sum + (r.value.bytesIn ?? 0), 0),
+ bytesOut: fulfilled.reduce((sum, r) => sum + (r.value.bytesOut ?? 0), 0),
+ }
+}
+
+export const runWorker = (workerData: T, filename: URL) =>
+ new Promise((resolve, reject) => {
+ let settled = false
+ const worker = new Worker(filename, {
+ workerData,
+ })
+ worker
+ .on('message', (data: WorkerResult) => {
+ settled = true
+ resolve(data)
+ })
+ .on('error', (err) => {
+ settled = true
+ error(err)
+ reject(err)
+ })
+ .on('exit', (code) => {
+ // A worker that dies before posting a result must settle the promise,
+ // even with exit code 0, or the CLI hangs waiting on it forever
+ if (settled) return
+ const message = `Worker stopped with exit code ${code} before posting a result`
+ error(message)
+ reject(new Error(message))
+ })
+ })
diff --git a/src/shared/domain/shell.ts b/src/shared/domain/shell.ts
new file mode 100644
index 0000000..199efe1
--- /dev/null
+++ b/src/shared/domain/shell.ts
@@ -0,0 +1,72 @@
+import { type SpawnSyncReturns, spawnSync } from 'node:child_process'
+
+const validateCommand = (command: SpawnSyncReturns, errorMessage: string) => {
+ if (command.error || command.status !== 0) {
+ return errorMessage
+ }
+
+ const output = command.stdout.toString().trim()
+ if (!output) {
+ return errorMessage
+ }
+
+ // Extract first non-empty line containing version info
+ const lines = output.split('\n').filter((line) => line.trim().length > 0)
+ return lines[0] || errorMessage
+}
+
+const messages = {
+ magick: '๐ฝ Download here ๐ https://www.imagemagick.org/script/download.php',
+ gm: '๐ฝ Download here ๐ http://www.graphicsmagick.org/download.html',
+}
+
+class Shell {
+ static exists(command: string, args: readonly string[] = []) {
+ try {
+ const result = spawnSync(command, args, {
+ timeout: 5000,
+ })
+ return !result.error
+ } catch {
+ return false
+ }
+ }
+
+ static get imageMagick() {
+ const command = 'magick'
+ try {
+ const result = spawnSync(
+ command,
+ [
+ '-version',
+ ],
+ {
+ timeout: 5000,
+ },
+ )
+ return validateCommand(result, messages[command])
+ } catch {
+ return messages[command]
+ }
+ }
+
+ static get graphicMagick() {
+ const command = 'gm'
+ try {
+ const result = spawnSync(
+ command,
+ [
+ '-version',
+ ],
+ {
+ timeout: 5000,
+ },
+ )
+ return validateCommand(result, messages[command])
+ } catch {
+ return messages[command]
+ }
+ }
+}
+
+export { Shell }
diff --git a/src/shared/imagemin-svgo.ts b/src/shared/imagemin-svgo.ts
deleted file mode 100644
index 0a0bab5..0000000
--- a/src/shared/imagemin-svgo.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { Buffer } from 'node:buffer'
-import isSvg from 'is-svg'
-import { optimize, type Config } from 'svgo'
-
-const imageminSvgo = (options: Config) => async (buffer: unknown) => {
- options = {
- multipass: true,
- ...options,
- }
-
- if (Buffer.isBuffer(buffer)) {
- buffer = buffer.toString()
- }
-
- if (typeof buffer === 'string' && !isSvg(buffer)) {
- return buffer
- }
-
- const { data } = optimize(buffer as string, options)
- return Buffer.from(data)
-}
-
-export default imageminSvgo
diff --git a/src/shared/helpers/config.ts b/src/shared/infrastructure/config.ts
similarity index 89%
rename from src/shared/helpers/config.ts
rename to src/shared/infrastructure/config.ts
index f41b667..c1d653c 100644
--- a/src/shared/helpers/config.ts
+++ b/src/shared/infrastructure/config.ts
@@ -29,5 +29,5 @@ export default class config {
'title-require': true,
}
- static readonly CSS_SOURCEMAP_REGEX = /\/[\*]\#\s+(sourceMappingURL\=.*\.(css)\.map)\s+[\*]\//g
+ static readonly CSS_SOURCEMAP_REGEX = /\/[*]#\s+(sourceMappingURL=.*\.(css)\.map)\s+[*]\//g
}
diff --git a/src/shared/infrastructure/logger.ts b/src/shared/infrastructure/logger.ts
new file mode 100644
index 0000000..e9827b7
--- /dev/null
+++ b/src/shared/infrastructure/logger.ts
@@ -0,0 +1,32 @@
+import pino from 'pino'
+import { default as PinoPretty } from 'pino-pretty'
+
+export const MESSAGE_KEY = 'message'
+const level = 'trace'
+const stream = PinoPretty({
+ colorize: true,
+ ignore: 'pid,hostname',
+ levelFirst: true,
+ translateTime: 'yyyy-mm-dd HH:MM:ss',
+})
+
+export const streams = [
+ {
+ stream,
+ },
+]
+
+/**
+ * Read more on: https://getpino.io/#/
+ */
+export const logger = pino.pino(
+ {
+ level,
+ base: null,
+ },
+ pino.multistream(streams),
+)
+
+export const info = logger.info.bind(logger)
+export const warn = logger.warn.bind(logger)
+export const error = logger.error.bind(logger)
diff --git a/src/shared/infrastructure/notify.ts b/src/shared/infrastructure/notify.ts
new file mode 100644
index 0000000..e5f7e74
--- /dev/null
+++ b/src/shared/infrastructure/notify.ts
@@ -0,0 +1,63 @@
+// import NodeNotifier from 'node-notifier'
+// import { File } from './file.js'
+
+// const { notify } = NodeNotifier
+// const __dirname = new URL('.', import.meta.url).pathname
+// const BASE_ICON_PATH = '../../../assets/icons'
+// const iconFinder = (icon: string) =>
+// File.find(`${BASE_ICON_PATH}/${icon}`, __dirname).info.absolutePath
+
+// const messages = {
+// info: {
+// icon: iconFinder('info.jpg'),
+// fallback: 'โน',
+// },
+// done: {
+// icon: iconFinder('done.jpg'),
+// fallback: 'โ
',
+// },
+// fail: {
+// icon: iconFinder('fail.jpg'),
+// fallback: 'โ',
+// },
+// }
+
+// const timeout = 0
+
+// export class Notify {
+// static info(title = 'โน Default info title ๐', message = 'Default message ๐ฌ') {
+// setTimeout(() => {
+// notify({
+// title,
+// message,
+// icon: messages.info.icon || messages.info.fallback,
+// sound: true,
+// wait: false,
+// })
+// }, timeout)
+// }
+
+// static done(title = 'โ
Default done title ๐', message = 'Default message ๐ฌ') {
+// setTimeout(() => {
+// notify({
+// title,
+// message,
+// icon: messages.done.icon || messages.done.fallback,
+// sound: true,
+// wait: false,
+// })
+// }, timeout)
+// }
+
+// static fail(title = 'โ Default error title ๐', message = 'Default message ๐ฌ') {
+// setTimeout(() => {
+// notify({
+// title,
+// message,
+// icon: messages.fail.icon || messages.fail.fallback,
+// sound: true,
+// wait: false,
+// })
+// }, timeout)
+// }
+// }
diff --git a/src/shared/isConstructor.ts b/src/shared/isConstructor.ts
deleted file mode 100644
index 8f7e909..0000000
--- a/src/shared/isConstructor.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import type { Class } from 'type-fest'
-import { isFunction } from './isFunction.js'
-
-export const isConstructor = (value: unknown): value is Class =>
- isFunction(value) &&
- !!value?.name &&
- !!value?.prototype &&
- value?.prototype?.constructor === value
diff --git a/src/shared/isFunction.ts b/src/shared/isFunction.ts
deleted file mode 100644
index a49bc82..0000000
--- a/src/shared/isFunction.ts
+++ /dev/null
@@ -1 +0,0 @@
-export const isFunction = (value: unknown): value is () => unknown => typeof value === 'function'
diff --git a/src/shared/lib/notify.ts b/src/shared/lib/notify.ts
deleted file mode 100644
index e2d69ed..0000000
--- a/src/shared/lib/notify.ts
+++ /dev/null
@@ -1,63 +0,0 @@
-import NodeNotifier from 'node-notifier'
-import { File } from './file.js'
-
-const { notify } = NodeNotifier
-const __dirname = new URL('.', import.meta.url).pathname
-const BASE_ICON_PATH = '../../../assets/icons'
-const iconFinder = (icon: string) =>
- File.find(`${BASE_ICON_PATH}/${icon}`, __dirname).info.absolutePath
-
-const messages = {
- info: {
- icon: iconFinder('info.jpg'),
- fallback: 'โน',
- },
- done: {
- icon: iconFinder('done.jpg'),
- fallback: 'โ
',
- },
- fail: {
- icon: iconFinder('fail.jpg'),
- fallback: 'โ',
- },
-}
-
-const timeout = 0
-
-export class Notify {
- static info(title = 'โน Default info title ๐', message = 'Default message ๐ฌ') {
- setTimeout(() => {
- notify({
- title,
- message,
- icon: messages.info.icon || messages.info.fallback,
- sound: true,
- wait: false,
- })
- }, timeout)
- }
-
- static done(title = 'โ
Default done title ๐', message = 'Default message ๐ฌ') {
- setTimeout(() => {
- notify({
- title,
- message,
- icon: messages.done.icon || messages.done.fallback,
- sound: true,
- wait: false,
- })
- }, timeout)
- }
-
- static fail(title = 'โ Default error title ๐', message = 'Default message ๐ฌ') {
- setTimeout(() => {
- notify({
- title,
- message,
- icon: messages.fail.icon || messages.fail.fallback,
- sound: true,
- wait: false,
- })
- }, timeout)
- }
-}
diff --git a/src/shared/lib/shell.ts b/src/shared/lib/shell.ts
deleted file mode 100644
index c1edaa6..0000000
--- a/src/shared/lib/shell.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-import { spawnSync, type SpawnSyncReturns } from 'node:child_process'
-
-const validateCommand = (command: SpawnSyncReturns, errorMessage: string) => {
- return !command.error
- ? command.stdout
- .toString()
- .split('\n')
- .filter((data) => data.length > 0)
- .shift() || ''
- : errorMessage
-}
-
-const messages = {
- magick: '๐ฝ Download here ๐ https://www.imagemagick.org/script/download.php',
- gm: '๐ฝ Download here ๐ http://www.graphicsmagick.org/download.html',
-}
-
-class Shell {
- static get imageMagick() {
- const command = 'magick'
- let response = ''
- try {
- const magick = spawnSync(command, ['-version'])
- response = validateCommand(magick, messages[command])
- } catch {
- response = messages[command]
- }
-
- return response
- }
-
- static get graphicMagick() {
- const command = 'gm'
- let response = ''
- try {
- const gm = spawnSync(command, ['-version'])
- response = validateCommand(gm, messages[command])
- } catch {
- response = messages[command]
- }
- return response
- }
-}
-
-export default Shell
diff --git a/src/shared/readModulesRecursively.ts b/src/shared/readModulesRecursively.ts
deleted file mode 100644
index 451069d..0000000
--- a/src/shared/readModulesRecursively.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import type { Class } from 'type-fest'
-import { opendir } from 'node:fs/promises'
-
-// Inspired: https://github.com/L2jLiga/fastify-decorators/blob/v4/lib/bootstrap/bootstrap.ts
-export async function* readModulesRecursively(
- parentUrl: URL,
- mask: RegExp,
-): AsyncIterable>> {
- for await (const dirent of await opendir(parentUrl)) {
- const fullFilePath = new URL(dirent.name, parentUrl + '/')
- if (dirent.isDirectory()) {
- yield* readModulesRecursively(fullFilePath, mask)
- } else if (mask.test(dirent.name)) {
- yield import(fullFilePath.toString()).then((m) => {
- return m
- })
- }
- }
-}
diff --git a/src/shared/runWorker.ts b/src/shared/runWorker.ts
deleted file mode 100644
index ebfecfd..0000000
--- a/src/shared/runWorker.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { type URL } from 'node:url'
-import { Worker } from 'node:worker_threads'
-
-export const runWorker = (workerData: any, filename: URL) =>
- new Promise((resolve: (value?: void) => void, reject) => {
- const worker = new Worker(filename, {
- workerData,
- })
- worker
- .on('message', (message) => {
- console.log(message)
- resolve()
- })
- .on('error', (err) => {
- console.error('error', err)
- reject(err)
- })
- .on('exit', (code) => {
- if (code !== 0) {
- const message = `Worker stopped with exit code ${code}`
- console.error(message)
- reject(new Error(message))
- }
- })
- })
diff --git a/src/shared/yargs-command.ts b/src/shared/yargs-command.ts
deleted file mode 100644
index 6c7ab20..0000000
--- a/src/shared/yargs-command.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import type { ArgumentsCamelCase, InferredOptionTypes, Options } from 'yargs'
-
-export abstract class YargsCommand {
- abstract readonly command: string
- abstract readonly description: string
- abstract readonly builder: Record
-
- protected options>(options: O): O {
- return options
- }
-
- abstract handler(args: ArgumentsCamelCase>): void
-}
diff --git a/tests/commands/image-minifier.test.ts b/tests/commands/image-minifier.test.ts
new file mode 100644
index 0000000..f507e9f
--- /dev/null
+++ b/tests/commands/image-minifier.test.ts
@@ -0,0 +1,89 @@
+import assert from 'node:assert/strict'
+import { existsSync, lstatSync, mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs'
+import { tmpdir } from 'node:os'
+import { dirname, join } from 'node:path'
+import { after, before, describe, it } from 'node:test'
+import { URL } from 'node:url'
+import sharp from 'sharp'
+
+import { imageMinifier } from '#/src/commands/images/image-minifier.js'
+
+// Worker threads inherit execArgv, so the TS job file loads through the same
+// @swc-node/register hooks that run this test
+const jobFile = new URL('../../src/commands/images/imagemin-minifier.job.ts', import.meta.url)
+
+// Multiple images per directory and multiple nesting levels: guards against
+// destination paths resolving to a directory instead of a complete file path
+const images = [
+ 'olimpicos/berlin-logo.png',
+ 'olimpicos/maraton-intro.jpg',
+ 'prueba/daft-punk.jpeg',
+ 'prueba/nodejs.png',
+ 'prueba/spinner.gif',
+ 'maps/nested/plano.jpg',
+ 'svg/logo.svg',
+]
+
+const svgStub =
+ ''
+
+async function createImage(path: string) {
+ const image = sharp({
+ create: {
+ width: 8,
+ height: 8,
+ channels: 3,
+ background: {
+ r: 255,
+ g: 0,
+ b: 0,
+ },
+ },
+ })
+ if (path.endsWith('.png')) return image.png().toFile(path)
+ if (path.endsWith('.gif')) return image.gif().toFile(path)
+ return image.jpeg().toFile(path)
+}
+
+describe('imageMinifier', () => {
+ const root = mkdtempSync(join(tmpdir(), 'dvx-img-minify-'))
+ const source = join(root, 'src')
+ const distribution = join(root, 'dist')
+
+ before(async () => {
+ for (const image of images) {
+ const path = join(source, image)
+ mkdirSync(dirname(path), {
+ recursive: true,
+ })
+ if (image.endsWith('.svg')) {
+ writeFileSync(path, svgStub)
+ continue
+ }
+ await createImage(path)
+ }
+ })
+ after(() => {
+ rmSync(root, {
+ recursive: true,
+ force: true,
+ })
+ })
+
+ it('writes every nested source image to a complete destination file path', async () => {
+ await imageMinifier(
+ {
+ source,
+ distribution,
+ command: 'img:minify',
+ },
+ jobFile,
+ )
+
+ for (const image of images) {
+ const destination = join(distribution, image)
+ assert.ok(existsSync(destination), `expected <${destination}> to exist`)
+ assert.ok(lstatSync(destination).isFile(), `expected <${destination}> to be a file, not a directory`)
+ }
+ })
+})
diff --git a/tests/lib/file.test.ts b/tests/lib/file.test.ts
index 81961e9..f314cad 100644
--- a/tests/lib/file.test.ts
+++ b/tests/lib/file.test.ts
@@ -1,55 +1,56 @@
import assert from 'node:assert/strict'
-import { afterEach, before, describe, it } from 'node:test'
-import { resolve, normalize } from 'node:path'
-import { cwd } from 'node:process'
import { mkdirSync } from 'node:fs'
-
-import { File } from '#@/src/shared/lib/file.js'
-import { emptyDirSync } from '#@/src/shared/emptyDirSync.js'
+import { normalize, resolve } from 'node:path'
+import { cwd } from 'node:process'
+import { afterEach, before, describe, it } from 'node:test'
+import { emptyDirSync } from '#/src/shared/domain/emptyDirSync.js'
+import { File } from '#/src/shared/domain/file.js'
const stubsDir = resolve(`${cwd()}/tests`, 'stubs')
describe('File', () => {
before(() => {
- mkdirSync(stubsDir, { recursive: true })
+ mkdirSync(stubsDir, {
+ recursive: true,
+ })
})
afterEach(() => {
emptyDirSync(stubsDir)
})
describe('Related to validations', () => {
- it('should returns if a file does not exists', () => {
+ it('should return if a file does not exist', () => {
const file = resolve(stubsDir, 'file.js')
assert.strictEqual(File.exists(file), false)
})
- it('should returns if a file exists', () => {
+ it('should return if a file exists', () => {
const file = resolve(stubsDir, 'file.js')
new File(file).write('foobar')
assert.strictEqual(File.exists(file), true)
})
- it('should returns if the current file path is a directory', () => {
+ it('should return if the current file path is a directory', () => {
const result = new File(resolve(stubsDir)).isDirectory()
assert.strictEqual(result, true)
})
- it('should returns if the current file path is not a directory', () => {
+ it('should return if the current file path is not a directory', () => {
const result = new File('path/to/file.js').isDirectory()
assert.strictEqual(result, false)
})
- it('should returns if a the curren file path is a file', () => {
+ it('should return if the current file path is a file', () => {
const file = resolve(stubsDir, 'file.js')
new File(file).write('foobar')
const result: boolean = new File(file).isFile()
assert.strictEqual(result, true)
})
- it('should returns if a the curren file path is not a file', () => {
+ it('should return if the current file path is not a file', () => {
assert.strictEqual(new File('path/to').isFile(), false)
})
})
describe('Related to path', () => {
- it('should returns the absolute path of the file', () => {
+ it('should return the absolute path of the file', () => {
const file = resolve(stubsDir, 'file.js')
assert.strictEqual(file, new File(file).path())
})
- it('should returns the relative path to the file', () => {
+ it('should return the relative path to the file', () => {
const filePath = 'path/to/file.js'
const newFilePath = '../path/to/file.js'
const file = new File(filePath)
@@ -57,7 +58,7 @@ describe('File', () => {
assert.strictEqual(normalize(filePath), file.relativePath())
assert.strictEqual(normalize(newFilePath), newFile.relativePath())
})
- it('should knows the base directory path for the file', () => {
+ it('should know the base directory path for the file', () => {
const file = new File('path/to/file.js')
const result = file.base()
assert.strictEqual(result, resolve('path/to'))
diff --git a/tsconfig.json b/tsconfig.json
index 6af9c03..65f2511 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -14,9 +14,8 @@
/* Modules */
"module": "NodeNext",
"moduleResolution": "NodeNext",
- "baseUrl": "./",
"paths": {
- "#@/*": ["./*"]
+ "#/*": ["./*"]
},
"typeRoots": ["./node_modules/@types"],
"types": ["node"],