diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index bf621fa4a7b3..4aea8cabf574 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -1,6 +1,6 @@ # DevExtreme Monorepo -DevExtreme is an enterprise-ready suite of UI components for Angular, React, Vue, and jQuery, distributed as a pnpm/Nx monorepo containing the core library, framework wrappers, themes, themebuilder, and test suites. Stack: TypeScript, JavaScript, SCSS, pnpm + Nx, Node, Gulp + custom Nx executors (`devextreme-nx-infra-plugin`). The .NET SDK is required for `devextreme-internal-tools` code generation. +DevExtreme is an enterprise-ready suite of UI components for Angular, React, Vue, and jQuery, distributed as a pnpm/Nx monorepo containing the core library, framework wrappers, themes, themebuilder, and test suites. Stack: TypeScript, JavaScript, SCSS, pnpm + Nx, Node, custom Nx executors (`devextreme-nx-infra-plugin`). The .NET SDK is required for `devextreme-internal-tools` code generation. **DevExtreme** is an enterprise-ready suite of powerful UI components for Angular, React, Vue, and jQuery. This is a large-scale monorepo containing the core library, framework wrappers, demos, and extensive test suites. @@ -61,7 +61,7 @@ pnpm install --frozen-lockfile data/ # Data layer renovation/ # Renovation components (new architecture) testing/ # QUnit tests - build/ # Build scripts and Gulp tasks + build/ # Build config consumed by Nx executors (transpile config, module metadata, templates) artifacts/ # Build output (generated) devextreme-angular/ # Angular wrapper devextreme-react/ # React wrapper @@ -71,7 +71,7 @@ pnpm install --frozen-lockfile devextreme-metadata/ # Metadata generation for wrappers devextreme-monorepo-tools/ # Internal tooling nx-infra-plugin/ # Custom Nx executors for build automation - workflows/ # Cross-package NX build orchestration (all:build-dev, all:build-testing) + workflows/ # Cross-package NX build orchestration (all:build, all:build-dev, all:build-testing) testcafe-models/ # TestCafe page object models /apps/ @@ -87,7 +87,7 @@ pnpm install --frozen-lockfile bundlers/ # Bundler compatibility tests compilation-cases/ # TypeScript compilation tests -/tools/scripts/ # Build and utility scripts +/tools/scripts/ # Leaf helpers invoked by workflows targets (inject-descriptions, versioning, etc.) ``` ### Configuration Files @@ -147,6 +147,10 @@ pnpm run all:build # full production build pnpm nx build:dev devextreme # single package, dev mode pnpm nx build devextreme -c=testing # CI testing configuration pnpm nx build:transpile devextreme # transpile only (babel-transform / build-typescript) +pnpm nx build:transpile:watch devextreme # transpile in watch mode (incremental JS + TS rebuild) +pnpm nx transpile:tests devextreme # transpile testing/**/*.js in place +pnpm nx dev devextreme # build:dev, then start all dev watches +pnpm nx dev-watch devextreme # start all dev watches in parallel, skipping the initial build pnpm nx bundle:debug devextreme # debug bundle (Webpack via nx-infra-plugin) pnpm nx bundle:prod devextreme # production bundle pnpm nx build:localization devextreme # localization files only @@ -185,19 +189,19 @@ packages/ devextreme-metadata/ # metadata for wrapper generation devextreme-monorepo-tools/ # internal tooling nx-infra-plugin/ # custom Nx executors - workflows/ # cross-package Nx orchestration (all:build-dev, all:build-testing) + workflows/ # cross-package Nx orchestration (all:build, all:build-dev, all:build-testing) testcafe-models/ # TestCafe page object models apps/ # demos and per-framework playgrounds (+ react-storybook) e2e/testcafe-devextreme/ # TestCafe e2e suite e2e/{wrappers,bundlers,compilation-cases}/ # integration / bundler / TS compilation tests -tools/scripts/ # build and utility scripts +tools/scripts/ # leaf helpers for workflows targets (not orchestration) ``` For the full executor catalogue, conventions, and refactoring guidance, see @packages/nx-infra-plugin/AGENTS.md. File-specific coding rules live under @.github/instructions/. ## Build Pipeline -clean (`devextreme-nx-infra-plugin:clean` preserving CSS and npm metadata) → localization → component generation (Renovation) → transpile (`babel-transform` for JS, `build-typescript` for TS) → bundle (Webpack via `devextreme-nx-infra-plugin:bundle`, debug + prod targets) → TypeScript declarations → SCSS compile (`devextreme-scss`) → npm package preparation. Task orchestration goes through Nx; cross-package builds (`all:build-dev`, `all:build`) live in the `workflows` package. The `gulpfile.js` clean task is a thin delegate to `pnpm nx clean:artifacts devextreme`. Pre-commit hook runs `lint-staged` (stylelint + eslint --quiet). +clean (`devextreme-nx-infra-plugin:clean` preserving CSS and npm metadata) → localization → component generation (Renovation) → transpile (`babel-transform` for JS, `build-typescript` for TS) → bundle (Webpack via `devextreme-nx-infra-plugin:bundle`, debug + prod targets) → TypeScript declarations → SCSS compile (`devextreme-scss`) → npm package preparation. Task orchestration goes through Nx; cross-package builds (`all:build-dev`, `all:build`) live in the `workflows` package. There is no gulpfile — `clean` runs directly via `pnpm nx clean:artifacts devextreme`. Pre-commit hook runs `lint-staged` (stylelint + eslint --quiet). The developer watch workflow (`pnpm run dev` / `dev:watch`) is native composite Nx targets (`dev`, `dev-watch`) — see the "Former gulp tasks" table in @packages/nx-infra-plugin/AGENTS.md. ## Conventions diff --git a/.github/renovate.json b/.github/renovate.json index a2d0cea00d47..df3d3d21ff4a 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -123,37 +123,6 @@ "matchPackageNames": [ "*" ] - }, - { - "matchPackageNames": [ - "gulp-sass", - "gulp-babel", - "gulp-typescript", - "gulp-clean", - "gulp-minify", - "gulp-replace", - "gulp-sourcemaps", - "gulp-cache", - "gulp-plumber", - "gulp-shell", - "gulp-cached", - "gulp-concat", - "gulp-each", - "gulp-eol", - "gulp-file", - "gulp-flatmap", - "gulp-footer", - "gulp-header", - "gulp-if", - "gulp-jsbeautifier", - "gulp-multi-process", - "gulp-notify", - "gulp-rename", - "gulp-tap", - "gulp-uglify-es", - "gulp-watch" - ], - "enabled": false } ], "lockFileMaintenance": { diff --git a/.github/workflows/packages_publishing.yml b/.github/workflows/packages_publishing.yml index e5a7b4ef6822..a07415e6393e 100644 --- a/.github/workflows/packages_publishing.yml +++ b/.github/workflows/packages_publishing.yml @@ -48,9 +48,7 @@ jobs: run: pnpm run all:set-timestamp-version - name: Build npm packages - env: - BUILD_INTERNAL_PACKAGE: true - run: pnpm run all:build + run: pnpm run all:build:internal - name: Set GitHub Packages auth run: pnpm set //npm.pkg.github.com/:_authToken='${NODE_AUTH_TOKEN}' diff --git a/.github/workflows/renovation.yml b/.github/workflows/renovation.yml index c96e4d586876..f177c1d50ab2 100644 --- a/.github/workflows/renovation.yml +++ b/.github/workflows/renovation.yml @@ -94,7 +94,7 @@ jobs: - name: Build localization working-directory: ./packages/devextreme - run: pnpm exec gulp localization + run: pnpm exec nx build:localization devextreme - name: Check test types run: pnpm exec nx check-types devextreme diff --git a/.vscode/launch.json b/.vscode/launch.json index 26a46ab89d16..37f99bbeedd5 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -19,21 +19,6 @@ "sourceMaps": true, "cwd": "${workspaceRoot}" }, - { - "type": "node", - "request": "launch", - "name": "Gulp Tests watch", - "program": "${workspaceRoot}/node_modules/gulp/bin/gulp.js", - "args": [ - "build-renovation-testing:watch", - "--playgroundName", - ], - "runtimeArgs": [ - "--harmony" - ], - "sourceMaps": true, - "cwd": "${workspaceRoot}" - }, { "type": "node", "request": "launch", diff --git a/CLAUDE.md b/CLAUDE.md index 64c800141e1d..d7236e7bb750 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -18,7 +18,7 @@ Always use `--frozen-lockfile`. CI enforces it. ## Build -The `dev` script is run manually in WebStorm (not by agents). It runs a Gulp watch build with hot reload and starts the QUnit test server on port 20060: +The `dev` script is run manually in WebStorm (not by agents). It runs an Nx watch build with hot reload and starts the QUnit test server on port 20060: ```bash # From packages/devextreme — run manually, not via agent diff --git a/e2e/bundlers/generate_entry_files.js b/e2e/bundlers/generate_entry_files.js index e19256fd7b46..04a0ba61ca31 100644 --- a/e2e/bundlers/generate_entry_files.js +++ b/e2e/bundlers/generate_entry_files.js @@ -1,7 +1,7 @@ const fs = require('fs'); const path = require('path'); -const modulesMetadataFilePath = path.join(__dirname, '../../packages/devextreme/build/gulp/modules_metadata.json'); +const modulesMetadataFilePath = path.join(__dirname, '../../packages/devextreme/build/modules_metadata.json'); const filePaths = { cjs: path.join(__dirname, './entry/modules_cjs.js'), diff --git a/nx.json b/nx.json index cd96b8337ed7..7a944d5bd316 100644 --- a/nx.json +++ b/nx.json @@ -15,8 +15,7 @@ ], "devextreme-build-config": [ "{projectRoot}/build/**/*", - "{projectRoot}/webpack.config.js", - "{projectRoot}/gulpfile.js" + "{projectRoot}/webpack.config.js" ] }, "targetDefaults": { diff --git a/package.json b/package.json index e9149f4128e5..583c51f2a9f6 100644 --- a/package.json +++ b/package.json @@ -17,10 +17,11 @@ "lint-staged": "lint-staged", "prepare": "husky install", "change-package-scope": "ts-node tools/scripts/change-package-scope.ts", - "make-artifacts-package": "ts-node tools/scripts/make-artifacts-package.ts", - "all:set-timestamp-version": "ts-node tools/scripts/set-timestamp-version.ts", - "all:update-version": "ts-node tools/scripts/update-version.ts", - "all:build": "ts-node tools/scripts/build-all.ts", + "make-artifacts-package": "nx make-artifacts-package workflows", + "all:set-timestamp-version": "nx set-timestamp-version workflows", + "all:update-version": "nx run workflows:update-version --", + "all:build": "nx all:build workflows", + "all:build:internal": "nx all:build workflows -c internal", "all:build-dev": "nx all:build-dev workflows", "all:pack-and-copy": "nx run-many -t pack-and-copy", "demos:prepare": "nx run devextreme-demos:prepare-js", @@ -36,6 +37,7 @@ "@types/node": "catalog:tools", "@types/shelljs": "0.8.15", "axe-core": "catalog:", + "chokidar": "5.0.0", "@types/yargs": "17.0.35", "devextreme-internal-tools": "catalog:tools", "devextreme-metadata": "workspace:*", diff --git a/packages/devextreme-monorepo-tools/project.json b/packages/devextreme-monorepo-tools/project.json index 88a90dfda6e3..ee332b162703 100644 --- a/packages/devextreme-monorepo-tools/project.json +++ b/packages/devextreme-monorepo-tools/project.json @@ -18,7 +18,11 @@ }, "pack-and-copy": { "dependsOn": ["build"], - "command": "ts-node tools/scripts/pack devextreme-monorepo-tools" + "executor": "devextreme-nx-infra-plugin:pack-npm", + "options": { + "packageDir": "./npm", + "destination": "../../artifacts/npm" + } }, "test": { "executor": "@nx/jest:jest", diff --git a/packages/devextreme-scss/package.json b/packages/devextreme-scss/package.json index d09f699b46b2..6705d8951693 100644 --- a/packages/devextreme-scss/package.json +++ b/packages/devextreme-scss/package.json @@ -4,7 +4,6 @@ "devDependencies": { "@stylistic/stylelint-plugin": "3.1.3", "autoprefixer": "10.5.0", - "chokidar": "5.0.0", "clean-css": "5.3.3", "opentype.js": "1.3.4", "postcss": "^8.5.23", diff --git a/packages/devextreme-themebuilder/src/metadata/generate.ts b/packages/devextreme-themebuilder/src/metadata/generate.ts index 1d34d99c13f4..6f91eb695f8c 100644 --- a/packages/devextreme-themebuilder/src/metadata/generate.ts +++ b/packages/devextreme-themebuilder/src/metadata/generate.ts @@ -2,9 +2,8 @@ import * as path from 'path'; import MetadataCollector from './collector'; import DependencyCollector from './dependency-collector'; -import { version } from '../../../devextreme/build/gulp/context'; -import { resolveDataUri } from '../../../devextreme/build/gulp/gulp-data-uri'; -import { browserslist } from '../../../devextreme/package.json'; +import { resolveDataUri } from './resolve-data-uri'; +import { browserslist, version } from '../../../devextreme/package.json'; const stylesDirectory = path.resolve(__dirname, '../../../devextreme-scss/scss'); const stylesDestinationDirectory = './src/data/scss'; diff --git a/packages/devextreme-themebuilder/src/metadata/resolve-data-uri.ts b/packages/devextreme-themebuilder/src/metadata/resolve-data-uri.ts new file mode 100644 index 000000000000..1add50214047 --- /dev/null +++ b/packages/devextreme-themebuilder/src/metadata/resolve-data-uri.ts @@ -0,0 +1,25 @@ +import * as path from 'path'; +import * as fs from 'fs'; + +const dataUriRegex = /data-uri\((?:'(image\/svg\+xml;charset=UTF-8)',\s)?['"]?([^)'"]+)['"]?\)/g; + +const svg = (buffer: Buffer, svgEncoding?: string): string => { + const encoding = svgEncoding || 'image/svg+xml;charset=UTF-8'; + const encodedSvg = encodeURIComponent(buffer.toString()); + + return `"data:${encoding},${encodedSvg}"`; +}; + +const img = (buffer: Buffer, ext: string): string => `"data:image/${ext};base64,${buffer.toString('base64')}"`; + +const handler = (_: string, svgEncoding: string, fileName: string): string => { + const relativePath = path.join(__dirname, '..', '..', '..', 'devextreme-scss', fileName); + const filePath = path.resolve(relativePath); + const ext = filePath.split('.').pop() as string; + const data = fs.readFileSync(filePath); + const buffer = Buffer.from(data); + const escapedString = ext === 'svg' ? svg(buffer, svgEncoding) : img(buffer, ext); + return `url(${escapedString})`; +}; + +export const resolveDataUri = (content: string): string => content.replace(dataUriRegex, handler); diff --git a/packages/devextreme/build/gulp/bundler-config.js b/packages/devextreme/build/gulp/bundler-config.js deleted file mode 100644 index 22d073510759..000000000000 --- a/packages/devextreme/build/gulp/bundler-config.js +++ /dev/null @@ -1,45 +0,0 @@ -'use strict'; - -const gulp = require('gulp'); -const replace = require('gulp-replace'); -const concat = require('gulp-concat'); -const rename = require('gulp-rename'); -const header = require('gulp-header'); -const eol = require('gulp-eol'); - -const context = require('./context.js'); -const headerPipes = require('./header-pipes.js'); -const { packageDir } = require('./utils'); - -const BUNDLE_CONFIG_SOURCES = [ - 'build/bundle-templates/modules/parts/core.js', - 'build/bundle-templates/modules/parts/data.js', - 'build/bundle-templates/modules/parts/widgets-base.js', - 'build/bundle-templates/modules/parts/widgets-web.js', - 'build/bundle-templates/modules/parts/viz.js', - 'build/bundle-templates/modules/parts/aspnet.js' -]; - -gulp.task('bundler-config', function() { - return gulp.src(BUNDLE_CONFIG_SOURCES) - .pipe(replace(/[^]*BUNDLER_PARTS.*?$([^]*)^.*?BUNDLER_PARTS_END[^]*/gm, '$1')) - .pipe(concat('dx.custom.js')) - .pipe(header('/* Comment lines below for the widgets you don\'t require and run "devextreme-bundler" in this directory, then include dx.custom.js in your project */')) - .pipe(headerPipes.useStrict()) - .pipe(replace(/require *\( *["']..\/..\//g, 'require(\'')) - .pipe(replace(/^[ ]{4}/gm, '')) - .pipe(replace(/^[\n\r]{2,}/gm, '\n\n')) - .pipe(eol()) - .pipe(gulp.dest('build/bundle-templates')) - .pipe(rename('dx.custom.config.js')) - .pipe(replace(/require *\( *["']..\//g, 'require(\'devextreme/')) - .pipe(gulp.dest(`${context.RESULT_NPM_PATH}/${packageDir}/bundles`)); -}); - -gulp.task('bundler-config-watch', function() { - return gulp - .watch(BUNDLE_CONFIG_SOURCES, gulp.series('bundler-config')) - .on('ready', () => console.log( - 'bundler-config task is watching for changes...' - )); -}); diff --git a/packages/devextreme/build/gulp/context.js b/packages/devextreme/build/gulp/context.js deleted file mode 100644 index 43e65aa3f394..000000000000 --- a/packages/devextreme/build/gulp/context.js +++ /dev/null @@ -1,23 +0,0 @@ -'use strict'; - -// See tests in version-spec.js - -const argv = require('yargs') - .option('uglify', { type: 'boolean', default: false }) - .parseSync(); - -const version = require('../../package.json').version; - -module.exports = { - version, - uglify: argv.uglify, - RESULT_JS_PATH: 'artifacts/js', - RESULT_NPM_PATH: 'artifacts/npm', - TS_OUT_PATH: 'artifacts/dist_ts', - TRANSPILED_PATH: 'artifacts/transpiled', - TRANSPILED_PROD_RENOVATION_PATH: 'artifacts/transpiled-renovation-npm', - TRANSPILED_PROD_ESM_PATH: 'artifacts/transpiled-esm-npm', - SCSS_PACKAGE_PATH: '../devextreme-scss', - EULA_URL: 'https://js.devexpress.com/Licensing/', - REMOVE_NON_PRODUCTION_MODULE: argv.uglify, -}; diff --git a/packages/devextreme/build/gulp/env-variables.js b/packages/devextreme/build/gulp/env-variables.js deleted file mode 100644 index e8643f554504..000000000000 --- a/packages/devextreme/build/gulp/env-variables.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -function readFlag(variableName) { - return String(process.env[variableName]).toLowerCase() === 'true'; -} - -module.exports = { - TEST_CI: readFlag('DEVEXTREME_TEST_CI'), - BUILD_ESM_PACKAGE: readFlag('BUILD_ESM_PACKAGE') && !readFlag('DEVEXTREME_TEST_CI'), - BUILD_TESTCAFE: readFlag('BUILD_TESTCAFE'), - BUILD_INTERNAL_PACKAGE: readFlag('BUILD_INTERNAL_PACKAGE'), - BUILD_TEST_INTERNAL_PACKAGE: readFlag('BUILD_TEST_INTERNAL_PACKAGE') -}; diff --git a/packages/devextreme/build/gulp/gulp-data-uri.js b/packages/devextreme/build/gulp/gulp-data-uri.js deleted file mode 100644 index e02817352e62..000000000000 --- a/packages/devextreme/build/gulp/gulp-data-uri.js +++ /dev/null @@ -1,46 +0,0 @@ -'use strict'; - -const replace = require('gulp-replace'); -const path = require('path'); -const fs = require('fs'); -const sass = require('sass-embedded'); -const dataUriRegex = /data-uri\((?:'(image\/svg\+xml;charset=UTF-8)',\s)?['"]?([^)'"]+)['"]?\)/g; - -const svg = (buffer, svgEncoding) => { - const encoding = svgEncoding || 'image/svg+xml;charset=UTF-8'; - const svg = encodeURIComponent(buffer.toString()); - - return `"data:${encoding},${svg}"`; -}; - -const img = (buffer, ext) => { - return `"data:image/${ext};base64,${buffer.toString('base64')}"`; -}; - -const handler = (_, svgEncoding, fileName) => { - const relativePath = path.join(__dirname, '..', '..', '..', 'devextreme-scss', fileName); - const filePath = path.resolve(relativePath); - const ext = filePath.split('.').pop(); - const data = fs.readFileSync(filePath); - const buffer = Buffer.from(data); - const escapedString = ext === 'svg' ? svg(buffer, svgEncoding) : img(buffer, ext); - return `url(${escapedString})`; -}; - -const sassFunction = (args) => { - const getTextFromSass = (sassValue) => sassValue.assertString().text; - const argList = args[0].asList; - const hasEncoding = argList.size === 2; - const encoding = hasEncoding ? getTextFromSass(argList.get(0)) : null; - const url = getTextFromSass(argList.get(hasEncoding ? 1 : 0)); - - return new sass.SassString(handler(null, encoding, url), { quotes: false }); -}; - -module.exports = { - gulpPipe: () => replace(dataUriRegex, handler), - resolveDataUri: (content) => content.replace(dataUriRegex, handler), - sassFunctions: { - 'data-uri($args...)': sassFunction, - } -}; diff --git a/packages/devextreme/build/gulp/header-pipes.js b/packages/devextreme/build/gulp/header-pipes.js deleted file mode 100644 index 9b980a783e01..000000000000 --- a/packages/devextreme/build/gulp/header-pipes.js +++ /dev/null @@ -1,30 +0,0 @@ -'use strict'; - -const fs = require('fs'); -const lazyPipe = require('lazypipe'); -const header = require('gulp-header'); -const path = require('path'); - -const context = require('./context.js'); - -const licenseTemplate = fs.readFileSync(path.join(__dirname, 'license-header.txt'), 'utf8'); - -const useStrict = lazyPipe().pipe(function() { - return header('"use strict";\n\n'); -}); - -function makeLicensePipe(commentType) { - return lazyPipe().pipe(function() { - return header(licenseTemplate, { - commentType: commentType, - version: context.version, - eula: context.EULA_URL - }); - }); -} - -module.exports = { - useStrict: useStrict, - bangLicense: makeLicensePipe('!'), - starLicense: makeLicensePipe('*') -}; diff --git a/packages/devextreme/build/gulp/js-bundles.js b/packages/devextreme/build/gulp/js-bundles.js deleted file mode 100644 index a25e4119390b..000000000000 --- a/packages/devextreme/build/gulp/js-bundles.js +++ /dev/null @@ -1,97 +0,0 @@ -'use strict'; - -const gulp = require('gulp'); -const gulpIf = require('gulp-if'); -const lazyPipe = require('lazypipe'); -const named = require('vinyl-named'); -const notify = require('gulp-notify'); -const path = require('path'); -const plumber = require('gulp-plumber'); -const shell = require('gulp-shell'); -const webpack = require('webpack'); -const webpackStream = require('webpack-stream'); - -const ctx = require('./context.js'); -const headerPipes = require('./header-pipes.js'); -const webpackConfig = require('../../webpack.config.js'); -const env = require('./env-variables.js'); -const namedDebug = lazyPipe() - .pipe(named, (file) => path.basename(file.path, path.extname(file.path)) + '.debug'); - -const BUNDLES = [ - '/bundles/dx.ai-integration.js', - '/bundles/dx.all.js', - '/bundles/dx.web.js', - '/bundles/dx.viz.js' -]; - -const DEBUG_BUNDLES = BUNDLES.concat([ '/bundles/dx.custom.js' ]); - -const processBundles = (bundles, pathPrefix) => bundles.map((bundle) => pathPrefix + bundle); -const muteWebPack = () => undefined; -const getWebpackConfig = () => { - const plugins = []; - const isInternalBuild = env.BUILD_INTERNAL_PACKAGE || env.BUILD_TEST_INTERNAL_PACKAGE; - - if (isInternalBuild) { - plugins.push(new webpack.NormalModuleReplacementPlugin(/(.*)\/license_validation/, resource => { - resource.request = resource.request.replace('license_validation', 'license_validation_internal'); - })); - } - - return Object.assign(webpackConfig, { plugins }); -}; - -gulp.task('js-bundles-prod', shell.task( - ctx.uglify - ? 'pnpm nx run devextreme:bundle:prod -c production' - : 'pnpm nx run devextreme:bundle:prod' -)); - -function prepareDebugMeta(watch) { - const debugConfig = Object.assign({ watch }, getWebpackConfig()); - const bundlesPath = ctx.TRANSPILED_PROD_RENOVATION_PATH; - - const bundles = processBundles(DEBUG_BUNDLES, bundlesPath); - - debugConfig.output = Object.assign({}, webpackConfig.output); - debugConfig.output['pathinfo'] = true; - debugConfig.mode = watch ? 'development' : 'production'; - debugConfig.optimization.minimize = false; - - if(!ctx.uglify) { - debugConfig.devtool = 'eval-source-map'; - } - - return { debugConfig, bundles }; -} - -function createDebugBundlesStream(watch, displayName) { - const { debugConfig, bundles } = prepareDebugMeta(watch); - const destination = ctx.RESULT_JS_PATH; - - const task = () => gulp.src(bundles) - .pipe(namedDebug()) - .pipe(gulpIf(watch, plumber({ - errorHandler: notify.onError('Error: <%= error.message %>') - .bind() // bind call is necessary to prevent firing 'end' event in notify.onError implementation - }))) - .pipe(webpackStream(debugConfig, webpack, muteWebPack)) - .pipe(headerPipes.useStrict()) - .pipe(headerPipes.bangLicense()) - .pipe(gulp.dest(destination)); - - task.displayName = `${displayName}-worker`; - - return task; -} - -gulp.task('js-bundles-debug', shell.task( - ctx.uglify - ? 'pnpm nx run devextreme:bundle:debug -c production' - : 'pnpm nx run devextreme:bundle:debug' -)); - -gulp.task('js-bundles-watch', gulp.parallel( - createDebugBundlesStream(true, 'js-bundles-watch') -)); diff --git a/packages/devextreme/build/gulp/license-header.txt b/packages/devextreme/build/gulp/license-header.txt deleted file mode 100644 index 5a8fe2bd76cb..000000000000 --- a/packages/devextreme/build/gulp/license-header.txt +++ /dev/null @@ -1,8 +0,0 @@ -/*<%= commentType %> -* DevExtreme (<%= file.relative.replace(/\\/g, '/') %>) -* Version: <%= version %> -* Build date: <%= (new Date()).toDateString() %> -* -* Copyright (c) 2012 - <%= (new Date()).getFullYear() %> Developer Express Inc. ALL RIGHTS RESERVED -* Read about DevExtreme licensing here: <%= eula %> -*/ diff --git a/packages/devextreme/build/gulp/localization.js b/packages/devextreme/build/gulp/localization.js deleted file mode 100644 index ecf67b940fc5..000000000000 --- a/packages/devextreme/build/gulp/localization.js +++ /dev/null @@ -1,50 +0,0 @@ -'use strict'; - -const gulp = require('gulp'); -const path = require('path'); -const shell = require('gulp-shell'); -const through = require('through2'); -const fs = require('fs'); - -const DEFAULT_LOCALE = 'en'; -const DICTIONARY_SOURCE_FOLDER = 'js/localization/messages'; - -gulp.task('localization', shell.task('pnpm nx build:localization devextreme')); - -gulp.task('generate-community-locales', () => { - const defaultFile = fs.readFileSync(path.join(DICTIONARY_SOURCE_FOLDER, DEFAULT_LOCALE + '.json')).toString(); - const defaultDictionaryKeys = Object.keys(JSON.parse(defaultFile)[DEFAULT_LOCALE]); - - return gulp - .src([ - 'js/localization/messages/*.json', - '!js/localization/messages/en.json' - ]) - .pipe(through.obj(function(file, encoding, callback) { - const parsedFile = JSON.parse(file.contents.toString(encoding)); - - const [locale] = Object.keys(parsedFile); - const dictionary = parsedFile[locale]; - - let newFile = defaultFile.replace(`"${DEFAULT_LOCALE}"`, `"${locale}"`); - - defaultDictionaryKeys.forEach((key) => { - let replaceValue = null; - // eslint-disable-next-line no-prototype-builtins - if(dictionary.hasOwnProperty(key)) { - const val = dictionary[key]; - if(!val.includes('TODO')) { - replaceValue = val.replace(/"/g, '\\"'); - } - } - - if(replaceValue != null) { - newFile = newFile.replace(new RegExp(`"${key}":.*"(,)?`), `"${key}": "${replaceValue}"$1`); - } - }); - - file.contents = Buffer.from(newFile, encoding); - callback(null, file); - })) - .pipe(gulp.dest(DICTIONARY_SOURCE_FOLDER)); -}); diff --git a/packages/devextreme/build/gulp/npm.js b/packages/devextreme/build/gulp/npm.js deleted file mode 100644 index db34ea958e28..000000000000 --- a/packages/devextreme/build/gulp/npm.js +++ /dev/null @@ -1,214 +0,0 @@ -'use strict'; - -const eol = require('gulp-eol'); -const gulp = require('gulp'); -const gulpIf = require('gulp-if'); -const merge = require('merge-stream'); -const through = require('through2'); -const replace = require('gulp-replace'); -const lazyPipe = require('lazypipe'); -const gulpFilter = require('gulp-filter'); -const gulpRename = require('gulp-rename'); -const shell = require('gulp-shell'); - -const ctx = require('./context.js'); -const env = require('./env-variables.js'); -const dataUri = require('./gulp-data-uri').gulpPipe; -const headerPipes = require('./header-pipes.js'); -const { packageDir, packageDistDir, isEsmPackage, stringSrc } = require('./utils'); - -const resultPath = ctx.RESULT_NPM_PATH; -const devextremeDistWorkspacePackageJsonPath = '../devextreme-dist/package.json'; - -const srcGlobsPattern = (path, exclude) => [ - `${path}/**/*.js`, - `!${exclude}/**/*.*`, - `!${path}/bundles/*.js`, - `!${path}/cjs/bundles/**/*`, - `!${path}/esm/bundles/**/*`, - `!${path}/bundles/modules/parts/*.js`, - `!${path}/viz/vector_map.utils/*.js`, - `!${path}/viz/docs/*.js` -]; - -const esmPackageJsonGlobs = [ - `${ctx.TRANSPILED_PROD_ESM_PATH}/**/*.json`, - `!${ctx.TRANSPILED_PROD_ESM_PATH}/viz/vector_map.utils/**/*` -]; - -const esmSrcGlobs = srcGlobsPattern( - ctx.TRANSPILED_PROD_ESM_PATH, - ctx.TRANSPILED_PROD_RENOVATION_PATH -); - -const distGlobsPattern = (jsFolder, exclude) => [ - 'artifacts/**/*.*', - '!artifacts/transpiled**/**/*', - '!artifacts/npm/**/*.*', - '!artifacts/ts/jquery*', - '!artifacts/ts/knockout*', - '!artifacts/ts/globalize*', - '!artifacts/ts/cldr*', - '!artifacts/css/dx-diagram.*', - '!artifacts/css/dx-gantt.*', - `!${jsFolder}/knockout*`, - `!${jsFolder}/cldr/*.*`, - `!${jsFolder}/cldr*`, - `!${jsFolder}/globalize/*.*`, - `!${jsFolder}/globalize*`, - `!${jsFolder}/dx-exceljs-fork*`, - `!${jsFolder}/file-saver*`, - `!${jsFolder}/jquery*`, - `!${jsFolder}/jspdf*`, - `!${jsFolder}/jspdf-autotable*`, - `!${jsFolder}/jszip*`, - `!${jsFolder}/dx.custom*`, - `!${jsFolder}/dx.viz*`, - `!${jsFolder}/dx.web*`, - `!${jsFolder}/dx-diagram*`, - `!${jsFolder}/dx-gantt*`, - `!${jsFolder}/dx-quill*`, -]; - -const srcGlobs = esmSrcGlobs; -const distGlobs = distGlobsPattern(ctx.RESULT_JS_PATH); - -const jsonGlobs = ['js/**/*.json', '!js/viz/vector_map.utils/*.*']; - -const overwriteInternalPackageName = lazyPipe() - .pipe(() => replace(/"devextreme(-.*)?"/, '"devextreme$1-internal"')); - -const licenseValidator = env.BUILD_INTERNAL_PACKAGE || env.BUILD_TEST_INTERNAL_PACKAGE ? - lazyPipe() - .pipe(() => gulpFilter(['**', '!**/license/license_validation.js'])) - .pipe(() => gulpRename(path => { - if(path.basename.includes('license_validation_internal')) { - path.basename = 'license_validation'; - } - })) : - lazyPipe() - .pipe(() => gulpFilter(['**', '!**/license/license_validation_internal.js'])); - -const sources = (src, dist, distGlob) => (() => merge( - gulp - .src(src) - .pipe(licenseValidator()) - .pipe(headerPipes.starLicense()) - .pipe(gulp.dest(dist)), - - gulp - .src(esmPackageJsonGlobs) - .pipe(gulpIf(isEsmPackage, gulp.dest(dist))), - - gulp - .src(jsonGlobs) - .pipe(gulp.dest(dist)), - - gulp - .src('build/npm-bin/*.js') - .pipe(eol('\n')) - .pipe(gulp.dest(`${dist}/bin`)), - - gulp - .src(['license/**']) - .pipe(eol('\n')) - .pipe(gulp.dest(`${dist}/license`)), - - gulp - .src('webpack.config.js') - .pipe(gulp.dest(`${dist}/bin`)), - - gulp - .src('package.json') - .pipe( - through.obj((file, enc, callback) => { - const pkg = JSON.parse(file.contents.toString(enc)); - - pkg.name = 'devextreme'; - pkg.version = ctx.version; - - delete pkg.devDependencies; - delete pkg.publishConfig; - delete pkg.scripts; - - file.contents = Buffer.from(JSON.stringify(pkg, null, 2)); - callback(null, file); - }) - ) - .pipe(gulpIf(env.BUILD_INTERNAL_PACKAGE, overwriteInternalPackageName())) - .pipe(gulp.dest(dist)), - - gulp - .src(distGlob) - .pipe(gulp.dest(`${dist}/dist`)), - - gulp - .src('../../README.md') - .pipe(gulp.dest(dist)), - - stringSrc('.npmignore', 'dist/js\ndist/ts\n!dist/css\n!/scss/bundles/*.scss\nproject.json') - .pipe(gulp.dest(`${dist}/`)) -)); - -const packagePath = `${resultPath}/${packageDir}`; -const distPath = `${resultPath}/${packageDistDir}`; - -gulp.task('npm-sources', gulp.series( - shell.task(env.BUILD_INTERNAL_PACKAGE ? 'pnpm nx run devextreme:build:npm:dts-modules -c internal' : 'pnpm nx run devextreme:build:npm:dts-modules'), - shell.task(env.BUILD_INTERNAL_PACKAGE ? 'pnpm nx run devextreme:build:npm:dts-bundle -c internal' : 'pnpm nx run devextreme:build:npm:dts-bundle'), - () => gulp - .src(devextremeDistWorkspacePackageJsonPath) - .pipe( - through.obj((file, enc, callback) => { - const pkg = JSON.parse(file.contents.toString(enc)); - - pkg.version = ctx.version; - delete pkg.publishConfig; - - file.contents = Buffer.from(JSON.stringify(pkg, null, 2)); - callback(null, file); - }) - ) - .pipe(gulpIf(env.BUILD_INTERNAL_PACKAGE, overwriteInternalPackageName())) - .pipe(gulp.dest(distPath)), - () => merge( - gulp - .src('../devextreme-dist/README.md') - .pipe(gulp.dest(distPath)), - gulp - .src('../devextreme-dist/LICENSE.md') - .pipe(gulp.dest(distPath)), - ), - sources(srcGlobs, packagePath, distGlobs), - shell.task( - ctx.uglify - ? 'pnpm nx run devextreme:compress:npm-sources -c production' - : 'pnpm nx run devextreme:compress:npm-sources' - )) -); - -gulp.task('npm-dist', () => gulp - .src(`${packagePath}/dist/**/*`) - .pipe(gulp.dest(distPath)) -); - -const scssDir = `${packagePath}/scss`; - -gulp.task('npm-sass', gulp.series( - gulp.parallel( - () => gulp - .src(`${ctx.SCSS_PACKAGE_PATH}/scss/**/*`) - .pipe(dataUri()) - .pipe(gulp.dest(scssDir)), - - () => gulp - .src(`${ctx.SCSS_PACKAGE_PATH}/fonts/**/*`) - .pipe(gulp.dest(`${scssDir}/widgets/material/typography/fonts`)), - - () => gulp - .src(`${ctx.SCSS_PACKAGE_PATH}/icons/**/*`) - .pipe(gulp.dest(`${scssDir}/widgets/base/icons`)), - ) -)); - -gulp.task('npm', gulp.series('npm-sources', 'npm-dist', 'npm-sass')); diff --git a/packages/devextreme/build/gulp/overwrite-qunit-renovation-widget.js b/packages/devextreme/build/gulp/overwrite-qunit-renovation-widget.js deleted file mode 100644 index e3862b4d60da..000000000000 --- a/packages/devextreme/build/gulp/overwrite-qunit-renovation-widget.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; -module.exports = ({ name, pathToComponentRegistrator, pathToWrapper, pathInRenovationFolder }) => { - const wrappedComponentImport = pathToWrapper ? - `import { WrappedWidget as Widget } from '${pathToWrapper}';` : - `import Widget from '${pathInRenovationFolder}';`; - return `${wrappedComponentImport} -import registerComponent from '${pathToComponentRegistrator}'; -import { wrapRenovatedWidget } from '/packages/devextreme/testing/helpers/wrapRenovatedWidget.js'; -const wrappedComponent = wrapRenovatedWidget(Widget); -registerComponent('dx${name}', wrappedComponent); -export default wrappedComponent;`; -}; diff --git a/packages/devextreme/build/gulp/overwrite-renovation-widget.js b/packages/devextreme/build/gulp/overwrite-renovation-widget.js deleted file mode 100644 index bea4325cccb6..000000000000 --- a/packages/devextreme/build/gulp/overwrite-renovation-widget.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict'; - -module.exports = ({ pathInRenovationFolder }) => - `import Widget from '${pathInRenovationFolder}'; -export default Widget;`; diff --git a/packages/devextreme/build/gulp/systemjs.js b/packages/devextreme/build/gulp/systemjs.js deleted file mode 100644 index fdc2e33ede7a..000000000000 --- a/packages/devextreme/build/gulp/systemjs.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict'; - -const path = require('path'); -const { spawn } = require('child_process'); -const gulp = require('gulp'); - -const root = path.resolve(__dirname, '../..'); - -gulp.task('transpile-systemjs-modules', (callback) => { - spawn('node', [path.resolve(root, 'testing/systemjs-builder.js'), '--transpile=modules'], { stdio: 'inherit' }) - .on('error', callback) - .on('close', code => code ? callback(new Error(code)) : callback()); -}); - -gulp.task('transpile-systemjs-testing', (callback) => { - spawn('node', [path.resolve(root, 'testing/systemjs-builder.js'), '--transpile=testing'], { stdio: 'inherit' }) - .on('error', callback) - .on('close', code => code ? callback(new Error(code)) : callback()); -}); - -gulp.task('transpile-systemjs-css', (callback) => { - spawn('node', [path.resolve(root, 'testing/systemjs-builder.js'), '--transpile=css'], { stdio: 'inherit' }) - .on('error', callback) - .on('close', code => code ? callback(new Error(code)) : callback()); -}); - -gulp.task('transpile-systemjs-js-vendors', (callback) => { - spawn('node', [path.resolve(root, 'testing/systemjs-builder.js'), '--transpile=js-vendors'], { stdio: 'inherit' }) - .on('error', callback) - .on('close', code => code ? callback(new Error(code)) : callback()); -}); - -gulp.task('transpile-systemjs', gulp.parallel( - 'transpile-systemjs-modules', - 'transpile-systemjs-testing', - 'transpile-systemjs-css', - 'transpile-systemjs-js-vendors' -)); diff --git a/packages/devextreme/build/gulp/transpile.js b/packages/devextreme/build/gulp/transpile.js deleted file mode 100644 index 67a75ca37d59..000000000000 --- a/packages/devextreme/build/gulp/transpile.js +++ /dev/null @@ -1,84 +0,0 @@ -'use strict'; - -const babel = require('gulp-babel'); -const gulp = require('gulp'); -const notify = require('gulp-notify'); -const path = require('path'); -const plumber = require('gulp-plumber'); -const replace = require('gulp-replace'); -const watch = require('gulp-watch'); - -const ctx = require('./context.js'); -const testsConfig = require('../../testing/tests.babelrc.json'); -const transpileConfig = require('./transpile-config'); -const createTsCompiler = require('./typescript/compiler'); - -const REMOVE_DEBUG_REGEXP = /\/{2,}\s{0,}#DEBUG[\s\S]*?\/{2,}\s{0,}#ENDDEBUG/g; - -const src = [ - 'js/**/*.*', - '!js/**/*.d.ts', - '!js/**/*.{tsx,ts}', - '!js/__internal/**/*.*', -]; - -const TS_OUTPUT_BASE_DIR = 'artifacts/dist_ts'; -const TS_COMPILER_CONFIG = { - baseAbsPath: path.resolve(__dirname, '../..'), - relativePath: { - tsconfig: 'js/__internal/tsconfig.json', - alias: 'js', - dist: TS_OUTPUT_BASE_DIR, - }, - tsBaseDirName: '__internal', - messages: { - createDirErr: 'Cannot create directory', - createFileErr: 'Cannot create file', - compilationFailed: 'TS Compilation failed', - }, -}; - -const watchJsTask = () => { - const watchTask = watch(src) - .on('ready', () => console.log('transpile JS is watching for changes...')) - .pipe(plumber({ - errorHandler: notify - .onError('Error: <%= error.message %>') - .bind() // bind call is necessary to prevent firing 'end' event in notify.onError implementation - })); - watchTask - .pipe(babel(transpileConfig.cjs)) - .pipe(gulp.dest(ctx.TRANSPILED_PATH)); - watchTask - .pipe(replace(REMOVE_DEBUG_REGEXP, '')) - .pipe(babel(transpileConfig.cjs)) - .pipe(gulp.dest(ctx.TRANSPILED_PROD_RENOVATION_PATH)); - return watchTask; -}; -watchJsTask.displayName = 'transpile JS watch'; - -const watchTsTask = async() => { - const compiler = await createTsCompiler(TS_COMPILER_CONFIG); - const tsWatch = compiler.watchTs(); - - tsWatch - .pipe(plumber({ - errorHandler: notify - .onError('Error: <%= error.message %>') - .bind() // bind call is necessary to prevent firing 'end' event in notify.onError implementation - })) - .pipe(babel(transpileConfig.tsCjs)) - .pipe(gulp.dest(ctx.TRANSPILED_PATH)) - .pipe(replace(REMOVE_DEBUG_REGEXP, '')) - .pipe(gulp.dest(ctx.TRANSPILED_PROD_RENOVATION_PATH)); -}; -watchTsTask.displayName = 'transpile TS watch'; - -gulp.task('transpile-watch', gulp.parallel(watchJsTask, watchTsTask)); - -gulp.task('transpile-tests', gulp.series('bundler-config', () => - gulp - .src(['testing/**/*.js']) - .pipe(babel(testsConfig)) - .pipe(gulp.dest('testing')) -)); diff --git a/packages/devextreme/build/gulp/tsconfig.json b/packages/devextreme/build/gulp/tsconfig.json deleted file mode 100644 index 9f756e497164..000000000000 --- a/packages/devextreme/build/gulp/tsconfig.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "compilerOptions": { - "typeRoots": ["node_modules/@types"], - "noEmitOnError": true - } -} diff --git a/packages/devextreme/build/gulp/typescript/compiler.js b/packages/devextreme/build/gulp/typescript/compiler.js deleted file mode 100644 index 771d44cacde2..000000000000 --- a/packages/devextreme/build/gulp/typescript/compiler.js +++ /dev/null @@ -1,188 +0,0 @@ -'use strict'; - -const path = require('path'); -const { Readable } = require('stream'); -const { glob } = require('glob'); - -const Vinyl = require('vinyl'); -const tsCompiler = require('typescript'); -const tscAlias = require('tsc-alias'); - -const createFileChangeManager = require('./file-change-manager'); -const { logError, logInfo } = require('./logger'); - - -const createAliasTranspileFuncAsync = async(configFile, outDir) => { - const transpileFunc = await tscAlias.prepareSingleFileReplaceTscAliasPaths({ - configFile, - outDir, - }); - - return (filePath, fileContents) => transpileFunc({ fileContents, filePath }); -}; - -const createReadableStream = () => { - const stream = new Readable({ objectMode: true }); - stream._read = () => {}; - return stream; -}; - -const createWriteFileToStreamFunc = ( - stream, - aliasTranspileFunc, - { distPath, aliasPath, tsBaseDirName }, -) => (filePath, fileData) => { - if(!filePath.includes(tsBaseDirName)) { - return; - } - - const distPathRegExp = new RegExp(distPath); - // Resolve ts alias - const normalizedFilePath = filePath.replace(distPathRegExp, aliasPath); - const resolvedFileData = aliasTranspileFunc(normalizedFilePath, fileData); - - const file = new Vinyl({ - path: filePath.replace(distPathRegExp, ''), - contents: Buffer.from(resolvedFileData), - }); - stream.push(file); -}; - -const getAbsolutePaths = (compilerConfig) => { - const baseTsAbsDir = path.dirname(`${compilerConfig.baseAbsPath}/${compilerConfig.relativePath.tsconfig}`); - - return { - tsConfigDir: baseTsAbsDir, - tsConfigFile: `${compilerConfig.baseAbsPath}/${compilerConfig.relativePath.tsconfig}`, - tsBaseDir: baseTsAbsDir, - aliasRoot: `${compilerConfig.baseAbsPath}/${compilerConfig.relativePath.alias}`, - }; -}; - -const getTsConfigPath = (tsConfigDir) => { - const configFilePath = tsCompiler.findConfigFile( - tsConfigDir, - tsCompiler.sys.fileExists, - ); - - if(!configFilePath) { - const errorMsg = `tsconfig wasn't found by passed path:\n${tsConfigDir}/tsconfig.json`; - console.error(logError(errorMsg)); - throw Error(errorMsg); - } - - return configFilePath; -}; - -const reportDiagnostic = (diagnostic) => { - if(diagnostic.file) { - const { line, character } = tsCompiler.getLineAndCharacterOfPosition(diagnostic.file, diagnostic.start); - const message = tsCompiler.flattenDiagnosticMessageText(diagnostic.messageText, '\n'); - console.error(logError(`${diagnostic.file.fileName} (${line + 1},${character + 1}):\n ${message} \n`)); - - return; - } - - console.error(logError(`${tsCompiler.flattenDiagnosticMessageText(diagnostic.messageText, '\n')}\n`)); -}; - -const createTsCompiler = async(compilerConfig) => { - // --- private --- - const absolutePaths = getAbsolutePaths(compilerConfig); - const aliasTranspileFunc = await createAliasTranspileFuncAsync( - absolutePaths.tsConfigFile, - absolutePaths.aliasRoot, - ); - - // --- public --- - const compileTs = (fileNamePattern, ignorePatterns) => { - const fileNames = glob.sync(fileNamePattern, { ignore: ignorePatterns }); - const configFilePath = getTsConfigPath(absolutePaths.tsConfigDir); - const { config } = tsCompiler.readConfigFile(configFilePath, tsCompiler.sys.readFile); - const { options } = tsCompiler.parseJsonConfigFileContent(config, tsCompiler.sys, absolutePaths.tsBaseDir); - - const program = tsCompiler.createProgram(fileNames, options); - - const stream = createReadableStream(); - - const emitResult = program.emit( - undefined, - createWriteFileToStreamFunc( - stream, - aliasTranspileFunc, - { - distPath: compilerConfig.relativePath.dist, - aliasPath: compilerConfig.relativePath.alias, - tsBaseDirName: compilerConfig.tsBaseDirName, - }), - ); - - const allDiagnostics = tsCompiler - .getPreEmitDiagnostics(program) - .concat(emitResult.diagnostics); - - allDiagnostics.forEach(diagnostic => { reportDiagnostic(diagnostic); }); - - if(allDiagnostics.length > 0) { - console.error(logInfo(compilerConfig.messages.compilationFailed)); - throw Error(compilerConfig.messages.compilationFailed); - } - - stream.push(null); - return stream; - }; - - const watchTs = () => { - const configFilePath = getTsConfigPath(absolutePaths.tsConfigDir); - const createProgram = tsCompiler.createSemanticDiagnosticsBuilderProgram; - const reportWatchStatusChanged = (diagnostic) => { - console.info(logInfo(diagnostic.messageText)); - }; - const changeManager = createFileChangeManager(); - const stream = createReadableStream(); - - const host = tsCompiler.createWatchCompilerHost( - configFilePath, - {}, - tsCompiler.sys, - createProgram, - reportDiagnostic, - reportWatchStatusChanged - ); - - const writeFileToStream = createWriteFileToStreamFunc( - stream, - aliasTranspileFunc, - { - distPath: compilerConfig.relativePath.dist, - aliasPath: compilerConfig.relativePath.alias, - tsBaseDirName: compilerConfig.tsBaseDirName, - }); - host.writeFile = async(filePath, fileData) => { - const isChanged = changeManager.checkFileChanged(filePath, fileData); - - if(!isChanged) { - return; - } - - writeFileToStream(filePath, fileData); - }; - - const origPostProgramCreate = host.afterProgramCreate; - host.afterProgramCreate = program => { - changeManager.clearUntouchedFiles(); - origPostProgramCreate(program); - }; - - tsCompiler.createWatchProgram(host); - - return stream; - }; - - return { - compileTs, - watchTs, - }; -}; - -module.exports = createTsCompiler; diff --git a/packages/devextreme/build/gulp/typescript/file-change-manager.js b/packages/devextreme/build/gulp/typescript/file-change-manager.js deleted file mode 100644 index 450b7bffb334..000000000000 --- a/packages/devextreme/build/gulp/typescript/file-change-manager.js +++ /dev/null @@ -1,49 +0,0 @@ -'use strict'; - -const { v4, v5 } = require('uuid'); -const generateUuid = v4; -const uuidFromStr = v5; - - -const createFileChangeManager = () => { - const seed = generateUuid(); - const fileMap = new Map(); - const touchedFileSet = new Set(); - - const generateUuidFromFileData = (fileData) => uuidFromStr(fileData, seed); - - const checkFileChanged = (filePath, fileData) => { - const newUuid = generateUuidFromFileData(fileData); - touchedFileSet.add(filePath); - - if(!fileMap.has(filePath)) { - fileMap.set(filePath, newUuid); - return true; - } - - const oldUuid = fileMap.get(filePath); - const isChanged = oldUuid !== newUuid; - - if(isChanged) { - fileMap.set(filePath, newUuid); - } - - return isChanged; - }; - - const clearUntouchedFiles = () => { - fileMap.forEach((_, filePath) => { - if(!touchedFileSet.has(filePath)) { - fileMap.delete(filePath); - } - }); - touchedFileSet.clear(); - }; - - return { - checkFileChanged, - clearUntouchedFiles, - }; -}; - -module.exports = createFileChangeManager; diff --git a/packages/devextreme/build/gulp/typescript/logger.js b/packages/devextreme/build/gulp/typescript/logger.js deleted file mode 100644 index 7842c4708553..000000000000 --- a/packages/devextreme/build/gulp/typescript/logger.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -const baseLog = (msg) => `\x1b[36m>TS\x1b[0m ${msg}`; - -const underscore = (msg) => `\x1b[4m${msg}\x1b[0m`; - -const logError = (msg) => baseLog(`\x1b[31mError\x1b[0m ${msg}`); - -const logInfo = (msg) => baseLog(underscore(msg)); - -module.exports = { - logError, - logInfo, -}; diff --git a/packages/devextreme/build/gulp/utils.js b/packages/devextreme/build/gulp/utils.js deleted file mode 100644 index 1de8c7934276..000000000000 --- a/packages/devextreme/build/gulp/utils.js +++ /dev/null @@ -1,46 +0,0 @@ -'use strict'; - -const gulp = require('gulp'); -const Vinyl = require('vinyl'); -const env = require('./env-variables'); - -gulp.task('skippedTask', done => done()); - -const isEsmPackage = env.BUILD_ESM_PACKAGE; -const devextremeDir = 'devextreme'; -const devextremeDistDir = 'devextreme-dist'; -const packageDir = env.BUILD_INTERNAL_PACKAGE ? 'devextreme-internal' : devextremeDir; -const packageDistDir = env.BUILD_INTERNAL_PACKAGE ? 'devextreme-dist-internal' : devextremeDistDir; - -const runTaskByCondition = (condition, task) => { - if(condition) { - return task; - } - return (done) => done ? done() : gulp.series('skippedTask'); -}; - -const stringSrc = (filename, str) => { - const src = require('stream').Readable({ objectMode: true }); - - src._read = function() { - this.push(new Vinyl({ - cwd: '', - path: filename, - contents: Buffer.from(str, 'utf-8') - })); - this.push(null); - }; - - return src; -}; - -module.exports = { - devextremeDir, - devextremeDistDir, - packageDir, - packageDistDir, - stringSrc, - isEsmPackage, - runTaskByCondition, - ifEsmPackage: (task) => runTaskByCondition(isEsmPackage, task), -}; diff --git a/packages/devextreme/build/gulp/vectormap.js b/packages/devextreme/build/gulp/vectormap.js deleted file mode 100644 index fed2727464fa..000000000000 --- a/packages/devextreme/build/gulp/vectormap.js +++ /dev/null @@ -1,109 +0,0 @@ -'use strict'; - -const gulp = require('gulp'); -const path = require('path'); -const fs = require('fs'); -const rename = require('gulp-rename'); -const concat = require('gulp-concat'); -const tap = require('gulp-tap'); -const gulpIf = require('gulp-if'); -const merge = require('merge-stream'); -const template = require('gulp-template'); - -const context = require('./context.js'); -const headerPipes = require('./header-pipes.js'); -const compressionPipes = require('./compression-pipes.js'); - -const VECTORMAP_UTILS_PATH = 'js/viz/vector_map.utils'; -const VECTORMAP_UTILS_RESULT_PATH = path.join(context.RESULT_JS_PATH, 'vectormap-utils'); -const VECTORMAP_DATA_RESULT_PATH = path.join(context.RESULT_JS_PATH, 'vectormap-data'); -const VECTORMAP_SOURCES_PATH = 'build/vectormap-sources'; - -function transformFileName(fileName) { - return path.join(VECTORMAP_UTILS_PATH, fileName) + '.js'; -} - -gulp.task('vectormap-utils', function() { - return merge( - createBrowserVectorMapUtilsStream('.debug', false), - createBrowserVectorMapUtilsStream('', true), - ); -}); - -function toArrayBuffer(buffer) { - return buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength); -} - -function collectShpFiles(dir) { - return fs.readdirSync(dir) - .filter(name => path.extname(name).toLowerCase() === '.shp') - .map(name => path.basename(name, '.shp')); -} - -gulp.task('vectormap-data', gulp.series('vectormap-utils', function generateData() { - const parse = require(path.join('../..', VECTORMAP_UTILS_RESULT_PATH, 'dx.vectormaputils.debug.js')).parse; - const settings = require(path.join('../..', VECTORMAP_SOURCES_PATH, '_settings.js')); - const precision = settings.precision >= 0 ? Math.round(settings.precision) : 4; - - if(!fs.existsSync(VECTORMAP_DATA_RESULT_PATH)) { - fs.mkdirSync(VECTORMAP_DATA_RESULT_PATH); - } - - const sourceDir = path.resolve(VECTORMAP_SOURCES_PATH); - const files = collectShpFiles(sourceDir); - - files.forEach(name => { - const shpBuffer = fs.readFileSync(path.join(sourceDir, name + '.shp')); - const dbfBuffer = fs.readFileSync(path.join(sourceDir, name + '.dbf')); - - const shapeData = parse( - { shp: toArrayBuffer(shpBuffer), dbf: toArrayBuffer(dbfBuffer) }, - { precision }, - ); - - if(shapeData) { - const content = name + ' = ' + JSON.stringify(shapeData) + ';'; - fs.writeFileSync(path.join(VECTORMAP_DATA_RESULT_PATH, name + '.js'), content); - } - }); - - const stream = merge(); - const dataFiles = fs.readdirSync(VECTORMAP_DATA_RESULT_PATH); - - dataFiles.forEach(file => { - const data = fs.readFileSync(path.join(VECTORMAP_DATA_RESULT_PATH, file), 'utf8'); - - stream.add( - gulp.src('build/gulp/vectormapdata-template.jst') - .pipe(template({ data: data })) - .pipe(rename(file)) - .pipe(headerPipes.useStrict()) - .pipe(gulp.dest(VECTORMAP_DATA_RESULT_PATH)) - ); - }); - - return stream; -})); - -function patchVectorMapUtilsStream(stream, isMinify) { - return stream.pipe(headerPipes.useStrict()) - .pipe(headerPipes.bangLicense()) - .pipe(gulpIf(isMinify, compressionPipes.minify())) - .pipe(gulpIf(!isMinify, compressionPipes.beautify())) - .pipe(gulp.dest(VECTORMAP_UTILS_RESULT_PATH)); -} - -function createBrowserVectorMapUtilsStream(suffix, isMinify) { - const settings = require(path.join('../..', VECTORMAP_UTILS_PATH, '_settings.json')); - const part = settings['browser']; - const stream = gulp.src(settings.commonFiles.concat(part.files).map(transformFileName)) - .pipe(concat(part.fileName + suffix + '.js')); - - return stream.pipe(tap(file => { - patchVectorMapUtilsStream(gulp.src('build/gulp/vectormaputils-template.jst') - .pipe(template({ data: file.contents })) - .pipe(rename(path.basename(file.path))), isMinify); - })); -} - -gulp.task('vectormap', gulp.series('vectormap-utils', 'vectormap-data')); diff --git a/packages/devextreme/build/gulp/generated_js.jst b/packages/devextreme/build/localization-templates/generated_js.jst similarity index 100% rename from packages/devextreme/build/gulp/generated_js.jst rename to packages/devextreme/build/localization-templates/generated_js.jst diff --git a/packages/devextreme/build/gulp/localization-template.jst b/packages/devextreme/build/localization-templates/localization-template.jst similarity index 100% rename from packages/devextreme/build/gulp/localization-template.jst rename to packages/devextreme/build/localization-templates/localization-template.jst diff --git a/packages/devextreme/build/gulp/modules_metadata.json b/packages/devextreme/build/modules_metadata.json similarity index 100% rename from packages/devextreme/build/gulp/modules_metadata.json rename to packages/devextreme/build/modules_metadata.json diff --git a/packages/devextreme/build/gulp/transpile-config.js b/packages/devextreme/build/transpile-config.js similarity index 100% rename from packages/devextreme/build/gulp/transpile-config.js rename to packages/devextreme/build/transpile-config.js diff --git a/packages/devextreme/build/gulp/vectormapdata-template.jst b/packages/devextreme/build/vectormap-templates/vectormapdata-template.jst similarity index 100% rename from packages/devextreme/build/gulp/vectormapdata-template.jst rename to packages/devextreme/build/vectormap-templates/vectormapdata-template.jst diff --git a/packages/devextreme/build/gulp/vectormaputils-template.jst b/packages/devextreme/build/vectormap-templates/vectormaputils-template.jst similarity index 100% rename from packages/devextreme/build/gulp/vectormaputils-template.jst rename to packages/devextreme/build/vectormap-templates/vectormaputils-template.jst diff --git a/packages/devextreme/gulpfile.js b/packages/devextreme/gulpfile.js deleted file mode 100644 index d865ef7676a5..000000000000 --- a/packages/devextreme/gulpfile.js +++ /dev/null @@ -1,155 +0,0 @@ -/* eslint-env node */ -/* eslint-disable no-console */ - -const gulp = require('gulp'); -const multiProcess = require('gulp-multi-process'); -const env = require('./build/gulp/env-variables'); -const shell = require('gulp-shell'); -const context = require('./build/gulp/context'); -const { REMOVE_NON_PRODUCTION_MODULE } = context; - -gulp.task('clean', shell.task('pnpm nx clean:artifacts devextreme')); - -require('./build/gulp/bundler-config'); -require('./build/gulp/transpile'); -require('./build/gulp/js-bundles'); -require('./build/gulp/localization'); -require('./build/gulp/systemjs'); - -function getTranspileConfig() { - if(env.TEST_CI) { - return 'ci'; - } - - if(env.BUILD_INTERNAL_PACKAGE) { - return 'internal'; - } - - return ''; -} - -const transpileConfig = getTranspileConfig(); - -function getDeclarationsConfiguration() { - return env.BUILD_INTERNAL_PACKAGE ? 'internal' : ''; -} - -const declarationsConfig = getDeclarationsConfiguration(); - -gulp.task('transpile', shell.task( - transpileConfig - ? `pnpm nx run devextreme:build:transpile -c ${transpileConfig}` - : 'pnpm nx run devextreme:build:transpile' -)); - -gulp.task('vectormap', shell.task( - context.uglify - ? 'pnpm nx run devextreme:build:vectormap -c production' - : 'pnpm nx run devextreme:build:vectormap' -)); - -gulp.task('aspnet', shell.task( - context.uglify - ? 'pnpm nx run devextreme:build:aspnet -c production' - : 'pnpm nx run devextreme:build:aspnet' -)); - -gulp.task('vendor', shell.task('pnpm nx run devextreme:copy:vendor')); - -gulp.task('ts', shell.task( - declarationsConfig - ? `pnpm nx run devextreme:build:declarations -c ${declarationsConfig}` - : 'pnpm nx run devextreme:build:declarations' -)); - -gulp.task('check-license-notices', shell.task('pnpm nx run devextreme:verify:licenses')); - -gulp.task('state-manager-optimize', shell.task('pnpm nx run devextreme:state-manager:optimize')); - -function getNpmConfiguration() { - if(context.uglify && env.BUILD_INTERNAL_PACKAGE) { - return 'production-internal'; - } - if(env.BUILD_INTERNAL_PACKAGE) { - return 'internal'; - } - if(context.uglify && env.BUILD_TEST_INTERNAL_PACKAGE) { - return 'production-test-internal'; - } - if(env.BUILD_TEST_INTERNAL_PACKAGE) { - return 'test-internal'; - } - if(context.uglify) { - return 'production'; - } - return ''; -} - -gulp.task('npm', shell.task((function() { - const config = getNpmConfiguration(); - return config - ? `pnpm nx run devextreme:build:npm -c ${config}` - : 'pnpm nx run devextreme:build:npm'; -})())); - -if(env.TEST_CI) { - console.warn('Using test CI mode!'); -} - -function createMiscBatch() { - const tasks = ['vectormap', 'vendor']; - if(!env.TEST_CI) { - tasks.push('aspnet', 'ts'); - } - return gulp.parallel(tasks); -} - -function createMainBatch(dev) { - const tasks = []; - if(!dev && !env.BUILD_TESTCAFE) { - tasks.push('js-bundles-debug'); - } - if(!env.TEST_CI || env.BUILD_TESTCAFE) { - tasks.push('js-bundles-prod'); - } - tasks.push('misc-batch'); - return (callback) => multiProcess(tasks, callback, true); -} - -function createDefaultBatch(dev) { - const tasks = dev ? [] : ['clean']; - tasks.push('localization'); - tasks.push('transpile'); - - if(REMOVE_NON_PRODUCTION_MODULE) { - tasks.push('state-manager-optimize'); - } - - tasks.push(dev && !env.BUILD_TESTCAFE ? 'main-batch-dev' : 'main-batch'); - if(!env.TEST_CI && !dev && !env.BUILD_TESTCAFE) { - tasks.push('npm'); - tasks.push('check-license-notices'); - } - return gulp.series(tasks); -} - -gulp.task('misc-batch', createMiscBatch()); -gulp.task('main-batch', createMainBatch(false)); -gulp.task('main-batch-dev', createMainBatch(true)); - -gulp.task('default', createDefaultBatch()); -gulp.task('default-dev', createDefaultBatch(true)); - -gulp.task('test-env', shell.task('node ./testing/launch')); - -gulp.task('dev-watch', gulp.parallel( - 'transpile-watch', - 'bundler-config-watch', - 'js-bundles-watch', - 'test-env' -)); - -gulp.task('dev', gulp.series( - 'default-dev', - 'dev-watch' -)); diff --git a/packages/devextreme/package.json b/packages/devextreme/package.json index 14883042adfa..ab264c3859ee 100644 --- a/packages/devextreme/package.json +++ b/packages/devextreme/package.json @@ -73,6 +73,8 @@ "@babel/eslint-parser": "catalog:", "@babel/plugin-proposal-decorators": "7.29.7", "@babel/plugin-transform-modules-commonjs": "7.29.7", + "@babel/plugin-transform-nullish-coalescing-operator": "7.29.7", + "@babel/plugin-transform-optional-chaining": "7.29.7", "@babel/plugin-transform-runtime": "7.29.7", "@babel/plugin-transform-typescript": "7.29.7", "@babel/preset-env": "7.29.7", @@ -115,35 +117,8 @@ "eslint-plugin-testcafe": "0.2.1", "eslint-plugin-unicorn": "60.0.0", "file-saver": "2.0.5", - "glob": "11.1.0", "globalize": "1.7.1", "globals": "catalog:", - "gulp": "4.0.2", - "gulp-babel": "8.0.0", - "gulp-cache": "1.1.3", - "gulp-cached": "1.1.1", - "gulp-concat": "2.6.1", - "gulp-each": "0.5.0", - "gulp-eol": "0.2.0", - "gulp-eslint-new": "catalog:", - "gulp-file": "0.4.0", - "gulp-filter": "7.0.0", - "gulp-flatmap": "1.0.2", - "gulp-footer": "2.1.0", - "gulp-header": "2.0.9", - "gulp-if": "3.0.0", - "gulp-json-editor": "2.6.0", - "gulp-multi-process": "1.4.0", - "gulp-notify": "4.0.0", - "gulp-plumber": "1.2.1", - "gulp-rename": "1.4.0", - "gulp-replace": "0.6.1", - "gulp-sass": "6.0.1", - "gulp-shell": "0.8.0", - "gulp-tap": "1.0.1", - "gulp-template": "5.0.0", - "gulp-typescript": "5.0.1", - "gulp-watch": "5.0.1", "ignore": "5.3.2", "intl": "1.2.5", "jest-each": "29.7.0", @@ -153,11 +128,8 @@ "jspdf": "4.2.1", "jspdf-autotable": "3.8.4", "knockout": "3.5.3", - "lazypipe": "1.0.2", - "merge-stream": "2.0.0", "minimist": "1.2.8", "qunit": "2.25.0", - "sass-embedded": "1.93.3", "sinon": "18.0.1", "systemjs": "0.19.41", "systemjs-plugin-babel": "0.0.25", @@ -165,37 +137,31 @@ "systemjs-plugin-json": "0.3.0", "systemjs-plugin-text": "0.0.11", "terser-webpack-plugin": "5.3.17", - "through2": "2.0.5", "ts-jest": "29.1.2", "tsc-alias": "1.8.16", "typescript": "4.9.5", "typescript-min": "npm:typescript@4.9.5", - "uuid": "14.0.0", - "vinyl": "2.2.1", - "vinyl-named": "1.1.0", "vite": "8.0.16", "webpack": "5.105.4", - "webpack-stream": "7.0.0", - "yargs": "17.7.2" + "webpack-stream": "7.0.0" }, "scripts": { - "clean": "gulp clean", + "clean": "pnpm nx clean:artifacts devextreme", "lint": "nx run devextreme:lint", "lint-js": "eslint --quiet '**/*.js'", "lint-ts": "eslint --quiet '**/*.{tsx,ts}' --ignore-pattern '**/*.d.ts'", "lint-dts": "eslint './js/**/*.d.ts'", "lint-staged": "lint-staged", "lint-texts": "node build/linters/validate-non-latin-symbols.js", - "build:dev": "cross-env DEVEXTREME_TEST_CI=TRUE BUILD_ESM_PACKAGE=true gulp default", - "build-dist": "cross-env BUILD_ESM_PACKAGE=true gulp default --uglify", + "build:dev": "pnpm nx build:dev devextreme", + "build-dist": "pnpm nx build-dist devextreme", "build:modular": "cd ./playground/modular && webpack", "build:modular:watch": "cd ./playground/modular && webpack --watch", - "build:community-localization": "gulp generate-community-locales", - "build:systemjs": "gulp transpile-systemjs", - "dev": "cross-env DEVEXTREME_TEST_CI=true gulp dev", - "dev:watch": "cross-env DEVEXTREME_TEST_CI=true gulp dev-watch", + "build:community-localization": "pnpm nx build:community-localization devextreme", + "dev": "cross-env DEVEXTREME_TEST_CI=true nx run devextreme:dev", + "dev:watch": "cross-env DEVEXTREME_TEST_CI=true nx run devextreme:dev-watch", "dev:playground": "vite", - "transpile-tests": "gulp transpile-tests", + "transpile-tests": "pnpm nx transpile:tests devextreme", "update-ts-reexports": "dx-tools generate-reexports --sources ./js --exclude \"((dialog|export|list_light|notify|overlay|palette|set_template_engine|splitter_control|themes|themes_callback|track_bar|utils|validation_engine|validation_message)[.d.ts])\" --compiler-options \"{ \\\"typeRoots\\\": [] }\"", "update-ts-bundle": "dx-tools generate-ts-bundle --sources ./js --output-path ./ts/dx.all.d.ts", "regenerate": "pnpm run update-ts-bundle && pnpm run update-ts-reexports", diff --git a/packages/devextreme/project.json b/packages/devextreme/project.json index df4511af3456..e1f741f3fce4 100644 --- a/packages/devextreme/project.json +++ b/packages/devextreme/project.json @@ -28,9 +28,9 @@ "executor": "devextreme-nx-infra-plugin:localization", "options": { "messagesDir": "./js/localization/messages", - "messageTemplate": "./build/gulp/localization-template.jst", + "messageTemplate": "./build/localization-templates/localization-template.jst", "messageOutputDir": "./artifacts/js/localization", - "generatedTemplate": "./build/gulp/generated_js.jst", + "generatedTemplate": "./build/localization-templates/generated_js.jst", "cldrDataOutputDir": "./js/__internal/core/localization/cldr-data", "defaultMessagesOutputDir": "./js/__internal/core/localization", "applyLicenseHeaders": { @@ -41,8 +41,8 @@ }, "inputs": [ "{projectRoot}/js/localization/messages/**/*.json", - "{projectRoot}/build/gulp/localization-template.jst", - "{projectRoot}/build/gulp/generated_js.jst" + "{projectRoot}/build/localization-templates/localization-template.jst", + "{projectRoot}/build/localization-templates/generated_js.jst" ], "outputs": [ "{projectRoot}/artifacts/js/localization", @@ -50,6 +50,14 @@ "{projectRoot}/js/__internal/core/localization/cldr-data" ] }, + "build:community-localization": { + "cache": false, + "executor": "devextreme-nx-infra-plugin:generate-community-locales", + "options": { + "messagesDir": "./js/localization/messages", + "defaultLocale": "en" + } + }, "build:localization": { "cache": true, "executor": "nx:run-commands", @@ -62,8 +70,8 @@ }, "inputs": [ "{projectRoot}/js/localization/messages/**/*.json", - "{projectRoot}/build/gulp/localization-template.jst", - "{projectRoot}/build/gulp/generated_js.jst", + "{projectRoot}/build/localization-templates/localization-template.jst", + "{projectRoot}/build/localization-templates/generated_js.jst", { "externalDependencies": ["cldrjs", "cldr-core", "devextreme-cldr-data"] } ], "outputs": [ @@ -144,6 +152,54 @@ "{projectRoot}/artifacts/npm/devextreme-internal/bundles/dx.custom.config.js" ] }, + "build:devextreme-bundler-config:watch": { + "executor": "devextreme-nx-infra-plugin:concatenate-files", + "cache": false, + "options": { + "sourceFiles": [ + "./build/bundle-templates/modules/parts/core.js", + "./build/bundle-templates/modules/parts/data.js", + "./build/bundle-templates/modules/parts/widgets-base.js", + "./build/bundle-templates/modules/parts/widgets-web.js", + "./build/bundle-templates/modules/parts/viz.js", + "./build/bundle-templates/modules/parts/aspnet.js" + ], + "outputFile": "./build/bundle-templates/dx.custom.js", + "extractPattern": "[^]*BUNDLER_PARTS.*?$([^]*)^.*?BUNDLER_PARTS_END[^]*", + "extractPatternFlags": "gm", + "header": "\"use strict\";\n\n/* Comment lines below for the widgets you don't require and run \"devextreme-bundler\" in this directory, then include dx.custom.js in your project */\n\n", + "transforms": [ + { + "find": "require *\\( *[\"']..\\/\\.\\.\\/", + "replace": "require('" + }, + { + "find": "^[ ]{4}", + "replace": "", + "flags": "gm" + }, + { + "find": "\\n{3,}", + "replace": "\n\n", + "flags": "g" + } + ], + "additionalPasses": [ + { + "sourceFiles": ["./build/bundle-templates/dx.custom.js"], + "outputFile": "./artifacts/npm/devextreme/bundles/dx.custom.config.js", + "transforms": [ + { + "find": "require *\\( *[\"']\\.\\.\\/", + "replace": "require('devextreme/" + } + ] + } + ], + "watch": true, + "watchPaths": ["./build/bundle-templates/modules/parts/**/*.js"] + } + }, "clean:dist-ts": { "executor": "devextreme-nx-infra-plugin:clean", "options": { @@ -181,10 +237,22 @@ "{projectRoot}/artifacts/dist_ts" ] }, + "build:ts:internal:watch": { + "executor": "devextreme-nx-infra-plugin:build-typescript", + "cache": false, + "options": { + "srcPattern": "./js/__internal/**/*.{ts,tsx}", + "tsconfig": "./js/__internal/tsconfig.json", + "outDir": "./artifacts/dist_ts", + "resolvePaths": true, + "resolvePathsBaseDir": "./js", + "watch": true + } + }, "build:cjs": { "executor": "devextreme-nx-infra-plugin:babel-transform", "options": { - "babelConfigPath": "./build/gulp/transpile-config.js", + "babelConfigPath": "./build/transpile-config.js", "configKey": "cjs", "sourcePattern": "./js/**/*.{js,jsx}", "excludePatterns": [ @@ -212,10 +280,35 @@ "{projectRoot}/artifacts/transpiled-renovation-npm" ] }, + "build:cjs:watch": { + "executor": "devextreme-nx-infra-plugin:babel-transform", + "cache": false, + "options": { + "babelConfigPath": "./build/transpile-config.js", + "configKey": "cjs", + "sourcePattern": "./js/**/*.{js,jsx}", + "excludePatterns": [ + "./js/**/*.d.ts", + "./js/__internal/**/*" + ], + "outDir": "./artifacts/transpiled", + "watch": true, + "copyAssets": [ + { "from": "./js/localization/messages", "to": "./localization/messages" }, + { "from": "./js/viz/vector_map.utils/_settings.json", "to": "./viz/vector_map.utils/_settings.json" } + ] + }, + "configurations": { + "production": { + "outDir": "./artifacts/transpiled-renovation-npm", + "removeDebug": true + } + } + }, "build:npm:esm": { "executor": "devextreme-nx-infra-plugin:babel-transform", "options": { - "babelConfigPath": "./build/gulp/transpile-config.js", + "babelConfigPath": "./build/transpile-config.js", "configKey": "esm", "sourcePattern": "./js/**/*.{js,jsx}", "excludePatterns": [ @@ -240,7 +333,7 @@ "build:npm:cjs": { "executor": "devextreme-nx-infra-plugin:babel-transform", "options": { - "babelConfigPath": "./build/gulp/transpile-config.js", + "babelConfigPath": "./build/transpile-config.js", "configKey": "cjs", "sourcePattern": "./js/**/*.{js,jsx}", "excludePatterns": [ @@ -265,7 +358,7 @@ "build:cjs:internal": { "executor": "devextreme-nx-infra-plugin:babel-transform", "options": { - "babelConfigPath": "./build/gulp/transpile-config.js", + "babelConfigPath": "./build/transpile-config.js", "configKey": "tsCjs", "sourcePattern": "./artifacts/dist_ts/__internal/**/*.{js,jsx}", "outDir": "./artifacts/transpiled/__internal", @@ -285,10 +378,30 @@ "{projectRoot}/artifacts/transpiled-renovation-npm/__internal" ] }, + "build:cjs:internal:watch": { + "executor": "devextreme-nx-infra-plugin:babel-transform", + "cache": false, + "options": { + "babelConfigPath": "./build/transpile-config.js", + "configKey": "tsCjs", + "sourcePattern": "./artifacts/dist_ts/__internal/**/*.{js,jsx}", + "outDir": "./artifacts/transpiled/__internal", + "renameExtensions": { + ".jsx": ".js" + }, + "watch": true + }, + "configurations": { + "production": { + "outDir": "./artifacts/transpiled-renovation-npm/__internal", + "removeDebug": true + } + } + }, "build:npm:esm:internal": { "executor": "devextreme-nx-infra-plugin:babel-transform", "options": { - "babelConfigPath": "./build/gulp/transpile-config.js", + "babelConfigPath": "./build/transpile-config.js", "configKey": "esm", "sourcePattern": "./artifacts/dist_ts/__internal/**/*.{js,jsx}", "outDir": "./artifacts/transpiled-esm-npm/esm/__internal", @@ -307,7 +420,7 @@ "build:npm:cjs:internal": { "executor": "devextreme-nx-infra-plugin:babel-transform", "options": { - "babelConfigPath": "./build/gulp/transpile-config.js", + "babelConfigPath": "./build/transpile-config.js", "configKey": "tsCjs", "sourcePattern": "./artifacts/dist_ts/__internal/**/*.{js,jsx}", "outDir": "./artifacts/transpiled-esm-npm/cjs/__internal", @@ -326,7 +439,7 @@ "build:cjs:bundles": { "executor": "devextreme-nx-infra-plugin:babel-transform", "options": { - "babelConfigPath": "./build/gulp/transpile-config.js", + "babelConfigPath": "./build/transpile-config.js", "configKey": "cjs", "sourcePattern": "./build/bundle-templates/**/*.js", "outDir": "./artifacts/transpiled/bundles", @@ -451,6 +564,34 @@ } } }, + "build:transpile:watch": { + "executor": "nx:run-commands", + "cache": false, + "options": { + "commands": [ + "pnpm nx build:ts:internal:watch devextreme", + "pnpm nx build:cjs:watch devextreme", + "pnpm nx build:cjs:watch devextreme -c production", + "pnpm nx build:cjs:internal:watch devextreme", + "pnpm nx build:cjs:internal:watch devextreme -c production" + ], + "cwd": "{projectRoot}", + "parallel": true + }, + "dependsOn": ["build:ts:internal"] + }, + "transpile:tests": { + "executor": "devextreme-nx-infra-plugin:babel-transform", + "cache": false, + "options": { + "babelConfigPath": "./testing/tests.babelrc.json", + "sourcePattern": "./testing/**/*.js", + "outDir": "./testing" + }, + "dependsOn": [ + "build:devextreme-bundler-config" + ] + }, "state-manager:optimize": { "executor": "devextreme-nx-infra-plugin:state-manager-optimize", "options": { @@ -571,6 +712,34 @@ "{projectRoot}/artifacts/js/dx.{all,web,viz,ai-integration,custom}.debug.js" ] }, + "bundle:watch": { + "executor": "devextreme-nx-infra-plugin:bundle", + "options": { + "watch": true, + "entries": [ + "bundles/dx.all.js", + "bundles/dx.web.js", + "bundles/dx.viz.js", + "bundles/dx.ai-integration.js", + "bundles/dx.custom.js" + ], + "sourceDir": "./artifacts/transpiled-renovation-npm", + "outDir": "./artifacts/js", + "mode": "debug", + "webpackConfigPath": "./webpack.config.js", + "applyLicenseHeaders": { + "prependAfterLicense": "\"use strict\";\n\n", + "separator": "", + "includePatterns": ["dx.*.debug.js"] + } + }, + "configurations": { + "production": { + "sourceMap": false + } + }, + "cache": false + }, "bundle:prod": { "executor": "nx:run-commands", "options": { @@ -667,8 +836,8 @@ "sourcesSettingsFile": "./_settings.js", "utilsOutDir": "./artifacts/js/vectormap-utils", "dataOutDir": "./artifacts/js/vectormap-data", - "utilsTemplatePath": "./build/gulp/vectormaputils-template.jst", - "dataTemplatePath": "./build/gulp/vectormapdata-template.jst", + "utilsTemplatePath": "./build/vectormap-templates/vectormaputils-template.jst", + "dataTemplatePath": "./build/vectormap-templates/vectormapdata-template.jst", "applyLicenseHeaders": { "separator": "", "prependAfterLicense": "\"use strict\";\n\n" @@ -677,8 +846,8 @@ "inputs": [ "{projectRoot}/js/viz/vector_map.utils/**/*", "{projectRoot}/build/vectormap-sources/**/*", - "{projectRoot}/build/gulp/vectormaputils-template.jst", - "{projectRoot}/build/gulp/vectormapdata-template.jst" + "{projectRoot}/build/vectormap-templates/vectormaputils-template.jst", + "{projectRoot}/build/vectormap-templates/vectormapdata-template.jst" ], "outputs": [ "{projectRoot}/artifacts/js/vectormap-utils", @@ -727,8 +896,8 @@ "inputs": [ "{projectRoot}/js/viz/vector_map.utils/**/*", "{projectRoot}/build/vectormap-sources/**/*", - "{projectRoot}/build/gulp/vectormaputils-template.jst", - "{projectRoot}/build/gulp/vectormapdata-template.jst" + "{projectRoot}/build/vectormap-templates/vectormaputils-template.jst", + "{projectRoot}/build/vectormap-templates/vectormapdata-template.jst" ], "outputs": [ "{projectRoot}/artifacts/js/vectormap-utils", @@ -811,8 +980,7 @@ "inputs": [ "{projectRoot}/artifacts/ts/dx.all.d.ts", "{projectRoot}/ts/dx.all.d.ts", - "{projectRoot}/ts/aliases.d.ts", - "{projectRoot}/build/gulp/license-header.txt" + "{projectRoot}/ts/aliases.d.ts" ] }, "verify:ts-jquery": { @@ -829,7 +997,7 @@ "{projectRoot}/artifacts/ts/dx.all.d.ts", "{projectRoot}/ts/dx.all.d.ts", "{projectRoot}/ts/aliases.d.ts", - "{projectRoot}/build/gulp/modules_metadata.json" + "{projectRoot}/build/modules_metadata.json" ] }, "copy:ts-vendor": { @@ -856,8 +1024,7 @@ "inputs": [ "{projectRoot}/ts/**/*.d.ts", "{projectRoot}/ts/vendor/**/*", - "{projectRoot}/build/gulp/modules_metadata.json", - "{projectRoot}/build/gulp/license-header.txt", + "{projectRoot}/build/modules_metadata.json", "{workspaceRoot}/pnpm-lock.yaml" ], "outputs": [ @@ -1320,7 +1487,7 @@ "{projectRoot}/artifacts/npm/devextreme/bundles/dx.all.d.ts", "{projectRoot}/artifacts/npm/devextreme-internal/**/*.d.ts", "{projectRoot}/artifacts/npm/devextreme-internal/bundles/dx.all.d.ts", - "{projectRoot}/build/gulp/modules_metadata.json", + "{projectRoot}/build/modules_metadata.json", "{projectRoot}/ts/dx.all.d.ts", "{projectRoot}/ts/aliases.d.ts" ], @@ -1347,7 +1514,7 @@ "{projectRoot}/js/**/*.d.ts", "{projectRoot}/ts/dx.all.d.ts", "{projectRoot}/ts/aliases.d.ts", - "{projectRoot}/build/gulp/modules_metadata.json", + "{projectRoot}/build/modules_metadata.json", "{projectRoot}/artifacts/npm/devextreme/**/*.d.ts", "{projectRoot}/artifacts/npm/devextreme-internal/**/*.d.ts", "{workspaceRoot}/pnpm-lock.yaml" @@ -1382,7 +1549,7 @@ "{projectRoot}/license/**/*", "{projectRoot}/build/npm-bin/**/*", "{projectRoot}/build/npm-templates/**/*", - "{projectRoot}/build/gulp/modules_metadata.json", + "{projectRoot}/build/modules_metadata.json", "{projectRoot}/ts/dx.all.d.ts", "{projectRoot}/ts/aliases.d.ts", "webpackConfig", @@ -1507,16 +1674,31 @@ "pnpm nx build:transpile devextreme", "pnpm nx state-manager:optimize devextreme", "pnpm nx run-many --targets=bundle:debug,bundle:prod,build:vectormap,copy:vendor,build:aspnet,build:declarations --projects=devextreme --parallel -c production", - "pnpm nx build:npm devextreme", + "pnpm nx build:npm devextreme -c production", + "pnpm nx verify:licenses devextreme" + ] + }, + "production-internal": { + "env": { + "BUILD_INTERNAL_PACKAGE": "true" + }, + "commands": [ + "pnpm nx clean:artifacts devextreme", + "pnpm nx build:localization devextreme", + "pnpm nx build:transpile devextreme -c internal", + "pnpm nx state-manager:optimize devextreme", + "pnpm nx run-many --targets=bundle:debug,bundle:prod,build:vectormap,copy:vendor,build:aspnet --projects=devextreme --parallel -c production", + "pnpm nx build:declarations devextreme -c internal", + "pnpm nx build:npm devextreme -c production-internal", "pnpm nx verify:licenses devextreme" ] } } }, "build-dist": { - "executor": "nx:run-script", + "executor": "nx:run-commands", "options": { - "script": "build-dist" + "command": "pnpm nx run devextreme:build -c production" }, "inputs": [ "internalPackageEnv", @@ -1525,15 +1707,31 @@ "{workspaceRoot}/pnpm-lock.yaml" ], "outputs": [ - "{projectRoot}/artifacts", - "{projectRoot}/scss/bundles" + "{projectRoot}/artifacts" ], - "cache": true + "cache": true, + "configurations": { + "internal": { + "command": "pnpm nx run devextreme:build -c production-internal" + } + }, + "metadata": { + "description": "Production dist build. Use -c internal for BUILD_INTERNAL_PACKAGE parity." + } }, "build:dev": { - "executor": "nx:run-script", + "executor": "nx:run-commands", "options": { - "script": "build:dev" + "env": { + "DEVEXTREME_TEST_CI": "true" + }, + "commands": [ + "pnpm nx clean:artifacts devextreme", + "pnpm nx build:localization devextreme", + "pnpm nx build:transpile devextreme -c ci", + "pnpm nx run-many --targets=bundle:debug,build:vectormap,copy:vendor --projects=devextreme --parallel" + ], + "parallel": false }, "dependsOn": [ "^build" @@ -1555,12 +1753,22 @@ "{projectRoot}/js/__internal/core/localization/cldr-data", "{projectRoot}/js/__internal/core/localization/default_messages.ts" ], - "cache": true + "cache": true, + "metadata": { + "description": "Dev/CI test build. Skips prod bundles, aspnet, declarations, npm, and license checks." + } }, "build:systemjs": { - "executor": "nx:run-script", + "executor": "nx:run-commands", "options": { - "script": "build:systemjs" + "cwd": "{projectRoot}", + "parallel": true, + "commands": [ + "node testing/systemjs-builder.js --transpile=modules", + "node testing/systemjs-builder.js --transpile=testing", + "node testing/systemjs-builder.js --transpile=css", + "node testing/systemjs-builder.js --transpile=js-vendors" + ] }, "dependsOn": [ "build:dev" @@ -1589,7 +1797,6 @@ "{projectRoot}/testing/helpers/**/*", "{projectRoot}/testing/tests/**/*", "{projectRoot}/testing/systemjs-builder.js", - "{projectRoot}/build/gulp/systemjs.js", "{workspaceRoot}/pnpm-lock.yaml" ], "outputs": [ @@ -1601,13 +1808,37 @@ "cache": true }, "dev": { - "executor": "nx:run-script", - "options": { - "script": "dev" - }, + "executor": "nx:run-commands", + "cache": false, "dependsOn": [ - "^build" - ] + "build:dev" + ], + "options": { + "cwd": "{projectRoot}", + "command": "pnpm nx dev-watch devextreme" + } + }, + "dev-watch": { + "executor": "nx:run-commands", + "cache": false, + "options": { + "cwd": "{projectRoot}", + "parallel": true, + "commands": [ + "pnpm nx build:transpile:watch devextreme", + "pnpm nx build:devextreme-bundler-config:watch devextreme", + "pnpm nx bundle:watch devextreme", + "pnpm nx test-env devextreme" + ] + } + }, + "test-env": { + "executor": "nx:run-commands", + "cache": false, + "options": { + "command": "node ./testing/launch", + "cwd": "{projectRoot}" + } }, "lint": { "executor": "nx:noop", diff --git a/packages/devextreme/testing/tests.babelrc.json b/packages/devextreme/testing/tests.babelrc.json index 6ac0a3547bd5..bfeb03396f13 100644 --- a/packages/devextreme/testing/tests.babelrc.json +++ b/packages/devextreme/testing/tests.babelrc.json @@ -1,7 +1,7 @@ { "presets": [["@babel/preset-env", { "modules": false }]], "plugins": [ - ["transform-es2015-modules-commonjs", { "strict": false, "allowTopLevelThis": true }, "add-module-exports"], + ["@babel/plugin-transform-modules-commonjs", { "strict": false, "allowTopLevelThis": true }, "add-module-exports"], "@babel/plugin-transform-nullish-coalescing-operator", "@babel/plugin-transform-optional-chaining" ], "ignore": ["**/*.json"] diff --git a/packages/nx-infra-plugin/AGENTS.md b/packages/nx-infra-plugin/AGENTS.md index 6d34aebaf1c1..058a1f43d399 100644 --- a/packages/nx-infra-plugin/AGENTS.md +++ b/packages/nx-infra-plugin/AGENTS.md @@ -35,6 +35,7 @@ Each cross-executor concern (license banner, glob-aware copy, file concatenation - Throw inside `resolve` and `run`; the wrapper converts to `{ success: false }`. - Keep the default export shape `PromiseExecutor`. Tests import `from './executor'`. - Use `logger.verbose(...)` from `@nx/devkit` for diagnostic output in executors. Never use `console.log` or `logger.info` for routine progress messages — they pollute every run; `logger.verbose` surfaces only when callers pass `--verbose`. +- For long-running `watch` executors, reuse `src/utils/watch.ts` (`loadChokidar` + `watchWithChokidar`): it owns chokidar resolution from the project root, the debounced non-reentrant rebuild loop, and SIGINT/SIGTERM shutdown. Do not reimplement a watch loop. TypeScript watch is the exception — it uses `ts.createWatchProgram` directly (own file watching) rather than chokidar. ## Constraints @@ -65,17 +66,23 @@ Each behavior is owned by exactly ONE executor's canonical tests; consumers must 4. Update consumer imports in one batch. 5. Run the full validation pipeline. -## Migrated gulp tasks - -Gulp tasks that have been migrated to Nx executor targets (the gulp task is now a thin `shell.task` delegate): - -| Gulp task | Nx target | Notes | -| --------- | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `clean` | `clean:artifacts` | Uses `devextreme-nx-infra-plugin:clean` with `excludePatterns` to preserve `artifacts/css`, `artifacts/npm/devextreme/package.json`, and `artifacts/npm/devextreme-dist`. The gulp task delegates via `shell.task('pnpm nx clean:artifacts devextreme')`. | - -When migrating additional gulp tasks, follow the same pattern: - -1. Ensure the Nx target fully replicates the gulp task's behavior (including exclusion lists, configurations, etc.) -2. Replace the gulp task body with `shell.task('pnpm nx ')`. -3. Remove unused imports from the gulpfile. -4. Test that both `gulp ` and `pnpm nx ` produce identical results. +## Former gulp tasks (gulp fully removed) + +`gulpfile.js`, `build/gulp/`, and all gulp dependencies have been deleted outright — devextreme no longer depends on gulp or ships a gulp CLI. The Nx-consumed build assets that used to live under `build/gulp/` (`transpile-config.js`, `modules_metadata.json`, the `*.jst` templates) were relocated to purpose-named folders directly under `build/` (`build/transpile-config.js`, `build/modules_metadata.json`, `build/localization-templates/`, `build/vectormap-templates/`). The table below is a historical reference mapping each removed gulp task to its Nx replacement: + +| Former gulp task | Nx target | Notes | +| --------------------------------------- | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `clean` | `clean:artifacts` | Uses `devextreme-nx-infra-plugin:clean` with `excludePatterns` to preserve `artifacts/css`, `artifacts/npm/devextreme/package.json`, and `artifacts/npm/devextreme-dist`. Run directly via `pnpm nx clean:artifacts devextreme`. | +| `bundler-config-watch` | `build:devextreme-bundler-config:watch` | Uses `devextreme-nx-infra-plugin:concatenate-files` in `watch` mode (chokidar over the `build/bundle-templates/modules/parts` sources) with `additionalPasses` so a change rebuilds both `dx.custom.js` and the derived `dx.custom.config.js`, matching the old gulp `bundler-config` chain. `cache: false`. | +| `bundler-config` (non-watch) | `build:devextreme-bundler-config` | Run via `pnpm nx build:devextreme-bundler-config devextreme` (add `-c prod` for parity with the old uglified variant). | +| `generate-community-locales` | `build:community-localization` | Uses `devextreme-nx-infra-plugin:generate-community-locales` to normalize `js/localization/messages/*.json` against `en.json` in place (fills translations, English fallback for missing/`TODO` values, escapes quotes, inherits en's key order/formatting). Target is `cache: false` with no `outputs` (input dir == output dir — a source-normalization task, not a cached build artifact). Run via `pnpm nx build:community-localization devextreme`. | +| `test-env` | `test-env` | Uses `nx:run-commands` to wrap the existing `node ./testing/launch` script (compiles the QUnit runner, starts the test server on port 20060, opens the browser). `cache: false`, no outputs (long-running server). `cwd` is `{projectRoot}`. | +| `transpile-watch` | `build:transpile:watch` | `nx:run-commands` (parallel, `cache: false`) fanning out to the incremental watch targets `build:ts:internal:watch` (TypeScript watch program emitting `dist_ts`), `build:cjs:watch` (+ `-c production`), and `build:cjs:internal:watch` (+ `-c production`). Together these keep `artifacts/transpiled` and `artifacts/transpiled-renovation-npm` fresh, matching the old gulp JS + TS watch pipes. Watch capability lives in the `babel-transform` (per-file, chokidar + debounce, `watch` option) and `build-typescript` (`ts.createWatchProgram`, `watch` option) executors via the shared `src/utils/watch.ts` helper. `babel-transform` watch is intentionally file-level incremental and does **not** do an initial full transform — it relies on a preceding build having already populated its source directory (mirroring gulp-watch, which fed babel from a single in-memory TS-compiler stream with no such gap). Because `build:transpile`'s last step (`clean:dist-ts`) deletes `artifacts/dist_ts` — the exact directory `build:cjs:internal:watch` reads from and that runs right before `dev-watch` starts — `build:transpile:watch` itself (not the leaf `build:cjs:internal:watch` target, to avoid two parallel invocations each re-running the compile) declares `dependsOn: ["build:ts:internal"]`, so a real (or Nx-cache-restored) TS compile always repopulates `dist_ts/__internal` once, up front, before any of the fanned-out watch processes start; without it, whichever of the parallel TS-watch/babel-watch processes started first would decide — nondeterministically — whether the initial compile burst is picked up. | +| `transpile-tests` | `transpile:tests` | Uses `devextreme-nx-infra-plugin:babel-transform` with the flat (keyless) `./testing/tests.babelrc.json` config to transpile `testing/**/*.js` in place. `dependsOn: ["build:devextreme-bundler-config"]` reproduces the old gulp `series('bundler-config', …)` prerequisite. `cache: false` (in-place source transform, not a cached artifact). Run via `pnpm nx transpile:tests devextreme`. | +| `transpile-systemjs` | `build:systemjs` | Uses `nx:run-commands` (no custom executor — same precedent as `test-env`) to run `node testing/systemjs-builder.js --transpile=` for each mode (`modules`, `testing`, `css`, `js-vendors`) with `parallel: true` and `cwd: {projectRoot}`, mirroring the old `gulp.parallel`. The transform logic stays entirely in `testing/systemjs-builder.js` (untouched, guaranteeing byte parity); the devextreme-specific script path + mode list live in `project.json`, not in the plugin. `cache: true`, keeps the existing `inputs`/`outputs`/`dependsOn: [build:dev]`. CI runs `pnpm exec nx build:systemjs` directly. | +| `js-bundles-watch` | `bundle:watch` | Webpack watch via `devextreme-nx-infra-plugin:bundle` with `watch: true`. Does not run `compress:bundles`. | +| `js-bundles-prod` | `bundle:prod` | Use `pnpm nx bundle:prod devextreme` (add `-c production` for uglify/dist parity). | +| `js-bundles-debug` | `bundle:debug` | Use `pnpm nx bundle:debug devextreme` (add `-c production` for uglify/dist parity). | +| `dev-watch` | `dev-watch` | `nx:run-commands` (parallel, `cache: false`, `cwd: {projectRoot}`) fanning out to the four already-migrated watch targets — `build:transpile:watch`, `build:devextreme-bundler-config:watch`, `bundle:watch`, `test-env` — matching the old `gulp.parallel('transpile-watch', 'bundler-config-watch', 'js-bundles-watch', 'test-env')`. | +| `dev` | `dev` | `nx:run-commands` with `dependsOn: ["build:dev"]`; its own command then runs `pnpm nx dev-watch devextreme`, reproducing the old `gulp.series('default-dev', 'dev-watch')` build-then-watch sequencing. Reuses `build:dev` as the initial-build step rather than replicating gulp's lighter `default-dev` variant (which skipped `clean` and the one-shot `js-bundles-debug` build) — an accepted small startup-cost tradeoff. | +| `default` / `main-batch` / `misc-batch` | `build`, `build-dist`, `build:dev` | Gulp orchestration (`gulp.series` / `gulp-multi-process`) is gone. Native Nx `build` covers the non-uglify default batch; `build -c production` (+ `build:npm -c production`) matches the old `gulp default --uglify`; `build -c production-internal` matches uglify + `BUILD_INTERNAL_PACKAGE`; `build -c testing` matches `BUILD_TEST_INTERNAL_PACKAGE`. `build-dist` is a thin wrapper (`pnpm nx run devextreme:build -c production`, `-c internal` → `production-internal`). `build:dev` is the former `DEVEXTREME_TEST_CI` path: clean → localization → `build:transpile -c ci` → parallel `bundle:debug,build:vectormap,copy:vendor` (skips prod bundles, aspnet, declarations, npm, license checks). npm scripts `build:dev` / `build-dist` / `clean` / `transpile-tests` call Nx directly. | diff --git a/packages/nx-infra-plugin/executors.json b/packages/nx-infra-plugin/executors.json index 1be9f2301656..aa8b5c56283a 100644 --- a/packages/nx-infra-plugin/executors.json +++ b/packages/nx-infra-plugin/executors.json @@ -60,6 +60,11 @@ "schema": "./src/executors/localization/schema.json", "description": "Generate localization message files and TypeScript CLDR data modules" }, + "generate-community-locales": { + "implementation": "./src/executors/generate-community-locales/executor", + "schema": "./src/executors/generate-community-locales/schema.json", + "description": "Normalize community locale message files against the default locale dictionary" + }, "concatenate-files": { "implementation": "./src/executors/concatenate-files/executor", "schema": "./src/executors/concatenate-files/schema.json", diff --git a/packages/nx-infra-plugin/src/executors/add-license-headers/executor.e2e.spec.ts b/packages/nx-infra-plugin/src/executors/add-license-headers/executor.e2e.spec.ts index 80c7a7fe8ba7..d3061a10dac4 100644 --- a/packages/nx-infra-plugin/src/executors/add-license-headers/executor.e2e.spec.ts +++ b/packages/nx-infra-plugin/src/executors/add-license-headers/executor.e2e.spec.ts @@ -11,7 +11,7 @@ describe('AddLicenseHeadersExecutor E2E', () => { async function setupLicenseHeaderTemplate(): Promise { const projectDir = path.join(tempDir, 'packages', 'test-lib'); - const buildDir = path.join(projectDir, 'build', 'gulp'); + const buildDir = path.join(projectDir, 'build'); fs.mkdirSync(buildDir, { recursive: true }); await writeFileText( path.join(buildDir, 'license-header.txt'), @@ -132,7 +132,7 @@ describe('AddLicenseHeadersExecutor E2E', () => { it('should support custom license template', async () => { const projectDir = path.join(tempDir, 'packages', 'test-lib'); - const buildDir = path.join(projectDir, 'build', 'gulp'); + const buildDir = path.join(projectDir, 'build'); fs.mkdirSync(buildDir, { recursive: true }); await writeFileText( @@ -151,7 +151,7 @@ describe('AddLicenseHeadersExecutor E2E', () => { const options: AddLicenseHeadersExecutorSchema = { targetDirectory: './npm', packageJsonPath: './package.json', - licenseTemplateFile: './build/gulp/license-header.txt', + licenseTemplateFile: './build/license-header.txt', eulaUrl: 'https://js.devexpress.com/Licensing/', prependAfterLicense: '"use strict";\n\n', includePatterns: ['**/*.js'], @@ -293,7 +293,7 @@ export const value = 42; const options: AddLicenseHeadersExecutorSchema = { targetDirectory: './npm', packageJsonPath: './package.json', - licenseTemplateFile: './build/gulp/license-header.txt', + licenseTemplateFile: './build/license-header.txt', eulaUrl: 'https://js.devexpress.com/Licensing/', includePatterns: ['**/*.js'], commentType: '*', @@ -316,7 +316,7 @@ export const value = 42; const options: AddLicenseHeadersExecutorSchema = { targetDirectory: './npm', packageJsonPath: './package.json', - licenseTemplateFile: './build/gulp/license-header.txt', + licenseTemplateFile: './build/license-header.txt', eulaUrl: 'https://js.devexpress.com/Licensing/', includePatterns: ['**/*.js'], }; diff --git a/packages/nx-infra-plugin/src/executors/babel-transform/babel-transform.impl.ts b/packages/nx-infra-plugin/src/executors/babel-transform/babel-transform.impl.ts index 588c25184816..8953370bf9e1 100644 --- a/packages/nx-infra-plugin/src/executors/babel-transform/babel-transform.impl.ts +++ b/packages/nx-infra-plugin/src/executors/babel-transform/babel-transform.impl.ts @@ -3,10 +3,12 @@ import * as fs from 'fs-extra'; import { stat } from 'fs/promises'; import * as babel from '@babel/core'; import { glob } from 'glob'; +import { minimatch } from 'minimatch'; import { logger } from '@nx/devkit'; import { createExecutor } from '../../utils/create-executor'; import { toPosixPath } from '../../utils/path-resolver'; import { copyFile } from '../../utils/file-operations'; +import { watchWithChokidar } from '../../utils/watch'; import { copyDirectory } from '../copy-files/copy-files.impl'; import { stripDebug } from '../compress/compress.impl'; import { BabelTransformAsset, BabelTransformExecutorSchema } from './schema'; @@ -17,7 +19,7 @@ const ERROR_ASSET_NOT_FOUND = (source: string) => `Asset source not found: ${sou function loadBabelConfig( projectRoot: string, configPath: string, - configKey: string, + configKey?: string, ): babel.TransformOptions { const fullConfigPath = path.join(projectRoot, configPath); @@ -27,6 +29,10 @@ function loadBabelConfig( const config = require(fullConfigPath); + if (!configKey) { + return config; + } + if (!config[configKey]) { const availableKeys = Object.keys(config).join(', '); throw new Error(`Config key '${configKey}' not found. Available: ${availableKeys}`); @@ -45,6 +51,17 @@ function applyExtensionRenames(filePath: string, renameExtensions: Record= 0 + ? cleanPattern.substring(0, globIndex).replace(/\/$/, '') + : cleanPattern.split('/')[0]; + return path.join(projectRoot, patternBase); +} + async function transformFile( filePath: string, projectRoot: string, @@ -69,13 +86,7 @@ async function transformFile( throw new Error(`Babel returned no code for ${filePath}`); } - const cleanPattern = sourcePattern.replace(/^\.\//, ''); - const globIndex = cleanPattern.search(/\*+/); - const patternBase = - globIndex > 0 - ? cleanPattern.substring(0, globIndex).replace(/\/$/, '') - : cleanPattern.split('/')[0]; - const sourceBase = path.join(projectRoot, patternBase); + const sourceBase = resolveSourceBase(projectRoot, sourcePattern); const relativePath = path.relative(sourceBase, filePath); const renamedRelativePath = applyExtensionRenames(relativePath, renameExtensions); @@ -116,6 +127,7 @@ interface ResolvedBabelTransform { globPattern: string; excludePatterns: string[]; resolvedAssets: ResolvedBabelTransformAsset[]; + watchDir: string; } function resolveAssets( @@ -130,6 +142,98 @@ function resolveAssets( })); } +function transformOne( + resolved: ResolvedBabelTransform, + options: BabelTransformExecutorSchema, + filePath: string, +): Promise { + return transformFile( + filePath, + resolved.projectRoot, + options.outDir, + options.sourcePattern, + resolved.babelConfig, + resolved.removeDebug, + resolved.renameExtensions, + ); +} + +async function copyResolvedAssets(resolved: ResolvedBabelTransform, outDir: string): Promise { + if (resolved.resolvedAssets.length === 0) { + return; + } + logger.verbose(`Copying ${resolved.resolvedAssets.length} asset entries to ${outDir}`); + for (const asset of resolved.resolvedAssets) { + await copyResolvedAsset(asset); + } +} + +async function runFullTransform( + resolved: ResolvedBabelTransform, + options: BabelTransformExecutorSchema, +): Promise { + const sourceFiles = await glob(resolved.globPattern, { + absolute: true, + ignore: resolved.excludePatterns, + }); + + if (sourceFiles.length === 0) { + logger.warn(ERROR_NO_FILES_MATCHED); + throw new Error(ERROR_NO_FILES_MATCHED); + } + + logger.verbose( + `Transforming ${sourceFiles.length} files with config '${options.configKey ?? 'default'}'...`, + ); + if (resolved.removeDebug) { + logger.verbose('Debug blocks will be removed (production mode)'); + } + + await Promise.all(sourceFiles.map((file) => transformOne(resolved, options, file))); + + logger.verbose(`Successfully transformed ${sourceFiles.length} files to ${options.outDir}`); + + await copyResolvedAssets(resolved, options.outDir); +} + +// Deletions are ignored on purpose — gulp-watch left stale output in place too. +const WATCHED_EVENTS = new Set(['add', 'change']); + +function isRelevantSource( + resolved: ResolvedBabelTransform, + event: string, + filePath: string, +): boolean { + if (!WATCHED_EVENTS.has(event)) { + return false; + } + const posixPath = toPosixPath(filePath); + if (!minimatch(posixPath, resolved.globPattern)) { + return false; + } + return !resolved.excludePatterns.some((pattern) => minimatch(posixPath, pattern)); +} + +async function runWatch( + resolved: ResolvedBabelTransform, + options: BabelTransformExecutorSchema, +): Promise { + // dist_ts may not exist yet if the TS watcher hasn't emitted anything — chokidar needs the dir to attach. + await fs.ensureDir(resolved.watchDir); + await copyResolvedAssets(resolved, options.outDir); + + await watchWithChokidar({ + projectRoot: resolved.projectRoot, + watchTargets: resolved.watchDir, + label: `babel-transform watch (${options.outDir})`, + eventFilter: (event, filePath) => isRelevantSource(resolved, event, filePath), + onRebuild: async (events) => { + const files = [...new Set(events.map((e) => e.filePath))]; + await Promise.all(files.map((file) => transformOne(resolved, options, file))); + }, + }); +} + export default createExecutor({ name: 'BabelTransform', resolve: (options, { projectRoot }) => { @@ -147,6 +251,7 @@ export default createExecutor { - const sourceFiles = await glob(resolved.globPattern, { - absolute: true, - ignore: resolved.excludePatterns, - }); - - if (sourceFiles.length === 0) { - logger.warn(ERROR_NO_FILES_MATCHED); - throw new Error(ERROR_NO_FILES_MATCHED); + if (options.watch) { + await runWatch(resolved, options); + return; } - logger.verbose( - `Transforming ${sourceFiles.length} files with config '${options.configKey}'...`, - ); - if (resolved.removeDebug) { - logger.verbose('Debug blocks will be removed (production mode)'); - } - - await Promise.all( - sourceFiles.map((file) => - transformFile( - file, - resolved.projectRoot, - options.outDir, - options.sourcePattern, - resolved.babelConfig, - resolved.removeDebug, - resolved.renameExtensions, - ), - ), - ); - - logger.verbose(`Successfully transformed ${sourceFiles.length} files to ${options.outDir}`); - - if (resolved.resolvedAssets.length > 0) { - logger.verbose( - `Copying ${resolved.resolvedAssets.length} asset entries to ${options.outDir}`, - ); - for (const asset of resolved.resolvedAssets) { - await copyResolvedAsset(asset); - } - } + await runFullTransform(resolved, options); }, }); diff --git a/packages/nx-infra-plugin/src/executors/babel-transform/executor.e2e.spec.ts b/packages/nx-infra-plugin/src/executors/babel-transform/executor.e2e.spec.ts index 36186b5a2de4..8ab3170fe913 100644 --- a/packages/nx-infra-plugin/src/executors/babel-transform/executor.e2e.spec.ts +++ b/packages/nx-infra-plugin/src/executors/babel-transform/executor.e2e.spec.ts @@ -12,6 +12,46 @@ import { writeFileText, readFileText } from '../../utils'; const WORKSPACE_ROOT = findWorkspaceRoot(); +type WatchHandler = (event: string, file: string) => void; + +function getWatchHandler(): WatchHandler | undefined { + return (globalThis as unknown as { __babelWatchHandler?: WatchHandler }).__babelWatchHandler; +} + +// Mock chokidar so the shared watch util's projectRequire('chokidar') resolves; the mock +// captures the 'all' handler on globalThis so the test can drive a rebuild deterministically. +function writeChokidarMock(projectRoot: string): void { + const chokidarDir = path.join(projectRoot, 'node_modules', 'chokidar'); + fs.mkdirSync(chokidarDir, { recursive: true }); + fs.writeFileSync(path.join(chokidarDir, 'package.json'), JSON.stringify({ main: 'index.js' })); + fs.writeFileSync( + path.join(chokidarDir, 'index.js'), + [ + 'module.exports = {', + ' watch: function watch() {', + ' return {', + ' on: function on(event, handler) { globalThis.__babelWatchHandler = handler; return this; },', + ' close: function close() { return Promise.resolve(); },', + ' };', + ' },', + '};', + '', + ].join('\n'), + ); +} + +async function waitFor( + predicate: () => Promise | boolean, + timeoutMs = 3000, +): Promise { + const start = Date.now(); + while (Date.now() - start < timeoutMs) { + if (await predicate()) return; + await new Promise((resolve) => setTimeout(resolve, 20)); + } + throw new Error('waitFor timed out'); +} + const BABEL_CONFIG = ` 'use strict'; @@ -66,7 +106,7 @@ describe('BabelTransformExecutor E2E', () => { process.chdir(projectDir); - const buildDir = path.join(projectDir, 'build', 'gulp'); + const buildDir = path.join(projectDir, 'build'); fs.mkdirSync(buildDir, { recursive: true }); await writeFileText(path.join(buildDir, 'transpile-config.js'), BABEL_CONFIG); @@ -122,7 +162,7 @@ export function helper() { ])('$configKey config', ({ configKey, outDir, shouldContain, shouldNotContain }) => { it('should transform files correctly', async () => { const options: BabelTransformExecutorSchema = { - babelConfigPath: './build/gulp/transpile-config.js', + babelConfigPath: './build/transpile-config.js', configKey, sourcePattern: './js/**/*.js', outDir, @@ -145,7 +185,7 @@ export function helper() { it('should forward removeDebug option to stripDebug helper', async () => { const options: BabelTransformExecutorSchema = { - babelConfigPath: './build/gulp/transpile-config.js', + babelConfigPath: './build/transpile-config.js', configKey: 'cjs', sourcePattern: './js/**/*.js', outDir: './artifacts/transpiled-prod', @@ -171,7 +211,7 @@ module.exports = { }, }; `; - const minimalConfigPath = './build/gulp/minimal-config.js'; + const minimalConfigPath = './build/minimal-config.js'; beforeEach(async () => { await writeFileText(path.join(projectDir, minimalConfigPath), MINIMAL_BABEL_CONFIG); @@ -263,3 +303,113 @@ module.exports = { }, 30000); }); }); + +describe('BabelTransformExecutor flat config + watch', () => { + let tempDir: string; + let context = createMockContext(); + let projectDir: string; + let savedCwd: string; + + const FLAT_CONFIG = JSON.stringify({ comments: false }); + + beforeEach(async () => { + savedCwd = process.cwd(); + tempDir = createTempDir('nx-babel-watch-e2e-'); + context = createMockContext({ root: tempDir }); + projectDir = path.join(tempDir, 'packages', 'test-lib'); + fs.mkdirSync(projectDir, { recursive: true }); + await writeFileText( + path.join(projectDir, 'package.json'), + JSON.stringify({ name: 'test-lib' }), + ); + process.chdir(projectDir); + + // Flat (keyless) babel config, mirroring testing/tests.babelrc.json usage. + await writeFileText(path.join(projectDir, 'babel.flat.json'), FLAT_CONFIG); + + const jsDir = path.join(projectDir, 'js'); + fs.mkdirSync(jsDir, { recursive: true }); + await writeFileText( + path.join(jsDir, 'a.js'), + 'const a = 1; // comment-a\nmodule.exports = a;\n', + ); + await writeFileText( + path.join(jsDir, 'b.js'), + 'const b = 2; // comment-b\nmodule.exports = b;\n', + ); + }); + + afterEach(() => { + process.chdir(savedCwd); + cleanupTempDir(tempDir); + delete (globalThis as unknown as { __babelWatchHandler?: WatchHandler }).__babelWatchHandler; + }); + + it('uses the whole module as the babel config when configKey is omitted', async () => { + const options: BabelTransformExecutorSchema = { + babelConfigPath: './babel.flat.json', + sourcePattern: './js/**/*.js', + outDir: './out', + }; + + const result = await executor(options, context); + expect(result.success).toBe(true); + + const aContent = await readFileText(path.join(projectDir, 'out', 'a.js')); + expect(aContent).not.toContain('comment-a'); + }, 30000); + + it('watch mode re-transforms only the changed file', async () => { + writeChokidarMock(projectDir); + + const options: BabelTransformExecutorSchema = { + babelConfigPath: './babel.flat.json', + sourcePattern: './js/**/*.js', + outDir: './out', + watch: true, + }; + + const aOut = path.join(projectDir, 'out', 'a.js'); + const bOut = path.join(projectDir, 'out', 'b.js'); + + const originalOnce = process.once; + let stopWatch: (() => void) | undefined; + let run: Promise<{ success: boolean }> | undefined; + + (process as unknown as { once: typeof process.once }).once = (( + event: string, + handler: () => void, + ) => { + if (event === 'SIGINT' || event === 'SIGTERM') { + stopWatch = handler; + return process; + } + return originalOnce.call(process, event, handler as never); + }) as typeof process.once; + + try { + run = executor(options, context); + + await waitFor(() => typeof getWatchHandler() === 'function'); + + // Only a.js changes; b.js must stay untouched (file-level incremental). + getWatchHandler()?.('change', path.join(projectDir, 'js', 'a.js')); + + await waitFor(() => fs.existsSync(aOut)); + expect(await readFileText(aOut)).not.toContain('comment-a'); + expect(fs.existsSync(bOut)).toBe(false); + + stopWatch?.(); + stopWatch = undefined; + + expect((await run).success).toBe(true); + run = undefined; + } finally { + stopWatch?.(); + if (run) { + await run; + } + (process as unknown as { once: typeof process.once }).once = originalOnce; + } + }, 30000); +}); diff --git a/packages/nx-infra-plugin/src/executors/babel-transform/schema.json b/packages/nx-infra-plugin/src/executors/babel-transform/schema.json index 79f2256d12e7..85c5f2ead9a6 100644 --- a/packages/nx-infra-plugin/src/executors/babel-transform/schema.json +++ b/packages/nx-infra-plugin/src/executors/babel-transform/schema.json @@ -6,11 +6,11 @@ "properties": { "babelConfigPath": { "type": "string", - "description": "Path to Babel config file relative to project root (e.g., './build/gulp/transpile-config.js')" + "description": "Path to Babel config file relative to project root (e.g., './build/transpile-config.js')" }, "configKey": { "type": "string", - "description": "Key in the config object to use (e.g., 'cjs', 'tsCjs', 'esm')" + "description": "Key in the config object to use (e.g., 'cjs', 'tsCjs', 'esm'). Omit to use the loaded module as the config directly (e.g., a flat .babelrc.json)." }, "sourcePattern": { "type": "string", @@ -59,11 +59,15 @@ "to" ] } + }, + "watch": { + "type": "boolean", + "default": false, + "description": "Watch the source pattern and re-transform files as they change (file-level incremental rebuild)." } }, "required": [ "babelConfigPath", - "configKey", "sourcePattern", "outDir" ] diff --git a/packages/nx-infra-plugin/src/executors/babel-transform/schema.ts b/packages/nx-infra-plugin/src/executors/babel-transform/schema.ts index c940ca84a383..00c63dced7c2 100644 --- a/packages/nx-infra-plugin/src/executors/babel-transform/schema.ts +++ b/packages/nx-infra-plugin/src/executors/babel-transform/schema.ts @@ -5,11 +5,12 @@ export interface BabelTransformAsset { export interface BabelTransformExecutorSchema { babelConfigPath: string; - configKey: string; + configKey?: string; sourcePattern: string; excludePatterns?: string[]; outDir: string; removeDebug?: boolean; renameExtensions?: Record; copyAssets?: BabelTransformAsset[]; + watch?: boolean; } diff --git a/packages/nx-infra-plugin/src/executors/build-typescript/build-typescript.impl.ts b/packages/nx-infra-plugin/src/executors/build-typescript/build-typescript.impl.ts index 8b9d31ba0ce3..4db1d4c087b9 100644 --- a/packages/nx-infra-plugin/src/executors/build-typescript/build-typescript.impl.ts +++ b/packages/nx-infra-plugin/src/executors/build-typescript/build-typescript.impl.ts @@ -239,6 +239,62 @@ function emitStandard(program: ts.Program): EmitProgramResult { return { success: true }; } +// Same tsc-alias resolution as the one-shot build, applied per incremental re-emit. +async function runWatch(config: ResolvedConfig): Promise { + const aliasTranspileFunc = + config.resolvePaths && config.resolvePathsBaseDir + ? await createAliasTranspileFunc(config.tsconfigPath, config.resolvePathsBaseDir) + : undefined; + + await ensureDir(config.outDir); + + const reportDiagnostic = (diagnostic: ts.Diagnostic): void => { + formatDiagnostics([diagnostic]).forEach((message) => logger.error(message)); + }; + const reportWatchStatus = (diagnostic: ts.Diagnostic): void => { + logger.verbose(ts.flattenDiagnosticMessageText(diagnostic.messageText, NEWLINE_CHAR)); + }; + + const compilerOptions: ts.CompilerOptions = { + outDir: config.outDir, + ...(config.resolvePaths ? {} : { paths: {} }), + }; + + const host = ts.createWatchCompilerHost( + config.tsconfigPath, + compilerOptions, + ts.sys, + ts.createSemanticDiagnosticsBuilderProgram, + reportDiagnostic, + reportWatchStatus, + ); + + const emitWriteFile: ts.WriteFileCallback = (filePath, data, writeByteOrderMark) => { + let content = data; + if (aliasTranspileFunc && config.resolvePathsBaseDir) { + const normalizedFilePath = replacePathPrefix( + filePath, + config.outDir, + config.resolvePathsBaseDir, + ); + content = aliasTranspileFunc(normalizedFilePath, data); + } + ts.sys.writeFile(filePath, content, writeByteOrderMark); + }; + (host as { writeFile?: ts.WriteFileCallback }).writeFile = emitWriteFile; + const watchProgram = ts.createWatchProgram(host); + logger.verbose(`TypeScript watch is emitting to ${config.outDir}...`); + + await new Promise((resolve) => { + const stop = (): void => { + watchProgram.close(); + resolve(); + }; + process.once('SIGINT', stop); + process.once('SIGTERM', stop); + }); +} + interface ResolvedBuildTypescript { config: ResolvedConfig; } @@ -250,7 +306,12 @@ export default createExecutor { + run: async ({ config }, options) => { + if (options.watch) { + await runWatch(config); + return; + } + const { content: tsconfigContent, compilerOptions } = await loadTsConfig(config.tsconfigPath); compilerOptions.outDir = config.outDir; await ensureDir(config.outDir); diff --git a/packages/nx-infra-plugin/src/executors/build-typescript/executor.e2e.spec.ts b/packages/nx-infra-plugin/src/executors/build-typescript/executor.e2e.spec.ts index 46f72350a0f9..a7db0e3e2460 100644 --- a/packages/nx-infra-plugin/src/executors/build-typescript/executor.e2e.spec.ts +++ b/packages/nx-infra-plugin/src/executors/build-typescript/executor.e2e.spec.ts @@ -172,4 +172,63 @@ describe('BuildTypescriptExecutor E2E', () => { expect(result.success).toBe(false); }); }); + + describe('watch mode', () => { + async function waitFor(predicate: () => boolean, timeoutMs = 20000): Promise { + const start = Date.now(); + while (Date.now() - start < timeoutMs) { + if (predicate()) return; + await new Promise((resolve) => setTimeout(resolve, 50)); + } + throw new Error('waitFor timed out'); + } + + it('emits to outDir with alias resolution and stops on SIGINT', async () => { + const options: BuildTypescriptExecutorSchema = { + module: 'esm', + tsconfig: './tsconfig.esm.json', + outDir: './npm/esm-watch', + resolvePaths: true, + resolvePathsBaseDir: './src', + watch: true, + }; + + const outIndex = path.join(projectDir, 'npm', 'esm-watch', 'index.js'); + + const originalOnce = process.once; + let stopWatch: (() => void) | undefined; + let run: Promise<{ success: boolean }> | undefined; + + (process as unknown as { once: typeof process.once }).once = (( + event: string, + handler: () => void, + ) => { + if (event === 'SIGINT' || event === 'SIGTERM') { + stopWatch = handler; + return process; + } + return originalOnce.call(process, event, handler as never); + }) as typeof process.once; + + try { + run = executor(options, context); + + await waitFor(() => fs.existsSync(outIndex)); + const indexContent = await readFileText(outIndex); + expect(indexContent).not.toContain('@lib/utils'); + + stopWatch?.(); + stopWatch = undefined; + + expect((await run).success).toBe(true); + run = undefined; + } finally { + stopWatch?.(); + if (run) { + await run; + } + (process as unknown as { once: typeof process.once }).once = originalOnce; + } + }, 30000); + }); }); diff --git a/packages/nx-infra-plugin/src/executors/build-typescript/schema.json b/packages/nx-infra-plugin/src/executors/build-typescript/schema.json index 41c9036fcdf4..b77bb1964ee8 100644 --- a/packages/nx-infra-plugin/src/executors/build-typescript/schema.json +++ b/packages/nx-infra-plugin/src/executors/build-typescript/schema.json @@ -43,6 +43,11 @@ "resolvePathsBaseDir": { "type": "string", "description": "Base directory for path alias resolution (used as aliasRoot for tsc-alias). Relative to project root. Required when resolvePaths is true. Example: './js' for DevExtreme's __internal TypeScript compilation." + }, + "watch": { + "type": "boolean", + "default": false, + "description": "Watch the sources via the TypeScript incremental watch program and re-emit changed files to outDir." } } } diff --git a/packages/nx-infra-plugin/src/executors/build-typescript/schema.ts b/packages/nx-infra-plugin/src/executors/build-typescript/schema.ts index 1fa42424af72..7c3b2e10ccfe 100644 --- a/packages/nx-infra-plugin/src/executors/build-typescript/schema.ts +++ b/packages/nx-infra-plugin/src/executors/build-typescript/schema.ts @@ -6,4 +6,5 @@ export interface BuildTypescriptExecutorSchema { outDir?: string; resolvePaths?: boolean; resolvePathsBaseDir?: string; + watch?: boolean; } diff --git a/packages/nx-infra-plugin/src/executors/bundle/bundle.impl.ts b/packages/nx-infra-plugin/src/executors/bundle/bundle.impl.ts index f22714cf467c..3c2e8824512d 100644 --- a/packages/nx-infra-plugin/src/executors/bundle/bundle.impl.ts +++ b/packages/nx-infra-plugin/src/executors/bundle/bundle.impl.ts @@ -51,6 +51,7 @@ function createWebpackConfig( mode: 'debug' | 'production', projectRoot: string, sourceMap: boolean, + watch: boolean, ): Configuration { const config: Configuration = { ...baseConfig, @@ -68,6 +69,10 @@ function createWebpackConfig( minimize: false, }; + if (watch) { + config.mode = 'development'; + } + if (mode === 'debug') { config.output = { ...(config.output || {}), @@ -98,6 +103,19 @@ function createWebpackConfig( return config; } +function collectWebpackErrorMessages(stats: Stats): string { + const info = stats.toJson({ errors: true }); + return (info.errors || []).map((entry) => entry.message).join('\n'); +} + +function logWebpackWarnings(stats: Stats): void { + if (!stats.hasWarnings()) { + return; + } + const info = stats.toJson({ warnings: true }); + (info.warnings || []).forEach((warning) => logger.warn(warning.message)); +} + function runWebpack(webpack: typeof import('webpack'), config: Configuration): Promise { return new Promise((resolve, reject) => { webpack(config, (err, stats) => { @@ -110,9 +128,7 @@ function runWebpack(webpack: typeof import('webpack'), config: Configuration): P return; } if (stats.hasErrors()) { - const info = stats.toJson({ errors: true }); - const errorMessages = (info.errors || []).map((entry) => entry.message).join('\n'); - reject(new Error(errorMessages)); + reject(new Error(collectWebpackErrorMessages(stats))); return; } resolve(stats); @@ -120,6 +136,88 @@ function runWebpack(webpack: typeof import('webpack'), config: Configuration): P }); } +async function runWebpackWatch( + webpack: typeof import('webpack'), + config: Configuration, + onSuccess: (stats: Stats) => Promise, +): Promise { + await new Promise((resolve) => { + const compiler = webpack(config); + let watching: ReturnType | undefined; + let isClosing = false; + + let postBuildChain = Promise.resolve(); + + const removeSignalHandlers = (): void => { + process.removeListener('SIGINT', stopWatching); + process.removeListener('SIGTERM', stopWatching); + }; + + const finishShutdown = (): void => { + void postBuildChain.finally(() => { + resolve(); + }); + }; + + const stopWatching = (): void => { + if (isClosing) { + return; + } + isClosing = true; + removeSignalHandlers(); + + if (!watching) { + finishShutdown(); + return; + } + watching.close(() => { + setTimeout(finishShutdown, 100); + }); + }; + + watching = compiler.watch( + { + aggregateTimeout: 200, + ignored: /node_modules/, + ...(process.platform === 'win32' ? { poll: 1000 } : {}), + }, + (err, stats) => { + if (isClosing) { + return; + } + if (err) { + logger.error(err.message); + return; + } + if (!stats) { + return; + } + if (stats.hasErrors()) { + logger.error(collectWebpackErrorMessages(stats)); + return; + } + + logWebpackWarnings(stats); + + postBuildChain = postBuildChain + .then(() => onSuccess(stats)) + .then(() => { + logger.info('bundle watch: rebuild complete'); + }) + .catch((error) => { + const message = error instanceof Error ? error.message : String(error); + logger.error(`bundle watch post-build failed: ${message}`); + }); + }, + ); + + logger.info('bundle watch mode is watching for changes...'); + + process.once('SIGINT', stopWatching); + process.once('SIGTERM', stopWatching); + }); +} + function loadWebpackConfig(resolvedConfigPath: string): Configuration { if (!fs.existsSync(resolvedConfigPath)) { throw new Error(ERROR_MESSAGES.WEBPACK_CONFIG_NOT_FOUND(resolvedConfigPath)); @@ -146,6 +244,7 @@ interface ResolvedBundle { resolvedOutDir: string; mode: 'debug' | 'production'; sourceMap: boolean; + watch: boolean; webpack: typeof import('webpack'); baseConfig: Configuration; licenseHeaders?: ResolvedLicenseHeaders; @@ -195,6 +294,7 @@ export default createExecutor({ mode, webpackConfigPath = './webpack.config.js', sourceMap = true, + watch = false, applyLicenseHeaders, } = options; @@ -217,6 +317,7 @@ export default createExecutor({ resolvedOutDir, mode, sourceMap, + watch, webpack, baseConfig, licenseHeaders, @@ -232,19 +333,31 @@ export default createExecutor({ resolved.mode, resolved.projectRoot, resolved.sourceMap, + resolved.watch, ); logger.verbose(`Bundling ${resolved.entries.length} entries in ${resolved.mode} mode`); logger.verbose(`Source: ${resolved.resolvedSourceDir}`); logger.verbose(`Output: ${resolved.resolvedOutDir}`); + const applyHeadersIfNeeded = async (): Promise => { + if (resolved.licenseHeaders) { + await applyLicenseHeadersStep(resolved.resolvedOutDir, resolved.licenseHeaders); + } + }; + + if (resolved.watch) { + await runWebpackWatch(resolved.webpack, config, async (stats) => { + const assets = Object.keys(stats.compilation.assets); + logger.verbose(`Produced ${assets.length} bundle(s): ${assets.join(', ')}`); + await applyHeadersIfNeeded(); + }); + return; + } + try { const stats = await runWebpack(resolved.webpack, config); - - if (stats.hasWarnings()) { - const info = stats.toJson({ warnings: true }); - (info.warnings || []).forEach((warning) => logger.warn(warning.message)); - } + logWebpackWarnings(stats); const assets = Object.keys(stats.compilation.assets); logger.verbose(`Produced ${assets.length} bundle(s): ${assets.join(', ')}`); @@ -253,8 +366,6 @@ export default createExecutor({ throw new Error(ERROR_MESSAGES.WEBPACK_ERROR(message)); } - if (resolved.licenseHeaders) { - await applyLicenseHeadersStep(resolved.resolvedOutDir, resolved.licenseHeaders); - } + await applyHeadersIfNeeded(); }, }); diff --git a/packages/nx-infra-plugin/src/executors/bundle/executor.e2e.spec.ts b/packages/nx-infra-plugin/src/executors/bundle/executor.e2e.spec.ts index 3a7a05d7c419..a5f19f85dcbd 100644 --- a/packages/nx-infra-plugin/src/executors/bundle/executor.e2e.spec.ts +++ b/packages/nx-infra-plugin/src/executors/bundle/executor.e2e.spec.ts @@ -108,7 +108,7 @@ describe('BundleExecutor E2E', () => { version: '7.8.9', }); - const buildDir = path.join(projectDir, 'build', 'gulp'); + const buildDir = path.join(projectDir, 'build'); fs.mkdirSync(buildDir, { recursive: true }); await writeFileText( path.join(buildDir, 'license-header.txt'), @@ -122,7 +122,7 @@ describe('BundleExecutor E2E', () => { mode: 'production', webpackConfigPath: './webpack.config.js', applyLicenseHeaders: { - licenseTemplateFile: './build/gulp/license-header.txt', + licenseTemplateFile: './build/license-header.txt', separator: '', includePatterns: ['dx.*.js'], }, @@ -135,4 +135,46 @@ describe('BundleExecutor E2E', () => { expect(bundleContent).toMatch(/^\/\*!/); expect(bundleContent).toContain('DevExtreme (dx.all.js)'); }, 60000); + + async function waitUntil( + predicate: () => boolean | Promise, + timeoutMs = 30000, + intervalMs = 200, + ): Promise { + const startedAt = Date.now(); + + while (Date.now() - startedAt < timeoutMs) { + if (await predicate()) { + return; + } + await new Promise((resolve) => setTimeout(resolve, intervalMs)); + } + + throw new Error(`Timed out after ${timeoutMs}ms`); + } + + it('should produce bundles on initial watch compilation', async () => { + const outputPath = path.join(projectDir, 'artifacts', 'js', 'dx.all.debug.js'); + + const options: BundleExecutorSchema = { + entries: ['bundles/dx.all.js'], + sourceDir: './artifacts/transpiled-renovation-npm', + outDir: './artifacts/js', + mode: 'debug', + webpackConfigPath: './webpack.config.js', + watch: true, + }; + + const watchPromise = executor(options, context); + + await waitUntil(() => fs.existsSync(outputPath)); + expect(await readFileText(outputPath)).toContain('Hello,'); + + setImmediate(() => { + process.emit('SIGINT'); + }); + + const result = await watchPromise; + expect(result.success).toBe(true); + }, 60000); }); diff --git a/packages/nx-infra-plugin/src/executors/bundle/schema.json b/packages/nx-infra-plugin/src/executors/bundle/schema.json index a94a4bd268c1..8e8a82be1bb7 100644 --- a/packages/nx-infra-plugin/src/executors/bundle/schema.json +++ b/packages/nx-infra-plugin/src/executors/bundle/schema.json @@ -37,6 +37,11 @@ "description": "Enable eval-source-map devtool in debug mode", "default": true }, + "watch": { + "type": "boolean", + "description": "Keep webpack running in watch mode until SIGINT/SIGTERM", + "default": false + }, "applyLicenseHeaders": { "type": "object", "description": "Optional post-step that prepends license headers to bundle output files", diff --git a/packages/nx-infra-plugin/src/executors/bundle/schema.ts b/packages/nx-infra-plugin/src/executors/bundle/schema.ts index 0f22e11c1209..6037d4d12890 100644 --- a/packages/nx-infra-plugin/src/executors/bundle/schema.ts +++ b/packages/nx-infra-plugin/src/executors/bundle/schema.ts @@ -18,5 +18,6 @@ export interface BundleExecutorSchema { mode: 'debug' | 'production'; webpackConfigPath?: string; sourceMap?: boolean; + watch?: boolean; applyLicenseHeaders?: BundleLicenseHeadersOption; } diff --git a/packages/nx-infra-plugin/src/executors/check-declarations/check-declarations.impl.ts b/packages/nx-infra-plugin/src/executors/check-declarations/check-declarations.impl.ts index 5c5c01adcee4..5a4221117f57 100644 --- a/packages/nx-infra-plugin/src/executors/check-declarations/check-declarations.impl.ts +++ b/packages/nx-infra-plugin/src/executors/check-declarations/check-declarations.impl.ts @@ -12,7 +12,7 @@ import { } from './declaration-check-content'; import { CheckDeclarationsExecutorSchema } from './schema'; -const DEFAULT_MODULES_METADATA = './build/gulp/modules_metadata.json'; +const DEFAULT_MODULES_METADATA = './build/modules_metadata.json'; const DEFAULT_TS_BUNDLE = './artifacts/ts/dx.all.d.ts'; const DEFAULT_BUNDLE_ARTIFACT = './artifacts/ts/dx.all.d.ts'; const DEFAULT_MODULES_PATTERN = './js/**/*.d.ts'; diff --git a/packages/nx-infra-plugin/src/executors/check-declarations/executor.e2e.spec.ts b/packages/nx-infra-plugin/src/executors/check-declarations/executor.e2e.spec.ts index fd8cfb4782f6..6c76fdfebc34 100644 --- a/packages/nx-infra-plugin/src/executors/check-declarations/executor.e2e.spec.ts +++ b/packages/nx-infra-plugin/src/executors/check-declarations/executor.e2e.spec.ts @@ -57,7 +57,7 @@ async function writeBundleArtifact(projectDir: string, content: string): Promise } async function writeModulesMetadata(projectDir: string, modules: unknown[]): Promise { - const metadataPath = path.join(projectDir, 'build', 'gulp', 'modules_metadata.json'); + const metadataPath = path.join(projectDir, 'build', 'modules_metadata.json'); fs.mkdirSync(path.dirname(metadataPath), { recursive: true }); await writeFileText(metadataPath, JSON.stringify(modules)); } diff --git a/packages/nx-infra-plugin/src/executors/concatenate-files/concatenate-files.impl.ts b/packages/nx-infra-plugin/src/executors/concatenate-files/concatenate-files.impl.ts index 425cf52c2e3e..a3a110ff0c9c 100644 --- a/packages/nx-infra-plugin/src/executors/concatenate-files/concatenate-files.impl.ts +++ b/packages/nx-infra-plugin/src/executors/concatenate-files/concatenate-files.impl.ts @@ -5,7 +5,8 @@ import { createExecutor } from '../../utils/create-executor'; import { toPosixPath } from '../../utils/path-resolver'; import { containsGlobPattern } from '../../utils/common'; import { exists, normalizeEol, readFileText, writeFileText } from '../../utils/file-operations'; -import { ConcatenateFilesExecutorSchema } from './schema'; +import { watchWithChokidar } from '../../utils/watch'; +import { ConcatenateFilesExecutorSchema, ConcatenatePass } from './schema'; const ERROR_SOURCE_FILES_EMPTY = 'sourceFiles must contain at least one file'; const ERROR_NO_FILES_RESOLVED = 'No source files found after resolving patterns'; @@ -133,44 +134,84 @@ async function resolveSourceFiles(sourceFiles: string[], projectRoot: string): P return resolved; } +// Sources are resolved per pass at run time (not once in `resolve`) so that an +// additional pass can consume a file produced by an earlier pass, and so rebuilds +// re-resolve any glob patterns on each run. +async function runPass(projectRoot: string, pass: ConcatenatePass): Promise { + if (!pass.sourceFiles?.length) { + throw new Error(ERROR_SOURCE_FILES_EMPTY); + } + + const resolvedFiles = await resolveSourceFiles(pass.sourceFiles, projectRoot); + if (resolvedFiles.length === 0) { + throw new Error(ERROR_NO_FILES_RESOLVED); + } + + const outputPath = path.resolve(projectRoot, pass.outputFile); + logger.verbose(`Concatenating ${resolvedFiles.length} files...`); + await concatToFile(outputPath, { + sourceFiles: resolvedFiles, + header: pass.header, + footer: pass.footer, + extractPattern: pass.extractPattern, + extractPatternFlags: pass.extractPatternFlags, + transforms: pass.transforms, + normalizeLineEndings: pass.normalizeLineEndings, + separator: pass.separator, + }); + logger.verbose(`Created: ${path.relative(projectRoot, outputPath)}`); +} + +async function runAllPasses( + projectRoot: string, + options: ConcatenateFilesExecutorSchema, +): Promise { + await runPass(projectRoot, options); + for (const pass of options.additionalPasses ?? []) { + await runPass(projectRoot, pass); + } +} + +async function runWatchBuild( + projectRoot: string, + options: ConcatenateFilesExecutorSchema, +): Promise { + // chokidar v4+ dropped glob support, so expand watch patterns to concrete files upfront. + const watchTargets = options.watchPaths?.length ? options.watchPaths : options.sourceFiles; + const watchFiles = await resolveSourceFiles(watchTargets, projectRoot); + if (watchFiles.length === 0) { + throw new Error('No watch files found after resolving watchPaths'); + } + await runAllPasses(projectRoot, options); + + await watchWithChokidar({ + projectRoot, + watchTargets: watchFiles, + label: 'concatenate-files watch', + onRebuild: () => runAllPasses(projectRoot, options), + }); +} + interface ResolvedConcatenate { projectRoot: string; - resolvedFiles: string[]; - outputPath: string; options: ConcatenateFilesExecutorSchema; } export default createExecutor({ name: 'ConcatenateFiles', - resolve: async (options, { projectRoot }) => { + resolve: (options, { projectRoot }) => { if (!options.sourceFiles?.length) { throw new Error(ERROR_SOURCE_FILES_EMPTY); } - const resolvedFiles = await resolveSourceFiles(options.sourceFiles, projectRoot); - if (resolvedFiles.length === 0) { - throw new Error(ERROR_NO_FILES_RESOLVED); + return { projectRoot, options }; + }, + run: async ({ projectRoot, options }) => { + if (options.watch) { + await runWatchBuild(projectRoot, options); + return; } - return { - projectRoot, - resolvedFiles, - outputPath: path.resolve(projectRoot, options.outputFile), - options, - }; - }, - run: async ({ projectRoot, resolvedFiles, outputPath, options }) => { - logger.verbose(`Concatenating ${resolvedFiles.length} files...`); - await concatToFile(outputPath, { - sourceFiles: resolvedFiles, - header: options.header, - footer: options.footer, - extractPattern: options.extractPattern, - extractPatternFlags: options.extractPatternFlags, - transforms: options.transforms, - normalizeLineEndings: options.normalizeLineEndings, - separator: options.separator, - }); - logger.verbose(`Created: ${path.relative(projectRoot, outputPath)}`); + await runAllPasses(projectRoot, options); }, }); diff --git a/packages/nx-infra-plugin/src/executors/concatenate-files/executor.e2e.spec.ts b/packages/nx-infra-plugin/src/executors/concatenate-files/executor.e2e.spec.ts index 7e34cbdd15fb..d8f5ebf1422c 100644 --- a/packages/nx-infra-plugin/src/executors/concatenate-files/executor.e2e.spec.ts +++ b/packages/nx-infra-plugin/src/executors/concatenate-files/executor.e2e.spec.ts @@ -5,6 +5,46 @@ import { ConcatenateFilesExecutorSchema } from './schema'; import { createTempDir, cleanupTempDir, createMockContext } from '../../utils/test-utils'; import { writeFileText, readFileText } from '../../utils'; +type WatchHandler = (event: string, file: string) => void; + +function getWatchHandler(): WatchHandler | undefined { + return (globalThis as unknown as { __concatWatchHandler?: WatchHandler }).__concatWatchHandler; +} + +// Mock chokidar so the executor's projectRequire('chokidar') resolves; the mock captures +// the change handler on globalThis so the test can drive a rebuild deterministically. +function writeChokidarMock(projectRoot: string): void { + const chokidarDir = path.join(projectRoot, 'node_modules', 'chokidar'); + fs.mkdirSync(chokidarDir, { recursive: true }); + fs.writeFileSync(path.join(chokidarDir, 'package.json'), JSON.stringify({ main: 'index.js' })); + fs.writeFileSync( + path.join(chokidarDir, 'index.js'), + [ + 'module.exports = {', + ' watch: function watch() {', + ' return {', + ' on: function on(event, handler) { globalThis.__concatWatchHandler = handler; return this; },', + ' close: function close() { return Promise.resolve(); },', + ' };', + ' },', + '};', + '', + ].join('\n'), + ); +} + +async function waitFor( + predicate: () => Promise | boolean, + timeoutMs = 3000, +): Promise { + const start = Date.now(); + while (Date.now() - start < timeoutMs) { + if (await predicate()) return; + await new Promise((resolve) => setTimeout(resolve, 20)); + } + throw new Error('waitFor timed out'); +} + describe('ConcatenateFilesExecutor E2E', () => { let tempDir: string; let context = createMockContext(); @@ -22,7 +62,7 @@ describe('ConcatenateFilesExecutor E2E', () => { }); it('should handle devextreme-bundler-config use case', async () => { - const partsDir = path.join(projectDir, 'build', 'gulp', 'bundler-config'); + const partsDir = path.join(projectDir, 'build', 'bundler-config'); fs.mkdirSync(partsDir, { recursive: true }); await writeFileText( @@ -42,9 +82,9 @@ describe('ConcatenateFilesExecutor E2E', () => { const options: ConcatenateFilesExecutorSchema = { sourceFiles: [ - './build/gulp/bundler-config/01-header.js', - './build/gulp/bundler-config/02-core.js', - './build/gulp/bundler-config/03-footer.js', + './build/bundler-config/01-header.js', + './build/bundler-config/02-core.js', + './build/bundler-config/03-footer.js', ], outputFile: './artifacts/js/bundler-config.js', header: '/* DevExtreme Bundler Config */\n/* Generated file - do not edit */\n\n', @@ -89,4 +129,99 @@ describe('ConcatenateFilesExecutor E2E', () => { expect(versionPos).toBeLessThan(requirePos); expect(requirePos).toBeLessThan(exportPos); }); + + it('runs additionalPasses after the primary output', async () => { + await writeFileText(path.join(projectDir, 'a.js'), 'AAA'); + await writeFileText(path.join(projectDir, 'b.js'), 'BBB'); + + const options: ConcatenateFilesExecutorSchema = { + sourceFiles: ['./a.js', './b.js'], + outputFile: './out/primary.js', + separator: '\n', + additionalPasses: [ + { + sourceFiles: ['./out/primary.js'], + outputFile: './out/derived.js', + transforms: [{ find: 'A', replace: 'X', flags: 'g' }], + }, + ], + }; + + const result = await executor(options, context); + expect(result.success).toBe(true); + + expect(await readFileText(path.join(projectDir, 'out', 'primary.js'))).toBe('AAA\nBBB'); + // derived pass reads the primary output and applies its own transform + expect(await readFileText(path.join(projectDir, 'out', 'derived.js'))).toBe('XXX\nBBB'); + }); + + it('watch mode rebuilds all passes on change', async () => { + writeChokidarMock(projectDir); + await writeFileText(path.join(projectDir, 'a.js'), 'AAA'); + await writeFileText(path.join(projectDir, 'b.js'), 'BBB'); + + const options: ConcatenateFilesExecutorSchema = { + sourceFiles: ['./a.js', './b.js'], + outputFile: './out/primary.js', + separator: '\n', + additionalPasses: [{ sourceFiles: ['./out/primary.js'], outputFile: './out/derived.js' }], + watch: true, + watchPaths: ['./*.js'], + }; + + const primaryPath = path.join(projectDir, 'out', 'primary.js'); + const derivedPath = path.join(projectDir, 'out', 'derived.js'); + + const originalOnce = process.once; + let stopWatch: (() => void) | undefined; + let run: Promise<{ success: boolean }> | undefined; + + (process as unknown as { once: typeof process.once }).once = (( + event: string, + handler: () => void, + ) => { + if (event === 'SIGINT' || event === 'SIGTERM') { + stopWatch = handler; + return process; + } + return originalOnce.call(process, event, handler as never); + }) as typeof process.once; + + try { + run = executor(options, context); + + await waitFor(() => fs.existsSync(primaryPath) && fs.existsSync(derivedPath)); + expect(await readFileText(primaryPath)).toBe('AAA\nBBB'); + expect(await readFileText(derivedPath)).toBe('AAA\nBBB'); + expect(typeof getWatchHandler()).toBe('function'); + + await writeFileText(path.join(projectDir, 'a.js'), 'CCC'); + getWatchHandler()?.('change', path.join(projectDir, 'a.js')); + + await waitFor(async () => { + const [primary, derived] = await Promise.all([ + readFileText(primaryPath), + readFileText(derivedPath), + ]); + return primary === 'CCC\nBBB' && derived === 'CCC\nBBB'; + }); + expect(await readFileText(primaryPath)).toBe('CCC\nBBB'); + expect(await readFileText(derivedPath)).toBe('CCC\nBBB'); + + stopWatch?.(); + stopWatch = undefined; + + expect((await run).success).toBe(true); + run = undefined; + } finally { + // Ensure the long-running watch executor is stopped even if an assertion fails above. + stopWatch?.(); + if (run) { + await run; + } + (process as unknown as { once: typeof process.once }).once = originalOnce; + delete (globalThis as unknown as { __concatWatchHandler?: WatchHandler }) + .__concatWatchHandler; + } + }); }); diff --git a/packages/nx-infra-plugin/src/executors/concatenate-files/schema.json b/packages/nx-infra-plugin/src/executors/concatenate-files/schema.json index 878245ad338a..1af73dd7f4c5 100644 --- a/packages/nx-infra-plugin/src/executors/concatenate-files/schema.json +++ b/packages/nx-infra-plugin/src/executors/concatenate-files/schema.json @@ -52,7 +52,53 @@ "type": "string", "description": "Separator between concatenated files (default: '\\n')", "default": "\n" + }, + "additionalPasses": { + "type": "array", + "description": "Extra concatenation passes run after the primary output, in order (e.g. a derived output built from the primary). Each pass is resolved at run time.", + "items": { "$ref": "#/definitions/pass" } + }, + "watch": { + "type": "boolean", + "description": "Watch the source files and rebuild all passes on changes.", + "default": false + }, + "watchPaths": { + "type": "array", + "description": "Glob patterns to watch in watch mode (defaults to sourceFiles when omitted).", + "items": { "type": "string" } } }, - "required": ["sourceFiles", "outputFile"] + "required": ["sourceFiles", "outputFile"], + "definitions": { + "pass": { + "type": "object", + "properties": { + "sourceFiles": { + "type": "array", + "items": { "type": "string" } + }, + "outputFile": { "type": "string" }, + "extractPattern": { "type": "string" }, + "extractPatternFlags": { "type": "string" }, + "header": { "type": "string" }, + "footer": { "type": "string" }, + "transforms": { + "type": "array", + "items": { + "type": "object", + "properties": { + "find": { "type": "string" }, + "replace": { "type": "string" }, + "flags": { "type": "string" } + }, + "required": ["find", "replace"] + } + }, + "normalizeLineEndings": { "type": "boolean" }, + "separator": { "type": "string" } + }, + "required": ["sourceFiles", "outputFile"] + } + } } diff --git a/packages/nx-infra-plugin/src/executors/concatenate-files/schema.ts b/packages/nx-infra-plugin/src/executors/concatenate-files/schema.ts index 4e22150e5d5b..6519badf220d 100644 --- a/packages/nx-infra-plugin/src/executors/concatenate-files/schema.ts +++ b/packages/nx-infra-plugin/src/executors/concatenate-files/schema.ts @@ -4,7 +4,7 @@ export interface TransformRule { flags?: string; } -export interface ConcatenateFilesExecutorSchema { +export interface ConcatenatePass { sourceFiles: string[]; outputFile: string; extractPattern?: string; @@ -15,3 +15,9 @@ export interface ConcatenateFilesExecutorSchema { normalizeLineEndings?: boolean; separator?: string; } + +export interface ConcatenateFilesExecutorSchema extends ConcatenatePass { + additionalPasses?: ConcatenatePass[]; + watch?: boolean; + watchPaths?: string[]; +} diff --git a/packages/nx-infra-plugin/src/executors/copy-files/executor.e2e.spec.ts b/packages/nx-infra-plugin/src/executors/copy-files/executor.e2e.spec.ts index decff3322211..459f7d7cc29a 100644 --- a/packages/nx-infra-plugin/src/executors/copy-files/executor.e2e.spec.ts +++ b/packages/nx-infra-plugin/src/executors/copy-files/executor.e2e.spec.ts @@ -254,7 +254,7 @@ describe('CopyFilesExecutor E2E', () => { it('should forward applyLicenseHeaders option to license header pipeline', async () => { const projectDir = path.join(tempDir, 'packages', 'test-lib'); - const buildDir = path.join(projectDir, 'build', 'gulp'); + const buildDir = path.join(projectDir, 'build'); fs.mkdirSync(buildDir, { recursive: true }); await writeFileText( path.join(buildDir, 'license-header.txt'), @@ -268,7 +268,7 @@ describe('CopyFilesExecutor E2E', () => { const options: CopyFilesExecutorSchema = { files: [{ from: './aspnet-source.js', to: './artifacts/js/dx.aspnet.mvc.js' }], applyLicenseHeaders: { - licenseTemplateFile: './build/gulp/license-header.txt', + licenseTemplateFile: './build/license-header.txt', targetSubdir: './artifacts/js', separator: '', includePatterns: ['dx.aspnet.mvc.js'], diff --git a/packages/nx-infra-plugin/src/executors/dts-bundle/executor.e2e.spec.ts b/packages/nx-infra-plugin/src/executors/dts-bundle/executor.e2e.spec.ts index 68cbdc348c82..a8c6c79fa7ea 100644 --- a/packages/nx-infra-plugin/src/executors/dts-bundle/executor.e2e.spec.ts +++ b/packages/nx-infra-plugin/src/executors/dts-bundle/executor.e2e.spec.ts @@ -37,7 +37,7 @@ const OPTIONS: DtsBundleExecutorSchema = { bundleSources: ['./ts/dx.all.d.ts', './ts/aliases.d.ts'], artifactPath: './artifacts/ts/dx.all.d.ts', packagePath: './artifacts/npm/devextreme/bundles/dx.all.d.ts', - licenseTemplateFile: './build/gulp/license-header.txt', + licenseTemplateFile: './build/license-header.txt', eulaUrl: 'https://js.devexpress.com/Licensing/', }; @@ -52,17 +52,14 @@ describe('DtsBundleExecutor E2E', () => { projectDir = path.join(tempDir, 'packages', 'test-lib'); fs.mkdirSync(path.join(projectDir, 'ts'), { recursive: true }); - fs.mkdirSync(path.join(projectDir, 'build', 'gulp'), { recursive: true }); + fs.mkdirSync(path.join(projectDir, 'build'), { recursive: true }); await writeJson(path.join(projectDir, 'package.json'), { name: 'devextreme', version: '26.1.0', }); - await writeFileText( - path.join(projectDir, 'build', 'gulp', 'license-header.txt'), - LICENSE_TEMPLATE, - ); + await writeFileText(path.join(projectDir, 'build', 'license-header.txt'), LICENSE_TEMPLATE); await writeFileText(path.join(projectDir, 'ts', 'dx.all.d.ts'), DX_ALL_CONTENT); await writeFileText(path.join(projectDir, 'ts', 'aliases.d.ts'), ALIASES_CONTENT); }); diff --git a/packages/nx-infra-plugin/src/executors/dts-modules/executor.e2e.spec.ts b/packages/nx-infra-plugin/src/executors/dts-modules/executor.e2e.spec.ts index 4a1d0108115c..c85092eea681 100644 --- a/packages/nx-infra-plugin/src/executors/dts-modules/executor.e2e.spec.ts +++ b/packages/nx-infra-plugin/src/executors/dts-modules/executor.e2e.spec.ts @@ -28,7 +28,7 @@ const OPTIONS: DtsModulesExecutorSchema = { sourceDir: './js', outputDir: './artifacts/npm/devextreme', templatesDir: './build/npm-templates', - licenseTemplateFile: './build/gulp/license-header.txt', + licenseTemplateFile: './build/license-header.txt', eulaUrl: 'https://js.devexpress.com/Licensing/', }; @@ -43,7 +43,7 @@ describe('DtsModulesExecutor E2E', () => { projectDir = path.join(tempDir, 'packages', 'test-lib'); fs.mkdirSync(path.join(projectDir, 'js', 'ui'), { recursive: true }); - fs.mkdirSync(path.join(projectDir, 'build', 'gulp'), { recursive: true }); + fs.mkdirSync(path.join(projectDir, 'build'), { recursive: true }); fs.mkdirSync(path.join(projectDir, 'build', 'npm-templates', 'events'), { recursive: true }); fs.mkdirSync(path.join(projectDir, 'build', 'npm-templates', 'bundles'), { recursive: true }); fs.mkdirSync(path.join(projectDir, 'build', 'npm-templates', 'integration'), { @@ -55,10 +55,7 @@ describe('DtsModulesExecutor E2E', () => { version: '26.1.0', }); - await writeFileText( - path.join(projectDir, 'build', 'gulp', 'license-header.txt'), - LICENSE_TEMPLATE, - ); + await writeFileText(path.join(projectDir, 'build', 'license-header.txt'), LICENSE_TEMPLATE); await writeFileText(path.join(projectDir, 'js', 'accordion.d.ts'), DEBUG_CONTENT); await writeFileText( diff --git a/packages/nx-infra-plugin/src/executors/generate-community-locales/executor.e2e.spec.ts b/packages/nx-infra-plugin/src/executors/generate-community-locales/executor.e2e.spec.ts new file mode 100644 index 000000000000..57da42b1749f --- /dev/null +++ b/packages/nx-infra-plugin/src/executors/generate-community-locales/executor.e2e.spec.ts @@ -0,0 +1,108 @@ +import * as fs from 'fs'; +import * as path from 'path'; +import executor from './executor'; +import { GenerateCommunityLocalesExecutorSchema } from './schema'; +import { + writeFileText, + readFileText, + cleanupTempDir, + createTempDir, + createMockContext, +} from '../../utils'; + +const PROJECT_SUBPATH = ['packages', 'test-lib'] as const; + +const EN_JSON = `{ + "en": { + "Yes": "Yes", + "No": "No", + "Cancel": "Cancel", + "Quote": "Say \\"hi\\"", + "Loading": "Loading..." + } +} +`; + +const FR_JSON_INPUT = `{ + "fr": { + "Yes": "Oui", + "No": "TODO: Non", + "Quote": "Dire \\"salut\\"", + "Loading": "Chargement...", + "Extra": "Extra" + } +} +`; + +const EXPECTED_FR = `{ + "fr": { + "Yes": "Oui", + "No": "No", + "Cancel": "Cancel", + "Quote": "Dire \\"salut\\"", + "Loading": "Chargement..." + } +} +`; + +interface Fixture { + projectDir: string; + messagesDir: string; +} + +async function createFixture(tempDir: string): Promise { + const projectDir = path.join(tempDir, ...PROJECT_SUBPATH); + const messagesDir = path.join(projectDir, 'js', 'localization', 'messages'); + + fs.mkdirSync(messagesDir, { recursive: true }); + + await writeFileText(path.join(messagesDir, 'en.json'), EN_JSON); + await writeFileText(path.join(messagesDir, 'fr.json'), FR_JSON_INPUT); + + return { projectDir, messagesDir }; +} + +describe('GenerateCommunityLocalesExecutor E2E', () => { + let tempDir: string; + let context = createMockContext(); + let fixture: Fixture; + + beforeEach(async () => { + tempDir = createTempDir('nx-community-locales-e2e-'); + context = createMockContext({ root: tempDir }); + fixture = await createFixture(tempDir); + }); + + afterEach(() => { + cleanupTempDir(tempDir); + }); + + it('normalizes community locale files against the default locale', async () => { + const options: GenerateCommunityLocalesExecutorSchema = { + messagesDir: './js/localization/messages', + defaultLocale: 'en', + }; + + const result = await executor(options, context); + + expect(result.success).toBe(true); + + const frContent = await readFileText(path.join(fixture.messagesDir, 'fr.json')); + expect(frContent).toBe(EXPECTED_FR); + }); + + it('leaves the default locale file untouched', async () => { + const result = await executor({}, context); + + expect(result.success).toBe(true); + + const enContent = await readFileText(path.join(fixture.messagesDir, 'en.json')); + expect(enContent).toBe(EN_JSON); + }); + + it('fails when the messages directory is missing', async () => { + const result = await executor({ messagesDir: './js/localization/does-not-exist' }, context); + + expect(result.success).toBe(false); + }); +}); diff --git a/packages/nx-infra-plugin/src/executors/generate-community-locales/executor.ts b/packages/nx-infra-plugin/src/executors/generate-community-locales/executor.ts new file mode 100644 index 000000000000..76ffddcce1f7 --- /dev/null +++ b/packages/nx-infra-plugin/src/executors/generate-community-locales/executor.ts @@ -0,0 +1 @@ +export { default } from './generate-community-locales.impl'; diff --git a/packages/nx-infra-plugin/src/executors/generate-community-locales/generate-community-locales.impl.ts b/packages/nx-infra-plugin/src/executors/generate-community-locales/generate-community-locales.impl.ts new file mode 100644 index 000000000000..afb550e72f70 --- /dev/null +++ b/packages/nx-infra-plugin/src/executors/generate-community-locales/generate-community-locales.impl.ts @@ -0,0 +1,104 @@ +import { logger } from '@nx/devkit'; +import * as path from 'path'; +import * as fs from 'fs'; +import { createExecutor } from '../../utils/create-executor'; +import { readFileText, writeFileText } from '../../utils/file-operations'; +import { discoverFiles } from '../../utils/glob-discovery'; +import { GenerateCommunityLocalesExecutorSchema } from './schema'; + +const DEFAULT_MESSAGES_DIR = './js/localization/messages'; +const DEFAULT_LOCALE = 'en'; +const TODO_MARKER = 'TODO'; + +const ERROR_MESSAGES = { + MESSAGES_DIR_NOT_FOUND: (directory: string) => `Messages directory not found: ${directory}`, + DEFAULT_LOCALE_NOT_FOUND: (filePath: string) => `Default locale file not found: ${filePath}`, +} as const; + +interface LocaleDictionary { + [key: string]: string; +} + +function normalizeLocaleFile( + defaultFile: string, + defaultDictionaryKeys: string[], + defaultLocale: string, + fileContents: string, +): string { + const parsedFile = JSON.parse(fileContents) as Record; + + const [locale] = Object.keys(parsedFile); + const dictionary = parsedFile[locale]; + + let newFile = defaultFile.replace(`"${defaultLocale}"`, `"${locale}"`); + + defaultDictionaryKeys.forEach((key) => { + let replaceValue: string | null = null; + if (Object.prototype.hasOwnProperty.call(dictionary, key)) { + const val = dictionary[key]; + if (!val.includes(TODO_MARKER)) { + replaceValue = val.replace(/"/g, '\\"'); + } + } + + if (replaceValue != null) { + newFile = newFile.replace(new RegExp(`"${key}":.*"(,)?`), `"${key}": "${replaceValue}"$1`); + } + }); + + return newFile; +} + +interface ResolvedGenerateCommunityLocales { + messagesDir: string; + defaultLocale: string; +} + +export default createExecutor< + GenerateCommunityLocalesExecutorSchema, + ResolvedGenerateCommunityLocales +>({ + name: 'Generate Community Locales', + resolve: (options, { projectRoot }) => ({ + messagesDir: path.join(projectRoot, options.messagesDir || DEFAULT_MESSAGES_DIR), + defaultLocale: options.defaultLocale || DEFAULT_LOCALE, + }), + run: async ({ messagesDir, defaultLocale }) => { + if (!fs.existsSync(messagesDir)) { + throw new Error(ERROR_MESSAGES.MESSAGES_DIR_NOT_FOUND(messagesDir)); + } + + const defaultFilePath = path.join(messagesDir, `${defaultLocale}.json`); + if (!fs.existsSync(defaultFilePath)) { + throw new Error(ERROR_MESSAGES.DEFAULT_LOCALE_NOT_FOUND(defaultFilePath)); + } + + const defaultFile = await readFileText(defaultFilePath); + const defaultDictionaryKeys = Object.keys( + (JSON.parse(defaultFile) as Record)[defaultLocale], + ); + + const localeFiles = await discoverFiles({ + cwd: messagesDir, + includePatterns: ['*.json'], + excludePatterns: [`${defaultLocale}.json`], + }); + + logger.verbose(`Normalizing ${localeFiles.length} community locale files...`); + + await Promise.all( + localeFiles.map(async (filePath) => { + const fileContents = await readFileText(filePath); + const newFile = normalizeLocaleFile( + defaultFile, + defaultDictionaryKeys, + defaultLocale, + fileContents, + ); + await writeFileText(filePath, newFile); + }), + ); + + logger.verbose(`Community locale files normalized in ${messagesDir}`); + }, +}); diff --git a/packages/nx-infra-plugin/src/executors/generate-community-locales/schema.json b/packages/nx-infra-plugin/src/executors/generate-community-locales/schema.json new file mode 100644 index 000000000000..8fc0c2bee210 --- /dev/null +++ b/packages/nx-infra-plugin/src/executors/generate-community-locales/schema.json @@ -0,0 +1,18 @@ +{ + "$schema": "https://json-schema.org/schema", + "title": "Generate Community Locales Executor Schema", + "description": "Normalize community locale message files against the default locale dictionary", + "type": "object", + "properties": { + "messagesDir": { + "type": "string", + "description": "Directory containing locale message JSON files (e.g., en.json, de.json)", + "default": "./js/localization/messages" + }, + "defaultLocale": { + "type": "string", + "description": "Locale used as the canonical source of keys, ordering and formatting", + "default": "en" + } + } +} diff --git a/packages/nx-infra-plugin/src/executors/generate-community-locales/schema.ts b/packages/nx-infra-plugin/src/executors/generate-community-locales/schema.ts new file mode 100644 index 000000000000..5366cd0c8a84 --- /dev/null +++ b/packages/nx-infra-plugin/src/executors/generate-community-locales/schema.ts @@ -0,0 +1,4 @@ +export interface GenerateCommunityLocalesExecutorSchema { + messagesDir?: string; + defaultLocale?: string; +} diff --git a/packages/nx-infra-plugin/src/executors/localization/executor.e2e.spec.ts b/packages/nx-infra-plugin/src/executors/localization/executor.e2e.spec.ts index b870606b2334..2ba00d34e61e 100644 --- a/packages/nx-infra-plugin/src/executors/localization/executor.e2e.spec.ts +++ b/packages/nx-infra-plugin/src/executors/localization/executor.e2e.spec.ts @@ -75,7 +75,8 @@ interface LocalizationTestFixture { async function createLocalizationTestFixture(tempDir: string): Promise { const projectDir = path.join(tempDir, ...PROJECT_SUBPATH); const messagesDir = path.join(projectDir, 'js', 'localization', 'messages'); - const buildDir = path.join(projectDir, 'build', 'gulp'); + const buildDir = path.join(projectDir, 'build'); + const templatesDir = path.join(buildDir, 'localization-templates'); const artifactsDir = path.join(projectDir, 'artifacts', 'js', 'localization'); const cldrDataDir = path.join( projectDir, @@ -89,6 +90,7 @@ async function createLocalizationTestFixture(tempDir: string): Promise { it('should generate message files for all locales', async () => { const options: LocalizationExecutorSchema = { messagesDir: './js/localization/messages', - messageTemplate: './build/gulp/localization-template.jst', + messageTemplate: './build/localization-templates/localization-template.jst', messageOutputDir: './artifacts/js/localization', skipCldrGeneration: true, }; @@ -179,9 +181,9 @@ describe('LocalizationExecutor E2E', () => { it('should generate CLDR TypeScript modules', async () => { const options: LocalizationExecutorSchema = { messagesDir: './js/localization/messages', - messageTemplate: './build/gulp/localization-template.jst', + messageTemplate: './build/localization-templates/localization-template.jst', messageOutputDir: './artifacts/js/localization', - generatedTemplate: './build/gulp/generated_js.jst', + generatedTemplate: './build/localization-templates/generated_js.jst', cldrDataOutputDir: './js/__internal/core/localization/cldr-data', defaultMessagesOutputDir: './js/__internal/core/localization', }; @@ -215,11 +217,11 @@ describe('LocalizationExecutor E2E', () => { const options: LocalizationExecutorSchema = { messagesDir: './js/localization/messages', - messageTemplate: './build/gulp/localization-template.jst', + messageTemplate: './build/localization-templates/localization-template.jst', messageOutputDir: './artifacts/js/localization', skipCldrGeneration: true, applyLicenseHeaders: { - licenseTemplateFile: './build/gulp/license-header.txt', + licenseTemplateFile: './build/license-header.txt', separator: '', includePatterns: ['**/*.js'], }, @@ -236,9 +238,9 @@ describe('LocalizationExecutor E2E', () => { it('should have correct output structure', async () => { const options: LocalizationExecutorSchema = { messagesDir: './js/localization/messages', - messageTemplate: './build/gulp/localization-template.jst', + messageTemplate: './build/localization-templates/localization-template.jst', messageOutputDir: './artifacts/js/localization', - generatedTemplate: './build/gulp/generated_js.jst', + generatedTemplate: './build/localization-templates/generated_js.jst', cldrDataOutputDir: './js/__internal/core/localization/cldr-data', defaultMessagesOutputDir: './js/__internal/core/localization', }; diff --git a/packages/nx-infra-plugin/src/executors/localization/localization.impl.ts b/packages/nx-infra-plugin/src/executors/localization/localization.impl.ts index d6498442879c..99ae6130474b 100644 --- a/packages/nx-infra-plugin/src/executors/localization/localization.impl.ts +++ b/packages/nx-infra-plugin/src/executors/localization/localization.impl.ts @@ -45,9 +45,9 @@ interface CldrDependencies { } const DEFAULT_MESSAGES_DIR = './js/localization/messages'; -const DEFAULT_MESSAGE_TEMPLATE = './build/gulp/localization-template.jst'; +const DEFAULT_MESSAGE_TEMPLATE = './build/localization-templates/localization-template.jst'; const DEFAULT_MESSAGE_OUTPUT_DIR = './artifacts/js/localization'; -const DEFAULT_GENERATED_TEMPLATE = './build/gulp/generated_js.jst'; +const DEFAULT_GENERATED_TEMPLATE = './build/localization-templates/generated_js.jst'; const DEFAULT_CLDR_DATA_OUTPUT_DIR = './js/__internal/core/localization/cldr-data'; const DEFAULT_DEFAULT_MESSAGES_OUTPUT_DIR = './js/__internal/core/localization'; diff --git a/packages/nx-infra-plugin/src/executors/localization/schema.json b/packages/nx-infra-plugin/src/executors/localization/schema.json index a0a4670991d2..e7ded82b611f 100644 --- a/packages/nx-infra-plugin/src/executors/localization/schema.json +++ b/packages/nx-infra-plugin/src/executors/localization/schema.json @@ -12,7 +12,7 @@ "messageTemplate": { "type": "string", "description": "Path to the Lodash template file for UMD message generation", - "default": "./build/gulp/localization-template.jst" + "default": "./build/localization-templates/localization-template.jst" }, "messageOutputDir": { "type": "string", @@ -22,7 +22,7 @@ "generatedTemplate": { "type": "string", "description": "Path to the Lodash template file for TypeScript exports", - "default": "./build/gulp/generated_js.jst" + "default": "./build/localization-templates/generated_js.jst" }, "cldrDataOutputDir": { "type": "string", diff --git a/packages/nx-infra-plugin/src/executors/npm-assemble/executor.e2e.spec.ts b/packages/nx-infra-plugin/src/executors/npm-assemble/executor.e2e.spec.ts index fa095efb578b..c6f53dcaface 100644 --- a/packages/nx-infra-plugin/src/executors/npm-assemble/executor.e2e.spec.ts +++ b/packages/nx-infra-plugin/src/executors/npm-assemble/executor.e2e.spec.ts @@ -23,7 +23,7 @@ const OPTIONS: NpmAssembleExecutorSchema = { webpackConfig: './webpack.config.js', artifactsDir: './artifacts', outputDir: './artifacts/npm/devextreme', - licenseTemplateFile: './build/gulp/license-header.txt', + licenseTemplateFile: './build/license-header.txt', eulaUrl: 'https://js.devexpress.com/Licensing/', srcExcludes: ['bundles/**/*'], distExcludes: ['js/jquery*'], @@ -45,16 +45,13 @@ describe('NpmAssembleExecutor E2E', () => { fs.mkdirSync(path.join(projectDir, 'license'), { recursive: true }); fs.mkdirSync(path.join(projectDir, 'build', 'npm-bin'), { recursive: true }); fs.mkdirSync(path.join(projectDir, 'artifacts'), { recursive: true }); - fs.mkdirSync(path.join(projectDir, 'build', 'gulp'), { recursive: true }); + fs.mkdirSync(path.join(projectDir, 'build'), { recursive: true }); await writeFileText( path.join(projectDir, 'package.json'), JSON.stringify({ name: 'devextreme', version: '26.1.0' }), ); - await writeFileText( - path.join(projectDir, 'build', 'gulp', 'license-header.txt'), - LICENSE_TEMPLATE, - ); + await writeFileText(path.join(projectDir, 'build', 'license-header.txt'), LICENSE_TEMPLATE); await writeFileText(path.join(projectDir, 'webpack.config.js'), 'module.exports = {};'); }); diff --git a/packages/nx-infra-plugin/src/executors/pack-npm/executor.e2e.spec.ts b/packages/nx-infra-plugin/src/executors/pack-npm/executor.e2e.spec.ts index fb039007d42f..e189672102ef 100644 --- a/packages/nx-infra-plugin/src/executors/pack-npm/executor.e2e.spec.ts +++ b/packages/nx-infra-plugin/src/executors/pack-npm/executor.e2e.spec.ts @@ -9,9 +9,11 @@ import { writeFileText, writeJson } from '../../utils'; const PACKAGE_NAME = 'test-package'; const PACKAGE_VERSION = '1.0.0'; const EXPECTED_TARBALL_NAME = `${PACKAGE_NAME}-${PACKAGE_VERSION}.tgz`; +const VERSIONED_TARBALL_NAME = `${PACKAGE_NAME}-9.9.9.tgz`; const NPM_DIR_NAME = 'npm'; const PROJECT_NAME = 'test-lib'; const PACKAGES_DIR = 'packages'; +const ARTIFACTS_NPM = 'artifacts/npm'; describe('PackNpmExecutor E2E', () => { let tempDir: string; @@ -106,4 +108,60 @@ describe('PackNpmExecutor E2E', () => { expect(tarballStat.isFile()).toBe(true); expect(tarballStat.size).toBeGreaterThan(0); }); + + it('should pack packageDir and copy tarball to destination', async () => { + if (!pnpmAvailable) { + console.log('Skipping test: pnpm not available'); + return; + } + + const options: PackNpmExecutorSchema = { + packageDir: NPM_DIR_NAME, + destination: `../../${ARTIFACTS_NPM}`, + }; + + const result = await executor(options, context); + + expect(result.success).toBe(true); + + const projectDir = path.join(tempDir, PACKAGES_DIR, PROJECT_NAME); + const sourceTarball = path.join(projectDir, NPM_DIR_NAME, EXPECTED_TARBALL_NAME); + const destTarball = path.join(tempDir, ARTIFACTS_NPM, EXPECTED_TARBALL_NAME); + + expect(fs.existsSync(sourceTarball)).toBe(true); + expect(fs.existsSync(destTarball)).toBe(true); + }); + + it('should set version from setVersionFrom before packing', async () => { + if (!pnpmAvailable) { + console.log('Skipping test: pnpm not available'); + return; + } + + await writeJson(path.join(tempDir, PACKAGES_DIR, PROJECT_NAME, 'version-source.json'), { + name: 'version-source', + version: '9.9.9', + }); + + const options: PackNpmExecutorSchema = { + packageDir: NPM_DIR_NAME, + setVersionFrom: 'version-source.json', + destination: `../../${ARTIFACTS_NPM}`, + }; + + const result = await executor(options, context); + + expect(result.success).toBe(true); + + const npmPkg = JSON.parse( + fs.readFileSync( + path.join(tempDir, PACKAGES_DIR, PROJECT_NAME, NPM_DIR_NAME, 'package.json'), + 'utf8', + ), + ) as { version: string }; + expect(npmPkg.version).toBe('9.9.9'); + + const destTarball = path.join(tempDir, ARTIFACTS_NPM, VERSIONED_TARBALL_NAME); + expect(fs.existsSync(destTarball)).toBe(true); + }); }); diff --git a/packages/nx-infra-plugin/src/executors/pack-npm/pack-npm.impl.ts b/packages/nx-infra-plugin/src/executors/pack-npm/pack-npm.impl.ts index 2cf7de0e9110..e8ec7073c3bb 100644 --- a/packages/nx-infra-plugin/src/executors/pack-npm/pack-npm.impl.ts +++ b/packages/nx-infra-plugin/src/executors/pack-npm/pack-npm.impl.ts @@ -1,25 +1,99 @@ import { execSync } from 'child_process'; +import * as fs from 'fs'; +import * as path from 'path'; import { logger } from '@nx/devkit'; +import { glob } from 'glob'; import { createExecutor } from '../../utils/create-executor'; +import { toPosixPath } from '../../utils/path-resolver'; +import { copyFile, ensureDir } from '../../utils/file-operations'; import { PackNpmExecutorSchema } from './schema'; const MSG_PACK_SUCCESS = 'pnpm pack completed successfully'; +const ERROR_PACKAGE_DIR_NOT_FOUND = (dir: string) => `PackNpm: packageDir not found: ${dir}`; +const ERROR_PACKAGE_DIR_NOT_DIRECTORY = (dir: string) => + `PackNpm: packageDir is not a directory: ${dir}`; +const ERROR_SET_VERSION_FROM_NOT_FOUND = (file: string) => + `PackNpm: setVersionFrom package.json not found: ${file}`; +const ERROR_VERSION_MISSING = (file: string) => `PackNpm: version field missing in ${file}`; +const ERROR_NO_TARBALLS = (dir: string) => + `PackNpm: no *.tgz files found in ${dir} after pnpm pack`; interface ResolvedPackNpm { - projectPath: string; + packageDir: string; + destination?: string; + versionToSet?: string; +} + +function readVersion(packageJsonPath: string): string { + if (!fs.existsSync(packageJsonPath)) { + throw new Error(ERROR_SET_VERSION_FROM_NOT_FOUND(packageJsonPath)); + } + + const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')) as { version?: string }; + if (!pkg.version) { + throw new Error(ERROR_VERSION_MISSING(packageJsonPath)); + } + + return pkg.version; } export default createExecutor({ name: 'PackNpm', - resolve: (_options, { projectRoot }) => ({ projectPath: projectRoot }), + resolve: (options, { projectRoot }) => { + const packageDir = path.resolve(projectRoot, options.packageDir ?? '.'); + if (!fs.existsSync(packageDir)) { + throw new Error(ERROR_PACKAGE_DIR_NOT_FOUND(packageDir)); + } + if (!fs.statSync(packageDir).isDirectory()) { + throw new Error(ERROR_PACKAGE_DIR_NOT_DIRECTORY(packageDir)); + } + + const destination = options.destination + ? path.resolve(projectRoot, options.destination) + : undefined; + + const versionToSet = options.setVersionFrom + ? readVersion(path.resolve(projectRoot, options.setVersionFrom)) + : undefined; + + return { packageDir, destination, versionToSet }; + }, run: async (resolved) => { - logger.verbose(`Running pnpm pack from ${resolved.projectPath}...`); + if (resolved.versionToSet) { + logger.verbose(`Setting version=${resolved.versionToSet} in ${resolved.packageDir}...`); + execSync(`pnpm pkg set version="${resolved.versionToSet}"`, { + cwd: resolved.packageDir, + stdio: 'inherit', + }); + } - execSync(`pnpm pack`, { - cwd: resolved.projectPath, + logger.verbose(`Running pnpm pack from ${resolved.packageDir}...`); + execSync('pnpm pack', { + cwd: resolved.packageDir, stdio: 'inherit', }); - logger.verbose(MSG_PACK_SUCCESS); + + if (!resolved.destination) { + return; + } + + await ensureDir(resolved.destination); + + const tarballs = await glob('*.tgz', { + cwd: toPosixPath(resolved.packageDir), + nodir: true, + }); + + if (tarballs.length === 0) { + throw new Error(ERROR_NO_TARBALLS(resolved.packageDir)); + } + + for (const tarball of tarballs) { + const from = path.join(resolved.packageDir, tarball); + const to = path.join(resolved.destination, tarball); + await copyFile(from, to); + logger.verbose(`Copied ${from} -> ${to}`); + } }, }); diff --git a/packages/nx-infra-plugin/src/executors/pack-npm/schema.json b/packages/nx-infra-plugin/src/executors/pack-npm/schema.json index 0a261c47edb7..a5855324a499 100644 --- a/packages/nx-infra-plugin/src/executors/pack-npm/schema.json +++ b/packages/nx-infra-plugin/src/executors/pack-npm/schema.json @@ -1,6 +1,21 @@ { "$schema": "https://json-schema.org/schema", "title": "Pack Npm Executor Schema", - "description": "Run pnpm pack for npm distribution", - "type": "object" + "description": "Run pnpm pack for npm distribution, optionally set version and copy tarballs", + "type": "object", + "properties": { + "packageDir": { + "type": "string", + "description": "Directory to pack (relative to the project root). Defaults to the project root." + }, + "destination": { + "type": "string", + "description": "Optional destination directory for *.tgz files (relative to the project root)." + }, + "setVersionFrom": { + "type": "string", + "description": "Optional path to a package.json (relative to the project root) whose version is applied before packing." + } + }, + "additionalProperties": false } diff --git a/packages/nx-infra-plugin/src/executors/pack-npm/schema.ts b/packages/nx-infra-plugin/src/executors/pack-npm/schema.ts index 8899f6e3e0a2..4dfaa4eefa6b 100644 --- a/packages/nx-infra-plugin/src/executors/pack-npm/schema.ts +++ b/packages/nx-infra-plugin/src/executors/pack-npm/schema.ts @@ -1 +1,16 @@ -export interface PackNpmExecutorSchema {} +export interface PackNpmExecutorSchema { + /** + * Directory to pack (relative to the project root). Defaults to the project root. + */ + packageDir?: string; + /** + * Optional destination directory for `*.tgz` files (relative to the project root). + * When omitted, tarballs stay where `pnpm pack` writes them. + */ + destination?: string; + /** + * Optional path to a package.json (relative to the project root) whose `version` + * is applied via `pnpm pkg set` before packing. + */ + setVersionFrom?: string; +} diff --git a/packages/nx-infra-plugin/src/executors/vectormap/executor.e2e.spec.ts b/packages/nx-infra-plugin/src/executors/vectormap/executor.e2e.spec.ts index f324d2633f70..839271ad248d 100644 --- a/packages/nx-infra-plugin/src/executors/vectormap/executor.e2e.spec.ts +++ b/packages/nx-infra-plugin/src/executors/vectormap/executor.e2e.spec.ts @@ -76,11 +76,11 @@ const LICENSE_TEMPLATE = `/*<%= commentType %> `; async function setupLicenseTemplate(projectDir: string): Promise { - const buildDir = path.join(projectDir, 'build', 'gulp'); + const buildDir = path.join(projectDir, 'build'); fs.mkdirSync(buildDir, { recursive: true }); const templatePath = path.join(buildDir, 'license-header.txt'); await writeFileText(templatePath, LICENSE_TEMPLATE); - return './build/gulp/license-header.txt'; + return './build/license-header.txt'; } describe('VectormapExecutor E2E', () => { diff --git a/packages/nx-infra-plugin/src/utils/file-operations.ts b/packages/nx-infra-plugin/src/utils/file-operations.ts index 033511466af0..6fddd13da06a 100644 --- a/packages/nx-infra-plugin/src/utils/file-operations.ts +++ b/packages/nx-infra-plugin/src/utils/file-operations.ts @@ -1,7 +1,6 @@ import * as fs from 'fs/promises'; import * as fse from 'fs-extra'; import * as path from 'path'; -import * as os from 'os'; import { glob } from 'glob'; import type { PackageJson } from './types'; @@ -69,11 +68,11 @@ export async function copyRecursive(from: string, to: string): Promise { } export function normalizeEol(content: string): string { - return content.replace(/\r?\n/g, os.EOL); + return content.replace(/\r\n/g, '\n').replace(/\r/g, '\n'); } export function ensureTrailingNewline(content: string): string { - return content.endsWith(os.EOL) ? content : content + os.EOL; + return content.endsWith('\n') ? content : `${content}\n`; } export async function loadProjectPackageJson(projectRoot: string): Promise { diff --git a/packages/nx-infra-plugin/src/utils/index.ts b/packages/nx-infra-plugin/src/utils/index.ts index 5ea9b84eaedd..7e25468436f9 100644 --- a/packages/nx-infra-plugin/src/utils/index.ts +++ b/packages/nx-infra-plugin/src/utils/index.ts @@ -6,3 +6,4 @@ export * from './common'; export * from './test-utils'; export * from './create-executor'; export * from './glob-discovery'; +export * from './watch'; diff --git a/packages/nx-infra-plugin/src/utils/watch.ts b/packages/nx-infra-plugin/src/utils/watch.ts new file mode 100644 index 000000000000..8fd3b7e46dc0 --- /dev/null +++ b/packages/nx-infra-plugin/src/utils/watch.ts @@ -0,0 +1,124 @@ +import * as path from 'path'; +import { createRequire } from 'module'; +import { logger } from '@nx/devkit'; + +export const DEFAULT_WATCH_DEBOUNCE_MS = 200; + +export interface ChokidarWatcher { + on: (event: string, handler: (...args: unknown[]) => void) => unknown; + close: () => Promise | void; +} + +export interface Chokidar { + watch: (paths: string | string[], options?: Record) => ChokidarWatcher; +} + +// chokidar is a root devDependency, not a dependency of this plugin (and not the same +// chokidar gulp-watch bundles internally) — resolve it from the project root at runtime. +export function loadChokidar(projectRoot: string): Chokidar { + const projectRequire = createRequire(path.join(projectRoot, 'package.json')); + try { + return projectRequire('chokidar') as Chokidar; + } catch (error) { + const message = error instanceof Error ? error.message : String(error); + throw new Error( + `watch mode requires 'chokidar' to be installed in the project (${projectRoot}): ${message}`, + ); + } +} + +export interface WatchEvent { + event: string; + filePath: string; +} + +export interface WatchWithChokidarOptions { + projectRoot: string; + /** Concrete files or directories to watch (chokidar v4 has no glob support). */ + watchTargets: string | string[]; + /** Label used in watch log messages. */ + label: string; + /** Rebuild callback invoked with the batch of events; debounced while idle, queued to run again immediately once a running rebuild finishes. */ + onRebuild: (events: WatchEvent[]) => Promise | void; + /** Optional filter deciding whether a raw chokidar event is relevant. */ + eventFilter?: (event: string, filePath: string) => boolean; + debounceMs?: number; + chokidarOptions?: Record; +} + +// Resolves on SIGINT/SIGTERM. Doesn't run an initial build — that's on the caller. +export async function watchWithChokidar(options: WatchWithChokidarOptions): Promise { + const { + projectRoot, + watchTargets, + label, + onRebuild, + eventFilter, + debounceMs = DEFAULT_WATCH_DEBOUNCE_MS, + chokidarOptions, + } = options; + + await new Promise((resolve) => { + let timer: NodeJS.Timeout | undefined; + let busy = false; + let pending = false; + let batch: WatchEvent[] = []; + + const runRebuild = async (): Promise => { + if (busy) { + pending = true; + return; + } + + const events = batch; + batch = []; + busy = true; + try { + await onRebuild(events); + logger.verbose(`${label}: rebuild complete`); + } catch (error) { + const message = error instanceof Error ? error.message : String(error); + logger.error(`${label} rebuild failed: ${message}`); + } finally { + busy = false; + if (pending) { + pending = false; + void runRebuild(); + } + } + }; + + const scheduleRebuild = (): void => { + if (timer) { + clearTimeout(timer); + } + timer = setTimeout(() => { + void runRebuild(); + }, debounceMs); + }; + + const chokidar = loadChokidar(projectRoot); + const watcher = chokidar.watch(watchTargets, { ignoreInitial: true, ...chokidarOptions }); + + watcher.on('all', (...args: unknown[]) => { + const [event, filePath] = args as [string, string]; + if (eventFilter && !eventFilter(event, filePath)) { + return; + } + batch.push({ event, filePath }); + scheduleRebuild(); + }); + + logger.verbose(`${label} is watching for changes...`); + + const stopWatcher = (): void => { + if (timer) { + clearTimeout(timer); + } + void Promise.resolve(watcher.close()).finally(resolve); + }; + + process.once('SIGINT', stopWatcher); + process.once('SIGTERM', stopWatcher); + }); +} diff --git a/packages/workflows/project.json b/packages/workflows/project.json index 326af0762f79..a87c8be8a945 100644 --- a/packages/workflows/project.json +++ b/packages/workflows/project.json @@ -10,6 +10,7 @@ "executor": "devextreme-nx-infra-plugin:copy-files", "options": { "files": [ + { "from": "../devextreme/artifacts/ts", "to": "../../artifacts/ts" }, { "from": "../devextreme/artifacts/js", "to": "../../artifacts/js" }, { "from": "../devextreme/artifacts/css", "to": "../../artifacts/css" } ] @@ -53,6 +54,59 @@ ] } }, + "inject-descriptions": { + "executor": "nx:run-commands", + "cache": false, + "options": { + "command": "pnpm exec ts-node tools/scripts/inject-descriptions.ts" + }, + "metadata": { + "description": "Clone documentation, update topics against metadata artifacts, inject descriptions into dx.all.d.ts and modules." + } + }, + "pack:themebuilder-to-artifacts": { + "executor": "devextreme-nx-infra-plugin:pack-npm", + "cache": false, + "options": { + "packageDir": "../devextreme-themebuilder/dist", + "destination": "../../artifacts/npm", + "setVersionFrom": "../devextreme/package.json" + } + }, + "pack:devextreme-internal-to-artifacts": { + "executor": "devextreme-nx-infra-plugin:pack-npm", + "cache": false, + "options": { + "packageDir": "../devextreme/artifacts/npm/devextreme-internal", + "destination": "../../artifacts/npm", + "setVersionFrom": "../devextreme/package.json" + } + }, + "pack:devextreme-dist-internal-to-artifacts": { + "executor": "devextreme-nx-infra-plugin:pack-npm", + "cache": false, + "options": { + "packageDir": "../devextreme/artifacts/npm/devextreme-dist-internal", + "destination": "../../artifacts/npm" + } + }, + "pack:release-tgz": { + "executor": "nx:run-commands", + "cache": false, + "options": { + "commands": [ + "pnpm nx pack:devextreme-npm devextreme", + "pnpm nx pack:devextreme-dist-npm devextreme", + "pnpm nx copy:npm-tgz workflows", + "pnpm nx pack:themebuilder-to-artifacts workflows", + "pnpm nx copy:wrappers-tgz workflows" + ], + "parallel": false + }, + "metadata": { + "description": "Pack public npm packages and copy tgz files into root artifacts/npm." + } + }, "all:build-dev": { "executor": "nx:run-commands", "options": { @@ -88,6 +142,81 @@ "metadata": { "description": "Build all packages for the testing environment." } + }, + "all:build": { + "executor": "nx:run-commands", + "options": { + "commands": [ + "pnpm nx make-aspnet-metadata devextreme-metadata", + "pnpm nx inject-descriptions workflows", + "pnpm nx build devextreme-scss", + "pnpm nx build-dist devextreme", + "pnpm nx build devextreme-themebuilder", + "pnpm nx copy:artifacts-to-root workflows", + "pnpm nx copy:bootstrap workflows", + "pnpm run all:pack-and-copy", + "pnpm nx pack devextreme-react", + "pnpm nx pack devextreme-vue", + "pnpm nx pack --configuration with-descriptions devextreme-angular", + "pnpm nx pack:release-tgz workflows" + ], + "parallel": false + }, + "configurations": { + "internal": { + "commands": [ + "pnpm nx make-aspnet-metadata devextreme-metadata", + "pnpm nx inject-descriptions workflows", + "pnpm nx build devextreme-scss", + "pnpm nx build-dist devextreme", + "pnpm nx build devextreme-themebuilder", + "pnpm nx copy:artifacts-to-root workflows", + "pnpm nx copy:bootstrap workflows", + "pnpm run all:pack-and-copy", + "pnpm nx pack devextreme-react", + "pnpm nx pack devextreme-vue", + "pnpm nx pack --configuration with-descriptions devextreme-angular", + "pnpm nx pack:release-tgz workflows", + "pnpm nx build-dist devextreme -c internal", + "pnpm nx pack:devextreme-internal-to-artifacts workflows", + "pnpm nx pack:devextreme-dist-internal-to-artifacts workflows" + ] + } + }, + "metadata": { + "description": "Full production release build. Use -c internal for the internal package pass." + } + }, + "make-artifacts-package": { + "executor": "nx:run-commands", + "cache": false, + "options": { + "command": "pnpm exec ts-node tools/scripts/make-artifacts-package.ts" + }, + "metadata": { + "description": "Assemble root artifacts/js|ts|css + metadata into devextreme-artifacts package and pack to artifacts/npm." + } + }, + "set-timestamp-version": { + "executor": "nx:run-commands", + "cache": false, + "options": { + "command": "pnpm exec ts-node tools/scripts/set-timestamp-version.ts" + }, + "metadata": { + "description": "Stamp monorepo packages with a timestamp build version derived from the root package.json version." + } + }, + "update-version": { + "executor": "nx:run-commands", + "cache": false, + "options": { + "command": "pnpm exec ts-node tools/scripts/update-version.ts", + "forwardAllArgs": true + }, + "metadata": { + "description": "Bump monorepo package versions. Usage: pnpm nx run workflows:update-version -- XX.X.X" + } } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ed03f90a8960..bc63b6768792 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -81,7 +81,7 @@ catalogs: version: 8.52.0 axe-core: specifier: ^4.11.1 - version: 4.11.3 + version: 4.12.1 devexpress-diagram: specifier: 2.2.29 version: 2.2.29 @@ -127,9 +127,6 @@ catalogs: globals: specifier: 15.14.0 version: 15.14.0 - gulp-eslint-new: - specifier: 2.4.0 - version: 2.4.0 inferno: specifier: ^8.2.3 version: 8.2.3 @@ -259,7 +256,10 @@ importers: version: 17.0.35 axe-core: specifier: 'catalog:' - version: 4.11.3 + version: 4.12.1 + chokidar: + specifier: 5.0.0 + version: 5.0.0 devextreme-internal-tools: specifier: catalog:tools version: 22.0.0 @@ -283,7 +283,7 @@ importers: version: 0.8.5 stylelint: specifier: 'catalog:' - version: 16.22.0(supports-color@7.2.0)(typescript@5.9.3) + version: 16.22.0(typescript@5.9.3) ts-node: specifier: 10.9.2 version: 10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.9.3) @@ -341,7 +341,7 @@ importers: version: 20.3.24(431b9a173f4030f6c919fbeca6cf3425) '@angular/cli': specifier: catalog:angular - version: 20.3.24(@types/node@20.11.17)(chokidar@4.0.3)(supports-color@7.2.0) + version: 20.3.24(@types/node@20.11.17)(chokidar@4.0.3) '@types/jasmine': specifier: 5.1.4 version: 5.1.4 @@ -606,7 +606,7 @@ importers: version: 7.29.7 '@babel/eslint-parser': specifier: 'catalog:' - version: 7.29.7(@babel/core@7.29.7)(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) + version: 7.29.7(@babel/core@7.29.7)(eslint@9.39.4(jiti@2.6.1)) '@babel/preset-env': specifier: 7.29.7 version: 7.29.7(@babel/core@7.29.7) @@ -618,7 +618,7 @@ importers: version: 7.29.7(@babel/core@7.29.7) '@eslint/compat': specifier: 1.4.1 - version: 1.4.1(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) + version: 1.4.1(eslint@9.39.4(jiti@2.6.1)) '@eslint/eslintrc': specifier: 'catalog:' version: 3.3.5 @@ -636,10 +636,10 @@ importers: version: 5.0.7(rollup@4.59.0) '@stylistic/eslint-plugin': specifier: 'catalog:' - version: 5.10.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) + version: 5.10.0(eslint@9.39.4(jiti@2.6.1)) '@testcafe-community/axe': specifier: 3.5.0 - version: 3.5.0(axe-core@4.11.3)(testcafe@3.7.5) + version: 3.5.0(axe-core@4.12.1)(testcafe@3.7.5) '@types/eslint': specifier: 8.56.12 version: 8.56.12 @@ -660,19 +660,19 @@ importers: version: 17.0.35 '@typescript-eslint/eslint-plugin': specifier: 'catalog:' - version: 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) + version: 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3) '@typescript-eslint/parser': specifier: 'catalog:' - version: 8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) + version: 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3) '@vue/eslint-config-typescript': specifier: 12.0.0 - version: 12.0.0(eslint-plugin-vue@10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) + version: 12.0.0(eslint-plugin-vue@10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1))))(eslint@9.39.4(jiti@2.6.1))(supports-color@7.2.0)(typescript@6.0.3) '@vue/tsconfig': specifier: 0.9.1 version: 0.9.1(typescript@6.0.3)(vue@3.5.32(typescript@6.0.3)) axe-core: specifier: 'catalog:' - version: 4.11.3 + version: 4.12.1 babel-jest: specifier: 29.7.0 version: 29.7.0(@babel/core@7.29.7) @@ -690,40 +690,40 @@ importers: version: 2.0.17(testcafe@3.7.5) eslint: specifier: 'catalog:' - version: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) + version: 9.39.4(jiti@2.6.1) eslint-config-airbnb-typescript: specifier: 'catalog:' - version: 18.0.0(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) + version: 18.0.0(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) eslint-config-devextreme: specifier: 'catalog:' - version: 1.1.11(8a02c8ea109c9cf26ed5b6a911da64a7) + version: 1.1.11(e21ae29425040465bd6c8524519e04cd) eslint-plugin-deprecation: specifier: 3.0.0 - version: 3.0.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) + version: 3.0.0(eslint@9.39.4(jiti@2.6.1))(supports-color@7.2.0)(typescript@6.0.3) eslint-plugin-import: specifier: 'catalog:' - version: 2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) + version: 2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-jest: specifier: 29.15.2 - version: 29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(jest@29.7.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)))(supports-color@7.2.0)(typescript@6.0.3) + version: 29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1))(jest@29.7.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)))(typescript@6.0.3) eslint-plugin-no-only-tests: specifier: 'catalog:' version: 3.3.0 eslint-plugin-react: specifier: 7.37.5 - version: 7.37.5(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) + version: 7.37.5(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-react-hooks: specifier: 5.2.0 - version: 5.2.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) + version: 5.2.0(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-react-perf: specifier: 3.3.3 - version: 3.3.3(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) + version: 3.3.3(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-spellcheck: specifier: 0.0.20 - version: 0.0.20(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) + version: 0.0.20(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-vue: specifier: 'catalog:' - version: 10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)) + version: 10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1))) express: specifier: 4.22.1 version: 4.22.1 @@ -738,7 +738,7 @@ importers: version: 14.1.1(supports-color@7.2.0) jest: specifier: 29.7.0 - version: 29.7.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)) + version: 29.7.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)) jest-environment-node: specifier: 29.7.0 version: 29.7.0 @@ -783,7 +783,7 @@ importers: version: 0.16.15(patch_hash=c78b3d7eb812436aa2d80299b3d3f2738f0366b53f710a25956a3762edf73014) testcafe: specifier: 'catalog:' - version: 3.7.5(supports-color@7.2.0) + version: 3.7.5 testcafe-reporter-spec-time: specifier: 4.0.0 version: 4.0.0 @@ -792,7 +792,7 @@ importers: version: 10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3) vue-eslint-parser: specifier: 'catalog:' - version: 10.0.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0) + version: 10.0.0(eslint@9.39.4(jiti@2.6.1)) vue-tsc: specifier: 3.0.8 version: 3.0.8(typescript@6.0.3) @@ -863,7 +863,7 @@ importers: devDependencies: '@storybook/addon-docs': specifier: 10.2.10 - version: 10.2.10(@types/react@18.3.28)(esbuild@0.28.1)(rollup@4.59.0)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.6(@types/node@26.1.1)(jiti@2.6.1)(less@4.8.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))(webpack@5.106.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)) + version: 10.2.10(@types/react@18.3.28)(esbuild@0.28.1)(rollup@4.59.0)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.6(@types/node@26.1.1)(jiti@2.6.1)(less@4.8.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(terser@5.49.0)(yaml@2.9.0))(webpack@5.106.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)) '@storybook/addon-links': specifier: 10.2.10 version: 10.2.10(react@18.3.1)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) @@ -1002,7 +1002,7 @@ importers: version: 9.39.4(jiti@2.6.1) eslint-config-devextreme: specifier: 'catalog:' - version: 1.1.11(df15cfffce683e1bcb7bfdacad1a6df8) + version: 1.1.11(36a0f49ab754119732d0cad2df2dd8f9) eslint-plugin-i18n: specifier: 'catalog:' version: 2.4.0 @@ -1074,7 +1074,7 @@ importers: version: 9.39.4(jiti@2.6.1) eslint-config-devextreme: specifier: 'catalog:' - version: 1.1.11(036b0b25bc375413172c4d0cf61bea25) + version: 1.1.11(34e25ca7f08f1322a043ec8d80e91c93) eslint-migration-utils: specifier: workspace:* version: link:../../packages/eslint-migration-utils @@ -1122,7 +1122,7 @@ importers: version: 5.10.0(eslint@9.39.4(jiti@2.6.1)) '@testcafe-community/axe': specifier: 3.5.0 - version: 3.5.0(axe-core@4.11.3)(testcafe@3.7.5) + version: 3.5.0(axe-core@4.12.1)(testcafe@3.7.5) '@types/jquery': specifier: 'catalog:' version: 4.0.1 @@ -1134,7 +1134,7 @@ importers: version: 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) axe-core: specifier: 'catalog:' - version: 4.11.3 + version: 4.12.1 devextreme: specifier: workspace:* version: link:../../packages/devextreme/artifacts/npm/devextreme @@ -1149,7 +1149,7 @@ importers: version: 9.39.4(jiti@2.6.1) eslint-config-devextreme: specifier: 'catalog:' - version: 1.1.11(3323971c1e531ea4fcc264c8af1d91e5) + version: 1.1.11(c357a05deb2b16688bde72abde48073f) eslint-migration-utils: specifier: workspace:* version: link:../../packages/eslint-migration-utils @@ -1176,7 +1176,7 @@ importers: version: 0.12.1 testcafe: specifier: 'catalog:' - version: 3.7.5(supports-color@7.2.0) + version: 3.7.5 testcafe-reporter-spec-time: specifier: 4.0.0 version: 4.0.0 @@ -1351,7 +1351,7 @@ importers: version: 2.1.0(jasmine-core@5.6.0)(karma-jasmine@5.1.0(karma@6.4.4))(karma@6.4.4) testcafe: specifier: 'catalog:' - version: 3.7.5(supports-color@7.2.0) + version: 3.7.5 typescript: specifier: 5.8.3 version: 5.8.3 @@ -1413,6 +1413,12 @@ importers: '@babel/plugin-transform-modules-commonjs': specifier: 7.29.7 version: 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-nullish-coalescing-operator': + specifier: 7.29.7 + version: 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-optional-chaining': + specifier: 7.29.7 + version: 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-runtime': specifier: 7.29.7 version: 7.29.7(@babel/core@7.29.7) @@ -1454,7 +1460,7 @@ importers: version: 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5) axe-core: specifier: 'catalog:' - version: 4.11.3 + version: 4.12.1 babel-plugin-inferno: specifier: 6.8.5 version: 6.8.5(@babel/core@7.29.7) @@ -1487,7 +1493,7 @@ importers: version: 18.0.0(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) eslint-config-devextreme: specifier: 'catalog:' - version: 1.1.11(21373fd47cc2a7a56720766fc64e98ca) + version: 1.1.11(33b7e80734c34857e30298d4e85d3fef) eslint-migration-utils: specifier: workspace:* version: link:../eslint-migration-utils @@ -1514,7 +1520,7 @@ importers: version: 3.3.0 eslint-plugin-perfectionist: specifier: 'catalog:' - version: 5.9.1(eslint@9.39.4(jiti@2.6.1))(supports-color@7.2.0)(typescript@4.9.5) + version: 5.9.1(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5) eslint-plugin-qunit: specifier: 'catalog:' version: 8.2.6(eslint@9.39.4(jiti@2.6.1)) @@ -1539,93 +1545,12 @@ importers: file-saver: specifier: 2.0.5 version: 2.0.5 - glob: - specifier: 11.1.0 - version: 11.1.0 globalize: specifier: 1.7.1 version: 1.7.1 globals: specifier: 'catalog:' version: 15.14.0 - gulp: - specifier: 4.0.2 - version: 4.0.2 - gulp-babel: - specifier: 8.0.0 - version: 8.0.0(@babel/core@7.29.7) - gulp-cache: - specifier: 1.1.3 - version: 1.1.3 - gulp-cached: - specifier: 1.1.1 - version: 1.1.1 - gulp-concat: - specifier: 2.6.1 - version: 2.6.1 - gulp-each: - specifier: 0.5.0 - version: 0.5.0 - gulp-eol: - specifier: 0.2.0 - version: 0.2.0 - gulp-eslint-new: - specifier: 'catalog:' - version: 2.4.0(jiti@2.6.1) - gulp-file: - specifier: 0.4.0 - version: 0.4.0 - gulp-filter: - specifier: 7.0.0 - version: 7.0.0(gulp@4.0.2) - gulp-flatmap: - specifier: 1.0.2 - version: 1.0.2 - gulp-footer: - specifier: 2.1.0 - version: 2.1.0 - gulp-header: - specifier: 2.0.9 - version: 2.0.9 - gulp-if: - specifier: 3.0.0 - version: 3.0.0 - gulp-json-editor: - specifier: 2.6.0 - version: 2.6.0 - gulp-multi-process: - specifier: 1.4.0 - version: 1.4.0 - gulp-notify: - specifier: 4.0.0 - version: 4.0.0 - gulp-plumber: - specifier: 1.2.1 - version: 1.2.1 - gulp-rename: - specifier: 1.4.0 - version: 1.4.0 - gulp-replace: - specifier: 0.6.1 - version: 0.6.1 - gulp-sass: - specifier: 6.0.1 - version: 6.0.1 - gulp-shell: - specifier: 0.8.0 - version: 0.8.0 - gulp-tap: - specifier: 1.0.1 - version: 1.0.1 - gulp-template: - specifier: 5.0.0 - version: 5.0.0 - gulp-typescript: - specifier: 5.0.1 - version: 5.0.1(typescript@4.9.5) - gulp-watch: - specifier: 5.0.1 - version: 5.0.1 ignore: specifier: 5.3.2 version: 5.3.2 @@ -1653,21 +1578,12 @@ importers: knockout: specifier: 3.5.3 version: 3.5.3 - lazypipe: - specifier: 1.0.2 - version: 1.0.2 - merge-stream: - specifier: 2.0.0 - version: 2.0.0 minimist: specifier: 1.2.8 version: 1.2.8 qunit: specifier: 2.25.0 version: 2.25.0 - sass-embedded: - specifier: 1.93.3 - version: 1.93.3 sinon: specifier: 18.0.1 version: 18.0.1 @@ -1689,9 +1605,6 @@ importers: terser-webpack-plugin: specifier: 5.3.17 version: 5.3.17(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)(webpack@5.105.4(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)) - through2: - specifier: 2.0.5 - version: 2.0.5 ts-jest: specifier: 29.1.2 version: 29.1.2(@babel/core@7.29.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(esbuild@0.28.1)(jest@30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@4.9.5)))(typescript@4.9.5) @@ -1704,15 +1617,6 @@ importers: typescript-min: specifier: npm:typescript@4.9.5 version: typescript@4.9.5 - uuid: - specifier: 14.0.0 - version: 14.0.0 - vinyl: - specifier: 2.2.1 - version: 2.2.1 - vinyl-named: - specifier: 1.1.0 - version: 1.1.0 vite: specifier: 8.0.16 version: 8.0.16(@types/node@20.19.37)(esbuild@0.28.1)(jiti@2.6.1)(less@4.6.6)(sass-embedded@1.93.3)(sass@1.99.0)(terser@5.49.0)(yaml@2.8.3) @@ -1722,9 +1626,6 @@ importers: webpack-stream: specifier: 7.0.0 version: 7.0.0(webpack@5.105.4(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)) - yargs: - specifier: 17.7.2 - version: 17.7.2 publishDirectory: artifacts/npm/devextreme packages/devextreme-angular: @@ -1813,7 +1714,7 @@ importers: version: 9.39.4(jiti@2.6.1) eslint-config-devextreme: specifier: 'catalog:' - version: 1.1.11(036b0b25bc375413172c4d0cf61bea25) + version: 1.1.11(34e25ca7f08f1322a043ec8d80e91c93) eslint-migration-utils: specifier: workspace:* version: link:../eslint-migration-utils @@ -1978,7 +1879,7 @@ importers: version: 18.0.0(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) eslint-config-devextreme: specifier: 'catalog:' - version: 1.1.11(2159c8bdfeeb538cd9a87b0f06dfe45f) + version: 1.1.11(d15b6dd1a804cd08c9b9266c82470597) eslint-migration-utils: specifier: workspace:* version: link:../eslint-migration-utils @@ -2009,13 +1910,10 @@ importers: devDependencies: '@stylistic/stylelint-plugin': specifier: 3.1.3 - version: 3.1.3(stylelint@16.22.0(typescript@6.0.3)) + version: 3.1.3(stylelint@16.22.0(typescript@5.9.3)) autoprefixer: specifier: 10.5.0 version: 10.5.0(postcss@8.5.23) - chokidar: - specifier: 5.0.0 - version: 5.0.0 clean-css: specifier: 5.3.3 version: 5.3.3 @@ -2030,16 +1928,16 @@ importers: version: 1.93.3 stylelint: specifier: 'catalog:' - version: 16.22.0(typescript@6.0.3) + version: 16.22.0(typescript@5.9.3) stylelint-config-standard-scss: specifier: 14.0.0 - version: 14.0.0(postcss@8.5.23)(stylelint@16.22.0(typescript@6.0.3)) + version: 14.0.0(postcss@8.5.23)(stylelint@16.22.0(typescript@5.9.3)) stylelint-scss: specifier: 6.10.0 - version: 6.10.0(stylelint@16.22.0(typescript@6.0.3)) + version: 6.10.0(stylelint@16.22.0(typescript@5.9.3)) ts-jest: specifier: 29.1.2 - version: 29.1.2(@babel/core@7.29.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(jest@30.2.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@6.0.3)))(typescript@5.9.3) + version: 29.1.2(@babel/core@7.29.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(jest@30.2.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@5.9.3)))(typescript@5.9.3) packages/devextreme-themebuilder: dependencies: @@ -2091,7 +1989,7 @@ importers: version: 18.0.0(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) eslint-config-devextreme: specifier: 'catalog:' - version: 1.1.11(765db8ce296b6314aa6fee62e11efa0e) + version: 1.1.11(0bf0cf098d0a3b928d7fd275ba37129c) eslint-plugin-import: specifier: 'catalog:' version: 2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1)) @@ -2173,7 +2071,7 @@ importers: version: 18.0.0(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) eslint-config-devextreme: specifier: 'catalog:' - version: 1.1.11(2159c8bdfeeb538cd9a87b0f06dfe45f) + version: 1.1.11(d15b6dd1a804cd08c9b9266c82470597) eslint-plugin-i18n: specifier: 'catalog:' version: 2.4.0 @@ -2319,7 +2217,7 @@ importers: version: link:../devextreme/artifacts/npm/devextreme testcafe: specifier: 'catalog:' - version: 3.7.5(supports-color@7.2.0) + version: 3.7.5 packages: @@ -3039,10 +2937,6 @@ packages: peerDependencies: '@babel/core': ^7.29.1 - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': - resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} - engines: {node: '>=6.9.0'} - '@babel/helper-skip-transparent-expression-wrappers@7.29.7': resolution: {integrity: sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==} engines: {node: '>=6.9.0'} @@ -3675,12 +3569,6 @@ packages: peerDependencies: '@babel/core': ^7.29.1 - '@babel/plugin-transform-nullish-coalescing-operator@7.28.6': - resolution: {integrity: sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.29.1 - '@babel/plugin-transform-nullish-coalescing-operator@7.29.7': resolution: {integrity: sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==} engines: {node: '>=6.9.0'} @@ -3735,12 +3623,6 @@ packages: peerDependencies: '@babel/core': ^7.29.1 - '@babel/plugin-transform-optional-chaining@7.28.6': - resolution: {integrity: sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.29.1 - '@babel/plugin-transform-optional-chaining@7.29.7': resolution: {integrity: sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==} engines: {node: '>=6.9.0'} @@ -4108,33 +3990,16 @@ packages: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} - '@csstools/css-parser-algorithms@2.7.1': - resolution: {integrity: sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==} - engines: {node: ^14 || ^16 || >=18} - peerDependencies: - '@csstools/css-tokenizer': ^2.4.1 - '@csstools/css-parser-algorithms@3.0.5': resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} engines: {node: '>=18'} peerDependencies: '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-tokenizer@2.4.1': - resolution: {integrity: sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==} - engines: {node: ^14 || ^16 || >=18} - '@csstools/css-tokenizer@3.0.4': resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} engines: {node: '>=18'} - '@csstools/media-query-list-parser@2.1.13': - resolution: {integrity: sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==} - engines: {node: ^14 || ^16 || >=18} - peerDependencies: - '@csstools/css-parser-algorithms': ^2.7.1 - '@csstools/css-tokenizer': ^2.4.1 - '@csstools/media-query-list-parser@3.0.1': resolution: {integrity: sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==} engines: {node: '>=18'} @@ -4149,12 +4014,6 @@ packages: '@csstools/css-parser-algorithms': ^3.0.5 '@csstools/css-tokenizer': ^3.0.4 - '@csstools/selector-specificity@3.1.1': - resolution: {integrity: sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==} - engines: {node: ^14 || ^16 || >=18} - peerDependencies: - postcss-selector-parser: ^6.0.13 - '@csstools/selector-specificity@5.0.0': resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} engines: {node: '>=18'} @@ -4445,10 +4304,6 @@ packages: resolution: {integrity: sha512-GmzA9ckNokPypTg10pgpeHNQe7ph+iIKKmhKu3Ob9ANkswreCx7R3cKmY781K8QK3AqVL3xVh9A42JvIAbkkSA==} engines: {node: ^20.17.0 || >=22.9.0} - '@gulpjs/to-absolute-glob@4.0.0': - resolution: {integrity: sha512-kjotm7XJrJ6v+7knhPaRgaT6q8F8K2jiafwYdNHLzmV0uGLuZY43FK6smNSHUPrhq5kX2slCUy+RGG/xGqmIKA==} - engines: {node: '>=10.13.0'} - '@harperfast/extended-iterable@1.0.3': resolution: {integrity: sha512-sSAYhQca3rDWtQUHSAPeO7axFIUJOI6hn1gjRC5APVE1a90tuyT8f5WIgRsFhhWA7htNkju2veB9eWL6YHi/Lw==} @@ -7052,9 +6907,6 @@ packages: '@types/eslint@8.56.12': resolution: {integrity: sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==} - '@types/eslint@9.6.1': - resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} - '@types/esquery@1.5.4': resolution: {integrity: sha512-yYO4Q8H+KJHKW1rEeSzHxcZi90durqYgWVfnh5K6ZADVBjBv2e1NEveYX5yT2bffgN7RqzH3k9930m+i2yBoMA==} @@ -7154,15 +7006,9 @@ packages: '@types/mime@1.3.5': resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - '@types/minimatch@3.0.5': - resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} - '@types/minimatch@5.1.2': resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - '@types/minimist@1.2.5': - resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} - '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} @@ -8135,18 +7981,10 @@ packages: resolution: {integrity: sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==} engines: {node: '>=0.10.0'} - ansi-colors@3.2.4: - resolution: {integrity: sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==} - engines: {node: '>=6'} - ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} - ansi-cyan@0.1.1: - resolution: {integrity: sha512-eCjan3AVo/SxZ0/MyIYRtkpxIu/H3xZN7URr1vXVrISxeyz8fUFz0FJziamK4sS8I+t35y4rHg1b2PklyBe/7A==} - engines: {node: '>=0.10.0'} - ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} @@ -8168,10 +8006,6 @@ packages: engines: {'0': node >= 0.8.0} hasBin: true - ansi-red@0.1.1: - resolution: {integrity: sha512-ewaIr5y+9CUTGFwZfpECUbFlGcC0GCw1oqR9RI6h1gQCd9Aj2GxSckCnPsVJnmfMZbwFYE+leZGASgkWl06Jow==} - engines: {node: '>=0.10.0'} - ansi-regex@2.1.1: resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} engines: {node: '>=0.10.0'} @@ -8208,12 +8042,6 @@ packages: resolution: {integrity: sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==} engines: {node: '>=0.10.0'} - anymatch@1.3.2: - resolution: {integrity: sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==} - - anymatch@2.0.0: - resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} - anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -8221,10 +8049,6 @@ packages: app-module-path@2.2.0: resolution: {integrity: sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ==} - append-buffer@1.0.2: - resolution: {integrity: sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==} - engines: {node: '>=0.10.0'} - archiver-utils@5.0.2: resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} engines: {node: '>= 14'} @@ -8233,9 +8057,6 @@ packages: resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} engines: {node: '>= 14'} - archy@1.0.0: - resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} - arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} @@ -8252,30 +8073,10 @@ packages: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} - arr-diff@1.1.0: - resolution: {integrity: sha512-OQwDZUqYaQwyyhDJHThmzId8daf4/RFNLaeh3AevmSeZ5Y7ug4Ga/yKc6l6kTZOBW781rCj103ZuTh8GAsB3+Q==} - engines: {node: '>=0.10.0'} - arr-diff@4.0.0: resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} engines: {node: '>=0.10.0'} - arr-filter@1.1.2: - resolution: {integrity: sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==} - engines: {node: '>=0.10.0'} - - arr-flatten@1.1.0: - resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} - engines: {node: '>=0.10.0'} - - arr-map@2.0.2: - resolution: {integrity: sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==} - engines: {node: '>=0.10.0'} - - arr-union@2.1.0: - resolution: {integrity: sha512-t5db90jq+qdgk8aFnxEkjqta0B/GHrM1pxzuuZz2zWsOXc5nKu3t+76s/PQBA8FTcM/ipspIH9jWG4OxCBc2eA==} - engines: {node: '>=0.10.0'} - arr-union@3.1.0: resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} engines: {node: '>=0.10.0'} @@ -8284,14 +8085,6 @@ packages: resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} - array-differ@3.0.0: - resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} - engines: {node: '>=8'} - - array-each@1.0.1: - resolution: {integrity: sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==} - engines: {node: '>=0.10.0'} - array-find@1.0.0: resolution: {integrity: sha512-kO/vVCacW9mnpn3WPWbTVlEnOabK2L7LWi2HViURtCM46y1zb6I8UMjx4LgbiqadTgHnLInUronwn3ampNTJtQ==} @@ -8302,26 +8095,6 @@ packages: resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} engines: {node: '>= 0.4'} - array-initial@1.1.0: - resolution: {integrity: sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==} - engines: {node: '>=0.10.0'} - - array-last@1.3.0: - resolution: {integrity: sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==} - engines: {node: '>=0.10.0'} - - array-slice@0.2.3: - resolution: {integrity: sha512-rlVfZW/1Ph2SNySXwR9QYkChp8EkOEiTMO5Vwx60usw04i4nWemkm9RXmQqgkQFaLHsqLuADvjp6IfgL9l2M8Q==} - engines: {node: '>=0.10.0'} - - array-slice@1.1.0: - resolution: {integrity: sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==} - engines: {node: '>=0.10.0'} - - array-sort@1.0.0: - resolution: {integrity: sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==} - engines: {node: '>=0.10.0'} - array-union@1.0.2: resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} engines: {node: '>=0.10.0'} @@ -8358,14 +8131,6 @@ packages: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - - arrify@2.0.1: - resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} - engines: {node: '>=8'} - asn1.js@4.10.1: resolution: {integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==} @@ -8402,13 +8167,6 @@ packages: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} - async-done@1.3.2: - resolution: {integrity: sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==} - engines: {node: '>= 0.10'} - - async-each@1.0.6: - resolution: {integrity: sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==} - async-exit-hook@1.1.2: resolution: {integrity: sha512-CeTSWB5Bou31xSHeO45ZKgLPRaJbV4I8csRcFYETDBehX7H+1GDO/v+v8G7fZmar1gOmYa6UTXn6d/WIiJbslw==} engines: {node: '>=0.12.0'} @@ -8417,10 +8175,6 @@ packages: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} - async-settle@1.0.0: - resolution: {integrity: sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==} - engines: {node: '>= 0.10'} - async@3.2.3: resolution: {integrity: sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==} @@ -8448,10 +8202,6 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axe-core@4.11.3: - resolution: {integrity: sha512-zBQouZixDTbo3jMGqHKyePxYxr1e5W8UdTmBQ7sNtaA9M2bE32daxxPLS/jojhKOHxQ7LWwPjfiwf/fhaJWzlg==} - engines: {node: '>=4'} - axe-core@4.12.1: resolution: {integrity: sha512-s7iGf5GaVMxEG0ENN9x+xTr7GFZCb1ZP/1uATUpCEK2X78nDB3RwbtFCo9pGAf9ru+VwoQ464DkaLEeRM08wJA==} engines: {node: '>=4'} @@ -8666,10 +8416,6 @@ packages: resolution: {integrity: sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==} hasBin: true - bach@1.2.0: - resolution: {integrity: sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==} - engines: {node: '>= 0.10'} - bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} @@ -8762,26 +8508,13 @@ packages: big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - binary-extensions@1.13.1: - resolution: {integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==} - engines: {node: '>=0.10.0'} - binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} - binaryextensions@1.0.1: - resolution: {integrity: sha512-xnG0l4K3ghM62rFzDi2jcNEuICl6uQ4NgvGpqQsY7HgW8gPDeAWGOxHI/k+qZfXfMANytzrArGNPXidaCwtbmA==} - - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - bl@5.1.0: - resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} - bluebird@3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} @@ -8886,10 +8619,6 @@ packages: resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} engines: {node: '>=8.0.0'} - buffer-equal@1.0.1: - resolution: {integrity: sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==} - engines: {node: '>=0.4'} - buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -8932,9 +8661,6 @@ packages: resolution: {integrity: sha512-M3Lab8NPYlZU2exsL3bMVvMrMqgwCnMWfdZbK28bn3pK6APT/Te/I8hjRPNu1uwORY9a1eEQoifXbKPQMfMTOA==} engines: {node: ^20.17.0 || >=22.9.0} - cache-swap@0.3.0: - resolution: {integrity: sha512-rwePCa4iVqXHrEEmQEoLR3Kea4aCTCf7JfX+mJA4Fd61Vb738TItRRv1v++emp9wfnRUKbXpIYfRJY4ThWK09g==} - cacheable@2.3.4: resolution: {integrity: sha512-djgxybDbw9fL/ZWMI3+CE8ZilNxcwFkVtDc1gJ+IlOSSWkSMPQabhV/XCHTQ6pwwN6aivXPZ43omTooZiX06Ew==} @@ -8963,14 +8689,6 @@ packages: camel-case@4.1.2: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - camelcase-keys@7.0.2: - resolution: {integrity: sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==} - engines: {node: '>=12'} - - camelcase@3.0.0: - resolution: {integrity: sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==} - engines: {node: '>=0.10.0'} - camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} @@ -8979,9 +8697,6 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001788: - resolution: {integrity: sha512-6q8HFp+lOQtcf7wBK+uEenxymVWkGKkjFpCvw5W25cmMwEDU45p1xQFBQv8JDlMMry7eNxyBaR+qxgmTUZkIRQ==} - caniuse-lite@1.0.30001806: resolution: {integrity: sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==} @@ -9016,10 +8731,6 @@ packages: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} - chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} - chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -9065,9 +8776,6 @@ packages: resolution: {integrity: sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==} engines: {node: '>=20.18.1'} - chokidar@2.1.8: - resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==} - chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -9197,9 +8905,6 @@ packages: resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} - cliui@3.2.0: - resolution: {integrity: sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==} - cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} @@ -9219,9 +8924,6 @@ packages: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} engines: {node: '>=6'} - clone-stats@0.0.1: - resolution: {integrity: sha512-dhUqc57gSMCo6TX85FLfe51eC/s+Im2MLkAgJwfaRRexR2tA4dd3eLEW4L6efzHc2iNorrRRXITifnDLlRrhaA==} - clone-stats@1.0.0: resolution: {integrity: sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==} @@ -9243,10 +8945,6 @@ packages: code-block-writer@12.0.0: resolution: {integrity: sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==} - code-point-at@1.1.0: - resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} - engines: {node: '>=0.10.0'} - coffeescript@2.7.0: resolution: {integrity: sha512-hzWp6TUE2d/jCcN67LrW1eh5b/rSDKQK6oD6VMLlggYVUUFexgTH9z3dNYihzX4RMhze5FTUsUmOXViJKFQR/A==} engines: {node: '>=6'} @@ -9255,10 +8953,6 @@ packages: collect-v8-coverage@1.0.3: resolution: {integrity: sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==} - collection-map@1.0.0: - resolution: {integrity: sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==} - engines: {node: '>=0.10.0'} - color-convert@0.5.3: resolution: {integrity: sha512-RwBeO/B/vZR3dfKL1ye/vx8MHZ40ugzpyfeVG5GsiuGnrlMWe2o8wxBbLCpw9CsxV+wHuzYlCiWnybrIA0ling==} @@ -9388,9 +9082,6 @@ packages: resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} engines: {'0': node >= 0.8} - concat-with-sourcemaps@1.1.0: - resolution: {integrity: sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==} - config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} @@ -9468,9 +9159,6 @@ packages: resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} engines: {node: '>=12.13'} - copy-props@2.0.5: - resolution: {integrity: sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==} - copy-webpack-plugin@14.0.0: resolution: {integrity: sha512-3JLW90aBGeaTLpM7mYQKpnVdgsUZRExY55giiZgLuX/xTQRUs1dOCwbBnWnvY6Q6rfZoXMNwzOQJCSZPppfqXA==} engines: {node: '>= 20.9.0'} @@ -9615,10 +9303,6 @@ packages: css-select@6.0.0: resolution: {integrity: sha512-rZZVSLle8v0+EY8QAkDWrKhpgt6SA5OtHsgBnsj6ZaLb5dmDVOWUDtQitd9ydxxvEjhewNudS6eTVU7uOyzvXw==} - css-tree@2.3.1: - resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - css-tree@3.2.1: resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} @@ -9740,18 +9424,6 @@ packages: supports-color: optional: true - decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} - - decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - - decamelize@5.0.1: - resolution: {integrity: sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==} - engines: {node: '>=10'} - decimal.js@10.6.0: resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} @@ -9802,14 +9474,6 @@ packages: resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} engines: {node: '>=18'} - default-compare@1.0.0: - resolution: {integrity: sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==} - engines: {node: '>=0.10.0'} - - default-resolution@2.0.0: - resolution: {integrity: sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==} - engines: {node: '>= 0.10'} - defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} @@ -9871,18 +9535,10 @@ packages: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - detect-file@1.0.0: - resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} - engines: {node: '>=0.10.0'} - detect-indent@4.0.0: resolution: {integrity: sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==} engines: {node: '>=0.10.0'} - detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - detect-libc@1.0.3: resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} engines: {node: '>=0.10'} @@ -10107,21 +9763,9 @@ packages: duplexer2@0.1.4: resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} - duplexer@0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - - duplexify@3.7.1: - resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} - - duplexify@4.1.3: - resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} - dx-systemjs-vue-browser@1.1.2: resolution: {integrity: sha512-Z6ibEOrWKd0ta/rZqDMVax3gScK3C4w5GzzeAor4GNaUJfhV6SjLRmpgdecYRtZTPvCvjlFHxF2Br6cXqa0Jig==} - each-props@1.3.2: - resolution: {integrity: sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==} - eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -10331,9 +9975,6 @@ packages: es6-template-strings@2.0.1: resolution: {integrity: sha512-5kTq0dEJfsm/EAteUCgLazcvWEhriVGwWFY3YgIsz89fJd+smi65/N1eS1Hn3B2dAngiqd0EvpXjr8lb7Quzkw==} - es6-weak-map@2.0.3: - resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} - esbuild-plugin-vue3@0.3.2: resolution: {integrity: sha512-KqZUPlIUS4vJLSexV3q5hgqIlsMWzlPtIuvZ1epZQvw/wJ/4vEPzEC1HQZduoHvUYvtnG703hsP1PsdpjTJ3ug==} peerDependencies: @@ -10740,10 +10381,6 @@ packages: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} - expand-tilde@2.0.2: - resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} - engines: {node: '>=0.10.0'} - expect@29.7.0: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -10776,10 +10413,6 @@ packages: ext@1.7.0: resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} - extend-shallow@1.1.4: - resolution: {integrity: sha512-L7AGmkO6jhDkEBBGWlLtftA80Xq8DipnrRPr0pyi7GQLXkaq9JYA4xF4z6qnadIC6euiTDKco0cGSU9muw+WTw==} - engines: {node: '>=0.10.0'} - extend-shallow@3.0.2: resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} engines: {node: '>=0.10.0'} @@ -10787,18 +10420,10 @@ packages: extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - fancy-log@1.3.2: - resolution: {integrity: sha512-7E6IFy84FpO6jcnzEsCcoxDleHpMTFzncmCXXBIVYq1/Oakqnbc/lTKPJyyW6edGeC/rnZmV78hJe7SuoZo0aQ==} - engines: {node: '>= 0.10'} - fancy-log@1.3.3: resolution: {integrity: sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==} engines: {node: '>= 0.10'} - fancy-log@2.0.0: - resolution: {integrity: sha512-9CzxZbACXMUXW13tS0tI8XsGGmxWzO2DmYrGuBJOJ8k8q2K7hwfJA5qHjuPPe8wtsco33YR9wc+Rlr5wYFvhSA==} - engines: {node: '>=10.13.0'} - fast-csv@5.0.5: resolution: {integrity: sha512-9//QpogDIPln5Dc8e3Q3vbSSLXlTeU7z1JqsUOXZYOln8EIn/OOO8+NS2c3ukR6oYngDd3+P1HXSkby3kNV9KA==} engines: {node: '>=10.0.0'} @@ -10822,9 +10447,6 @@ packages: fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - fast-levenshtein@1.1.4: - resolution: {integrity: sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==} - fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} @@ -10885,10 +10507,6 @@ packages: file-entry-cache@10.1.4: resolution: {integrity: sha512-5XRUFc0WTtUbjfGzEwXc42tiGxQHBmtbUG1h9L2apu4SulCGN3Hqm//9D6FAolf8MYNL7f/YlJl9vy08pj5JuA==} - file-entry-cache@7.0.2: - resolution: {integrity: sha512-TfW7/1iI4Cy7Y8L6iqNdZQVvdXn0f8B4QcIXmkIbtTIe/Okm/nSlHb4IwGzRVOd3WfSieCgvf5cMzEfySAIl0g==} - engines: {node: '>=12.0.0'} - file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -10899,9 +10517,6 @@ packages: file-saver@2.0.5: resolution: {integrity: sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==} - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - filing-cabinet@4.1.6: resolution: {integrity: sha512-C+HZbuQTER36sKzGtUhrAPAoK6+/PrrUhYDBQEh3kBRdsyEhkLbp1ML8S0+6e6gCUrUlid+XmubxJrhvL2g/Zw==} engines: {node: '>=14'} @@ -10938,10 +10553,6 @@ packages: resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} engines: {node: '>=18'} - find-up@1.1.2: - resolution: {integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==} - engines: {node: '>=0.10.0'} - find-up@3.0.0: resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} engines: {node: '>=6'} @@ -10954,26 +10565,6 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - findup-sync@2.0.0: - resolution: {integrity: sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==} - engines: {node: '>= 0.10'} - - findup-sync@3.0.0: - resolution: {integrity: sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==} - engines: {node: '>= 0.10'} - - fined@1.2.0: - resolution: {integrity: sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==} - engines: {node: '>= 0.10'} - - first-chunk-stream@2.0.0: - resolution: {integrity: sha512-X8Z+b/0L4lToKYq+lwnKqi9X/Zek0NibLpsJgVsSxpoYq7JtiCtRb5HqKVEjEw/qAb/4AKKRLOwwKHlWNpm2Eg==} - engines: {node: '>=0.10.0'} - - flagged-respawn@1.0.1: - resolution: {integrity: sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==} - engines: {node: '>= 0.10'} - flat-cache@3.2.0: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} @@ -10989,15 +10580,9 @@ packages: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true - flatted@3.4.2: - resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} - flatted@3.4.3: resolution: {integrity: sha512-/zipXxyO6rGvuNGDiULY9MvEGSkb2gaG4GGH4ygMi0ZZzyMHdUZBmntJmx5x1G2VuPytCwGN4xsJP6cw+sK+vQ==} - flush-write-stream@1.1.1: - resolution: {integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==} - fn.name@1.1.0: resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} @@ -11014,21 +10599,10 @@ packages: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} - for-in@1.0.2: - resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} - engines: {node: '>=0.10.0'} - - for-own@1.0.0: - resolution: {integrity: sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==} - engines: {node: '>=0.10.0'} - foreground-child@3.3.1: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} - fork-stream@0.0.4: - resolution: {integrity: sha512-Pqq5NnT78ehvUnAk/We/Jr22vSvanRlFTpAmQ88xBY/M1TlHe+P0ILuEyXS595ysdGfaj22634LBkGMA2GTcpA==} - fork-ts-checker-webpack-plugin@9.1.0: resolution: {integrity: sha512-mpafl89VFPJmhnJ1ssH+8wmM2b50n+Rew5x42NeI2U78aRWgtkEtGmctp7iT16UjquJTjorEmIfESj3DxdW84Q==} engines: {node: '>=14.21.3'} @@ -11088,26 +10662,12 @@ packages: resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - fs-mkdirp-stream@1.0.0: - resolution: {integrity: sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==} - engines: {node: '>= 0.10'} - - fs-mkdirp-stream@2.0.1: - resolution: {integrity: sha512-UTOY+59K6IA94tec8Wjqm0FSh5OVudGNB0NL/P6fB3HiE3bYOY3VYBGijsnOHNkQSwC1FKkU77pmq7xp9CskLw==} - engines: {node: '>=10.13.0'} - fs-monkey@1.1.0: resolution: {integrity: sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==} fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - fsevents@1.2.13: - resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} - engines: {node: '>= 4.0'} - os: [darwin] - deprecated: Upgrade to fsevents v2 to mitigate potential security issues - fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -11138,9 +10698,6 @@ packages: get-assigned-identifiers@1.2.0: resolution: {integrity: sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==} - get-caller-file@1.0.3: - resolution: {integrity: sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==} - get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} @@ -11193,16 +10750,9 @@ packages: get-tsconfig@4.14.0: resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} - get-value@2.0.6: - resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} - engines: {node: '>=0.10.0'} - getos@3.2.1: resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==} - 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'} @@ -11211,14 +10761,6 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob-stream@6.1.0: - resolution: {integrity: sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==} - engines: {node: '>= 0.10'} - - glob-stream@8.0.3: - resolution: {integrity: sha512-fqZVj22LtFJkHODT+M4N1RJQ3TjnnQhfE9GwZI8qXscYarnhpip70poMldRnP8ipQ/w0B621kOhfc53/J9bd/A==} - engines: {node: '>=10.13.0'} - glob-to-regex.js@1.2.0: resolution: {integrity: sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==} engines: {node: '>=10.0'} @@ -11228,10 +10770,6 @@ packages: glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob-watcher@5.0.5: - resolution: {integrity: sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==} - engines: {node: '>= 0.10'} - glob@10.5.0: resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} 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 @@ -11260,18 +10798,10 @@ packages: engines: {node: '>=12'} 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 - global-modules@1.0.0: - resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} - engines: {node: '>=0.10.0'} - global-modules@2.0.0: resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} engines: {node: '>=6'} - global-prefix@1.0.2: - resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} - engines: {node: '>=0.10.0'} - global-prefix@3.0.0: resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} engines: {node: '>=6'} @@ -11324,10 +10854,6 @@ packages: globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - glogg@1.0.2: - resolution: {integrity: sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==} - engines: {node: '>= 0.10'} - gonzales-pe@4.3.0: resolution: {integrity: sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==} engines: {node: '>=0.6.0'} @@ -11352,129 +10878,9 @@ packages: growly@1.3.0: resolution: {integrity: sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==} - gulp-babel@8.0.0: - resolution: {integrity: sha512-oomaIqDXxFkg7lbpBou/gnUkX51/Y/M2ZfSjL2hdqXTAlSWZcgZtd2o0cOH0r/eE8LWD0+Q/PsLsr2DKOoqToQ==} - engines: {node: '>=6'} - peerDependencies: - '@babel/core': ^7.29.1 - - gulp-cache@1.1.3: - resolution: {integrity: sha512-NE814LdX1NWQn2sMzn+Rf673o4mqlgg7OyLf92oQ4KEl6DdPfduEGLNH+HexLVcFZXH93DBuxFOvpv4/Js5VaA==} - engines: {node: '>=8.0.0'} - - gulp-cached@1.1.1: - resolution: {integrity: sha512-OEGsICR6Vmx0VK3nhpy5MGPzAjeDYC3+NKxNtJAu4DW8L15oy8tCe2WuD6HDEj9BsbSopnOBiXPK95YHvO0DpA==} - engines: {node: '>= 0.9.0'} - - gulp-cli@2.3.0: - resolution: {integrity: sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==} - engines: {node: '>= 0.10'} - hasBin: true - - gulp-concat@2.6.1: - resolution: {integrity: sha512-a2scActrQrDBpBbR3WUZGyGS1JEPLg5PZJdIa7/Bi3GuKAmPYDK6SFhy/NZq5R8KsKKFvtfR0fakbUCcKGCCjg==} - engines: {node: '>= 0.10'} - - gulp-each@0.5.0: - resolution: {integrity: sha512-QGmidwHgL/o3opLQdbO9XE6urU6UsVBeasuW7eXbdc1RYwNzOxZv+SaXXrkYp0xzesNX1NWWuc85PsHOPpcLwA==} - - gulp-eol@0.2.0: - resolution: {integrity: sha512-YaUQld+7A3h1iOHs7XTdEboYUg8GjA+3DmWtgvZ9sb1r0tDpB27cTtgaoD83oTm9Mp2Hmwge6AQMqPxwUjQ/xA==} - - gulp-eslint-new@2.4.0: - resolution: {integrity: sha512-LtuedFIlZS95LcFptwI6SGIkcsh7CsAigpx2z4IbMchGUPHrDUlZde8gNxXNmLR54qBbS+q8AdHC0JWc5DfmOg==} - engines: {node: ^12.20 || ^14.13 || >=16} - - gulp-file@0.4.0: - resolution: {integrity: sha512-3NPCJpAPpbNoV2aml8T96OK3Aof4pm4PMOIa1jSQbMNSNUUXdZ5QjVgLXLStjv0gg9URcETc7kvYnzXdYXUWug==} - - gulp-filter@7.0.0: - resolution: {integrity: sha512-ZGWtJo0j1mHfP77tVuhyqem4MRA5NfNRjoVe6VAkLGeQQ/QGo2VsFwp7zfPTGDsd1rwzBmoDHhxpE6f5B3Zuaw==} - engines: {node: '>=12'} - peerDependencies: - gulp: '>=4' - peerDependenciesMeta: - gulp: - optional: true - - gulp-flatmap@1.0.2: - resolution: {integrity: sha512-xm+Ax2vPL/xiMBqLFI++wUyPtncm3b55ztGHewmRcoG/sYb0OUTatjSacOud3fee77rnk+jOgnDEHhwBtMHgFA==} - engines: {node: '>=0.10.0'} - - gulp-footer@2.1.0: - resolution: {integrity: sha512-CK3nRBP3PG59XN2L1rDLkBHA7goYsW+tJuVQccLP9jq3mpBT2kuRq0ImgNjrUkDbF948aCVQH4J7uIEqiZ2MHA==} - - gulp-header@2.0.9: - resolution: {integrity: sha512-LMGiBx+qH8giwrOuuZXSGvswcIUh0OiioNkUpLhNyvaC6/Ga8X6cfAeme2L5PqsbXMhL8o8b/OmVqIQdxprhcQ==} - - gulp-if@3.0.0: - resolution: {integrity: sha512-fCUEngzNiEZEK2YuPm+sdMpO6ukb8+/qzbGfJBXyNOXz85bCG7yBI+pPSl+N90d7gnLvMsarthsAImx0qy7BAw==} - - gulp-json-editor@2.6.0: - resolution: {integrity: sha512-Ni0ZUpNrhesHiTlHQth/Nv1rXCn0LUicEvzA5XuGy186C4PVeNoRjfuAIQrbmt3scKv8dgGbCs0hd77ScTw7hA==} - - gulp-match@1.1.0: - resolution: {integrity: sha512-DlyVxa1Gj24DitY2OjEsS+X6tDpretuxD6wTfhXE/Rw2hweqc1f6D/XtsJmoiCwLWfXgR87W9ozEityPCVzGtQ==} - - gulp-multi-process@1.4.0: - resolution: {integrity: sha512-t6vq367MOGUOKeHtzoklVYSXlWoRwIr7/FPVNVfzVhO82mktUTdHMA+rxdnnImtnEZ8qfjmAWNDyogNiE40lww==} - - gulp-notify@4.0.0: - resolution: {integrity: sha512-0cdDvZkHVqu4tqrcOI/jL5YdxYEIPQ7+p3YxnO48w5hhPSisvogZ887qL+fpYItg9m4MUhJ5Se8p8xGy3uJESA==} - engines: {node: '>=0.8.0', npm: '>=1.2.10'} - - gulp-plumber@1.2.1: - resolution: {integrity: sha512-mctAi9msEAG7XzW5ytDVZ9PxWMzzi1pS2rBH7lA095DhMa6KEXjm+St0GOCc567pJKJ/oCvosVAZEpAey0q2eQ==} - engines: {node: '>=0.10', npm: '>=1.2.10'} - - gulp-rename@1.4.0: - resolution: {integrity: sha512-swzbIGb/arEoFK89tPY58vg3Ok1bw+d35PfUNwWqdo7KM4jkmuGA78JiDNqR+JeZFaeeHnRg9N7aihX3YPmsyg==} - engines: {node: '>=4'} - - gulp-replace@0.6.1: - resolution: {integrity: sha512-njH1QkwIsipEmLRh+LBBYJNa41PZRFjRx1zgkMkU+MR4Ftv/4ZtPvbS4PZA7XU6DB/G47JJD0ub/zA7FSfWNMw==} - engines: {node: '>=0.10'} - - gulp-sass@6.0.1: - resolution: {integrity: sha512-4wonidxB8lGPHvahelpGavUBJAuERSl+OIVxPCyQthK4lSJhZ/u3/qjFcyAtnMIXDl6fXTn34H4BXsN7gt54kQ==} - engines: {node: '>=12'} - - gulp-shell@0.8.0: - resolution: {integrity: sha512-wHNCgmqbWkk1c6Gc2dOL5SprcoeujQdeepICwfQRo91DIylTE7a794VEE+leq3cE2YDoiS5ulvRfKVIEMazcTQ==} - engines: {node: '>=10.0.0'} - - gulp-tap@1.0.1: - resolution: {integrity: sha512-VpCARRSyr+WP16JGnoIg98/AcmyQjOwCpQgYoE35CWTdEMSbpgtAIK2fndqv2yY7aXstW27v3ZNBs0Ltb0Zkbg==} - - gulp-template@5.0.0: - resolution: {integrity: sha512-BsE+HrFZG0ItM0fBhRMfqWWR5MQ2W3O3ss1T3XdNqi4p9WCIFYjcdI1L5PikXMNUU93A4NoVLeWPwUmqGAKwGA==} - engines: {node: '>=4'} - - gulp-typescript@5.0.1: - resolution: {integrity: sha512-YuMMlylyJtUSHG1/wuSVTrZp60k1dMEFKYOvDf7OvbAJWrDtxxD4oZon4ancdWwzjj30ztiidhe4VXJniF0pIQ==} - engines: {node: '>= 8'} - peerDependencies: - typescript: ~2.7.1 || >=2.8.0-dev || >=2.9.0-dev || ~3.0.0 || >=3.0.0-dev || >=3.1.0-dev || >= 3.2.0-dev || >= 3.3.0-dev - - gulp-watch@5.0.1: - resolution: {integrity: sha512-HnTSBdzAOFIT4wmXYPDUn783TaYAq9bpaN05vuZNP5eni3z3aRx0NAKbjhhMYtcq76x4R1wf4oORDGdlrEjuog==} - - gulp@4.0.2: - resolution: {integrity: sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==} - engines: {node: '>= 0.10'} - hasBin: true - - gulplog@1.0.0: - resolution: {integrity: sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==} - engines: {node: '>= 0.10'} - handle-thing@2.0.1: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} - hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - harmony-reflect@1.6.2: resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==} @@ -11597,10 +11003,6 @@ packages: resolution: {integrity: sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==} engines: {node: '>=0.10.0'} - homedir-polyfill@1.0.3: - resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} - engines: {node: '>=0.10.0'} - hono@4.12.32: resolution: {integrity: sha512-XcuyW9qE2kJn07PkecMOBd5Vq/hMy7mmGw+idz1yblbg9N17ijJODrvPkn7/dwL3Kulj8LcRJ69DLOWf91dRUg==} engines: {node: '>=16.9.0'} @@ -11614,10 +11016,6 @@ packages: hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - hosted-git-info@4.1.0: - resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} - engines: {node: '>=10'} - hosted-git-info@9.0.2: resolution: {integrity: sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==} engines: {node: ^20.17.0 || >=22.9.0} @@ -11846,10 +11244,6 @@ packages: resolution: {integrity: sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==} engines: {node: '>=6'} - import-lazy@4.0.0: - resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} - engines: {node: '>=8'} - import-local@3.2.0: resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} engines: {node: '>=8'} @@ -11948,10 +11342,6 @@ packages: intl@1.2.5: resolution: {integrity: sha512-rK0KcPHeBFBcqsErKSpvZnrOmWOj+EmDkyJ57e90YWaQNqbcivcqmKDlHEeNprDWOsKzPsh1BfSpPQdDvclHVw==} - invert-kv@1.0.0: - resolution: {integrity: sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==} - engines: {node: '>=0.10.0'} - iobuffer@5.4.0: resolution: {integrity: sha512-DRebOWuqDvxunfkNJAlc3IzWIPD5xVxwUNbHr7xKB8E6aLJxIPfNX3CoMJghcFjpv6RWQsrcJbghtEwSPoJqMA==} @@ -11967,10 +11357,6 @@ packages: resolution: {integrity: sha512-9VGk3HGanVE6JoZXHiCpnGy5X0jYDnN4EA4lntFPj+1vIWlFhIylq2CrrCOJH9EAhc5CYhq18F2Av2tgoAPsYQ==} engines: {node: '>= 10'} - is-absolute@1.0.0: - resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} - engines: {node: '>=0.10.0'} - is-arguments@1.2.0: resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} engines: {node: '>= 0.4'} @@ -11990,10 +11376,6 @@ packages: resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} engines: {node: '>= 0.4'} - is-binary-path@1.0.1: - resolution: {integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==} - engines: {node: '>=0.10.0'} - is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} @@ -12025,10 +11407,6 @@ packages: resolution: {integrity: sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==} hasBin: true - is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} - engines: {node: '>= 0.4'} - is-core-module@2.16.2: resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} engines: {node: '>= 0.4'} @@ -12074,10 +11452,6 @@ packages: resolution: {integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==} engines: {node: '>=0.10.0'} - is-fullwidth-code-point@1.0.0: - resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==} - engines: {node: '>=0.10.0'} - is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -12102,10 +11476,6 @@ packages: 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-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -12134,10 +11504,6 @@ packages: is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - is-negated-glob@1.0.0: - resolution: {integrity: sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==} - engines: {node: '>=0.10.0'} - is-negative-zero@2.0.3: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} @@ -12150,10 +11516,6 @@ packages: resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} - is-number@4.0.0: - resolution: {integrity: sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==} - engines: {node: '>=0.10.0'} - is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -12182,10 +11544,6 @@ packages: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} - is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} @@ -12224,10 +11582,6 @@ packages: resolution: {integrity: sha512-i1h+y50g+0hRbBD+dbnInl3JlJ702aar58snAeX+MxBAPvzXGej7sYoPMhlnykabt0ZzCJNBEyzMlekuQZN7fA==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - is-relative@1.0.0: - resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==} - engines: {node: '>=0.10.0'} - is-set@2.0.3: resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} engines: {node: '>= 0.4'} @@ -12256,10 +11610,6 @@ packages: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} - is-unc-path@1.0.0: - resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} - engines: {node: '>=0.10.0'} - is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} @@ -12282,10 +11632,6 @@ packages: is-utf8@0.2.1: resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} - is-valid-glob@1.0.0: - resolution: {integrity: sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==} - engines: {node: '>=0.10.0'} - is-weakmap@2.0.2: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} @@ -12305,10 +11651,6 @@ packages: resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} engines: {node: '>=12.13'} - is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -12317,13 +11659,6 @@ packages: resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} engines: {node: '>=16'} - is@3.3.2: - resolution: {integrity: sha512-a2xr4E3s1PjDS8ORcGgXpWx6V+liNs+O3JRD2mb9aeugD7rtkkZ0zgLdYgw0tWsKhsdiezGYptSiMlVazCBTuQ==} - engines: {node: '>= 0.4'} - - isarray@0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} @@ -12373,10 +11708,6 @@ packages: resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} - istextorbinary@1.0.2: - resolution: {integrity: sha512-qZ5ptUDuni2pdCngFTraYa5kalQ0mX47Mhn08tT0DZZv/7yhX1eMb9lFtXVbWhFtgRtpLG/UdqVAjh9teO5x+w==} - engines: {node: '>=0.4'} - iterator.prototype@1.1.5: resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} engines: {node: '>= 0.4'} @@ -12875,9 +12206,6 @@ packages: jszip@3.10.1: resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} - just-debounce@1.1.0: - resolution: {integrity: sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==} - just-extend@6.2.0: resolution: {integrity: sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==} @@ -12927,14 +12255,6 @@ packages: keyv@5.6.0: resolution: {integrity: sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==} - kind-of@1.1.0: - resolution: {integrity: sha512-aUH6ElPnMGon2/YkxRIigV32MOpTVcoXQ1Oo8aYn40s+sJ3j+0gFZsT8HKDcxNy7Fi9zuquWtGaGAahOdv5p/g==} - engines: {node: '>=0.10.0'} - - kind-of@5.1.0: - resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} - engines: {node: '>=0.10.0'} - kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -12950,9 +12270,6 @@ packages: knockout@3.5.3: resolution: {integrity: sha512-6iPv8M/xDPYfsiKyEyIPcSYBt8L+FZoJS/frLT8Nq3n9kMvP+WZ6ZPehYZV5c22Qc64Ie7unmTqYqgSdCB1Taw==} - known-css-properties@0.29.0: - resolution: {integrity: sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==} - known-css-properties@0.35.0: resolution: {integrity: sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==} @@ -12972,33 +12289,13 @@ packages: resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} engines: {node: '>=0.10'} - last-run@1.1.1: - resolution: {integrity: sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==} - engines: {node: '>= 0.10'} - launch-editor@2.14.1: resolution: {integrity: sha512-QWBrQsMpH7gPr965dsKD/3cKWiNoTjpATQf++Xq63N6sKRGMwlVXz41O1IZTMfZQgBctD/K5Zt06+/I6pP6+HA==} - lazypipe@1.0.2: - resolution: {integrity: sha512-CrU+NYdFHW8ElaeXCWz5IbmetiYVYq1fOCmpdAeZ8L+khbv1e7EnshyjlKqkO+pJbVPrsJQnHbVxEiLujG6qhQ==} - engines: {node: '>= 0.8.0'} - lazystream@1.0.1: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} - lcid@1.0.0: - resolution: {integrity: sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==} - engines: {node: '>=0.10.0'} - - lead@1.0.0: - resolution: {integrity: sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==} - engines: {node: '>= 0.10'} - - lead@4.0.0: - resolution: {integrity: sha512-DpMa59o5uGUWWjruMp71e6knmwKU3jRBBn1kjuLWN9EeIOxNeSAwvHf03WIl8g/ZMR2oSQC9ej3yeLBwdDc/pg==} - engines: {node: '>=10.13.0'} - less-loader@12.3.0: resolution: {integrity: sha512-0M6+uYulvYIWs52y0LqN4+QM9TqWAohYSNTo4htE8Z7Cn3G/qQMEmktfHmyJT23k+20kU9zHH2wrfFXkxNLtVw==} engines: {node: '>= 18.12.0'} @@ -13064,10 +12361,6 @@ packages: lie@3.3.0: resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} - liftoff@3.1.0: - resolution: {integrity: sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==} - engines: {node: '>= 0.8'} - lightningcss-android-arm64@1.32.0: resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} engines: {node: '>= 12.0.0'} @@ -13194,10 +12487,6 @@ packages: resolution: {integrity: sha512-9FKQA6G1MMtqNxfxvSBNXD/axeG2QRjYbNh0/ykRL5xYcRbCm2vXq7B9bhc7nSuKdHzr8/BHIwfPuYYH1UsXXw==} hasBin: true - load-json-file@1.1.0: - resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==} - engines: {node: '>=0.10.0'} - loader-runner@4.3.1: resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} engines: {node: '>=6.11.5'} @@ -13230,9 +12519,6 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - lodash._reinterpolate@3.0.0: - resolution: {integrity: sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==} - lodash.clone@4.5.0: resolution: {integrity: sha512-GhrVeweiTD6uTmmn5hV/lzgCQhccwReIVRLHp7LT4SopOjqEZ5BbX8b5WWEtAKasjmy8hR7ZPwsYlxRCku5odg==} deprecated: This package is deprecated. Use structuredClone instead. @@ -13243,9 +12529,6 @@ packages: lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - lodash.defaults@4.2.0: - resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - lodash.escaperegexp@4.1.2: resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==} @@ -13280,13 +12563,6 @@ packages: lodash.some@4.6.0: resolution: {integrity: sha512-j7MJE+TuT51q9ggt4fSgVqro163BEFjAt3u97IqU+JA2DkWl80nFTrowzLpZ/BnpN7rrl0JA/593NAdd8p/scQ==} - lodash.template@4.18.1: - resolution: {integrity: sha512-5urZrLnV/VD6zHK5KsVtZgt7H19v51mIzoS0aBNH8yp3I8tbswrEjOABOPY8m8uB7NuibubLrMX+Y0PXsU9X+w==} - deprecated: This package is deprecated. Use https://socket.dev/npm/package/eta instead. - - lodash.templatesettings@4.2.0: - resolution: {integrity: sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==} - lodash.truncate@4.4.2: resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} @@ -13409,38 +12685,15 @@ packages: resolution: {integrity: sha512-uCbIa8jWWmQZt4dSnEStkVC6gdakiinAm4PiGsywIkguF0eWMdcjDz0ECYhUolFU3pFLOev9VNPCEygydXnddg==} engines: {node: ^20.17.0 || >=22.9.0} - make-iterator@1.0.1: - resolution: {integrity: sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==} - engines: {node: '>=0.10.0'} - make-synchronized@0.8.0: resolution: {integrity: sha512-DZu4lwc0ffoFz581BSQa/BJl+1ZqIkoRQ+VejMlH0VrP4E86StAODnZujZ4sepumQj8rcP7wUnUBGM8Gu+zKUA==} makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - map-cache@0.2.2: - resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} - engines: {node: '>=0.10.0'} - - map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - - map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - - map-stream@0.0.7: - resolution: {integrity: sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==} - match-url-wildcard@0.0.4: resolution: {integrity: sha512-R1XhQaamUZPWLOPtp4ig5j+3jctN+skhgRmEQTUamMzmNtRG69QEirQs0NZKLtHMR7tzWpmtnS4Eqv65DcgXUA==} - matchdep@2.0.0: - resolution: {integrity: sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==} - engines: {node: '>= 0.10.0'} - math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -13469,9 +12722,6 @@ packages: mdast-util-to-string@3.2.0: resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} - mdn-data@2.0.30: - resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - mdn-data@2.27.1: resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} @@ -13503,10 +12753,6 @@ packages: resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} engines: {node: '>= 0.10.0'} - meow@10.1.5: - resolution: {integrity: sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - meow@13.2.0: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} engines: {node: '>=18'} @@ -13690,10 +12936,6 @@ packages: resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} engines: {node: '>=16 || 14 >=14.17'} - minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -13815,10 +13057,6 @@ packages: resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} hasBin: true - multimatch@5.0.0: - resolution: {integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==} - engines: {node: '>=10'} - mustache@2.3.2: resolution: {integrity: sha512-KpMNwdQsYz3O/SBS1qJ/o3sqUJ5wSb8gb0pul8CO0S56b9Y2ALm8zCfsjPXsqGFfoNBkDwZuZIAjhsZI03gYVQ==} engines: {npm: '>=1.4.0'} @@ -13828,10 +13066,6 @@ packages: resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} hasBin: true - mute-stdout@1.0.1: - resolution: {integrity: sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==} - engines: {node: '>= 0.10'} - mute-stream@2.0.0: resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} engines: {node: ^18.17.0 || >=20.5.0} @@ -13844,14 +13078,6 @@ packages: resolution: {integrity: sha512-BzQguy9W9NJgoVn2mRWzbFrFWWztGCcng2QI9+41frfk+Athwgx3qhqhvStz7ExeUUu7Kzw427sNzHpEZNINog==} engines: {node: '>=16.0.0'} - nan@2.26.2: - resolution: {integrity: sha512-0tTvBTYkt3tdGw22nrAy50x7gpbGCCFH3AFcyS5WiUu7Eu4vWlri1woE6qHBSfy11vksDqkiwjOnlR7WV8G1Hw==} - - nanoid@3.3.12: - resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - nanoid@3.3.16: resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -13990,18 +13216,10 @@ packages: resolution: {integrity: sha512-jn9vOIK/nfqoFCcpK89/VCVaLg1IHE6UVfDOzvqmANaJ/rWCTEdH8RZ1V278nv2jr36BJdyQXIAavBLXpzdlag==} engines: {node: '>=14'} - node-stream@1.7.0: - resolution: {integrity: sha512-AB1qHzJWjAuxpDvTr/n1wvKVOg8c9BjAHV21QXq+q9yEUNr7wSqfHmAhAzvpQWSbf8mQQle3fjsnu3R14jrElA==} - engines: {node: '>=0.12'} - node-watch@0.7.3: resolution: {integrity: sha512-3l4E8uMPY1HdMMryPRUAl+oIHtXtyiTlIiESNSVSNxcPfzAFzeTbXFQkZfAwBbo0B1qMSG8nUABx+Gd+YrbKrQ==} engines: {node: '>=6'} - node.extend@2.0.3: - resolution: {integrity: sha512-xwADg/okH48PvBmRZyoX8i8GJaKuJ1CqlqotlZOhUio8egD1P5trJupHKBzcPjSF9ifK2gPcEICRBnkfPqQXZw==} - engines: {node: '>=0.4.0'} - nopt@3.0.6: resolution: {integrity: sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==} hasBin: true @@ -14019,14 +13237,6 @@ packages: normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - normalize-package-data@3.0.3: - resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} - engines: {node: '>=10'} - - normalize-path@2.1.1: - resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} - engines: {node: '>=0.10.0'} - normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -14035,14 +13245,6 @@ packages: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} - now-and-later@2.0.1: - resolution: {integrity: sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==} - engines: {node: '>= 0.10'} - - now-and-later@3.0.0: - resolution: {integrity: sha512-pGO4pzSdaxhWTGkfSfHx3hVzJVslFPwBp2Myq9MYN/ChfJZF87ochMAXnvz6/58RJSf5ik2q9tXprBBrk2cpcg==} - engines: {node: '>= 10.13.0'} - npm-bundled@5.0.0: resolution: {integrity: sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw==} engines: {node: ^20.17.0 || >=22.9.0} @@ -14094,10 +13296,6 @@ packages: nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - number-is-nan@1.0.1: - resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} - engines: {node: '>=0.10.0'} - nwsapi@2.2.24: resolution: {integrity: sha512-7YRhZ3jS45LwmSCT4b2sVFHt/WuovaktDU07QrtOBY2PXskss5a9jfmR9jptyumwXST+rFjrmppMY1KT/yn35A==} @@ -14125,9 +13323,6 @@ packages: resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} engines: {node: '>= 0.4'} - object-keys@0.4.0: - resolution: {integrity: sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==} - object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} @@ -14136,10 +13331,6 @@ packages: resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} - object.defaults@1.1.0: - resolution: {integrity: sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==} - engines: {node: '>=0.10.0'} - object.entries@1.1.9: resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} engines: {node: '>= 0.4'} @@ -14152,18 +13343,6 @@ packages: resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} engines: {node: '>= 0.4'} - object.map@1.0.1: - resolution: {integrity: sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==} - engines: {node: '>=0.10.0'} - - object.pick@1.3.0: - resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} - engines: {node: '>=0.10.0'} - - object.reduce@1.0.1: - resolution: {integrity: sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==} - engines: {node: '>=0.10.0'} - object.values@1.2.1: resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} @@ -14265,9 +13444,6 @@ packages: ordered-binary@1.6.1: resolution: {integrity: sha512-QkCdPooczexPLiXIrbVOPYkR3VO3T6v2OyKRkR1Xbhpy7/LAVXwahnRCgRp78Oe/Ehf0C/HATAxfSr6eA1oX+w==} - ordered-read-streams@1.0.1: - resolution: {integrity: sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==} - os-browserify@0.3.0: resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} @@ -14278,10 +13454,6 @@ packages: resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} engines: {node: '>=0.10.0'} - os-locale@1.4.0: - resolution: {integrity: sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==} - engines: {node: '>=0.10.0'} - os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} @@ -14378,14 +13550,6 @@ packages: parse-color@1.0.0: resolution: {integrity: sha512-fuDHYgFHJGbpGMgw9skY/bj3HL/Jrn4l/5rSspy00DoT4RyLnDcRvPxdZ+r6OFwIsgAuhDh4I09tAId4mI12bw==} - parse-filepath@1.0.2: - resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==} - engines: {node: '>=0.8'} - - parse-json@2.2.0: - resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==} - engines: {node: '>=0.10.0'} - parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -14394,10 +13558,6 @@ packages: resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} engines: {node: '>= 0.10'} - parse-passwd@1.0.0: - resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} - engines: {node: '>=0.10.0'} - parse5-html-rewriting-stream@8.0.0: resolution: {integrity: sha512-wzh11mj8KKkno1pZEu+l2EVeWsuKDfR5KNWZOTsslfUX8lPDZx77m9T0kIoAVkFtD1nx6YF8oh4BnPHvxMtNMw==} @@ -14438,13 +13598,6 @@ packages: path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - path-dirname@1.0.2: - resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} - - path-exists@2.1.0: - resolution: {integrity: sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==} - engines: {node: '>=0.10.0'} - path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} @@ -14475,14 +13628,6 @@ packages: resolution: {integrity: sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==} engines: {node: '>= 0.8.0'} - path-root-regex@0.1.2: - resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==} - engines: {node: '>=0.10.0'} - - path-root@0.1.1: - resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} - engines: {node: '>=0.10.0'} - path-scurry@1.11.1: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} @@ -14497,10 +13642,6 @@ packages: path-to-regexp@8.4.2: resolution: {integrity: sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==} - path-type@1.1.0: - resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==} - engines: {node: '>=0.10.0'} - path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -14611,18 +13752,10 @@ packages: resolution: {integrity: sha512-B7+VDyb8Tl6oMJT9oSO2CW8XC/T4UcJGrwOVoNGwOQsQYhlpfajmrMj5xeejqaASq3V/EqThyOeATEOMuSEXiA==} engines: {node: '>=12'} - plugin-error@0.1.2: - resolution: {integrity: sha512-WzZHcm4+GO34sjFMxQMqZbsz3xiNEgonCskQ9v+IroMmYgk/tas8dG+Hr2D6IbRPybZ12oWpzE/w3cGJ6FJzOw==} - engines: {node: '>=0.10.0'} - plugin-error@1.0.1: resolution: {integrity: sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==} engines: {node: '>= 0.10'} - plugin-error@2.0.1: - resolution: {integrity: sha512-zMakqvIDyY40xHOvzXka0kUvf40nYIuwRE8dWhti2WtjQZ31xAgBZBhxsK7vK3QbRXS1Xms/LO7B5cuAsfB2Gg==} - engines: {node: '>=10.13.0'} - pluralize@8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} @@ -14855,15 +13988,9 @@ packages: public-encrypt@4.0.3: resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} - pump@2.0.1: - resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} - pump@3.0.4: resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} - pumpify@1.5.1: - resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} - punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} @@ -14898,7 +14025,6 @@ packages: engines: {node: '>=0.6.0', teleport: '>=0.2.0'} deprecated: |- You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. - (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) qified@0.9.1: @@ -14935,10 +14061,6 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - quick-lru@5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} - quill-delta@5.1.0: resolution: {integrity: sha512-X74oCeRI4/p0ucjb5Ma8adTXd9Scumz367kkMK5V/IatcX6A0vlgLgKbzXWy5nZmCGeNJm2oQX0d2Eqj+ZIlCA==} engines: {node: '>= 12.0.0'} @@ -15055,32 +14177,10 @@ packages: read-only-stream@2.0.0: resolution: {integrity: sha512-3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w==} - read-pkg-up@1.0.1: - resolution: {integrity: sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==} - engines: {node: '>=0.10.0'} - - read-pkg-up@8.0.0: - resolution: {integrity: sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==} - engines: {node: '>=12'} - - read-pkg@1.1.0: - resolution: {integrity: sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==} - engines: {node: '>=0.10.0'} - read-pkg@5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} - read-pkg@6.0.0: - resolution: {integrity: sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==} - engines: {node: '>=12'} - - read-vinyl-file-stream@2.0.3: - resolution: {integrity: sha512-ZbtobBf+n/va3eRcIkMDYsp7DCnnjh46YFOOdj42aCiWFirp9T/+YGMCTfVpEFIuiH3c5Kp13jpn3i5DoygxLw==} - - readable-stream@1.0.34: - resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} - readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} @@ -15095,10 +14195,6 @@ packages: readdir-glob@1.1.3: resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} - readdirp@2.2.1: - resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} - engines: {node: '>=0.10'} - readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -15131,10 +14227,6 @@ packages: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} - redent@4.0.0: - resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} - engines: {node: '>=12'} - reflect-metadata@0.1.13: resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} @@ -15212,14 +14304,6 @@ packages: remark-stringify@10.0.3: resolution: {integrity: sha512-koyOzCMYoUHudypbj4XpnAKFbkddRMYZHwghnxd7ue5210WzGw6kOBwauJTRUMq16jsovXx8dYNvSSWP89kZ3A==} - remove-bom-buffer@3.0.0: - resolution: {integrity: sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==} - engines: {node: '>=0.10.0'} - - remove-bom-stream@1.2.0: - resolution: {integrity: sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==} - engines: {node: '>= 0.10'} - remove-trailing-separator@1.1.0: resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} @@ -15235,25 +14319,10 @@ packages: 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-ext@1.0.1: resolution: {integrity: sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==} engines: {node: '>= 0.10'} - replace-ext@2.0.0: - resolution: {integrity: sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==} - engines: {node: '>= 10'} - - replace-homedir@1.0.0: - resolution: {integrity: sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==} - engines: {node: '>= 0.10'} - - replacestream@4.0.3: - resolution: {integrity: sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==} - require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -15262,9 +14331,6 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - require-main-filename@1.0.1: - resolution: {integrity: sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==} - requireindex@1.2.0: resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==} engines: {node: '>=0.10.5'} @@ -15296,10 +14362,6 @@ packages: resolution: {integrity: sha512-Tz7zfjhLfsvR39ADOSk9us4421J/1ztVBo4rWUkF38hgHK5m0OCZ3NxFVpqHRkjctnwVa15igEUHFJp8MCS7vA==} engines: {node: '>=14'} - resolve-dir@1.0.1: - resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} - engines: {node: '>=0.10.0'} - resolve-from@2.0.0: resolution: {integrity: sha512-qpFcKaXsq8+oRoLilkwyc7zHGF5i9Q2/25NIgLQQ/+VVv9rU4qvr6nXVAw1DsnXJyQkZsR4Ytfbtg5ehfcUssQ==} engines: {node: '>=0.10.0'} @@ -15312,14 +14374,6 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - resolve-options@1.1.0: - resolution: {integrity: sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==} - engines: {node: '>= 0.10'} - - resolve-options@2.0.0: - resolution: {integrity: sha512-/FopbmmFOQCfsCx77BRFdKOniglTiHumLgwvd6IDPihy1GKkadZbgQJBcTb2lMzSR1pndzd96b1nZrreZ7+9/A==} - engines: {node: '>= 10.13.0'} - resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} @@ -15636,11 +14690,6 @@ packages: engines: {node: '>=14'} hasBin: true - sass@1.102.0: - resolution: {integrity: sha512-NSOyTnaQF7rTAEOtI2fwb386vL+akyiQLBZu8Na7hXCb+umJy0GAqlcMIaqACZ6Z1VgTBS4K9PG6B3IdjHGJsw==} - engines: {node: '>=20.19.0'} - hasBin: true - sass@1.90.0: resolution: {integrity: sha512-9GUyuksjw70uNpb1MTYWsH9MQHOHY6kwfnkafC24+7aOMZn9+rVMBxRbLvw756mrBFbIsFg6Xw9IkR2Fnn3k+Q==} engines: {node: '>=14.0.0'} @@ -15702,10 +14751,6 @@ packages: resolution: {integrity: sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==} engines: {node: '>=18'} - semver-greatest-satisfied-range@1.1.0: - resolution: {integrity: sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==} - engines: {node: '>= 0.10'} - semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -15763,9 +14808,6 @@ packages: resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} engines: {node: '>= 18'} - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - set-cookie-parser@2.7.2: resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} @@ -15979,10 +15021,6 @@ packages: space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - sparkles@1.0.1: - resolution: {integrity: sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==} - engines: {node: '>= 0.10'} - spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} @@ -16005,9 +15043,6 @@ packages: resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} engines: {node: '>=6.0.0'} - split2@2.2.0: - resolution: {integrity: sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==} - ssri@13.0.1: resolution: {integrity: sha512-QUiRf1+u9wPTL/76GTYlKttDEBWV1ga9ZXW8BG6kfdeyyM8LGPix9gROyg9V2+P0xNyF3X2Go526xKFdMZrHSQ==} engines: {node: ^20.17.0 || >=22.9.0} @@ -16061,31 +15096,15 @@ packages: stream-combiner2@1.1.1: resolution: {integrity: sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==} - stream-combiner@0.2.2: - resolution: {integrity: sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ==} - - stream-composer@1.0.2: - resolution: {integrity: sha512-bnBselmwfX5K10AH6L4c8+S5lgZMWI7ZYrz2rvYjCPB2DIMC4Ig8OpxGpNJSxRZ58oti7y1IcNvjBAz9vW5m4w==} - - stream-exhaust@1.0.2: - resolution: {integrity: sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==} - stream-http@3.2.0: resolution: {integrity: sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==} stream-parser@0.3.1: resolution: {integrity: sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==} - stream-shift@1.0.3: - resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - stream-splicer@2.0.1: resolution: {integrity: sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==} - streamfilter@3.0.0: - resolution: {integrity: sha512-kvKNfXCmUyC8lAXSSHCIXBUlo/lhsLcCU/OmzACZYpRUdtKIH68xYhm/+HI15jFJYtNJGYtCgn2wmIiExY1VwA==} - engines: {node: '>=8.12.0'} - streamroller@3.1.5: resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==} engines: {node: '>=8.0'} @@ -16101,10 +15120,6 @@ packages: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} - string-width@1.0.2: - resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==} - engines: {node: '>=0.10.0'} - string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -16147,9 +15162,6 @@ packages: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} engines: {node: '>= 0.4'} - string_decoder@0.10.31: - resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} - string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -16175,10 +15187,6 @@ packages: resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} engines: {node: '>=12'} - strip-bom-stream@2.0.0: - resolution: {integrity: sha512-yH0+mD8oahBZWnY43vxs4pSinn8SMKAdml/EOGBewoe1Y0Eitd0h2Mg3ZRiXruUW6L4P+lvZiEgbh0NgUGia1w==} - engines: {node: '>=0.10.0'} - strip-bom@2.0.0: resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==} engines: {node: '>=0.10.0'} @@ -16302,11 +15310,6 @@ packages: peerDependencies: stylelint: ^16.0.2 - stylelint@15.11.0: - resolution: {integrity: sha512-78O4c6IswZ9TzpcIiQJIN49K3qNoXTM8zEJzhaTE/xRTCZswaovSEVIa/uwbOltZrk16X4jAxjaOhzz/hTm1Kw==} - engines: {node: ^14.13.1 || >=16.0.0} - hasBin: true - stylelint@16.22.0: resolution: {integrity: sha512-SVEMTdjKNV4ollUrIY9ordZ36zHv2/PHzPjfPMau370MlL2VYXeLgSNMMiEbLGRO8RmD2R8/BVUeF2DfnfkC0w==} engines: {node: '>=18.12.0'} @@ -16344,9 +15347,6 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - sver-compat@1.5.0: - resolution: {integrity: sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==} - svg-pathdata@6.0.3: resolution: {integrity: sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==} engines: {node: '>=12.0.0'} @@ -16432,9 +15432,6 @@ packages: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} - ternary-stream@3.0.0: - resolution: {integrity: sha512-oIzdi+UL/JdktkT+7KU5tSIQjj8pbShj3OASuvDEhm0NT5lppsm7aXWAmAq4/QMaBIyfuEcNLbAQA+HpaISobQ==} - terser-webpack-plugin@5.3.17: resolution: {integrity: sha512-YR7PtUp6GMU91BgSJmlaX/rS2lGDbAF7D+Wtq7hRO+MiljNmodYvqslzCFiYVAgW+Qoaaia/QUIP4lGXufjdZw==} engines: {node: '>= 10.13.0'} @@ -16522,36 +15519,15 @@ packages: text-segmentation@1.0.3: resolution: {integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==} - textextensions@1.0.2: - resolution: {integrity: sha512-jm9KjEWiDmtGLBrTqXEduGzlYTTlPaoDKdq5YRQhD0rYjo61ZNTYKZ/x5J4ajPSBH9wIYY5qm9GNG5otIKjtOA==} - thingies@2.6.0: resolution: {integrity: sha512-rMHRjmlFLM1R96UYPvpmnc3LYtdFrT33JIB7L9hetGue1qAPfn1N2LJeEjxUSidu1Iku+haLZXDuEXUHNGO/lg==} engines: {node: '>=10.18'} peerDependencies: tslib: ^2 - through2-filter@3.0.0: - resolution: {integrity: sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==} - - through2@0.4.2: - resolution: {integrity: sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ==} - - through2@2.0.3: - resolution: {integrity: sha512-tmNYYHFqXmaKSSlOU4ZbQ82cxmFQa5LRWKFtWCNkGIiZ3/VHmOffCeWfBRZZRyXAhNP9itVMR+cuvomBOPlm8g==} - through2@2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - through2@3.0.1: - resolution: {integrity: sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==} - - through2@3.0.2: - resolution: {integrity: sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==} - - through2@4.0.2: - resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} - through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} @@ -16606,10 +15582,6 @@ packages: tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - to-absolute-glob@2.0.2: - resolution: {integrity: sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==} - engines: {node: '>=0.10.0'} - to-buffer@1.2.2: resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==} engines: {node: '>= 0.4'} @@ -16622,14 +15594,6 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - to-through@2.0.0: - resolution: {integrity: sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==} - engines: {node: '>= 0.10'} - - to-through@3.0.0: - resolution: {integrity: sha512-y8MN937s/HVhEoBU1SxfHC+wxCHkV1a9gW8eAdTadYh/bGyesZIVcbjI+mSpFbSVwQici/XjBjuUyri1dnXwBw==} - engines: {node: '>=10.13.0'} - toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} @@ -16667,10 +15631,6 @@ packages: trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - trim-newlines@4.1.1: - resolution: {integrity: sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==} - engines: {node: '>=12'} - trim-right@1.0.1: resolution: {integrity: sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==} engines: {node: '>=0.10.0'} @@ -16855,10 +15815,6 @@ packages: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} - type-is@2.0.1: - resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} - engines: {node: '>= 0.6'} - type-is@2.1.0: resolution: {integrity: sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==} engines: {node: '>= 18'} @@ -16923,22 +15879,10 @@ packages: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} - unc-path-regex@0.1.2: - resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} - engines: {node: '>=0.10.0'} - undeclared-identifiers@1.1.3: resolution: {integrity: sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==} hasBin: true - undertaker-registry@1.0.1: - resolution: {integrity: sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==} - engines: {node: '>= 0.10'} - - undertaker@1.3.0: - resolution: {integrity: sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==} - engines: {node: '>= 0.10'} - undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} @@ -16975,9 +15919,6 @@ packages: resolution: {integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==} engines: {node: '>= 0.8.0'} - unique-stream@2.4.0: - resolution: {integrity: sha512-V6QarSfeSgDipGA9EZdoIzu03ZDlOFkk+FbEP5cwgrZXN3iIkYR91IjU2EnM6rB835kGQsqHX8qncObTXV+6KA==} - unist-util-find-after@4.0.1: resolution: {integrity: sha512-QO/PuPMm2ERxC6vFXEPtmAutOopy5PknD+Oq64gGwxKtk4xwo9Z97t9Av1obPmGU0IyTa6EKYUfTrK2QJS3Ozw==} @@ -17035,10 +15976,6 @@ packages: unzipper@0.12.3: resolution: {integrity: sha512-PZ8hTS+AqcGxsaQntl3IRBw65QrBI6lxzqDEL7IAo/XCEqRTKGfOX56Vea5TH9SZczRVxuzk1re04z/YjuYCJA==} - upath@1.2.0: - resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} - engines: {node: '>=4'} - update-browserslist-db@1.2.3: resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true @@ -17115,10 +16052,6 @@ packages: resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} engines: {node: '>=10.12.0'} - v8flags@3.2.0: - resolution: {integrity: sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==} - engines: {node: '>= 0.10'} - validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -17130,14 +16063,6 @@ packages: resolution: {integrity: sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==} engines: {node: ^20.17.0 || >=22.9.0} - value-or-function@3.0.0: - resolution: {integrity: sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==} - engines: {node: '>= 0.10'} - - value-or-function@4.0.0: - resolution: {integrity: sha512-aeVK81SIuT6aMJfNo9Vte8Dw0/FZINGBV8BfCraGtqVxIeLAEhJyoWs8SmvRVmXfGss2PmmOwZCuBPbZR+IYWg==} - engines: {node: '>= 10.13.0'} - varint@6.0.0: resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} @@ -17160,49 +16085,10 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vinyl-contents@2.0.0: - resolution: {integrity: sha512-cHq6NnGyi2pZ7xwdHSW1v4Jfnho4TEGtxZHw01cmnc8+i7jgR6bRnED/LbrKan/Q7CvVLbnvA5OepnhbpjBZ5Q==} - engines: {node: '>=10.13.0'} - - vinyl-file@2.0.0: - resolution: {integrity: sha512-44i5QVLwRPbiRyuiHJ+zJXooNNRXUUifdfYIC1Gm7YTlemMgYQrZ+q1LERS6AYAN8w0xe7n9OgjEYckQjR5+4g==} - engines: {node: '>=0.10.0'} - - vinyl-fs@3.0.3: - resolution: {integrity: sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==} - engines: {node: '>= 0.10'} - - vinyl-fs@4.0.2: - resolution: {integrity: sha512-XRFwBLLTl8lRAOYiBqxY279wY46tVxLaRhSwo3GzKEuLz1giffsOquWWboD/haGf5lx+JyTigCFfe7DWHoARIA==} - engines: {node: '>=10.13.0'} - - vinyl-named@1.1.0: - resolution: {integrity: sha512-ElYBnsSw8Y1Hz11WPw0DFmi+TBNTEBhZ9zXaHluDSIZZnkFIGCjGRBpsW5QmbMMLwv+lRpUD3VbKdJCbNpct7Q==} - engines: {node: '>= 0.10.0'} - - vinyl-sourcemap@1.1.0: - resolution: {integrity: sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==} - engines: {node: '>= 0.10'} - - vinyl-sourcemap@2.0.0: - resolution: {integrity: sha512-BAEvWxbBUXvlNoFQVFVHpybBbjW1r03WhohJzJDSfgrrK5xVYIDTan6xN14DlyImShgDRv2gl9qhM6irVMsV0Q==} - engines: {node: '>=10.13.0'} - - vinyl-sourcemaps-apply@0.2.1: - resolution: {integrity: sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw==} - - vinyl@1.2.0: - resolution: {integrity: sha512-Ci3wnR2uuSAWFMSglZuB8Z2apBdtOyz8CV7dC6/U1XbltXBC+IuutUkXQISz01P+US2ouBuesSbV6zILZ6BuzQ==} - engines: {node: '>= 0.9'} - vinyl@2.2.1: resolution: {integrity: sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==} engines: {node: '>= 0.10'} - vinyl@3.0.1: - resolution: {integrity: sha512-0QwqXteBNXgnLCdWdvPQBX6FXRHtIH3VhJPTd5Lwn28tJXc34YqSCWUmkOvtJHBmB3gGoPtrOKk3Ts8/kEZ9aA==} - engines: {node: '>=10.13.0'} - vite@7.3.5: resolution: {integrity: sha512-KuOaNhcnGFN2zIPGA7wRmzF+lJA1sea7rHq17aiJ++9lzY1WWG6Jpwqwe1KNbRVPIqHmr8GLYx7jbrQcN/7/ww==} engines: {node: ^20.19.0 || >=22.12.0} @@ -17645,9 +16531,6 @@ packages: resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} engines: {node: '>= 0.4'} - which-module@1.0.0: - resolution: {integrity: sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==} - which-promise@1.0.0: resolution: {integrity: sha512-15ahjtDr3H+RBtTrvBcKhOFhIEiN3RZSCevDPWtBys+QUivZX9cYyNJcyWNIrUMVsgGrEuIThif9jxeEAQFauw==} @@ -17697,10 +16580,6 @@ packages: resolution: {integrity: sha512-SGcvg80f0wUy2/fXES19feHMz8E0JoXv2uNgHOu4Dgi2OrCy1lqwFYEJz1BLbDI0exjPMe/ZdzZ/YpGECBG/aQ==} engines: {node: '>=20'} - wrap-ansi@2.1.0: - resolution: {integrity: sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==} - engines: {node: '>=0.10.0'} - wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -17787,17 +16666,10 @@ packages: xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - xtend@2.1.2: - resolution: {integrity: sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==} - engines: {node: '>=0.4'} - xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} - y18n@3.2.2: - resolution: {integrity: sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==} - y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -17838,9 +16710,6 @@ packages: resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} engines: {node: ^20.19.0 || ^22.12.0 || >=23} - yargs-parser@5.0.1: - resolution: {integrity: sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==} - yargs@16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} @@ -17857,9 +16726,6 @@ packages: resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==} engines: {node: ^20.19.0 || ^22.12.0 || >=23} - yargs@7.1.2: - resolution: {integrity: sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==} - yauzl@2.10.0: resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} @@ -18138,7 +17004,7 @@ snapshots: ansi-colors: 4.1.3 autoprefixer: 10.4.21(postcss@8.5.23) babel-loader: 10.0.0(@babel/core@7.29.7)(webpack@5.105.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)) - browserslist: 4.28.2 + browserslist: 4.28.7 copy-webpack-plugin: 14.0.0(webpack@5.105.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)) css-loader: 7.1.2(webpack@5.105.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)) esbuild-wasm: 0.28.0 @@ -18155,7 +17021,7 @@ snapshots: open: 10.2.0 ora: 8.2.0 picomatch: 4.0.4 - piscina: 5.2.0 + piscina: 5.3.0 postcss: 8.5.23 postcss-loader: 8.1.1(postcss@8.5.23)(typescript@5.8.3)(webpack@5.105.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)) resolve-url-loader: 5.0.0 @@ -18227,7 +17093,7 @@ snapshots: ansi-colors: 4.1.3 autoprefixer: 10.4.21(postcss@8.5.23) babel-loader: 10.0.0(@babel/core@7.29.7)(webpack@5.105.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)) - browserslist: 4.28.2 + browserslist: 4.28.7 copy-webpack-plugin: 14.0.0(webpack@5.105.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)) css-loader: 7.1.2(webpack@5.105.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)) esbuild-wasm: 0.28.0 @@ -18244,7 +17110,7 @@ snapshots: open: 10.2.0 ora: 8.2.0 picomatch: 4.0.4 - piscina: 5.2.0 + piscina: 5.3.0 postcss: 8.5.23 postcss-loader: 8.1.1(postcss@8.5.23)(typescript@5.8.3)(webpack@5.105.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)) resolve-url-loader: 5.0.0 @@ -18640,7 +17506,7 @@ snapshots: '@inquirer/confirm': 6.0.12(@types/node@20.19.37) '@vitejs/plugin-basic-ssl': 2.3.0(vite@7.3.5(@types/node@20.19.37)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.99.0)(terser@5.46.2)(yaml@2.9.0)) beasties: 0.4.2 - browserslist: 4.28.2 + browserslist: 4.28.7 esbuild: 0.28.1 https-proxy-agent: 9.0.0(supports-color@7.2.0) jsonc-parser: 3.3.1 @@ -18681,14 +17547,14 @@ snapshots: - tsx - yaml - '@angular/cli@20.3.24(@types/node@20.11.17)(chokidar@4.0.3)(supports-color@7.2.0)': + '@angular/cli@20.3.24(@types/node@20.11.17)(chokidar@4.0.3)': dependencies: '@angular-devkit/architect': 0.2003.24(chokidar@4.0.3) '@angular-devkit/core': 20.3.24(chokidar@4.0.3) '@angular-devkit/schematics': 20.3.24(chokidar@4.0.3) '@inquirer/prompts': 7.8.2(@types/node@20.11.17) '@listr2/prompt-adapter-inquirer': 3.0.1(@inquirer/prompts@7.8.2(@types/node@20.11.17))(@types/node@20.11.17)(listr2@9.0.1) - '@modelcontextprotocol/sdk': 1.26.0(supports-color@7.2.0)(zod@4.1.13) + '@modelcontextprotocol/sdk': 1.26.0(zod@4.1.13) '@schematics/angular': 20.3.24(chokidar@4.0.3) '@yarnpkg/lockfile': 1.1.0 algoliasearch: 5.35.0 @@ -18696,7 +17562,7 @@ snapshots: jsonc-parser: 3.3.1 listr2: 9.0.1 npm-package-arg: 13.0.0 - pacote: 21.0.4(supports-color@7.2.0) + pacote: 21.0.4 resolve: 1.22.10 semver: 7.7.2 yargs: 18.0.0 @@ -18714,7 +17580,7 @@ snapshots: '@angular-devkit/schematics': 20.3.24(chokidar@4.0.3) '@inquirer/prompts': 7.8.2(@types/node@20.19.37) '@listr2/prompt-adapter-inquirer': 3.0.1(@inquirer/prompts@7.8.2(@types/node@20.19.37))(@types/node@20.19.37)(listr2@9.0.1) - '@modelcontextprotocol/sdk': 1.26.0(supports-color@7.2.0)(zod@4.1.13) + '@modelcontextprotocol/sdk': 1.26.0(zod@4.1.13) '@schematics/angular': 20.3.24(chokidar@4.0.3) '@yarnpkg/lockfile': 1.1.0 algoliasearch: 5.35.0 @@ -18722,7 +17588,7 @@ snapshots: jsonc-parser: 3.3.1 listr2: 9.0.1 npm-package-arg: 13.0.0 - pacote: 21.0.4(supports-color@7.2.0) + pacote: 21.0.4 resolve: 1.22.10 semver: 7.7.2 yargs: 18.0.0 @@ -18740,7 +17606,7 @@ snapshots: '@angular-devkit/schematics': 20.3.24(chokidar@4.0.3) '@inquirer/prompts': 7.8.2(@types/node@26.1.1) '@listr2/prompt-adapter-inquirer': 3.0.1(@inquirer/prompts@7.8.2(@types/node@26.1.1))(@types/node@26.1.1)(listr2@9.0.1) - '@modelcontextprotocol/sdk': 1.26.0(supports-color@7.2.0)(zod@4.1.13) + '@modelcontextprotocol/sdk': 1.26.0(zod@4.1.13) '@schematics/angular': 20.3.24(chokidar@4.0.3) '@yarnpkg/lockfile': 1.1.0 algoliasearch: 5.35.0 @@ -18748,7 +17614,7 @@ snapshots: jsonc-parser: 3.3.1 listr2: 9.0.1 npm-package-arg: 13.0.0 - pacote: 21.0.4(supports-color@7.2.0) + pacote: 21.0.4 resolve: 1.22.10 semver: 7.7.2 yargs: 18.0.0 @@ -18805,7 +17671,7 @@ snapshots: chokidar: 4.0.3 convert-source-map: 1.9.0 reflect-metadata: 0.2.2 - semver: 7.8.4 + semver: 7.8.5 tslib: 2.8.1 yargs: 18.0.0 optionalDependencies: @@ -18977,14 +17843,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/eslint-parser@7.29.7(@babel/core@7.29.7)(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))': - dependencies: - '@babel/core': 7.29.7 - '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) - eslint-visitor-keys: 2.1.0 - semver: 6.3.1 - '@babel/eslint-parser@7.29.7(@babel/core@7.29.7)(eslint@9.39.4(jiti@2.6.1))': dependencies: '@babel/core': 7.29.7 @@ -19029,7 +17887,7 @@ snapshots: dependencies: '@babel/compat-data': 7.29.0 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.28.2 + browserslist: 4.28.7 lru-cache: 5.1.1 semver: 6.3.1 @@ -19048,7 +17906,7 @@ snapshots: '@babel/helper-member-expression-to-functions': 7.28.5 '@babel/helper-optimise-call-expression': 7.27.1 '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.7) - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 '@babel/traverse': 7.29.7 semver: 6.3.1 transitivePeerDependencies: @@ -19081,7 +17939,7 @@ snapshots: regexpu-core: 6.4.0 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.4.4(@babel/core@7.29.7)(supports-color@7.2.0)': + '@babel/helper-define-polyfill-provider@0.4.4(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-compilation-targets': 7.29.7 @@ -19092,7 +17950,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.29.7)(supports-color@7.2.0)': + '@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-compilation-targets': 7.29.7 @@ -19203,13 +18061,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': - dependencies: - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 - transitivePeerDependencies: - - supports-color - '@babel/helper-skip-transparent-expression-wrappers@7.29.7': dependencies: '@babel/traverse': 7.29.7 @@ -19257,7 +18108,7 @@ snapshots: '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/traverse': 7.29.7 transitivePeerDependencies: - supports-color @@ -19273,7 +18124,7 @@ snapshots: '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.29.7(@babel/core@7.29.7)': dependencies: @@ -19283,7 +18134,7 @@ snapshots: '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.29.7(@babel/core@7.29.7)': dependencies: @@ -19301,9 +18152,9 @@ snapshots: '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.7) transitivePeerDependencies: - supports-color @@ -19319,7 +18170,7 @@ snapshots: '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/traverse': 7.29.7 transitivePeerDependencies: - supports-color @@ -19383,7 +18234,7 @@ snapshots: '@babel/plugin-syntax-import-assertions@7.28.6(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-syntax-import-assertions@7.29.7(@babel/core@7.29.7)': dependencies: @@ -19393,7 +18244,7 @@ snapshots: '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-syntax-import-attributes@7.29.7(@babel/core@7.29.7)': dependencies: @@ -19413,7 +18264,7 @@ snapshots: '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7)': dependencies: @@ -19469,12 +18320,12 @@ snapshots: dependencies: '@babel/core': 7.29.7 '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-arrow-functions@7.29.7(@babel/core@7.29.7)': dependencies: @@ -19538,7 +18389,7 @@ snapshots: '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-block-scoped-functions@7.29.7(@babel/core@7.29.7)': dependencies: @@ -19548,7 +18399,7 @@ snapshots: '@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-block-scoping@7.29.7(@babel/core@7.29.7)': dependencies: @@ -19559,7 +18410,7 @@ snapshots: dependencies: '@babel/core': 7.29.7 '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: - supports-color @@ -19575,7 +18426,7 @@ snapshots: dependencies: '@babel/core': 7.29.7 '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: - supports-color @@ -19593,7 +18444,7 @@ snapshots: '@babel/helper-annotate-as-pure': 7.29.7 '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-globals': 7.28.0 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.7) '@babel/traverse': 7.29.7 transitivePeerDependencies: @@ -19614,7 +18465,7 @@ snapshots: '@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/template': 7.29.7 '@babel/plugin-transform-computed-properties@7.29.7(@babel/core@7.29.7)': @@ -19626,7 +18477,7 @@ snapshots: '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/traverse': 7.29.7 transitivePeerDependencies: - supports-color @@ -19643,7 +18494,7 @@ snapshots: dependencies: '@babel/core': 7.29.7 '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-dotall-regex@7.29.7(@babel/core@7.29.7)': dependencies: @@ -19654,7 +18505,7 @@ snapshots: '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-duplicate-keys@7.29.7(@babel/core@7.29.7)': dependencies: @@ -19665,7 +18516,7 @@ snapshots: dependencies: '@babel/core': 7.29.7 '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7)': dependencies: @@ -19676,7 +18527,7 @@ snapshots: '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-dynamic-import@7.29.7(@babel/core@7.29.7)': dependencies: @@ -19686,7 +18537,7 @@ snapshots: '@babel/plugin-transform-explicit-resource-management@7.28.6(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.7) transitivePeerDependencies: - supports-color @@ -19702,7 +18553,7 @@ snapshots: '@babel/plugin-transform-exponentiation-operator@7.28.6(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-exponentiation-operator@7.29.7(@babel/core@7.29.7)': dependencies: @@ -19712,7 +18563,7 @@ snapshots: '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-export-namespace-from@7.29.7(@babel/core@7.29.7)': dependencies: @@ -19728,8 +18579,8 @@ snapshots: '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 transitivePeerDependencies: - supports-color @@ -19745,7 +18596,7 @@ snapshots: dependencies: '@babel/core': 7.29.7 '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/traverse': 7.29.7 transitivePeerDependencies: - supports-color @@ -19762,7 +18613,7 @@ snapshots: '@babel/plugin-transform-json-strings@7.28.6(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-json-strings@7.29.7(@babel/core@7.29.7)': dependencies: @@ -19772,7 +18623,7 @@ snapshots: '@babel/plugin-transform-literals@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-literals@7.29.7(@babel/core@7.29.7)': dependencies: @@ -19782,7 +18633,7 @@ snapshots: '@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-logical-assignment-operators@7.29.7(@babel/core@7.29.7)': dependencies: @@ -19792,7 +18643,7 @@ snapshots: '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-member-expression-literals@7.29.7(@babel/core@7.29.7)': dependencies: @@ -19803,7 +18654,7 @@ snapshots: dependencies: '@babel/core': 7.29.7 '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: - supports-color @@ -19835,7 +18686,7 @@ snapshots: dependencies: '@babel/core': 7.29.7 '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-validator-identifier': 7.28.5 '@babel/traverse': 7.29.7 transitivePeerDependencies: @@ -19855,7 +18706,7 @@ snapshots: dependencies: '@babel/core': 7.29.7 '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: - supports-color @@ -19871,7 +18722,7 @@ snapshots: dependencies: '@babel/core': 7.29.7 '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7)': dependencies: @@ -19882,18 +18733,13 @@ snapshots: '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-new-target@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.29.7)': - dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-nullish-coalescing-operator@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -19902,7 +18748,7 @@ snapshots: '@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-numeric-separator@7.29.7(@babel/core@7.29.7)': dependencies: @@ -19934,7 +18780,7 @@ snapshots: '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.7) transitivePeerDependencies: - supports-color @@ -19950,21 +18796,13 @@ snapshots: '@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-optional-catch-binding@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.29.7)': - dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-optional-chaining@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -19976,7 +18814,7 @@ snapshots: '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-parameters@7.29.7(@babel/core@7.29.7)': dependencies: @@ -19987,7 +18825,7 @@ snapshots: dependencies: '@babel/core': 7.29.7 '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: - supports-color @@ -20004,7 +18842,7 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-annotate-as-pure': 7.29.7 '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: - supports-color @@ -20020,7 +18858,7 @@ snapshots: '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-property-literals@7.29.7(@babel/core@7.29.7)': dependencies: @@ -20069,7 +18907,7 @@ snapshots: '@babel/plugin-transform-regenerator@7.29.0(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-regenerator@7.29.7(@babel/core@7.29.7)': dependencies: @@ -20080,7 +18918,7 @@ snapshots: dependencies: '@babel/core': 7.29.7 '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-regexp-modifiers@7.29.7(@babel/core@7.29.7)': dependencies: @@ -20091,21 +18929,21 @@ snapshots: '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-reserved-words@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-runtime@7.23.3(@babel/core@7.29.7)(supports-color@7.2.0)': + '@babel/plugin-transform-runtime@7.23.3(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-module-imports': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.7) - babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.29.7)(supports-color@7.2.0) - babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.29.7)(supports-color@7.2.0) + babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.29.7) + babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.29.7) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -20149,7 +18987,7 @@ snapshots: '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-shorthand-properties@7.29.7(@babel/core@7.29.7)': dependencies: @@ -20159,8 +18997,8 @@ snapshots: '@babel/plugin-transform-spread@7.28.6(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 transitivePeerDependencies: - supports-color @@ -20175,7 +19013,7 @@ snapshots: '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-sticky-regex@7.29.7(@babel/core@7.29.7)': dependencies: @@ -20185,7 +19023,7 @@ snapshots: '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-template-literals@7.29.7(@babel/core@7.29.7)': dependencies: @@ -20195,7 +19033,7 @@ snapshots: '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-typeof-symbol@7.29.7(@babel/core@7.29.7)': dependencies: @@ -20216,7 +19054,7 @@ snapshots: '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-unicode-escapes@7.29.7(@babel/core@7.29.7)': dependencies: @@ -20227,7 +19065,7 @@ snapshots: dependencies: '@babel/core': 7.29.7 '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-unicode-property-regex@7.29.7(@babel/core@7.29.7)': dependencies: @@ -20239,7 +19077,7 @@ snapshots: dependencies: '@babel/core': 7.29.7 '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-unicode-regex@7.29.7(@babel/core@7.29.7)': dependencies: @@ -20251,7 +19089,7 @@ snapshots: dependencies: '@babel/core': 7.29.7 '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-unicode-sets-regex@7.29.7(@babel/core@7.29.7)': dependencies: @@ -20380,12 +19218,12 @@ snapshots: '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.29.7) '@babel/plugin-transform-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.7) '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.29.7) - '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.29.7) + '@babel/plugin-transform-nullish-coalescing-operator': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.29.7) '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.29.7) '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.29.7) '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.29.7) - '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.7) + '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.7) '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.29.7) '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.29.7) @@ -20575,7 +19413,7 @@ snapshots: '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-plugin-utils': 7.29.7 '@babel/types': 7.29.7 esutils: 2.0.3 @@ -20672,23 +19510,12 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1)': - dependencies: - '@csstools/css-tokenizer': 2.4.1 - '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': dependencies: '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-tokenizer@2.4.1': {} - '@csstools/css-tokenizer@3.0.4': {} - '@csstools/media-query-list-parser@2.1.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)': - dependencies: - '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) - '@csstools/css-tokenizer': 2.4.1 - '@csstools/media-query-list-parser@3.0.1(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) @@ -20699,10 +19526,6 @@ snapshots: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - '@csstools/selector-specificity@3.1.1(postcss-selector-parser@6.1.2)': - dependencies: - postcss-selector-parser: 6.1.2 - '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.1)': dependencies: postcss-selector-parser: 7.1.1 @@ -20852,21 +19675,11 @@ snapshots: '@esbuild/win32-x64@0.28.1': optional: true - '@eslint-community/eslint-utils@4.10.1(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))': - dependencies: - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) - eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.10.1(eslint@9.39.4(jiti@2.6.1))': dependencies: eslint: 9.39.4(jiti@2.6.1) eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))': - dependencies: - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) - eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4(jiti@2.6.1))': dependencies: eslint: 9.39.4(jiti@2.6.1) @@ -20876,13 +19689,13 @@ snapshots: '@eslint-stylistic/metadata@2.13.0': {} - '@eslint/compat@1.4.1(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))': + '@eslint/compat@1.4.1(eslint@9.39.4(jiti@2.6.1))': dependencies: '@eslint/core': 0.17.0 optionalDependencies: - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) + eslint: 9.39.4(jiti@2.6.1) - '@eslint/config-array@0.21.2(supports-color@7.2.0)': + '@eslint/config-array@0.21.2': dependencies: '@eslint/object-schema': 2.1.7 debug: 4.4.3(supports-color@7.2.0) @@ -20948,10 +19761,6 @@ snapshots: '@gar/promise-retry@1.0.3': {} - '@gulpjs/to-absolute-glob@4.0.0': - dependencies: - is-negated-glob: 1.0.0 - '@harperfast/extended-iterable@1.0.3': optional: true @@ -21837,7 +20646,7 @@ snapshots: - supports-color - ts-node - '@jest/core@30.2.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@6.0.3))': + '@jest/core@30.2.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@5.9.3))': dependencies: '@jest/console': 30.2.0 '@jest/pattern': 30.0.1 @@ -21852,7 +20661,7 @@ snapshots: exit-x: 0.2.2 graceful-fs: 4.2.11 jest-changed-files: 30.2.0 - jest-config: 30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@6.0.3)) + jest-config: 30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@5.9.3)) jest-haste-map: 30.2.0 jest-message-util: 30.2.0 jest-regex-util: 30.0.1 @@ -22525,7 +21334,7 @@ snapshots: '@lezer/lr': 1.4.10 json5: 2.2.3 - '@modelcontextprotocol/sdk@1.26.0(supports-color@7.2.0)(zod@4.1.13)': + '@modelcontextprotocol/sdk@1.26.0(zod@4.1.13)': dependencies: '@hono/node-server': 2.0.12(hono@4.12.32) ajv: 8.20.0 @@ -22535,7 +21344,7 @@ snapshots: cross-spawn: 7.0.6 eventsource: 3.0.7 eventsource-parser: 3.0.8 - express: 5.2.1(supports-color@7.2.0) + express: 5.2.1 express-rate-limit: 8.3.2(express@5.2.1) hono: 4.12.32 jose: 6.2.2 @@ -22557,7 +21366,7 @@ snapshots: cross-spawn: 7.0.6 eventsource: 3.0.7 eventsource-parser: 3.0.8 - express: 5.2.1(supports-color@7.2.0) + express: 5.2.1 express-rate-limit: 8.3.2(express@5.2.1) hono: 4.12.32 jose: 6.2.2 @@ -22905,7 +21714,7 @@ snapshots: enquirer: 2.3.6 nx: 23.0.1(@swc/core@1.15.30(@swc/helpers@0.5.21)) picomatch: 4.0.4 - semver: 7.8.4 + semver: 7.8.5 tslib: 2.8.1 yargs-parser: 21.1.1 transitivePeerDependencies: @@ -23008,7 +21817,7 @@ snapshots: '@parcel/utils': 2.16.4 '@parcel/workers': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) base-x: 3.0.11 - browserslist: 4.28.2 + browserslist: 4.28.7 clone: 2.1.2 dotenv: 16.6.1 dotenv-expand: 11.0.7 @@ -23085,7 +21894,7 @@ snapshots: '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.16.4 - browserslist: 4.28.2 + browserslist: 4.28.7 lightningcss: 1.32.0 nullthrows: 1.1.1 transitivePeerDependencies: @@ -23345,7 +22154,7 @@ snapshots: '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.16.4 - browserslist: 4.28.2 + browserslist: 4.28.7 json5: 2.2.3 nullthrows: 1.1.1 semver: 7.8.5 @@ -23359,7 +22168,7 @@ snapshots: '@parcel/plugin': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.16.4 - browserslist: 4.28.2 + browserslist: 4.28.7 lightningcss: 1.32.0 nullthrows: 1.1.1 transitivePeerDependencies: @@ -23395,7 +22204,7 @@ snapshots: '@parcel/utils': 2.16.4 '@parcel/workers': 2.16.4(@parcel/core@2.16.4(@swc/helpers@0.5.21)) '@swc/helpers': 0.5.21 - browserslist: 4.28.2 + browserslist: 4.28.7 nullthrows: 1.1.1 regenerator-runtime: 0.14.1 semver: 7.8.5 @@ -23863,7 +22672,7 @@ snapshots: '@rollup/pluginutils@5.3.0(rollup@4.59.0)': dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 estree-walker: 2.0.2 picomatch: 4.0.4 optionalDependencies: @@ -24085,10 +22894,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@sigstore/tuf@4.0.2(supports-color@7.2.0)': + '@sigstore/tuf@4.0.2': dependencies: '@sigstore/protobuf-specs': 0.5.1 - tuf-js: 4.1.0(supports-color@7.2.0) + tuf-js: 4.1.0 transitivePeerDependencies: - supports-color @@ -24136,10 +22945,10 @@ snapshots: '@standard-schema/spec@1.1.0': {} - '@storybook/addon-docs@10.2.10(@types/react@18.3.28)(esbuild@0.28.1)(rollup@4.59.0)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.6(@types/node@26.1.1)(jiti@2.6.1)(less@4.8.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))(webpack@5.106.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1))': + '@storybook/addon-docs@10.2.10(@types/react@18.3.28)(esbuild@0.28.1)(rollup@4.59.0)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.6(@types/node@26.1.1)(jiti@2.6.1)(less@4.8.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(terser@5.49.0)(yaml@2.9.0))(webpack@5.106.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1))': dependencies: '@mdx-js/react': 3.1.1(@types/react@18.3.28)(react@18.3.1) - '@storybook/csf-plugin': 10.2.10(esbuild@0.28.1)(rollup@4.59.0)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.6(@types/node@26.1.1)(jiti@2.6.1)(less@4.8.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))(webpack@5.106.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)) + '@storybook/csf-plugin': 10.2.10(esbuild@0.28.1)(rollup@4.59.0)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.6(@types/node@26.1.1)(jiti@2.6.1)(less@4.8.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(terser@5.49.0)(yaml@2.9.0))(webpack@5.106.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)) '@storybook/icons': 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/react-dom-shim': 10.2.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) react: 18.3.1 @@ -24201,14 +23010,14 @@ snapshots: storybook: 10.2.10(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ts-dedent: 2.2.0 - '@storybook/csf-plugin@10.2.10(esbuild@0.28.1)(rollup@4.59.0)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.6(@types/node@26.1.1)(jiti@2.6.1)(less@4.8.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0))(webpack@5.106.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1))': + '@storybook/csf-plugin@10.2.10(esbuild@0.28.1)(rollup@4.59.0)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.6(@types/node@26.1.1)(jiti@2.6.1)(less@4.8.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(terser@5.49.0)(yaml@2.9.0))(webpack@5.106.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1))': dependencies: storybook: 10.2.10(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) unplugin: 2.3.11 optionalDependencies: esbuild: 0.28.1 rollup: 4.59.0 - vite: 7.3.6(@types/node@26.1.1)(jiti@2.6.1)(less@4.8.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0) + vite: 7.3.6(@types/node@26.1.1)(jiti@2.6.1)(less@4.8.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.49.0)(yaml@2.9.0) webpack: 5.106.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1) '@storybook/global@5.0.0': {} @@ -24292,19 +23101,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@stylistic/eslint-plugin@5.10.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) - '@typescript-eslint/types': 8.62.0 - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - estraverse: 5.3.0 - picomatch: 4.0.4 - '@stylistic/eslint-plugin@5.10.0(eslint@9.39.4(jiti@2.6.1))': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.4(jiti@2.6.1)) '@typescript-eslint/types': 8.62.0 eslint: 9.39.4(jiti@2.6.1) eslint-visitor-keys: 4.2.1 @@ -24312,7 +23111,7 @@ snapshots: estraverse: 5.3.0 picomatch: 4.0.4 - '@stylistic/stylelint-plugin@3.1.3(stylelint@16.22.0(typescript@6.0.3))': + '@stylistic/stylelint-plugin@3.1.3(stylelint@16.22.0(typescript@5.9.3))': dependencies: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 @@ -24322,7 +23121,7 @@ snapshots: postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 style-search: 0.1.0 - stylelint: 16.22.0(typescript@6.0.3) + stylelint: 16.22.0(typescript@5.9.3) '@swc/core-darwin-arm64@1.15.30': optional: true @@ -24389,11 +23188,11 @@ snapshots: dependencies: '@swc/counter': 0.1.3 - '@testcafe-community/axe@3.5.0(axe-core@4.11.3)(testcafe@3.7.5)': + '@testcafe-community/axe@3.5.0(axe-core@4.12.1)(testcafe@3.7.5)': dependencies: - axe-core: 4.11.3 + axe-core: 4.12.1 chalk: 2.4.2 - testcafe: 3.7.5(supports-color@7.2.0) + testcafe: 3.7.5 '@testing-library/dom@10.4.1': dependencies: @@ -24409,7 +23208,7 @@ snapshots: '@testing-library/dom@9.3.4': dependencies: '@babel/code-frame': 7.29.7 - '@babel/runtime': 7.29.2 + '@babel/runtime': 7.29.7 '@types/aria-query': 5.0.4 aria-query: 5.1.3 chalk: 4.1.2 @@ -24541,22 +23340,16 @@ snapshots: '@types/eslint-scope@3.7.7': dependencies: '@types/eslint': 8.56.12 - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/eslint@8.56.12': dependencies: '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 - '@types/eslint@9.6.1': - dependencies: - '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 - optional: true - '@types/esquery@1.5.4': dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/estree@0.0.39': {} @@ -24662,12 +23455,8 @@ snapshots: '@types/mime@1.3.5': {} - '@types/minimatch@3.0.5': {} - '@types/minimatch@5.1.2': {} - '@types/minimist@1.2.5': {} - '@types/ms@2.1.0': {} '@types/node-fetch@2.6.13': @@ -24815,16 +23604,16 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4(jiti@2.6.1))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1))(supports-color@7.2.0)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 6.21.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) + '@typescript-eslint/parser': 6.21.0(eslint@9.39.4(jiti@2.6.1))(supports-color@7.2.0)(typescript@6.0.3) '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) - '@typescript-eslint/utils': 6.21.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(typescript@6.0.3) + '@typescript-eslint/type-utils': 6.21.0(eslint@9.39.4(jiti@2.6.1))(supports-color@7.2.0)(typescript@6.0.3) + '@typescript-eslint/utils': 6.21.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.4.3(supports-color@7.2.0) - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) + eslint: 9.39.4(jiti@2.6.1) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -24835,22 +23624,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)': - dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/type-utils': 8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) - '@typescript-eslint/utils': 8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.52.0 - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.5.0(typescript@6.0.3) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5)': dependencies: '@eslint-community/regexpp': 4.12.2 @@ -24899,10 +23672,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3) '@typescript-eslint/scope-manager': 8.52.0 '@typescript-eslint/type-utils': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3) '@typescript-eslint/utils': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3) @@ -24923,31 +23696,19 @@ snapshots: - supports-color - typescript - '@typescript-eslint/parser@6.21.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)': + '@typescript-eslint/parser@6.21.0(eslint@9.39.4(jiti@2.6.1))(supports-color@7.2.0)(typescript@6.0.3)': dependencies: '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@6.0.3) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.4.3(supports-color@7.2.0) - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) + eslint: 9.39.4(jiti@2.6.1) optionalDependencies: typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.52.0 - debug: 4.4.3(supports-color@7.2.0) - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5)': dependencies: '@typescript-eslint/scope-manager': 8.52.0 @@ -24984,6 +23745,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.52.0 + '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/typescript-estree': 8.52.0(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.52.0 + debug: 4.4.3(supports-color@7.2.0) + eslint: 9.39.4(jiti@2.6.1) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/project-service@8.52.0(typescript@4.9.5)': dependencies: '@typescript-eslint/tsconfig-utils': 8.62.0(typescript@4.9.5) @@ -25020,15 +23793,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.58.2(supports-color@7.2.0)(typescript@6.0.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.62.0(typescript@6.0.3) - '@typescript-eslint/types': 8.62.0 - debug: 4.4.3(supports-color@7.2.0) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/project-service@8.58.2(typescript@4.9.5)': dependencies: '@typescript-eslint/tsconfig-utils': 8.62.0(typescript@4.9.5) @@ -25047,7 +23811,25 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.62.0(supports-color@7.2.0)(typescript@4.9.5)': + '@typescript-eslint/project-service@8.58.2(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.62.0(typescript@5.9.3) + '@typescript-eslint/types': 8.62.0 + debug: 4.4.3(supports-color@7.2.0) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.58.2(typescript@6.0.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.62.0(typescript@6.0.3) + '@typescript-eslint/types': 8.62.0 + debug: 4.4.3(supports-color@7.2.0) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.62.0(typescript@4.9.5)': dependencies: '@typescript-eslint/tsconfig-utils': 8.62.0(typescript@4.9.5) '@typescript-eslint/types': 8.62.0 @@ -25110,6 +23892,10 @@ snapshots: dependencies: typescript: 5.8.3 + '@typescript-eslint/tsconfig-utils@8.58.2(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + '@typescript-eslint/tsconfig-utils@8.58.2(typescript@6.0.3)': dependencies: typescript: 6.0.3 @@ -25130,30 +23916,18 @@ snapshots: dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@6.21.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)': + '@typescript-eslint/type-utils@6.21.0(eslint@9.39.4(jiti@2.6.1))(supports-color@7.2.0)(typescript@6.0.3)': dependencies: '@typescript-eslint/typescript-estree': 6.21.0(typescript@6.0.3) - '@typescript-eslint/utils': 6.21.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(typescript@6.0.3) + '@typescript-eslint/utils': 6.21.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3) debug: 4.4.3(supports-color@7.2.0) - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) + eslint: 9.39.4(jiti@2.6.1) ts-api-utils: 1.4.3(typescript@6.0.3) optionalDependencies: typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)': - dependencies: - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(typescript@6.0.3) - debug: 4.4.3(supports-color@7.2.0) - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) - ts-api-utils: 2.5.0(typescript@6.0.3) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/type-utils@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5)': dependencies: '@typescript-eslint/types': 8.52.0 @@ -25332,21 +24106,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.58.2(supports-color@7.2.0)(typescript@6.0.3)': - dependencies: - '@typescript-eslint/project-service': 8.58.2(supports-color@7.2.0)(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.58.2(typescript@6.0.3) - '@typescript-eslint/types': 8.58.2 - '@typescript-eslint/visitor-keys': 8.58.2 - debug: 4.4.3(supports-color@7.2.0) - minimatch: 10.2.4 - semver: 7.8.5 - tinyglobby: 0.2.17 - ts-api-utils: 2.5.0(typescript@6.0.3) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/typescript-estree@8.58.2(typescript@4.9.5)': dependencies: '@typescript-eslint/project-service': 8.58.2(typescript@4.9.5) @@ -25377,9 +24136,39 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.62.0(supports-color@7.2.0)(typescript@4.9.5)': + '@typescript-eslint/typescript-estree@8.58.2(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.62.0(supports-color@7.2.0)(typescript@4.9.5) + '@typescript-eslint/project-service': 8.58.2(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.58.2(typescript@5.9.3) + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/visitor-keys': 8.58.2 + debug: 4.4.3(supports-color@7.2.0) + minimatch: 10.2.4 + semver: 7.8.5 + tinyglobby: 0.2.17 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@8.58.2(typescript@6.0.3)': + dependencies: + '@typescript-eslint/project-service': 8.58.2(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.58.2(typescript@6.0.3) + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/visitor-keys': 8.58.2 + debug: 4.4.3(supports-color@7.2.0) + minimatch: 10.2.4 + semver: 7.8.5 + tinyglobby: 0.2.17 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@8.62.0(typescript@4.9.5)': + dependencies: + '@typescript-eslint/project-service': 8.62.0(typescript@4.9.5) '@typescript-eslint/tsconfig-utils': 8.62.0(typescript@4.9.5) '@typescript-eslint/types': 8.62.0 '@typescript-eslint/visitor-keys': 8.62.0 @@ -25394,7 +24183,7 @@ snapshots: '@typescript-eslint/utils@5.62.0(eslint@9.39.4(jiti@2.6.1))(supports-color@7.2.0)(typescript@4.9.5)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.4(jiti@2.6.1)) '@types/json-schema': 7.0.15 '@types/semver': 7.7.1 '@typescript-eslint/scope-manager': 5.62.0 @@ -25407,45 +24196,34 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@6.21.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(typescript@6.0.3)': + '@typescript-eslint/utils@6.21.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.4(jiti@2.6.1)) '@types/json-schema': 7.0.15 '@types/semver': 7.7.1 '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@6.0.3) - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) + eslint: 9.39.4(jiti@2.6.1) semver: 7.8.5 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@7.18.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)': + '@typescript-eslint/utils@7.18.0(eslint@9.39.4(jiti@2.6.1))(supports-color@7.2.0)(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.4(jiti@2.6.1)) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(supports-color@7.2.0)(typescript@6.0.3) - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) + eslint: 9.39.4(jiti@2.6.1) transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(typescript@6.0.3)': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0(typescript@6.0.3) - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/utils@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.4(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.52.0 '@typescript-eslint/types': 8.52.0 '@typescript-eslint/typescript-estree': 8.52.0(typescript@4.9.5) @@ -25456,7 +24234,7 @@ snapshots: '@typescript-eslint/utils@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.4(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.52.0 '@typescript-eslint/types': 8.52.0 '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.8.3) @@ -25467,7 +24245,7 @@ snapshots: '@typescript-eslint/utils@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.4(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.52.0 '@typescript-eslint/types': 8.52.0 '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) @@ -25478,7 +24256,7 @@ snapshots: '@typescript-eslint/utils@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.4(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.52.0 '@typescript-eslint/types': 8.52.0 '@typescript-eslint/typescript-estree': 8.52.0(typescript@6.0.3) @@ -25487,20 +24265,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.58.2(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) - '@typescript-eslint/scope-manager': 8.58.2 - '@typescript-eslint/types': 8.58.2 - '@typescript-eslint/typescript-estree': 8.58.2(supports-color@7.2.0)(typescript@6.0.3) - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/utils@8.58.2(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.4(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.58.2 '@typescript-eslint/types': 8.58.2 '@typescript-eslint/typescript-estree': 8.58.2(typescript@4.9.5) @@ -25511,7 +24278,7 @@ snapshots: '@typescript-eslint/utils@8.58.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.4(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.58.2 '@typescript-eslint/types': 8.58.2 '@typescript-eslint/typescript-estree': 8.58.2(typescript@5.8.3) @@ -25520,23 +24287,34 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@8.58.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.4(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.58.2 + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/typescript-estree': 8.58.2(typescript@5.9.3) + eslint: 9.39.4(jiti@2.6.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/utils@8.58.2(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.4(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.58.2 '@typescript-eslint/types': 8.58.2 - '@typescript-eslint/typescript-estree': 8.58.2(supports-color@7.2.0)(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.3) eslint: 9.39.4(jiti@2.6.1) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.62.0(eslint@9.39.4(jiti@2.6.1))(supports-color@7.2.0)(typescript@4.9.5)': + '@typescript-eslint/utils@8.62.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.4(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.62.0 '@typescript-eslint/types': 8.62.0 - '@typescript-eslint/typescript-estree': 8.62.0(supports-color@7.2.0)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 8.62.0(typescript@4.9.5) eslint: 9.39.4(jiti@2.6.1) typescript: 4.9.5 transitivePeerDependencies: @@ -25841,13 +24619,13 @@ snapshots: '@vue/devtools-api@6.6.4': {} - '@vue/eslint-config-typescript@12.0.0(eslint-plugin-vue@10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)': + '@vue/eslint-config-typescript@12.0.0(eslint-plugin-vue@10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1))))(eslint@9.39.4(jiti@2.6.1))(supports-color@7.2.0)(typescript@6.0.3)': dependencies: - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) - '@typescript-eslint/parser': 6.21.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) - eslint-plugin-vue: 10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)) - vue-eslint-parser: 9.4.3(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0) + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.39.4(jiti@2.6.1))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1))(supports-color@7.2.0)(typescript@6.0.3) + '@typescript-eslint/parser': 6.21.0(eslint@9.39.4(jiti@2.6.1))(supports-color@7.2.0)(typescript@6.0.3) + eslint: 9.39.4(jiti@2.6.1) + eslint-plugin-vue: 10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1))) + vue-eslint-parser: 9.4.3(eslint@9.39.4(jiti@2.6.1))(supports-color@7.2.0) optionalDependencies: typescript: 6.0.3 transitivePeerDependencies: @@ -26251,14 +25029,8 @@ snapshots: dependencies: ansi-wrap: 0.1.0 - ansi-colors@3.2.4: {} - ansi-colors@4.1.3: {} - ansi-cyan@0.1.1: - dependencies: - ansi-wrap: 0.1.0 - ansi-escapes@4.3.2: dependencies: type-fest: 0.21.3 @@ -26277,10 +25049,6 @@ snapshots: ansi-html-community@0.0.8: {} - ansi-red@0.1.1: - dependencies: - ansi-wrap: 0.1.0 - ansi-regex@2.1.1: {} ansi-regex@5.0.1: {} @@ -26303,16 +25071,6 @@ snapshots: ansi-wrap@0.1.0: {} - anymatch@1.3.2: - dependencies: - micromatch: 4.0.8 - normalize-path: 2.1.1 - - anymatch@2.0.0: - dependencies: - micromatch: 4.0.8 - normalize-path: 2.1.1 - anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -26320,10 +25078,6 @@ snapshots: app-module-path@2.2.0: {} - append-buffer@1.0.2: - dependencies: - buffer-equal: 1.0.1 - archiver-utils@5.0.2: dependencies: glob: 10.5.0 @@ -26348,8 +25102,6 @@ snapshots: - bare-buffer - react-native-b4a - archy@1.0.0: {} - arg@4.1.3: {} argparse@2.0.1: {} @@ -26364,25 +25116,8 @@ snapshots: aria-query@5.3.2: {} - arr-diff@1.1.0: - dependencies: - arr-flatten: 1.1.0 - array-slice: 0.2.3 - arr-diff@4.0.0: {} - arr-filter@1.1.2: - dependencies: - make-iterator: 1.0.1 - - arr-flatten@1.1.0: {} - - arr-map@2.0.2: - dependencies: - make-iterator: 1.0.1 - - arr-union@2.1.0: {} - arr-union@3.1.0: {} array-buffer-byte-length@1.0.2: @@ -26390,10 +25125,6 @@ snapshots: call-bound: 1.0.4 is-array-buffer: 3.0.5 - array-differ@3.0.0: {} - - array-each@1.0.1: {} - array-find@1.0.0: {} array-flatten@1.1.1: {} @@ -26409,25 +25140,6 @@ snapshots: is-string: 1.1.1 math-intrinsics: 1.1.0 - array-initial@1.1.0: - dependencies: - array-slice: 1.1.0 - is-number: 4.0.0 - - array-last@1.3.0: - dependencies: - is-number: 4.0.0 - - array-slice@0.2.3: {} - - array-slice@1.1.0: {} - - array-sort@1.0.0: - dependencies: - default-compare: 1.0.0 - get-value: 2.0.6 - kind-of: 5.1.0 - array-union@1.0.2: dependencies: array-uniq: 1.0.3 @@ -26487,10 +25199,6 @@ snapshots: get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 - arrify@1.0.1: {} - - arrify@2.0.1: {} - asn1.js@4.10.1: dependencies: bn.js: 4.12.3 @@ -26524,23 +25232,10 @@ snapshots: astral-regex@2.0.0: {} - async-done@1.3.2: - dependencies: - end-of-stream: 1.4.5 - once: 1.4.0 - process-nextick-args: 2.0.1 - stream-exhaust: 1.0.2 - - async-each@1.0.6: {} - async-exit-hook@1.1.2: {} async-function@1.0.0: {} - async-settle@1.0.0: - dependencies: - async-done: 1.3.2 - async@3.2.3: {} async@3.2.6: {} @@ -26549,8 +25244,8 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.23): dependencies: - browserslist: 4.28.2 - caniuse-lite: 1.0.30001788 + browserslist: 4.28.7 + caniuse-lite: 1.0.30001806 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -26559,8 +25254,8 @@ snapshots: autoprefixer@10.5.0(postcss@8.5.23): dependencies: - browserslist: 4.28.2 - caniuse-lite: 1.0.30001788 + browserslist: 4.28.7 + caniuse-lite: 1.0.30001806 fraction.js: 5.3.4 picocolors: 1.1.1 postcss: 8.5.23 @@ -26570,8 +25265,6 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - axe-core@4.11.3: {} - axe-core@4.12.1: {} axios@1.18.1(supports-color@7.2.0): @@ -26789,18 +25482,18 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.8.7(@babel/core@7.29.7)(supports-color@7.2.0): + babel-plugin-polyfill-corejs3@0.8.7(@babel/core@7.29.7): dependencies: '@babel/core': 7.29.7 - '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.29.7)(supports-color@7.2.0) + '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.29.7) core-js-compat: 3.49.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.29.7)(supports-color@7.2.0): + babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.29.7): dependencies: '@babel/core': 7.29.7 - '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.29.7)(supports-color@7.2.0) + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.29.7) transitivePeerDependencies: - supports-color @@ -26923,18 +25616,6 @@ snapshots: babylon@6.18.0: {} - bach@1.2.0: - dependencies: - arr-filter: 1.1.2 - arr-flatten: 1.1.0 - arr-map: 2.0.2 - array-each: 1.0.1 - array-initial: 1.1.0 - array-last: 1.3.0 - async-done: 1.3.2 - async-settle: 1.0.0 - now-and-later: 2.0.1 - bail@2.0.2: {} balanced-match@2.0.0: {} @@ -27019,29 +25700,14 @@ snapshots: big.js@5.2.2: {} - binary-extensions@1.13.1: {} - binary-extensions@2.3.0: {} - binaryextensions@1.0.1: {} - - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - optional: true - bl@4.1.0: dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 - bl@5.1.0: - dependencies: - buffer: 6.0.3 - inherits: 2.0.4 - readable-stream: 3.6.2 - bluebird@3.7.2: {} bn.js@4.12.3: {} @@ -27065,7 +25731,7 @@ snapshots: transitivePeerDependencies: - supports-color - body-parser@2.3.0(supports-color@7.2.0): + body-parser@2.3.0: dependencies: bytes: 3.1.2 content-type: 2.0.0 @@ -27073,7 +25739,7 @@ snapshots: http-errors: 2.0.1 iconv-lite: 0.7.2 on-finished: 2.4.1 - qs: 6.15.2 + qs: 6.15.3 raw-body: 3.0.2 type-is: 2.1.0 transitivePeerDependencies: @@ -27242,8 +25908,6 @@ snapshots: buffer-crc32@1.0.0: {} - buffer-equal@1.0.1: {} - buffer-from@1.1.2: {} buffer-xor@1.0.3: {} @@ -27290,13 +25954,6 @@ snapshots: p-map: 7.0.4 ssri: 13.0.1 - cache-swap@0.3.0: - dependencies: - graceful-fs: 4.2.11 - mkdirp: 0.5.6 - object-assign: 4.1.1 - rimraf: 2.7.1 - cacheable@2.3.4: dependencies: '@cacheable/memory': 2.0.8 @@ -27333,26 +25990,15 @@ snapshots: pascal-case: 3.1.2 tslib: 2.8.1 - camelcase-keys@7.0.2: - dependencies: - camelcase: 6.3.0 - map-obj: 4.3.0 - quick-lru: 5.1.1 - type-fest: 1.4.0 - - camelcase@3.0.0: {} - camelcase@5.3.1: {} camelcase@6.3.0: {} - caniuse-lite@1.0.30001788: {} - caniuse-lite@1.0.30001806: {} canvg@3.0.11: dependencies: - '@babel/runtime': 7.29.2 + '@babel/runtime': 7.29.7 '@types/raf': 3.4.3 core-js: 3.49.0 raf: 3.4.1 @@ -27405,11 +26051,6 @@ snapshots: escape-string-regexp: 1.0.5 supports-color: 5.5.0 - chalk@3.0.0: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -27462,22 +26103,6 @@ snapshots: whatwg-mimetype: 4.0.0 optional: true - chokidar@2.1.8: - dependencies: - anymatch: 2.0.0 - async-each: 1.0.6 - braces: 3.0.3 - glob-parent: 3.1.0 - inherits: 2.0.4 - is-binary-path: 1.0.1 - is-glob: 4.0.3 - normalize-path: 3.0.0 - path-is-absolute: 1.0.1 - readdirp: 2.2.1 - upath: 1.2.0 - optionalDependencies: - fsevents: 1.2.13 - chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -27610,12 +26235,6 @@ snapshots: cli-width@4.1.0: {} - cliui@3.2.0: - dependencies: - string-width: 1.0.2 - strip-ansi: 3.0.1 - wrap-ansi: 2.1.0 - cliui@7.0.4: dependencies: string-width: 4.2.3 @@ -27642,8 +26261,6 @@ snapshots: kind-of: 6.0.3 shallow-clone: 3.0.1 - clone-stats@0.0.1: {} - clone-stats@1.0.0: {} clone@1.0.4: {} @@ -27660,18 +26277,10 @@ snapshots: code-block-writer@12.0.0: {} - code-point-at@1.1.0: {} - coffeescript@2.7.0: {} collect-v8-coverage@1.0.3: {} - collection-map@1.0.0: - dependencies: - arr-map: 2.0.2 - for-own: 1.0.0 - make-iterator: 1.0.1 - color-convert@0.5.3: {} color-convert@1.9.3: @@ -27790,10 +26399,6 @@ snapshots: readable-stream: 2.3.8 typedarray: 0.0.6 - concat-with-sourcemaps@1.1.0: - dependencies: - source-map: 0.6.1 - config-chain@1.1.13: dependencies: ini: 1.3.8 @@ -27857,11 +26462,6 @@ snapshots: dependencies: is-what: 4.1.16 - copy-props@2.0.5: - dependencies: - each-props: 1.3.2 - is-plain-object: 5.0.0 - copy-webpack-plugin@14.0.0(webpack@5.105.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)): dependencies: glob-parent: 6.0.2 @@ -27905,24 +26505,6 @@ snapshots: path-type: 4.0.0 yaml: 1.10.3 - cosmiconfig@8.3.6(typescript@4.9.5): - dependencies: - import-fresh: 3.3.1 - js-yaml: 4.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - optionalDependencies: - typescript: 4.9.5 - - cosmiconfig@8.3.6(typescript@5.8.3): - dependencies: - import-fresh: 3.3.1 - js-yaml: 4.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - optionalDependencies: - typescript: 5.8.3 - cosmiconfig@8.3.6(typescript@5.9.3): dependencies: import-fresh: 3.3.1 @@ -27932,14 +26514,14 @@ snapshots: optionalDependencies: typescript: 5.9.3 - cosmiconfig@8.3.6(typescript@6.0.3): + cosmiconfig@9.0.1(typescript@4.9.5): dependencies: + env-paths: 2.2.1 import-fresh: 3.3.1 js-yaml: 4.3.0 parse-json: 5.2.0 - path-type: 4.0.0 optionalDependencies: - typescript: 6.0.3 + typescript: 4.9.5 cosmiconfig@9.0.1(typescript@5.8.3): dependencies: @@ -28012,13 +26594,13 @@ snapshots: - supports-color - ts-node - create-jest@29.7.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)): + create-jest@29.7.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)) + jest-config: 29.7.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -28153,11 +26735,6 @@ snapshots: domutils: 3.2.2 nth-check: 2.1.1 - css-tree@2.3.1: - dependencies: - mdn-data: 2.0.30 - source-map-js: 1.2.1 - css-tree@3.2.1: dependencies: mdn-data: 2.27.1 @@ -28248,15 +26825,6 @@ snapshots: optionalDependencies: supports-color: 7.2.0 - decamelize-keys@1.1.1: - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - - decamelize@1.2.0: {} - - decamelize@5.0.1: {} - decimal.js@10.6.0: {} decode-named-character-reference@1.3.0: @@ -28311,12 +26879,6 @@ snapshots: bundle-name: 4.1.0 default-browser-id: 5.0.1 - default-compare@1.0.0: - dependencies: - kind-of: 5.1.0 - - default-resolution@2.0.0: {} - defaults@1.0.4: dependencies: clone: 1.0.4 @@ -28383,14 +26945,10 @@ snapshots: destroy@1.2.0: {} - detect-file@1.0.0: {} - detect-indent@4.0.0: dependencies: repeating: 2.0.1 - detect-indent@6.1.0: {} - detect-libc@1.0.3: {} detect-libc@2.1.2: {} @@ -28522,7 +27080,7 @@ snapshots: color-diff: 1.3.0 looks-same: 7.3.0 pngjs: 6.0.0 - testcafe: 3.7.5(supports-color@7.2.0) + testcafe: 3.7.5 tslib: 2.8.1 device-specs@1.0.1: {} @@ -28652,29 +27210,8 @@ snapshots: dependencies: readable-stream: 2.3.8 - duplexer@0.1.2: {} - - duplexify@3.7.1: - dependencies: - end-of-stream: 1.4.5 - inherits: 2.0.4 - readable-stream: 2.3.8 - stream-shift: 1.0.3 - - duplexify@4.1.3: - dependencies: - end-of-stream: 1.4.5 - inherits: 2.0.4 - readable-stream: 3.6.2 - stream-shift: 1.0.3 - dx-systemjs-vue-browser@1.1.2: {} - each-props@1.3.2: - dependencies: - is-plain-object: 2.0.4 - object.defaults: 1.1.0 - eastasianwidth@0.2.0: {} editorconfig@1.0.7: @@ -28960,13 +27497,6 @@ snapshots: es5-ext: 0.10.64 esniff: 1.1.3 - es6-weak-map@2.0.3: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - es6-iterator: 2.0.3 - es6-symbol: 3.1.4 - esbuild-plugin-vue3@0.3.2(cheerio@1.2.0)(sass@1.99.0): dependencies: '@vue/compiler-core': 3.5.32 @@ -29033,33 +27563,24 @@ snapshots: eslint: 9.39.4(jiti@2.6.1) semver: 7.8.5 - eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)): + eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)): dependencies: confusing-browser-globals: 1.0.11 - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) + eslint: 9.39.4(jiti@2.6.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1)) object.assign: 4.1.7 object.entries: 1.1.9 semver: 6.3.1 - eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)): + eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)): dependencies: confusing-browser-globals: 1.0.11 eslint: 9.39.4(jiti@2.6.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)) object.assign: 4.1.7 object.entries: 1.1.9 semver: 6.3.1 - eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)): - dependencies: - '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) - '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) - transitivePeerDependencies: - - eslint-plugin-import - eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)): dependencies: '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5) @@ -29069,14 +27590,23 @@ snapshots: transitivePeerDependencies: - eslint-plugin-import - eslint-config-devextreme@1.1.11(036b0b25bc375413172c4d0cf61bea25): + eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)): + dependencies: + '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3) + '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3) + eslint: 9.39.4(jiti@2.6.1) + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) + transitivePeerDependencies: + - eslint-plugin-import + + eslint-config-devextreme@1.1.11(0bf0cf098d0a3b928d7fd275ba37129c): dependencies: '@stylistic/eslint-plugin': 5.10.0(eslint@9.39.4(jiti@2.6.1)) - '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3) - '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3) + '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5) + '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5) eslint: 9.39.4(jiti@2.6.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-jest: 29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.9.3)))(typescript@5.8.3) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-jest: 29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@20.11.17)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.11.17)(typescript@4.9.5)))(typescript@4.9.5) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-no-only-tests: 3.3.0 eslint-plugin-qunit: 8.2.6(eslint@9.39.4(jiti@2.6.1)) @@ -29084,11 +27614,11 @@ snapshots: eslint-plugin-react-perf: 3.3.3(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-rulesdir: 0.2.2 eslint-plugin-spellcheck: 0.0.20(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-vue: 10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1))) - stylelint: 15.11.0(typescript@5.8.3) - stylelint-config-standard: 38.0.0(stylelint@15.11.0(typescript@5.8.3)) + eslint-plugin-vue: 10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1))) + stylelint: 16.22.0(typescript@4.9.5) + stylelint-config-standard: 38.0.0(stylelint@16.22.0(typescript@4.9.5)) - eslint-config-devextreme@1.1.11(21373fd47cc2a7a56720766fc64e98ca): + eslint-config-devextreme@1.1.11(33b7e80734c34857e30298d4e85d3fef): dependencies: '@stylistic/eslint-plugin': 5.10.0(eslint@9.39.4(jiti@2.6.1)) '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5) @@ -29104,17 +27634,17 @@ snapshots: eslint-plugin-rulesdir: 0.2.2 eslint-plugin-spellcheck: 0.0.20(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-vue: 10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1))) - stylelint: 15.11.0(typescript@4.9.5) - stylelint-config-standard: 38.0.0(stylelint@15.11.0(typescript@4.9.5)) + stylelint: 16.22.0(typescript@4.9.5) + stylelint-config-standard: 38.0.0(stylelint@16.22.0(typescript@4.9.5)) - eslint-config-devextreme@1.1.11(2159c8bdfeeb538cd9a87b0f06dfe45f): + eslint-config-devextreme@1.1.11(34e25ca7f08f1322a043ec8d80e91c93): dependencies: '@stylistic/eslint-plugin': 5.10.0(eslint@9.39.4(jiti@2.6.1)) - '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5) - '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3) + '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3) eslint: 9.39.4(jiti@2.6.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-jest: 29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@4.9.5)))(typescript@4.9.5) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-jest: 29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.9.3)))(typescript@5.8.3) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-no-only-tests: 3.3.0 eslint-plugin-qunit: 8.2.6(eslint@9.39.4(jiti@2.6.1)) @@ -29122,18 +27652,37 @@ snapshots: eslint-plugin-react-perf: 3.3.3(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-rulesdir: 0.2.2 eslint-plugin-spellcheck: 0.0.20(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-vue: 10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1))) - stylelint: 15.11.0(typescript@4.9.5) - stylelint-config-standard: 38.0.0(stylelint@15.11.0(typescript@4.9.5)) + eslint-plugin-vue: 10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1))) + stylelint: 16.22.0(typescript@5.8.3) + stylelint-config-standard: 38.0.0(stylelint@16.22.0(typescript@5.8.3)) + + eslint-config-devextreme@1.1.11(36a0f49ab754119732d0cad2df2dd8f9): + dependencies: + '@stylistic/eslint-plugin': 5.10.0(eslint@9.39.4(jiti@2.6.1)) + '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.4(jiti@2.6.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-jest: 29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.9.3)))(typescript@5.9.3) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-no-only-tests: 3.3.0 + eslint-plugin-qunit: 8.2.6(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-react: 7.37.5(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-react-perf: 3.3.3(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-rulesdir: 0.2.2 + eslint-plugin-spellcheck: 0.0.20(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-vue: 10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1))) + stylelint: 16.22.0(typescript@5.9.3) + stylelint-config-standard: 38.0.0(stylelint@16.22.0(typescript@5.9.3)) - eslint-config-devextreme@1.1.11(3323971c1e531ea4fcc264c8af1d91e5): + eslint-config-devextreme@1.1.11(c357a05deb2b16688bde72abde48073f): dependencies: '@stylistic/eslint-plugin': 5.10.0(eslint@9.39.4(jiti@2.6.1)) '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.4(jiti@2.6.1) eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-jest: 29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.9.3)))(typescript@6.0.3) + eslint-plugin-jest: 29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.9.3)))(typescript@5.9.3) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-no-only-tests: 3.3.0 eslint-plugin-qunit: 8.2.6(eslint@9.39.4(jiti@2.6.1)) @@ -29142,17 +27691,17 @@ snapshots: eslint-plugin-rulesdir: 0.2.2 eslint-plugin-spellcheck: 0.0.20(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-vue: 10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1))) - stylelint: 15.11.0(typescript@6.0.3) - stylelint-config-standard: 38.0.0(stylelint@15.11.0(typescript@6.0.3)) + stylelint: 16.22.0(typescript@5.9.3) + stylelint-config-standard: 38.0.0(stylelint@16.22.0(typescript@5.9.3)) - eslint-config-devextreme@1.1.11(765db8ce296b6314aa6fee62e11efa0e): + eslint-config-devextreme@1.1.11(d15b6dd1a804cd08c9b9266c82470597): dependencies: '@stylistic/eslint-plugin': 5.10.0(eslint@9.39.4(jiti@2.6.1)) '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5) '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5) eslint: 9.39.4(jiti@2.6.1) eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-jest: 29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@20.11.17)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.11.17)(typescript@4.9.5)))(typescript@4.9.5) + eslint-plugin-jest: 29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@4.9.5)))(typescript@4.9.5) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-no-only-tests: 3.3.0 eslint-plugin-qunit: 8.2.6(eslint@9.39.4(jiti@2.6.1)) @@ -29161,36 +27710,17 @@ snapshots: eslint-plugin-rulesdir: 0.2.2 eslint-plugin-spellcheck: 0.0.20(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-vue: 10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1))) - stylelint: 15.11.0(typescript@4.9.5) - stylelint-config-standard: 38.0.0(stylelint@15.11.0(typescript@4.9.5)) - - eslint-config-devextreme@1.1.11(8a02c8ea109c9cf26ed5b6a911da64a7): - dependencies: - '@stylistic/eslint-plugin': 5.10.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) - '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) - '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) - eslint-plugin-jest: 29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(jest@29.7.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)))(supports-color@7.2.0)(typescript@6.0.3) - eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) - eslint-plugin-no-only-tests: 3.3.0 - eslint-plugin-qunit: 8.2.6(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) - eslint-plugin-react: 7.37.5(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) - eslint-plugin-react-perf: 3.3.3(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) - eslint-plugin-rulesdir: 0.2.2 - eslint-plugin-spellcheck: 0.0.20(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) - eslint-plugin-vue: 10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)) - stylelint: 16.22.0(typescript@6.0.3) - stylelint-config-standard: 38.0.0(stylelint@16.22.0(typescript@6.0.3)) + stylelint: 16.22.0(typescript@4.9.5) + stylelint-config-standard: 38.0.0(stylelint@16.22.0(typescript@4.9.5)) - eslint-config-devextreme@1.1.11(df15cfffce683e1bcb7bfdacad1a6df8): + eslint-config-devextreme@1.1.11(e21ae29425040465bd6c8524519e04cd): dependencies: '@stylistic/eslint-plugin': 5.10.0(eslint@9.39.4(jiti@2.6.1)) - '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3) - '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3) + '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3) eslint: 9.39.4(jiti@2.6.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-jest: 29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.9.3)))(typescript@6.0.3) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-jest: 29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1))(jest@29.7.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)))(typescript@6.0.3) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-no-only-tests: 3.3.0 eslint-plugin-qunit: 8.2.6(eslint@9.39.4(jiti@2.6.1)) @@ -29198,62 +27728,62 @@ snapshots: eslint-plugin-react-perf: 3.3.3(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-rulesdir: 0.2.2 eslint-plugin-spellcheck: 0.0.20(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-vue: 10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1))) - stylelint: 15.11.0(typescript@6.0.3) - stylelint-config-standard: 38.0.0(stylelint@15.11.0(typescript@6.0.3)) + eslint-plugin-vue: 10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1))) + stylelint: 16.22.0(typescript@6.0.3) + stylelint-config-standard: 38.0.0(stylelint@16.22.0(typescript@6.0.3)) eslint-import-resolver-node@0.3.10: dependencies: debug: 3.2.7 - is-core-module: 2.16.1 + is-core-module: 2.16.2 resolve: 2.0.0-next.6 transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint@9.39.4(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) + '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5) + eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint@9.39.4(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.10)(eslint@9.39.4(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5) + '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3) eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.10)(eslint@9.39.4(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint@9.39.4(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3) + '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint@9.39.4(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@9.39.4(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3) eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 transitivePeerDependencies: - supports-color - eslint-plugin-deprecation@3.0.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3): + eslint-plugin-deprecation@3.0.0(eslint@9.39.4(jiti@2.6.1))(supports-color@7.2.0)(typescript@6.0.3): dependencies: - '@typescript-eslint/utils': 7.18.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) + '@typescript-eslint/utils': 7.18.0(eslint@9.39.4(jiti@2.6.1))(supports-color@7.2.0)(typescript@6.0.3) + eslint: 9.39.4(jiti@2.6.1) ts-api-utils: 1.4.3(typescript@6.0.3) tslib: 2.8.1 typescript: 6.0.3 @@ -29262,14 +27792,14 @@ snapshots: eslint-plugin-es-x@7.8.0(eslint@9.39.4(jiti@2.6.1)): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.4(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.2 eslint: 9.39.4(jiti@2.6.1) eslint-compat-utils: 0.5.1(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-i18n@2.4.0: {} - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -29278,11 +27808,11 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) + eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint@9.39.4(jiti@2.6.1)) hasown: 2.0.4 - is-core-module: 2.16.1 + is-core-module: 2.16.2 is-glob: 4.0.3 minimatch: 3.1.5 object.fromentries: 2.0.8 @@ -29292,13 +27822,13 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) + '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -29309,9 +27839,9 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint@9.39.4(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.10)(eslint@9.39.4(jiti@2.6.1)) hasown: 2.0.4 - is-core-module: 2.16.1 + is-core-module: 2.16.2 is-glob: 4.0.3 minimatch: 3.1.5 object.fromentries: 2.0.8 @@ -29321,13 +27851,13 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5) + '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -29338,9 +27868,9 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.10)(eslint@9.39.4(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint@9.39.4(jiti@2.6.1)) hasown: 2.0.4 - is-core-module: 2.16.1 + is-core-module: 2.16.2 is-glob: 4.0.3 minimatch: 3.1.5 object.fromentries: 2.0.8 @@ -29350,13 +27880,13 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3) + '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -29367,9 +27897,9 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint@9.39.4(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@9.39.4(jiti@2.6.1)) hasown: 2.0.4 - is-core-module: 2.16.1 + is-core-module: 2.16.2 is-glob: 4.0.3 minimatch: 3.1.5 object.fromentries: 2.0.8 @@ -29379,7 +27909,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -29389,17 +27919,6 @@ snapshots: dependencies: eslint: 9.39.4(jiti@2.6.1) - eslint-plugin-jest@29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(jest@29.7.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)))(supports-color@7.2.0)(typescript@6.0.3): - dependencies: - '@typescript-eslint/utils': 8.58.2(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) - optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) - jest: 29.7.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - eslint-plugin-jest@29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@20.11.17)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.11.17)(typescript@4.9.5)))(typescript@4.9.5): dependencies: '@typescript-eslint/utils': 8.58.2(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5) @@ -29444,46 +27963,38 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-jest@29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.9.3)))(typescript@6.0.3): + eslint-plugin-jest@29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.9.3)))(typescript@5.9.3): dependencies: - '@typescript-eslint/utils': 8.58.2(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3) + '@typescript-eslint/utils': 8.58.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.4(jiti@2.6.1) optionalDependencies: '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - jest: 30.2.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.9.3)) - typescript: 6.0.3 + jest: 30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.9.3)) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - eslint-plugin-jest@29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.9.3)))(typescript@6.0.3): + eslint-plugin-jest@29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(jest@30.2.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.9.3)))(typescript@5.9.3): dependencies: - '@typescript-eslint/utils': 8.58.2(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3) + '@typescript-eslint/utils': 8.58.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.4(jiti@2.6.1) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) jest: 30.2.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@5.9.3)) - typescript: 6.0.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)): + eslint-plugin-jest@29.15.2(@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1))(jest@29.7.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)))(typescript@6.0.3): dependencies: - aria-query: 5.3.2 - array-includes: 3.1.9 - array.prototype.flatmap: 1.3.3 - ast-types-flow: 0.0.8 - axe-core: 4.12.1 - axobject-query: 4.1.0 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) - hasown: 2.0.4 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 - minimatch: 3.1.5 - object.fromentries: 2.0.8 - safe-regex-test: 1.1.0 - string.prototype.includes: 2.0.1 + '@typescript-eslint/utils': 8.58.2(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3) + eslint: 9.39.4(jiti@2.6.1) + optionalDependencies: + '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3) + jest: 29.7.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.4(jiti@2.6.1)): dependencies: @@ -29521,30 +28032,24 @@ snapshots: eslint-plugin-no-only-tests@3.3.0: {} - eslint-plugin-perfectionist@5.9.1(eslint@9.39.4(jiti@2.6.1))(supports-color@7.2.0)(typescript@4.9.5): + eslint-plugin-perfectionist@5.9.1(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5): dependencies: - '@typescript-eslint/utils': 8.62.0(eslint@9.39.4(jiti@2.6.1))(supports-color@7.2.0)(typescript@4.9.5) + '@typescript-eslint/utils': 8.62.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5) eslint: 9.39.4(jiti@2.6.1) natural-orderby: 5.0.0 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-qunit@8.2.6(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)): - dependencies: - '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) - requireindex: 1.2.0 - eslint-plugin-qunit@8.2.6(eslint@9.39.4(jiti@2.6.1)): dependencies: '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.4(jiti@2.6.1)) eslint: 9.39.4(jiti@2.6.1) requireindex: 1.2.0 - eslint-plugin-react-hooks@5.2.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)): + eslint-plugin-react-hooks@5.2.0(eslint@9.39.4(jiti@2.6.1)): dependencies: - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) + eslint: 9.39.4(jiti@2.6.1) eslint-plugin-react-hooks@7.0.1(eslint@9.39.4(jiti@2.6.1)): dependencies: @@ -29557,10 +28062,6 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-react-perf@3.3.3(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)): - dependencies: - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) - eslint-plugin-react-perf@3.3.3(eslint@9.39.4(jiti@2.6.1)): dependencies: eslint: 9.39.4(jiti@2.6.1) @@ -29569,28 +28070,6 @@ snapshots: dependencies: eslint: 9.39.4(jiti@2.6.1) - eslint-plugin-react@7.37.5(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)): - dependencies: - array-includes: 3.1.9 - array.prototype.findlast: 1.2.5 - array.prototype.flatmap: 1.3.3 - array.prototype.tosorted: 1.1.4 - doctrine: 2.1.0 - es-iterator-helpers: 1.3.2 - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) - estraverse: 5.3.0 - hasown: 2.0.3 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.5 - object.entries: 1.1.9 - object.fromentries: 2.0.8 - object.values: 1.2.1 - prop-types: 15.8.1 - resolve: 2.0.0-next.6 - semver: 6.3.1 - string.prototype.matchall: 4.0.12 - string.prototype.repeat: 1.0.0 - eslint-plugin-react@7.37.5(eslint@9.39.4(jiti@2.6.1)): dependencies: array-includes: 3.1.9 @@ -29619,13 +28098,6 @@ snapshots: dependencies: eslint: 9.39.4(jiti@2.6.1) - eslint-plugin-spellcheck@0.0.20(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)): - dependencies: - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) - globals: 13.24.0 - hunspell-spellchecker: 1.0.2 - lodash: 4.18.1 - eslint-plugin-spellcheck@0.0.20(eslint@9.39.4(jiti@2.6.1)): dependencies: eslint: 9.39.4(jiti@2.6.1) @@ -29657,57 +28129,57 @@ snapshots: semver: 7.7.4 strip-indent: 4.1.1 - eslint-plugin-vue@10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)): + eslint-plugin-vue@10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1))): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.4(jiti@2.6.1)) + eslint: 9.39.4(jiti@2.6.1) natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.1.2 - semver: 7.8.4 - vue-eslint-parser: 10.0.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0) + semver: 7.8.5 + vue-eslint-parser: 10.0.0(eslint@9.39.4(jiti@2.6.1)) xml-name-validator: 4.0.0 optionalDependencies: - '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) + '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5) - eslint-plugin-vue@10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5))(eslint@9.39.4(jiti@2.6.1))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1))): + eslint-plugin-vue@10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1))): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.4(jiti@2.6.1)) eslint: 9.39.4(jiti@2.6.1) natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.1.2 - semver: 7.8.4 + semver: 7.8.5 vue-eslint-parser: 10.0.0(eslint@9.39.4(jiti@2.6.1)) xml-name-validator: 4.0.0 optionalDependencies: - '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@4.9.5) + '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3) - eslint-plugin-vue@10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.4(jiti@2.6.1))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1))): + eslint-plugin-vue@10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1))): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.4(jiti@2.6.1)) eslint: 9.39.4(jiti@2.6.1) natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.1.2 - semver: 7.8.4 + semver: 7.8.5 vue-eslint-parser: 10.0.0(eslint@9.39.4(jiti@2.6.1)) xml-name-validator: 4.0.0 optionalDependencies: - '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.8.3) + '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - eslint-plugin-vue@10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1))): + eslint-plugin-vue@10.4.0(@typescript-eslint/parser@8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3))(eslint@9.39.4(jiti@2.6.1))(vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1))): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.4(jiti@2.6.1)) eslint: 9.39.4(jiti@2.6.1) natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.1.2 - semver: 7.8.4 + semver: 7.8.5 vue-eslint-parser: 10.0.0(eslint@9.39.4(jiti@2.6.1)) xml-name-validator: 4.0.0 optionalDependencies: - '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.52.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.3) eslint-scope@5.1.1: dependencies: @@ -29734,50 +28206,9 @@ snapshots: eslint@9.39.4(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) - '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.21.2(supports-color@7.2.0) - '@eslint/config-helpers': 0.4.2 - '@eslint/core': 0.17.0 - '@eslint/eslintrc': 3.3.5 - '@eslint/js': 9.39.4 - '@eslint/plugin-kit': 0.4.1 - '@humanfs/node': 0.16.8 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.8 - ajv: 6.14.0 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.3(supports-color@7.2.0) - escape-string-regexp: 4.0.0 - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - esquery: 1.7.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.5 - natural-compare: 1.4.0 - optionator: 0.9.4 - optionalDependencies: - jiti: 2.6.1 - transitivePeerDependencies: - - supports-color - - eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0): - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0)) + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.4(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.21.2(supports-color@7.2.0) + '@eslint/config-array': 0.21.2 '@eslint/config-helpers': 0.4.2 '@eslint/core': 0.17.0 '@eslint/eslintrc': 3.3.5 @@ -29786,7 +28217,7 @@ snapshots: '@humanfs/node': 0.16.8 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 ajv: 6.14.0 chalk: 4.1.2 cross-spawn: 7.0.6 @@ -29947,10 +28378,6 @@ snapshots: exit@0.1.2: {} - expand-tilde@2.0.2: - dependencies: - homedir-polyfill: 1.0.3 - expect@29.7.0: dependencies: '@jest/expect-utils': 29.7.0 @@ -29986,7 +28413,7 @@ snapshots: express-rate-limit@8.3.2(express@5.2.1): dependencies: - express: 5.2.1(supports-color@7.2.0) + express: 5.2.1 ip-address: 10.2.0 express@4.22.1: @@ -30025,10 +28452,10 @@ snapshots: transitivePeerDependencies: - supports-color - express@5.2.1(supports-color@7.2.0): + express@5.2.1: dependencies: accepts: 2.0.0 - body-parser: 2.3.0(supports-color@7.2.0) + body-parser: 2.3.0 content-disposition: 1.1.0 content-type: 1.0.5 cookie: 0.7.2 @@ -30038,7 +28465,7 @@ snapshots: encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 2.1.1(supports-color@7.2.0) + finalhandler: 2.1.1 fresh: 2.0.0 http-errors: 2.0.1 merge-descriptors: 2.0.0 @@ -30047,13 +28474,13 @@ snapshots: once: 1.4.0 parseurl: 1.3.3 proxy-addr: 2.0.7 - qs: 6.15.2 + qs: 6.15.3 range-parser: 1.3.0 - router: 2.2.0(supports-color@7.2.0) - send: 1.2.1(supports-color@7.2.0) + router: 2.2.0 + send: 1.2.1 serve-static: 2.2.1 statuses: 2.0.2 - type-is: 2.0.1 + type-is: 2.1.0 vary: 1.1.2 transitivePeerDependencies: - supports-color @@ -30062,10 +28489,6 @@ snapshots: dependencies: type: 2.7.3 - extend-shallow@1.1.4: - dependencies: - kind-of: 1.1.0 - extend-shallow@3.0.2: dependencies: assign-symbols: 1.0.0 @@ -30073,12 +28496,6 @@ snapshots: extend@3.0.2: {} - fancy-log@1.3.2: - dependencies: - ansi-gray: 0.1.1 - color-support: 1.1.3 - time-stamp: 1.1.0 - fancy-log@1.3.3: dependencies: ansi-gray: 0.1.1 @@ -30086,10 +28503,6 @@ snapshots: parse-node-version: 1.0.1 time-stamp: 1.1.0 - fancy-log@2.0.0: - dependencies: - color-support: 1.1.3 - fast-csv@5.0.5: dependencies: '@fast-csv/format': 5.0.5 @@ -30113,8 +28526,6 @@ snapshots: fast-json-stable-stringify@2.1.0: {} - fast-levenshtein@1.1.4: {} - fast-levenshtein@2.0.6: {} fast-png@6.4.0: @@ -30175,10 +28586,6 @@ snapshots: dependencies: flat-cache: 6.1.22 - file-entry-cache@7.0.2: - dependencies: - flat-cache: 3.2.0 - file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -30187,9 +28594,6 @@ snapshots: file-saver@2.0.5: {} - file-uri-to-path@1.0.0: - optional: true - filing-cabinet@4.1.6: dependencies: app-module-path: 2.2.0 @@ -30233,7 +28637,7 @@ snapshots: transitivePeerDependencies: - supports-color - finalhandler@2.1.1(supports-color@7.2.0): + finalhandler@2.1.1: dependencies: debug: 4.4.3(supports-color@7.2.0) encodeurl: 2.0.0 @@ -30261,11 +28665,6 @@ snapshots: find-up-simple@1.0.1: {} - find-up@1.1.2: - dependencies: - path-exists: 2.1.0 - pinkie-promise: 2.0.1 - find-up@3.0.0: dependencies: locate-path: 3.0.0 @@ -30280,34 +28679,6 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - findup-sync@2.0.0: - dependencies: - detect-file: 1.0.0 - is-glob: 3.1.0 - micromatch: 4.0.8 - resolve-dir: 1.0.1 - - findup-sync@3.0.0: - dependencies: - detect-file: 1.0.0 - is-glob: 4.0.3 - micromatch: 4.0.8 - resolve-dir: 1.0.1 - - fined@1.2.0: - dependencies: - expand-tilde: 2.0.2 - is-plain-object: 2.0.4 - object.defaults: 1.1.0 - object.pick: 1.3.0 - parse-filepath: 1.0.2 - - first-chunk-stream@2.0.0: - dependencies: - readable-stream: 2.3.8 - - flagged-respawn@1.0.1: {} - flat-cache@3.2.0: dependencies: flatted: 3.4.3 @@ -30316,26 +28687,19 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.4.2 + flatted: 3.4.3 keyv: 4.5.4 flat-cache@6.1.22: dependencies: cacheable: 2.3.4 - flatted: 3.4.2 + flatted: 3.4.3 hookified: 1.15.1 flat@5.0.2: {} - flatted@3.4.2: {} - flatted@3.4.3: {} - flush-write-stream@1.1.1: - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - fn.name@1.1.0: {} follow-redirects@1.16.0(debug@4.4.3): @@ -30346,19 +28710,11 @@ snapshots: dependencies: is-callable: 1.2.7 - for-in@1.0.2: {} - - for-own@1.0.0: - dependencies: - for-in: 1.0.2 - foreground-child@3.3.1: dependencies: cross-spawn: 7.0.6 signal-exit: 4.1.0 - fork-stream@0.0.4: {} - fork-ts-checker-webpack-plugin@9.1.0(typescript@5.9.3)(webpack@5.105.4(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)): dependencies: '@babel/code-frame': 7.29.7 @@ -30431,29 +28787,10 @@ snapshots: dependencies: minipass: 7.1.3 - fs-mkdirp-stream@1.0.0: - dependencies: - graceful-fs: 4.2.11 - through2: 2.0.5 - - fs-mkdirp-stream@2.0.1: - dependencies: - graceful-fs: 4.2.11 - streamx: 2.25.0 - transitivePeerDependencies: - - bare-abort-controller - - react-native-b4a - fs-monkey@1.1.0: {} fs.realpath@1.0.0: {} - fsevents@1.2.13: - dependencies: - bindings: 1.5.0 - nan: 2.26.2 - optional: true - fsevents@2.3.3: optional: true @@ -30481,8 +28818,6 @@ snapshots: get-assigned-identifiers@1.2.0: {} - get-caller-file@1.0.3: {} - get-caller-file@2.0.5: {} get-east-asian-width@1.5.0: {} @@ -30538,17 +28873,10 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 - get-value@2.0.6: {} - getos@3.2.1: dependencies: async: 3.2.6 - glob-parent@3.1.0: - dependencies: - is-glob: 3.1.0 - path-dirname: 1.0.2 - glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -30557,49 +28885,12 @@ snapshots: dependencies: is-glob: 4.0.3 - glob-stream@6.1.0: - dependencies: - extend: 3.0.2 - glob: 7.2.3 - glob-parent: 3.1.0 - is-negated-glob: 1.0.0 - ordered-read-streams: 1.0.1 - pumpify: 1.5.1 - readable-stream: 2.3.8 - remove-trailing-separator: 1.1.0 - to-absolute-glob: 2.0.2 - unique-stream: 2.4.0 - - glob-stream@8.0.3: - dependencies: - '@gulpjs/to-absolute-glob': 4.0.0 - anymatch: 3.1.3 - fastq: 1.20.1 - glob-parent: 6.0.2 - is-glob: 4.0.3 - is-negated-glob: 1.0.0 - normalize-path: 3.0.0 - streamx: 2.25.0 - transitivePeerDependencies: - - bare-abort-controller - - react-native-b4a - glob-to-regex.js@1.2.0(tslib@2.8.1): dependencies: tslib: 2.8.1 glob-to-regexp@0.4.1: {} - glob-watcher@5.0.5: - dependencies: - anymatch: 2.0.0 - async-done: 1.3.2 - chokidar: 2.1.8 - is-negated-glob: 1.0.0 - just-debounce: 1.1.0 - normalize-path: 3.0.0 - object.defaults: 1.1.0 - glob@10.5.0: dependencies: foreground-child: 3.3.1 @@ -30649,24 +28940,10 @@ snapshots: minimatch: 5.1.9 once: 1.4.0 - global-modules@1.0.0: - dependencies: - global-prefix: 1.0.2 - is-windows: 1.0.2 - resolve-dir: 1.0.1 - global-modules@2.0.0: dependencies: global-prefix: 3.0.0 - global-prefix@1.0.2: - dependencies: - expand-tilde: 2.0.2 - homedir-polyfill: 1.0.3 - ini: 1.3.8 - is-windows: 1.0.2 - which: 1.3.1 - global-prefix@3.0.0: dependencies: ini: 1.3.8 @@ -30728,10 +29005,6 @@ snapshots: globrex@0.1.2: {} - glogg@1.0.2: - dependencies: - sparkles: 1.0.1 - gonzales-pe@4.3.0: dependencies: minimist: 1.2.8 @@ -30748,231 +29021,11 @@ snapshots: dependencies: lodash: 4.18.1 - growly@1.3.0: {} - - gulp-babel@8.0.0(@babel/core@7.29.7): - dependencies: - '@babel/core': 7.29.7 - plugin-error: 1.0.1 - replace-ext: 1.0.1 - through2: 2.0.5 - vinyl-sourcemaps-apply: 0.2.1 - - gulp-cache@1.1.3: - dependencies: - '@babel/runtime': 7.29.2 - cache-swap: 0.3.0 - core-js: 3.49.0 - object.pick: 1.3.0 - plugin-error: 1.0.1 - through2: 3.0.1 - vinyl: 2.2.1 - - gulp-cached@1.1.1: - dependencies: - lodash.defaults: 4.2.0 - through2: 2.0.5 - - gulp-cli@2.3.0: - dependencies: - ansi-colors: 1.1.0 - archy: 1.0.0 - array-sort: 1.0.0 - color-support: 1.1.3 - concat-stream: 1.6.2 - copy-props: 2.0.5 - fancy-log: 1.3.3 - gulplog: 1.0.0 - interpret: 1.4.0 - isobject: 3.0.1 - liftoff: 3.1.0 - matchdep: 2.0.0 - mute-stdout: 1.0.1 - pretty-hrtime: 1.0.3 - replace-homedir: 1.0.0 - semver-greatest-satisfied-range: 1.1.0 - v8flags: 3.2.0 - yargs: 7.1.2 - - gulp-concat@2.6.1: - dependencies: - concat-with-sourcemaps: 1.1.0 - through2: 2.0.5 - vinyl: 2.2.1 - - gulp-each@0.5.0: - dependencies: - read-vinyl-file-stream: 2.0.3 - - gulp-eol@0.2.0: - dependencies: - plugin-error: 1.0.1 - through2: 0.4.2 - - gulp-eslint-new@2.4.0(jiti@2.6.1): - dependencies: - eslint: 9.39.4(jiti@2.6.1) - fancy-log: 2.0.0 - plugin-error: 2.0.1 - semver: 7.8.4 - ternary-stream: 3.0.0 - vinyl-fs: 4.0.2 - optionalDependencies: - '@types/eslint': 9.6.1 - '@types/node': 20.19.37 - transitivePeerDependencies: - - bare-abort-controller - - jiti - - react-native-b4a - - supports-color - - gulp-file@0.4.0: - dependencies: - through2: 0.4.2 - vinyl: 2.2.1 - - gulp-filter@7.0.0(gulp@4.0.2): - dependencies: - multimatch: 5.0.0 - plugin-error: 1.0.1 - streamfilter: 3.0.0 - to-absolute-glob: 2.0.2 - optionalDependencies: - gulp: 4.0.2 - - gulp-flatmap@1.0.2: - dependencies: - plugin-error: 0.1.2 - through2: 2.0.3 - - gulp-footer@2.1.0: - dependencies: - lodash: 4.18.1 - map-stream: 0.0.7 - - gulp-header@2.0.9: - dependencies: - concat-with-sourcemaps: 1.1.0 - lodash.template: 4.18.1 - map-stream: 0.0.7 - through2: 2.0.5 - - gulp-if@3.0.0: - dependencies: - gulp-match: 1.1.0 - ternary-stream: 3.0.0 - through2: 3.0.2 - - gulp-json-editor@2.6.0: - dependencies: - deepmerge: 4.3.1 - detect-indent: 6.1.0 - js-beautify: 1.15.4 - plugin-error: 2.0.1 - through2: 4.0.2 - - gulp-match@1.1.0: - dependencies: - minimatch: 3.1.5 - - gulp-multi-process@1.4.0: - dependencies: - async: 3.2.6 - - gulp-notify@4.0.0: - dependencies: - ansi-colors: 4.1.3 - fancy-log: 1.3.3 - lodash.template: 4.18.1 - node-notifier: 9.0.1 - node.extend: 2.0.3 - plugin-error: 1.0.1 - through2: 4.0.2 - - gulp-plumber@1.2.1: - dependencies: - chalk: 1.1.3 - fancy-log: 1.3.3 - plugin-error: 0.1.2 - through2: 2.0.5 - - gulp-rename@1.4.0: {} - - gulp-replace@0.6.1: - dependencies: - istextorbinary: 1.0.2 - readable-stream: 2.3.8 - replacestream: 4.0.3 - - gulp-sass@6.0.1: - dependencies: - lodash.clonedeep: 4.5.0 - picocolors: 1.1.1 - plugin-error: 1.0.1 - replace-ext: 2.0.0 - strip-ansi: 6.0.1 - vinyl-sourcemaps-apply: 0.2.1 - - gulp-shell@0.8.0: - dependencies: - chalk: 3.0.0 - fancy-log: 1.3.3 - lodash.template: 4.18.1 - plugin-error: 1.0.1 - through2: 3.0.2 - tslib: 1.14.1 - - gulp-tap@1.0.1: - dependencies: - through2: 2.0.5 - - gulp-template@5.0.0: - dependencies: - lodash: 4.18.1 - plugin-error: 0.1.2 - safe-buffer: 5.2.1 - through2: 2.0.5 - - gulp-typescript@5.0.1(typescript@4.9.5): - dependencies: - ansi-colors: 3.2.4 - plugin-error: 1.0.1 - source-map: 0.7.6 - through2: 3.0.2 - typescript: 4.9.5 - vinyl: 2.2.1 - vinyl-fs: 3.0.3 - - gulp-watch@5.0.1: - dependencies: - ansi-colors: 1.1.0 - anymatch: 1.3.2 - chokidar: 2.1.8 - fancy-log: 1.3.2 - glob-parent: 3.1.0 - object-assign: 4.1.1 - path-is-absolute: 1.0.1 - plugin-error: 1.0.1 - readable-stream: 2.3.8 - slash: 1.0.0 - vinyl: 2.2.1 - vinyl-file: 2.0.0 - - gulp@4.0.2: - dependencies: - glob-watcher: 5.0.5 - gulp-cli: 2.3.0 - undertaker: 1.3.0 - vinyl-fs: 3.0.3 - - gulplog@1.0.0: - dependencies: - glogg: 1.0.2 + growly@1.3.0: + optional: true handle-thing@2.0.1: {} - hard-rejection@2.1.0: {} - harmony-reflect@1.6.2: {} has-ansi@2.0.0: @@ -31166,10 +29219,6 @@ snapshots: os-homedir: 1.0.2 os-tmpdir: 1.0.2 - homedir-polyfill@1.0.3: - dependencies: - parse-passwd: 1.0.0 - hono@4.12.32: {} hookified@1.15.1: {} @@ -31178,10 +29227,6 @@ snapshots: hosted-git-info@2.8.9: {} - hosted-git-info@4.1.0: - dependencies: - lru-cache: 6.0.0 - hosted-git-info@9.0.2: dependencies: lru-cache: 11.3.5 @@ -31477,8 +29522,6 @@ snapshots: import-lazy@3.1.0: {} - import-lazy@4.0.0: {} - import-local@3.2.0: dependencies: pkg-dir: 4.2.0 @@ -31572,8 +29615,6 @@ snapshots: intl@1.2.5: {} - invert-kv@1.0.0: {} - iobuffer@5.4.0: {} ip-address@10.2.0: {} @@ -31582,11 +29623,6 @@ snapshots: ipaddr.js@2.4.0: {} - is-absolute@1.0.0: - dependencies: - is-relative: 1.0.0 - is-windows: 1.0.2 - is-arguments@1.2.0: dependencies: call-bound: 1.0.4 @@ -31612,10 +29648,6 @@ snapshots: dependencies: has-bigints: 1.1.0 - is-binary-path@1.0.1: - dependencies: - binary-extensions: 1.13.1 - is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 @@ -31643,10 +29675,6 @@ snapshots: dependencies: ci-info: 1.6.0 - is-core-module@2.16.1: - dependencies: - hasown: 2.0.4 - is-core-module@2.16.2: dependencies: hasown: 2.0.4 @@ -31682,10 +29710,6 @@ snapshots: is-finite@1.1.0: {} - is-fullwidth-code-point@1.0.0: - dependencies: - number-is-nan: 1.0.1 - is-fullwidth-code-point@3.0.0: {} is-fullwidth-code-point@4.0.0: {} @@ -31708,10 +29732,6 @@ snapshots: dependencies: is-extglob: 1.0.0 - is-glob@3.1.0: - dependencies: - is-extglob: 2.1.1 - is-glob@4.0.3: dependencies: is-extglob: 2.1.1 @@ -31730,8 +29750,6 @@ snapshots: is-module@1.0.0: {} - is-negated-glob@1.0.0: {} - is-negative-zero@2.0.3: {} is-network-error@1.3.2: {} @@ -31741,8 +29759,6 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 - is-number@4.0.0: {} - is-number@7.0.0: {} is-obj@1.0.1: {} @@ -31761,8 +29777,6 @@ snapshots: is-path-inside@3.0.3: {} - is-plain-obj@1.1.0: {} - is-plain-obj@4.1.0: {} is-plain-object@2.0.4: @@ -31779,7 +29793,7 @@ snapshots: is-reference@1.2.1: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 is-regex@1.2.1: dependencies: @@ -31792,10 +29806,6 @@ snapshots: is-relative-path@1.0.2: {} - is-relative@1.0.0: - dependencies: - is-unc-path: 1.0.0 - is-set@2.0.3: {} is-shared-array-buffer@1.0.4: @@ -31821,10 +29831,6 @@ snapshots: dependencies: which-typed-array: 1.1.20 - is-unc-path@1.0.0: - dependencies: - unc-path-regex: 0.1.2 - is-unicode-supported@0.1.0: {} is-unicode-supported@1.3.0: {} @@ -31837,8 +29843,6 @@ snapshots: is-utf8@0.2.1: {} - is-valid-glob@1.0.0: {} - is-weakmap@2.0.2: {} is-weakref@1.1.1: @@ -31854,8 +29858,6 @@ snapshots: is-what@4.1.16: {} - is-windows@1.0.2: {} - is-wsl@2.2.0: dependencies: is-docker: 2.2.1 @@ -31864,10 +29866,6 @@ snapshots: dependencies: is-inside-container: 1.0.0 - is@3.3.2: {} - - isarray@0.0.1: {} - isarray@1.0.0: {} isarray@2.0.5: {} @@ -31929,11 +29927,6 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - istextorbinary@1.0.2: - dependencies: - binaryextensions: 1.0.1 - textextensions: 1.0.2 - iterator.prototype@1.1.5: dependencies: define-data-property: 1.1.4 @@ -32075,16 +30068,16 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)): + jest-cli@29.7.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)): dependencies: '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)) + create-jest: 29.7.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)) + jest-config: 29.7.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -32245,15 +30238,15 @@ snapshots: - supports-color - ts-node - jest-cli@30.2.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@6.0.3)): + jest-cli@30.2.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@5.9.3)): dependencies: - '@jest/core': 30.2.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@6.0.3)) + '@jest/core': 30.2.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@5.9.3)) '@jest/test-result': 30.2.0 '@jest/types': 30.2.0 chalk: 4.1.2 exit-x: 0.2.2 import-local: 3.2.0 - jest-config: 30.2.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@6.0.3)) + jest-config: 30.2.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@5.9.3)) jest-util: 30.2.0 jest-validate: 30.2.0 yargs: 17.7.2 @@ -32328,37 +30321,6 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)): - dependencies: - '@babel/core': 7.29.7 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.29.7) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0(babel-plugin-macros@3.1.0) - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 26.1.1 - ts-node: 10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - jest-config@30.2.0(@types/node@18.19.130)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@18.19.130)(typescript@4.9.5)): dependencies: '@babel/core': 7.29.7 @@ -32658,7 +30620,7 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@6.0.3)): + jest-config@30.2.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@5.9.3)): dependencies: '@babel/core': 7.29.7 '@jest/get-type': 30.1.0 @@ -32686,7 +30648,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.19.37 - ts-node: 10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@6.0.3) + ts-node: 10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@5.9.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -32758,7 +30720,7 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@30.2.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@6.0.3)): + jest-config@30.2.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@5.9.3)): dependencies: '@babel/core': 7.29.7 '@jest/get-type': 30.1.0 @@ -32786,7 +30748,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 26.1.1 - ts-node: 10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@6.0.3) + ts-node: 10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@5.9.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -33490,12 +31452,12 @@ snapshots: - supports-color - ts-node - jest@29.7.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)): + jest@29.7.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)): dependencies: '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)) + jest-cli: 29.7.0(@types/node@20.19.37)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@20.19.37)(typescript@6.0.3)) optionalDependencies: node-notifier: 9.0.1 transitivePeerDependencies: @@ -33611,12 +31573,12 @@ snapshots: - supports-color - ts-node - jest@30.2.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@6.0.3)): + jest@30.2.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@5.9.3)): dependencies: - '@jest/core': 30.2.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@6.0.3)) + '@jest/core': 30.2.0(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@5.9.3)) '@jest/types': 30.2.0 import-local: 3.2.0 - jest-cli: 30.2.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@6.0.3)) + jest-cli: 30.2.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@5.9.3)) optionalDependencies: node-notifier: 9.0.1 transitivePeerDependencies: @@ -33764,8 +31726,6 @@ snapshots: readable-stream: 2.3.8 setimmediate: 1.0.5 - just-debounce@1.1.0: {} - just-extend@6.2.0: {} karma-chrome-launcher@3.2.0: @@ -33851,10 +31811,6 @@ snapshots: dependencies: '@keyv/serialize': 1.1.1 - kind-of@1.1.0: {} - - kind-of@5.1.0: {} - kind-of@6.0.3: {} kleur@3.0.3: {} @@ -33863,8 +31819,6 @@ snapshots: knockout@3.5.3: {} - known-css-properties@0.29.0: {} - known-css-properties@0.35.0: {} known-css-properties@0.37.0: {} @@ -33882,34 +31836,15 @@ snapshots: dependencies: language-subtag-registry: 0.3.23 - last-run@1.1.1: - dependencies: - default-resolution: 2.0.0 - es6-weak-map: 2.0.3 - launch-editor@2.14.1: dependencies: picocolors: 1.1.1 shell-quote: 1.10.0 - lazypipe@1.0.2: - dependencies: - stream-combiner: 0.2.2 - lazystream@1.0.1: dependencies: readable-stream: 2.3.8 - lcid@1.0.0: - dependencies: - invert-kv: 1.0.0 - - lead@1.0.0: - dependencies: - flush-write-stream: 1.1.1 - - lead@4.0.0: {} - less-loader@12.3.0(less@4.4.0)(webpack@5.105.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)): dependencies: less: 4.4.0 @@ -33976,6 +31911,7 @@ snapshots: source-map: 0.6.1 transitivePeerDependencies: - supports-color + optional: true leven@3.1.0: {} @@ -33986,13 +31922,13 @@ snapshots: license-webpack-plugin@4.0.2(webpack@5.105.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)): dependencies: - webpack-sources: 3.3.4 + webpack-sources: 3.5.1 optionalDependencies: webpack: 5.105.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1) license-webpack-plugin@4.0.2(webpack@5.106.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)): dependencies: - webpack-sources: 3.3.4 + webpack-sources: 3.5.1 optionalDependencies: webpack: 5.106.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1) @@ -34000,17 +31936,6 @@ snapshots: dependencies: immediate: 3.0.6 - liftoff@3.1.0: - dependencies: - extend: 3.0.2 - findup-sync: 3.0.0 - fined: 1.2.0 - flagged-respawn: 1.0.1 - is-plain-object: 2.0.4 - object.map: 1.0.1 - rechoir: 0.6.2 - resolve: 1.22.12 - lightningcss-android-arm64@1.32.0: optional: true @@ -34118,7 +32043,7 @@ snapshots: lmdb@2.8.5: dependencies: - msgpackr: 1.11.10 + msgpackr: 1.12.1 node-addon-api: 6.1.0 node-gyp-build-optional-packages: 5.1.1 ordered-binary: 1.6.1 @@ -34166,14 +32091,6 @@ snapshots: '@lmdb/lmdb-win32-x64': 3.5.4 optional: true - load-json-file@1.1.0: - dependencies: - graceful-fs: 4.2.11 - parse-json: 2.2.0 - pify: 2.3.0 - pinkie-promise: 2.0.1 - strip-bom: 2.0.0 - loader-runner@4.3.1: {} loader-runner@4.3.2: {} @@ -34205,16 +32122,12 @@ snapshots: dependencies: p-locate: 5.0.0 - lodash._reinterpolate@3.0.0: {} - lodash.clone@4.5.0: {} lodash.clonedeep@4.5.0: {} lodash.debounce@4.0.8: {} - lodash.defaults@4.2.0: {} - lodash.escaperegexp@4.1.2: {} lodash.groupby@4.6.0: {} @@ -34237,15 +32150,6 @@ snapshots: lodash.some@4.6.0: {} - lodash.template@4.18.1: - dependencies: - lodash._reinterpolate: 3.0.0 - lodash.templatesettings: 4.2.0 - - lodash.templatesettings@4.2.0: - dependencies: - lodash._reinterpolate: 3.0.0 - lodash.truncate@4.4.2: {} lodash.uniq@4.5.0: {} @@ -34403,35 +32307,16 @@ snapshots: transitivePeerDependencies: - supports-color - make-iterator@1.0.1: - dependencies: - kind-of: 6.0.3 - make-synchronized@0.8.0: {} makeerror@1.0.12: dependencies: tmpl: 1.0.5 - map-cache@0.2.2: {} - - map-obj@1.0.1: {} - - map-obj@4.3.0: {} - - map-stream@0.0.7: {} - match-url-wildcard@0.0.4: dependencies: escape-string-regexp: 1.0.5 - matchdep@2.0.0: - dependencies: - findup-sync: 2.0.0 - micromatch: 4.0.8 - resolve: 1.22.12 - stack-trace: 0.0.10 - math-intrinsics@1.1.0: {} mathml-tag-names@2.1.3: {} @@ -34496,8 +32381,6 @@ snapshots: dependencies: '@types/mdast': 3.0.15 - mdn-data@2.0.30: {} - mdn-data@2.27.1: {} mdn-data@2.28.0: {} @@ -34534,21 +32417,6 @@ snapshots: memorystream@0.3.1: {} - meow@10.1.5: - dependencies: - '@types/minimist': 1.2.5 - camelcase-keys: 7.0.2 - decamelize: 5.0.1 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 8.0.0 - redent: 4.0.0 - trim-newlines: 4.1.1 - type-fest: 1.4.0 - yargs-parser: 20.2.9 - meow@13.2.0: {} merge-descriptors@1.0.3: {} @@ -34745,7 +32613,7 @@ snapshots: mini-css-extract-plugin@2.9.4(webpack@5.105.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)): dependencies: schema-utils: 4.3.3 - tapable: 2.3.2 + tapable: 2.3.3 webpack: 5.105.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1) minimalistic-assert@1.0.1: {} @@ -34772,12 +32640,6 @@ snapshots: dependencies: brace-expansion: 5.0.8(patch_hash=04173a3f4a21e1d7e0d537c8c0f59708d9576b6370df7f73af3d9c77430b1b4b) - minimist-options@4.1.0: - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - minimist@1.2.8: {} minipass-collect@2.0.1: @@ -34905,7 +32767,6 @@ snapshots: msgpackr@1.12.1: optionalDependencies: msgpackr-extract: 3.0.4 - optional: true muggle-string@0.4.1: {} @@ -34914,31 +32775,16 @@ snapshots: dns-packet: 5.6.1 thunky: 1.1.0 - multimatch@5.0.0: - dependencies: - '@types/minimatch': 3.0.5 - array-differ: 3.0.0 - array-union: 2.1.0 - arrify: 2.0.1 - minimatch: 3.1.5 - mustache@2.3.2: {} mustache@4.2.0: {} - mute-stdout@1.0.1: {} - mute-stream@2.0.0: {} mute-stream@3.0.0: {} mylas@2.1.14: {} - nan@2.26.2: - optional: true - - nanoid@3.3.12: {} - nanoid@3.3.16: {} napi-postinstall@0.3.4: {} @@ -34997,7 +32843,7 @@ snapshots: find-cache-directory: 6.0.0 injection-js: 2.6.1 jsonc-parser: 3.3.1 - less: 4.8.0 + less: 4.6.6 ora: 8.2.0 piscina: 5.3.0 postcss: 8.5.23 @@ -35009,8 +32855,6 @@ snapshots: typescript: 5.8.3 optionalDependencies: rollup: 4.59.0 - transitivePeerDependencies: - - supports-color ng-packagr@21.2.3(@angular/compiler-cli@22.0.2(@angular/compiler@22.0.2)(typescript@4.9.5))(tslib@2.8.1)(typescript@4.9.5): dependencies: @@ -35106,6 +32950,7 @@ snapshots: shellwords: 0.1.1 uuid: 14.0.0 which: 2.0.2 + optional: true node-releases@2.0.51: {} @@ -35113,21 +32958,8 @@ snapshots: dependencies: '@babel/parser': 7.29.7 - node-stream@1.7.0: - dependencies: - lodash: 4.18.1 - readable-stream: 2.3.8 - split2: 2.2.0 - stream-combiner2: 1.1.1 - through2: 2.0.5 - node-watch@0.7.3: {} - node.extend@2.0.3: - dependencies: - hasown: 2.0.4 - is: 3.3.2 - nopt@3.0.6: dependencies: abbrev: 1.1.1 @@ -35147,29 +32979,10 @@ snapshots: semver: 5.7.2 validate-npm-package-license: 3.0.4 - normalize-package-data@3.0.3: - dependencies: - hosted-git-info: 4.1.0 - is-core-module: 2.16.2 - semver: 7.8.5 - validate-npm-package-license: 3.0.4 - - normalize-path@2.1.1: - dependencies: - remove-trailing-separator: 1.1.0 - normalize-path@3.0.0: {} normalize-range@0.1.2: {} - now-and-later@2.0.1: - dependencies: - once: 1.4.0 - - now-and-later@3.0.0: - dependencies: - once: 1.4.0 - npm-bundled@5.0.0: dependencies: npm-normalize-package-bin: 5.0.0 @@ -35243,8 +33056,6 @@ snapshots: nullthrows@1.1.1: {} - number-is-nan@1.0.1: {} - nwsapi@2.2.24: {} nx@23.0.1(@swc/core@1.15.30(@swc/helpers@0.5.21)): @@ -35384,8 +33195,6 @@ snapshots: call-bind: 1.0.9 define-properties: 1.2.1 - object-keys@0.4.0: {} - object-keys@1.1.1: {} object.assign@4.1.7: @@ -35397,13 +33206,6 @@ snapshots: has-symbols: 1.1.0 object-keys: 1.1.1 - object.defaults@1.1.0: - dependencies: - array-each: 1.0.1 - array-slice: 1.1.0 - for-own: 1.0.0 - isobject: 3.0.1 - object.entries@1.1.9: dependencies: call-bind: 1.0.9 @@ -35424,20 +33226,6 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.24.2 - object.map@1.0.1: - dependencies: - for-own: 1.0.0 - make-iterator: 1.0.1 - - object.pick@1.3.0: - dependencies: - isobject: 3.0.1 - - object.reduce@1.0.1: - dependencies: - for-own: 1.0.0 - make-iterator: 1.0.1 - object.values@1.2.1: dependencies: call-bind: 1.0.9 @@ -35585,20 +33373,12 @@ snapshots: ordered-binary@1.6.1: {} - ordered-read-streams@1.0.1: - dependencies: - readable-stream: 2.3.8 - os-browserify@0.3.0: {} os-family@1.1.0: {} os-homedir@1.0.2: {} - os-locale@1.4.0: - dependencies: - lcid: 1.0.0 - os-tmpdir@1.0.2: {} own-keys@1.0.1: @@ -35647,7 +33427,7 @@ snapshots: package-json-from-dist@1.0.1: {} - pacote@21.0.4(supports-color@7.2.0): + pacote@21.0.4: dependencies: '@npmcli/git': 7.0.2 '@npmcli/installed-package-contents': 4.0.0 @@ -35663,7 +33443,7 @@ snapshots: npm-registry-fetch: 19.1.1 proc-log: 6.1.0 promise-retry: 2.0.1 - sigstore: 4.1.1(supports-color@7.2.0) + sigstore: 4.1.1 ssri: 13.0.1 tar: 7.5.21 transitivePeerDependencies: @@ -35685,7 +33465,7 @@ snapshots: npm-pick-manifest: 11.0.3 npm-registry-fetch: 19.1.1 proc-log: 6.1.0 - sigstore: 4.1.1(supports-color@7.2.0) + sigstore: 4.1.1 ssri: 13.0.1 tar: 7.5.21 transitivePeerDependencies: @@ -35743,16 +33523,6 @@ snapshots: dependencies: color-convert: 0.5.3 - parse-filepath@1.0.2: - dependencies: - is-absolute: 1.0.0 - map-cache: 0.2.2 - path-root: 0.1.1 - - parse-json@2.2.0: - dependencies: - error-ex: 1.3.4 - parse-json@5.2.0: dependencies: '@babel/code-frame': 7.29.7 @@ -35762,8 +33532,6 @@ snapshots: parse-node-version@1.0.1: {} - parse-passwd@1.0.0: {} - parse5-html-rewriting-stream@8.0.0: dependencies: entities: 6.0.1 @@ -35814,12 +33582,6 @@ snapshots: path-browserify@1.0.1: {} - path-dirname@1.0.2: {} - - path-exists@2.1.0: - dependencies: - pinkie-promise: 2.0.1 - path-exists@3.0.0: {} path-exists@4.0.0: {} @@ -35836,12 +33598,6 @@ snapshots: path-platform@0.11.15: {} - path-root-regex@0.1.2: {} - - path-root@0.1.1: - dependencies: - path-root-regex: 0.1.2 - path-scurry@1.11.1: dependencies: lru-cache: 10.4.3 @@ -35856,12 +33612,6 @@ snapshots: path-to-regexp@8.4.2: {} - path-type@1.1.0: - dependencies: - graceful-fs: 4.2.11 - pify: 2.3.0 - pinkie-promise: 2.0.1 - path-type@4.0.0: {} pathval@1.1.1: {} @@ -35949,14 +33699,6 @@ snapshots: dependencies: queue-lit: 1.5.2 - plugin-error@0.1.2: - dependencies: - ansi-cyan: 0.1.1 - ansi-red: 0.1.1 - arr-diff: 1.1.0 - arr-union: 2.1.0 - extend-shallow: 1.1.4 - plugin-error@1.0.1: dependencies: ansi-colors: 1.1.0 @@ -35964,10 +33706,6 @@ snapshots: arr-union: 3.1.0 extend-shallow: 3.0.2 - plugin-error@2.0.1: - dependencies: - ansi-colors: 1.1.0 - pluralize@8.0.0: {} pngjs@3.4.0: {} @@ -36199,22 +33937,11 @@ snapshots: randombytes: 2.1.0 safe-buffer: 5.2.1 - pump@2.0.1: - dependencies: - end-of-stream: 1.4.5 - once: 1.4.0 - pump@3.0.4: dependencies: end-of-stream: 1.4.5 once: 1.4.0 - pumpify@1.5.1: - dependencies: - duplexify: 3.7.1 - inherits: 2.0.4 - pump: 2.0.1 - punycode@1.4.1: {} punycode@2.3.1: {} @@ -36282,8 +34009,6 @@ snapshots: queue-microtask@1.2.3: {} - quick-lru@5.1.1: {} - quill-delta@5.1.0: dependencies: fast-diff: 1.3.0 @@ -36421,23 +34146,6 @@ snapshots: dependencies: readable-stream: 2.3.8 - read-pkg-up@1.0.1: - dependencies: - find-up: 1.1.2 - read-pkg: 1.1.0 - - read-pkg-up@8.0.0: - dependencies: - find-up: 5.0.0 - read-pkg: 6.0.0 - type-fest: 1.4.0 - - read-pkg@1.1.0: - dependencies: - load-json-file: 1.1.0 - normalize-package-data: 2.5.0 - path-type: 1.1.0 - read-pkg@5.2.0: dependencies: '@types/normalize-package-data': 2.4.4 @@ -36445,25 +34153,6 @@ snapshots: parse-json: 5.2.0 type-fest: 0.6.0 - read-pkg@6.0.0: - dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 3.0.3 - parse-json: 5.2.0 - type-fest: 1.4.0 - - read-vinyl-file-stream@2.0.3: - dependencies: - node-stream: 1.7.0 - through2: 2.0.5 - - 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@2.3.8: dependencies: core-util-is: 1.0.3 @@ -36492,12 +34181,6 @@ snapshots: dependencies: minimatch: 5.1.9 - readdirp@2.2.1: - dependencies: - graceful-fs: 4.2.11 - micromatch: 4.0.8 - readable-stream: 2.3.8 - readdirp@3.6.0: dependencies: picomatch: 2.3.2 @@ -36531,11 +34214,6 @@ snapshots: indent-string: 4.0.0 strip-indent: 3.0.0 - redent@4.0.0: - dependencies: - indent-string: 5.0.0 - strip-indent: 4.1.1 - reflect-metadata@0.1.13: {} reflect-metadata@0.2.2: {} @@ -36648,17 +34326,6 @@ snapshots: mdast-util-to-markdown: 1.5.0 unified: 10.1.2 - remove-bom-buffer@3.0.0: - dependencies: - is-buffer: 1.1.6 - is-utf8: 0.2.1 - - remove-bom-stream@1.2.0: - dependencies: - remove-bom-buffer: 3.0.0 - safe-buffer: 5.2.1 - through2: 2.0.5 - remove-trailing-separator@1.1.0: {} renderkid@3.0.0: @@ -36677,30 +34344,12 @@ snapshots: dependencies: is-finite: 1.1.0 - replace-ext@0.0.1: {} - replace-ext@1.0.1: {} - replace-ext@2.0.0: {} - - replace-homedir@1.0.0: - dependencies: - homedir-polyfill: 1.0.3 - is-absolute: 1.0.0 - remove-trailing-separator: 1.1.0 - - replacestream@4.0.3: - dependencies: - escape-string-regexp: 1.0.5 - object-assign: 4.1.1 - readable-stream: 2.3.8 - require-directory@2.1.1: {} require-from-string@2.0.2: {} - require-main-filename@1.0.1: {} - requireindex@1.2.0: {} requirejs-config-file@4.0.0: @@ -36724,25 +34373,12 @@ snapshots: resolve-dependency-path@3.0.2: {} - resolve-dir@1.0.1: - dependencies: - expand-tilde: 2.0.2 - global-modules: 1.0.0 - resolve-from@2.0.0: {} resolve-from@4.0.0: {} resolve-from@5.0.0: {} - resolve-options@1.1.0: - dependencies: - value-or-function: 3.0.0 - - resolve-options@2.0.0: - dependencies: - value-or-function: 4.0.0 - resolve-pkg-maps@1.0.0: {} resolve-url-loader@5.0.0: @@ -36757,7 +34393,7 @@ snapshots: resolve@1.22.10: dependencies: - is-core-module: 2.16.1 + is-core-module: 2.16.2 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -36771,7 +34407,7 @@ snapshots: resolve@2.0.0-next.6: dependencies: es-errors: 1.3.0 - is-core-module: 2.16.1 + is-core-module: 2.16.2 node-exports-info: 1.6.0 object-keys: 1.1.1 path-parse: 1.0.7 @@ -36920,7 +34556,7 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.60.2 fsevents: 2.3.3 - router@2.2.0(supports-color@7.2.0): + router@2.2.0: dependencies: debug: 4.4.3(supports-color@7.2.0) depd: 2.0.0 @@ -37099,22 +34735,13 @@ snapshots: dependencies: commander: 10.0.1 - sass@1.102.0: - dependencies: - chokidar: 5.0.0 - immutable: 5.1.9 - source-map-js: 1.2.1 - optionalDependencies: - '@parcel/watcher': 2.6.0 - optional: true - sass@1.90.0: dependencies: chokidar: 4.0.3 immutable: 5.1.9 source-map-js: 1.2.1 optionalDependencies: - '@parcel/watcher': 2.5.6 + '@parcel/watcher': 2.6.0 sass@1.93.3: dependencies: @@ -37185,10 +34812,6 @@ snapshots: '@peculiar/x509': 1.14.3 pkijs: 3.4.0 - semver-greatest-satisfied-range@1.1.0: - dependencies: - sver-compat: 1.5.0 - semver@5.7.2: {} semver@6.3.1: {} @@ -37223,7 +34846,7 @@ snapshots: transitivePeerDependencies: - supports-color - send@1.2.1(supports-color@7.2.0): + send@1.2.1: dependencies: debug: 4.4.3(supports-color@7.2.0) encodeurl: 2.0.0 @@ -37267,12 +34890,10 @@ snapshots: encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 1.2.1(supports-color@7.2.0) + send: 1.2.1 transitivePeerDependencies: - supports-color - set-blocking@2.0.0: {} - set-cookie-parser@2.7.2: {} set-function-length@1.2.2: @@ -37334,7 +34955,8 @@ snapshots: interpret: 1.4.0 rechoir: 0.6.2 - shellwords@0.1.1: {} + shellwords@0.1.1: + optional: true side-channel-list@1.0.1: dependencies: @@ -37380,13 +35002,13 @@ snapshots: dependencies: jquery: 4.0.0 - sigstore@4.1.1(supports-color@7.2.0): + sigstore@4.1.1: dependencies: '@sigstore/bundle': 4.0.0 '@sigstore/core': 3.2.1 '@sigstore/protobuf-specs': 0.5.1 '@sigstore/sign': 4.1.1 - '@sigstore/tuf': 4.0.2(supports-color@7.2.0) + '@sigstore/tuf': 4.0.2 '@sigstore/verify': 3.1.1 transitivePeerDependencies: - supports-color @@ -37541,8 +35163,6 @@ snapshots: space-separated-tokens@2.0.2: {} - sparkles@1.0.1: {} - spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 @@ -37583,10 +35203,6 @@ snapshots: transitivePeerDependencies: - supports-color - split2@2.2.0: - dependencies: - through2: 2.0.5 - ssri@13.0.1: dependencies: minipass: 7.1.3 @@ -37647,20 +35263,6 @@ snapshots: duplexer2: 0.1.4 readable-stream: 2.3.8 - stream-combiner@0.2.2: - dependencies: - duplexer: 0.1.2 - through: 2.3.8 - - stream-composer@1.0.2: - dependencies: - streamx: 2.25.0 - transitivePeerDependencies: - - bare-abort-controller - - react-native-b4a - - stream-exhaust@1.0.2: {} - stream-http@3.2.0: dependencies: builtin-status-codes: 3.0.0 @@ -37675,17 +35277,11 @@ snapshots: - supports-color optional: true - stream-shift@1.0.3: {} - stream-splicer@2.0.1: dependencies: inherits: 2.0.4 readable-stream: 2.3.8 - streamfilter@3.0.0: - dependencies: - readable-stream: 3.6.2 - streamroller@3.1.5: dependencies: date-format: 4.0.14 @@ -37710,12 +35306,6 @@ snapshots: char-regex: 1.0.2 strip-ansi: 6.0.1 - string-width@1.0.2: - dependencies: - code-point-at: 1.1.0 - is-fullwidth-code-point: 1.0.0 - strip-ansi: 3.0.1 - string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -37791,8 +35381,6 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 - string_decoder@0.10.31: {} - string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 @@ -37824,11 +35412,6 @@ snapshots: dependencies: ansi-regex: 6.2.2 - strip-bom-stream@2.0.0: - dependencies: - first-chunk-stream: 2.0.0 - strip-bom: 2.0.0 - strip-bom@2.0.0: dependencies: is-utf8: 0.2.1 @@ -37884,12 +35467,12 @@ snapshots: postcss-html: 1.8.1 stylelint: 16.22.0(typescript@6.0.3) - stylelint-config-recommended-scss@14.1.0(postcss@8.5.23)(stylelint@16.22.0(typescript@6.0.3)): + stylelint-config-recommended-scss@14.1.0(postcss@8.5.23)(stylelint@16.22.0(typescript@5.9.3)): dependencies: postcss-scss: 4.0.9(postcss@8.5.23) - stylelint: 16.22.0(typescript@6.0.3) - stylelint-config-recommended: 14.0.1(stylelint@16.22.0(typescript@6.0.3)) - stylelint-scss: 6.10.0(stylelint@16.22.0(typescript@6.0.3)) + stylelint: 16.22.0(typescript@5.9.3) + stylelint-config-recommended: 14.0.1(stylelint@16.22.0(typescript@5.9.3)) + stylelint-scss: 6.10.0(stylelint@16.22.0(typescript@5.9.3)) optionalDependencies: postcss: 8.5.23 @@ -37901,60 +35484,60 @@ snapshots: stylelint-config-html: 1.1.0(postcss-html@1.8.1)(stylelint@16.22.0(typescript@6.0.3)) stylelint-config-recommended: 16.0.0(stylelint@16.22.0(typescript@6.0.3)) - stylelint-config-recommended@14.0.1(stylelint@16.22.0(typescript@6.0.3)): + stylelint-config-recommended@14.0.1(stylelint@16.22.0(typescript@5.9.3)): dependencies: - stylelint: 16.22.0(typescript@6.0.3) + stylelint: 16.22.0(typescript@5.9.3) - stylelint-config-recommended@16.0.0(stylelint@15.11.0(typescript@4.9.5)): + stylelint-config-recommended@16.0.0(stylelint@16.22.0(typescript@4.9.5)): dependencies: - stylelint: 15.11.0(typescript@4.9.5) + stylelint: 16.22.0(typescript@4.9.5) - stylelint-config-recommended@16.0.0(stylelint@15.11.0(typescript@5.8.3)): + stylelint-config-recommended@16.0.0(stylelint@16.22.0(typescript@5.8.3)): dependencies: - stylelint: 15.11.0(typescript@5.8.3) + stylelint: 16.22.0(typescript@5.8.3) - stylelint-config-recommended@16.0.0(stylelint@15.11.0(typescript@6.0.3)): + stylelint-config-recommended@16.0.0(stylelint@16.22.0(typescript@5.9.3)): dependencies: - stylelint: 15.11.0(typescript@6.0.3) + stylelint: 16.22.0(typescript@5.9.3) stylelint-config-recommended@16.0.0(stylelint@16.22.0(typescript@6.0.3)): dependencies: stylelint: 16.22.0(typescript@6.0.3) - stylelint-config-standard-scss@14.0.0(postcss@8.5.23)(stylelint@16.22.0(typescript@6.0.3)): + stylelint-config-standard-scss@14.0.0(postcss@8.5.23)(stylelint@16.22.0(typescript@5.9.3)): dependencies: - stylelint: 16.22.0(typescript@6.0.3) - stylelint-config-recommended-scss: 14.1.0(postcss@8.5.23)(stylelint@16.22.0(typescript@6.0.3)) - stylelint-config-standard: 36.0.1(stylelint@16.22.0(typescript@6.0.3)) + stylelint: 16.22.0(typescript@5.9.3) + stylelint-config-recommended-scss: 14.1.0(postcss@8.5.23)(stylelint@16.22.0(typescript@5.9.3)) + stylelint-config-standard: 36.0.1(stylelint@16.22.0(typescript@5.9.3)) optionalDependencies: postcss: 8.5.23 - stylelint-config-standard@36.0.1(stylelint@16.22.0(typescript@6.0.3)): + stylelint-config-standard@36.0.1(stylelint@16.22.0(typescript@5.9.3)): dependencies: - stylelint: 16.22.0(typescript@6.0.3) - stylelint-config-recommended: 14.0.1(stylelint@16.22.0(typescript@6.0.3)) + stylelint: 16.22.0(typescript@5.9.3) + stylelint-config-recommended: 14.0.1(stylelint@16.22.0(typescript@5.9.3)) - stylelint-config-standard@38.0.0(stylelint@15.11.0(typescript@4.9.5)): + stylelint-config-standard@38.0.0(stylelint@16.22.0(typescript@4.9.5)): dependencies: - stylelint: 15.11.0(typescript@4.9.5) - stylelint-config-recommended: 16.0.0(stylelint@15.11.0(typescript@4.9.5)) + stylelint: 16.22.0(typescript@4.9.5) + stylelint-config-recommended: 16.0.0(stylelint@16.22.0(typescript@4.9.5)) - stylelint-config-standard@38.0.0(stylelint@15.11.0(typescript@5.8.3)): + stylelint-config-standard@38.0.0(stylelint@16.22.0(typescript@5.8.3)): dependencies: - stylelint: 15.11.0(typescript@5.8.3) - stylelint-config-recommended: 16.0.0(stylelint@15.11.0(typescript@5.8.3)) + stylelint: 16.22.0(typescript@5.8.3) + stylelint-config-recommended: 16.0.0(stylelint@16.22.0(typescript@5.8.3)) - stylelint-config-standard@38.0.0(stylelint@15.11.0(typescript@6.0.3)): + stylelint-config-standard@38.0.0(stylelint@16.22.0(typescript@5.9.3)): dependencies: - stylelint: 15.11.0(typescript@6.0.3) - stylelint-config-recommended: 16.0.0(stylelint@15.11.0(typescript@6.0.3)) + stylelint: 16.22.0(typescript@5.9.3) + stylelint-config-recommended: 16.0.0(stylelint@16.22.0(typescript@5.9.3)) stylelint-config-standard@38.0.0(stylelint@16.22.0(typescript@6.0.3)): dependencies: stylelint: 16.22.0(typescript@6.0.3) stylelint-config-recommended: 16.0.0(stylelint@16.22.0(typescript@6.0.3)) - stylelint-scss@6.10.0(stylelint@16.22.0(typescript@6.0.3)): + stylelint-scss@6.10.0(stylelint@16.22.0(typescript@5.9.3)): dependencies: css-tree: 3.2.1 is-plain-object: 5.0.0 @@ -37964,92 +35547,44 @@ snapshots: postcss-resolve-nested-selector: 0.1.6 postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 - stylelint: 16.22.0(typescript@6.0.3) - - stylelint@15.11.0(typescript@4.9.5): - dependencies: - '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) - '@csstools/css-tokenizer': 2.4.1 - '@csstools/media-query-list-parser': 2.1.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) - '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.2) - balanced-match: 2.0.0 - colord: 2.9.3 - cosmiconfig: 8.3.6(typescript@4.9.5) - css-functions-list: 3.3.3 - css-tree: 2.3.1 - debug: 4.4.3(supports-color@7.2.0) - fast-glob: 3.3.3 - fastest-levenshtein: 1.0.16 - file-entry-cache: 7.0.2 - global-modules: 2.0.0 - globby: 11.1.0 - globjoin: 0.1.4 - html-tags: 3.3.1 - ignore: 5.3.2 - import-lazy: 4.0.0 - imurmurhash: 0.1.4 - is-plain-object: 5.0.0 - known-css-properties: 0.29.0 - mathml-tag-names: 2.1.3 - meow: 10.1.5 - micromatch: 4.0.8 - normalize-path: 3.0.0 - picocolors: 1.1.1 - postcss: 8.5.23 - postcss-resolve-nested-selector: 0.1.6 - postcss-safe-parser: 6.0.0(postcss@8.5.23) - postcss-selector-parser: 6.1.2 - postcss-value-parser: 4.2.0 - resolve-from: 5.0.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - style-search: 0.1.0 - supports-hyperlinks: 3.2.0 - svg-tags: 1.0.0 - table: 6.9.0 - write-file-atomic: 5.0.1 - transitivePeerDependencies: - - supports-color - - typescript + stylelint: 16.22.0(typescript@5.9.3) - stylelint@15.11.0(typescript@5.8.3): + stylelint@16.22.0(typescript@4.9.5): dependencies: - '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) - '@csstools/css-tokenizer': 2.4.1 - '@csstools/media-query-list-parser': 2.1.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) - '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.2) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.1) + '@dual-bundle/import-meta-resolve': 4.2.1 balanced-match: 2.0.0 colord: 2.9.3 - cosmiconfig: 8.3.6(typescript@5.8.3) + cosmiconfig: 9.0.1(typescript@4.9.5) css-functions-list: 3.3.3 - css-tree: 2.3.1 + css-tree: 3.2.1 debug: 4.4.3(supports-color@7.2.0) fast-glob: 3.3.3 fastest-levenshtein: 1.0.16 - file-entry-cache: 7.0.2 + file-entry-cache: 10.1.4 global-modules: 2.0.0 globby: 11.1.0 globjoin: 0.1.4 html-tags: 3.3.1 - ignore: 5.3.2 - import-lazy: 4.0.0 + ignore: 7.0.5 imurmurhash: 0.1.4 is-plain-object: 5.0.0 - known-css-properties: 0.29.0 + known-css-properties: 0.37.0 mathml-tag-names: 2.1.3 - meow: 10.1.5 + meow: 13.2.0 micromatch: 4.0.8 normalize-path: 3.0.0 picocolors: 1.1.1 postcss: 8.5.23 postcss-resolve-nested-selector: 0.1.6 - postcss-safe-parser: 6.0.0(postcss@8.5.23) - postcss-selector-parser: 6.1.2 + postcss-safe-parser: 7.0.1(postcss@8.5.23) + postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 resolve-from: 5.0.0 string-width: 4.2.3 - strip-ansi: 6.0.1 - style-search: 0.1.0 supports-hyperlinks: 3.2.0 svg-tags: 1.0.0 table: 6.9.0 @@ -38058,44 +35593,42 @@ snapshots: - supports-color - typescript - stylelint@15.11.0(typescript@6.0.3): + stylelint@16.22.0(typescript@5.8.3): dependencies: - '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) - '@csstools/css-tokenizer': 2.4.1 - '@csstools/media-query-list-parser': 2.1.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) - '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.2) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.1) + '@dual-bundle/import-meta-resolve': 4.2.1 balanced-match: 2.0.0 colord: 2.9.3 - cosmiconfig: 8.3.6(typescript@6.0.3) + cosmiconfig: 9.0.1(typescript@5.8.3) css-functions-list: 3.3.3 - css-tree: 2.3.1 + css-tree: 3.2.1 debug: 4.4.3(supports-color@7.2.0) fast-glob: 3.3.3 fastest-levenshtein: 1.0.16 - file-entry-cache: 7.0.2 + file-entry-cache: 10.1.4 global-modules: 2.0.0 globby: 11.1.0 globjoin: 0.1.4 html-tags: 3.3.1 - ignore: 5.3.2 - import-lazy: 4.0.0 + ignore: 7.0.5 imurmurhash: 0.1.4 is-plain-object: 5.0.0 - known-css-properties: 0.29.0 + known-css-properties: 0.37.0 mathml-tag-names: 2.1.3 - meow: 10.1.5 + meow: 13.2.0 micromatch: 4.0.8 normalize-path: 3.0.0 picocolors: 1.1.1 postcss: 8.5.23 postcss-resolve-nested-selector: 0.1.6 - postcss-safe-parser: 6.0.0(postcss@8.5.23) - postcss-selector-parser: 6.1.2 + postcss-safe-parser: 7.0.1(postcss@8.5.23) + postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 resolve-from: 5.0.0 string-width: 4.2.3 - strip-ansi: 6.0.1 - style-search: 0.1.0 supports-hyperlinks: 3.2.0 svg-tags: 1.0.0 table: 6.9.0 @@ -38104,7 +35637,7 @@ snapshots: - supports-color - typescript - stylelint@16.22.0(supports-color@7.2.0)(typescript@5.9.3): + stylelint@16.22.0(typescript@5.9.3): dependencies: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 @@ -38221,11 +35754,6 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - sver-compat@1.5.0: - dependencies: - es6-iterator: 2.0.3 - es6-symbol: 3.1.4 - svg-pathdata@6.0.3: {} svg-tags@1.0.0: {} @@ -38350,13 +35878,6 @@ snapshots: term-size@2.2.1: {} - ternary-stream@3.0.0: - dependencies: - duplexify: 4.1.3 - fork-stream: 0.0.4 - merge-stream: 2.0.0 - through2: 3.0.2 - terser-webpack-plugin@5.3.17(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)(webpack@5.105.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)): dependencies: '@jridgewell/trace-mapping': 0.3.31 @@ -38456,7 +35977,7 @@ snapshots: glob: 7.2.3 minimatch: 3.1.5 - testcafe-browser-tools@2.0.26(supports-color@7.2.0): + testcafe-browser-tools@2.0.26: dependencies: array-find: 1.0.0 debug: 4.4.3(supports-color@7.2.0) @@ -38544,7 +36065,7 @@ snapshots: testcafe-selector-generator@0.1.0: {} - testcafe@3.7.5(supports-color@7.2.0): + testcafe@3.7.5: dependencies: '@babel/core': 7.29.7 '@babel/plugin-proposal-decorators': 7.29.7(@babel/core@7.29.7) @@ -38558,11 +36079,11 @@ snapshots: '@babel/plugin-transform-for-of': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-object-rest-spread': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-private-methods': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-runtime': 7.23.3(@babel/core@7.29.7)(supports-color@7.2.0) + '@babel/plugin-transform-runtime': 7.23.3(@babel/core@7.29.7) '@babel/preset-env': 7.29.7(@babel/core@7.29.7) '@babel/preset-flow': 7.27.1(@babel/core@7.29.7) '@babel/preset-react': 7.29.7(@babel/core@7.29.7) - '@babel/runtime': 7.29.2 + '@babel/runtime': 7.29.7 '@devexpress/bin-v8-flags-filter': 1.3.0 '@devexpress/callsite-record': 4.1.7 '@types/node': 20.14.5 @@ -38609,7 +36130,7 @@ snapshots: moment: 2.30.1 moment-duration-format-commonjs: 1.0.1 mustache: 2.3.2 - nanoid: 3.3.12 + nanoid: 3.3.16 os-family: 1.1.0 parse5: 1.5.1 pify: 2.3.0 @@ -38623,11 +36144,11 @@ snapshots: resolve-cwd: 1.0.0 resolve-from: 4.0.0 sanitize-filename: 1.6.4 - semver: 7.8.4 + semver: 7.8.5 set-cookie-parser: 2.7.2 source-map-support: 0.5.21 strip-bom: 2.0.0 - testcafe-browser-tools: 2.0.26(supports-color@7.2.0) + testcafe-browser-tools: 2.0.26 testcafe-hammerhead: 31.7.8(patch_hash=8655c07786177d3b611a05abf6b0ea87d32796eb2601f92a800ef041095f264c) testcafe-legacy-api: 5.1.8 testcafe-reporter-json: 2.2.0 @@ -38660,45 +36181,15 @@ snapshots: utrie: 1.0.2 optional: true - textextensions@1.0.2: {} - thingies@2.6.0(tslib@2.8.1): dependencies: tslib: 2.8.1 - through2-filter@3.0.0: - dependencies: - through2: 2.0.5 - xtend: 4.0.2 - - through2@0.4.2: - dependencies: - readable-stream: 1.0.34 - xtend: 2.1.2 - - through2@2.0.3: - dependencies: - readable-stream: 2.3.8 - xtend: 4.0.2 - through2@2.0.5: dependencies: readable-stream: 2.3.8 xtend: 4.0.2 - through2@3.0.1: - dependencies: - readable-stream: 3.6.2 - - through2@3.0.2: - dependencies: - inherits: 2.0.4 - readable-stream: 3.6.2 - - through2@4.0.2: - dependencies: - readable-stream: 3.6.2 - through@2.3.8: {} thunky@1.1.0: {} @@ -38732,8 +36223,8 @@ snapshots: tinyglobby@0.2.17: dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 + fdir: 6.5.0(picomatch@4.0.5) + picomatch: 4.0.5 tinyrainbow@2.0.0: {} @@ -38743,11 +36234,6 @@ snapshots: tmpl@1.0.5: {} - to-absolute-glob@2.0.2: - dependencies: - is-absolute: 1.0.0 - is-negated-glob: 1.0.0 - to-buffer@1.2.2: dependencies: isarray: 2.0.5 @@ -38760,17 +36246,6 @@ snapshots: dependencies: is-number: 7.0.0 - to-through@2.0.0: - dependencies: - through2: 2.0.5 - - to-through@3.0.0: - dependencies: - streamx: 2.25.0 - transitivePeerDependencies: - - bare-abort-controller - - react-native-b4a - toidentifier@1.0.1: {} tough-cookie@4.1.3: @@ -38809,8 +36284,6 @@ snapshots: trim-lines@3.0.1: {} - trim-newlines@4.1.1: {} - trim-right@1.0.1: {} trim-trailing-lines@2.1.0: {} @@ -38885,11 +36358,11 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.29.7) - ts-jest@29.1.2(@babel/core@7.29.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(jest@30.2.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@6.0.3)))(typescript@5.9.3): + ts-jest@29.1.2(@babel/core@7.29.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(jest@30.2.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@5.9.3)))(typescript@5.9.3): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 30.2.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@6.0.3)) + jest: 30.2.0(@types/node@26.1.1)(babel-plugin-macros@3.1.0)(node-notifier@9.0.1)(ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@5.9.3)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -39142,7 +36615,7 @@ snapshots: '@swc/core': 1.15.30(@swc/helpers@0.5.21) optional: true - ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@6.0.3): + ts-node@10.9.2(@swc/core@1.15.30(@swc/helpers@0.5.21))(@types/node@26.1.1)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.12 @@ -39156,7 +36629,7 @@ snapshots: create-require: 1.1.1 diff: 4.0.4 make-error: 1.3.6 - typescript: 6.0.3 + typescript: 5.9.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: @@ -39214,7 +36687,7 @@ snapshots: tty-browserify@0.0.1: {} - tuf-js@4.1.0(supports-color@7.2.0): + tuf-js@4.1.0: dependencies: '@tufjs/models': 4.1.0 debug: 4.4.3(supports-color@7.2.0) @@ -39247,12 +36720,6 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 - type-is@2.0.1: - dependencies: - content-type: 1.0.5 - media-typer: 1.1.0 - mime-types: 3.0.2 - type-is@2.1.0: dependencies: content-type: 2.0.0 @@ -39319,8 +36786,6 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 - unc-path-regex@0.1.2: {} - undeclared-identifiers@1.1.3: dependencies: acorn-node: 1.8.2 @@ -39329,21 +36794,6 @@ snapshots: simple-concat: 1.0.1 xtend: 4.0.2 - undertaker-registry@1.0.1: {} - - undertaker@1.3.0: - dependencies: - arr-flatten: 1.1.0 - arr-map: 2.0.2 - bach: 1.2.0 - collection-map: 1.0.0 - es6-weak-map: 2.0.3 - fast-levenshtein: 1.1.4 - last-run: 1.1.1 - object.defaults: 1.1.0 - object.reduce: 1.0.1 - undertaker-registry: 1.0.1 - undici-types@5.26.5: {} undici-types@6.21.0: {} @@ -39379,11 +36829,6 @@ snapshots: dependencies: qs: 6.15.2 - unique-stream@2.4.0: - dependencies: - json-stable-stringify-without-jsonify: 1.0.1 - through2-filter: 3.0.0 - unist-util-find-after@4.0.1: dependencies: '@types/unist': 2.0.11 @@ -39476,8 +36921,6 @@ snapshots: graceful-fs: 4.2.11 node-int64: 0.4.0 - upath@1.2.0: {} - update-browserslist-db@1.2.3(browserslist@4.28.2): dependencies: browserslist: 4.28.2 @@ -39563,10 +37006,6 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 - v8flags@3.2.0: - dependencies: - homedir-polyfill: 1.0.3 - validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 @@ -39576,10 +37015,6 @@ snapshots: validate-npm-package-name@7.0.2: {} - value-or-function@3.0.0: {} - - value-or-function@4.0.0: {} - varint@6.0.0: {} vary@1.1.2: {} @@ -39611,99 +37046,6 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vinyl-contents@2.0.0: - dependencies: - bl: 5.1.0 - vinyl: 3.0.1 - transitivePeerDependencies: - - bare-abort-controller - - react-native-b4a - - vinyl-file@2.0.0: - dependencies: - graceful-fs: 4.2.11 - pify: 2.3.0 - pinkie-promise: 2.0.1 - strip-bom: 2.0.0 - strip-bom-stream: 2.0.0 - vinyl: 1.2.0 - - vinyl-fs@3.0.3: - dependencies: - fs-mkdirp-stream: 1.0.0 - glob-stream: 6.1.0 - graceful-fs: 4.2.11 - is-valid-glob: 1.0.0 - lazystream: 1.0.1 - lead: 1.0.0 - object.assign: 4.1.7 - pumpify: 1.5.1 - readable-stream: 2.3.8 - remove-bom-buffer: 3.0.0 - remove-bom-stream: 1.2.0 - resolve-options: 1.1.0 - through2: 2.0.5 - to-through: 2.0.0 - value-or-function: 3.0.0 - vinyl: 2.2.1 - vinyl-sourcemap: 1.1.0 - - vinyl-fs@4.0.2: - dependencies: - fs-mkdirp-stream: 2.0.1 - glob-stream: 8.0.3 - graceful-fs: 4.2.11 - iconv-lite: 0.6.3 - is-valid-glob: 1.0.0 - lead: 4.0.0 - normalize-path: 3.0.0 - resolve-options: 2.0.0 - stream-composer: 1.0.2 - streamx: 2.25.0 - to-through: 3.0.0 - value-or-function: 4.0.0 - vinyl: 3.0.1 - vinyl-sourcemap: 2.0.0 - transitivePeerDependencies: - - bare-abort-controller - - react-native-b4a - - vinyl-named@1.1.0: - dependencies: - through: 2.3.8 - - vinyl-sourcemap@1.1.0: - dependencies: - append-buffer: 1.0.2 - convert-source-map: 1.9.0 - graceful-fs: 4.2.11 - normalize-path: 2.1.1 - now-and-later: 2.0.1 - remove-bom-buffer: 3.0.0 - vinyl: 2.2.1 - - vinyl-sourcemap@2.0.0: - dependencies: - convert-source-map: 2.0.0 - graceful-fs: 4.2.11 - now-and-later: 3.0.0 - streamx: 2.25.0 - vinyl: 3.0.1 - vinyl-contents: 2.0.0 - transitivePeerDependencies: - - bare-abort-controller - - react-native-b4a - - vinyl-sourcemaps-apply@0.2.1: - dependencies: - source-map: 0.5.7 - - vinyl@1.2.0: - dependencies: - clone: 1.0.4 - clone-stats: 0.0.1 - replace-ext: 0.0.1 - vinyl@2.2.1: dependencies: clone: 2.1.2 @@ -39713,23 +37055,13 @@ snapshots: remove-trailing-separator: 1.1.0 replace-ext: 1.0.1 - vinyl@3.0.1: - dependencies: - clone: 2.1.2 - remove-trailing-separator: 1.1.0 - replace-ext: 2.0.0 - teex: 1.0.1 - transitivePeerDependencies: - - bare-abort-controller - - react-native-b4a - vite@7.3.5(@types/node@20.19.37)(jiti@2.6.1)(less@4.6.4)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.99.0)(terser@5.46.2)(yaml@2.9.0): dependencies: esbuild: 0.28.1 fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 postcss: 8.5.23 - rollup: 4.60.2 + rollup: 4.59.0 tinyglobby: 0.2.17 optionalDependencies: '@types/node': 20.19.37 @@ -39780,26 +37112,6 @@ snapshots: terser: 5.43.1 yaml: 2.9.0 - vite@7.3.6(@types/node@26.1.1)(jiti@2.6.1)(less@4.8.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.102.0)(terser@5.49.0)(yaml@2.9.0): - dependencies: - esbuild: 0.28.1 - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 - postcss: 8.5.23 - rollup: 4.59.0 - tinyglobby: 0.2.17 - optionalDependencies: - '@types/node': 26.1.1 - fsevents: 2.3.3 - jiti: 2.6.1 - less: 4.8.0 - lightningcss: 1.32.0 - sass: 1.102.0 - sass-embedded: 1.93.3 - terser: 5.49.0 - yaml: 2.9.0 - optional: true - vite@7.3.6(@types/node@26.1.1)(jiti@2.6.1)(less@4.8.0)(lightningcss@1.32.0)(sass-embedded@1.93.3)(sass@1.90.0)(terser@5.49.0)(yaml@2.9.0): dependencies: esbuild: 0.28.1 @@ -39862,19 +37174,6 @@ snapshots: vscode-uri@3.1.0: {} - vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0): - dependencies: - debug: 4.4.3(supports-color@7.2.0) - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - esquery: 1.7.0 - lodash: 4.18.1 - semver: 7.8.4 - transitivePeerDependencies: - - supports-color - vue-eslint-parser@10.0.0(eslint@9.39.4(jiti@2.6.1)): dependencies: debug: 4.4.3(supports-color@7.2.0) @@ -39884,14 +37183,14 @@ snapshots: espree: 10.4.0 esquery: 1.7.0 lodash: 4.18.1 - semver: 7.8.4 + semver: 7.8.5 transitivePeerDependencies: - supports-color - vue-eslint-parser@9.4.3(eslint@9.39.4(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0): + vue-eslint-parser@9.4.3(eslint@9.39.4(jiti@2.6.1))(supports-color@7.2.0): dependencies: debug: 4.4.3(supports-color@7.2.0) - eslint: 9.39.4(jiti@2.6.1)(supports-color@7.2.0) + eslint: 9.39.4(jiti@2.6.1) eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 @@ -40052,7 +37351,7 @@ snapshots: memfs: 4.57.2(tslib@2.8.1) mime-types: 2.1.35 on-finished: 2.4.1 - range-parser: 1.2.1 + range-parser: 1.3.0 schema-utils: 4.3.3 optionalDependencies: webpack: 5.105.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1) @@ -40289,30 +37588,30 @@ snapshots: webpack@5.105.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1): dependencies: '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/json-schema': 7.0.15 '@webassemblyjs/ast': 1.14.1 '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.17.0 acorn-import-phases: 1.0.4(acorn@8.17.0) - browserslist: 4.28.2 + browserslist: 4.28.7 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.20.1 - es-module-lexer: 2.0.0 + enhanced-resolve: 5.24.3 + es-module-lexer: 2.3.1 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.1 + loader-runner: 4.3.2 mime-types: 2.1.35 neo-async: 2.6.2 schema-utils: 4.3.3 - tapable: 2.3.2 + tapable: 2.3.3 terser-webpack-plugin: 5.3.17(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)(webpack@5.105.0(@swc/core@1.15.30(@swc/helpers@0.5.21))(esbuild@0.28.1)) - watchpack: 2.5.1 - webpack-sources: 3.3.4 + watchpack: 2.5.2 + webpack-sources: 3.5.1 transitivePeerDependencies: - '@swc/core' - esbuild @@ -40548,8 +37847,6 @@ snapshots: is-weakmap: 2.0.2 is-weakset: 2.0.4 - which-module@1.0.0: {} - which-promise@1.0.0: dependencies: pify: 2.3.0 @@ -40616,11 +37913,6 @@ snapshots: string-width: 8.2.0 strip-ansi: 7.2.0 - wrap-ansi@2.1.0: - dependencies: - string-width: 1.0.2 - strip-ansi: 3.0.1 - wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -40680,14 +37972,8 @@ snapshots: xmlchars@2.2.0: {} - xtend@2.1.2: - dependencies: - object-keys: 0.4.0 - xtend@4.0.2: {} - y18n@3.2.2: {} - y18n@5.0.8: {} yallist@3.1.1: {} @@ -40708,11 +37994,6 @@ snapshots: yargs-parser@22.0.0: {} - yargs-parser@5.0.1: - dependencies: - camelcase: 3.0.0 - object.assign: 4.1.7 - yargs@16.2.0: dependencies: cliui: 7.0.4 @@ -40752,22 +38033,6 @@ snapshots: y18n: 5.0.8 yargs-parser: 22.0.0 - yargs@7.1.2: - dependencies: - camelcase: 3.0.0 - cliui: 3.2.0 - decamelize: 1.2.0 - get-caller-file: 1.0.3 - os-locale: 1.4.0 - read-pkg-up: 1.0.1 - require-directory: 2.1.1 - require-main-filename: 1.0.1 - set-blocking: 2.0.0 - string-width: 1.0.2 - which-module: 1.0.0 - y18n: 3.2.2 - yargs-parser: 5.0.1 - yauzl@2.10.0: dependencies: buffer-crc32: 0.2.13 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 6d4ed3f57964..14ddea0a6680 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -82,7 +82,6 @@ catalog: eslint-plugin-vue: 10.4.0 vue-eslint-parser: 10.0.0 globals: 15.14.0 - gulp-eslint-new: 2.4.0 jquery: 4.0.0 stylelint: 16.22.0 testcafe: 3.7.5 diff --git a/tools/scripts/build-all.ts b/tools/scripts/build-all.ts deleted file mode 100644 index 12fbdfc08c80..000000000000 --- a/tools/scripts/build-all.ts +++ /dev/null @@ -1,93 +0,0 @@ -import sh from 'shelljs'; -import path from 'node:path'; -import { ARTIFACTS_DIR, INTERNAL_TOOLS_ARTIFACTS, ROOT_DIR, NPM_DIR } from './common/paths'; -import { version as devextremeNpmVersion } from '../../packages/devextreme/package.json'; - -const DEVEXTREME_NPM_DIR = path.join(ROOT_DIR, 'packages/devextreme/artifacts/npm'); - -const injectDescriptions = () => { - sh.pushd(ROOT_DIR); - - const DOCUMENTATION_TEMP_DIR = path.join(ROOT_DIR, '..', 'doc_tmp'); - sh.exec(`git clone -b ${DEFAULT_BRANCH_NAME} --depth 1 --config core.longpaths=true https://github.com/DevExpress/devextreme-documentation.git ${DOCUMENTATION_TEMP_DIR}`); - - sh.pushd(DOCUMENTATION_TEMP_DIR); - sh.exec('pnpm i --frozen-lockfile'); - sh.exec(`pnpm run update-topics --artifacts ${INTERNAL_TOOLS_ARTIFACTS}`); - sh.popd(); - - sh.rm('-rf', DOCUMENTATION_TEMP_DIR); - - sh.exec('pnpm run devextreme:inject-descriptions'); - sh.popd(); -} - -sh.set('-e'); - -sh.mkdir('-p', NPM_DIR); - -const packAndCopy = (outputDir: string) => { - sh.exec('pnpm pack', { silent: true }); - sh.cp('*.tgz', outputDir); -} - -const DEFAULT_BRANCH_NAME = 'main'; - -sh.cd(ROOT_DIR); - -// aspnet metadata will be used in Build custom-tasks to inject aspnet descriptions -sh.exec(`pnpm exec nx run devextreme-metadata:make-aspnet-metadata`); - -injectDescriptions(); - -sh.exec('pnpm exec nx build devextreme-scss'); -sh.exec('pnpm exec nx build-dist devextreme', { - env: { - ...sh.env, - BUILD_INTERNAL_PACKAGE: 'false' - } -}); - -sh.exec('pnpm exec nx build devextreme-themebuilder'); - -// Copy artifacts for DXBuild (Installation) -sh.pushd(path.join(ROOT_DIR, 'packages/devextreme/artifacts')); - sh.cp('-r', ['ts', 'js', 'css'], ARTIFACTS_DIR); -sh.popd(); - -sh.exec('pnpm exec nx copy:bootstrap workflows'); -sh.exec('pnpm run all:pack-and-copy'); - -sh.exec('pnpm exec nx pack devextreme-react', { silent: true }); -sh.exec('pnpm exec nx pack devextreme-vue', { silent: true }); -sh.exec('pnpm exec nx pack-with-descriptions devextreme-angular', { silent: true }); - -sh.pushd(path.join(DEVEXTREME_NPM_DIR, 'devextreme')); - packAndCopy(NPM_DIR); -sh.popd(); - -sh.pushd(path.join(DEVEXTREME_NPM_DIR, 'devextreme-dist')); - packAndCopy(NPM_DIR); -sh.popd(); - -sh.pushd(path.join(ROOT_DIR, 'packages', 'devextreme-themebuilder', 'dist')); - sh.exec(`pnpm pkg set version="${devextremeNpmVersion}"`); - packAndCopy(NPM_DIR); -sh.popd(); - -sh.cp(path.join(ROOT_DIR, 'packages', 'devextreme-angular', 'npm', 'dist', '*.tgz'), NPM_DIR); -sh.cp(path.join(ROOT_DIR, 'packages', 'devextreme-react', 'npm', '*.tgz'), NPM_DIR); -sh.cp(path.join(ROOT_DIR, 'packages', 'devextreme-vue', 'npm', '*.tgz'), NPM_DIR); - -if (sh.env.BUILD_INTERNAL_PACKAGE === 'true') { - sh.exec('pnpm exec nx build-dist devextreme'); - - sh.pushd(path.join(DEVEXTREME_NPM_DIR, 'devextreme-internal')); - sh.exec(`pnpm pkg set version="${devextremeNpmVersion}"`); - packAndCopy(NPM_DIR); - sh.popd(); - - sh.pushd(path.join(DEVEXTREME_NPM_DIR, 'devextreme-dist-internal')); - packAndCopy(NPM_DIR); - sh.popd(); -} diff --git a/tools/scripts/common/index.ts b/tools/scripts/common/index.ts deleted file mode 100644 index 68a57afaaa20..000000000000 --- a/tools/scripts/common/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export function assert(condition: boolean, message: string): void { - if (!condition) { - console.error(message); - process.exit(1); - } -} diff --git a/tools/scripts/common/nx.ts b/tools/scripts/common/nx.ts deleted file mode 100644 index 609d668f5656..000000000000 --- a/tools/scripts/common/nx.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { - readCachedProjectGraph, - ProjectGraphProjectNode, -} from '@nx/devkit'; -import { assert } from './index'; - -export function getProject(name: string): ProjectGraphProjectNode { - const graph = readCachedProjectGraph(); - const project = graph.nodes[name]; - - assert( - !!project, - `Could not find project "${name}" in the workspace. Is the project.json configured correctly?` - ); - - return project; -} diff --git a/tools/scripts/inject-descriptions.ts b/tools/scripts/inject-descriptions.ts new file mode 100644 index 000000000000..4609d3be696c --- /dev/null +++ b/tools/scripts/inject-descriptions.ts @@ -0,0 +1,25 @@ +import sh from 'shelljs'; +import path from 'node:path'; +import { INTERNAL_TOOLS_ARTIFACTS, ROOT_DIR } from './common/paths'; + +const DEFAULT_BRANCH_NAME = 'main'; + +sh.set('-e'); +sh.cd(ROOT_DIR); + +const DOCUMENTATION_TEMP_DIR = path.join(ROOT_DIR, '..', 'doc_tmp'); + +sh.rm('-rf', DOCUMENTATION_TEMP_DIR); + +sh.exec( + `git clone -b ${DEFAULT_BRANCH_NAME} --depth 1 --config core.longpaths=true https://github.com/DevExpress/devextreme-documentation.git "${DOCUMENTATION_TEMP_DIR}"`, +); + +sh.pushd(DOCUMENTATION_TEMP_DIR); +sh.exec('pnpm i --frozen-lockfile'); +sh.exec(`pnpm run update-topics --artifacts ${INTERNAL_TOOLS_ARTIFACTS}`); +sh.popd(); + +sh.rm('-rf', DOCUMENTATION_TEMP_DIR); + +sh.exec('pnpm run devextreme:inject-descriptions'); diff --git a/tools/scripts/pack.ts b/tools/scripts/pack.ts deleted file mode 100644 index 39fad65a84de..000000000000 --- a/tools/scripts/pack.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { assert } from './common'; -import { getProject } from './common/nx'; -import { npm } from './common/monorepo-tools'; -import { NPM_DIR } from './common/paths'; - -const [,, name] = process.argv; -const outputPath = getProject(name).data?.targets?.build?.options?.outputPath; -assert( - !!outputPath, - `Could not find "build.options.outputPath" of project "${name}". Is project.json configured correctly?` -); - -process.chdir(outputPath); - -npm.pack({destination: NPM_DIR}); \ No newline at end of file diff --git a/tools/scripts/update-version.ts b/tools/scripts/update-version.ts index 773271ec2eaa..6e044345e60a 100644 --- a/tools/scripts/update-version.ts +++ b/tools/scripts/update-version.ts @@ -4,7 +4,7 @@ import { updateVersion, updateVersionJs } from './common/version'; const version = process.argv[2]; if (version == null) { - console.error(`Usage: 'pnpm run all:update-version $version' (XX.X.X)`); + console.error('Usage: pnpm run all:update-version -- XX.X.X'); process.exit(1); }