diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 558fc21f1b..0000000000 --- a/.eslintignore +++ /dev/null @@ -1,8 +0,0 @@ -.github/ -.idea/ -/build/ -/config/ -/dist/ -node_modules/ -scripts/utils/dist/ -test/performance/data/ diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index f39d7f5d1c..0000000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,143 +0,0 @@ -/* -Copyright 2021 Bonitasoft S.A. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -module.exports = { - root: true, - plugins: ['notice', 'unicorn', 'import'], - parser: '@typescript-eslint/parser', // Specifies the ESLint parser - extends: [ - 'plugin:import/recommended', - 'plugin:unicorn/recommended', - 'plugin:prettier/recommended', // Enables eslint-plugin-prettier and eslint-config-prettier. This will display prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array. - ], - parserOptions: { - ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features - sourceType: 'module', // Allows for the use of imports - }, - rules: { - 'notice/notice': ['error', { templateFile: 'config/license-header.js', onNonMatchingHeader: 'replace' }], - 'no-console': ['error', { allow: ['warn', 'error'] }], - 'unicorn/filename-case': [ - 'error', - { - cases: { - camelCase: true, - kebabCase: true, - pascalCase: true, - snakeCase: true, - }, - }, - ], - 'import/newline-after-import': ['error', { count: 1 }], - 'import/first': 'error', - 'import/order': [ - 'error', - { - groups: ['type', 'builtin', 'external', 'parent', 'sibling', 'index', 'internal'], - 'newlines-between': 'always', - alphabetize: { - order: 'asc', - orderImportKind: 'asc', - caseInsensitive: true, - }, - }, - ], - 'unicorn/prefer-keyboard-event-key': 'off', // 'key' doesn't exist in the used ES version - 'unicorn/prefer-module': 'off', // We don't want to change a working configuration - 'unicorn/prefer-string-replace-all': 'off', // String#replaceAll() doesn't exist in the used ES version - 'unicorn/no-new-array': 'off', // In contradiction with unicorn/new-for-builtins: Use `new Array()` instead of `Array()` - 'unicorn/no-null': 'off', // We don't know the impact on mxGraph code - 'unicorn/no-useless-undefined': 'off', // The "undefined" value is useful where we use it and change some mxGraph code - 'unicorn/prefer-global-this': 'off', // We only target the browser, so it is valid to use the window object. In addition, using 'globalThis' require additional changes in the code/configuration to work. - }, - overrides: [ - // typescript - { - files: ['*.ts'], - extends: [ - 'plugin:@typescript-eslint/recommended', // Uses the recommended rules from the @typescript-eslint/eslint-plugin - 'plugin:prettier/recommended', // Enables eslint-plugin-prettier and eslint-config-prettier. This will display prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array. - 'plugin:@typescript-eslint/stylistic', - 'plugin:import/typescript', - ], - settings: { - 'import/resolver': { - typescript: { - alwaysTryTypes: true, // always try to resolve types under `@types` directory even it doesn't contain any source code, like `@types/unist` - project: '**/tsconfig.json', - }, - }, - }, - parserOptions: { - // This setting is required if you want to use rules which require type information - // https://typescript-eslint.io/packages/parser/#project - project: ['./tsconfig.json', './tsconfig.test.json', './tsconfig.utils.json'], - }, - rules: { - '@typescript-eslint/explicit-function-return-type': [ - 'error', - { - allowExpressions: true, - allowTypedFunctionExpressions: true, - }, - ], - '@typescript-eslint/explicit-member-accessibility': [ - 'error', - { - accessibility: 'no-public', - }, - ], - '@typescript-eslint/consistent-type-exports': [ - 'error', - { - fixMixedExportsWithInlineTypeSpecifier: true, - }, - ], - '@typescript-eslint/consistent-type-imports': ['error'], - // We choose to disable it and choose later if we want to enable it. See https://github.com/process-analytics/bpmn-visualization-js/pull/2821. - '@typescript-eslint/consistent-type-definitions': 'off', - '@typescript-eslint/dot-notation': 'error', - - 'require-await': 'off', // disable the base eslint rule as it can report incorrect errors when '@typescript-eslint/require-await' is enabled (see official documentation) - '@typescript-eslint/require-await': 'error', - '@typescript-eslint/no-floating-promises': 'error', - '@typescript-eslint/no-misused-promises': 'error', - - '@typescript-eslint/restrict-plus-operands': 'error', - - // disable the base rule as it can report incorrect errors when using '@typescript-eslint/no-unused-expressions', see https://typescript-eslint.io/rules/no-unused-expressions/#how-to-use - 'eslint/no-unused-expressions': 'off', - '@typescript-eslint/no-unused-expressions': [ - 'error', - { - allowShortCircuit: true, - allowTernary: true, - }, - ], - - '@typescript-eslint/prefer-readonly': 'error', - - // The following lines are commented, because they show errors on files other than the demo: - // '@typescript-eslint/no-base-to-string': 'error', - // '@typescript-eslint/no-unsafe-assignment': 'error', - // '@typescript-eslint/no-unsafe-argument': 'error', - // '@typescript-eslint/no-unsafe-member-access': 'error', - // '@typescript-eslint/restrict-template-expressions': 'error', - // '@typescript-eslint/unbound-method': 'error', - }, - }, - ], -}; diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 5389979a04..e19fe64beb 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -39,11 +39,12 @@ updates: - "ts-jest" lint: patterns: - - "@typescript-eslint/*" + - "@eslint/*" - "eslint" - "eslint-*" - "lint-staged" - "prettier" + - "typescript-eslint" rollup: patterns: - "@rollup/*" diff --git a/dev/ts/component/SvgExporter.ts b/dev/ts/component/SvgExporter.ts index 2a27695b4e..7aa4336499 100644 --- a/dev/ts/component/SvgExporter.ts +++ b/dev/ts/component/SvgExporter.ts @@ -16,7 +16,7 @@ limitations under the License. import type { mxGraph, mxSvgCanvas2D as mxSvgCanvas2DType } from 'mxgraph'; -import { mxgraph, mxClient, mxConstants, mxSvgCanvas2D, mxUtils } from '../../../src/component/mxgraph/initializer'; +import { mxgraph, mxClient, mxConstants, mxSvgCanvas2D, mxUtilities } from '../../../src/component/mxgraph/initializer'; interface SvgExportOptions { scale: number; @@ -47,7 +47,7 @@ export class SvgExporter { private doSvgExport(enableForeignObjectForLabel: boolean): string { const svgDocument = this.computeSvg({ scale: 1, border: 25, enableForeignObjectForLabel: enableForeignObjectForLabel }); - const svgAsString = mxUtils.getXml(svgDocument); + const svgAsString = mxUtilities.getXml(svgDocument); return ` ${svgAsString} @@ -64,7 +64,7 @@ ${svgAsString} const viewScale = this.graph.view.scale; // Prepares SVG document that holds the output - const svgDocument = mxUtils.createXmlDocument(); + const svgDocument = mxUtilities.createXmlDocument(); const root = svgDocument.createElementNS(mxConstants.NS_SVG, 'svg'); const s = scale / viewScale; @@ -168,7 +168,7 @@ class CanvasForExport extends mxSvgCanvas2D { try { this.htmlConverter.innerHTML = content; - content = mxUtils.extractTextWithWhitespace(this.htmlConverter.childNodes); + content = mxUtilities.extractTextWithWhitespace(this.htmlConverter.childNodes); // Workaround for substring breaking double byte UTF const exp = Math.ceil((2 * w) / this.state.fontSize); @@ -193,7 +193,7 @@ class CanvasForExport extends mxSvgCanvas2D { // Uses result and adds ellipsis if more than 1 char remains if (result.length < content.length && content.length - result.length > 1) { - content = mxUtils.trim(result.join('')) + '...'; + content = mxUtilities.trim(result.join('')) + '...'; } } catch (error) { console.warn('Error while computing txt label', error); diff --git a/dev/ts/component/ThemedBpmnVisualization.ts b/dev/ts/component/ThemedBpmnVisualization.ts index a18155da52..b36e4fd710 100644 --- a/dev/ts/component/ThemedBpmnVisualization.ts +++ b/dev/ts/component/ThemedBpmnVisualization.ts @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import { BpmnVisualization, FlowKind, ShapeBpmnElementKind, ShapeUtil, StyleConfigurator, StyleDefault } from '../../../src/bpmn-visualization'; +import { BpmnVisualization, FlowKind, ShapeBpmnElementKind, ShapeUtility, StyleConfigurator, StyleDefault } from '../../../src/bpmn-visualization'; import { mxConstants } from '../../../src/component/mxgraph/initializer'; import { logStartup } from '../shared/internal-helpers'; @@ -116,7 +116,7 @@ export class ThemedBpmnVisualization extends BpmnVisualization { const styleSheet = this.graph.getStylesheet(); // EVENT - for (const kind of ShapeUtil.eventKinds()) { + for (const kind of ShapeUtility.eventKinds()) { let fillColor; let strokeColor; switch (kind) { @@ -149,7 +149,7 @@ export class ThemedBpmnVisualization extends BpmnVisualization { } // TASK - for (const kind of ShapeUtil.taskKinds()) { + for (const kind of ShapeUtility.taskKinds()) { const style = styleSheet.styles[kind]; style.fillColor = theme.taskAndCallActivityFillColor; } diff --git a/dev/ts/development-bundle-index.ts b/dev/ts/development-bundle-index.ts index 1262e04132..658e7e4582 100644 --- a/dev/ts/development-bundle-index.ts +++ b/dev/ts/development-bundle-index.ts @@ -19,4 +19,4 @@ export * from './shared/main'; export * from './shared/shared-helpers'; export * from '../../src/bpmn-visualization'; // extra code not exported by bpmn-visualization -export * from '../../src/model/bpmn/internal/edge/utils'; +export * from '../../src/model/bpmn/internal/edge/utilities'; diff --git a/dev/ts/pages/elements-identification.ts b/dev/ts/pages/elements-identification.ts index d43c9a1c6e..77c45242c6 100644 --- a/dev/ts/pages/elements-identification.ts +++ b/dev/ts/pages/elements-identification.ts @@ -27,7 +27,7 @@ import { log, removeAllOverlays, removeCssClasses, - ShapeUtil, + ShapeUtility, startBpmnVisualization, updateLoadOptions, updateStyle, @@ -63,13 +63,13 @@ function computeStyleUpdateByKind(bpmnKind: BpmnElementKind): StyleUpdate { return style; } - if (ShapeUtil.isTask(bpmnKind)) { + if (ShapeUtility.isTask(bpmnKind)) { style.font.color = 'Indigo'; style.fill.color = 'gold'; style.font.size = 14; style.fill.opacity = 20; - } else if (ShapeUtil.isEvent(bpmnKind)) { - if (ShapeUtil.isBoundaryEvent(bpmnKind)) { + } else if (ShapeUtility.isEvent(bpmnKind)) { + if (ShapeUtility.isBoundaryEvent(bpmnKind)) { style.font.color = 'inherit'; style.fill.color = 'inherit'; style.stroke.color = 'inherit'; @@ -77,23 +77,23 @@ function computeStyleUpdateByKind(bpmnKind: BpmnElementKind): StyleUpdate { style.font.color = 'MediumTurquoise'; style.stroke.color = 'MediumTurquoise'; } - } else if (ShapeUtil.isGateway(bpmnKind)) { + } else if (ShapeUtility.isGateway(bpmnKind)) { style.font.color = 'CadetBlue'; style.font.opacity = 85; style.stroke.color = 'OrangeRed'; style.stroke.width = 4; - } else if (ShapeUtil.isPoolOrLane(bpmnKind)) { + } else if (ShapeUtility.isPoolOrLane(bpmnKind)) { style.font.color = 'white !important'; style.fill.color = 'deeppink'; style.stroke.opacity = 80; - } else if (ShapeUtil.isCallActivity(bpmnKind)) { + } else if (ShapeUtility.isCallActivity(bpmnKind)) { style.font.color = 'white'; style.font.family = 'Times New Roman'; style.font.isItalic = true; style.font.isStrikeThrough = true; style.fill.color = { startColor: 'LightYellow', endColor: 'LimeGreen', direction: 'left-to-right' }; - } else if (ShapeUtil.isSubProcess(bpmnKind)) { + } else if (ShapeUtility.isSubProcess(bpmnKind)) { style.font.color = 'white'; style.font.size = 14; style.font.family = 'Dialog'; @@ -133,7 +133,7 @@ function updateStyleByAPI(bpmnIds: string[], bpmnKind: ShapeBpmnElementKind): vo } updateStyle(subProcessChildrenIds, { fill: { color: 'swimlane' }, stroke: { color: 'swimlane' }, font: { color: 'swimlane' } }); - if (ShapeUtil.isBoundaryEvent(bpmnKind)) { + if (ShapeUtility.isBoundaryEvent(bpmnKind)) { lastIdentifiedParentBpmnIds = getParentElementIds(otherIds); updateStyle(lastIdentifiedParentBpmnIds, { opacity: 5, font: { color: 'green', opacity: 5 }, fill: { color: 'gold' }, stroke: { color: 'red' } }); } @@ -242,7 +242,7 @@ function configureControls(): void { } function getOverlay(bpmnKind: BpmnElementKind): Overlay { - if (ShapeUtil.isActivity(bpmnKind)) { + if (ShapeUtility.isActivity(bpmnKind)) { return { position: 'top-right', label: '30', diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000000..ac1e211196 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,267 @@ +/* +Copyright 2024 Bonitasoft S.A. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import { readFileSync } from 'node:fs'; +import path from 'node:path'; + +import eslint from '@eslint/js'; +import importPlugin from 'eslint-plugin-import'; +import jestPlugin from 'eslint-plugin-jest'; +import jestExtendedPlugin from 'eslint-plugin-jest-extended'; +import noticePlugin from 'eslint-plugin-notice'; +import playwright from 'eslint-plugin-playwright'; +import prettierRecommendedConfig from 'eslint-plugin-prettier/recommended'; +// eslint-disable-next-line import/namespace,import/default +import unicornPlugin from 'eslint-plugin-unicorn'; +// eslint-disable-next-line import/no-unresolved +import tseslint from 'typescript-eslint'; + +const jestPackagePath = path.resolve('node_modules', 'jest', 'package.json'); +const jestPackage = JSON.parse(readFileSync(jestPackagePath, 'utf8')); + +export default tseslint.config( + { + // Need to be in first before any other configuration + // https://eslint.org/docs/latest/use/configure/ignore + ignores: [ + '.github/*', + '.idea/*', + '/build/*', + '/config/*', + '/dist/*', + 'node_modules/*', + 'scripts/shared/types-info.mjs', + 'scripts/utils/dist/*', + 'test/performance/data/*', + 'test/typescript-support/*', + ], + }, + + { + plugins: { + notice: noticePlugin, + }, + languageOptions: { + parserOptions: { + ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features + sourceType: 'module', // Allows for the use of imports + }, + }, + rules: { + 'notice/notice': ['error', { templateFile: 'config/license-header.js', onNonMatchingHeader: 'replace' }], + 'no-console': ['error', { allow: ['warn', 'error'] }], + }, + }, + + // Unicorn + { + extends: [unicornPlugin.configs['flat/recommended']], // https://github.com/sindresorhus/eslint-plugin-unicorn?tab=readme-ov-file#es-module-recommended-1 + + rules: { + 'unicorn/filename-case': [ + 'error', + { + cases: { + camelCase: true, + kebabCase: true, + pascalCase: true, + snakeCase: true, + }, + }, + ], + 'unicorn/prefer-keyboard-event-key': 'off', // 'key' doesn't exist in the used ES version + 'unicorn/prefer-module': 'off', // We don't want to change a working configuration + 'unicorn/prefer-string-replace-all': 'off', // String#replaceAll() doesn't exist in the used ES version + 'unicorn/no-new-array': 'off', // In contradiction with unicorn/new-for-builtins: Use `new Array()` instead of `Array()` + 'unicorn/no-null': 'off', // We don't know the impact on mxGraph code + 'unicorn/no-useless-undefined': 'off', // The "undefined" value is useful where we use it and change some mxGraph code + 'unicorn/prefer-global-this': 'off', // We only target the browser, so it is valid to use the window object. In addition, using 'globalThis' require additional changes in the code/configuration to work. + }, + }, + { + files: ['**/*.js', '**/*.cjs', '**/*.mjs'], + rules: { + 'unicorn/numeric-separators-style': 'off', // With ESLint v9, the syntax with underscores is not supported in older versions of JavaScript. + 'unicorn/prefer-optional-catch-binding': 'off', // With ESLint v9, the syntax 'try {} catch {}' is not supported in cjs files (not tested on other JS files). + }, + }, + + // Import + { + extends: [ + // Feature of `typescript-eslint` to extend multiple configs: https://typescript-eslint.io/packages/typescript-eslint/#flat-config-extends + importPlugin.flatConfigs.recommended, + ], + rules: { + 'import/newline-after-import': ['error', { count: 1 }], + 'import/first': 'error', + 'import/order': [ + 'error', + { + groups: ['type', 'builtin', 'external', 'parent', 'sibling', 'index', 'internal'], + 'newlines-between': 'always', + alphabetize: { + order: 'asc', + orderImportKind: 'asc', + caseInsensitive: true, + }, + }, + ], + }, + }, + + // TypeScript + + // disable type-aware linting on JS files + { + files: ['**/*.js', '**/*.cjs', '**/*.mjs'], + extends: [tseslint.configs.disableTypeChecked], + }, + + /** @type {import('@typescript-eslint/utils').TSESLint.FlatConfig.ConfigFile} */ + { + files: ['**/*.ts', '**/*.cts', '**/*.mts'], + extends: [ + // Feature of `typescript-eslint` to extend multiple configs: https://typescript-eslint.io/packages/typescript-eslint/#flat-config-extends + eslint.configs.recommended, // Problem with 'module', 'require', 'console', 'exports', etc. on .js, .cjs, .mjs files + ...tseslint.configs.recommended, + ...tseslint.configs.stylistic, + importPlugin.flatConfigs.typescript, + ], + settings: { + 'import/resolver': { + typescript: { + alwaysTryTypes: true, // always try to resolve types under `@types` directory even it doesn't contain any source code, like `@types/unist` + project: '**/tsconfig.json', + }, + }, + }, + languageOptions: { + parserOptions: { + // This setting is required if you want to use rules which require type information + // https://typescript-eslint.io/packages/parser/#project + project: ['./tsconfig.json', './tsconfig.test.json', './tsconfig.utils.json'], + }, + }, + rules: { + '@typescript-eslint/explicit-function-return-type': [ + 'error', + { + allowExpressions: true, + allowTypedFunctionExpressions: true, + }, + ], + '@typescript-eslint/explicit-member-accessibility': [ + 'error', + { + accessibility: 'no-public', + }, + ], + '@typescript-eslint/consistent-type-exports': [ + 'error', + { + fixMixedExportsWithInlineTypeSpecifier: true, + }, + ], + '@typescript-eslint/consistent-type-imports': ['error'], + // We choose to disable it and choose later if we want to enable it. See https://github.com/process-analytics/bpmn-visualization-js/pull/2821. + '@typescript-eslint/consistent-type-definitions': 'off', + '@typescript-eslint/dot-notation': 'error', + + 'require-await': 'off', // disable the base eslint rule as it can report incorrect errors when '@typescript-eslint/require-await' is enabled (see official documentation) + '@typescript-eslint/require-await': 'error', + '@typescript-eslint/no-floating-promises': 'error', + '@typescript-eslint/no-misused-promises': 'error', + + '@typescript-eslint/restrict-plus-operands': 'error', + + // disable the base rule as it can report incorrect errors when using '@typescript-eslint/no-unused-expressions', see https://typescript-eslint.io/rules/no-unused-expressions/#how-to-use + 'eslint/no-unused-expressions': 'off', + '@typescript-eslint/no-unused-expressions': [ + 'error', + { + allowShortCircuit: true, + allowTernary: true, + }, + ], + + '@typescript-eslint/prefer-readonly': 'error', + + // The following lines are commented, because they show errors on files other than the demo: + // '@typescript-eslint/no-base-to-string': 'error', + // '@typescript-eslint/no-unsafe-assignment': 'error', + // '@typescript-eslint/no-unsafe-argument': 'error', + // '@typescript-eslint/no-unsafe-member-access': 'error', + // '@typescript-eslint/restrict-template-expressions': 'error', + // '@typescript-eslint/unbound-method': 'error', + }, + }, + + // test files + // There is no more cascading and hierarchy configuration files in ESLint v9. + // All configurations must be in the same file. + { + // enable jest rules on test files + files: ['test/**'], + extends: [ + // Feature of `typescript-eslint` to extend multiple configs: https://typescript-eslint.io/packages/typescript-eslint/#flat-config-extends + jestPlugin.configs['flat/recommended'], + jestPlugin.configs['flat/style'], + ], + plugins: { + jest: jestPlugin, + }, + languageOptions: { + globals: jestPlugin.environments.globals.globals, + }, + settings: { + jest: { + version: jestPackage.version, + }, + }, + rules: { + /* The rule list: https://github.com/jest-community/eslint-plugin-jest#rules */ + 'jest/prefer-expect-resolves': 'warn', + 'jest/prefer-spy-on': 'warn', + 'jest/prefer-todo': 'warn', + /* The rule didn't find the 'expect' in the called methods */ + 'jest/expect-expect': 'off', + }, + }, + { + files: ['test/**/*.test.ts'], + extends: [ + // Feature of `typescript-eslint` to extend multiple configs: https://typescript-eslint.io/packages/typescript-eslint/#flat-config-extends + jestExtendedPlugin.configs['flat/recommended'], + ], + + plugins: { 'jest-extended': jestExtendedPlugin }, + }, + { + files: ['test/(bundles|e2e|performance)/*.test.ts'], + extends: [ + // Feature of `typescript-eslint` to extend multiple configs: https://typescript-eslint.io/packages/typescript-eslint/#flat-config-extends + playwright.configs['flat/recommended'], + ], + + rules: { + /* This rule is for playwright-test and we are using jest-playwright */ + 'playwright/no-standalone-expect': 'off', + }, + }, + + prettierRecommendedConfig, // Enables eslint-plugin-prettier, eslint-config-prettier and prettier/prettier. This will display prettier errors as ESLint errors. Make sure this is always the last configuration. +); diff --git a/package-lock.json b/package-lock.json index 5e3b1e83c2..4f91a3108a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,7 @@ }, "devDependencies": { "@asciidoctor/core": "~3.0.4", + "@eslint/js": "~9.22.0", "@microsoft/api-extractor": "~7.52.1", "@rollup/plugin-commonjs": "~28.0.3", "@rollup/plugin-node-resolve": "~16.0.0", @@ -24,22 +25,20 @@ "@types/debug": "~4.1.12", "@types/jest-image-snapshot": "~6.4.0", "@types/minimist": "~1.2.5", - "@typescript-eslint/eslint-plugin": "~8.26.1", - "@typescript-eslint/parser": "~8.26.1", "clipboardy": "~4.0.0", "cross-env": "~7.0.3", "cssnano": "~7.0.6", "debug": "~4.4.0", - "eslint": "~8.57.0", + "eslint": "~9.22.0", "eslint-config-prettier": "~10.1.1", "eslint-import-resolver-typescript": "~3.8.4", "eslint-plugin-import": "~2.31.0", "eslint-plugin-jest": "~28.11.0", - "eslint-plugin-jest-extended": "^3.0.0", - "eslint-plugin-notice": "~1.0.0", + "eslint-plugin-jest-extended": "~3.0.0", + "eslint-plugin-notice": "~1.1.0-rc1", "eslint-plugin-playwright": "~2.2.0", "eslint-plugin-prettier": "~5.2.3", - "eslint-plugin-unicorn": "~56.0.1", + "eslint-plugin-unicorn": "~57.0.0", "expect-playwright": "~0.8.0", "fs-extra": "~11.3.0", "husky": "~9.1.7", @@ -69,6 +68,7 @@ "ts-jest": "~29.2.6", "typedoc": "~0.27.9", "typescript": "~5.8.2", + "typescript-eslint": "~8.26.1", "vite": "~6.2.1" } }, @@ -86,7 +86,6 @@ "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -162,11 +161,15 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.16.0", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/highlight": "^7.16.0" + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -412,10 +415,11 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", - "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -441,83 +445,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { - "version": "7.16.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.15.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/parser": { "version": "7.20.13", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", @@ -1182,39 +1109,83 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", "dev": true, + "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", + "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.1.0.tgz", + "integrity": "sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", + "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", + "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -1222,29 +1193,68 @@ "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "version": "9.22.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.22.0.tgz", + "integrity": "sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==", "dev": true, + "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", + "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.12.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@gerrit0/mini-shiki": { - "version": "1.26.1", - "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-1.26.1.tgz", - "integrity": "sha512-gHFUvv9f1fU2Piou/5Y7Sx5moYxcERbC7CXc6rkDLQTUBg5Dgg9L4u29/nHqfoQ3Y9R0h0BcOhd14uOEZIBP7Q==", + "version": "1.27.2", + "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-1.27.2.tgz", + "integrity": "sha512-GeWyHz8ao2gBiUW4OJnQDxXQnFgZQwwQk05t/CVVgNBN7/rK8XZ7xY6YhLVv9tH3VppWWmr9DCl3MwemB/i+Og==", "dev": true, + "license": "MIT", "dependencies": { - "@shikijs/engine-oniguruma": "^1.26.1", - "@shikijs/types": "^1.26.1", + "@shikijs/engine-oniguruma": "^1.27.2", + "@shikijs/types": "^1.27.2", "@shikijs/vscode-textmate": "^10.0.1" } }, @@ -1263,18 +1273,42 @@ "@hapi/hoek": "^9.0.0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" }, "engines": { - "node": ">=10.10.0" + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, "node_modules/@humanwhocodes/module-importer": { @@ -1290,11 +1324,19 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", - "dev": true + "node_modules/@humanwhocodes/retry": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, "node_modules/@isaacs/cliui": { "version": "8.0.2", @@ -2518,20 +2560,22 @@ } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "1.26.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.26.2.tgz", - "integrity": "sha512-mlN7Qrs+w60nKrd7at7XkXSwz6728Pe34taDmHrG6LRHjzCqQ+ysg+/AT6/D2LMk0s2lsr71DjpI73430QP4/w==", + "version": "1.27.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.27.2.tgz", + "integrity": "sha512-FZYKD1KN7srvpkz4lbGLOYWlyDU4Rd+2RtuKfABTkafAPOFr+J6umfIwY/TzOQqfNtWjL7SAwPAO0dcOraRLaQ==", "dev": true, + "license": "MIT", "dependencies": { - "@shikijs/types": "1.26.2", + "@shikijs/types": "1.27.2", "@shikijs/vscode-textmate": "^10.0.1" } }, "node_modules/@shikijs/types": { - "version": "1.26.2", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.26.2.tgz", - "integrity": "sha512-PO2jucx2FIdlLBPYbIUlMtWSLs5ulcRcuV93cR3T65lkK5SJP4MGBRt9kmWGXiQc0f7+FHj/0BEawditZcI/fQ==", + "version": "1.27.2", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.27.2.tgz", + "integrity": "sha512-DM9OWUyjmdYdnKDpaGB/GEn9XkToyK1tqxuqbmc5PV+5K8WjjwfygL3+cIvbkSw2v1ySwHDgqATq/+98pJ4Kyg==", "dev": true, + "license": "MIT", "dependencies": { "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" @@ -2541,7 +2585,8 @@ "version": "10.0.1", "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.1.tgz", "integrity": "sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@sideway/address": { "version": "4.1.4", @@ -2937,6 +2982,7 @@ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/unist": "*" } @@ -2994,6 +3040,13 @@ "parse5": "^7.0.0" } }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -3022,10 +3075,11 @@ } }, "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true, + "license": "MIT" }, "node_modules/@types/pixelmatch": { "version": "5.2.4", @@ -3056,7 +3110,8 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/wait-on": { "version": "5.3.4", @@ -3313,12 +3368,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, "node_modules/abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", @@ -3326,10 +3375,11 @@ "dev": true }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -3361,6 +3411,7 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -3394,6 +3445,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3849,9 +3901,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", - "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "dev": true, "funding": [ { @@ -3867,11 +3919,12 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001646", - "electron-to-chromium": "^1.5.4", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -3906,12 +3959,13 @@ "license": "MIT" }, "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-4.0.0.tgz", + "integrity": "sha512-p1n8zyCkt1BVrKNFymOHjcDSAl7oq/gUvfgULv2EblgpPVQlQr9yHnWjg9IJ2MhfwPqiYqMMrr01OY7yQoK2yA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=18.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3979,9 +4033,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001649", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001649.tgz", - "integrity": "sha512-fJegqZZ0ZX8HOWr6rcafGr72+xcgJKI9oWfDW5DrD7ExUtgZC7a7R7ZYmZqplh7XDocFdGeIFn7roAxhOeYrPQ==", + "version": "1.0.30001700", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz", + "integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==", "dev": true, "funding": [ { @@ -3996,7 +4050,8 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/chalk": { "version": "4.1.2", @@ -4475,12 +4530,13 @@ } }, "node_modules/core-js-compat": { - "version": "3.38.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", - "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.40.0.tgz", + "integrity": "sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==", "dev": true, + "license": "MIT", "dependencies": { - "browserslist": "^4.23.3" + "browserslist": "^4.24.3" }, "funding": { "type": "opencollective", @@ -4526,7 +4582,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -4826,6 +4884,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -4981,17 +5040,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/dom-serializer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", @@ -5081,10 +5129,11 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.4.tgz", - "integrity": "sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==", - "dev": true + "version": "1.5.102", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.102.tgz", + "integrity": "sha512-eHhqaja8tE/FNpIiBrvBjFV/SSKpyWHLvxuR9dPTdo+3V9ppdLmFB7ZZQ98qNovcngPLYIz0oOBF9P0FfZef5Q==", + "dev": true, + "license": "ISC" }, "node_modules/emittery": { "version": "0.13.1", @@ -5338,10 +5387,11 @@ } }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -5379,15 +5429,6 @@ "source-map": "~0.6.1" } }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/escodegen/node_modules/levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -5440,58 +5481,64 @@ } }, "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "version": "9.22.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.22.0.tgz", + "integrity": "sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.2", + "@eslint/config-helpers": "^0.1.0", + "@eslint/core": "^0.12.0", + "@eslint/eslintrc": "^3.3.0", + "@eslint/js": "9.22.0", + "@eslint/plugin-kit": "^0.2.7", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.3.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-config-prettier": { @@ -5656,6 +5703,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.11.0.tgz", "integrity": "sha512-QAfipLcNCWLVocVbZW8GimKn5p5iiMcgGbRzz8z/P5q7xw+cNEpYqyzFMtIF/ZgF2HLOyy+dYBut+DoYolvqig==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/utils": "^6.0.0 || ^7.0.0 || ^8.0.0" }, @@ -5681,6 +5729,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-jest-extended/-/eslint-plugin-jest-extended-3.0.0.tgz", "integrity": "sha512-G/nPzMUJ7gJyFwB8ThjELAJyxGhYc9EvJu2w9iNhKkroQ0yYQ3q5YdMoLVjWTawexl+M9j+jhOdd9shpCvsbYQ==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/utils": "^6.0.0 || ^7.0.0 || ^8.0.0" }, @@ -5692,10 +5741,11 @@ } }, "node_modules/eslint-plugin-notice": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-notice/-/eslint-plugin-notice-1.0.0.tgz", - "integrity": "sha512-M3VLQMZzZpvfTZ/vy9FmClIKq5rLBbQpM0KgfLZPJPrVXpmJYeobmmb+lfJzHWdNm8PWwvw8KlafQWo2N9xx1Q==", + "version": "1.1.0-rc1", + "resolved": "https://registry.npmjs.org/eslint-plugin-notice/-/eslint-plugin-notice-1.1.0-rc1.tgz", + "integrity": "sha512-MoXjHXFV6uWBI77+cLru2uDGSNt07T8vmMhhpGdmxLr9OBsP3x330qOzu8XielO3J/0KD/5yt/IVqMNtxU65rQ==", "dev": true, + "license": "MIT", "dependencies": { "find-root": "^1.1.0", "lodash": "^4.17.21", @@ -5729,6 +5779,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.3.tgz", "integrity": "sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==", "dev": true, + "license": "MIT", "dependencies": { "prettier-linter-helpers": "^1.0.0", "synckit": "^0.9.1" @@ -5755,27 +5806,28 @@ } }, "node_modules/eslint-plugin-unicorn": { - "version": "56.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-56.0.1.tgz", - "integrity": "sha512-FwVV0Uwf8XPfVnKSGpMg7NtlZh0G0gBarCaFcMUOoqPxXryxdYxTRRv4kH6B9TFCVIrjRXG+emcxIk2ayZilog==", + "version": "57.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-57.0.0.tgz", + "integrity": "sha512-zUYYa6zfNdTeG9BISWDlcLmz16c+2Ck2o5ZDHh0UzXJz3DEP7xjmlVDTzbyV0W+XksgZ0q37WEWzN2D2Ze+g9Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", - "@eslint-community/eslint-utils": "^4.4.0", - "ci-info": "^4.0.0", + "@babel/helper-validator-identifier": "^7.25.9", + "@eslint-community/eslint-utils": "^4.4.1", + "ci-info": "^4.1.0", "clean-regexp": "^1.0.0", - "core-js-compat": "^3.38.1", + "core-js-compat": "^3.40.0", "esquery": "^1.6.0", - "globals": "^15.9.0", - "indent-string": "^4.0.0", - "is-builtin-module": "^3.2.1", - "jsesc": "^3.0.2", + "globals": "^15.15.0", + "indent-string": "^5.0.0", + "is-builtin-module": "^4.0.0", + "jsesc": "^3.1.0", "pluralize": "^8.0.0", - "read-pkg-up": "^7.0.1", + "read-package-up": "^11.0.0", "regexp-tree": "^0.1.27", - "regjsparser": "^0.10.0", - "semver": "^7.6.3", - "strip-indent": "^3.0.0" + "regjsparser": "^0.12.0", + "semver": "^7.7.1", + "strip-indent": "^4.0.0" }, "engines": { "node": ">=18.18" @@ -5784,13 +5836,13 @@ "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1" }, "peerDependencies": { - "eslint": ">=8.56.0" + "eslint": ">=9.20.0" } }, "node_modules/eslint-plugin-unicorn/node_modules/ci-info": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", - "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz", + "integrity": "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==", "dev": true, "funding": [ { @@ -5798,15 +5850,17 @@ "url": "https://github.com/sponsors/sibiraj-s" } ], + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/eslint-plugin-unicorn/node_modules/globals": { - "version": "15.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.11.0.tgz", - "integrity": "sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==", + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -5814,11 +5868,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/eslint-plugin-unicorn/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint-plugin-unicorn/node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -5827,10 +5895,11 @@ } }, "node_modules/eslint-plugin-unicorn/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -5838,27 +5907,28 @@ "node": ">=10" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/eslint-scope": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -5866,13 +5936,17 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=4.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/find-up": { @@ -5948,17 +6022,31 @@ } }, "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.9.0", + "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "eslint-visitor-keys": "^4.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -5988,17 +6076,10 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -6008,8 +6089,10 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { + "node_modules/estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -6171,18 +6254,6 @@ "fxparser": "src/cli/cli.js" } }, - "node_modules/fast-xml-parser/node_modules/strnum": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.0.5.tgz", - "integrity": "sha512-YAT3K/sgpCUxhxNMrrdhtod3jckkpYwH6JAuwmUdXZsmzH1wUyzTMrrK2wYCEEqlKwrWDd35NeuUkbBy/1iK+Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT" - }, "node_modules/fastq": { "version": "1.13.0", "dev": true, @@ -6216,14 +6287,16 @@ } }, "node_modules/file-entry-cache": { - "version": "6.0.1", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" } }, "node_modules/filelist": { @@ -6349,35 +6422,37 @@ "node": ">=8" } }, - "node_modules/flat-cache": { - "version": "3.0.4", + "node_modules/find-up-simple": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz", + "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==", "dev": true, "license": "MIT", - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, + "license": "MIT", "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "flatted": "^3.2.9", + "keyv": "^4.5.4" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=16" } }, "node_modules/flatted": { - "version": "3.2.4", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", "dev": true, "license": "ISC" }, @@ -6973,10 +7048,11 @@ } }, "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -7033,6 +7109,19 @@ "node": ">=8" } }, + "node_modules/index-to-position": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-0.1.2.tgz", + "integrity": "sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/inflight": { "version": "1.0.6", "dev": true, @@ -7128,15 +7217,16 @@ } }, "node_modules/is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-4.0.0.tgz", + "integrity": "sha512-rWP3AMAalQSesXO8gleROyL2iKU73SX5Er66losQn9rWOWL4Gef0a/xOEOVqjWGMuR2vHG3FJ8UUmT700O8oFg==", "dev": true, + "license": "MIT", "dependencies": { - "builtin-modules": "^3.3.0" + "builtin-modules": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=18.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -7347,15 +7437,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", @@ -8657,6 +8738,8 @@ }, "node_modules/js-tokens": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT" }, @@ -8665,6 +8748,7 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -8728,6 +8812,13 @@ "node": ">=4" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "dev": true, @@ -8743,7 +8834,8 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -8773,6 +8865,16 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/kleur": { "version": "3.0.3", "dev": true, @@ -9795,6 +9897,7 @@ "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -9868,6 +9971,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -9903,10 +10007,11 @@ } }, "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", - "dev": true + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" }, "node_modules/normalize-package-data": { "version": "2.5.0", @@ -10416,6 +10521,7 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -11489,85 +11595,121 @@ "pify": "^2.3.0" } }, - "node_modules/read-pkg": { - "version": "3.0.0", + "node_modules/read-package-up": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz", + "integrity": "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==", "dev": true, "license": "MIT", "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "find-up-simple": "^1.0.0", + "read-pkg": "^9.0.0", + "type-fest": "^4.6.0" }, "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "node_modules/read-package-up/node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "dev": true, + "license": "ISC", "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "lru-cache": "^10.0.1" }, "engines": { - "node": ">=8" + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/read-package-up/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/read-package-up/node_modules/normalize-package-data": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/read-pkg-up/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/read-package-up/node_modules/parse-json": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz", + "integrity": "sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "@babel/code-frame": "^7.22.13", + "index-to-position": "^0.1.2", + "type-fest": "^4.7.1" }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "node_modules/read-package-up/node_modules/read-pkg": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", + "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "@types/normalize-package-data": "^2.4.3", + "normalize-package-data": "^6.0.0", + "parse-json": "^8.0.0", + "type-fest": "^4.6.0", + "unicorn-magic": "^0.1.0" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "node_modules/read-package-up/node_modules/type-fest": { + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.35.0.tgz", + "integrity": "sha512-2/AwEFQDFEy30iOLjrvHDIH7e4HEWH+f1Yl1bI5XMqzuoCUqwYCdxachgsgv0og/JdVZUhbfjcJAoHj5L1753A==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=8" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "node_modules/read-pkg": { + "version": "3.0.0", "dev": true, + "license": "MIT", + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/read-pkg/node_modules/path-type": { @@ -11640,24 +11782,29 @@ } }, "node_modules/regjsparser": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz", - "integrity": "sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "jsesc": "~0.5.0" + "jsesc": "~3.0.2" }, "bin": { "regjsparser": "bin/parser" } }, "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" } }, "node_modules/release-zalgo": { @@ -11756,6 +11903,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -12038,6 +12186,7 @@ "resolved": "https://registry.npmjs.org/rollup-plugin-sizes/-/rollup-plugin-sizes-1.1.0.tgz", "integrity": "sha512-AEYZTYlWfPEIKpjOyL3wxhGZkdVkgmheHatW2xiMNet1MrGws5NszWSKXyiGi2fK0kSbx/X1f3sZqdc1laK1dA==", "dev": true, + "license": "MIT", "dependencies": { "filesize": "^9.0.0", "module-details-from-path": "^1.0.3" @@ -12693,15 +12842,19 @@ } }, "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", "dev": true, + "license": "MIT", "dependencies": { - "min-indent": "^1.0.0" + "min-indent": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/strip-json-comments": { @@ -12715,6 +12868,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strnum": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.0.5.tgz", + "integrity": "sha512-YAT3K/sgpCUxhxNMrrdhtod3jckkpYwH6JAuwmUdXZsmzH1wUyzTMrrK2wYCEEqlKwrWDd35NeuUkbBy/1iK+Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, "node_modules/stylehacks": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.4.tgz", @@ -12893,11 +13058,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/text-table": { - "version": "0.2.0", - "dev": true, - "license": "MIT" - }, "node_modules/tinyglobby": { "version": "0.2.12", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz", @@ -13276,6 +13436,29 @@ "node": ">=14.17" } }, + "node_modules/typescript-eslint": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.26.1.tgz", + "integrity": "sha512-t/oIs9mYyrwZGRpDv3g+3K6nZ5uhKEMt2oNmAPwaY4/ye0+EH4nXIPYNtkYFS6QHm+1DFg34DbglYBz5P9Xysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.26.1", + "@typescript-eslint/parser": "8.26.1", + "@typescript-eslint/utils": "8.26.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, "node_modules/uc.micro": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", @@ -13335,9 +13518,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", + "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", "dev": true, "funding": [ { @@ -13353,9 +13536,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -14064,10 +14248,14 @@ } }, "@babel/code-frame": { - "version": "7.16.0", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dev": true, "requires": { - "@babel/highlight": "^7.16.0" + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" } }, "@babel/compat-data": { @@ -14220,86 +14408,33 @@ "@babel/helper-split-export-declaration": { "version": "7.16.0", "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", - "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.14.5", - "dev": true - }, - "@babel/helpers": { - "version": "7.16.3", - "dev": true, - "requires": { - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.3", - "@babel/types": "^7.16.0" - } - }, - "@babel/highlight": { - "version": "7.16.0", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.15.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.14.5", + "dev": true + }, + "@babel/helpers": { + "version": "7.16.3", + "dev": true, + "requires": { + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.3", + "@babel/types": "^7.16.0" } }, "@babel/parser": { @@ -14635,51 +14770,101 @@ "optional": true }, "@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", "dev": true, "requires": { - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.3" } }, "@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true + }, + "@eslint/config-array": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", + "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", + "dev": true, + "requires": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + } + }, + "@eslint/config-helpers": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.1.0.tgz", + "integrity": "sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==", "dev": true }, + "@eslint/core": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", + "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.15" + } + }, "@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", + "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true + } } }, "@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "version": "9.22.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.22.0.tgz", + "integrity": "sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==", + "dev": true + }, + "@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", "dev": true }, + "@eslint/plugin-kit": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", + "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", + "dev": true, + "requires": { + "@eslint/core": "^0.12.0", + "levn": "^0.4.1" + } + }, "@gerrit0/mini-shiki": { - "version": "1.26.1", - "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-1.26.1.tgz", - "integrity": "sha512-gHFUvv9f1fU2Piou/5Y7Sx5moYxcERbC7CXc6rkDLQTUBg5Dgg9L4u29/nHqfoQ3Y9R0h0BcOhd14uOEZIBP7Q==", + "version": "1.27.2", + "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-1.27.2.tgz", + "integrity": "sha512-GeWyHz8ao2gBiUW4OJnQDxXQnFgZQwwQk05t/CVVgNBN7/rK8XZ7xY6YhLVv9tH3VppWWmr9DCl3MwemB/i+Og==", "dev": true, "requires": { - "@shikijs/engine-oniguruma": "^1.26.1", - "@shikijs/types": "^1.26.1", + "@shikijs/engine-oniguruma": "^1.27.2", + "@shikijs/types": "^1.27.2", "@shikijs/vscode-textmate": "^10.0.1" } }, @@ -14698,15 +14883,28 @@ "@hapi/hoek": "^9.0.0" } }, - "@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true + }, + "@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "dependencies": { + "@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true + } } }, "@humanwhocodes/module-importer": { @@ -14715,10 +14913,10 @@ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true }, - "@humanwhocodes/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "@humanwhocodes/retry": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", "dev": true }, "@isaacs/cliui": { @@ -15559,19 +15757,19 @@ } }, "@shikijs/engine-oniguruma": { - "version": "1.26.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.26.2.tgz", - "integrity": "sha512-mlN7Qrs+w60nKrd7at7XkXSwz6728Pe34taDmHrG6LRHjzCqQ+ysg+/AT6/D2LMk0s2lsr71DjpI73430QP4/w==", + "version": "1.27.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.27.2.tgz", + "integrity": "sha512-FZYKD1KN7srvpkz4lbGLOYWlyDU4Rd+2RtuKfABTkafAPOFr+J6umfIwY/TzOQqfNtWjL7SAwPAO0dcOraRLaQ==", "dev": true, "requires": { - "@shikijs/types": "1.26.2", + "@shikijs/types": "1.27.2", "@shikijs/vscode-textmate": "^10.0.1" } }, "@shikijs/types": { - "version": "1.26.2", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.26.2.tgz", - "integrity": "sha512-PO2jucx2FIdlLBPYbIUlMtWSLs5ulcRcuV93cR3T65lkK5SJP4MGBRt9kmWGXiQc0f7+FHj/0BEawditZcI/fQ==", + "version": "1.27.2", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.27.2.tgz", + "integrity": "sha512-DM9OWUyjmdYdnKDpaGB/GEn9XkToyK1tqxuqbmc5PV+5K8WjjwfygL3+cIvbkSw2v1ySwHDgqATq/+98pJ4Kyg==", "dev": true, "requires": { "@shikijs/vscode-textmate": "^10.0.1", @@ -15905,6 +16103,12 @@ "parse5": "^7.0.0" } }, + "@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -15931,9 +16135,9 @@ } }, "@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", "dev": true }, "@types/pixelmatch": { @@ -16117,12 +16321,6 @@ } } }, - "@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, "abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", @@ -16130,9 +16328,9 @@ "dev": true }, "acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true }, "acorn-globals": { @@ -16508,15 +16706,15 @@ } }, "browserslist": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", - "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001646", - "electron-to-chromium": "^1.5.4", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" } }, "bs-logger": { @@ -16540,9 +16738,9 @@ "dev": true }, "builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-4.0.0.tgz", + "integrity": "sha512-p1n8zyCkt1BVrKNFymOHjcDSAl7oq/gUvfgULv2EblgpPVQlQr9yHnWjg9IJ2MhfwPqiYqMMrr01OY7yQoK2yA==", "dev": true }, "caching-transform": { @@ -16589,9 +16787,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001649", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001649.tgz", - "integrity": "sha512-fJegqZZ0ZX8HOWr6rcafGr72+xcgJKI9oWfDW5DrD7ExUtgZC7a7R7ZYmZqplh7XDocFdGeIFn7roAxhOeYrPQ==", + "version": "1.0.30001700", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz", + "integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==", "dev": true }, "chalk": { @@ -16910,12 +17108,12 @@ } }, "core-js-compat": { - "version": "3.38.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", - "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.40.0.tgz", + "integrity": "sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==", "dev": true, "requires": { - "browserslist": "^4.23.3" + "browserslist": "^4.24.3" } }, "create-jest": { @@ -16941,7 +17139,9 @@ } }, "cross-spawn": { - "version": "7.0.3", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "requires": { "path-key": "^3.1.0", @@ -17249,13 +17449,6 @@ "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true }, - "doctrine": { - "version": "3.0.0", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, "dom-serializer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", @@ -17318,9 +17511,9 @@ } }, "electron-to-chromium": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.4.tgz", - "integrity": "sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==", + "version": "1.5.102", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.102.tgz", + "integrity": "sha512-eHhqaja8tE/FNpIiBrvBjFV/SSKpyWHLvxuR9dPTdo+3V9ppdLmFB7ZZQ98qNovcngPLYIz0oOBF9P0FfZef5Q==", "dev": true }, "emittery": { @@ -17512,9 +17705,9 @@ } }, "escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true }, "escape-string-regexp": { @@ -17534,12 +17727,6 @@ "source-map": "~0.6.1" }, "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -17582,65 +17769,52 @@ } }, "eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "version": "9.22.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.22.0.tgz", + "integrity": "sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.2", + "@eslint/config-helpers": "^0.1.0", + "@eslint/core": "^0.12.0", + "@eslint/eslintrc": "^3.3.0", + "@eslint/js": "9.22.0", + "@eslint/plugin-kit": "^0.2.7", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.3.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "dependencies": { - "eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true }, "find-up": { @@ -17825,9 +17999,9 @@ } }, "eslint-plugin-notice": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-notice/-/eslint-plugin-notice-1.0.0.tgz", - "integrity": "sha512-M3VLQMZzZpvfTZ/vy9FmClIKq5rLBbQpM0KgfLZPJPrVXpmJYeobmmb+lfJzHWdNm8PWwvw8KlafQWo2N9xx1Q==", + "version": "1.1.0-rc1", + "resolved": "https://registry.npmjs.org/eslint-plugin-notice/-/eslint-plugin-notice-1.1.0-rc1.tgz", + "integrity": "sha512-MoXjHXFV6uWBI77+cLru2uDGSNt07T8vmMhhpGdmxLr9OBsP3x330qOzu8XielO3J/0KD/5yt/IVqMNtxU65rQ==", "dev": true, "requires": { "find-root": "^1.1.0", @@ -17855,55 +18029,71 @@ } }, "eslint-plugin-unicorn": { - "version": "56.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-56.0.1.tgz", - "integrity": "sha512-FwVV0Uwf8XPfVnKSGpMg7NtlZh0G0gBarCaFcMUOoqPxXryxdYxTRRv4kH6B9TFCVIrjRXG+emcxIk2ayZilog==", + "version": "57.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-57.0.0.tgz", + "integrity": "sha512-zUYYa6zfNdTeG9BISWDlcLmz16c+2Ck2o5ZDHh0UzXJz3DEP7xjmlVDTzbyV0W+XksgZ0q37WEWzN2D2Ze+g9Q==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.24.7", - "@eslint-community/eslint-utils": "^4.4.0", - "ci-info": "^4.0.0", + "@babel/helper-validator-identifier": "^7.25.9", + "@eslint-community/eslint-utils": "^4.4.1", + "ci-info": "^4.1.0", "clean-regexp": "^1.0.0", - "core-js-compat": "^3.38.1", + "core-js-compat": "^3.40.0", "esquery": "^1.6.0", - "globals": "^15.9.0", - "indent-string": "^4.0.0", - "is-builtin-module": "^3.2.1", - "jsesc": "^3.0.2", + "globals": "^15.15.0", + "indent-string": "^5.0.0", + "is-builtin-module": "^4.0.0", + "jsesc": "^3.1.0", "pluralize": "^8.0.0", - "read-pkg-up": "^7.0.1", + "read-package-up": "^11.0.0", "regexp-tree": "^0.1.27", - "regjsparser": "^0.10.0", - "semver": "^7.6.3", - "strip-indent": "^3.0.0" + "regjsparser": "^0.12.0", + "semver": "^7.7.1", + "strip-indent": "^4.0.0" }, "dependencies": { "ci-info": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", - "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz", + "integrity": "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==", "dev": true }, "globals": { - "version": "15.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.11.0.tgz", - "integrity": "sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==", + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "dev": true + }, + "indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true }, "jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true }, "semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true } } }, + "eslint-scope": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, "eslint-visitor-keys": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", @@ -17911,14 +18101,22 @@ "dev": true }, "espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, "requires": { - "acorn": "^8.9.0", + "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "eslint-visitor-keys": "^4.2.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true + } } }, "esprima": { @@ -17932,29 +18130,23 @@ "dev": true, "requires": { "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } } }, "esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "requires": { "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "dev": true - } } }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, "estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", @@ -18061,13 +18253,6 @@ "integrity": "sha512-qY8NiI5L8ff00F2giyICiJxSSKHO52tC36LJqx2JtvGyAd5ZfehC/l4iUVVHpmpIa6sM9N5mneSLHQG2INGoHA==", "requires": { "strnum": "^2.0.5" - }, - "dependencies": { - "strnum": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.0.5.tgz", - "integrity": "sha512-YAT3K/sgpCUxhxNMrrdhtod3jckkpYwH6JAuwmUdXZsmzH1wUyzTMrrK2wYCEEqlKwrWDd35NeuUkbBy/1iK+Q==" - } } }, "fastq": { @@ -18094,10 +18279,12 @@ "requires": {} }, "file-entry-cache": { - "version": "6.0.1", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, "requires": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" } }, "filelist": { @@ -18195,27 +18382,26 @@ "path-exists": "^4.0.0" } }, + "find-up-simple": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz", + "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==", + "dev": true + }, "flat-cache": { - "version": "3.0.4", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } + "flatted": "^3.2.9", + "keyv": "^4.5.4" } }, "flatted": { - "version": "3.2.4", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", "dev": true }, "follow-redirects": { @@ -18598,9 +18784,9 @@ "dev": true }, "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -18631,6 +18817,12 @@ "version": "4.0.0", "dev": true }, + "index-to-position": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-0.1.2.tgz", + "integrity": "sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==", + "dev": true + }, "inflight": { "version": "1.0.6", "dev": true, @@ -18701,12 +18893,12 @@ } }, "is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-4.0.0.tgz", + "integrity": "sha512-rWP3AMAalQSesXO8gleROyL2iKU73SX5Er66losQn9rWOWL4Gef0a/xOEOVqjWGMuR2vHG3FJ8UUmT700O8oFg==", "dev": true, "requires": { - "builtin-modules": "^3.3.0" + "builtin-modules": "^4.0.0" } }, "is-bun-module": { @@ -18826,12 +19018,6 @@ "has-tostringtag": "^1.0.0" } }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, "is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", @@ -19793,6 +19979,8 @@ }, "js-tokens": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, "js-yaml": { @@ -19842,6 +20030,12 @@ "version": "2.5.2", "dev": true }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, "json-parse-better-errors": { "version": "1.0.2", "dev": true @@ -19876,6 +20070,15 @@ "universalify": "^2.0.0" } }, + "keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "requires": { + "json-buffer": "3.0.1" + } + }, "kleur": { "version": "3.0.3", "dev": true @@ -20560,9 +20763,9 @@ } }, "node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "dev": true }, "normalize-package-data": { @@ -21555,75 +21758,93 @@ "pify": "^2.3.0" } }, - "read-pkg": { - "version": "3.0.0", + "read-package-up": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz", + "integrity": "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==", "dev": true, "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "find-up-simple": "^1.0.0", + "read-pkg": "^9.0.0", + "type-fest": "^4.6.0" }, "dependencies": { - "path-type": { - "version": "3.0.0", + "hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "dev": true, "requires": { - "pify": "^3.0.0" + "lru-cache": "^10.0.1" } }, - "pify": { - "version": "3.0.0", + "lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "dependencies": { + }, + "normalize-package-data": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", + "dev": true, + "requires": { + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + } + }, "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz", + "integrity": "sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "@babel/code-frame": "^7.22.13", + "index-to-position": "^0.1.2", + "type-fest": "^4.7.1" } }, "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", + "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", "dev": true, "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - } + "@types/normalize-package-data": "^2.4.3", + "normalize-package-data": "^6.0.0", + "parse-json": "^8.0.0", + "type-fest": "^4.6.0", + "unicorn-magic": "^0.1.0" } }, "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.35.0.tgz", + "integrity": "sha512-2/AwEFQDFEy30iOLjrvHDIH7e4HEWH+f1Yl1bI5XMqzuoCUqwYCdxachgsgv0og/JdVZUhbfjcJAoHj5L1753A==", + "dev": true + } + } + }, + "read-pkg": { + "version": "3.0.0", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", "dev": true } } @@ -21662,18 +21883,18 @@ } }, "regjsparser": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz", - "integrity": "sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", "dev": true, "requires": { - "jsesc": "~0.5.0" + "jsesc": "~3.0.2" }, "dependencies": { "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "dev": true } } @@ -22397,18 +22618,23 @@ "dev": true }, "strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", "dev": true, "requires": { - "min-indent": "^1.0.0" + "min-indent": "^1.0.1" } }, "strip-json-comments": { "version": "3.1.1", "dev": true }, + "strnum": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.0.5.tgz", + "integrity": "sha512-YAT3K/sgpCUxhxNMrrdhtod3jckkpYwH6JAuwmUdXZsmzH1wUyzTMrrK2wYCEEqlKwrWDd35NeuUkbBy/1iK+Q==" + }, "stylehacks": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.4.tgz", @@ -22530,10 +22756,6 @@ } } }, - "text-table": { - "version": "0.2.0", - "dev": true - }, "tinyglobby": { "version": "0.2.12", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz", @@ -22782,6 +23004,17 @@ "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true }, + "typescript-eslint": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.26.1.tgz", + "integrity": "sha512-t/oIs9mYyrwZGRpDv3g+3K6nZ5uhKEMt2oNmAPwaY4/ye0+EH4nXIPYNtkYFS6QHm+1DFg34DbglYBz5P9Xysg==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "8.26.1", + "@typescript-eslint/parser": "8.26.1", + "@typescript-eslint/utils": "8.26.1" + } + }, "uc.micro": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", @@ -22823,13 +23056,13 @@ "dev": true }, "update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", + "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", "dev": true, "requires": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" } }, "uri-js": { diff --git a/package.json b/package.json index 7afc8e10ca..97eda87698 100644 --- a/package.json +++ b/package.json @@ -75,8 +75,8 @@ "docs": "run-s docs:*", "docs:user": "node scripts/generate-users-documentation.mjs", "docs:api": "typedoc --tsconfig ./tsconfig.typedoc.json src/bpmn-visualization.ts", - "lint": "eslint \"**/*.{js,cjs,mjs,ts,cts,mts}\" --max-warnings 0 --quiet --fix", - "lint-check": "eslint \"**/*.{js,cjs,mjs,ts,cts,mts}\" --max-warnings 0", + "lint": "eslint \"{{dev,scripts,src,test}/**,.}/*.{js,cjs,mjs,ts,cts,mts}\" --max-warnings 0 --quiet --fix", + "lint-check": "eslint \"{{dev,scripts,src,test}/**,.}/*.{js,cjs,mjs,ts,cts,mts}\" --max-warnings 0", "test": "run-s test:unit test:integration test:e2e", "test:unit": "jest --runInBand --config=./test/unit/jest.config.cjs", "test:unit:coverage": "npm run test:unit -- --coverage", @@ -111,6 +111,7 @@ }, "devDependencies": { "@asciidoctor/core": "~3.0.4", + "@eslint/js": "~9.22.0", "@microsoft/api-extractor": "~7.52.1", "@rollup/plugin-commonjs": "~28.0.3", "@rollup/plugin-node-resolve": "~16.0.0", @@ -119,22 +120,20 @@ "@types/debug": "~4.1.12", "@types/jest-image-snapshot": "~6.4.0", "@types/minimist": "~1.2.5", - "@typescript-eslint/eslint-plugin": "~8.26.1", - "@typescript-eslint/parser": "~8.26.1", "clipboardy": "~4.0.0", "cross-env": "~7.0.3", "cssnano": "~7.0.6", "debug": "~4.4.0", - "eslint": "~8.57.0", + "eslint": "~9.22.0", "eslint-config-prettier": "~10.1.1", "eslint-import-resolver-typescript": "~3.8.4", "eslint-plugin-import": "~2.31.0", "eslint-plugin-jest": "~28.11.0", - "eslint-plugin-jest-extended": "^3.0.0", - "eslint-plugin-notice": "~1.0.0", + "eslint-plugin-jest-extended": "~3.0.0", + "eslint-plugin-notice": "~1.1.0-rc1", "eslint-plugin-playwright": "~2.2.0", "eslint-plugin-prettier": "~5.2.3", - "eslint-plugin-unicorn": "~56.0.1", + "eslint-plugin-unicorn": "~57.0.0", "expect-playwright": "~0.8.0", "fs-extra": "~11.3.0", "husky": "~9.1.7", @@ -164,6 +163,7 @@ "ts-jest": "~29.2.6", "typedoc": "~0.27.9", "typescript": "~5.8.2", + "typescript-eslint": "~8.26.1", "vite": "~6.2.1" }, "overrides": { diff --git a/scripts/add-license-header.mjs b/scripts/add-license-header.mjs index 987040a4d0..a8d441409b 100644 --- a/scripts/add-license-header.mjs +++ b/scripts/add-license-header.mjs @@ -17,6 +17,7 @@ limitations under the License. import fs, { readFileSync } from 'node:fs'; import { computeBanner } from './shared/banner.mjs'; +// eslint-disable-next-line import/namespace import { getTypeFilesInformation } from './shared/types-info.mjs'; const { notSupportedTSVersionsFilePath, typesFilePath } = getTypeFilesInformation(); diff --git a/scripts/generate-types-for-not-supported-ts-versions.mjs b/scripts/generate-types-for-not-supported-ts-versions.mjs index 0039bd01df..a266efd265 100644 --- a/scripts/generate-types-for-not-supported-ts-versions.mjs +++ b/scripts/generate-types-for-not-supported-ts-versions.mjs @@ -16,6 +16,7 @@ limitations under the License. import * as fs from 'node:fs'; +// eslint-disable-next-line import/namespace import { getTypeFilesInformation } from './shared/types-info.mjs'; // generate a definition file for not supported TS versions. It provokes syntax error to show an explicit message about what are the supported versions. diff --git a/src/component/BpmnVisualization.ts b/src/component/BpmnVisualization.ts index 9ceba2a2dd..98d7a293f6 100644 --- a/src/component/BpmnVisualization.ts +++ b/src/component/BpmnVisualization.ts @@ -18,7 +18,7 @@ import type { BpmnGraph } from './mxgraph/BpmnGraph'; import type { GlobalOptions, LoadOptions, ParserOptions, RendererOptions } from './options'; import type { BpmnElementsRegistry } from './registry'; -import { htmlElement } from './helpers/dom-utils'; +import { htmlElement } from './helpers/dom-utilities'; import { newBpmnRenderer } from './mxgraph/BpmnRenderer'; import GraphConfigurator from './mxgraph/GraphConfigurator'; import { Navigation } from './navigation'; diff --git a/src/component/helpers/array-utils.ts b/src/component/helpers/array-utilities.ts similarity index 100% rename from src/component/helpers/array-utils.ts rename to src/component/helpers/array-utilities.ts diff --git a/src/component/helpers/dom-utils.ts b/src/component/helpers/dom-utilities.ts similarity index 100% rename from src/component/helpers/dom-utils.ts rename to src/component/helpers/dom-utilities.ts diff --git a/src/component/mxgraph/BpmnCellRenderer.ts b/src/component/mxgraph/BpmnCellRenderer.ts index ceb87eb335..362e6a797b 100644 --- a/src/component/mxgraph/BpmnCellRenderer.ts +++ b/src/component/mxgraph/BpmnCellRenderer.ts @@ -20,7 +20,7 @@ import type { mxCellState, mxImageShape, mxShape } from 'mxgraph'; import { mxgraph, mxRectangle } from './initializer'; import { MxGraphCustomOverlay } from './overlay/custom-overlay'; import { OverlayBadgeShape } from './overlay/shapes'; -import { overrideCreateSvgCanvas } from './shape/utils'; +import { overrideCreateSvgCanvas } from './shape/utilities'; export class BpmnCellRenderer extends mxgraph.mxCellRenderer { constructor(private readonly iconPainter: IconPainter) { diff --git a/src/component/mxgraph/BpmnRenderer.ts b/src/component/mxgraph/BpmnRenderer.ts index 5a894fbf56..d514f01b72 100644 --- a/src/component/mxgraph/BpmnRenderer.ts +++ b/src/component/mxgraph/BpmnRenderer.ts @@ -23,7 +23,7 @@ import type { FitOptions, RendererOptions } from '../options'; import type { RenderedModel } from '../registry/bpmn-model-registry'; import type { mxCell } from 'mxgraph'; -import { MessageVisibleKind, ShapeUtil } from '../../model/bpmn/internal'; +import { MessageVisibleKind, ShapeUtility } from '../../model/bpmn/internal'; import { MessageFlow } from '../../model/bpmn/internal/edge/flows'; import { mxPoint } from './initializer'; @@ -74,7 +74,7 @@ export class BpmnRenderer { const bounds = shape.bounds; let labelBounds = shape.label?.bounds; // pool/lane label bounds are not managed for now (use hard coded values) - labelBounds = ShapeUtil.isPoolOrLane(bpmnElement.kind) ? undefined : labelBounds; + labelBounds = ShapeUtility.isPoolOrLane(bpmnElement.kind) ? undefined : labelBounds; const style = this.styleComputer.computeStyle(shape, labelBounds); this.insertVertex(parent, bpmnElement.id, bpmnElement.name, bounds, labelBounds, style); diff --git a/src/component/mxgraph/config/StyleConfigurator.ts b/src/component/mxgraph/config/StyleConfigurator.ts index 372bc35f9b..67c31193f2 100644 --- a/src/component/mxgraph/config/StyleConfigurator.ts +++ b/src/component/mxgraph/config/StyleConfigurator.ts @@ -17,7 +17,7 @@ limitations under the License. import type { BpmnGraph } from '../BpmnGraph'; import type { mxStylesheet, StyleMap } from 'mxgraph'; -import { AssociationDirectionKind, FlowKind, SequenceFlowKind, ShapeBpmnElementKind, ShapeUtil } from '../../../model/bpmn/internal'; +import { AssociationDirectionKind, FlowKind, SequenceFlowKind, ShapeBpmnElementKind, ShapeUtility } from '../../../model/bpmn/internal'; import { mxConstants, mxPerimeter } from '../initializer'; import { BpmnStyleIdentifier, MarkerIdentifier, StyleDefault } from '../style'; @@ -179,7 +179,7 @@ export class StyleConfigurator { } private configureEventStyles(): void { - for (const kind of ShapeUtil.eventKinds()) { + for (const kind of ShapeUtility.eventKinds()) { const style: StyleMap = {}; style[mxConstants.STYLE_SHAPE] = kind; style[mxConstants.STYLE_PERIMETER] = mxPerimeter.EllipsePerimeter; @@ -215,7 +215,7 @@ export class StyleConfigurator { } private configureActivityStyles(): void { - for (const kind of ShapeUtil.activityKinds()) { + for (const kind of ShapeUtility.activityKinds()) { const style: StyleMap = {}; style[mxConstants.STYLE_SHAPE] = kind; style[mxConstants.STYLE_ROUNDED] = true; // required by the BPMN specification @@ -226,7 +226,7 @@ export class StyleConfigurator { } private configureGatewayStyles(): void { - for (const kind of ShapeUtil.gatewayKinds()) { + for (const kind of ShapeUtility.gatewayKinds()) { const style: StyleMap = {}; style[mxConstants.STYLE_SHAPE] = kind; style[mxConstants.STYLE_PERIMETER] = mxPerimeter.RhombusPerimeter; diff --git a/src/component/mxgraph/initializer.ts b/src/component/mxgraph/initializer.ts index bbecd222da..d0b2edd1bf 100644 --- a/src/component/mxgraph/initializer.ts +++ b/src/component/mxgraph/initializer.ts @@ -52,11 +52,10 @@ export const mxRectangleShape = mxgraph.mxRectangleShape; /** @internal */ export const mxSvgCanvas2D = mxgraph.mxSvgCanvas2D; /** @internal */ -export const mxUtils = mxgraph.mxUtils; +export const mxUtilities = mxgraph.mxUtils; /** @internal */ declare global { - // eslint-disable-next-line @typescript-eslint/consistent-type-definitions -- Since we are overriding an existing interface in the global scope, it is not possible to convert it to a type. interface Window { mxForceIncludes: boolean; mxLoadResources: boolean; diff --git a/src/component/mxgraph/overlay/updater.ts b/src/component/mxgraph/overlay/updater.ts index c72aa98bfe..868c20c5fe 100644 --- a/src/component/mxgraph/overlay/updater.ts +++ b/src/component/mxgraph/overlay/updater.ts @@ -17,7 +17,7 @@ limitations under the License. import type { Overlay } from '../../registry'; import type { BpmnGraph } from '../BpmnGraph'; -import { ensureIsArray } from '../../helpers/array-utils'; +import { ensureIsArray } from '../../helpers/array-utilities'; import { OverlayConverter } from './converter'; import { MxGraphCustomOverlay } from './custom-overlay'; diff --git a/src/component/mxgraph/renderer/StyleComputer.ts b/src/component/mxgraph/renderer/StyleComputer.ts index b77d1f432e..a81dfa1a84 100644 --- a/src/component/mxgraph/renderer/StyleComputer.ts +++ b/src/component/mxgraph/renderer/StyleComputer.ts @@ -19,7 +19,7 @@ import type { Edge } from '../../../model/bpmn/internal/edge/edge'; import type { Font } from '../../../model/bpmn/internal/Label'; import type { RendererOptions } from '../../options'; -import { MessageVisibleKind, ShapeBpmnCallActivityKind, ShapeBpmnElementKind, ShapeBpmnMarkerKind, ShapeUtil } from '../../../model/bpmn/internal'; +import { MessageVisibleKind, ShapeBpmnCallActivityKind, ShapeBpmnElementKind, ShapeBpmnMarkerKind, ShapeUtility } from '../../../model/bpmn/internal'; import { AssociationFlow, SequenceFlow } from '../../../model/bpmn/internal/edge/flows'; import Shape from '../../../model/bpmn/internal/shape/Shape'; import { @@ -70,7 +70,7 @@ export default class StyleComputer { computeEventShapeStyle(bpmnElement, styleValues); } else if (bpmnElement instanceof ShapeBpmnActivity) { computeActivityShapeStyle(bpmnElement, styleValues); - } else if (ShapeUtil.isPoolOrLane(bpmnElement.kind)) { + } else if (ShapeUtility.isPoolOrLane(bpmnElement.kind)) { // mxConstants.STYLE_HORIZONTAL is for the label // In BPMN, isHorizontal is for the Shape // So we invert the value when we switch from the BPMN value to the mxGraph value. @@ -85,7 +85,7 @@ export default class StyleComputer { const fillColor = extensions.fillColor; if (fillColor) { styleValues.set(mxConstants.STYLE_FILLCOLOR, fillColor); - if (ShapeUtil.isPoolOrLane(bpmnElement.kind)) { + if (ShapeUtility.isPoolOrLane(bpmnElement.kind)) { styleValues.set(mxConstants.STYLE_SWIMLANE_FILLCOLOR, fillColor); } } diff --git a/src/component/mxgraph/renderer/style-utils.ts b/src/component/mxgraph/renderer/style-utilities.ts similarity index 88% rename from src/component/mxgraph/renderer/style-utils.ts rename to src/component/mxgraph/renderer/style-utilities.ts index e013403f90..db1ea757af 100644 --- a/src/component/mxgraph/renderer/style-utils.ts +++ b/src/component/mxgraph/renderer/style-utilities.ts @@ -16,8 +16,8 @@ limitations under the License. import type { mxCell } from 'mxgraph'; -import { ShapeUtil } from '../../../model/bpmn/internal'; -import { isFlowKind } from '../../../model/bpmn/internal/edge/utils'; +import { ShapeUtility as ShapeUtility } from '../../../model/bpmn/internal'; +import { isFlowKind } from '../../../model/bpmn/internal/edge/utilities'; import { BpmnStyleIdentifier } from '../style/identifiers'; /** @@ -47,12 +47,12 @@ export function computeAllBpmnClassNames(style: string, isLabel: boolean): strin const bpmnElementKind = pseudoBpmnElementKind.replace(/shape=bpmn./g, ''); const typeClasses = new Map(); - typeClasses.set('bpmn-type-activity', ShapeUtil.isActivity(bpmnElementKind)); - typeClasses.set('bpmn-type-container', ShapeUtil.isPoolOrLane(bpmnElementKind)); - typeClasses.set('bpmn-type-event', ShapeUtil.isEvent(bpmnElementKind)); + typeClasses.set('bpmn-type-activity', ShapeUtility.isActivity(bpmnElementKind)); + typeClasses.set('bpmn-type-container', ShapeUtility.isPoolOrLane(bpmnElementKind)); + typeClasses.set('bpmn-type-event', ShapeUtility.isEvent(bpmnElementKind)); typeClasses.set('bpmn-type-flow', isFlowKind(bpmnElementKind)); - typeClasses.set('bpmn-type-gateway', ShapeUtil.isGateway(bpmnElementKind)); - typeClasses.set('bpmn-type-task', ShapeUtil.isTask(bpmnElementKind)); + typeClasses.set('bpmn-type-gateway', ShapeUtility.isGateway(bpmnElementKind)); + typeClasses.set('bpmn-type-task', ShapeUtility.isTask(bpmnElementKind)); for (const [className] of [...typeClasses].filter(([, isType]) => isType)) classes.push(className); classes.push(computeBpmnBaseClassName(bpmnElementKind)); diff --git a/src/component/mxgraph/shape/activity-shapes.ts b/src/component/mxgraph/shape/activity-shapes.ts index baa0e0ee39..5d5d233894 100644 --- a/src/component/mxgraph/shape/activity-shapes.ts +++ b/src/component/mxgraph/shape/activity-shapes.ts @@ -18,12 +18,12 @@ import type { BpmnCanvas, IconPainter, PaintParameter, ShapeConfiguration } from import type { mxAbstractCanvas2D } from 'mxgraph'; import { ShapeBpmnElementKind, ShapeBpmnMarkerKind, ShapeBpmnSubProcessKind } from '../../../model/bpmn/internal'; -import { mxRectangleShape, mxUtils } from '../initializer'; +import { mxRectangleShape, mxUtilities } from '../initializer'; import { BpmnStyleIdentifier, StyleDefault } from '../style'; -import { getBpmnIsInstantiating } from '../style/utils'; +import { getBpmnIsInstantiating } from '../style/utilities'; import { buildPaintParameter } from './render/icon-painter'; -import { orderActivityMarkers } from './render/utils'; +import { orderActivityMarkers } from './render/utilities'; function getMarkerIconOriginFunction(numberOfMarkers: number, markerPosition: number): (canvas: BpmnCanvas) => void { return numberOfMarkers === 1 @@ -62,7 +62,7 @@ export abstract class BaseActivityShape extends mxRectangleShape { } protected paintMarkerIcons(paintParameter: PaintParameter): void { - const markers = mxUtils.getValue(this.style, BpmnStyleIdentifier.MARKERS, undefined); + const markers = mxUtilities.getValue(this.style, BpmnStyleIdentifier.MARKERS, undefined); if (markers) { const orderedMarkers = orderActivityMarkers(markers.split(',')); for (const [index, marker] of orderedMarkers.entries()) { @@ -205,7 +205,7 @@ export class CallActivityShape extends BaseActivityShape { const paintParameter = buildPaintParameter({ canvas: c, x, y, width: w, height: h, shape: this }); - switch (mxUtils.getValue(this.style, BpmnStyleIdentifier.GLOBAL_TASK_KIND, undefined)) { + switch (mxUtilities.getValue(this.style, BpmnStyleIdentifier.GLOBAL_TASK_KIND, undefined)) { case ShapeBpmnElementKind.GLOBAL_TASK_MANUAL: { this.iconPainter.paintHandIcon({ ...paintParameter, @@ -247,7 +247,7 @@ export class CallActivityShape extends BaseActivityShape { */ export class SubProcessShape extends BaseActivityShape { override paintBackground(c: mxAbstractCanvas2D, x: number, y: number, w: number, h: number): void { - const subProcessKind = mxUtils.getValue(this.style, BpmnStyleIdentifier.SUB_PROCESS_KIND, undefined); + const subProcessKind = mxUtilities.getValue(this.style, BpmnStyleIdentifier.SUB_PROCESS_KIND, undefined); c.save(); // ensure we can later restore the configuration if (subProcessKind === ShapeBpmnSubProcessKind.EVENT) { c.setDashed(true, false); diff --git a/src/component/mxgraph/shape/edges.ts b/src/component/mxgraph/shape/edges.ts index a66fcdd189..c49c8f60fe 100644 --- a/src/component/mxgraph/shape/edges.ts +++ b/src/component/mxgraph/shape/edges.ts @@ -16,7 +16,7 @@ limitations under the License. import type { mxAbstractCanvas2D, mxPoint } from 'mxgraph'; -import { mxgraph, mxSvgCanvas2D, mxUtils } from '../initializer'; +import { mxgraph, mxSvgCanvas2D, mxUtilities } from '../initializer'; import { BpmnStyleIdentifier } from '../style'; export class BpmnConnector extends mxgraph.mxConnector { @@ -34,12 +34,12 @@ export class BpmnConnector extends mxgraph.mxConnector { c.setDashed(false, false); if (sourceMarker != null) { - c.setFillColor(mxUtils.getValue(this.style, BpmnStyleIdentifier.EDGE_START_FILL_COLOR, this.stroke)); + c.setFillColor(mxUtilities.getValue(this.style, BpmnStyleIdentifier.EDGE_START_FILL_COLOR, this.stroke)); sourceMarker(); } if (targetMarker != null) { - c.setFillColor(mxUtils.getValue(this.style, BpmnStyleIdentifier.EDGE_END_FILL_COLOR, this.stroke)); + c.setFillColor(mxUtilities.getValue(this.style, BpmnStyleIdentifier.EDGE_END_FILL_COLOR, this.stroke)); targetMarker(); } } diff --git a/src/component/mxgraph/shape/event-shapes.ts b/src/component/mxgraph/shape/event-shapes.ts index 7a1994c2fb..49f5605267 100644 --- a/src/component/mxgraph/shape/event-shapes.ts +++ b/src/component/mxgraph/shape/event-shapes.ts @@ -18,7 +18,7 @@ import type { BpmnCanvas, PaintParameter, IconPainter } from './render'; import type { mxAbstractCanvas2D } from 'mxgraph'; import { ShapeBpmnEventDefinitionKind } from '../../../model/bpmn/internal'; -import { mxgraph, mxUtils } from '../initializer'; +import { mxgraph, mxUtilities } from '../initializer'; import { BpmnStyleIdentifier, StyleDefault } from '../style'; import { buildPaintParameter } from './render/icon-painter'; @@ -90,7 +90,7 @@ export class EventShape extends mxgraph.mxEllipse { override paintVertexShape(c: mxAbstractCanvas2D, x: number, y: number, w: number, h: number): void { const paintParameter = buildPaintParameter({ canvas: c, x, y, width: w, height: h, shape: this, isFilled: this.withFilledIcon }); - setDashedOuterShapePattern(paintParameter, mxUtils.getValue(this.style, BpmnStyleIdentifier.IS_INTERRUPTING, undefined)); + setDashedOuterShapePattern(paintParameter, mxUtilities.getValue(this.style, BpmnStyleIdentifier.IS_INTERRUPTING, undefined)); this.paintOuterShape(paintParameter); restoreOriginalOuterShapePattern(paintParameter); @@ -102,7 +102,7 @@ export class EventShape extends mxgraph.mxEllipse { } private paintInnerShape(paintParameter: PaintParameter): void { - const paintIcon = this.iconPainters.get(mxUtils.getValue(this.style, BpmnStyleIdentifier.EVENT_DEFINITION_KIND, ShapeBpmnEventDefinitionKind.NONE)); + const paintIcon = this.iconPainters.get(mxUtilities.getValue(this.style, BpmnStyleIdentifier.EVENT_DEFINITION_KIND, ShapeBpmnEventDefinitionKind.NONE)); paintIcon?.(paintParameter); } } diff --git a/src/component/mxgraph/shape/flow-shapes.ts b/src/component/mxgraph/shape/flow-shapes.ts index a505517f70..a4c2d4a932 100644 --- a/src/component/mxgraph/shape/flow-shapes.ts +++ b/src/component/mxgraph/shape/flow-shapes.ts @@ -17,7 +17,7 @@ limitations under the License. import type { IconPainter } from './render'; import type { mxAbstractCanvas2D } from 'mxgraph'; -import { mxRectangleShape, mxUtils } from '../initializer'; +import { mxRectangleShape, mxUtilities } from '../initializer'; import { BpmnStyleIdentifier } from '../style'; import { buildPaintParameter } from './render/icon-painter'; @@ -38,7 +38,7 @@ export class MessageFlowIconShape extends mxRectangleShape { height: h, shape: this, ratioFromParent: 1, - isFilled: mxUtils.getValue(this.style, BpmnStyleIdentifier.IS_INITIATING, 'true') == 'false', + isFilled: mxUtilities.getValue(this.style, BpmnStyleIdentifier.IS_INITIATING, 'true') == 'false', }); this.iconPainter.paintEnvelopeIcon(paintParameter); diff --git a/src/component/mxgraph/shape/gateway-shapes.ts b/src/component/mxgraph/shape/gateway-shapes.ts index 3584720483..0a4c04eef4 100644 --- a/src/component/mxgraph/shape/gateway-shapes.ts +++ b/src/component/mxgraph/shape/gateway-shapes.ts @@ -18,9 +18,9 @@ import type { IconPainter, PaintParameter } from './render'; import type { mxAbstractCanvas2D } from 'mxgraph'; import { ShapeBpmnEventBasedGatewayKind } from '../../../model/bpmn/internal'; -import { mxgraph, mxUtils } from '../initializer'; +import { mxgraph, mxUtilities } from '../initializer'; import { BpmnStyleIdentifier, StyleDefault } from '../style'; -import { getBpmnIsInstantiating } from '../style/utils'; +import { getBpmnIsInstantiating } from '../style/utilities'; import { buildPaintParameter } from './render/icon-painter'; @@ -117,7 +117,7 @@ export class EventBasedGatewayShape extends GatewayShape { ...paintParameter, ratioFromParent: 0.3, }; - if (mxUtils.getValue(this.style, BpmnStyleIdentifier.EVENT_BASED_GATEWAY_KIND, ShapeBpmnEventBasedGatewayKind.Exclusive) == ShapeBpmnEventBasedGatewayKind.Parallel) { + if (mxUtilities.getValue(this.style, BpmnStyleIdentifier.EVENT_BASED_GATEWAY_KIND, ShapeBpmnEventBasedGatewayKind.Exclusive) == ShapeBpmnEventBasedGatewayKind.Parallel) { this.iconPainter.paintPlusCrossIcon(innerIconPaintParameter); } else { this.iconPainter.paintPentagon(innerIconPaintParameter); diff --git a/src/component/mxgraph/shape/render/icon-painter.ts b/src/component/mxgraph/shape/render/icon-painter.ts index b2fd03026f..708704a8b3 100644 --- a/src/component/mxgraph/shape/render/icon-painter.ts +++ b/src/component/mxgraph/shape/render/icon-painter.ts @@ -17,7 +17,7 @@ limitations under the License. import type { IconStyleConfiguration, ShapeConfiguration, Size } from './render-types'; import type { mxAbstractCanvas2D, mxShape } from 'mxgraph'; -import { mxConstants, mxUtils } from '../../initializer'; +import { mxConstants, mxUtilities } from '../../initializer'; import { StyleDefault } from '../../style'; import { BpmnCanvas } from './BpmnCanvas'; @@ -68,10 +68,10 @@ export function buildPaintParameter({ isFilled?: boolean; iconStrokeWidth?: number; }): PaintParameter { - const shapeStrokeWidth = mxUtils.getValue(shape.style, mxConstants.STYLE_STROKEWIDTH, StyleDefault.STROKE_WIDTH_THIN); - const fillColor = mxUtils.getValue(shape.style, mxConstants.STYLE_FILLCOLOR, StyleDefault.DEFAULT_FILL_COLOR); - const strokeColor = mxUtils.getValue(shape.style, mxConstants.STYLE_STROKECOLOR, StyleDefault.DEFAULT_STROKE_COLOR); - const margin = mxUtils.getValue(shape.style, mxConstants.STYLE_MARGIN, StyleDefault.DEFAULT_MARGIN); + const shapeStrokeWidth = mxUtilities.getValue(shape.style, mxConstants.STYLE_STROKEWIDTH, StyleDefault.STROKE_WIDTH_THIN); + const fillColor = mxUtilities.getValue(shape.style, mxConstants.STYLE_FILLCOLOR, StyleDefault.DEFAULT_FILL_COLOR); + const strokeColor = mxUtilities.getValue(shape.style, mxConstants.STYLE_STROKECOLOR, StyleDefault.DEFAULT_STROKE_COLOR); + const margin = mxUtilities.getValue(shape.style, mxConstants.STYLE_MARGIN, StyleDefault.DEFAULT_MARGIN); ratioFromParent ??= 0.25; isFilled ??= false; iconStrokeWidth ??= 0; diff --git a/src/component/mxgraph/shape/render/utils.ts b/src/component/mxgraph/shape/render/utilities.ts similarity index 100% rename from src/component/mxgraph/shape/render/utils.ts rename to src/component/mxgraph/shape/render/utilities.ts diff --git a/src/component/mxgraph/shape/utils.ts b/src/component/mxgraph/shape/utilities.ts similarity index 99% rename from src/component/mxgraph/shape/utils.ts rename to src/component/mxgraph/shape/utilities.ts index e3c98355a3..8ed7298599 100644 --- a/src/component/mxgraph/shape/utils.ts +++ b/src/component/mxgraph/shape/utilities.ts @@ -17,7 +17,7 @@ limitations under the License. import type { mxShape, mxSvgCanvas2D } from 'mxgraph'; import { mxConstants } from '../initializer'; -import { computeAllBpmnClassNamesOfCell } from '../renderer/style-utils'; +import { computeAllBpmnClassNamesOfCell } from '../renderer/style-utilities'; import { BpmnStyleIdentifier } from '../style'; export const overrideCreateSvgCanvas = function (shape: mxShape): void { diff --git a/src/component/mxgraph/style/css-classes-updater.ts b/src/component/mxgraph/style/css-classes-updater.ts index fe924a2328..5e65ea8a75 100644 --- a/src/component/mxgraph/style/css-classes-updater.ts +++ b/src/component/mxgraph/style/css-classes-updater.ts @@ -18,7 +18,7 @@ import type { BpmnGraph } from '../BpmnGraph'; import { messageFlowIconId } from '../BpmnRenderer'; -import { setStyle } from './utils'; +import { setStyle } from './utilities'; import { BpmnStyleIdentifier } from './index'; diff --git a/src/component/mxgraph/style/index.ts b/src/component/mxgraph/style/index.ts index 107b38d400..59736bf664 100644 --- a/src/component/mxgraph/style/index.ts +++ b/src/component/mxgraph/style/index.ts @@ -14,5 +14,5 @@ See the License for the specific language governing permissions and limitations under the License. */ -export { StyleDefault } from './utils'; +export { StyleDefault } from './utilities'; export * from './identifiers'; diff --git a/src/component/mxgraph/style/style-updater.ts b/src/component/mxgraph/style/style-updater.ts index 5a56f9cfba..98f127f80a 100644 --- a/src/component/mxgraph/style/style-updater.ts +++ b/src/component/mxgraph/style/style-updater.ts @@ -18,12 +18,12 @@ import type { StyleUpdate } from '../../registry'; import type { BpmnGraph } from '../BpmnGraph'; import type { mxCell, mxGraphModel } from 'mxgraph'; -import { ensureIsArray } from '../../helpers/array-utils'; +import { ensureIsArray } from '../../helpers/array-utilities'; import { ensureOpacityValue } from '../../helpers/validators'; import { messageFlowIconId } from '../BpmnRenderer'; import { mxConstants } from '../initializer'; -import { getStyleValue, isShapeStyleUpdate, setStyle, updateFill, updateFont, updateStroke } from './utils'; +import { getStyleValue, isShapeStyleUpdate, setStyle, updateFill, updateFont, updateStroke } from './utilities'; import { BpmnStyleIdentifier } from '.'; diff --git a/src/component/mxgraph/style/utils.ts b/src/component/mxgraph/style/utilities.ts similarity index 89% rename from src/component/mxgraph/style/utils.ts rename to src/component/mxgraph/style/utilities.ts index b6d7e4ce43..0e4a7c2962 100644 --- a/src/component/mxgraph/style/utils.ts +++ b/src/component/mxgraph/style/utilities.ts @@ -18,7 +18,7 @@ import type { Fill, Font, ShapeStyleUpdate, Stroke, StyleUpdate, GradientDirecti import { ShapeBpmnElementKind } from '../../../model/bpmn/internal'; import { ensureOpacityValue, ensureStrokeWidthValue } from '../../helpers/validators'; -import { mxConstants, mxUtils } from '../initializer'; +import { mxConstants, mxUtilities as mxUtilities } from '../initializer'; import { BpmnStyleIdentifier } from './identifiers'; @@ -80,7 +80,7 @@ export const StyleDefault = { * @internal * @private */ -export const getBpmnIsInstantiating = (style: Record): boolean => mxUtils.getValue(style, BpmnStyleIdentifier.IS_INSTANTIATING, 'false') == 'true'; +export const getBpmnIsInstantiating = (style: Record): boolean => mxUtilities.getValue(style, BpmnStyleIdentifier.IS_INSTANTIATING, 'false') == 'true'; const convertDefaultValue = (value: string): string | undefined => (value == 'default' ? undefined : value); @@ -94,11 +94,11 @@ export const updateStroke = (cellStyle: string, stroke: Stroke): string => { }; export const setStyle = (cellStyle: string, key: string, value: T | undefined, converter: (value: T) => T | undefined = (value: T) => value): string => { - return value == undefined ? cellStyle : mxUtils.setStyle(cellStyle, key, converter(value)); + return value == undefined ? cellStyle : mxUtilities.setStyle(cellStyle, key, converter(value)); }; export const setStyleFlag = (cellStyle: string, key: string, flag: number, value: boolean | undefined): string => - value == undefined ? cellStyle : mxUtils.setStyleFlag(cellStyle, key, flag, value); + value == undefined ? cellStyle : mxUtilities.setStyleFlag(cellStyle, key, flag, value); export const updateFont = (cellStyle: string, font: Font): string => { if (font) { @@ -150,11 +150,11 @@ export const updateFill = (cellStyle: string, fill: Fill): string => { if (isGradient) { // The values of the color are mandatory. So, no need to check if it's undefined. - cellStyle = mxUtils.setStyle(cellStyle, mxConstants.STYLE_GRADIENTCOLOR, color.endColor); - cellStyle = mxUtils.setStyle(cellStyle, mxConstants.STYLE_GRADIENT_DIRECTION, convertDirection(color.direction)); + cellStyle = mxUtilities.setStyle(cellStyle, mxConstants.STYLE_GRADIENTCOLOR, color.endColor); + cellStyle = mxUtilities.setStyle(cellStyle, mxConstants.STYLE_GRADIENT_DIRECTION, convertDirection(color.direction)); } else if (color === 'default') { - cellStyle = mxUtils.setStyle(cellStyle, mxConstants.STYLE_GRADIENTCOLOR, undefined); - cellStyle = mxUtils.setStyle(cellStyle, mxConstants.STYLE_GRADIENT_DIRECTION, undefined); + cellStyle = mxUtilities.setStyle(cellStyle, mxConstants.STYLE_GRADIENTCOLOR, undefined); + cellStyle = mxUtilities.setStyle(cellStyle, mxConstants.STYLE_GRADIENT_DIRECTION, undefined); } if (cellStyle.includes(ShapeBpmnElementKind.POOL) || cellStyle.includes(ShapeBpmnElementKind.LANE)) { diff --git a/src/component/parser/json/BpmnJsonParser.ts b/src/component/parser/json/BpmnJsonParser.ts index d8474ea545..4bf9d91f79 100644 --- a/src/component/parser/json/BpmnJsonParser.ts +++ b/src/component/parser/json/BpmnJsonParser.ts @@ -24,7 +24,7 @@ import DiagramConverter from './converter/DiagramConverter'; import EventDefinitionConverter from './converter/EventDefinitionConverter'; import GlobalTaskConverter from './converter/GlobalTaskConverter'; import ProcessConverter from './converter/ProcessConverter'; -import { ConvertedElements } from './converter/utils'; +import { ConvertedElements } from './converter/utilities'; /** * @internal diff --git a/src/component/parser/json/converter/CategoryConverter.ts b/src/component/parser/json/converter/CategoryConverter.ts index 1c4bdfb586..452f841281 100644 --- a/src/component/parser/json/converter/CategoryConverter.ts +++ b/src/component/parser/json/converter/CategoryConverter.ts @@ -14,11 +14,11 @@ See the License for the specific language governing permissions and limitations under the License. */ -import type { ConvertedElements } from './utils'; +import type { ConvertedElements } from './utilities'; import type { TCategory } from '../../../../model/bpmn/json/baseElement/rootElement/rootElement'; import type { TDefinitions } from '../../../../model/bpmn/json/bpmn20'; -import { ensureIsArray } from '../../../helpers/array-utils'; +import { ensureIsArray } from '../../../helpers/array-utilities'; /** * @internal diff --git a/src/component/parser/json/converter/CollaborationConverter.ts b/src/component/parser/json/converter/CollaborationConverter.ts index 2f1c6458ab..e033521074 100644 --- a/src/component/parser/json/converter/CollaborationConverter.ts +++ b/src/component/parser/json/converter/CollaborationConverter.ts @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import type { ConvertedElements } from './utils'; +import type { ConvertedElements } from './utilities'; import type { TGroup, TTextAnnotation } from '../../../../model/bpmn/json/baseElement/artifact'; import type { TMessageFlow } from '../../../../model/bpmn/json/baseElement/baseElement'; import type { TParticipant } from '../../../../model/bpmn/json/baseElement/participant'; @@ -24,9 +24,9 @@ import type { ParsingMessageCollector } from '../../parsing-messages'; import { ShapeBpmnElementKind } from '../../../../model/bpmn/internal'; import { MessageFlow } from '../../../../model/bpmn/internal/edge/flows'; import ShapeBpmnElement from '../../../../model/bpmn/internal/shape/ShapeBpmnElement'; -import { ensureIsArray } from '../../../helpers/array-utils'; +import { ensureIsArray } from '../../../helpers/array-utilities'; -import { buildShapeBpmnGroup, convertAndRegisterAssociationFlows } from './utils'; +import { buildShapeBpmnGroup, convertAndRegisterAssociationFlows } from './utilities'; /** * @internal diff --git a/src/component/parser/json/converter/DiagramConverter.ts b/src/component/parser/json/converter/DiagramConverter.ts index 87bfd905f8..de686777c0 100644 --- a/src/component/parser/json/converter/DiagramConverter.ts +++ b/src/component/parser/json/converter/DiagramConverter.ts @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import type { ConvertedElements } from './utils'; +import type { ConvertedElements } from './utilities'; import type { Shapes } from '../../../../model/bpmn/internal/BpmnModel'; import type BpmnModel from '../../../../model/bpmn/internal/BpmnModel'; import type ShapeBpmnElement from '../../../../model/bpmn/internal/shape/ShapeBpmnElement'; @@ -22,13 +22,13 @@ import type { BPMNDiagram, BPMNEdge, BPMNLabel, BPMNLabelStyle, BPMNShape } from import type { Point } from '../../../../model/bpmn/json/dc'; import type { ParsingMessageCollector } from '../../parsing-messages'; -import { MessageVisibleKind, ShapeBpmnCallActivityKind, ShapeBpmnMarkerKind, ShapeUtil } from '../../../../model/bpmn/internal'; +import { MessageVisibleKind, ShapeBpmnCallActivityKind, ShapeBpmnMarkerKind, ShapeUtility } from '../../../../model/bpmn/internal'; import Bounds from '../../../../model/bpmn/internal/Bounds'; import { Edge, Waypoint } from '../../../../model/bpmn/internal/edge/edge'; import Label, { Font } from '../../../../model/bpmn/internal/Label'; import Shape from '../../../../model/bpmn/internal/shape/Shape'; import { ShapeBpmnCallActivity, ShapeBpmnSubProcess } from '../../../../model/bpmn/internal/shape/ShapeBpmnElement'; -import { ensureIsArray } from '../../../helpers/array-utils'; +import { ensureIsArray } from '../../../helpers/array-utilities'; import { EdgeUnknownBpmnElementWarning, LabelStyleMissingFontWarning, ShapeUnknownBpmnElementWarning } from '../warnings'; /** @@ -117,7 +117,7 @@ export default class DiagramConverter { } let isHorizontal; - if (ShapeUtil.isPoolOrLane(bpmnElement.kind)) { + if (ShapeUtility.isPoolOrLane(bpmnElement.kind)) { isHorizontal = bpmnShape.isHorizontal ?? true; } diff --git a/src/component/parser/json/converter/EventDefinitionConverter.ts b/src/component/parser/json/converter/EventDefinitionConverter.ts index 379d5de287..8d382cf32f 100644 --- a/src/component/parser/json/converter/EventDefinitionConverter.ts +++ b/src/component/parser/json/converter/EventDefinitionConverter.ts @@ -14,13 +14,13 @@ See the License for the specific language governing permissions and limitations under the License. */ -import type { ConvertedElements } from './utils'; +import type { ConvertedElements } from './utilities'; import type { TEventDefinition, TLinkEventDefinition } from '../../../../model/bpmn/json/baseElement/rootElement/eventDefinition'; import type { TDefinitions } from '../../../../model/bpmn/json/bpmn20'; -import { eventDefinitionKinds } from '../../../../model/bpmn/internal/shape/utils'; +import { eventDefinitionKinds } from '../../../../model/bpmn/internal/shape/utilities'; import { isTLinkEventDefinition } from '../../../../model/bpmn/json/baseElement/rootElement/eventDefinition'; -import { ensureIsArray } from '../../../helpers/array-utils'; +import { ensureIsArray } from '../../../helpers/array-utilities'; type EventDefinitions = string | TEventDefinition | (string | TEventDefinition)[]; diff --git a/src/component/parser/json/converter/GlobalTaskConverter.ts b/src/component/parser/json/converter/GlobalTaskConverter.ts index 6e64a6a999..6a1aecf452 100644 --- a/src/component/parser/json/converter/GlobalTaskConverter.ts +++ b/src/component/parser/json/converter/GlobalTaskConverter.ts @@ -14,13 +14,13 @@ See the License for the specific language governing permissions and limitations under the License. */ -import type { ConvertedElements } from './utils'; +import type { ConvertedElements } from './utilities'; import type { GlobalTaskKind } from '../../../../model/bpmn/internal'; import type { TGlobalTask } from '../../../../model/bpmn/json/baseElement/rootElement/globalTask'; import type { TDefinitions } from '../../../../model/bpmn/json/bpmn20'; import { ShapeBpmnElementKind } from '../../../../model/bpmn/internal'; -import { ensureIsArray } from '../../../helpers/array-utils'; +import { ensureIsArray } from '../../../helpers/array-utilities'; /** * @internal diff --git a/src/component/parser/json/converter/ProcessConverter.ts b/src/component/parser/json/converter/ProcessConverter.ts index c383467344..cb5af0f8ef 100644 --- a/src/component/parser/json/converter/ProcessConverter.ts +++ b/src/component/parser/json/converter/ProcessConverter.ts @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import type { ConvertedElements, RegisteredEventDefinition } from './utils'; +import type { ConvertedElements, RegisteredEventDefinition } from './utilities'; import type { BpmnEventKind } from '../../../../model/bpmn/internal'; import type { TGroup, TTextAnnotation } from '../../../../model/bpmn/json/baseElement/artifact'; import type { TLane, TLaneSet } from '../../../../model/bpmn/json/baseElement/baseElement'; @@ -34,7 +34,7 @@ import { ShapeBpmnEventDefinitionKind, ShapeBpmnMarkerKind, ShapeBpmnSubProcessKind, - ShapeUtil, + ShapeUtility as ShapeUtility, } from '../../../../model/bpmn/internal'; import { SequenceFlow } from '../../../../model/bpmn/internal/edge/flows'; import ShapeBpmnElement, { @@ -48,11 +48,11 @@ import ShapeBpmnElement, { ShapeBpmnStartEvent, ShapeBpmnSubProcess, } from '../../../../model/bpmn/internal/shape/ShapeBpmnElement'; -import { eventDefinitionKinds } from '../../../../model/bpmn/internal/shape/utils'; -import { ensureIsArray } from '../../../helpers/array-utils'; +import { eventDefinitionKinds } from '../../../../model/bpmn/internal/shape/utilities'; +import { ensureIsArray } from '../../../helpers/array-utilities'; import { BoundaryEventNotAttachedToActivityWarning, LaneUnknownFlowNodeReferenceWarning } from '../warnings'; -import { convertAndRegisterAssociationFlows, buildShapeBpmnGroup } from './utils'; +import { convertAndRegisterAssociationFlows, buildShapeBpmnGroup } from './utilities'; // semantically speaking, TTextAnnotation is not a FlowNode, but it is an Artifact type FlowNode = TFlowNode | TActivity | TReceiveTask | TEventBasedGateway | TTextAnnotation; @@ -78,7 +78,7 @@ const orderedFlowNodeBpmnTypes: BpmnSemanticType[] = [ 'adHocSubProcess', 'transaction', // process boundary events afterward as we need its parent activity to be available when building it - ...(ShapeUtil.flowNodeKinds().filter(kind => kind !== ShapeBpmnElementKind.EVENT_BOUNDARY) as BpmnSemanticType[]), + ...(ShapeUtility.flowNodeKinds().filter(kind => kind !== ShapeBpmnElementKind.EVENT_BOUNDARY) as BpmnSemanticType[]), ShapeBpmnElementKind.EVENT_BOUNDARY, ]; @@ -196,7 +196,7 @@ export default class ProcessConverter { for (const bpmnElement of ensureIsArray(bpmnElements)) { const shapeBpmnElement = this.buildFlowNodeBpmnElement(kind, bpmnElement, parentId, processedSemanticType); - if ('default' in bpmnElement && ShapeUtil.isWithDefaultSequenceFlow(kind)) { + if ('default' in bpmnElement && ShapeUtility.isWithDefaultSequenceFlow(kind)) { this.defaultSequenceFlowIds.push(bpmnElement.default); } @@ -210,9 +210,9 @@ export default class ProcessConverter { } private buildFlowNodeBpmnElement(kind: ShapeBpmnElementKind, bpmnElement: TFlowNode, parentId: string, processedSemanticType: BpmnSemanticType): ShapeBpmnElement { - if (ShapeUtil.isEvent(kind)) { + if (ShapeUtility.isEvent(kind)) { return this.buildShapeBpmnEvent(bpmnElement, kind as BpmnEventKind, parentId); - } else if (ShapeUtil.isActivity(kind)) { + } else if (ShapeUtility.isActivity(kind)) { return this.buildShapeBpmnActivity(bpmnElement, kind, parentId, processedSemanticType); } else if (kind == ShapeBpmnElementKind.GATEWAY_EVENT_BASED) { const eventBasedGatewayBpmnElement = bpmnElement as TEventBasedGateway; @@ -238,11 +238,11 @@ export default class ProcessConverter { private buildShapeBpmnActivity(bpmnElement: TActivity, kind: ShapeBpmnElementKind, parentId: string, processedSemanticType: BpmnSemanticType): ShapeBpmnActivity { const markers = buildMarkers(bpmnElement); - if (ShapeUtil.isSubProcess(kind)) { + if (ShapeUtility.isSubProcess(kind)) { return this.buildShapeBpmnSubProcess(bpmnElement, parentId, computeSubProcessKind(processedSemanticType, bpmnElement), markers); } - if (!ShapeUtil.isCallActivity(kind)) { + if (!ShapeUtility.isCallActivity(kind)) { // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- the 'instantiate' property doesn't always exist, in that case, it will be undefined // @ts-ignore return new ShapeBpmnActivity(bpmnElement.id, bpmnElement.name, kind, parentId, bpmnElement.instantiate, markers); @@ -268,14 +268,14 @@ export default class ProcessConverter { .reduce((counter, it) => counter + it, 0); // do we have a None Event? - if (numberOfEventDefinitions == 0 && ShapeUtil.canHaveNoneEvent(elementKind)) { + if (numberOfEventDefinitions == 0 && ShapeUtility.canHaveNoneEvent(elementKind)) { return new ShapeBpmnEvent(bpmnElement.id, bpmnElement.name, elementKind, ShapeBpmnEventDefinitionKind.NONE, parentId); } if (numberOfEventDefinitions == 1) { const [eventDefinitionKind, eventDefinitions] = [...eventDefinitionsByKind.entries()][0]; - const bpmnEvent = ShapeUtil.isCatchEvent(elementKind) + const bpmnEvent = ShapeUtility.isCatchEvent(elementKind) ? this.buildShapeBpmnCatchEvent(bpmnElement as TCatchEvent, elementKind, eventDefinitionKind, parentId) : this.buildShapeBpmnThrowEvent(bpmnElement as TThrowEvent, elementKind, eventDefinitionKind, parentId); @@ -293,10 +293,10 @@ export default class ProcessConverter { eventDefinitionKind: ShapeBpmnEventDefinitionKind, parentId: string, ): ShapeBpmnIntermediateCatchEvent | ShapeBpmnStartEvent | ShapeBpmnBoundaryEvent { - if (ShapeUtil.isBoundaryEvent(elementKind)) { + if (ShapeUtility.isBoundaryEvent(elementKind)) { return this.buildShapeBpmnBoundaryEvent(bpmnElement as TBoundaryEvent, eventDefinitionKind); } - if (ShapeUtil.isStartEvent(elementKind)) { + if (ShapeUtility.isStartEvent(elementKind)) { return new ShapeBpmnStartEvent(bpmnElement.id, bpmnElement.name, eventDefinitionKind, parentId, bpmnElement.isInterrupting); } return new ShapeBpmnIntermediateCatchEvent(bpmnElement.id, bpmnElement.name, eventDefinitionKind, parentId); @@ -308,7 +308,7 @@ export default class ProcessConverter { eventDefinitionKind: ShapeBpmnEventDefinitionKind, parentId: string, ): ShapeBpmnIntermediateThrowEvent | ShapeBpmnEvent { - if (ShapeUtil.isIntermediateThrowEvent(elementKind)) { + if (ShapeUtility.isIntermediateThrowEvent(elementKind)) { return new ShapeBpmnIntermediateThrowEvent(bpmnElement.id, bpmnElement.name, eventDefinitionKind, parentId); } return new ShapeBpmnEvent(bpmnElement.id, bpmnElement.name, elementKind, eventDefinitionKind, parentId); @@ -317,7 +317,7 @@ export default class ProcessConverter { private buildShapeBpmnBoundaryEvent(bpmnElement: TBoundaryEvent, eventDefinitionKind: ShapeBpmnEventDefinitionKind): ShapeBpmnBoundaryEvent { const parent = this.convertedElements.findFlowNode(bpmnElement.attachedToRef); - if (ShapeUtil.isActivity(parent?.kind)) { + if (ShapeUtility.isActivity(parent?.kind)) { return new ShapeBpmnBoundaryEvent(bpmnElement.id, bpmnElement.name, eventDefinitionKind, bpmnElement.attachedToRef, bpmnElement.cancelActivity); } else { this.parsingMessageCollector.warning(new BoundaryEventNotAttachedToActivityWarning(bpmnElement.id, bpmnElement.attachedToRef, parent?.kind)); @@ -380,7 +380,7 @@ export default class ProcessConverter { const shapeBpmnElement = this.convertedElements.findFlowNode(flowNodeReference); const laneId = lane.id; if (shapeBpmnElement) { - if (!ShapeUtil.isBoundaryEvent(shapeBpmnElement.kind)) { + if (!ShapeUtility.isBoundaryEvent(shapeBpmnElement.kind)) { shapeBpmnElement.parentId = laneId; } } else { @@ -401,8 +401,8 @@ export default class ProcessConverter { return SequenceFlowKind.DEFAULT; } else { const sourceShapeBpmnElement = this.convertedElements.findFlowNode(sequenceFlow.sourceRef); - if (sourceShapeBpmnElement && ShapeUtil.isWithDefaultSequenceFlow(sourceShapeBpmnElement.kind) && sequenceFlow.conditionExpression) { - return ShapeUtil.isActivity(sourceShapeBpmnElement.kind) ? SequenceFlowKind.CONDITIONAL_FROM_ACTIVITY : SequenceFlowKind.CONDITIONAL_FROM_GATEWAY; + if (sourceShapeBpmnElement && ShapeUtility.isWithDefaultSequenceFlow(sourceShapeBpmnElement.kind) && sequenceFlow.conditionExpression) { + return ShapeUtility.isActivity(sourceShapeBpmnElement.kind) ? SequenceFlowKind.CONDITIONAL_FROM_ACTIVITY : SequenceFlowKind.CONDITIONAL_FROM_GATEWAY; } } return SequenceFlowKind.NORMAL; diff --git a/src/component/parser/json/converter/utils.ts b/src/component/parser/json/converter/utilities.ts similarity index 98% rename from src/component/parser/json/converter/utils.ts rename to src/component/parser/json/converter/utilities.ts index dda3fe10bd..c11d62bf74 100644 --- a/src/component/parser/json/converter/utils.ts +++ b/src/component/parser/json/converter/utilities.ts @@ -23,7 +23,7 @@ import type { ParsingMessageCollector } from '../../parsing-messages'; import { ShapeBpmnElementKind } from '../../../../model/bpmn/internal'; import { AssociationFlow } from '../../../../model/bpmn/internal/edge/flows'; import ShapeBpmnElement from '../../../../model/bpmn/internal/shape/ShapeBpmnElement'; -import { ensureIsArray } from '../../../helpers/array-utils'; +import { ensureIsArray } from '../../../helpers/array-utilities'; import { GroupUnknownCategoryValueWarning } from '../warnings'; export type RegisteredEventDefinition = (Pick & Pick) & { diff --git a/src/component/registry/bpmn-elements-registry.ts b/src/component/registry/bpmn-elements-registry.ts index 7eaa50da3d..7fe88998ff 100644 --- a/src/component/registry/bpmn-elements-registry.ts +++ b/src/component/registry/bpmn-elements-registry.ts @@ -19,8 +19,8 @@ import type { BpmnElement, BpmnSemantic, CssClassesRegistry, ElementsRegistry, O import type { BpmnElementKind } from '../../model/bpmn/internal'; import type { BpmnGraph } from '../mxgraph/BpmnGraph'; -import { ensureIsArray } from '../helpers/array-utils'; -import { computeBpmnBaseClassName } from '../mxgraph/renderer/style-utils'; +import { ensureIsArray } from '../helpers/array-utilities'; +import { computeBpmnBaseClassName } from '../mxgraph/renderer/style-utilities'; import { createNewCssRegistry, type CssClassesRegistryImpl } from './css-registry'; import { createNewOverlaysRegistry } from './overlays-registry'; diff --git a/src/component/registry/bpmn-model-filters.ts b/src/component/registry/bpmn-model-filters.ts index 9201c255a5..cfb97c7e46 100644 --- a/src/component/registry/bpmn-model-filters.ts +++ b/src/component/registry/bpmn-model-filters.ts @@ -19,7 +19,7 @@ import type { Edge } from '../../model/bpmn/internal/edge/edge'; import type Shape from '../../model/bpmn/internal/shape/Shape'; import type { ModelFilter } from '../options'; -import { ensureIsArray } from '../helpers/array-utils'; +import { ensureIsArray } from '../helpers/array-utilities'; /** * @internal diff --git a/src/component/registry/bpmn-model-registry.ts b/src/component/registry/bpmn-model-registry.ts index 6094e2b870..683a3fc3f8 100644 --- a/src/component/registry/bpmn-model-registry.ts +++ b/src/component/registry/bpmn-model-registry.ts @@ -20,7 +20,7 @@ import type { Edge } from '../../model/bpmn/internal/edge/edge'; import type Shape from '../../model/bpmn/internal/shape/Shape'; import type { ModelFilter } from '../options'; -import { ShapeBpmnEventDefinitionKind, ShapeBpmnMarkerKind, ShapeUtil } from '../../model/bpmn/internal'; +import { ShapeBpmnEventDefinitionKind, ShapeBpmnMarkerKind, ShapeUtility } from '../../model/bpmn/internal'; import { Flow } from '../../model/bpmn/internal/edge/flows'; import ShapeBpmnElement, { ShapeBpmnCallActivity, @@ -91,7 +91,7 @@ function toRenderedModel(bpmnModel: BpmnModel): RenderedModel { bpmnModel.flowNodes .filter(shape => { const bpmnElement = shape.bpmnElement; - return ShapeUtil.isSubProcess(bpmnElement.kind) && (bpmnElement as ShapeBpmnSubProcess).markers.includes(ShapeBpmnMarkerKind.EXPAND); + return ShapeUtility.isSubProcess(bpmnElement.kind) && (bpmnElement as ShapeBpmnSubProcess).markers.includes(ShapeBpmnMarkerKind.EXPAND); }) .map(shape => shape.bpmnElement.id), ); @@ -101,9 +101,9 @@ function toRenderedModel(bpmnModel: BpmnModel): RenderedModel { const otherFlowNodes: Shape[] = []; for (const shape of bpmnModel.flowNodes) { const kind = shape.bpmnElement.kind; - if (ShapeUtil.isSubProcess(kind)) { + if (ShapeUtility.isSubProcess(kind)) { subprocesses.push(shape); - } else if (ShapeUtil.isBoundaryEvent(kind)) { + } else if (ShapeUtility.isBoundaryEvent(kind)) { boundaryEvents.push(shape); } else if (!collapsedSubProcessIds.has(shape.bpmnElement.parentId)) { otherFlowNodes.push(shape); diff --git a/src/component/registry/css-registry.ts b/src/component/registry/css-registry.ts index da82f35662..371e2b7e3d 100644 --- a/src/component/registry/css-registry.ts +++ b/src/component/registry/css-registry.ts @@ -17,7 +17,7 @@ limitations under the License. import type { CssClassesRegistry } from './types'; import type { BpmnGraph } from '../mxgraph/BpmnGraph'; -import { ensureIsArray } from '../helpers/array-utils'; +import { ensureIsArray } from '../helpers/array-utilities'; import { createNewCssClassesUpdater, type CssClassesUpdater } from '../mxgraph/style/css-classes-updater'; export function createNewCssRegistry(graph: BpmnGraph): CssClassesRegistryImpl { diff --git a/src/model/bpmn/internal/edge/utils.ts b/src/model/bpmn/internal/edge/utilities.ts similarity index 100% rename from src/model/bpmn/internal/edge/utils.ts rename to src/model/bpmn/internal/edge/utilities.ts diff --git a/src/model/bpmn/internal/shape/index.ts b/src/model/bpmn/internal/shape/index.ts index 1b5032ce0e..c209603399 100644 --- a/src/model/bpmn/internal/shape/index.ts +++ b/src/model/bpmn/internal/shape/index.ts @@ -15,4 +15,4 @@ limitations under the License. */ export * from './kinds'; -export { ShapeUtil } from './utils'; +export { ShapeUtility } from './utilities'; diff --git a/src/model/bpmn/internal/shape/utils.ts b/src/model/bpmn/internal/shape/utilities.ts similarity index 95% rename from src/model/bpmn/internal/shape/utils.ts rename to src/model/bpmn/internal/shape/utilities.ts index 89b7fc15f6..9951eb0178 100644 --- a/src/model/bpmn/internal/shape/utils.ts +++ b/src/model/bpmn/internal/shape/utilities.ts @@ -14,22 +14,22 @@ See the License for the specific language governing permissions and limitations under the License. */ -import type { FilterParameter } from '../../../../component/helpers/array-utils'; +import type { FilterParameter } from '../../../../component/helpers/array-utilities'; -import { filter } from '../../../../component/helpers/array-utils'; +import { filter } from '../../../../component/helpers/array-utilities'; import { ShapeBpmnElementKind, ShapeBpmnEventDefinitionKind } from './kinds'; /** * Utils to simplify the management of {@link ShapeBpmnElementKind}. * - * This class is mainly used for internal purpose. You may use it to customize the BPMN theme as proposed in the examples but be aware it is subject to change. + * This class is mainly used for internal purposes. You may use it to customize the BPMN theme as proposed in the examples but be aware it is subject to change. * * @category BPMN * @experimental */ // eslint-disable-next-line unicorn/no-static-only-class -- Breaking change on API -export class ShapeUtil { +export class ShapeUtility { static isEvent(kind: ShapeBpmnElementKind | string): boolean { return isKindOf(EVENT_KINDS, kind); } @@ -104,7 +104,7 @@ export class ShapeUtil { } static flowNodeKinds(): ShapeBpmnElementKind[] { - return Object.values(ShapeBpmnElementKind).filter(kind => !ShapeUtil.isPoolOrLane(kind)); + return Object.values(ShapeBpmnElementKind).filter(kind => !ShapeUtility.isPoolOrLane(kind)); } static isPoolOrLane(kind: ShapeBpmnElementKind | string): boolean { diff --git a/test/.eslintrc.cjs b/test/.eslintrc.cjs deleted file mode 100644 index 0ad4ee44ad..0000000000 --- a/test/.eslintrc.cjs +++ /dev/null @@ -1,36 +0,0 @@ -/* -Copyright 2021 Bonitasoft S.A. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -module.exports = { - plugins: ['jest', 'jest-extended'], - env: { - 'jest/globals': true, - }, - settings: { - jest: { - version: require('jest/package.json').version, - }, - }, - extends: ['plugin:jest/recommended', 'plugin:jest/style', 'plugin:jest-extended/all'], - rules: { - /* The rule list: https://github.com/jest-community/eslint-plugin-jest#rules */ - 'jest/prefer-expect-resolves': 'warn', - 'jest/prefer-spy-on': 'warn', - 'jest/prefer-todo': 'warn', - /* The rule didn't find the 'expect' in the called methods */ - 'jest/expect-expect': 'off', - }, -}; diff --git a/test/bundles/.eslintrc.cjs b/test/bundles/.eslintrc.cjs deleted file mode 100644 index 8f2feacfcf..0000000000 --- a/test/bundles/.eslintrc.cjs +++ /dev/null @@ -1,23 +0,0 @@ -/* -Copyright 2021 Bonitasoft S.A. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -module.exports = { - extends: ['plugin:playwright/recommended'], - rules: { - /* This rule is for playwright-test and we are using jest-playwright */ - 'playwright/no-standalone-expect': 'off', - }, -}; diff --git a/test/bundles/bundles.test.ts b/test/bundles/bundles.test.ts index 03c7710766..e09c392d07 100644 --- a/test/bundles/bundles.test.ts +++ b/test/bundles/bundles.test.ts @@ -15,12 +15,12 @@ limitations under the License. */ import 'jest-playwright-preset'; -import type { TargetedPageConfiguration } from '@test/shared/visu/bpmn-page-utils'; +import type { TargetedPageConfiguration } from '@test/shared/visu/bpmn-page-utilities'; import type { Page } from 'playwright'; import path from 'node:path'; -import { BpmnPageSvgTester } from '@test/shared/visu/bpmn-page-utils'; +import { BpmnPageSvgTester } from '@test/shared/visu/bpmn-page-utilities'; describe('bundles', () => { it('IIFE bundle - should generate BPMN Diagram SVG', async () => { diff --git a/test/bundles/jest.config.cjs b/test/bundles/jest.config.cjs index 7d27937160..e1154161b7 100644 --- a/test/bundles/jest.config.cjs +++ b/test/bundles/jest.config.cjs @@ -24,7 +24,7 @@ module.exports = { rootDir: '../..', roots: ['./test/bundles'], testMatch: ['**/?(*.)+(spec|test).[t]s'], - testTimeout: 20_000, + testTimeout: 20 * 1000, transform: { '^.+\\.ts?$': [ 'ts-jest', diff --git a/test/config/jest-playwright.cjs b/test/config/jest-playwright.cjs index e096f6bb24..7fb1a5451c 100644 --- a/test/config/jest-playwright.cjs +++ b/test/config/jest-playwright.cjs @@ -16,7 +16,7 @@ limitations under the License. const log = require('debug')('bv:test:config:pw'); -const { isRunningOnCISlowOS, isRunningOnCi } = require('../shared/environment-utils.cjs'); +const { isRunningOnCISlowOS, isRunningOnCi } = require('../shared/environment-utilities.cjs'); const computeBrowsersAndChannelConfiguration = defaultBrowsers => { log('Default browsers list', defaultBrowsers); @@ -88,13 +88,13 @@ const computeConfigurationForDevelopmentServerUsage = defaultBrowsers => { /** @type {import('jest-playwright-preset/types/global').ServerOptions} */ const serverOptions = { command: `npm run dev`, - port: 10_001, + port: 10001, basePath: '/dev/public/index.html', // if default or tcp, the test starts right away whereas the dev server is not available on http // for more details, see https://github.com/process-analytics/bpmn-visualization-js/pull/1056 protocol: 'http', // high value mainly for GitHub Workflows running on macOS (slow machines) and to build the bundle before start - launchTimeout: isRunningOnCi() ? 60_000 : 10_000, + launchTimeout: isRunningOnCi() ? 60 * 1000 : 10 * 1000, debug: true, usedPortAction: 'ignore', // your tests are executed, we assume that the server is already started waitOnScheme: { diff --git a/test/config/jest.retries.ts b/test/config/jest.retries.ts index 4630f91cbc..86b240d5af 100644 --- a/test/config/jest.retries.ts +++ b/test/config/jest.retries.ts @@ -17,7 +17,7 @@ limitations under the License. // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore use a shared js file with commonjs export // eslint-disable-next-line @typescript-eslint/no-require-imports -- use a shared js file with commonjs export -import environmentUtils = require('@test/shared/environment-utils.cjs'); +import environmentUtilities = require('@test/shared/environment-utilities.cjs'); -const onCi = environmentUtils.isRunningOnCi(); +const onCi = environmentUtilities.isRunningOnCi(); jest.retryTimes(onCi ? 3 : 0, { logErrorsBeforeRetry: true }); diff --git a/test/config/ts-jest.cjs b/test/config/ts-jest.cjs index b536463dca..7571d2b751 100644 --- a/test/config/ts-jest.cjs +++ b/test/config/ts-jest.cjs @@ -25,7 +25,7 @@ const { pathsToModuleNameMapper } = require('ts-jest'); let jsonTxt; try { jsonTxt = fs.readFileSync('./tsconfig.test.json', 'utf8'); -} catch { +} catch (_) { // when running from IDE (IntelliJ/Webstrom, the working directory is not the project root dir // for instance it can be tsconfig: '/test/unit', // so give a try to an alternate file path diff --git a/test/e2e/.eslintrc.cjs b/test/e2e/.eslintrc.cjs deleted file mode 100644 index 8f2feacfcf..0000000000 --- a/test/e2e/.eslintrc.cjs +++ /dev/null @@ -1,23 +0,0 @@ -/* -Copyright 2021 Bonitasoft S.A. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -module.exports = { - extends: ['plugin:playwright/recommended'], - rules: { - /* This rule is for playwright-test and we are using jest-playwright */ - 'playwright/no-standalone-expect': 'off', - }, -}; diff --git a/test/e2e/bpmn.colors.test.ts b/test/e2e/bpmn.colors.test.ts index 2d09fe02bb..d24f855568 100644 --- a/test/e2e/bpmn.colors.test.ts +++ b/test/e2e/bpmn.colors.test.ts @@ -18,8 +18,8 @@ import type { ImageSnapshotThresholdConfig } from './helpers/visu/image-snapshot import { ImageSnapshotConfigurator, MultiBrowserImageSnapshotThresholds } from './helpers/visu/image-snapshot-config'; -import { AvailableTestPages, PageTester } from '@test/shared/visu/bpmn-page-utils'; -import { getBpmnDiagramNames } from '@test/shared/visu/test-utils'; +import { AvailableTestPages, PageTester } from '@test/shared/visu/bpmn-page-utilities'; +import { getBpmnDiagramNames } from '@test/shared/visu/test-utilities'; class ImageSnapshotThresholdsModelColors extends MultiBrowserImageSnapshotThresholds { constructor() { diff --git a/test/e2e/bpmn.elements.collapsed.test.ts b/test/e2e/bpmn.elements.collapsed.test.ts index 00af263657..bcc9dd653f 100644 --- a/test/e2e/bpmn.elements.collapsed.test.ts +++ b/test/e2e/bpmn.elements.collapsed.test.ts @@ -18,8 +18,8 @@ import type { MatchImageSnapshotOptions } from 'jest-image-snapshot'; import { ImageSnapshotConfigurator, MultiBrowserImageSnapshotThresholds } from './helpers/visu/image-snapshot-config'; -import { AvailableTestPages, PageTester } from '@test/shared/visu/bpmn-page-utils'; -import { getBpmnDiagramNames } from '@test/shared/visu/test-utils'; +import { AvailableTestPages, PageTester } from '@test/shared/visu/bpmn-page-utilities'; +import { getBpmnDiagramNames } from '@test/shared/visu/test-utilities'; // key: diagram name // values: the ids of the elements to collapse. The elements are collapsed one by one, in dedicated tests diff --git a/test/e2e/bpmn.elements.filter.pools.test.ts b/test/e2e/bpmn.elements.filter.pools.test.ts index 70c38e5292..d812144ffa 100644 --- a/test/e2e/bpmn.elements.filter.pools.test.ts +++ b/test/e2e/bpmn.elements.filter.pools.test.ts @@ -18,7 +18,7 @@ import type { MatchImageSnapshotOptions } from 'jest-image-snapshot'; import { ImageSnapshotConfigurator, MultiBrowserImageSnapshotThresholds } from './helpers/visu/image-snapshot-config'; -import { AvailableTestPages, PageTester } from '@test/shared/visu/bpmn-page-utils'; +import { AvailableTestPages, PageTester } from '@test/shared/visu/bpmn-page-utilities'; class FilterPoolsImageSnapshotConfigurator extends ImageSnapshotConfigurator { override getConfig(name: string): MatchImageSnapshotOptions { diff --git a/test/e2e/bpmn.rendering.test.ts b/test/e2e/bpmn.rendering.test.ts index 4f13be0869..160b4ea5be 100644 --- a/test/e2e/bpmn.rendering.test.ts +++ b/test/e2e/bpmn.rendering.test.ts @@ -16,12 +16,12 @@ limitations under the License. import 'jest-playwright-preset'; import type { ImageSnapshotThresholdConfig } from './helpers/visu/image-snapshot-config'; -import type { StyleOptions } from '@test/shared/visu/bpmn-page-utils'; +import type { StyleOptions } from '@test/shared/visu/bpmn-page-utilities'; import { ImageSnapshotConfigurator, MultiBrowserImageSnapshotThresholds } from './helpers/visu/image-snapshot-config'; -import { AvailableTestPages, PageTester } from '@test/shared/visu/bpmn-page-utils'; -import { getBpmnDiagramNames } from '@test/shared/visu/test-utils'; +import { AvailableTestPages, PageTester } from '@test/shared/visu/bpmn-page-utilities'; +import { getBpmnDiagramNames } from '@test/shared/visu/test-utilities'; class ImageSnapshotThresholds extends MultiBrowserImageSnapshotThresholds { constructor() { diff --git a/test/e2e/bpmn.theme.test.ts b/test/e2e/bpmn.theme.test.ts index ab4bcfef54..c3e09644c9 100644 --- a/test/e2e/bpmn.theme.test.ts +++ b/test/e2e/bpmn.theme.test.ts @@ -14,11 +14,11 @@ See the License for the specific language governing permissions and limitations under the License. */ -import type { StyleOptions } from '@test/shared/visu/bpmn-page-utils'; +import type { StyleOptions } from '@test/shared/visu/bpmn-page-utilities'; import { ImageSnapshotConfigurator, MultiBrowserImageSnapshotThresholds } from './helpers/visu/image-snapshot-config'; -import { AvailableTestPages, PageTester } from '@test/shared/visu/bpmn-page-utils'; +import { AvailableTestPages, PageTester } from '@test/shared/visu/bpmn-page-utilities'; const styleOptionsPerUseCase = new Map([ [ diff --git a/test/e2e/diagram.navigation.fit.test.ts b/test/e2e/diagram.navigation.fit.test.ts index 6203db959f..970bb87adf 100644 --- a/test/e2e/diagram.navigation.fit.test.ts +++ b/test/e2e/diagram.navigation.fit.test.ts @@ -24,8 +24,8 @@ import { ImageSnapshotConfigurator, MultiBrowserImageSnapshotThresholds, withCus import 'jest-playwright-preset'; import { FitType } from '@lib/component/options'; -import { AvailableTestPages, PageTester } from '@test/shared/visu/bpmn-page-utils'; -import { getBpmnDiagramNames } from '@test/shared/visu/test-utils'; +import { AvailableTestPages, PageTester } from '@test/shared/visu/bpmn-page-utilities'; +import { getBpmnDiagramNames } from '@test/shared/visu/test-utilities'; class FitImageSnapshotConfigurator extends ImageSnapshotConfigurator { override getConfig(parameter: { diff --git a/test/e2e/diagram.navigation.zoom.pan.test.ts b/test/e2e/diagram.navigation.zoom.pan.test.ts index 626a9d39ba..e1d1075d57 100644 --- a/test/e2e/diagram.navigation.zoom.pan.test.ts +++ b/test/e2e/diagram.navigation.zoom.pan.test.ts @@ -15,7 +15,7 @@ limitations under the License. */ import type { ImageSnapshotThresholdConfig } from './helpers/visu/image-snapshot-config'; -import type { Point } from '@test/shared/visu/bpmn-page-utils'; +import type { Point } from '@test/shared/visu/bpmn-page-utilities'; import path from 'node:path'; @@ -25,7 +25,7 @@ import { withCustomOutputDirectory, ImageSnapshotConfigurator, MultiBrowserImage import 'jest-playwright-preset'; import { ZoomType } from '@lib/component/options'; -import { AvailableTestPages, PageTester } from '@test/shared/visu/bpmn-page-utils'; +import { AvailableTestPages, PageTester } from '@test/shared/visu/bpmn-page-utilities'; const log = debugLogger('bv:test:e2e:navigation:zoom-pan'); diff --git a/test/e2e/generated.svg.test.ts b/test/e2e/generated.svg.test.ts index fbddb2dae4..ac73409252 100644 --- a/test/e2e/generated.svg.test.ts +++ b/test/e2e/generated.svg.test.ts @@ -15,7 +15,7 @@ limitations under the License. */ import 'jest-playwright-preset'; -import { AvailableTestPages, BpmnPageSvgTester } from '@test/shared/visu/bpmn-page-utils'; +import { AvailableTestPages, BpmnPageSvgTester } from '@test/shared/visu/bpmn-page-utilities'; const diagramSubfolder = 'svg'; diff --git a/test/e2e/helpers/visu/image-snapshot-config.ts b/test/e2e/helpers/visu/image-snapshot-config.ts index 3be42d55fc..4f69b89e18 100644 --- a/test/e2e/helpers/visu/image-snapshot-config.ts +++ b/test/e2e/helpers/visu/image-snapshot-config.ts @@ -18,7 +18,7 @@ import type { MatchImageSnapshotOptions } from 'jest-image-snapshot'; import path from 'node:path'; -import { configLog, getSimplePlatformName, getTestedBrowserFamily } from '@test/shared/visu/test-utils'; +import { configLog, getSimplePlatformName, getTestedBrowserFamily } from '@test/shared/visu/test-utilities'; export interface ImageSnapshotThresholdConfig { linux?: number; diff --git a/test/e2e/jest.config.cjs b/test/e2e/jest.config.cjs index 276a0d99a0..e0cf9b0a7c 100644 --- a/test/e2e/jest.config.cjs +++ b/test/e2e/jest.config.cjs @@ -24,7 +24,7 @@ module.exports = { rootDir: '../..', roots: ['./test/e2e'], testMatch: ['**/?(*.)+(spec|test).[t]s'], - testTimeout: 100_000, + testTimeout: 100 * 1000, verbose: false, // if true, report each individual test run with execution time transform: { '^.+\\.ts?$': [ diff --git a/test/e2e/overlays.rendering.test.ts b/test/e2e/overlays.rendering.test.ts index 4e0a3839e7..407b9ada37 100644 --- a/test/e2e/overlays.rendering.test.ts +++ b/test/e2e/overlays.rendering.test.ts @@ -17,7 +17,7 @@ limitations under the License. import 'jest-playwright-preset'; import type { ImageSnapshotThresholdConfig } from './helpers/visu/image-snapshot-config'; import type { OverlayEdgePosition, OverlayPosition, OverlayShapePosition } from '@lib/component/registry'; -import type { Point } from '@test/shared/visu/bpmn-page-utils'; +import type { Point } from '@test/shared/visu/bpmn-page-utilities'; import path from 'node:path'; @@ -25,10 +25,10 @@ import debugLogger from 'debug'; import { ImageSnapshotConfigurator, MultiBrowserImageSnapshotThresholds, withCustomOutputDirectory } from './helpers/visu/image-snapshot-config'; -import { ensureIsArray } from '@lib/component/helpers/array-utils'; +import { ensureIsArray } from '@lib/component/helpers/array-utilities'; import { ZoomType } from '@lib/component/options'; import { overlayEdgePositionValues, overlayShapePositionValues } from '@test/shared/overlays'; -import { AvailableTestPages, PageTester } from '@test/shared/visu/bpmn-page-utils'; +import { AvailableTestPages, PageTester } from '@test/shared/visu/bpmn-page-utilities'; const log = debugLogger('bv:test:e2e:overlays'); diff --git a/test/e2e/style.api.test.ts b/test/e2e/style.api.test.ts index 3d9ffe85c8..31f8c239e2 100644 --- a/test/e2e/style.api.test.ts +++ b/test/e2e/style.api.test.ts @@ -18,7 +18,7 @@ import type { ImageSnapshotThresholdConfig } from './helpers/visu/image-snapshot import { ImageSnapshotConfigurator, MultiBrowserImageSnapshotThresholds } from './helpers/visu/image-snapshot-config'; -import { AvailableTestPages, PageTester } from '@test/shared/visu/bpmn-page-utils'; +import { AvailableTestPages, PageTester } from '@test/shared/visu/bpmn-page-utilities'; class StyleImageSnapshotThresholds extends MultiBrowserImageSnapshotThresholds { constructor() { diff --git a/test/integration/BpmnVisualization.test.ts b/test/integration/BpmnVisualization.test.ts index 7a611957a0..75fd7b624e 100644 --- a/test/integration/BpmnVisualization.test.ts +++ b/test/integration/BpmnVisualization.test.ts @@ -21,7 +21,7 @@ import { initializeBpmnVisualizationWithContainerId, initializeBpmnVisualizationWithHtmlElement, } from './helpers/bpmn-visualization-initialization'; -import { allTestedFitTypes } from './helpers/fit-utils'; +import { allTestedFitTypes } from './helpers/fit-utilities'; import { ShapeBpmnElementKind } from '@lib/model/bpmn/internal'; import { readFileSync } from '@test/shared/file-helper'; diff --git a/test/integration/cross.css.and.style.api.test.ts b/test/integration/cross.css.and.style.api.test.ts index 659bd1f0ab..1ab946a14c 100644 --- a/test/integration/cross.css.and.style.api.test.ts +++ b/test/integration/cross.css.and.style.api.test.ts @@ -18,8 +18,8 @@ import type { ExpectedEdgeModelElement, ExpectedShapeModelElement } from './help import type { mxCell } from 'mxgraph'; import { initializeBpmnVisualizationWithContainerId } from './helpers/bpmn-visualization-initialization'; -import { HtmlElementLookup } from './helpers/html-utils'; -import { buildReceivedResolvedModelCellStyle, buildReceivedViewStateStyle } from './matchers/matcher-utils'; +import { HtmlElementLookup } from './helpers/html-utilities'; +import { buildReceivedResolvedModelCellStyle, buildReceivedViewStateStyle } from './matchers/matcher-utilities'; import { buildExpectedEdgeCellStyle } from './matchers/toBeEdge'; import { buildExpectedShapeCellStyle } from './matchers/toBeShape'; diff --git a/test/integration/diagram.navigation.test.ts b/test/integration/diagram.navigation.test.ts index c5d475f666..0bbf590cce 100644 --- a/test/integration/diagram.navigation.test.ts +++ b/test/integration/diagram.navigation.test.ts @@ -15,7 +15,7 @@ limitations under the License. */ import { initializeBpmnVisualizationWithHtmlElement } from './helpers/bpmn-visualization-initialization'; -import { allTestedFitTypes } from './helpers/fit-utils'; +import { allTestedFitTypes } from './helpers/fit-utilities'; import { type FitType, ZoomType } from '@lib/component/options'; import { readFileSync } from '@test/shared/file-helper'; diff --git a/test/integration/dom.bpmn.elements.test.ts b/test/integration/dom.bpmn.elements.test.ts index ea87791b6d..7ac89030a8 100644 --- a/test/integration/dom.bpmn.elements.test.ts +++ b/test/integration/dom.bpmn.elements.test.ts @@ -32,7 +32,7 @@ import { expectServiceTaskBpmnElement, expectStartEventBpmnElement, expectTaskBpmnElement, -} from './helpers/semantic-with-svg-utils'; +} from './helpers/semantic-with-svg-utilities'; import { FlowKind, ShapeBpmnElementKind, ShapeBpmnEventDefinitionKind } from '@lib/bpmn-visualization'; import { readFileSync } from '@test/shared/file-helper'; diff --git a/test/integration/dom.container.div.test.ts b/test/integration/dom.container.div.test.ts index 22c255f943..77aff089da 100644 --- a/test/integration/dom.container.div.test.ts +++ b/test/integration/dom.container.div.test.ts @@ -21,7 +21,7 @@ import { initializeBpmnVisualizationWithHtmlElement, initializeBpmnVisualizationWithoutId, } from './helpers/bpmn-visualization-initialization'; -import { HtmlElementLookup } from './helpers/html-utils'; +import { HtmlElementLookup } from './helpers/html-utilities'; import { ShapeBpmnEventDefinitionKind } from '@lib/bpmn-visualization'; import { readFileSync } from '@test/shared/file-helper'; diff --git a/test/integration/dom.css.classes.test.ts b/test/integration/dom.css.classes.test.ts index da887bbd2d..a8845d0808 100644 --- a/test/integration/dom.css.classes.test.ts +++ b/test/integration/dom.css.classes.test.ts @@ -15,7 +15,7 @@ limitations under the License. */ import { initializeBpmnVisualizationWithContainerId } from './helpers/bpmn-visualization-initialization'; -import { HtmlElementLookup } from './helpers/html-utils'; +import { HtmlElementLookup } from './helpers/html-utilities'; import { ShapeBpmnEventDefinitionKind } from '@lib/model/bpmn/internal'; import { readFileSync } from '@test/shared/file-helper'; diff --git a/test/integration/dom.overlays.test.ts b/test/integration/dom.overlays.test.ts index da2f035dca..76eb22ac0a 100644 --- a/test/integration/dom.overlays.test.ts +++ b/test/integration/dom.overlays.test.ts @@ -17,7 +17,7 @@ limitations under the License. import type { OverlayEdgePosition, OverlayShapePosition } from '@lib/bpmn-visualization'; import { initializeBpmnVisualizationWithContainerId } from './helpers/bpmn-visualization-initialization'; -import { HtmlElementLookup } from './helpers/html-utils'; +import { HtmlElementLookup } from './helpers/html-utilities'; import { readFileSync } from '@test/shared/file-helper'; import { overlayEdgePositionValues, overlayShapePositionValues } from '@test/shared/overlays'; diff --git a/test/integration/helpers/bpmn-visualization-initialization.ts b/test/integration/helpers/bpmn-visualization-initialization.ts index 7c136f17a5..9d04f7dea6 100644 --- a/test/integration/helpers/bpmn-visualization-initialization.ts +++ b/test/integration/helpers/bpmn-visualization-initialization.ts @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import { insertBpmnContainer, insertBpmnContainerWithoutId } from './dom-utils'; +import { insertBpmnContainer, insertBpmnContainerWithoutId } from './dom-utilities'; import { BpmnVisualization, type GlobalOptions } from '@lib/bpmn-visualization'; diff --git a/test/integration/helpers/dom-utils.ts b/test/integration/helpers/dom-utilities.ts similarity index 100% rename from test/integration/helpers/dom-utils.ts rename to test/integration/helpers/dom-utilities.ts diff --git a/test/integration/helpers/fit-utils.ts b/test/integration/helpers/fit-utilities.ts similarity index 100% rename from test/integration/helpers/fit-utils.ts rename to test/integration/helpers/fit-utilities.ts diff --git a/test/integration/helpers/html-utils.ts b/test/integration/helpers/html-utilities.ts similarity index 100% rename from test/integration/helpers/html-utils.ts rename to test/integration/helpers/html-utilities.ts diff --git a/test/integration/helpers/model-expect.ts b/test/integration/helpers/model-expect.ts index 8872b1eb00..ffed43d4c4 100644 --- a/test/integration/helpers/model-expect.ts +++ b/test/integration/helpers/model-expect.ts @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import type { ExpectedOverlay } from '../matchers/matcher-utils'; +import type { ExpectedOverlay } from '../matchers/matcher-utilities'; import type { FlowKind, GlobalTaskKind, @@ -59,14 +59,13 @@ import { toBeTextAnnotation, toBeUserTask, } from '../matchers'; -import { getCell } from '../matchers/matcher-utils'; +import { getCell } from '../matchers/matcher-utilities'; import { BpmnVisualization, ShapeBpmnElementKind } from '@lib/bpmn-visualization'; declare global { // eslint-disable-next-line @typescript-eslint/no-namespace namespace jest { - // eslint-disable-next-line @typescript-eslint/consistent-type-definitions -- Since we are overriding an existing interface in Jest, it is not possible to convert it to a type. interface Matchers { toBeCell(): R; toBeCellWithParentAndGeometry(modelElement: ExpectedCellWithGeometry): R; diff --git a/test/integration/helpers/semantic-with-svg-utils.ts b/test/integration/helpers/semantic-with-svg-utilities.ts similarity index 95% rename from test/integration/helpers/semantic-with-svg-utils.ts rename to test/integration/helpers/semantic-with-svg-utilities.ts index f122d0aaeb..f415eefd8f 100644 --- a/test/integration/helpers/semantic-with-svg-utils.ts +++ b/test/integration/helpers/semantic-with-svg-utilities.ts @@ -22,9 +22,9 @@ import type { ExpectedEventElement, ExpectedIntermediateThrowEventElement, ExpectedIntermediateCatchEventElement, -} from '@test/shared/model/bpmn-semantic-utils'; +} from '@test/shared/model/bpmn-semantic-utilities'; -import { expectSvgEvent, expectSvgGateway, expectSvgPool, expectSvgSequenceFlow, expectSvgTask } from './html-utils'; +import { expectSvgEvent, expectSvgGateway, expectSvgPool, expectSvgSequenceFlow, expectSvgTask } from './html-utilities'; import { expectEndEvent, @@ -36,7 +36,7 @@ import { expectServiceTask, expectStartEvent, expectTask, -} from '@test/shared/model/bpmn-semantic-utils'; +} from '@test/shared/model/bpmn-semantic-utilities'; export function expectStartEventBpmnElement(bpmnElement: BpmnElement, expected: ExpectedEventElement): void { expectStartEvent(bpmnElement.bpmnSemantic as ShapeBpmnSemantic, expected); diff --git a/test/integration/matchers/matcher-utils.ts b/test/integration/matchers/matcher-utilities.ts similarity index 95% rename from test/integration/matchers/matcher-utils.ts rename to test/integration/matchers/matcher-utilities.ts index 27dfee6382..05c5d301ab 100644 --- a/test/integration/matchers/matcher-utils.ts +++ b/test/integration/matchers/matcher-utilities.ts @@ -102,24 +102,24 @@ export function buildCellMatcher( isNot: matcherContext.isNot, promise: matcherContext.promise, }; - const utils = matcherContext.utils; + const utilities = matcherContext.utils; const expand = matcherContext.expand; - const messagePrefix = utils.matcherHint(matcherName, undefined, undefined, options) + '\n\n'; + const messagePrefix = utilities.matcherHint(matcherName, undefined, undefined, options) + '\n\n'; const expectedCell: ExpectedCell = buildExpectedCell(received, expected); const cell = getCell(received); if (!cell) { const message = (): string => - messagePrefix + utils.printDiffOrStringify(expectedCell, undefined, `${EXPECTED_LABEL}: ${cellKind} with id '${expectedCell.id}'`, `${RECEIVED_LABEL}`, expand); + messagePrefix + utilities.printDiffOrStringify(expectedCell, undefined, `${EXPECTED_LABEL}: ${cellKind} with id '${expectedCell.id}'`, `${RECEIVED_LABEL}`, expand); return { message, pass: false }; } const receivedCell: ExpectedCell = buildReceivedCell(cell); - const pass = matcherContext.equals(receivedCell, expectedCell, [utils.iterableEquality, utils.subsetEquality]); + const pass = matcherContext.equals(receivedCell, expectedCell, [utilities.iterableEquality, utilities.subsetEquality]); const messageSuffix = pass - ? `${EXPECTED_LABEL}: ${cellKind} with id '${received}' not to be found with the configuration:\n` + `${utils.printExpected(expectedCell)}` - : utils.printDiffOrStringify( + ? `${EXPECTED_LABEL}: ${cellKind} with id '${received}' not to be found with the configuration:\n` + `${utilities.printExpected(expectedCell)}` + : utilities.printDiffOrStringify( expectedCell, receivedCell, `${EXPECTED_LABEL}: ${cellKind} with id '${expectedCell.id}'`, diff --git a/test/integration/matchers/toBeCell/index.ts b/test/integration/matchers/toBeCell/index.ts index e09871648d..5fe4c77350 100644 --- a/test/integration/matchers/toBeCell/index.ts +++ b/test/integration/matchers/toBeCell/index.ts @@ -15,11 +15,11 @@ limitations under the License. */ import type { ExpectedCellWithGeometry } from '../../helpers/model-expect'; -import type { ExpectedCell } from '../matcher-utils'; +import type { ExpectedCell } from '../matcher-utilities'; import type { mxCell } from 'mxgraph'; import { getDefaultParentId } from '../../helpers/model-expect'; -import { buildCellMatcher, getCell } from '../matcher-utils'; +import { buildCellMatcher, getCell } from '../matcher-utilities'; import MatcherContext = jest.MatcherContext; import CustomMatcherResult = jest.CustomMatcherResult; diff --git a/test/integration/matchers/toBeEdge/index.ts b/test/integration/matchers/toBeEdge/index.ts index b8d2a2e38f..851c1aba9f 100644 --- a/test/integration/matchers/toBeEdge/index.ts +++ b/test/integration/matchers/toBeEdge/index.ts @@ -15,10 +15,10 @@ limitations under the License. */ import type { ExpectedEdgeModelElement, ExpectedSequenceFlowModelElement } from '../../helpers/model-expect'; -import type { BpmnCellStyle, ExpectedCell } from '../matcher-utils'; +import type { BpmnCellStyle, ExpectedCell } from '../matcher-utilities'; import { getDefaultParentId } from '../../helpers/model-expect'; -import { buildCellMatcher, buildExpectedCellStyleWithCommonAttributes, buildReceivedCellWithCommonAttributes } from '../matcher-utils'; +import { buildCellMatcher, buildExpectedCellStyleWithCommonAttributes, buildReceivedCellWithCommonAttributes } from '../matcher-utilities'; import { mxConstants } from '@lib/component/mxgraph/initializer'; import { BpmnStyleIdentifier } from '@lib/component/mxgraph/style'; diff --git a/test/integration/matchers/toBeShape/index.ts b/test/integration/matchers/toBeShape/index.ts index 4280d9b6ff..656f14e8f7 100644 --- a/test/integration/matchers/toBeShape/index.ts +++ b/test/integration/matchers/toBeShape/index.ts @@ -25,10 +25,10 @@ import type { ExpectedIntermediateCatchEventModelElement, ExpectedIntermediateThrowEventModelElement, } from '../../helpers/model-expect'; -import type { BpmnCellStyle, ExpectedCell } from '../matcher-utils'; +import type { BpmnCellStyle, ExpectedCell } from '../matcher-utilities'; import { getDefaultParentId } from '../../helpers/model-expect'; -import { buildCellMatcher, buildExpectedCellStyleWithCommonAttributes, buildReceivedCellWithCommonAttributes } from '../matcher-utils'; +import { buildCellMatcher, buildExpectedCellStyleWithCommonAttributes, buildReceivedCellWithCommonAttributes } from '../matcher-utilities'; import { mxConstants } from '@lib/component/mxgraph/initializer'; import { ShapeBpmnElementKind, ShapeBpmnMarkerKind, ShapeBpmnSubProcessKind } from '@lib/model/bpmn/internal'; diff --git a/test/integration/model.elements.api.test.ts b/test/integration/model.elements.api.test.ts index ce79b3ecc2..b8c06b9f69 100644 --- a/test/integration/model.elements.api.test.ts +++ b/test/integration/model.elements.api.test.ts @@ -33,7 +33,7 @@ import { expectSubprocess, expectTask, expectUserTask, -} from '@test/shared/model/bpmn-semantic-utils'; +} from '@test/shared/model/bpmn-semantic-utilities'; describe('Registry API - retrieve Model Bpmn elements', () => { describe('Get by ids', () => { diff --git a/test/integration/mxGraph.model.bpmn.elements.test.ts b/test/integration/mxGraph.model.bpmn.elements.test.ts index 4ccade0458..6be3617064 100644 --- a/test/integration/mxGraph.model.bpmn.elements.test.ts +++ b/test/integration/mxGraph.model.bpmn.elements.test.ts @@ -1693,7 +1693,7 @@ describe('mxGraph model - BPMN elements', () => { const startEvent1Geometry = new mxGeometry( 156.100_010_002_564_63, 81.345_000_000_000_01, // 81.345000000000009 in the diagram - // eslint-disable-next-line @typescript-eslint/no-loss-of-precision + // eslint-disable-next-line no-loss-of-precision 36.000_345_000_100_000_2, // 36.0003450001000002 in the diagram 36.000_000_100_354_96, ); diff --git a/test/performance/.eslintrc.cjs b/test/performance/.eslintrc.cjs deleted file mode 100644 index 8f2feacfcf..0000000000 --- a/test/performance/.eslintrc.cjs +++ /dev/null @@ -1,23 +0,0 @@ -/* -Copyright 2021 Bonitasoft S.A. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -module.exports = { - extends: ['plugin:playwright/recommended'], - rules: { - /* This rule is for playwright-test and we are using jest-playwright */ - 'playwright/no-standalone-expect': 'off', - }, -}; diff --git a/test/performance/bpmn.load.performance.test.ts b/test/performance/bpmn.load.performance.test.ts index 3837c4faef..cb9e02b3cf 100644 --- a/test/performance/bpmn.load.performance.test.ts +++ b/test/performance/bpmn.load.performance.test.ts @@ -14,15 +14,15 @@ See the License for the specific language governing permissions and limitations under the License. */ -import type { ChartData, PerformanceMetric } from './helpers/perf-utils'; +import type { ChartData, PerformanceMetric } from './helpers/perf-utilities'; import * as fs from 'node:fs'; -import { performanceDataFilePath } from './helpers/file-utils'; +import { performanceDataFilePath } from './helpers/file-utilities'; import { ChromiumMetricsCollector } from './helpers/metrics-chromium'; -import { calculateMetrics } from './helpers/perf-utils'; +import { calculateMetrics } from './helpers/perf-utilities'; -import { AvailableTestPages, PageTester } from '@test/shared/visu/bpmn-page-utils'; +import { AvailableTestPages, PageTester } from '@test/shared/visu/bpmn-page-utilities'; const metricsArray: PerformanceMetric[] = []; diff --git a/test/performance/bpmn.navigation.performance.test.ts b/test/performance/bpmn.navigation.performance.test.ts index 01fb9918b9..29a39e8922 100644 --- a/test/performance/bpmn.navigation.performance.test.ts +++ b/test/performance/bpmn.navigation.performance.test.ts @@ -14,18 +14,18 @@ See the License for the specific language governing permissions and limitations under the License. */ -import type { ChartData, PerformanceMetric } from './helpers/perf-utils'; -import type { Point } from '@test/shared/visu/bpmn-page-utils'; +import type { ChartData, PerformanceMetric } from './helpers/perf-utilities'; +import type { Point } from '@test/shared/visu/bpmn-page-utilities'; import * as fs from 'node:fs'; -import { performanceDataFilePath } from './helpers/file-utils'; +import { performanceDataFilePath } from './helpers/file-utilities'; import { ChromiumMetricsCollector } from './helpers/metrics-chromium'; -import { calculateMetrics } from './helpers/perf-utils'; +import { calculateMetrics } from './helpers/perf-utilities'; import { ZoomType } from '@lib/component/options'; -import { AvailableTestPages, PageTester } from '@test/shared/visu/bpmn-page-utils'; -import { delay } from '@test/shared/visu/test-utils'; +import { AvailableTestPages, PageTester } from '@test/shared/visu/bpmn-page-utilities'; +import { delay } from '@test/shared/visu/test-utilities'; const metricsArray: PerformanceMetric[] = []; diff --git a/test/performance/helpers/file-utils.ts b/test/performance/helpers/file-utilities.ts similarity index 98% rename from test/performance/helpers/file-utils.ts rename to test/performance/helpers/file-utilities.ts index 078aa4620c..18390a5ab3 100644 --- a/test/performance/helpers/file-utils.ts +++ b/test/performance/helpers/file-utilities.ts @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import { getSimplePlatformName } from '@test/shared/visu/test-utils'; +import { getSimplePlatformName } from '@test/shared/visu/test-utilities'; // when running tests in IntelliJ/Webstorm, the working directory is not the project root dir const rootDirectory = process.cwd().endsWith('/test/performance') ? './data' : './test/performance/data'; diff --git a/test/performance/helpers/perf-utils.ts b/test/performance/helpers/perf-utilities.ts similarity index 100% rename from test/performance/helpers/perf-utils.ts rename to test/performance/helpers/perf-utilities.ts diff --git a/test/performance/jest.config.cjs b/test/performance/jest.config.cjs index 15f913eff5..ab6d108eb7 100644 --- a/test/performance/jest.config.cjs +++ b/test/performance/jest.config.cjs @@ -24,7 +24,7 @@ module.exports = { rootDir: '../..', roots: ['./test/performance'], testMatch: ['**/?(*.)+(spec|test).[t]s'], - testTimeout: 200_000, + testTimeout: 200 * 1000, transform: { '^.+\\.ts?$': [ 'ts-jest', diff --git a/test/shared/environment-utils.cjs b/test/shared/environment-utilities.cjs similarity index 100% rename from test/shared/environment-utils.cjs rename to test/shared/environment-utilities.cjs diff --git a/test/shared/model/bpmn-semantic-utils.ts b/test/shared/model/bpmn-semantic-utilities.ts similarity index 100% rename from test/shared/model/bpmn-semantic-utils.ts rename to test/shared/model/bpmn-semantic-utilities.ts diff --git a/test/shared/visu/bpmn-page-utils.ts b/test/shared/visu/bpmn-page-utilities.ts similarity index 98% rename from test/shared/visu/bpmn-page-utils.ts rename to test/shared/visu/bpmn-page-utilities.ts index 6b36f9334f..95fe155fa1 100644 --- a/test/shared/visu/bpmn-page-utils.ts +++ b/test/shared/visu/bpmn-page-utilities.ts @@ -27,10 +27,10 @@ import debugLogger from 'debug'; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore use a shared js file with commonjs export -// eslint-disable-next-line @typescript-eslint/no-require-imports -- use a shared js file with commonjs export -import environmentUtils = require('../environment-utils.cjs'); +// eslint-disable-next-line @typescript-eslint/no-require-imports +import environmentUtilities = require('../environment-utilities.cjs'); -import { delay } from './test-utils'; +import { delay } from './test-utilities'; import { FitType, type LoadOptions, ZoomType } from '@lib/component/options'; import { BpmnQuerySelectorsForTests } from '@test/shared/query-selectors'; @@ -291,7 +291,7 @@ export class PageTester { for (let index = 0; index < xTimes; index++) { await this.mouseZoomNoDelay(point, zoomType); // delay here is needed to make the tests pass on macOS, delay must be greater than debounce timing, so it surely gets triggered - await delay(environmentUtils.isRunningOnCISlowOS() ? 300 : 150); + await delay(environmentUtilities.isRunningOnCISlowOS() ? 300 : 150); } pageCheckLog('Mouse zoom done'); } diff --git a/test/shared/visu/test-utils.ts b/test/shared/visu/test-utilities.ts similarity index 100% rename from test/shared/visu/test-utils.ts rename to test/shared/visu/test-utilities.ts diff --git a/test/typescript-support/src/index.ts b/test/typescript-support/src/index.ts index b2ce04cf09..eaf3215706 100644 --- a/test/typescript-support/src/index.ts +++ b/test/typescript-support/src/index.ts @@ -14,7 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -// eslint-disable-next-line import/no-unresolved -- The bpmn-visualization package may not have been built prior running eslint (it happens when running GitHub Actions) import { BpmnVisualization } from 'bpmn-visualization'; const bpmnVisualization = new BpmnVisualization({ container: 'bpmn-container' }); diff --git a/test/unit/component/helpers/array-utils.test.ts b/test/unit/component/helpers/array-utilities.test.ts similarity index 98% rename from test/unit/component/helpers/array-utils.test.ts rename to test/unit/component/helpers/array-utilities.test.ts index dfca9ca8a4..174ff609b2 100644 --- a/test/unit/component/helpers/array-utils.test.ts +++ b/test/unit/component/helpers/array-utilities.test.ts @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import { filter } from '@lib/component/helpers/array-utils'; +import { filter } from '@lib/component/helpers/array-utilities'; import { ShapeBpmnElementKind } from '@lib/model/bpmn/internal'; describe('array helper functions', () => { diff --git a/test/unit/component/mxgraph/renderer/StyleComputer.test.ts b/test/unit/component/mxgraph/renderer/StyleComputer.test.ts index 51fe9004e6..bd2f1cdf50 100644 --- a/test/unit/component/mxgraph/renderer/StyleComputer.test.ts +++ b/test/unit/component/mxgraph/renderer/StyleComputer.test.ts @@ -33,7 +33,7 @@ import { ShapeBpmnEventDefinitionKind, ShapeBpmnMarkerKind, ShapeBpmnSubProcessKind, - ShapeUtil, + ShapeUtility, } from '@lib/model/bpmn/internal'; import Bounds from '@lib/model/bpmn/internal/Bounds'; import { Edge } from '@lib/model/bpmn/internal/edge/edge'; @@ -494,7 +494,7 @@ describe('Style Computer', () => { } describe('shapes', () => { - it.each(Object.values(ShapeUtil.flowNodeKinds()))('%s', (kind: ShapeBpmnElementKind) => { + it.each(Object.values(ShapeUtility.flowNodeKinds()))('%s', (kind: ShapeBpmnElementKind) => { const shape = newShape(newShapeBpmnElement(kind), newLabelExtension('#010101')); shape.extensions.fillColor = '#000003'; shape.extensions.strokeColor = '#FF0203'; diff --git a/test/unit/component/mxgraph/renderer/style-utils.test.ts b/test/unit/component/mxgraph/renderer/style-utilities.test.ts similarity index 99% rename from test/unit/component/mxgraph/renderer/style-utils.test.ts rename to test/unit/component/mxgraph/renderer/style-utilities.test.ts index 662c6cef9f..f182b5054b 100644 --- a/test/unit/component/mxgraph/renderer/style-utils.test.ts +++ b/test/unit/component/mxgraph/renderer/style-utilities.test.ts @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import { computeBpmnBaseClassName, computeAllBpmnClassNames } from '@lib/component/mxgraph/renderer/style-utils'; +import { computeBpmnBaseClassName, computeAllBpmnClassNames } from '@lib/component/mxgraph/renderer/style-utilities'; import { FlowKind, SequenceFlowKind, ShapeBpmnElementKind, ShapeBpmnEventBasedGatewayKind, ShapeBpmnEventDefinitionKind, ShapeBpmnSubProcessKind } from '@lib/model/bpmn/internal'; describe('compute base css class names of BPMN elements', () => { diff --git a/test/unit/component/mxgraph/shape/render/utils.test.ts b/test/unit/component/mxgraph/shape/render/utilities.test.ts similarity index 99% rename from test/unit/component/mxgraph/shape/render/utils.test.ts rename to test/unit/component/mxgraph/shape/render/utilities.test.ts index bc39649277..709c5760a2 100644 --- a/test/unit/component/mxgraph/shape/render/utils.test.ts +++ b/test/unit/component/mxgraph/shape/render/utilities.test.ts @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import { orderActivityMarkers } from '@lib/component/mxgraph/shape/render/utils'; +import { orderActivityMarkers } from '@lib/component/mxgraph/shape/render/utilities'; import { ShapeBpmnMarkerKind } from '@lib/model/bpmn/internal'; function computeAllPermutations(array: string[]): string[][][] { diff --git a/test/unit/component/mxgraph/style/utils.test.ts b/test/unit/component/mxgraph/style/utilities.test.ts similarity index 99% rename from test/unit/component/mxgraph/style/utils.test.ts rename to test/unit/component/mxgraph/style/utilities.test.ts index 7cb0c21e91..d0f4342cd7 100644 --- a/test/unit/component/mxgraph/style/utils.test.ts +++ b/test/unit/component/mxgraph/style/utilities.test.ts @@ -18,7 +18,7 @@ limitations under the License. */ import { BpmnStyleIdentifier } from '@lib/component/mxgraph/style'; -import { getStyleValue } from '@lib/component/mxgraph/style/utils'; +import { getStyleValue } from '@lib/component/mxgraph/style/utilities'; describe('getStyleValue', () => { test('cell style with key, returns the value', () => { diff --git a/test/unit/component/parser/BpmnParser.test.ts b/test/unit/component/parser/BpmnParser.test.ts index 298f82d669..009bcd5246 100644 --- a/test/unit/component/parser/BpmnParser.test.ts +++ b/test/unit/component/parser/BpmnParser.test.ts @@ -17,7 +17,7 @@ limitations under the License. import type BpmnModel from '@lib/model/bpmn/internal/BpmnModel'; import { getEdgeByBpmnElementId, getFlowNodeByBpmnElementId, getLaneByBpmnElementId, getPoolByBpmnElementId, verifyEdge, verifyShape } from '../../helpers/bpmn-model-expect'; -import { expectPoolLaneEdgeFlowNode, verifyLabel } from '../../helpers/JsonTestUtils'; +import { expectPoolLaneEdgeFlowNode, verifyLabel } from '../../helpers/JsonTestUtilities'; import { newBpmnParser } from '@lib/component/parser/BpmnParser'; import { ShapeBpmnElementKind } from '@lib/model/bpmn/internal'; diff --git a/test/unit/component/parser/json/BpmnJsonParser.association.test.ts b/test/unit/component/parser/json/BpmnJsonParser.association.test.ts index 337960afb1..b4adb6ec82 100644 --- a/test/unit/component/parser/json/BpmnJsonParser.association.test.ts +++ b/test/unit/component/parser/json/BpmnJsonParser.association.test.ts @@ -21,7 +21,7 @@ import type { Point } from '@lib/model/bpmn/json/dc'; import { type ExpectedEdge, verifyEdge } from '../../../helpers/bpmn-model-expect'; import { buildDefinitions } from '../../../helpers/JsonBuilder'; -import { parseJsonAndExpectOnlyEdges } from '../../../helpers/JsonTestUtils'; +import { parseJsonAndExpectOnlyEdges } from '../../../helpers/JsonTestUtilities'; import { FlowKind } from '@lib/model/bpmn/internal'; import { Waypoint } from '@lib/model/bpmn/internal/edge/edge'; diff --git a/test/unit/component/parser/json/BpmnJsonParser.callActivity.test.ts b/test/unit/component/parser/json/BpmnJsonParser.callActivity.test.ts index ca0a00015f..26abfbc76a 100644 --- a/test/unit/component/parser/json/BpmnJsonParser.callActivity.test.ts +++ b/test/unit/component/parser/json/BpmnJsonParser.callActivity.test.ts @@ -21,7 +21,7 @@ import type { BpmnJsonModel } from '@lib/model/bpmn/json/bpmn20'; import { verifyEdge, verifyShape } from '../../../helpers/bpmn-model-expect'; import { buildDefinitions, EventDefinitionOn } from '../../../helpers/JsonBuilder'; -import { parseJsonAndExpect, parseJsonAndExpectOnlyEdgesAndFlowNodes, parseJsonAndExpectOnlyFlowNodes } from '../../../helpers/JsonTestUtils'; +import { parseJsonAndExpect, parseJsonAndExpectOnlyEdgesAndFlowNodes, parseJsonAndExpectOnlyFlowNodes } from '../../../helpers/JsonTestUtilities'; import { ShapeBpmnCallActivityKind, ShapeBpmnElementKind, ShapeBpmnMarkerKind } from '@lib/model/bpmn/internal'; diff --git a/test/unit/component/parser/json/BpmnJsonParser.diagram.test.ts b/test/unit/component/parser/json/BpmnJsonParser.diagram.test.ts index 3b815b9c04..71bc897299 100644 --- a/test/unit/component/parser/json/BpmnJsonParser.diagram.test.ts +++ b/test/unit/component/parser/json/BpmnJsonParser.diagram.test.ts @@ -17,7 +17,7 @@ limitations under the License. import type { BpmnJsonModel } from '@lib/model/bpmn/json/bpmn20'; import { verifyShape } from '../../../helpers/bpmn-model-expect'; -import { parseJsonAndExpectOnlyFlowNodes } from '../../../helpers/JsonTestUtils'; +import { parseJsonAndExpectOnlyFlowNodes } from '../../../helpers/JsonTestUtilities'; import { ShapeBpmnElementKind } from '@lib/model/bpmn/internal'; diff --git a/test/unit/component/parser/json/BpmnJsonParser.edge.test.ts b/test/unit/component/parser/json/BpmnJsonParser.edge.test.ts index eeebb116b3..0d9139b4c2 100644 --- a/test/unit/component/parser/json/BpmnJsonParser.edge.test.ts +++ b/test/unit/component/parser/json/BpmnJsonParser.edge.test.ts @@ -16,7 +16,7 @@ limitations under the License. import type { BpmnJsonModel } from '@lib/model/bpmn/json/bpmn20'; -import { expectAsWarning, parseJsonAndExpectOnlyWarnings, parsingMessageCollector } from '../../../helpers/JsonTestUtils'; +import { expectAsWarning, parseJsonAndExpectOnlyWarnings, parsingMessageCollector } from '../../../helpers/JsonTestUtilities'; import { EdgeUnknownBpmnElementWarning } from '@lib/component/parser/json/warnings'; diff --git a/test/unit/component/parser/json/BpmnJsonParser.event.boundary.test.ts b/test/unit/component/parser/json/BpmnJsonParser.event.boundary.test.ts index 25e582addc..6d708e15dd 100644 --- a/test/unit/component/parser/json/BpmnJsonParser.event.boundary.test.ts +++ b/test/unit/component/parser/json/BpmnJsonParser.event.boundary.test.ts @@ -17,9 +17,9 @@ limitations under the License. import type { BuildDefinitionParameter, BuildEventDefinition } from '../../../helpers/JsonBuilder'; import { buildDefinitions, EventDefinitionOn } from '../../../helpers/JsonBuilder'; -import { expectAsWarning, parseJsonAndExpectOnlyFlowNodes, parsingMessageCollector } from '../../../helpers/JsonTestUtils'; -import { getEventShapes } from '../../../helpers/TestUtils'; -import { eventDefinitionsParameters, executeEventCommonTests, testMustConvertShapes } from '../../../helpers/TestUtils.BpmnJsonParser.event'; +import { expectAsWarning, parseJsonAndExpectOnlyFlowNodes, parsingMessageCollector } from '../../../helpers/JsonTestUtilities'; +import { getEventShapes } from '../../../helpers/TestUtilities'; +import { eventDefinitionsParameters, executeEventCommonTests, testMustConvertShapes } from '../../../helpers/TestUtilities.BpmnJsonParser.event'; import { BoundaryEventNotAttachedToActivityWarning, ShapeUnknownBpmnElementWarning } from '@lib/component/parser/json/warnings'; import { ShapeBpmnElementKind, ShapeBpmnEventDefinitionKind } from '@lib/model/bpmn/internal'; diff --git a/test/unit/component/parser/json/BpmnJsonParser.event.link.with.source.target.test.ts b/test/unit/component/parser/json/BpmnJsonParser.event.link.with.source.target.test.ts index 27903c0201..77c56db9e0 100644 --- a/test/unit/component/parser/json/BpmnJsonParser.event.link.with.source.target.test.ts +++ b/test/unit/component/parser/json/BpmnJsonParser.event.link.with.source.target.test.ts @@ -16,8 +16,8 @@ limitations under the License. import { verifyShape } from '../../../helpers/bpmn-model-expect'; import { buildDefinitions, EventDefinitionOn } from '../../../helpers/JsonBuilder'; -import { parseJsonAndExpectOnlyFlowNodes } from '../../../helpers/JsonTestUtils'; -import { expectedBounds } from '../../../helpers/TestUtils.BpmnJsonParser.event'; +import { parseJsonAndExpectOnlyFlowNodes } from '../../../helpers/JsonTestUtilities'; +import { expectedBounds } from '../../../helpers/TestUtilities.BpmnJsonParser.event'; import { ShapeBpmnElementKind, ShapeBpmnEventDefinitionKind } from '@lib/model/bpmn/internal'; diff --git a/test/unit/component/parser/json/BpmnJsonParser.event.none.test.ts b/test/unit/component/parser/json/BpmnJsonParser.event.none.test.ts index 1e760df467..1798c17002 100644 --- a/test/unit/component/parser/json/BpmnJsonParser.event.none.test.ts +++ b/test/unit/component/parser/json/BpmnJsonParser.event.none.test.ts @@ -18,8 +18,8 @@ import type { BuildEventDefinition, BuildNotBoundaryEventKind } from '../../../h import { verifyShape } from '../../../helpers/bpmn-model-expect'; import { buildDefinitions, EventDefinitionOn } from '../../../helpers/JsonBuilder'; -import { parseJsonAndExpectEvent } from '../../../helpers/JsonTestUtils'; -import { executeEventCommonTests } from '../../../helpers/TestUtils.BpmnJsonParser.event'; +import { parseJsonAndExpectEvent } from '../../../helpers/JsonTestUtilities'; +import { executeEventCommonTests } from '../../../helpers/TestUtilities.BpmnJsonParser.event'; import { ShapeBpmnElementKind, ShapeBpmnEventDefinitionKind } from '@lib/model/bpmn/internal'; diff --git a/test/unit/component/parser/json/BpmnJsonParser.event.with.event.definition.test.ts b/test/unit/component/parser/json/BpmnJsonParser.event.with.event.definition.test.ts index dbad00dc36..9a93391d55 100644 --- a/test/unit/component/parser/json/BpmnJsonParser.event.with.event.definition.test.ts +++ b/test/unit/component/parser/json/BpmnJsonParser.event.with.event.definition.test.ts @@ -18,7 +18,7 @@ import type { BuildEventDefinition, BuildNotBoundaryEventKind } from '../../../h import type { TEventDefinition } from '@lib/model/bpmn/json/baseElement/rootElement/eventDefinition'; import { EventDefinitionOn } from '../../../helpers/JsonBuilder'; -import { eventDefinitionsParameters, executeEventCommonTests, testMustConvertShapes } from '../../../helpers/TestUtils.BpmnJsonParser.event'; +import { eventDefinitionsParameters, executeEventCommonTests, testMustConvertShapes } from '../../../helpers/TestUtilities.BpmnJsonParser.event'; import { ShapeBpmnElementKind, ShapeBpmnEventDefinitionKind } from '@lib/model/bpmn/internal'; diff --git a/test/unit/component/parser/json/BpmnJsonParser.flowNode.test.ts b/test/unit/component/parser/json/BpmnJsonParser.flowNode.test.ts index d881787752..c0741b8792 100644 --- a/test/unit/component/parser/json/BpmnJsonParser.flowNode.test.ts +++ b/test/unit/component/parser/json/BpmnJsonParser.flowNode.test.ts @@ -21,9 +21,9 @@ import type { BpmnJsonModel } from '@lib/model/bpmn/json/bpmn20'; import { verifyShape } from '../../../helpers/bpmn-model-expect'; import { buildDefinitions } from '../../../helpers/JsonBuilder'; -import { parseJsonAndExpectOnlyEdgesAndFlowNodes, parseJsonAndExpectOnlyFlowNodes } from '../../../helpers/JsonTestUtils'; +import { parseJsonAndExpectOnlyEdgesAndFlowNodes, parseJsonAndExpectOnlyFlowNodes } from '../../../helpers/JsonTestUtilities'; -import { ShapeBpmnElementKind, ShapeBpmnEventBasedGatewayKind, ShapeUtil } from '@lib/model/bpmn/internal'; +import { ShapeBpmnElementKind, ShapeBpmnEventBasedGatewayKind, ShapeUtility } from '@lib/model/bpmn/internal'; describe.each([ ['task', ShapeBpmnElementKind.TASK], @@ -352,7 +352,7 @@ describe.each([ } describe(`incoming/outgoing management for ${bpmnKind}`, () => { - const isTask = ShapeUtil.isTask(bpmnKind); + const isTask = ShapeUtility.isTask(bpmnKind); const flowNodeParameterKind = isTask ? 'task' : 'gateway'; const expectedBounds = isTask ? { x: 362, y: 232, width: 36, height: 45 } : { x: 567, y: 345, width: 25, height: 25 }; diff --git a/test/unit/component/parser/json/BpmnJsonParser.group.test.ts b/test/unit/component/parser/json/BpmnJsonParser.group.test.ts index a18ffe8195..287c52db57 100644 --- a/test/unit/component/parser/json/BpmnJsonParser.group.test.ts +++ b/test/unit/component/parser/json/BpmnJsonParser.group.test.ts @@ -24,7 +24,7 @@ import { parseJsonAndExpectOnlyPoolsAndFlowNodes, parseJsonAndExpectOnlyWarnings, parsingMessageCollector, -} from '../../../helpers/JsonTestUtils'; +} from '../../../helpers/JsonTestUtilities'; import { GroupUnknownCategoryValueWarning, ShapeUnknownBpmnElementWarning } from '@lib/component/parser/json/warnings'; import { ShapeBpmnElementKind } from '@lib/model/bpmn/internal'; diff --git a/test/unit/component/parser/json/BpmnJsonParser.label.bounds.test.ts b/test/unit/component/parser/json/BpmnJsonParser.label.bounds.test.ts index db849d2d7e..06fbfb670d 100644 --- a/test/unit/component/parser/json/BpmnJsonParser.label.bounds.test.ts +++ b/test/unit/component/parser/json/BpmnJsonParser.label.bounds.test.ts @@ -19,8 +19,8 @@ limitations under the License. import type { BpmnJsonModel } from '@lib/model/bpmn/json/bpmn20'; -import { parseJsonAndExpectOnlyEdges, parseJsonAndExpectOnlyFlowNodes, verifyLabelBounds } from '../../../helpers/JsonTestUtils'; -import { shapeBpmnElementKindForLabelTests } from '../../../helpers/TestUtils'; +import { parseJsonAndExpectOnlyEdges, parseJsonAndExpectOnlyFlowNodes, verifyLabelBounds } from '../../../helpers/JsonTestUtilities'; +import { shapeBpmnElementKindForLabelTests } from '../../../helpers/TestUtilities'; describe('parse bpmn as json for label bounds', () => { describe.each(shapeBpmnElementKindForLabelTests)('parse bpmn as json for label bounds on %s', sourceKind => { diff --git a/test/unit/component/parser/json/BpmnJsonParser.label.font.test.ts b/test/unit/component/parser/json/BpmnJsonParser.label.font.test.ts index 09f7a77ad8..cd39023f0b 100644 --- a/test/unit/component/parser/json/BpmnJsonParser.label.font.test.ts +++ b/test/unit/component/parser/json/BpmnJsonParser.label.font.test.ts @@ -19,8 +19,8 @@ limitations under the License. import type { BpmnJsonModel } from '@lib/model/bpmn/json/bpmn20'; -import { expectAsWarning, parseJsonAndExpectOnlyEdges, parseJsonAndExpectOnlyFlowNodes, parsingMessageCollector, verifyLabelFont } from '../../../helpers/JsonTestUtils'; -import { shapeBpmnElementKindForLabelTests } from '../../../helpers/TestUtils'; +import { expectAsWarning, parseJsonAndExpectOnlyEdges, parseJsonAndExpectOnlyFlowNodes, parsingMessageCollector, verifyLabelFont } from '../../../helpers/JsonTestUtilities'; +import { shapeBpmnElementKindForLabelTests } from '../../../helpers/TestUtilities'; import { LabelStyleMissingFontWarning } from '@lib/component/parser/json/warnings'; diff --git a/test/unit/component/parser/json/BpmnJsonParser.label.test.ts b/test/unit/component/parser/json/BpmnJsonParser.label.test.ts index 9b7b3c2867..5a2d025f2c 100644 --- a/test/unit/component/parser/json/BpmnJsonParser.label.test.ts +++ b/test/unit/component/parser/json/BpmnJsonParser.label.test.ts @@ -19,8 +19,8 @@ limitations under the License. import type { BpmnJsonModel } from '@lib/model/bpmn/json/bpmn20'; -import { parseJsonAndExpectOnlyEdges, parseJsonAndExpectOnlyFlowNodes } from '../../../helpers/JsonTestUtils'; -import { shapeBpmnElementKindForLabelTests } from '../../../helpers/TestUtils'; +import { parseJsonAndExpectOnlyEdges, parseJsonAndExpectOnlyFlowNodes } from '../../../helpers/JsonTestUtilities'; +import { shapeBpmnElementKindForLabelTests } from '../../../helpers/TestUtilities'; describe('parse bpmn as json for label', () => { it.each(shapeBpmnElementKindForLabelTests)( diff --git a/test/unit/component/parser/json/BpmnJsonParser.lane.test.ts b/test/unit/component/parser/json/BpmnJsonParser.lane.test.ts index 709be548c3..34e820a3b4 100644 --- a/test/unit/component/parser/json/BpmnJsonParser.lane.test.ts +++ b/test/unit/component/parser/json/BpmnJsonParser.lane.test.ts @@ -17,7 +17,7 @@ limitations under the License. import type { BpmnJsonModel } from '@lib/model/bpmn/json/bpmn20'; import { verifyShape } from '../../../helpers/bpmn-model-expect'; -import { expectAsWarning, parseJson, parseJsonAndExpectOnlyLanes, parsingMessageCollector } from '../../../helpers/JsonTestUtils'; +import { expectAsWarning, parseJson, parseJsonAndExpectOnlyLanes, parsingMessageCollector } from '../../../helpers/JsonTestUtilities'; import { LaneUnknownFlowNodeReferenceWarning } from '@lib/component/parser/json/warnings'; import { ShapeBpmnElementKind } from '@lib/model/bpmn/internal'; diff --git a/test/unit/component/parser/json/BpmnJsonParser.marker.test.ts b/test/unit/component/parser/json/BpmnJsonParser.marker.test.ts index 052c85efb4..bd0c81acea 100644 --- a/test/unit/component/parser/json/BpmnJsonParser.marker.test.ts +++ b/test/unit/component/parser/json/BpmnJsonParser.marker.test.ts @@ -19,7 +19,7 @@ import type { TProcess } from '@lib/model/bpmn/json/baseElement/rootElement/root import type { BpmnJsonModel } from '@lib/model/bpmn/json/bpmn20'; import { getExpectedMarkers, verifyShape } from '../../../helpers/bpmn-model-expect'; -import { parseJsonAndExpectOnlyFlowNodes } from '../../../helpers/JsonTestUtils'; +import { parseJsonAndExpectOnlyFlowNodes } from '../../../helpers/JsonTestUtilities'; import { ShapeBpmnCallActivityKind, ShapeBpmnElementKind, ShapeBpmnMarkerKind } from '@lib/model/bpmn/internal'; diff --git a/test/unit/component/parser/json/BpmnJsonParser.messageFlow.test.ts b/test/unit/component/parser/json/BpmnJsonParser.messageFlow.test.ts index e0b8791cbb..17bc6a26f9 100644 --- a/test/unit/component/parser/json/BpmnJsonParser.messageFlow.test.ts +++ b/test/unit/component/parser/json/BpmnJsonParser.messageFlow.test.ts @@ -20,10 +20,10 @@ import type { BpmnJsonModel } from '@lib/model/bpmn/json/bpmn20'; import { verifyEdge } from '../../../helpers/bpmn-model-expect'; import { buildDefinitions, EventDefinitionOn } from '../../../helpers/JsonBuilder'; -import { parseJson, parseJsonAndExpectOnlyEdges } from '../../../helpers/JsonTestUtils'; +import { parseJson, parseJsonAndExpectOnlyEdges } from '../../../helpers/JsonTestUtilities'; /** Json model */ -import { ShapeBpmnElementKind, ShapeUtil } from '@lib/model/bpmn/internal'; +import { ShapeBpmnElementKind, ShapeUtility } from '@lib/model/bpmn/internal'; import { Waypoint } from '@lib/model/bpmn/internal/edge/edge'; import { MessageVisibleKind } from '@lib/model/bpmn/internal/edge/kinds'; import * as bpmndi from '@lib/model/bpmn/json/bpmndi'; @@ -33,7 +33,7 @@ import * as bpmndi from '@lib/model/bpmn/json/bpmndi'; function buildProcessParameter(kind: ShapeBpmnElementKind, id: string): BuildProcessParameter { if (kind === ShapeBpmnElementKind.POOL) { return { id, withParticipant: true }; - } else if (ShapeUtil.isEvent(kind)) { + } else if (ShapeUtility.isEvent(kind)) { const isBoundaryEvent = kind === ShapeBpmnElementKind.EVENT_BOUNDARY; const eventParameter: BuildEventParameter = isBoundaryEvent ? { diff --git a/test/unit/component/parser/json/BpmnJsonParser.process.test.ts b/test/unit/component/parser/json/BpmnJsonParser.process.test.ts index a2e031c3b9..d5e2fa6c4e 100644 --- a/test/unit/component/parser/json/BpmnJsonParser.process.test.ts +++ b/test/unit/component/parser/json/BpmnJsonParser.process.test.ts @@ -19,7 +19,7 @@ import type { BpmnJsonModel } from '@lib/model/bpmn/json/bpmn20'; import { verifyShape } from '../../../helpers/bpmn-model-expect'; import { buildDefinitions } from '../../../helpers/JsonBuilder'; -import { parseJsonAndExpect, parseJsonAndExpectOnlyPools, parseJsonAndExpectOnlyPoolsAndFlowNodes, parseJsonAndExpectOnlyPoolsAndLanes } from '../../../helpers/JsonTestUtils'; +import { parseJsonAndExpect, parseJsonAndExpectOnlyPools, parseJsonAndExpectOnlyPoolsAndFlowNodes, parseJsonAndExpectOnlyPoolsAndLanes } from '../../../helpers/JsonTestUtilities'; import { ShapeBpmnElementKind } from '@lib/model/bpmn/internal'; diff --git a/test/unit/component/parser/json/BpmnJsonParser.sequenceFlow.conditional.test.ts b/test/unit/component/parser/json/BpmnJsonParser.sequenceFlow.conditional.test.ts index 08010627ae..05c4443ef9 100644 --- a/test/unit/component/parser/json/BpmnJsonParser.sequenceFlow.conditional.test.ts +++ b/test/unit/component/parser/json/BpmnJsonParser.sequenceFlow.conditional.test.ts @@ -17,7 +17,7 @@ limitations under the License. import type { BpmnJsonModel } from '@lib/model/bpmn/json/bpmn20'; import { verifyEdge } from '../../../helpers/bpmn-model-expect'; -import { parseJsonAndExpectOnlyEdgesAndFlowNodes } from '../../../helpers/JsonTestUtils'; +import { parseJsonAndExpectOnlyEdgesAndFlowNodes } from '../../../helpers/JsonTestUtilities'; import { SequenceFlowKind } from '@lib/model/bpmn/internal'; import { Waypoint } from '@lib/model/bpmn/internal/edge/edge'; diff --git a/test/unit/component/parser/json/BpmnJsonParser.sequenceFlow.default.test.ts b/test/unit/component/parser/json/BpmnJsonParser.sequenceFlow.default.test.ts index f0304c98c0..ff236c7533 100644 --- a/test/unit/component/parser/json/BpmnJsonParser.sequenceFlow.default.test.ts +++ b/test/unit/component/parser/json/BpmnJsonParser.sequenceFlow.default.test.ts @@ -17,7 +17,7 @@ limitations under the License. import type { BpmnJsonModel } from '@lib/model/bpmn/json/bpmn20'; import { verifyEdge } from '../../../helpers/bpmn-model-expect'; -import { parseJsonAndExpectOnlyEdgesAndFlowNodes } from '../../../helpers/JsonTestUtils'; +import { parseJsonAndExpectOnlyEdgesAndFlowNodes } from '../../../helpers/JsonTestUtilities'; import { SequenceFlowKind } from '@lib/model/bpmn/internal'; import { Waypoint } from '@lib/model/bpmn/internal/edge/edge'; diff --git a/test/unit/component/parser/json/BpmnJsonParser.sequenceFlow.normal.test.ts b/test/unit/component/parser/json/BpmnJsonParser.sequenceFlow.normal.test.ts index 24a3f27ddd..53e7bf6418 100644 --- a/test/unit/component/parser/json/BpmnJsonParser.sequenceFlow.normal.test.ts +++ b/test/unit/component/parser/json/BpmnJsonParser.sequenceFlow.normal.test.ts @@ -18,7 +18,7 @@ import type { TProcess } from '@lib/model/bpmn/json/baseElement/rootElement/root import type { BpmnJsonModel } from '@lib/model/bpmn/json/bpmn20'; import { verifyEdge } from '../../../helpers/bpmn-model-expect'; -import { parseJsonAndExpectOnlyEdges } from '../../../helpers/JsonTestUtils'; +import { parseJsonAndExpectOnlyEdges } from '../../../helpers/JsonTestUtilities'; import { Waypoint } from '@lib/model/bpmn/internal/edge/edge'; diff --git a/test/unit/component/parser/json/BpmnJsonParser.sub.process.test.ts b/test/unit/component/parser/json/BpmnJsonParser.sub.process.test.ts index ddec8d5ead..8e70c68232 100644 --- a/test/unit/component/parser/json/BpmnJsonParser.sub.process.test.ts +++ b/test/unit/component/parser/json/BpmnJsonParser.sub.process.test.ts @@ -29,8 +29,8 @@ import { parseJsonAndExpectOnlyFlowNodes, parseJsonAndExpectOnlySubProcess, verifySubProcess, -} from '../../../helpers/JsonTestUtils'; -import { getEventShapes } from '../../../helpers/TestUtils'; +} from '../../../helpers/JsonTestUtilities'; +import { getEventShapes } from '../../../helpers/TestUtilities'; import { ShapeBpmnElementKind, ShapeBpmnEventDefinitionKind, ShapeBpmnMarkerKind, ShapeBpmnSubProcessKind } from '@lib/model/bpmn/internal'; import { Waypoint } from '@lib/model/bpmn/internal/edge/edge'; diff --git a/test/unit/component/parser/json/BpmnJsonParser.text.annotation.test.ts b/test/unit/component/parser/json/BpmnJsonParser.text.annotation.test.ts index 1b739c15fe..cde40b7d07 100644 --- a/test/unit/component/parser/json/BpmnJsonParser.text.annotation.test.ts +++ b/test/unit/component/parser/json/BpmnJsonParser.text.annotation.test.ts @@ -21,7 +21,7 @@ import type { BPMNEdge, BPMNShape } from '@lib/model/bpmn/json/bpmndi'; import { verifyShape } from '../../../helpers/bpmn-model-expect'; import { buildDefinitions } from '../../../helpers/JsonBuilder'; -import { parseJsonAndExpectOnlyEdgesAndFlowNodes, parseJsonAndExpectOnlyFlowNodes } from '../../../helpers/JsonTestUtils'; +import { parseJsonAndExpectOnlyEdgesAndFlowNodes, parseJsonAndExpectOnlyFlowNodes } from '../../../helpers/JsonTestUtilities'; import { ShapeBpmnElementKind } from '@lib/model/bpmn/internal'; diff --git a/test/unit/component/parser/xml/BpmnXmlParser.trisotech-bpmn-modeler.6_2_0.test.ts b/test/unit/component/parser/xml/BpmnXmlParser.trisotech-bpmn-modeler.6_2_0.test.ts index 80be157bf9..f196321241 100644 --- a/test/unit/component/parser/xml/BpmnXmlParser.trisotech-bpmn-modeler.6_2_0.test.ts +++ b/test/unit/component/parser/xml/BpmnXmlParser.trisotech-bpmn-modeler.6_2_0.test.ts @@ -20,7 +20,7 @@ import type { TTask } from '@lib/model/bpmn/json/baseElement/flowNode/activity/t import type { TStartEvent } from '@lib/model/bpmn/json/baseElement/flowNode/event'; import type { TProcess } from '@lib/model/bpmn/json/baseElement/rootElement/rootElement'; -import { ensureIsArray } from '@lib/component/helpers/array-utils'; +import { ensureIsArray } from '@lib/component/helpers/array-utilities'; import BpmnXmlParser from '@lib/component/parser/xml/BpmnXmlParser'; import { readFileSync } from '@test/shared/file-helper'; diff --git a/test/unit/component/registry/bpmn-model-filters.test.ts b/test/unit/component/registry/bpmn-model-filters.test.ts index 423f9b5807..8a79fede1e 100644 --- a/test/unit/component/registry/bpmn-model-filters.test.ts +++ b/test/unit/component/registry/bpmn-model-filters.test.ts @@ -20,7 +20,7 @@ import type { Edge } from '@lib/model/bpmn/internal/edge/edge'; import type Shape from '@lib/model/bpmn/internal/shape/Shape'; import { verifyEdge as baseVerifyEdge, verifyShape as baseVerifyShape } from '../../helpers/bpmn-model-expect'; -import { buildEdgeId, buildShapeId, poolInModel, toBpmnModel } from '../../helpers/bpmn-model-utils'; +import { buildEdgeId, buildShapeId, poolInModel, toBpmnModel } from '../../helpers/bpmn-model-utilities'; import { ModelFiltering } from '@lib/component/registry/bpmn-model-filters'; import { ShapeBpmnElementKind } from '@lib/model/bpmn/internal'; diff --git a/test/unit/component/registry/bpmn-model-registry.test.ts b/test/unit/component/registry/bpmn-model-registry.test.ts index 1b37b5c843..5f1de6a059 100644 --- a/test/unit/component/registry/bpmn-model-registry.test.ts +++ b/test/unit/component/registry/bpmn-model-registry.test.ts @@ -25,7 +25,7 @@ import { poolInModel, sequenceFlowInModel, startEventInModel, -} from '../../helpers/bpmn-model-utils'; +} from '../../helpers/bpmn-model-utilities'; import { BpmnModelRegistry } from '@lib/component/registry/bpmn-model-registry'; import { ShapeBpmnEventDefinitionKind } from '@lib/model/bpmn/internal'; @@ -38,7 +38,7 @@ import { expectPool, expectSequenceFlow, expectStartEvent, -} from '@test/shared/model/bpmn-semantic-utils'; +} from '@test/shared/model/bpmn-semantic-utilities'; const bpmnModelRegistry = new BpmnModelRegistry(); diff --git a/test/unit/helpers/JsonTestUtils.ts b/test/unit/helpers/JsonTestUtilities.ts similarity index 100% rename from test/unit/helpers/JsonTestUtils.ts rename to test/unit/helpers/JsonTestUtilities.ts diff --git a/test/unit/helpers/TestUtils.BpmnJsonParser.event.ts b/test/unit/helpers/TestUtilities.BpmnJsonParser.event.ts similarity index 99% rename from test/unit/helpers/TestUtils.BpmnJsonParser.event.ts rename to test/unit/helpers/TestUtilities.BpmnJsonParser.event.ts index c639264992..5fac5e23f9 100644 --- a/test/unit/helpers/TestUtils.BpmnJsonParser.event.ts +++ b/test/unit/helpers/TestUtilities.BpmnJsonParser.event.ts @@ -19,8 +19,8 @@ import type { BuildEventDefinition, BuildEventParameter } from './JsonBuilder'; import { verifyShape } from './bpmn-model-expect'; import { buildDefinitions, EventDefinitionOn } from './JsonBuilder'; -import { expectAsWarning, parseJsonAndExpectEvent, parseJsonAndExpectOnlyEdgesAndFlowNodes, parseJsonAndExpectOnlyFlowNodes, parsingMessageCollector } from './JsonTestUtils'; -import { getEventShapes } from './TestUtils'; +import { expectAsWarning, parseJsonAndExpectEvent, parseJsonAndExpectOnlyEdgesAndFlowNodes, parseJsonAndExpectOnlyFlowNodes, parsingMessageCollector } from './JsonTestUtilities'; +import { getEventShapes } from './TestUtilities'; import { ShapeUnknownBpmnElementWarning } from '@lib/component/parser/json/warnings'; import { ShapeBpmnEventDefinitionKind } from '@lib/model/bpmn/internal'; diff --git a/test/unit/helpers/TestUtils.ts b/test/unit/helpers/TestUtilities.ts similarity index 84% rename from test/unit/helpers/TestUtils.ts rename to test/unit/helpers/TestUtilities.ts index dd5b4e9042..1fcc75e082 100644 --- a/test/unit/helpers/TestUtils.ts +++ b/test/unit/helpers/TestUtilities.ts @@ -17,10 +17,10 @@ limitations under the License. import type BpmnModel from '@lib/model/bpmn/internal/BpmnModel'; import type Shape from '@lib/model/bpmn/internal/shape/Shape'; -import { ShapeBpmnElementKind, ShapeUtil } from '@lib/model/bpmn/internal'; +import { ShapeBpmnElementKind, ShapeUtility } from '@lib/model/bpmn/internal'; export const shapeBpmnElementKindForLabelTests = Object.values(ShapeBpmnElementKind) - .filter(kind => !ShapeUtil.isPoolOrLane(kind)) + .filter(kind => !ShapeUtility.isPoolOrLane(kind)) // group as label is managed by category .filter(kind => kind != ShapeBpmnElementKind.GROUP) // intermediate catch and boundary events require extra property no managed here @@ -28,5 +28,5 @@ export const shapeBpmnElementKindForLabelTests = Object.values(ShapeBpmnElementK .map(kind => [kind]); export function getEventShapes(model: BpmnModel): Shape[] { - return model.flowNodes.filter(shape => ShapeUtil.isEvent(shape.bpmnElement.kind)); + return model.flowNodes.filter(shape => ShapeUtility.isEvent(shape.bpmnElement.kind)); } diff --git a/test/unit/helpers/bpmn-model-expect.ts b/test/unit/helpers/bpmn-model-expect.ts index c021d37d67..9a4034e821 100644 --- a/test/unit/helpers/bpmn-model-expect.ts +++ b/test/unit/helpers/bpmn-model-expect.ts @@ -22,7 +22,7 @@ import type { ShapeBpmnIntermediateCatchEvent, ShapeBpmnIntermediateThrowEvent } import type { EdgeExtensions, LabelExtensions, ShapeExtensions } from '@lib/model/bpmn/internal/types'; import type { TProcess } from '@lib/model/bpmn/json/baseElement/rootElement/rootElement'; -import { FlowKind, MessageVisibleKind, SequenceFlowKind, ShapeBpmnMarkerKind, ShapeBpmnSubProcessKind, ShapeBpmnEventDefinitionKind, ShapeUtil } from '@lib/model/bpmn/internal'; +import { FlowKind, MessageVisibleKind, SequenceFlowKind, ShapeBpmnMarkerKind, ShapeBpmnSubProcessKind, ShapeBpmnEventDefinitionKind, ShapeUtility } from '@lib/model/bpmn/internal'; import { SequenceFlow } from '@lib/model/bpmn/internal/edge/flows'; import { ShapeBpmnActivity, ShapeBpmnBoundaryEvent, ShapeBpmnCallActivity, ShapeBpmnEvent } from '@lib/model/bpmn/internal/shape/ShapeBpmnElement'; @@ -146,9 +146,9 @@ export const verifyShape = ( expect(event.eventDefinitionKind).toEqual(expectedEvent.eventDefinitionKind); if (expectedEvent.eventDefinitionKind === ShapeBpmnEventDefinitionKind.LINK) { - if (ShapeUtil.isIntermediateCatchEvent(expectedShape.bpmnElementKind)) { + if (ShapeUtility.isIntermediateCatchEvent(expectedShape.bpmnElementKind)) { expect((event as ShapeBpmnIntermediateCatchEvent).sourceIds).toEqual((expectedEvent as ExpectedIntermediateCatchEventShape).sourceIds ?? []); - } else if (ShapeUtil.isIntermediateThrowEvent(expectedShape.bpmnElementKind)) { + } else if (ShapeUtility.isIntermediateThrowEvent(expectedShape.bpmnElementKind)) { expect((event as ShapeBpmnIntermediateThrowEvent).targetId).toEqual((expectedEvent as ExpectedIntermediateThrowEventShape).targetId); } } diff --git a/test/unit/helpers/bpmn-model-utils.ts b/test/unit/helpers/bpmn-model-utilities.ts similarity index 99% rename from test/unit/helpers/bpmn-model-utils.ts rename to test/unit/helpers/bpmn-model-utilities.ts index 9f4d6be5d1..8f340ccef3 100644 --- a/test/unit/helpers/bpmn-model-utils.ts +++ b/test/unit/helpers/bpmn-model-utilities.ts @@ -16,7 +16,7 @@ limitations under the License. import type BpmnModel from '@lib/model/bpmn/internal/BpmnModel'; -import { ensureIsArray } from '@lib/component/helpers/array-utils'; +import { ensureIsArray } from '@lib/component/helpers/array-utilities'; import { ShapeBpmnCallActivityKind, ShapeBpmnElementKind, ShapeBpmnEventDefinitionKind, ShapeBpmnMarkerKind, ShapeBpmnSubProcessKind } from '@lib/model/bpmn/internal'; import { Edge } from '@lib/model/bpmn/internal/edge/edge'; import { AssociationFlow, MessageFlow, SequenceFlow } from '@lib/model/bpmn/internal/edge/flows'; diff --git a/test/unit/model/bpmn/internal/shape/utils.test.ts b/test/unit/model/bpmn/internal/shape/utilities.test.ts similarity index 80% rename from test/unit/model/bpmn/internal/shape/utils.test.ts rename to test/unit/model/bpmn/internal/shape/utilities.test.ts index e7af45600d..d070a022d3 100644 --- a/test/unit/model/bpmn/internal/shape/utils.test.ts +++ b/test/unit/model/bpmn/internal/shape/utilities.test.ts @@ -14,17 +14,17 @@ See the License for the specific language governing permissions and limitations under the License. */ -import { ShapeBpmnElementKind, ShapeUtil } from '@lib/model/bpmn/internal'; +import { ShapeBpmnElementKind, ShapeUtility } from '@lib/model/bpmn/internal'; describe('ShapeUtil', () => { it('top level bpmn event kinds', () => { - const events = ShapeUtil.eventKinds(); + const events = ShapeUtility.eventKinds(); expect(events).toContain(ShapeBpmnElementKind.EVENT_END); expect(events).toContain(ShapeBpmnElementKind.EVENT_START); }); it('task kinds', () => { - const tasks = ShapeUtil.taskKinds(); + const tasks = ShapeUtility.taskKinds(); expect(tasks).toContain(ShapeBpmnElementKind.TASK); expect(tasks).toContain(ShapeBpmnElementKind.TASK_USER); }); @@ -42,18 +42,18 @@ describe('ShapeUtil', () => { [ShapeBpmnElementKind.GROUP], [ShapeBpmnElementKind.TEXT_ANNOTATION], ])('%s', (bpmnKind: ShapeBpmnElementKind) => { - expect(ShapeUtil.isPoolOrLane(bpmnKind)).toBeFalsy(); + expect(ShapeUtility.isPoolOrLane(bpmnKind)).toBeFalsy(); }); }); describe('Reference kinds cannot be modified', () => { it.each` kind | kindsFunction - ${'activities'} | ${() => ShapeUtil.activityKinds()} - ${'events'} | ${() => ShapeUtil.eventKinds()} - ${'flow nodes'} | ${() => ShapeUtil.flowNodeKinds()} - ${'gateways'} | ${() => ShapeUtil.gatewayKinds()} - ${'tasks'} | ${() => ShapeUtil.taskKinds()} + ${'activities'} | ${() => ShapeUtility.activityKinds()} + ${'events'} | ${() => ShapeUtility.eventKinds()} + ${'flow nodes'} | ${() => ShapeUtility.flowNodeKinds()} + ${'gateways'} | ${() => ShapeUtility.gatewayKinds()} + ${'tasks'} | ${() => ShapeUtility.taskKinds()} `('$kind', ({ kindsFunction }: { kindsFunction: () => string[] }) => { const kinds = kindsFunction();