diff --git a/frontend/.eslintrc.js b/frontend/.eslintrc.js deleted file mode 100644 index a0d50275f..000000000 --- a/frontend/.eslintrc.js +++ /dev/null @@ -1,166 +0,0 @@ -/* eslint-disable */ - -module.exports = { - "env": { - "browser": true, - "node": true - }, - "extends": [ - "airbnb-typescript/base", - "plugin:@angular-eslint/recommended", - "plugin:@angular-eslint/template/process-inline-templates" - ], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "project": "tsconfig.json" - }, - "plugins": [ - "deprecation", - "eslint-plugin-import", - "@typescript-eslint" - ], - "rules": { - "@angular-eslint/component-selector": [ - "error", - { - "prefix": "sqx", - "style": "kebab-case", - "type": "element" - } - ], - "@angular-eslint/directive-selector": [ - "error", - { - "prefix": "sqx", - "style": "camelCase", - "type": "attribute" - } - ], - "@angular-eslint/prefer-inject": [ - "off" - ], - "@angular-eslint/use-lifecycle-interface": [ - "off" - ], - "@typescript-eslint/dot-notation": "off", - "@typescript-eslint/indent": "off", - "@typescript-eslint/lines-between-class-members": "off", - "@typescript-eslint/member-delimiter-style": [ - "error", - { - "multiline": { - "delimiter": "semi", - "requireLast": true - }, - "singleline": { - "delimiter": "semi", - "requireLast": false - } - } - ], - "@typescript-eslint/naming-convention": [ - "error", - { - "format": [ - "camelCase", - "PascalCase", - "UPPER_CASE" - ], - "leadingUnderscore": "allow", - "selector": "variable", - "trailingUnderscore": "allow" - }, - { - "format": [ - "PascalCase" - ], - "selector": "typeLike" - } - ], - "@typescript-eslint/no-shadow": "off", - "@typescript-eslint/no-this-alias": "error", - "@typescript-eslint/no-unnecessary-boolean-literal-compare": "error", - "@typescript-eslint/no-unused-expressions": "off", - "@typescript-eslint/no-unused-vars": [ - "error", - { - "argsIgnorePattern": "^_", - "varsIgnorePattern": "^_" - } - ], - "@typescript-eslint/no-use-before-define": "off", - "@typescript-eslint/quotes": [ - "error", - "single" - ], - "@typescript-eslint/return-await": "off", - "@typescript-eslint/semi": [ - "error", - "always" - ], - "arrow-body-style": "off", - "arrow-parens": "off", - "class-methods-use-this": "off", - "default-case": "off", - "deprecation/deprecation": "warn", - "function-paren-newline": "off", - "implicit-arrow-linebreak": "off", - "import/extensions": "off", - "import/no-extraneous-dependencies": "off", - "import/no-useless-path-segments": "off", - "import/order": [ - "error", - { - "alphabetize": { - "order": "asc" - }, - "pathGroups": [ - { - "group": "external", - "pattern": "@app/**", - "position": "after" - } - ], - "pathGroupsExcludedImportTypes": [ - "builtin" - ] - } - ], - "import/prefer-default-export": "off", - "linebreak-style": "off", - "max-classes-per-file": "off", - "max-len": "off", - "newline-per-chained-call": "off", - "no-else-return": "off", - "no-mixed-operators": "off", - "no-nested-ternary": "off", - "no-param-reassign": "off", - "no-plusplus": "off", - "no-prototype-builtins": "off", - "no-restricted-syntax": "off", - "no-trailing-spaces": "error", - "no-underscore-dangle": "off", - "object-curly-newline": [ - "error", - { - "ExportDeclaration": "never", - "ImportDeclaration": "never", - "ObjectExpression": { - "consistent": true - }, - "ObjectPattern": { - "consistent": true - } - } - ], - "operator-linebreak": "off", - "prefer-destructuring": "off", - "sort-imports": [ - "error", - { - "ignoreCase": true, - "ignoreDeclarationSort": true - } - ] - } -}; diff --git a/frontend/eslint.config.js b/frontend/eslint.config.js new file mode 100644 index 000000000..70be07204 --- /dev/null +++ b/frontend/eslint.config.js @@ -0,0 +1,159 @@ +const { + defineConfig, +} = require("eslint/config"); + +const globals = require("globals"); +const tsParser = require("@typescript-eslint/parser"); +const deprecation = require("eslint-plugin-deprecation"); +const importPlugin = require("eslint-plugin-import"); +const typescriptEslint = require("@typescript-eslint/eslint-plugin"); + +const js = require("@eslint/js"); + +const { + FlatCompat, +} = require("@eslint/eslintrc"); + +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all +}); + +module.exports = defineConfig([{ + languageOptions: { + globals: { + ...globals.browser, + ...globals.node, + }, + + parser: tsParser, + + parserOptions: { + "project": ["tsconfig.app.json", "tsconfig.spec.json"], + "createDefaultProgram": true, + }, + }, + + extends: compat.extends( + "eslint:recommended", + "plugin:@angular-eslint/recommended", + "plugin:@angular-eslint/template/process-inline-templates", + ), + + plugins: { + deprecation, + import: importPlugin, + "@typescript-eslint": typescriptEslint, + }, +}, +{ + files: ['src/**/*.ts', '**/*.ts'], + rules: { + "@angular-eslint/component-selector": ["error", { + "prefix": "sqx", + "style": "kebab-case", + "type": "element", + }], + + "@angular-eslint/directive-selector": ["error", { + "prefix": "sqx", + "style": "camelCase", + "type": "attribute", + }], + + "@angular-eslint/prefer-inject": ["off"], + "@angular-eslint/use-lifecycle-interface": ["off"], + "@typescript-eslint/dot-notation": "off", + "@typescript-eslint/indent": "off", + "@typescript-eslint/lines-between-class-members": "off", + + "@typescript-eslint/naming-convention": ["error", { + "format": ["camelCase", "PascalCase", "UPPER_CASE"], + "leadingUnderscore": "allow", + "selector": "variable", + "trailingUnderscore": "allow", + }, { + "format": ["PascalCase"], + "selector": "typeLike", + }], + + "@typescript-eslint/no-shadow": "off", + "@typescript-eslint/no-this-alias": "error", + "@typescript-eslint/no-unnecessary-boolean-literal-compare": "error", + "@typescript-eslint/no-unused-expressions": "off", + "@typescript-eslint/no-implied-eval": "error", + + "@typescript-eslint/no-unused-vars": ["error", { + "argsIgnorePattern": "^_", + "varsIgnorePattern": "^_", + }], + + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/return-await": "off", + "arrow-body-style": "off", + "arrow-parens": "off", + "class-methods-use-this": "off", + "default-case": "off", + "function-paren-newline": "off", + "implicit-arrow-linebreak": "off", + "import/extensions": "off", + "import/no-extraneous-dependencies": "off", + "import/no-useless-path-segments": "off", + + "import/order": ["error", { + "alphabetize": { + "order": "asc", + }, + + "pathGroups": [{ + "group": "external", + "pattern": "@app/**", + "position": "after", + }], + + "pathGroupsExcludedImportTypes": ["builtin"], + }], + + "import/prefer-default-export": "off", + "linebreak-style": "off", + "max-classes-per-file": "off", + "max-len": "off", + "newline-per-chained-call": "off", + "no-else-return": "off", + "no-extra-boolean-cast": "off", + "no-mixed-operators": "off", + "no-nested-ternary": "off", + "no-param-reassign": "off", + "no-plusplus": "off", + "no-prototype-builtins": "off", + "no-restricted-syntax": "off", + "no-trailing-spaces": "error", + "no-underscore-dangle": "off", + "no-undef": "off", + "no-unused-vars": "off", + "no-useless-escape": "off", + "no-useless-return": "warn", + + "object-curly-newline": ["error", { + "ExportDeclaration": "never", + "ImportDeclaration": "never", + + "ObjectExpression": { + "consistent": true, + }, + + "ObjectPattern": { + "consistent": true, + }, + }], + + "operator-linebreak": "off", + "prefer-destructuring": "off", + + "sort-imports": ["error", { + "ignoreCase": true, + "ignoreDeclarationSort": true, + }], + }, +}]); diff --git a/frontend/package-lock.json b/frontend/package-lock.json index ad7da25fd..a9d5c7b69 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -8,17 +8,16 @@ "name": "squidex", "version": "0.0.0", "dependencies": { - "@angular/animations": "21.1.2", - "@angular/cdk": "21.1.2", - "@angular/cdk-experimental": "21.1.2", - "@angular/common": "21.1.2", - "@angular/core": "21.1.2", - "@angular/forms": "21.1.2", - "@angular/localize": "21.1.2", - "@angular/platform-browser": "21.1.2", - "@angular/platform-browser-dynamic": "21.1.2", - "@angular/platform-server": "21.1.2", - "@angular/router": "21.1.2", + "@angular/cdk": "21.1.3", + "@angular/cdk-experimental": "21.1.3", + "@angular/common": "21.1.3", + "@angular/core": "21.1.3", + "@angular/forms": "21.1.3", + "@angular/localize": "21.1.3", + "@angular/platform-browser": "21.1.3", + "@angular/platform-browser-dynamic": "21.1.3", + "@angular/platform-server": "21.1.3", + "@angular/router": "21.1.3", "@egjs/hammerjs": "2.0.17", "@floating-ui/dom": "^1.7.5", "@graphiql/toolkit": "^0.11.3", @@ -32,8 +31,8 @@ "cropperjs": "1.6.2", "date-fns": "4.1.0", "graphiql": "4.1.1", - "graphql": "16.11.0", - "graphql-ws": "^6.0.5", + "graphql": "16.12.0", + "graphql-ws": "^6.0.7", "image-focus": "1.2.1", "leaflet": "1.9.4", "leaflet-control-geocoder": "3.3.1", @@ -54,7 +53,7 @@ "tslib": "2.8.1", "tui-calendar": "^1.15.3", "typemoq": "^2.1.0", - "video.js": "8.23.4", + "video.js": "8.23.6", "vis-data": "8.0.3", "vis-network": "10.0.2", "vis-util": "6.0.0", @@ -63,44 +62,43 @@ "zone.js": "0.16.0" }, "devDependencies": { - "@analogjs/storybook-angular": "^2.2.3", - "@angular-devkit/architect": "^0.2101.2", - "@angular-devkit/build-angular": "^21.1.2", + "@angular-devkit/architect": "^0.2101.3", + "@angular-devkit/build-angular": "^21.1.3", "@angular-eslint/builder": "21.2.0", "@angular-eslint/eslint-plugin": "21.2.0", "@angular-eslint/eslint-plugin-template": "21.2.0", "@angular-eslint/schematics": "21.2.0", "@angular-eslint/template-parser": "21.2.0", - "@angular/cli": "^21.1.2", - "@angular/compiler": "^21.1.2", - "@angular/compiler-cli": "^21.1.2", - "@angular/elements": "^21.1.2", + "@angular/cli": "^21.1.3", + "@angular/compiler": "^21.1.3", + "@angular/compiler-cli": "^21.1.3", + "@angular/elements": "^21.1.3", "@compodoc/compodoc": "^1.2.1", - "@storybook/addon-links": "^10.2.5", - "@storybook/angular": "^10.2.5", + "@storybook/addon-links": "^10.2.7", + "@storybook/angular": "^10.2.7", "@storybook/testing-library": "^0.2.2", "@types/ace": "^0.0.52", "@types/codemirror": "5.60.17", "@types/core-js": "2.5.8", "@types/mersenne-twister": "1.1.7", "@types/mousetrap": "1.6.15", - "@types/node": "25.2.0", - "@types/react": "19.2.11", + "@types/node": "25.2.1", + "@types/react": "19.2.13", "@types/react-dom": "19.2.3", "@types/ws": "8.18.1", - "@typescript-eslint/eslint-plugin": "^7.18.0", - "@typescript-eslint/parser": "^7.18.0", + "@typescript-eslint/eslint-plugin": "^8.54.0", + "@typescript-eslint/parser": "^8.54.0", "copy-webpack-plugin": "^13.0.1", - "eslint": "^8.57.1", + "eslint": "^9.39.2", "eslint-config-airbnb-typescript": "18.0.0", "eslint-plugin-deprecation": "^3.0.0", "eslint-plugin-import": "2.32.0", "eslint-plugin-jsx-a11y": "6.10.2", - "eslint-plugin-storybook": "^10.2.5", + "eslint-plugin-storybook": "^10.2.7", "jsdom": "^28.0.0", "prettier": "3.8.1", "squidex-prettier-plugin-organize-attributes": "^1.0.1", - "storybook": "^10.2.5", + "storybook": "^10.2.7", "stylelint": "17.1.1", "stylelint-config-standard": "40.0.0", "stylelint-config-standard-scss": "^17.0.0", @@ -361,126 +359,14 @@ "node": ">=6.0.0" } }, - "node_modules/@analogjs/storybook-angular": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@analogjs/storybook-angular/-/storybook-angular-2.2.3.tgz", - "integrity": "sha512-CsyQU+zIALX6r2V7YkOxPv3z56BL/stGNW/kbEHwHdwiDhWOp+Gk3Rmjz9QC8FLH+LphjTDPOqOA502qgYW1hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/builder-vite": "^10.0.0" - }, - "engines": { - "node": ">=20.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/brandonroberts" - }, - "peerDependencies": { - "@analogjs/vite-plugin-angular": "*", - "@storybook/angular": "^10.0.0", - "storybook": "^10.0.0", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-beta.0" - } - }, - "node_modules/@analogjs/vite-plugin-angular": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@analogjs/vite-plugin-angular/-/vite-plugin-angular-2.2.3.tgz", - "integrity": "sha512-OqVfiJsaHdHMxzvK0heVvp8MenSXh+xib6/p+v3d44kJ3J7ooD4gRx/jKC350zkgRKwcZc3a0ybGUnG6LEF7mg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "ts-morph": "^21.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/brandonroberts" - }, - "peerDependencies": { - "@angular-devkit/build-angular": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0", - "@angular/build": "^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0" - }, - "peerDependenciesMeta": { - "@angular-devkit/build-angular": { - "optional": true - }, - "@angular/build": { - "optional": true - } - } - }, - "node_modules/@analogjs/vite-plugin-angular/node_modules/@ts-morph/common": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.22.0.tgz", - "integrity": "sha512-HqNBuV/oIlMKdkLshXd1zKBqNQCsuPEsgQOkfFQ/eUKjRlwndXW1AjN9LVkBEIukm00gGXSRmfkl0Wv5VXLnlw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "fast-glob": "^3.3.2", - "minimatch": "^9.0.3", - "mkdirp": "^3.0.1", - "path-browserify": "^1.0.1" - } - }, - "node_modules/@analogjs/vite-plugin-angular/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@analogjs/vite-plugin-angular/node_modules/code-block-writer": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-12.0.0.tgz", - "integrity": "sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/@analogjs/vite-plugin-angular/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@analogjs/vite-plugin-angular/node_modules/ts-morph": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-21.0.1.tgz", - "integrity": "sha512-dbDtVdEAncKctzrVZ+Nr7kHpHkv+0JDJb2MjjpBaj8bFeCkePU9rHfMklmhuLFnpeq/EJZk2IhStY6NzqgjOkg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@ts-morph/common": "~0.22.0", - "code-block-writer": "^12.0.0" - } - }, "node_modules/@angular-devkit/architect": { - "version": "0.2101.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2101.2.tgz", - "integrity": "sha512-pV2onJgp16xO0vAqEfRWVynRPPLVHydYLANNa3UX3l5T39JcYdMIoOHSIIl8tWrxVeOwiWd1ajub0VsFTUok4Q==", + "version": "0.2101.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2101.3.tgz", + "integrity": "sha512-vKz8aPA62W+e9+pF6ct4CRDG/MjlIH7sWFGYkxPPRst2g46ZQsRkrzfMZAWv/wnt6OZ1OwyRuO3RW83EMhag8g==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.1.2", + "@angular-devkit/core": "21.1.3", "rxjs": "7.8.2" }, "bin": { @@ -493,9 +379,9 @@ } }, "node_modules/@angular-devkit/architect/node_modules/@angular-devkit/core": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.1.2.tgz", - "integrity": "sha512-0wl5nJlFWsbwfUB2CQeTSmnVQ8AtqqwM3bYPYtXSc+vA8+hzsOAjjDuRnBxZS9zTnqtXKXB1e7M3Iy7KUwh7LA==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.1.3.tgz", + "integrity": "sha512-huEXd1tWQHwwN+0VGRT+vSVplV0KNrGFUGJzkIW6iJE1SQElxn6etMai+pSd5DJcePkx6+SuscVsxbfwf70hnA==", "dev": true, "license": "MIT", "dependencies": { @@ -613,17 +499,17 @@ } }, "node_modules/@angular-devkit/build-angular": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-21.1.2.tgz", - "integrity": "sha512-i/FTbqVwj0Wk6B5RA2H9iVsDC/kIK/5koSEwkIQjXGZuDVFUoEuWiIR2PGGSSQ9u3DmkpVPZmKEXWRl+g7Qn5g==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-21.1.3.tgz", + "integrity": "sha512-02mA04tz9UshwPTv8lBkLcMPpMFh7YnAMXM6u0fL558rU7UrBxsm3XfMmDao3f+jT8umA1mDHBx9OW9LIF4Ewg==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.2101.2", - "@angular-devkit/build-webpack": "0.2101.2", - "@angular-devkit/core": "21.1.2", - "@angular/build": "21.1.2", + "@angular-devkit/architect": "0.2101.3", + "@angular-devkit/build-webpack": "0.2101.3", + "@angular-devkit/core": "21.1.3", + "@angular/build": "21.1.3", "@babel/core": "7.28.5", "@babel/generator": "7.28.5", "@babel/helper-annotate-as-pure": "7.27.3", @@ -634,7 +520,7 @@ "@babel/preset-env": "7.28.5", "@babel/runtime": "7.28.4", "@discoveryjs/json-ext": "0.6.3", - "@ngtools/webpack": "21.1.2", + "@ngtools/webpack": "21.1.3", "ansi-colors": "4.1.3", "autoprefixer": "10.4.23", "babel-loader": "10.0.0", @@ -668,7 +554,7 @@ "tinyglobby": "0.2.15", "tree-kill": "1.2.2", "tslib": "2.8.1", - "webpack": "5.104.1", + "webpack": "5.105.0", "webpack-dev-middleware": "7.4.5", "webpack-dev-server": "5.2.2", "webpack-merge": "6.0.1", @@ -689,7 +575,7 @@ "@angular/platform-browser": "^21.0.0", "@angular/platform-server": "^21.0.0", "@angular/service-worker": "^21.0.0", - "@angular/ssr": "^21.1.2", + "@angular/ssr": "^21.1.3", "@web/test-runner": "^0.20.0", "browser-sync": "^3.0.2", "jest": "^30.2.0", @@ -746,9 +632,9 @@ } }, "node_modules/@angular-devkit/build-angular/node_modules/@angular-devkit/core": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.1.2.tgz", - "integrity": "sha512-0wl5nJlFWsbwfUB2CQeTSmnVQ8AtqqwM3bYPYtXSc+vA8+hzsOAjjDuRnBxZS9zTnqtXKXB1e7M3Iy7KUwh7LA==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.1.3.tgz", + "integrity": "sha512-huEXd1tWQHwwN+0VGRT+vSVplV0KNrGFUGJzkIW6iJE1SQElxn6etMai+pSd5DJcePkx6+SuscVsxbfwf70hnA==", "dev": true, "license": "MIT", "dependencies": { @@ -978,13 +864,13 @@ } }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.2101.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.2101.2.tgz", - "integrity": "sha512-/rC9rcrG+Tn8MZIEW9LTHmBuLiQdCHZyscgqgMXD049qgB858gS1Y/lP/tt0xrP3Yhan5XNcRYjcv6sYPtmPUw==", + "version": "0.2101.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.2101.3.tgz", + "integrity": "sha512-M2o79NbnrjKC78DBdPcJ/ZDSvTi1rpvWBhAa0TN/HZhW33xf9pkYCBOfHIowv+m/tPA1KqL7Ww3qNhRmzId6yg==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.2101.2", + "@angular-devkit/architect": "0.2101.3", "rxjs": "7.8.2" }, "engines": { @@ -1084,13 +970,13 @@ } }, "node_modules/@angular-devkit/schematics": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-21.1.2.tgz", - "integrity": "sha512-PA3gkiFhHUuXd2XuP7yzKg/9N++bjw+uOl473KwIsMuZwMPhncKa4+mUYBaffDoPqaujZvjfo6mjtCBuiBv05w==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-21.1.3.tgz", + "integrity": "sha512-Ps7bRl5uOcM7WpNJHbSls/jz5/wAI0ldkTlKyiBFA7RtNeQIABAV+hvlw5DJuEb1Lo5hnK0hXj90AyZdOxzY+w==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.1.2", + "@angular-devkit/core": "21.1.3", "jsonc-parser": "3.3.1", "magic-string": "0.30.21", "ora": "9.0.0", @@ -1103,9 +989,9 @@ } }, "node_modules/@angular-devkit/schematics/node_modules/@angular-devkit/core": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.1.2.tgz", - "integrity": "sha512-0wl5nJlFWsbwfUB2CQeTSmnVQ8AtqqwM3bYPYtXSc+vA8+hzsOAjjDuRnBxZS9zTnqtXKXB1e7M3Iy7KUwh7LA==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.1.3.tgz", + "integrity": "sha512-huEXd1tWQHwwN+0VGRT+vSVplV0KNrGFUGJzkIW6iJE1SQElxn6etMai+pSd5DJcePkx6+SuscVsxbfwf70hnA==", "dev": true, "license": "MIT", "dependencies": { @@ -1634,10 +1520,12 @@ } }, "node_modules/@angular/animations": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-21.1.2.tgz", - "integrity": "sha512-8lVSH3y/Pq22ND9ng80UQwQRiIPIE7oD3vuV98Wufld59+s5g4PdJNqPhEVD5dkYD0gYQcm3jTIXSeYuOfpsUg==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-21.1.3.tgz", + "integrity": "sha512-UADMncDd9lkmIT1NPVFcufyP5gJHMPzxNaQpojiGrxT1aT8Du30mao0KSrB4aTwcicv6/cdD5bZbIyg+FL6LkQ==", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "tslib": "^2.3.0" }, @@ -1645,18 +1533,18 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/core": "21.1.2" + "@angular/core": "21.1.3" } }, "node_modules/@angular/build": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@angular/build/-/build-21.1.2.tgz", - "integrity": "sha512-5hl7OTZeQcdkr/3LXSijLuUCwlcqGyYJYOb8GbFqSifSR03JFI3tLQtyQ0LX2CXv3MOx1qFUQbYVfcjW5M36QQ==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@angular/build/-/build-21.1.3.tgz", + "integrity": "sha512-RXVRuamfrSPwsFCLJgsO2ucp+dwWDbGbhXrQnMrGXm0qdgYpI8bAsBMd8wOeUA6vn4fRmjaRFQZbL/rcIVrkzw==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.2101.2", + "@angular-devkit/architect": "0.2101.3", "@babel/core": "7.28.5", "@babel/helper-annotate-as-pure": "7.27.3", "@babel/helper-split-export-declaration": "7.24.7", @@ -1679,7 +1567,7 @@ "semver": "7.7.3", "source-map-support": "0.5.21", "tinyglobby": "0.2.15", - "undici": "7.18.2", + "undici": "7.20.0", "vite": "7.3.0", "watchpack": "2.5.0" }, @@ -1699,7 +1587,7 @@ "@angular/platform-browser": "^21.0.0", "@angular/platform-server": "^21.0.0", "@angular/service-worker": "^21.0.0", - "@angular/ssr": "^21.1.2", + "@angular/ssr": "^21.1.3", "karma": "^6.4.0", "less": "^4.2.0", "ng-packagr": "^21.0.0", @@ -1840,9 +1728,9 @@ } }, "node_modules/@angular/cdk": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-21.1.2.tgz", - "integrity": "sha512-0q+PhBKmjKO0Yi353VCpMxT0g787cllLhdpyxh00i3twxNWvFkQZgy2Ih187ZXydvW+u9mFkK9+UGLzncQ0yng==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-21.1.3.tgz", + "integrity": "sha512-jMiEKCcZMIAnyx2jxrJHmw5c7JXAiN56ErZ4X+OuQ5yFvYRocRVEs25I0OMxntcXNdPTJQvpGwGlhWhS0yDorg==", "license": "MIT", "dependencies": { "parse5": "^8.0.0", @@ -1856,32 +1744,32 @@ } }, "node_modules/@angular/cdk-experimental": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@angular/cdk-experimental/-/cdk-experimental-21.1.2.tgz", - "integrity": "sha512-0OO2iEp5iH030tXpAgTnqGhdaS0KLG541BUYxK5K6yyty8fKqDjjiEmNDVtcJpOAi+SIRHFGYFQC2tuDgjKRDQ==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@angular/cdk-experimental/-/cdk-experimental-21.1.3.tgz", + "integrity": "sha512-9dcZ+DTRyYXCaEdxzvuAYB16xRNTjiuT/l3t85UlGigq+ORUjSGOvMWj3sRbM9E7ZXFYTelKZIvtEhzzi7pQhg==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/cdk": "21.1.2", + "@angular/cdk": "21.1.3", "@angular/core": "^21.0.0 || ^22.0.0" } }, "node_modules/@angular/cli": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-21.1.2.tgz", - "integrity": "sha512-AHjXCBl2PEilMJct6DX3ih5Fl5PiKpNDIj0ViTyVh1YcfpYjt6NzhVlV2o++8VNPNH/vMcmf2551LZIDProXXA==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-21.1.3.tgz", + "integrity": "sha512-UPtDcpKyrKZRPfym9gTovcibPzl2O/Woy7B8sm45sAnjDH+jDUCcCvuIak7GpH47shQkC2J4yvnHZbD4c6XxcQ==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.2101.2", - "@angular-devkit/core": "21.1.2", - "@angular-devkit/schematics": "21.1.2", + "@angular-devkit/architect": "0.2101.3", + "@angular-devkit/core": "21.1.3", + "@angular-devkit/schematics": "21.1.3", "@inquirer/prompts": "7.10.1", "@listr2/prompt-adapter-inquirer": "3.0.5", - "@modelcontextprotocol/sdk": "1.25.2", - "@schematics/angular": "21.1.2", + "@modelcontextprotocol/sdk": "1.26.0", + "@schematics/angular": "21.1.3", "@yarnpkg/lockfile": "1.1.0", "algoliasearch": "5.46.2", "ini": "6.0.0", @@ -1905,9 +1793,9 @@ } }, "node_modules/@angular/cli/node_modules/@angular-devkit/core": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.1.2.tgz", - "integrity": "sha512-0wl5nJlFWsbwfUB2CQeTSmnVQ8AtqqwM3bYPYtXSc+vA8+hzsOAjjDuRnBxZS9zTnqtXKXB1e7M3Iy7KUwh7LA==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.1.3.tgz", + "integrity": "sha512-huEXd1tWQHwwN+0VGRT+vSVplV0KNrGFUGJzkIW6iJE1SQElxn6etMai+pSd5DJcePkx6+SuscVsxbfwf70hnA==", "dev": true, "license": "MIT", "dependencies": { @@ -2038,9 +1926,9 @@ } }, "node_modules/@angular/common": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-21.1.2.tgz", - "integrity": "sha512-NK26OG1+/3EXLDWstSPmdGbkpt8bP9AsT9J7EBornMswUjmQDbjyb85N/esKjRjDMkw4p/aKpBo24eCV5uUmBA==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-21.1.3.tgz", + "integrity": "sha512-Wdbln/UqZM5oVnpfIydRdhhL8A9x3bKZ9Zy1/mM0q+qFSftPvmFZIXhEpFqbDwNYbGUhGzx7t8iULC4sVVp/zA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -2049,14 +1937,14 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/core": "21.1.2", + "@angular/core": "21.1.3", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-21.1.2.tgz", - "integrity": "sha512-5OFdZPNix7iK4HSdRxPgg74VvcmQZAMzv9ACYZ8iGfNxiJUjFSurfz0AtVEh0oE2oZDH1v48bHI1s+0ljCHZhA==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-21.1.3.tgz", + "integrity": "sha512-gDNLh7MEf7Qf88ktZzS4LJQXCA5U8aQTfK9ak+0mi2ruZ0x4XSjQCro4H6OPKrrbq94+6GcnlSX5+oVIajEY3w==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -2066,9 +1954,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-21.1.2.tgz", - "integrity": "sha512-h+sX7QvSz58KvmRwNMa33EZHti8Cnw1DL01kInJ/foDchC/O2VMOumeGHS+lAe48t2Nbhiq/obgf275TkDZYsA==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-21.1.3.tgz", + "integrity": "sha512-nKxoQ89W2B1WdonNQ9kgRnvLNS6DAxDrRHBslsKTlV+kbdv7h59M9PjT4ZZ2sp1M/M8LiofnUfa/s2jd/xYj5w==", "license": "MIT", "dependencies": { "@babel/core": "7.28.5", @@ -2088,7 +1976,7 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/compiler": "21.1.2", + "@angular/compiler": "21.1.3", "typescript": ">=5.9 <6.0" }, "peerDependenciesMeta": { @@ -2171,9 +2059,9 @@ } }, "node_modules/@angular/core": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-21.1.2.tgz", - "integrity": "sha512-W2xxRb7noOD1DdMwKaZ3chFhii6nutaNIXt7dfWsMWoujg3Kqpdn1ukeyW5aHKQZvCJTIGr4f3whZ8Sj/17aCA==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-21.1.3.tgz", + "integrity": "sha512-TbhQxRC7Lb/3WBdm1n8KRsktmVEuGBBp0WRF5mq0Ze4s1YewIM6cULrSw9ACtcL5jdcq7c74ms+uKQsaP/gdcQ==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -2182,7 +2070,7 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/compiler": "21.1.2", + "@angular/compiler": "21.1.3", "rxjs": "^6.5.3 || ^7.4.0", "zone.js": "~0.15.0 || ~0.16.0" }, @@ -2196,9 +2084,9 @@ } }, "node_modules/@angular/elements": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@angular/elements/-/elements-21.1.2.tgz", - "integrity": "sha512-x8RpuQHYVGKF5VuhRR/7ndeGS1vFt8r8PtkPaR1MobCxQkTr0MGfyXOB8wTrA/pvgXf2Yqv3apFyfNILnm9YrQ==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@angular/elements/-/elements-21.1.3.tgz", + "integrity": "sha512-nuXv4Nzmfl/m7d8shDCpSt7v1uKqWBj9QMNLpR8pzqa6I9cVyvT5fXVA0OF74b+3n8tzVActxcqtH+I8avt08A==", "dev": true, "license": "MIT", "dependencies": { @@ -2208,14 +2096,14 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/core": "21.1.2", + "@angular/core": "21.1.3", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/forms": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-21.1.2.tgz", - "integrity": "sha512-dY56FuoBEvfLMtatKGg1vMFSwgySzWJm3URaBj3GpFTjhnuByHoxH4Lb5u50lrrVc9VQt/BZmq3mDZXjlx6Qgw==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-21.1.3.tgz", + "integrity": "sha512-YW/YdjM9suZUeJam9agHFXIEE3qQIhGYXMjnnX7xGjOe+CuR2R0qsWn1AR0yrKrNmFspb0lKgM7kTTJyzt8gZg==", "license": "MIT", "dependencies": { "@standard-schema/spec": "^1.0.0", @@ -2225,16 +2113,16 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "21.1.2", - "@angular/core": "21.1.2", - "@angular/platform-browser": "21.1.2", + "@angular/common": "21.1.3", + "@angular/core": "21.1.3", + "@angular/platform-browser": "21.1.3", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/localize": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-21.1.2.tgz", - "integrity": "sha512-y4vV8Lc39DC4qT3vI9RqpUYQ6Iu2WC/6pxt3o3YYJRk6eUyLSGpcp/jbfPjqDlZQNfKLdTDHEC7HeQnwD69/Mw==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-21.1.3.tgz", + "integrity": "sha512-o/zFe8t578OP1j9+7iYibkwcE19zVC8xRFl/+f8bLSwqxwqasMNu1/zCa1B2nq8Gd2xwbvX/7kDhAn25yM4FJg==", "license": "MIT", "dependencies": { "@babel/core": "7.28.5", @@ -2251,8 +2139,8 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/compiler": "21.1.2", - "@angular/compiler-cli": "21.1.2" + "@angular/compiler": "21.1.3", + "@angular/compiler-cli": "21.1.3" } }, "node_modules/@angular/localize/node_modules/@babel/core": { @@ -2301,9 +2189,9 @@ } }, "node_modules/@angular/platform-browser": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-21.1.2.tgz", - "integrity": "sha512-8vnCbQhxugQ3meGQ0YlSp0uNBYUjpFXYjFnGQ0Xq5jvzc9WX7KSix6+AydEjZtQfc1bWRetBTOlhQpqnwYp53g==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-21.1.3.tgz", + "integrity": "sha512-W+ZMXAioaP7CsACafBCHsIxiiKrRTPOlQ+hcC7XNBwy+bn5mjGONoCgLreQs76M8HNWLtr/OAUAr6h26OguOuA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -2312,9 +2200,9 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/animations": "21.1.2", - "@angular/common": "21.1.2", - "@angular/core": "21.1.2" + "@angular/animations": "21.1.3", + "@angular/common": "21.1.3", + "@angular/core": "21.1.3" }, "peerDependenciesMeta": { "@angular/animations": { @@ -2323,9 +2211,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-21.1.2.tgz", - "integrity": "sha512-3+6Le0CuEpJFdJniD2ol6i9i7gmlJv+Qck5lxY+eHq2Ylj0VJ9sBIFaMBCmvdb6lz7QYnKoZr+Lhv1MX6hVXyg==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-21.1.3.tgz", + "integrity": "sha512-wWEjrNtJfxzZmbDWdJSyRau7NWpQ6IFM9QAyn7xH3cQDGCj+Gy9lTU5sUIYQc+7sx3nKWztolc7h/M5meYCTAg==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -2334,16 +2222,16 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "21.1.2", - "@angular/compiler": "21.1.2", - "@angular/core": "21.1.2", - "@angular/platform-browser": "21.1.2" + "@angular/common": "21.1.3", + "@angular/compiler": "21.1.3", + "@angular/core": "21.1.3", + "@angular/platform-browser": "21.1.3" } }, "node_modules/@angular/platform-server": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-21.1.2.tgz", - "integrity": "sha512-H3xr7qsk4BNQM91gUCIiLwdwR0zxE3H/6UdC2UHtPa8vJ467KJ1HqGJ9oyO3VSXig0mSNLly5j7OWFKJXwpULA==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-21.1.3.tgz", + "integrity": "sha512-o6S9t52d00PKC9nAjN3DXkLiY41iQvpLLl2DnerNU23njA7lF3mwH2+IJxVPB0EkR/H9rAJr+7bo/S9LUoU7xw==", "license": "MIT", "dependencies": { "tslib": "^2.3.0", @@ -2353,17 +2241,17 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "21.1.2", - "@angular/compiler": "21.1.2", - "@angular/core": "21.1.2", - "@angular/platform-browser": "21.1.2", + "@angular/common": "21.1.3", + "@angular/compiler": "21.1.3", + "@angular/core": "21.1.3", + "@angular/platform-browser": "21.1.3", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/router": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-21.1.2.tgz", - "integrity": "sha512-APl4tkTJIrpejlULLrGtIdLuJkNctPy0pnVijrJLR52nEV0xX165ulXk3XrL9QnMk0iy950aTYtoTal4aMw16Q==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-21.1.3.tgz", + "integrity": "sha512-uAw4LAMHXAPCe4SywhlUEWjMYVbbLHwTxLyduSp1b+9aVwep0juy5O/Xttlxd/oigVe0NMnOyJG9y1Br/ubnrg==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -2372,9 +2260,9 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "21.1.2", - "@angular/core": "21.1.2", - "@angular/platform-browser": "21.1.2", + "@angular/common": "21.1.3", + "@angular/core": "21.1.3", + "@angular/platform-browser": "21.1.3", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -5643,25 +5531,66 @@ "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "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.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "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.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", + "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", "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", + "js-yaml": "^4.1.1", "minimatch": "^3.1.2", "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" @@ -5692,13 +5621,40 @@ "license": "MIT" }, "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", + "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==", "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" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@exodus/bytes": { @@ -5894,20 +5850,28 @@ "hono": "^4" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", + "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.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" }, "engines": { - "node": ">=10.10.0" + "node": ">=18.18.0" } }, "node_modules/@humanwhocodes/module-importer": { @@ -5922,13 +5886,19 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", "dev": true, - "license": "BSD-3-Clause" + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, "node_modules/@iharbeck/ngx-virtual-scroller": { "version": "19.0.1", @@ -6452,9 +6422,9 @@ } }, "node_modules/@jsonjoy.com/buffers": { - "version": "17.65.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-17.65.0.tgz", - "integrity": "sha512-eBrIXd0/Ld3p9lpDDlMaMn6IEfWqtHMD+z61u0JrIiPzsV1r7m6xDZFRxJyvIFTEO+SWdYF9EiQbXZGd8BzPfA==", + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-17.67.0.tgz", + "integrity": "sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==", "dev": true, "license": "Apache-2.0", "engines": { @@ -6660,9 +6630,9 @@ } }, "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/base64": { - "version": "17.65.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-17.65.0.tgz", - "integrity": "sha512-Xrh7Fm/M0QAYpekSgmskdZYnFdSGnsxJ/tHaolA4bNwWdG9i65S8m83Meh7FOxyJyQAdo4d4J97NOomBLEfkDQ==", + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-17.67.0.tgz", + "integrity": "sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==", "dev": true, "license": "Apache-2.0", "engines": { @@ -6677,9 +6647,9 @@ } }, "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/codegen": { - "version": "17.65.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-17.65.0.tgz", - "integrity": "sha512-7MXcRYe7n3BG+fo3jicvjB0+6ypl2Y/bQp79Sp7KeSiiCgLqw4Oled6chVv07/xLVTdo3qa1CD0VCCnPaw+RGA==", + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-17.67.0.tgz", + "integrity": "sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==", "dev": true, "license": "Apache-2.0", "engines": { @@ -6694,17 +6664,17 @@ } }, "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pack": { - "version": "17.65.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-17.65.0.tgz", - "integrity": "sha512-e0SG/6qUCnVhHa0rjDJHgnXnbsacooHVqQHxspjvlYQSkHm+66wkHw6Gql+3u/WxI/b1VsOdUi0M+fOtkgKGdQ==", + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-17.67.0.tgz", + "integrity": "sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/base64": "17.65.0", - "@jsonjoy.com/buffers": "17.65.0", - "@jsonjoy.com/codegen": "17.65.0", - "@jsonjoy.com/json-pointer": "17.65.0", - "@jsonjoy.com/util": "17.65.0", + "@jsonjoy.com/base64": "17.67.0", + "@jsonjoy.com/buffers": "17.67.0", + "@jsonjoy.com/codegen": "17.67.0", + "@jsonjoy.com/json-pointer": "17.67.0", + "@jsonjoy.com/util": "17.67.0", "hyperdyperid": "^1.2.0", "thingies": "^2.5.0", "tree-dump": "^1.1.0" @@ -6721,13 +6691,13 @@ } }, "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pointer": { - "version": "17.65.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-17.65.0.tgz", - "integrity": "sha512-uhTe+XhlIZpWOxgPcnO+iSCDgKKBpwkDVTyYiXX9VayGV8HSFVJM67M6pUE71zdnXF1W0Da21AvnhlmdwYPpow==", + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-17.67.0.tgz", + "integrity": "sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/util": "17.65.0" + "@jsonjoy.com/util": "17.67.0" }, "engines": { "node": ">=10.0" @@ -6741,14 +6711,14 @@ } }, "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/util": { - "version": "17.65.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-17.65.0.tgz", - "integrity": "sha512-cWiEHZccQORf96q2y6zU3wDeIVPeidmGqd9cNKJRYoVHTV0S1eHPy5JTbHpMnGfDvtvujQwQozOqgO9ABu6h0w==", + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-17.67.0.tgz", + "integrity": "sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/buffers": "17.65.0", - "@jsonjoy.com/codegen": "17.65.0" + "@jsonjoy.com/buffers": "17.67.0", + "@jsonjoy.com/codegen": "17.67.0" }, "engines": { "node": ">=10.0" @@ -7048,13 +7018,13 @@ "peer": true }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.25.2", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.25.2.tgz", - "integrity": "sha512-LZFeo4F9M5qOhC/Uc1aQSrBHxMrvxett+9KLHt7OhcExtoiRN9DKgbZffMP/nxjutWDQpfMDfP3nkHI4X9ijww==", + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.26.0.tgz", + "integrity": "sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg==", "dev": true, "license": "MIT", "dependencies": { - "@hono/node-server": "^1.19.7", + "@hono/node-server": "^1.19.9", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "content-type": "^1.0.5", @@ -7062,14 +7032,15 @@ "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", - "express": "^5.0.1", - "express-rate-limit": "^7.5.0", - "jose": "^6.1.1", + "express": "^5.2.1", + "express-rate-limit": "^8.2.1", + "hono": "^4.11.4", + "jose": "^6.1.3", "json-schema-typed": "^8.0.2", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.25 || ^4.0", - "zod-to-json-schema": "^3.25.0" + "zod-to-json-schema": "^3.25.1" }, "engines": { "node": ">=18" @@ -7621,9 +7592,9 @@ } }, "node_modules/@ngtools/webpack": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-21.1.2.tgz", - "integrity": "sha512-ZNMMD35urDKqYtx1drxPyGAvUPMOoiKjvrH8owpN+mzIO1nYpssCgmAseo1hePAduSvv8tAsY1NLtJfMSNzubw==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-21.1.3.tgz", + "integrity": "sha512-Un4dHHELxuFwlSfjsHlmw73col+t0NID2hhx1JPRmKXBXAd4nDRJKX2LPouQLL0FFF+gOtA4mxabf5NruDTQNg==", "dev": true, "license": "MIT", "engines": { @@ -9685,14 +9656,14 @@ "license": "MIT" }, "node_modules/@schematics/angular": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-21.1.2.tgz", - "integrity": "sha512-kxwxhCIUrj7DfzEtDSs/pi/w+aII/WQLpPfLgoQCWE8/95v60WnTfd1afmsXsFoxikKPxkwoPWtU2YbhSoX9MQ==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-21.1.3.tgz", + "integrity": "sha512-obJvWBhzRdsYL2msM4+8bQD21vFl3VxaVsuiq6iIfYsxhU5i2Iar2wM9NaRaIIqAYhZ8ehQQ/moB9BEbWvDCTw==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.1.2", - "@angular-devkit/schematics": "21.1.2", + "@angular-devkit/core": "21.1.3", + "@angular-devkit/schematics": "21.1.3", "jsonc-parser": "3.3.1" }, "engines": { @@ -9702,9 +9673,9 @@ } }, "node_modules/@schematics/angular/node_modules/@angular-devkit/core": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.1.2.tgz", - "integrity": "sha512-0wl5nJlFWsbwfUB2CQeTSmnVQ8AtqqwM3bYPYtXSc+vA8+hzsOAjjDuRnBxZS9zTnqtXKXB1e7M3Iy7KUwh7LA==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.1.3.tgz", + "integrity": "sha512-huEXd1tWQHwwN+0VGRT+vSVplV0KNrGFUGJzkIW6iJE1SQElxn6etMai+pSd5DJcePkx6+SuscVsxbfwf70hnA==", "dev": true, "license": "MIT", "dependencies": { @@ -9957,9 +9928,9 @@ "license": "MIT" }, "node_modules/@storybook/addon-links": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-10.2.5.tgz", - "integrity": "sha512-LZxXUOAx2+9fWyVlfimEvyw5x4GRwaR2Q0iqj4wf1E12PieUVWENKESCJeOtVDW/on4pEMKjVzcKpGJ88mczWA==", + "version": "10.2.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-10.2.7.tgz", + "integrity": "sha512-j2LUFUraQg3/ovDQU8BRhdwE3bKqC1frmn0E8kg9STM63wMgXMZ+6rz+HhGU64f2jvb2AQCgAgHs6FB1mufzhg==", "dev": true, "license": "MIT", "dependencies": { @@ -9971,7 +9942,7 @@ }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "storybook": "^10.2.5" + "storybook": "^10.2.7" }, "peerDependenciesMeta": { "react": { @@ -9980,13 +9951,13 @@ } }, "node_modules/@storybook/angular": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/@storybook/angular/-/angular-10.2.5.tgz", - "integrity": "sha512-ynhXVdUlvg/P3U56kYbqmhkE4/X0bfxq+EIx1xiH4On1jmI6H5pTq+Lj2xP+yvlkQeISfOkIM1o/WsRlLjmqjg==", + "version": "10.2.7", + "resolved": "https://registry.npmjs.org/@storybook/angular/-/angular-10.2.7.tgz", + "integrity": "sha512-iNxYv8SnNdSQQyo8rzkU+E+CKHXa7VEktfvRnRZ3VoOydPNtWJRJfSnNJ13UvXFXy3ag8dS34/qqCIyowusS3w==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/builder-webpack5": "10.2.5", + "@storybook/builder-webpack5": "10.2.7", "@storybook/global": "^5.0.0", "telejson": "8.0.0", "ts-dedent": "^2.0.0", @@ -10010,7 +9981,7 @@ "@angular/platform-browser": ">=18.0.0 < 22.0.0", "@angular/platform-browser-dynamic": ">=18.0.0 < 22.0.0", "rxjs": "^6.5.3 || ^7.4.0", - "storybook": "^10.2.5", + "storybook": "^10.2.7", "typescript": "^4.9.0 || ^5.0.0", "zone.js": ">=0.14.0" }, @@ -10026,33 +9997,14 @@ } } }, - "node_modules/@storybook/builder-vite": { - "version": "10.2.6", - "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-10.2.6.tgz", - "integrity": "sha512-O/kvmUrfEn2VpzVOGJV3VvEQ9N4AOI8csdvsUsfjs6PSNwAiwvsx8+qTYYcheMilrO9+1Da9lFmd7oucSPto3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/csf-plugin": "10.2.6", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^10.2.6", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0" - } - }, "node_modules/@storybook/builder-webpack5": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-10.2.5.tgz", - "integrity": "sha512-l8FPskRonpqoEbmqZtr3WHRV2FAVAB78QrU43+KesYy5qNaJfRV7U0ytotj2rDnurByFPx8HBmJXyyS+ooDN0w==", + "version": "10.2.7", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-10.2.7.tgz", + "integrity": "sha512-Au+plUtw5Bh0OOIlBfUkgepflZmDi7KGZOrJhRLZchdHbl0YQfBNEzEt85fc6yCp70OloJoPoWeuDWWyZUk40A==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core-webpack": "10.2.5", + "@storybook/core-webpack": "10.2.7", "case-sensitive-paths-webpack-plugin": "^2.4.0", "cjs-module-lexer": "^1.2.3", "css-loader": "^7.1.2", @@ -10073,7 +10025,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^10.2.5" + "storybook": "^10.2.7" }, "peerDependenciesMeta": { "typescript": { @@ -10111,9 +10063,9 @@ } }, "node_modules/@storybook/core-webpack": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-10.2.5.tgz", - "integrity": "sha512-7zbcOTQ8a98tcSu6reMJ8YODmr965FK4+eqTTT1f0OcmVEOKy4DOkwVpZcprWaPEjI4CRUTx/oy9BRzOyZ2zhw==", + "version": "10.2.7", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-10.2.7.tgz", + "integrity": "sha512-cBhflZN3qcyLOEox7hHX6SgJV9Snq1e91kpkDyzrjZgByEBa+fHm0mbhSo4vEORBiy4tDRgr356H53aqNe/boA==", "dev": true, "license": "MIT", "dependencies": { @@ -10124,42 +10076,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^10.2.5" - } - }, - "node_modules/@storybook/csf-plugin": { - "version": "10.2.6", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-10.2.6.tgz", - "integrity": "sha512-1ZeRfmMTjUweXRaNVNg49m0r+l2VQmfeicTCRwjXrq70eBeWG8Dx2w0simVM9nX0lRGiGL3S36lhrrswuEF/6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "unplugin": "^2.3.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "esbuild": "*", - "rollup": "*", - "storybook": "^10.2.6", - "vite": "*", - "webpack": "*" - }, - "peerDependenciesMeta": { - "esbuild": { - "optional": true - }, - "rollup": { - "optional": true - }, - "vite": { - "optional": true - }, - "webpack": { - "optional": true - } + "storybook": "^10.2.7" } }, "node_modules/@storybook/global": { @@ -10668,9 +10585,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "25.2.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.0.tgz", - "integrity": "sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", + "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", "devOptional": true, "license": "MIT", "dependencies": { @@ -10702,9 +10619,9 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "19.2.11", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.11.tgz", - "integrity": "sha512-tORuanb01iEzWvMGVGv2ZDhYZVeRMrw453DCSAIn/5yvcSVnMoUMTyf33nQJLahYEnv9xqrTNbgz4qY5EfSh0g==", + "version": "19.2.13", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.13.tgz", + "integrity": "sha512-KkiJeU6VbYbUOp5ITMIc7kBfqlYkKA5KhEHVrGMmUUMt7NeaZg65ojdPk+FtNrBAOXNVM5QM72jnADjM+XVRAQ==", "devOptional": true, "license": "MIT", "dependencies": { @@ -10799,388 +10716,93 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", - "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.54.0.tgz", + "integrity": "sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/type-utils": "7.18.0", - "@typescript-eslint/utils": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.54.0", + "@typescript-eslint/type-utils": "8.54.0", + "@typescript-eslint/utils": "8.54.0", + "@typescript-eslint/visitor-keys": "8.54.0", + "ignore": "^7.0.5", "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.4.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@typescript-eslint/parser": "^8.54.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", - "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.54.0.tgz", + "integrity": "sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0" + "@typescript-eslint/scope-manager": "8.54.0", + "@typescript-eslint/types": "8.54.0", + "@typescript-eslint/typescript-estree": "8.54.0", + "@typescript-eslint/visitor-keys": "8.54.0", + "debug": "^4.4.3" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", - "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", - "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", - "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/typescript-estree": "7.18.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", - "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "7.18.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ts-api-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", - "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", - "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/typescript-estree": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", - "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", - "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "node_modules/@typescript-eslint/parser/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", - "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", - "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" + "ms": "^2.1.3" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=6.0" }, "peerDependenciesMeta": { - "typescript": { + "supports-color": { "optional": true } } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", - "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "7.18.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/ts-api-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", - "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "node_modules/@typescript-eslint/parser/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } + "license": "MIT" }, "node_modules/@typescript-eslint/project-service": { "version": "8.54.0", @@ -11204,20 +10826,6 @@ "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/project-service/node_modules/@typescript-eslint/types": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.54.0.tgz", - "integrity": "sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/project-service/node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", @@ -11261,20 +10869,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/types": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.54.0.tgz", - "integrity": "sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/tsconfig-utils": { "version": "8.54.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.54.0.tgz", @@ -11293,212 +10887,61 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", - "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "7.18.0", - "@typescript-eslint/utils": "7.18.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", - "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", - "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", - "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", - "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/typescript-estree": "7.18.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", - "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "7.18.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.54.0.tgz", + "integrity": "sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==", "dev": true, "license": "MIT", "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" + "@typescript-eslint/types": "8.54.0", + "@typescript-eslint/typescript-estree": "8.54.0", + "@typescript-eslint/utils": "8.54.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.4.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/@typescript-eslint/type-utils/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, "engines": { - "node": ">=8" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@typescript-eslint/type-utils/node_modules/ts-api-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", - "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "node_modules/@typescript-eslint/type-utils/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } + "license": "MIT" }, "node_modules/@typescript-eslint/types": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.33.1.tgz", - "integrity": "sha512-xid1WfizGhy/TKMTwhtVOgalHwPtV8T32MS9MaH50Cwvz6x6YqRIPdD2WvW0XaqOzTV9p5xdLY0h/ZusU5Lokg==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.54.0.tgz", + "integrity": "sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -11535,20 +10978,6 @@ "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/types": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.54.0.tgz", - "integrity": "sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", @@ -11637,20 +11066,6 @@ "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.54.0.tgz", - "integrity": "sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/visitor-keys": { "version": "8.54.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.54.0.tgz", @@ -11669,20 +11084,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/@typescript-eslint/types": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.54.0.tgz", - "integrity": "sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", @@ -11696,13 +11097,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true, - "license": "ISC" - }, "node_modules/@videojs/http-streaming": { "version": "3.17.2", "resolved": "https://registry.npmjs.org/@videojs/http-streaming/-/http-streaming-3.17.2.tgz", @@ -14868,19 +14262,6 @@ "node": ">=6" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/docviewhelper": { "version": "0.0.1", "license": "MIT" @@ -15136,14 +14517,14 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.18.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", - "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz", + "integrity": "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==", "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "tapable": "^2.3.0" }, "engines": { "node": ">=10.13.0" @@ -15484,60 +14865,63 @@ } }, "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", + "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "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.1", - "@humanwhocodes/config-array": "^0.13.0", + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.39.2", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", "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.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.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-airbnb-typescript": { @@ -15930,9 +15314,9 @@ "license": "MIT" }, "node_modules/eslint-plugin-storybook": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-10.2.5.tgz", - "integrity": "sha512-osUY7B0dNDWrdV5pCp1m7yqG6jYmkLcmuKHcE6NyhvTtgoFxW2h2fFDtNQDEEDc1EOkMAbp/K3UotslevAoNjg==", + "version": "10.2.7", + "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-10.2.7.tgz", + "integrity": "sha512-111gI3lUuan/zfDZ79isC4YZ75A9Ro7knqa2lNHv9PQRBWGKe6gvH2gDCYMioqT8aZo7UTzXfsyW7HHlEWxpQA==", "dev": true, "license": "MIT", "dependencies": { @@ -15940,7 +15324,7 @@ }, "peerDependencies": { "eslint": ">=8", - "storybook": "^10.2.5" + "storybook": "^10.2.7" } }, "node_modules/eslint-scope": { @@ -15994,9 +15378,9 @@ } }, "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==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -16004,7 +15388,20 @@ "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-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -16031,34 +15428,37 @@ "node": ">=10.13.0" } }, - "node_modules/eslint/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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", "dev": true, "license": "MIT" }, "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.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.9.0", + "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "eslint-visitor-keys": "^4.2.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/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -16264,11 +15664,14 @@ } }, "node_modules/express-rate-limit": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.1.tgz", - "integrity": "sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.2.1.tgz", + "integrity": "sha512-PCZEIEIxqwhzw4KF0n7QF4QqruVTcF73O5kFKUnGOyjbCCgizBBiFaYpd/fnBLUMPw/BWw9OsiN7GgrNYr7j6g==", "dev": true, "license": "MIT", + "dependencies": { + "ip-address": "10.0.1" + }, "engines": { "node": ">= 16" }, @@ -16279,6 +15682,16 @@ "express": ">= 4.11" } }, + "node_modules/express-rate-limit/node_modules/ip-address": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", + "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, "node_modules/express/node_modules/accepts": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", @@ -16636,16 +16049,16 @@ } }, "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "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/fill-range": { @@ -16717,18 +16130,17 @@ } }, "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "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": { "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "keyv": "^4.5.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16" } }, "node_modules/flatted": { @@ -17031,7 +16443,9 @@ "node_modules/fs.realpath": { "version": "1.0.0", "dev": true, - "license": "ISC" + "license": "ISC", + "optional": true, + "peer": true }, "node_modules/fsevents": { "version": "2.3.3", @@ -17192,6 +16606,8 @@ "version": "7.2.0", "dev": true, "license": "ISC", + "optional": true, + "peer": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -17280,16 +16696,13 @@ "license": "ISC" }, "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -17374,13 +16787,6 @@ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, "node_modules/graphiql": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/graphiql/-/graphiql-4.1.1.tgz", @@ -17399,9 +16805,9 @@ } }, "node_modules/graphql": { - "version": "16.11.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.11.0.tgz", - "integrity": "sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==", + "version": "16.12.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.12.0.tgz", + "integrity": "sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==", "license": "MIT", "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" @@ -17425,9 +16831,9 @@ } }, "node_modules/graphql-ws": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-6.0.5.tgz", - "integrity": "sha512-HzYw057ch0hx2gZjkbgk1pur4kAtgljlWRP+Gccudqm3BRrTpExjWCQ9OHdIsq47Y6lHL++1lTvuQHhgRRcevw==", + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-6.0.7.tgz", + "integrity": "sha512-yoLRW+KRlDmnnROdAu7sX77VNLC0bsFoZyGQJLy1cF+X/SkLg/fWkRGrEEYQK8o2cafJ2wmEaMqMEZB3U3DYDg==", "license": "MIT", "engines": { "node": ">=20" @@ -17436,7 +16842,6 @@ "@fastify/websocket": "^10 || ^11", "crossws": "~0.3", "graphql": "^15.10.1 || ^16", - "uWebSockets.js": "^20", "ws": "^8" }, "peerDependenciesMeta": { @@ -17446,9 +16851,6 @@ "crossws": { "optional": true }, - "uWebSockets.js": { - "optional": true - }, "ws": { "optional": true } @@ -17590,12 +16992,11 @@ } }, "node_modules/hono": { - "version": "4.11.7", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.11.7.tgz", - "integrity": "sha512-l7qMiNee7t82bH3SeyUCt9UF15EVmaBvsppY2zQtrbIhl/yzBTny+YUxsVjSjQ6gaqaeVtZmGocom8TzBlA4Yw==", + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.11.8.tgz", + "integrity": "sha512-eVkB/CYCCei7K2WElZW9yYQFWssG0DhaDhVvr7wy5jJ22K+ck8fWW0EsLpB0sITUTvPnc97+rrbQqIr5iqiy9Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=16.9.0" } @@ -18124,6 +17525,8 @@ "version": "1.0.6", "dev": true, "license": "ISC", + "optional": true, + "peer": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -18950,16 +18353,6 @@ } } }, - "node_modules/jsdom/node_modules/undici": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.20.0.tgz", - "integrity": "sha512-MJZrkjyd7DeC+uPZh+5/YaMDxFiiEEaDgbUSVMXayofAkDWF1088CDo+2RPg7B1BuS1qf1vgNE7xqwPxE0DuSQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.18.1" - } - }, "node_modules/jsdom/node_modules/whatwg-mimetype": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-5.0.0.tgz", @@ -20361,23 +19754,6 @@ "node": ">= 18" } }, - "node_modules/mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", - "dev": true, - "license": "MIT", - "peer": true, - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/morgan": { "version": "1.10.0", "dev": true, @@ -21689,6 +21065,8 @@ "version": "1.0.1", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -22797,6 +22175,8 @@ "version": "3.0.2", "dev": true, "license": "ISC", + "optional": true, + "peer": true, "dependencies": { "glob": "^7.1.3" }, @@ -24067,9 +23447,9 @@ } }, "node_modules/storybook": { - "version": "10.2.6", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-10.2.6.tgz", - "integrity": "sha512-5UY1f0f4TCAmJ19DCvYmWbvZaYwszIOY+PxTzu0S/WJpqm4pzO0bjn6Wfx113Jnh/tffUZ3MVuQgjJq20/ttNg==", + "version": "10.2.7", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-10.2.7.tgz", + "integrity": "sha512-LFKSuZyF6EW2/Kkl5d7CvqgwhXXfuWv+aLBuoc616boLKJ3mxXuea+GxIgfk02NEyTKctJ0QsnSh5pAomf6Qkg==", "dev": true, "license": "MIT", "dependencies": { @@ -24984,13 +24364,6 @@ } } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, "node_modules/textarea-caret": { "version": "3.1.0", "resolved": "git+ssh://git@github.com/component/textarea-caret-position.git#b5845a4c39cf094b56925183c086f92c8f8fec68" @@ -25431,19 +24804,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/type-is": { "version": "1.6.18", "dev": true, @@ -25633,9 +24993,9 @@ } }, "node_modules/undici": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.18.2.tgz", - "integrity": "sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.20.0.tgz", + "integrity": "sha512-MJZrkjyd7DeC+uPZh+5/YaMDxFiiEEaDgbUSVMXayofAkDWF1088CDo+2RPg7B1BuS1qf1vgNE7xqwPxE0DuSQ==", "dev": true, "license": "MIT", "engines": { @@ -25754,35 +25114,6 @@ "node": ">= 0.8" } }, - "node_modules/unplugin": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.11.tgz", - "integrity": "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/remapping": "^2.3.5", - "acorn": "^8.15.0", - "picomatch": "^4.0.3", - "webpack-virtual-modules": "^0.6.2" - }, - "engines": { - "node": ">=18.12.0" - } - }, - "node_modules/unplugin/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/update-browserslist-db": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", @@ -25928,9 +25259,9 @@ } }, "node_modules/video.js": { - "version": "8.23.4", - "resolved": "https://registry.npmjs.org/video.js/-/video.js-8.23.4.tgz", - "integrity": "sha512-qI0VTlYmKzEqRsz1Nppdfcaww4RSxZAq77z2oNSl3cNg2h6do5C8Ffl0KqWQ1OpD8desWXsCrde7tKJ9gGTEyQ==", + "version": "8.23.6", + "resolved": "https://registry.npmjs.org/video.js/-/video.js-8.23.6.tgz", + "integrity": "sha512-qjS3HTDo7iapedJuso62scA303i+6CaCUnwyRr8GYd/BYAp7XGb7InUMw2Eu6zrN6IWooPOb78NzyMyjRbIN+Q==", "license": "Apache-2.0", "dependencies": { "@babel/runtime": "^7.12.5", @@ -26391,9 +25722,9 @@ } }, "node_modules/webpack": { - "version": "5.104.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.104.1.tgz", - "integrity": "sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==", + "version": "5.105.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.0.tgz", + "integrity": "sha512-gX/dMkRQc7QOMzgTe6KsYFM7DxeIONQSui1s0n/0xht36HvrgbxtM1xBlgx596NbpHuQU8P7QpKwrZYwUX48nw==", "dev": true, "license": "MIT", "dependencies": { @@ -26407,7 +25738,7 @@ "acorn-import-phases": "^1.0.3", "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.4", + "enhanced-resolve": "^5.19.0", "es-module-lexer": "^2.0.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -26420,7 +25751,7 @@ "schema-utils": "^4.3.3", "tapable": "^2.3.0", "terser-webpack-plugin": "^5.3.16", - "watchpack": "^2.4.4", + "watchpack": "^2.5.1", "webpack-sources": "^3.3.3" }, "bin": { @@ -27082,6 +26413,20 @@ "dev": true, "license": "MIT" }, + "node_modules/webpack/node_modules/watchpack": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", + "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/websocket-driver": { "version": "0.7.4", "dev": true, diff --git a/frontend/package.json b/frontend/package.json index 75cb046d9..1359167b5 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -16,17 +16,16 @@ }, "private": true, "dependencies": { - "@angular/animations": "21.1.2", - "@angular/cdk": "21.1.2", - "@angular/cdk-experimental": "21.1.2", - "@angular/common": "21.1.2", - "@angular/core": "21.1.2", - "@angular/forms": "21.1.2", - "@angular/localize": "21.1.2", - "@angular/platform-browser": "21.1.2", - "@angular/platform-browser-dynamic": "21.1.2", - "@angular/platform-server": "21.1.2", - "@angular/router": "21.1.2", + "@angular/cdk": "21.1.3", + "@angular/cdk-experimental": "21.1.3", + "@angular/common": "21.1.3", + "@angular/core": "21.1.3", + "@angular/forms": "21.1.3", + "@angular/localize": "21.1.3", + "@angular/platform-browser": "21.1.3", + "@angular/platform-browser-dynamic": "21.1.3", + "@angular/platform-server": "21.1.3", + "@angular/router": "21.1.3", "@egjs/hammerjs": "2.0.17", "@floating-ui/dom": "^1.7.5", "@graphiql/toolkit": "^0.11.3", @@ -40,8 +39,8 @@ "cropperjs": "1.6.2", "date-fns": "4.1.0", "graphiql": "4.1.1", - "graphql": "16.11.0", - "graphql-ws": "^6.0.5", + "graphql": "16.12.0", + "graphql-ws": "^6.0.7", "image-focus": "1.2.1", "leaflet": "1.9.4", "leaflet-control-geocoder": "3.3.1", @@ -62,7 +61,7 @@ "tslib": "2.8.1", "tui-calendar": "^1.15.3", "typemoq": "^2.1.0", - "video.js": "8.23.4", + "video.js": "8.23.6", "vis-data": "8.0.3", "vis-network": "10.0.2", "vis-util": "6.0.0", @@ -71,44 +70,43 @@ "zone.js": "0.16.0" }, "devDependencies": { - "@analogjs/storybook-angular": "^2.2.3", - "@angular-devkit/architect": "^0.2101.2", - "@angular-devkit/build-angular": "^21.1.2", + "@angular-devkit/architect": "^0.2101.3", + "@angular-devkit/build-angular": "^21.1.3", "@angular-eslint/builder": "21.2.0", "@angular-eslint/eslint-plugin": "21.2.0", "@angular-eslint/eslint-plugin-template": "21.2.0", "@angular-eslint/schematics": "21.2.0", "@angular-eslint/template-parser": "21.2.0", - "@angular/cli": "^21.1.2", - "@angular/compiler": "^21.1.2", - "@angular/compiler-cli": "^21.1.2", - "@angular/elements": "^21.1.2", + "@angular/cli": "^21.1.3", + "@angular/compiler": "^21.1.3", + "@angular/compiler-cli": "^21.1.3", + "@angular/elements": "^21.1.3", "@compodoc/compodoc": "^1.2.1", - "@storybook/addon-links": "^10.2.5", - "@storybook/angular": "^10.2.5", + "@storybook/addon-links": "^10.2.7", + "@storybook/angular": "^10.2.7", "@storybook/testing-library": "^0.2.2", "@types/ace": "^0.0.52", "@types/codemirror": "5.60.17", "@types/core-js": "2.5.8", "@types/mersenne-twister": "1.1.7", "@types/mousetrap": "1.6.15", - "@types/node": "25.2.0", - "@types/react": "19.2.11", + "@types/node": "25.2.1", + "@types/react": "19.2.13", "@types/react-dom": "19.2.3", "@types/ws": "8.18.1", - "@typescript-eslint/eslint-plugin": "^7.18.0", - "@typescript-eslint/parser": "^7.18.0", + "@typescript-eslint/eslint-plugin": "^8.54.0", + "@typescript-eslint/parser": "^8.54.0", "copy-webpack-plugin": "^13.0.1", - "eslint": "^8.57.1", + "eslint": "^9.39.2", "eslint-config-airbnb-typescript": "18.0.0", "eslint-plugin-deprecation": "^3.0.0", "eslint-plugin-import": "2.32.0", "eslint-plugin-jsx-a11y": "6.10.2", - "eslint-plugin-storybook": "^10.2.5", + "eslint-plugin-storybook": "^10.2.7", "jsdom": "^28.0.0", "prettier": "3.8.1", "squidex-prettier-plugin-organize-attributes": "^1.0.1", - "storybook": "^10.2.5", + "storybook": "^10.2.7", "stylelint": "17.1.1", "stylelint-config-standard": "40.0.0", "stylelint-config-standard-scss": "^17.0.0", diff --git a/frontend/src/app/features/content/shared/forms/iframe-editor.component.ts b/frontend/src/app/features/content/shared/forms/iframe-editor.component.ts index ea0027645..2c28abb20 100644 --- a/frontend/src/app/features/content/shared/forms/iframe-editor.component.ts +++ b/frontend/src/app/features/content/shared/forms/iframe-editor.component.ts @@ -232,7 +232,7 @@ export class IFrameEditorComponent extends StatefulComponent implements O schemaIds = schemas; } if (this.schemaIds && this.schemaIds.length > 0) { schemaIds = this.schemaIds; - } + } this.contentsQuery = query; this.contentsCorrelationId = correlationId; diff --git a/frontend/src/app/features/settings/pages/roles/roles-page.component.ts b/frontend/src/app/features/settings/pages/roles/roles-page.component.ts index 4c96b270c..ad2f8fab7 100644 --- a/frontend/src/app/features/settings/pages/roles/roles-page.component.ts +++ b/frontend/src/app/features/settings/pages/roles/roles-page.component.ts @@ -5,8 +5,6 @@ * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ -/* eslint-disable no-return-assign */ - import { AsyncPipe } from '@angular/common'; import { Component, OnInit } from '@angular/core'; import { RouterLink, RouterLinkActive, RouterOutlet } from '@angular/router'; diff --git a/frontend/src/app/features/teams/services/team-contributors.service.ts b/frontend/src/app/features/teams/services/team-contributors.service.ts index 6f492e01b..2781998ce 100644 --- a/frontend/src/app/features/teams/services/team-contributors.service.ts +++ b/frontend/src/app/features/teams/services/team-contributors.service.ts @@ -10,9 +10,7 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import { ApiUrlConfig, AssignContributorDto, ContributorsDto, HTTP, mapVersioned, pretifyError, Resource, Versioned, VersionOrTag } from '@app/shared'; -@Injectable({ - providedIn: 'any', -}) +@Injectable() export class TeamContributorsService { constructor( private readonly http: HttpClient, diff --git a/frontend/src/app/features/teams/services/team-plans.service.ts b/frontend/src/app/features/teams/services/team-plans.service.ts index dbee97306..c7c1275eb 100644 --- a/frontend/src/app/features/teams/services/team-plans.service.ts +++ b/frontend/src/app/features/teams/services/team-plans.service.ts @@ -10,9 +10,7 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import { ApiUrlConfig, ChangePlanDto, HTTP, mapVersioned, PlanChangedDto, PlansDto, pretifyError, Versioned, VersionOrTag } from '@app/shared'; -@Injectable({ - providedIn: 'any', -}) +@Injectable() export class TeamPlansService { constructor( private readonly http: HttpClient, diff --git a/frontend/src/app/features/teams/state/team-auth.forms.ts b/frontend/src/app/features/teams/state/team-auth.forms.ts index 7f174a502..271b65923 100644 --- a/frontend/src/app/features/teams/state/team-auth.forms.ts +++ b/frontend/src/app/features/teams/state/team-auth.forms.ts @@ -5,8 +5,6 @@ * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ -/* eslint-disable no-useless-escape */ - import { UntypedFormControl, Validators } from '@angular/forms'; import { map, shareReplay } from 'rxjs/operators'; import { ExtendedFormGroup, Form, value$ } from '@app/framework'; diff --git a/frontend/src/app/features/teams/state/team-auth.state.spec.ts b/frontend/src/app/features/teams/state/team-auth.state.spec.ts index 828d27873..e2aca304f 100644 --- a/frontend/src/app/features/teams/state/team-auth.state.spec.ts +++ b/frontend/src/app/features/teams/state/team-auth.state.spec.ts @@ -12,7 +12,7 @@ import { AuthSchemeDto, AuthSchemeResponseDto, DialogService, ResourceLinkDto, T import { TeamAuthState } from '../internal'; describe('TeamAuthState', () => { - const { newVersion, team, teamsState, version, } = TestValues; + const { newVersion, team, teamsState, version } = TestValues; const scheme = new AuthSchemeDto({ domain: 'squidex.io', diff --git a/frontend/src/app/features/teams/state/team-auth.state.ts b/frontend/src/app/features/teams/state/team-auth.state.ts index f70b5b726..429d2c14f 100644 --- a/frontend/src/app/features/teams/state/team-auth.state.ts +++ b/frontend/src/app/features/teams/state/team-auth.state.ts @@ -21,9 +21,7 @@ interface Snapshot extends LoadingState { version: VersionTag; } -@Injectable({ - providedIn: 'any', -}) +@Injectable() export class TeamAuthState extends State { public scheme = this.project(x => x.scheme); diff --git a/frontend/src/app/features/teams/state/team-contributors.forms.ts b/frontend/src/app/features/teams/state/team-contributors.forms.ts index 8c1668d14..c15a19bc2 100644 --- a/frontend/src/app/features/teams/state/team-contributors.forms.ts +++ b/frontend/src/app/features/teams/state/team-contributors.forms.ts @@ -77,5 +77,4 @@ function extractEmails(value: string) { return result; } -// eslint-disable-next-line no-useless-escape const EMAIL_REGEX = /(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+\/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+\/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*/gim; diff --git a/frontend/src/app/features/teams/state/team-contributors.state.spec.ts b/frontend/src/app/features/teams/state/team-contributors.state.spec.ts index aad45d878..1a1d4777a 100644 --- a/frontend/src/app/features/teams/state/team-contributors.state.spec.ts +++ b/frontend/src/app/features/teams/state/team-contributors.state.spec.ts @@ -14,7 +14,7 @@ import { AssignContributorDto, ContributorDto, ContributorsDto, DialogService, E import { TeamContributorsService, TeamContributorsState } from '../internal'; describe('TeamContributorsState', () => { - const { team, teamsState, newVersion, version, } = TestValues; + const { team, teamsState, newVersion, version } = TestValues; const allIds: number[] = []; diff --git a/frontend/src/app/features/teams/state/team-contributors.state.ts b/frontend/src/app/features/teams/state/team-contributors.state.ts index 900fc9963..bc4b4f49e 100644 --- a/frontend/src/app/features/teams/state/team-contributors.state.ts +++ b/frontend/src/app/features/teams/state/team-contributors.state.ts @@ -25,9 +25,7 @@ interface Snapshot extends ListState { canCreate?: boolean; } -@Injectable({ - providedIn: 'any', -}) +@Injectable() export class TeamContributorsState extends State { public contributors = this.project(x => x.contributors); diff --git a/frontend/src/app/features/teams/state/team-plans.state.spec.ts b/frontend/src/app/features/teams/state/team-plans.state.spec.ts index 395b844fa..95af855f3 100644 --- a/frontend/src/app/features/teams/state/team-plans.state.spec.ts +++ b/frontend/src/app/features/teams/state/team-plans.state.spec.ts @@ -12,7 +12,7 @@ import { DialogService, PlanChangedDto, PlanDto, PlansDto, versioned } from '@ap import { TeamPlansService, TeamPlansState } from '../internal'; describe('TeamPlansState', () => { - const { creator, newVersion, team, teamsState, version, } = TestValues; + const { creator, newVersion, team, teamsState, version } = TestValues; const oldPlans = new PlansDto({ currentPlanId: 'free', diff --git a/frontend/src/app/features/teams/state/team-plans.state.ts b/frontend/src/app/features/teams/state/team-plans.state.ts index f826ab23c..63151ccfc 100644 --- a/frontend/src/app/features/teams/state/team-plans.state.ts +++ b/frontend/src/app/features/teams/state/team-plans.state.ts @@ -42,9 +42,7 @@ interface Snapshot extends LoadingState { version: VersionTag; } -@Injectable({ - providedIn: 'any', -}) +@Injectable() export class TeamPlansState extends State { public plans = this.project(x => x.plans); diff --git a/frontend/src/app/framework/angular/animations.ts b/frontend/src/app/framework/angular/animations.ts deleted file mode 100644 index b53672143..000000000 --- a/frontend/src/app/framework/angular/animations.ts +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Squidex Headless CMS - * - * @license - * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. - */ - -import { animate, AnimationTriggerMetadata, keyframes, state, style, transition, trigger } from '@angular/animations'; - -export function buildSlideRightAnimation(name = 'slideRight', timing = '150ms'): AnimationTriggerMetadata { - return trigger( - name, [ - transition(':enter', [ - style({ transform: 'translateX(-100%)' }), - animate(timing, style({ transform: 'translateX(0%)' })), - ]), - transition(':leave', [ - style({ transform: 'translateX(0%)' }), - animate(timing, style({ transform: 'translateX(-100%)' })), - ]), - state('true', - style({ transform: 'translateX(0%)' }), - ), - state('false', - style({ transform: 'translateX(-100%)' }), - ), - transition('1 => 0', animate(timing)), - transition('0 => 1', animate(timing)), - ], - ); -} - -export function buildSlideAnimation(name = 'slide', timing = '400ms'): AnimationTriggerMetadata { - return trigger( - name, [ - transition(':enter', [ - style({ transform: 'translateX(100%)' }), - animate(timing, style({ transform: 'translateX(0%)' })), - ]), - transition(':leave', [ - style({ transform: 'translateX(0%)' }), - animate(timing, style({ transform: 'translateX(-100%)' })), - ]), - state('true', - style({ transform: 'translateX(0%)' }), - ), - state('false', - style({ transform: 'translateX(-100%)' }), - ), - transition('1 => 0', animate(timing)), - transition('0 => 1', animate(timing)), - ], - ); -} - -export function buildFadeAnimation(name = 'fade', timing = '150ms'): AnimationTriggerMetadata { - return trigger( - name, [ - transition(':enter', [ - style({ opacity: 0 }), - animate(timing, style({ opacity: 1 })), - ]), - transition(':leave', [ - style({ opacity: 1 }), - animate(timing, style({ opacity: 0 })), - ]), - state('true', - style({ opacity: 1 }), - ), - state('false', - style({ opacity: 0 }), - ), - transition('1 => 0', animate(timing)), - transition('0 => 1', animate(timing)), - ], - ); -} - -export function buildBounceAnimation(name = 'bounce', timing = '150ms'): AnimationTriggerMetadata { - return trigger( - name, [ - transition('* => true', [ - animate(timing, keyframes([ - style({ transform: 'translateX(0)' }), - style({ transform: 'translateX(-10px)' }), - style({ transform: 'translateX(0)' }), - ])), - ]), - ], - ); -} - -export const bounceAnimation = buildBounceAnimation(); -export const fadeAnimation = buildFadeAnimation(); -export const slideAnimation = buildSlideAnimation(); -export const slideRightAnimation = buildSlideRightAnimation(); diff --git a/frontend/src/app/framework/angular/forms/confirm-click.directive.ts b/frontend/src/app/framework/angular/forms/confirm-click.directive.ts index 1e310804c..7bda15685 100644 --- a/frontend/src/app/framework/angular/forms/confirm-click.directive.ts +++ b/frontend/src/app/framework/angular/forms/confirm-click.directive.ts @@ -43,7 +43,6 @@ export class ConfirmClickDirective { this.confirmTitle.length > 0 && this.confirmText && this.confirmText.length > 0) { - // eslint-disable-next-line deprecation/deprecation const destinations = this.clickConfirmed.observers?.map(x => (x as Subscriber)['destination']) || []; this.beforeClick.emit(); diff --git a/frontend/src/app/framework/angular/forms/copy-global.directive.ts b/frontend/src/app/framework/angular/forms/copy-global.directive.ts index f668e4388..18402f384 100644 --- a/frontend/src/app/framework/angular/forms/copy-global.directive.ts +++ b/frontend/src/app/framework/angular/forms/copy-global.directive.ts @@ -78,13 +78,12 @@ export class CopyGlobalDirective { private copy() { try { - // eslint-disable-next-line deprecation/deprecation document.execCommand('copy'); this.dialogs.notifyInfo('i18n:common.clipboardAdded'); return true; - } catch (e) { + } catch { return false; } } diff --git a/frontend/src/app/framework/angular/forms/copy.directive.ts b/frontend/src/app/framework/angular/forms/copy.directive.ts index fc92b6d8f..8527a547d 100644 --- a/frontend/src/app/framework/angular/forms/copy.directive.ts +++ b/frontend/src/app/framework/angular/forms/copy.directive.ts @@ -63,13 +63,12 @@ export class CopyDirective { private copy() { try { - // eslint-disable-next-line deprecation/deprecation document.execCommand('copy'); this.dialogs.notifyInfo('i18n:common.clipboardAdded'); return true; - } catch (e) { + } catch { return false; } } diff --git a/frontend/src/app/framework/angular/forms/editors/code-editor.component.ts b/frontend/src/app/framework/angular/forms/editors/code-editor.component.ts index 6828108fc..1ceac0b52 100644 --- a/frontend/src/app/framework/angular/forms/editors/code-editor.component.ts +++ b/frontend/src/app/framework/angular/forms/editors/code-editor.component.ts @@ -241,7 +241,7 @@ export class CodeEditorComponent extends StatefulControlComponent<{}, any> imple if (isValid) { try { newValueOut = JSON.parse(newValueText); - } catch (e) { + } catch { newValueOut = null; newValueText = ''; } diff --git a/frontend/src/app/framework/angular/forms/editors/date-time-editor.component.ts b/frontend/src/app/framework/angular/forms/editors/date-time-editor.component.ts index 46a91b3c0..1dee0de9b 100644 --- a/frontend/src/app/framework/angular/forms/editors/date-time-editor.component.ts +++ b/frontend/src/app/framework/angular/forms/editors/date-time-editor.component.ts @@ -112,7 +112,7 @@ export class DateTimeEditorComponent extends StatefulControlComponent { expect(isFocusCalled).toBeTruthy(); expect(isSelectCalled).toBeFalsy(); - ; + }, 200); }); @@ -50,7 +50,7 @@ describe('FocusOnInitDirective', () => { expect(isFocusCalled).toBeTruthy(); expect(isSelectCalled).toBeTruthy(); - ; + }, 200); }); }); diff --git a/frontend/src/app/framework/angular/forms/templated-form-array.spec.ts b/frontend/src/app/framework/angular/forms/templated-form-array.spec.ts index d3ebd0357..488a753b9 100644 --- a/frontend/src/app/framework/angular/forms/templated-form-array.spec.ts +++ b/frontend/src/app/framework/angular/forms/templated-form-array.spec.ts @@ -38,7 +38,7 @@ describe('TemplatedFormArray', () => { type Test = [ (value: any) => void, - string + string, ]; const methods: Test[] = [ diff --git a/frontend/src/app/framework/angular/forms/templated-form-group.spec.ts b/frontend/src/app/framework/angular/forms/templated-form-group.spec.ts index 177364285..ae727c0c2 100644 --- a/frontend/src/app/framework/angular/forms/templated-form-group.spec.ts +++ b/frontend/src/app/framework/angular/forms/templated-form-group.spec.ts @@ -32,7 +32,7 @@ describe('TemplatedFormGroup', () => { type Test = [ (value: any) => void, - string + string, ]; const methods: Test[] = [ diff --git a/frontend/src/app/framework/angular/forms/validators.ts b/frontend/src/app/framework/angular/forms/validators.ts index 9c3fbf24e..65c2af2f8 100644 --- a/frontend/src/app/framework/angular/forms/validators.ts +++ b/frontend/src/app/framework/angular/forms/validators.ts @@ -66,7 +66,7 @@ export module ValidatorsEx { if (v) { try { DateTime.parseISO(v); - } catch (e) { + } catch { return { validdatetime: false }; } } diff --git a/frontend/src/app/framework/angular/http/http-extensions.ts b/frontend/src/app/framework/angular/http/http-extensions.ts index 2fc5bb66d..389f29973 100644 --- a/frontend/src/app/framework/angular/http/http-extensions.ts +++ b/frontend/src/app/framework/angular/http/http-extensions.ts @@ -5,8 +5,6 @@ * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ -/* eslint-disable no-inner-declarations */ - import { HttpClient, HttpErrorResponse, HttpEvent, HttpHeaders, HttpRequest, HttpResponse } from '@angular/common/http'; import { catchError, map, Observable, throwError } from 'rxjs'; import { ErrorDto, getActualVersion, Types, Versioned, VersionOrTag, VersionTag } from '@app/framework/internal'; @@ -130,7 +128,7 @@ export function parseError(response: HttpErrorResponse, fallback: string) { } else if (Types.isString(error)) { try { parsed = JSON.parse(error); - } catch (e) { + } catch { parsed = undefined; } } diff --git a/frontend/src/app/framework/angular/layout-container.directive.ts b/frontend/src/app/framework/angular/layout-container.directive.ts index 2639679c3..9df898456 100644 --- a/frontend/src/app/framework/angular/layout-container.directive.ts +++ b/frontend/src/app/framework/angular/layout-container.directive.ts @@ -5,8 +5,6 @@ * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ -/* eslint-disable import/no-cycle */ - import { AfterViewInit, Directive, ElementRef, HostListener, Renderer2 } from '@angular/core'; import { LayoutComponent } from './layout.component'; diff --git a/frontend/src/app/framework/angular/loader.component.ts b/frontend/src/app/framework/angular/loader.component.ts index 946d2a2c6..ce89b7c65 100644 --- a/frontend/src/app/framework/angular/loader.component.ts +++ b/frontend/src/app/framework/angular/loader.component.ts @@ -5,8 +5,6 @@ * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ -/* eslint-disable import/no-cycle */ - import { ChangeDetectionStrategy, Component, Input, numberAttribute } from '@angular/core'; @Component({ diff --git a/frontend/src/app/framework/angular/modals/modal.directive.ts b/frontend/src/app/framework/angular/modals/modal.directive.ts index af1b52e49..f1abc2232 100644 --- a/frontend/src/app/framework/angular/modals/modal.directive.ts +++ b/frontend/src/app/framework/angular/modals/modal.directive.ts @@ -183,7 +183,7 @@ export class ModalDirective implements OnDestroy { } return false; - } catch (ex) { + } catch { return false; } } diff --git a/frontend/src/app/framework/angular/modals/tooltip.directive.ts b/frontend/src/app/framework/angular/modals/tooltip.directive.ts index 0029d5758..0838a050f 100644 --- a/frontend/src/app/framework/angular/modals/tooltip.directive.ts +++ b/frontend/src/app/framework/angular/modals/tooltip.directive.ts @@ -112,9 +112,8 @@ export class TooltipDirective implements OnDestroy { private unsetAttribute() { try { this.renderer.setProperty(this.target, 'title', ''); - return true; - } catch (ex) { + } catch { return false; } } diff --git a/frontend/src/app/framework/angular/pipes/numbers.pipes.ts b/frontend/src/app/framework/angular/pipes/numbers.pipes.ts index 5ea94366d..b7d5ca201 100644 --- a/frontend/src/app/framework/angular/pipes/numbers.pipes.ts +++ b/frontend/src/app/framework/angular/pipes/numbers.pipes.ts @@ -49,6 +49,5 @@ export function calculateFileSize(value: number, factor = 1024) { u++; } - // eslint-disable-next-line prefer-template return (u ? `${value.toFixed(1)} ` : value) + ' kMGTPEZY'[u] + 'B'; } diff --git a/frontend/src/app/framework/angular/stateful.component.ts b/frontend/src/app/framework/angular/stateful.component.ts index d7d3cd5c8..29cab91ef 100644 --- a/frontend/src/app/framework/angular/stateful.component.ts +++ b/frontend/src/app/framework/angular/stateful.component.ts @@ -23,7 +23,7 @@ export abstract class StatefulComponent extends State try { this.changeDetector.detectChanges(); } catch { - return; + /* NOOP */ } }); } diff --git a/frontend/src/app/framework/services/dialog.service.ts b/frontend/src/app/framework/services/dialog.service.ts index cb330a751..a17630b3a 100644 --- a/frontend/src/app/framework/services/dialog.service.ts +++ b/frontend/src/app/framework/services/dialog.service.ts @@ -5,8 +5,6 @@ * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ -/* eslint-disable deprecation/deprecation */ - import { Injectable } from '@angular/core'; import { Observable, ReplaySubject, Subject, throwError } from 'rxjs'; import { ErrorDto } from '../utils/error'; diff --git a/frontend/src/app/framework/services/loading.service.spec.ts b/frontend/src/app/framework/services/loading.service.spec.ts index a3fb9a009..ca8644a0b 100644 --- a/frontend/src/app/framework/services/loading.service.spec.ts +++ b/frontend/src/app/framework/services/loading.service.spec.ts @@ -75,7 +75,7 @@ describe('LoadingService', () => { setTimeout(() => { expect(state).toBeFalsy(); - ; + }, 400); }); @@ -93,7 +93,7 @@ describe('LoadingService', () => { setTimeout(() => { expect(state).toBeFalsy(); - ; + }, 400); }); @@ -113,7 +113,7 @@ describe('LoadingService', () => { setTimeout(() => { expect(state).toBeTruthy(); - ; + }, 400); }); }); diff --git a/frontend/src/app/framework/services/local-store.service.ts b/frontend/src/app/framework/services/local-store.service.ts index 776a90296..dabcc668c 100644 --- a/frontend/src/app/framework/services/local-store.service.ts +++ b/frontend/src/app/framework/services/local-store.service.ts @@ -22,7 +22,7 @@ export class LocalStoreService { public get(key: string): string | null { try { return this.store.getItem(key); - } catch (e) { + } catch { return this.fallback[key]; } } @@ -52,7 +52,7 @@ export class LocalStoreService { public set(key: string, value: string) { try { this.store.setItem(key, value); - } catch (e) { + } catch { this.fallback[key] = value; } } @@ -72,7 +72,7 @@ export class LocalStoreService { public remove(key: string) { try { this.store.removeItem(key); - } catch (e) { + } catch { delete this.fallback[key]; } } diff --git a/frontend/src/app/framework/utils/interpolator.spec.ts b/frontend/src/app/framework/utils/interpolator.spec.ts index 62550bbab..b21ac91bd 100644 --- a/frontend/src/app/framework/utils/interpolator.spec.ts +++ b/frontend/src/app/framework/utils/interpolator.spec.ts @@ -5,8 +5,6 @@ * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ -/* eslint-disable no-template-curly-in-string */ - import { DateTime } from './date-time'; import { interpolate } from './interpolator'; diff --git a/frontend/src/app/framework/utils/keys.ts b/frontend/src/app/framework/utils/keys.ts index af5744168..34f7cfd2d 100644 --- a/frontend/src/app/framework/utils/keys.ts +++ b/frontend/src/app/framework/utils/keys.ts @@ -5,8 +5,6 @@ * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ -/* eslint-disable deprecation/deprecation */ - export module Keys { const ALT = 18; const CONTROL = 17; diff --git a/frontend/src/app/framework/utils/math-helper.ts b/frontend/src/app/framework/utils/math-helper.ts index 36c0a1c80..5fc6d0707 100644 --- a/frontend/src/app/framework/utils/math-helper.ts +++ b/frontend/src/app/framework/utils/math-helper.ts @@ -5,9 +5,6 @@ * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ -/* eslint-disable no-useless-escape */ -/* eslint-disable no-bitwise */ - import { Types } from './types'; interface ColorDefinition { @@ -65,7 +62,7 @@ export module MathHelper { const CRC32_TABLE: ReadonlyArray = createCrc32Table(); - // eslint-disable-next-line no-inner-declarations + function createCrc32Table() { const crc: number[] = []; diff --git a/frontend/src/app/framework/utils/slug.spec.ts b/frontend/src/app/framework/utils/slug.spec.ts index bacdb75eb..602de3a5d 100644 --- a/frontend/src/app/framework/utils/slug.spec.ts +++ b/frontend/src/app/framework/utils/slug.spec.ts @@ -12,7 +12,7 @@ describe('generateSlug', () => { const cases: Array<[ string, string, - string + string, ]> = [ ['Hello World', '-', 'hello-world'], ['Hello/World', '-', 'hello-world'], @@ -33,7 +33,7 @@ describe('generateSlug', () => { describe('Should replace multi-char diacritics', () => { const cases: Array<[ string, - string + string, ]> = [ ['ö', 'oe'], ['ü', 'ue'], @@ -50,7 +50,7 @@ describe('generateSlug', () => { describe('Should not replace multi-char diacritics', () => { const cases: Array<[ string, - string + string, ]> = [ ['ö', 'o'], ['ü', 'u'], @@ -67,7 +67,7 @@ describe('generateSlug', () => { describe('Should replace single-char diacritics', () => { const cases: Array<[ string, - string + string, ]> = [ ['Físh', 'fish'], ['źish', 'zish'], @@ -88,7 +88,7 @@ describe('generateSlug', () => { const cases: Array<[ string, string, - string + string, ]> = [ ['Hello my&World ', '_', 'hello_my&world'], ['Hello my&World-', '_', 'hello_my&world'], diff --git a/frontend/src/app/framework/utils/tag-values.spec.ts b/frontend/src/app/framework/utils/tag-values.spec.ts index cdac34eca..a0052949a 100644 --- a/frontend/src/app/framework/utils/tag-values.spec.ts +++ b/frontend/src/app/framework/utils/tag-values.spec.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/object-curly-spacing */ /* * Squidex Headless CMS * diff --git a/frontend/src/app/framework/utils/types.ts b/frontend/src/app/framework/utils/types.ts index 1f3804ae1..3cf0b3fd0 100644 --- a/frontend/src/app/framework/utils/types.ts +++ b/frontend/src/app/framework/utils/types.ts @@ -124,7 +124,7 @@ export module Types { } export function equals(lhs: any, rhs: any, lazyString = false) { - // eslint-disable-next-line no-self-compare + if (lhs === rhs || (lhs !== lhs && rhs !== rhs)) { return true; } diff --git a/frontend/src/app/shared/components/tour-hint.directive.ts b/frontend/src/app/shared/components/tour-hint.directive.ts index 05efc6908..3600d17b3 100644 --- a/frontend/src/app/shared/components/tour-hint.directive.ts +++ b/frontend/src/app/shared/components/tour-hint.directive.ts @@ -39,10 +39,6 @@ export class TourHintDirective implements OnInit { ) { } - public ngOnDestroy() { - return; - } - public ngOnInit() { if (!this.anchorId) { return; diff --git a/frontend/src/app/shared/interceptors/auth.interceptor.spec.ts b/frontend/src/app/shared/interceptors/auth.interceptor.spec.ts index 4f2b7fa52..3f1839f91 100644 --- a/frontend/src/app/shared/interceptors/auth.interceptor.spec.ts +++ b/frontend/src/app/shared/interceptors/auth.interceptor.spec.ts @@ -5,7 +5,7 @@ * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ -/* eslint-disable deprecation/deprecation */ + import { Location } from '@angular/common'; import { HttpErrorResponse, HttpEventType, HttpHeaders, HttpRequest } from '@angular/common/http'; diff --git a/frontend/src/app/shared/model/custom.ts b/frontend/src/app/shared/model/custom.ts index badbf4dab..ae1661e45 100644 --- a/frontend/src/app/shared/model/custom.ts +++ b/frontend/src/app/shared/model/custom.ts @@ -1,5 +1,5 @@ /* eslint-disable sort-imports */ -// eslint-disable-next-line @typescript-eslint/no-unused-vars + import { hasAnyLink, StringHelper, Types, ApiUrlConfig, ErrorDto } from '@app/framework'; import * as generated from './generated'; import { FieldPropertiesVisitor, META_FIELDS, tableField, tableFields } from './schemas'; diff --git a/frontend/src/app/shared/model/generated.ts b/frontend/src/app/shared/model/generated.ts index b82d06b0b..63d60791e 100644 --- a/frontend/src/app/shared/model/generated.ts +++ b/frontend/src/app/shared/model/generated.ts @@ -17702,8 +17702,8 @@ export interface FileResponse { headers?: { [name: string]: any }; } -/* eslint-disable sort-imports */ -// eslint-disable-next-line @typescript-eslint/no-unused-vars + + diff --git a/frontend/src/app/shared/services/help.service.spec.ts b/frontend/src/app/shared/services/help.service.spec.ts index 4b8d02382..fa48b019b 100644 --- a/frontend/src/app/shared/services/help.service.spec.ts +++ b/frontend/src/app/shared/services/help.service.spec.ts @@ -5,7 +5,7 @@ * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ -/* eslint-disable deprecation/deprecation */ + import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; diff --git a/frontend/src/app/shared/services/query.ts b/frontend/src/app/shared/services/query.ts index 40fc5da51..26987643b 100644 --- a/frontend/src/app/shared/services/query.ts +++ b/frontend/src/app/shared/services/query.ts @@ -149,7 +149,7 @@ export function deserializeQuery(raw?: string): Query | undefined { query = { fullText: raw }; } } - } catch (ex) { + } catch { query = undefined; } diff --git a/frontend/src/app/shared/services/schemas.spec.ts b/frontend/src/app/shared/services/schemas.spec.ts index 555499a73..43feb821a 100644 --- a/frontend/src/app/shared/services/schemas.spec.ts +++ b/frontend/src/app/shared/services/schemas.spec.ts @@ -8,7 +8,7 @@ import { createProperties, META_FIELDS, SchemaPropertiesDto } from '@app/shared/internal'; import { TestValues } from '../state/_test-helpers'; -const { createField, createSchema, } = TestValues; +const { createField, createSchema } = TestValues; describe('SchemaDto', () => { const field1 = createField({ properties: createProperties('Array'), id: 1 }); diff --git a/frontend/src/app/shared/services/stock-photo.service.spec.ts b/frontend/src/app/shared/services/stock-photo.service.spec.ts index 136a04a02..b2312e9d2 100644 --- a/frontend/src/app/shared/services/stock-photo.service.spec.ts +++ b/frontend/src/app/shared/services/stock-photo.service.spec.ts @@ -5,8 +5,6 @@ * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ -/* eslint-disable deprecation/deprecation */ - import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { inject, TestBed } from '@angular/core/testing'; diff --git a/frontend/src/app/shared/services/ui.service.spec.ts b/frontend/src/app/shared/services/ui.service.spec.ts index 9541ef51c..ca65ec5de 100644 --- a/frontend/src/app/shared/services/ui.service.spec.ts +++ b/frontend/src/app/shared/services/ui.service.spec.ts @@ -5,7 +5,7 @@ * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ -/* eslint-disable deprecation/deprecation */ + import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; diff --git a/frontend/src/app/shared/services/workflows.service.spec.ts b/frontend/src/app/shared/services/workflows.service.spec.ts index bf8117855..67a9ce3c7 100644 --- a/frontend/src/app/shared/services/workflows.service.spec.ts +++ b/frontend/src/app/shared/services/workflows.service.spec.ts @@ -5,8 +5,6 @@ * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ -/* eslint-disable object-property-newline */ - import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { inject, TestBed } from '@angular/core/testing'; diff --git a/frontend/src/app/shared/state/apps.forms.ts b/frontend/src/app/shared/state/apps.forms.ts index f4148a5d6..adb2305d8 100644 --- a/frontend/src/app/shared/state/apps.forms.ts +++ b/frontend/src/app/shared/state/apps.forms.ts @@ -5,7 +5,7 @@ * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ -/* eslint-disable no-useless-escape */ + import { UntypedFormControl, Validators } from '@angular/forms'; import { ExtendedFormGroup, Form, TemplatedFormArray, ValidatorsEx } from '@app/framework'; diff --git a/frontend/src/app/shared/state/asset-scripts.state.spec.ts b/frontend/src/app/shared/state/asset-scripts.state.spec.ts index 314f818ea..14647e272 100644 --- a/frontend/src/app/shared/state/asset-scripts.state.spec.ts +++ b/frontend/src/app/shared/state/asset-scripts.state.spec.ts @@ -15,14 +15,14 @@ import { AssetScriptsState } from './asset-scripts.state'; import 'src/spec/matchers'; describe('AssetScriptsState', () => { - const { app, appsState, newVersion, version, } = TestValues; + const { app, appsState, newVersion, version } = TestValues; const oldScripts = createAssetScripts(1); let dialogs: IMock; let appsService: IMock; let assetScriptsState: AssetScriptsState; - + beforeEach(() => { dialogs = Mock.ofType(); diff --git a/frontend/src/app/shared/state/asset-uploader.state.spec.ts b/frontend/src/app/shared/state/asset-uploader.state.spec.ts index 7dfd52baa..1a460a736 100644 --- a/frontend/src/app/shared/state/asset-uploader.state.spec.ts +++ b/frontend/src/app/shared/state/asset-uploader.state.spec.ts @@ -12,7 +12,7 @@ import { createAsset } from '../services/assets.service.spec'; import { TestValues } from './_test-helpers'; describe('AssetUploaderState', () => { - const { app, appsState, } = TestValues; + const { app, appsState } = TestValues; let assetsService: IMock; let dialogs: IMock; diff --git a/frontend/src/app/shared/state/assets.forms.ts b/frontend/src/app/shared/state/assets.forms.ts index 614480fc4..cddedfbb5 100644 --- a/frontend/src/app/shared/state/assets.forms.ts +++ b/frontend/src/app/shared/state/assets.forms.ts @@ -49,7 +49,7 @@ export class AnnotateAssetForm extends Form { - const { app, appsState, newVersion, } = TestValues; + const { app, appsState, newVersion } = TestValues; const asset1 = createAsset(1, ['tag1', 'shared']); const asset2 = createAsset(2, ['tag2', 'shared']); diff --git a/frontend/src/app/shared/state/backups.forms.ts b/frontend/src/app/shared/state/backups.forms.ts index 531b67198..037f02699 100644 --- a/frontend/src/app/shared/state/backups.forms.ts +++ b/frontend/src/app/shared/state/backups.forms.ts @@ -5,8 +5,6 @@ * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ -/* eslint-disable no-useless-escape */ - import { UntypedFormControl, Validators } from '@angular/forms'; import { ExtendedFormGroup, Form, hasNoValue$, ValidatorsEx } from '@app/framework'; import { RestoreRequestDto } from '../model'; diff --git a/frontend/src/app/shared/state/clients.forms.ts b/frontend/src/app/shared/state/clients.forms.ts index 5f83d8f98..f6dd90186 100644 --- a/frontend/src/app/shared/state/clients.forms.ts +++ b/frontend/src/app/shared/state/clients.forms.ts @@ -5,8 +5,6 @@ * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ -/* eslint-disable no-useless-escape */ - import { UntypedFormControl, Validators } from '@angular/forms'; import { ExtendedFormGroup, Form, hasNoValue$, ValidatorsEx } from '@app/framework'; import { ClientDto, CreateClientDto, UpdateClientDto } from '../model'; diff --git a/frontend/src/app/shared/state/clients.state.spec.ts b/frontend/src/app/shared/state/clients.state.spec.ts index 4b9dc3809..968fb96a6 100644 --- a/frontend/src/app/shared/state/clients.state.spec.ts +++ b/frontend/src/app/shared/state/clients.state.spec.ts @@ -12,7 +12,7 @@ import { createClients } from '../services/clients.service.spec'; import { TestValues } from './_test-helpers'; describe('ClientsState', () => { - const { app, appsState, newVersion, version, } = TestValues; + const { app, appsState, newVersion, version } = TestValues; const oldClients = createClients(1, 2); diff --git a/frontend/src/app/shared/state/contents.form-rules.ts b/frontend/src/app/shared/state/contents.form-rules.ts index fca9709fc..ca1df3d14 100644 --- a/frontend/src/app/shared/state/contents.form-rules.ts +++ b/frontend/src/app/shared/state/contents.form-rules.ts @@ -6,7 +6,7 @@ */ /* eslint-disable @typescript-eslint/no-implied-eval */ -/* eslint-disable no-useless-return */ + import { Types } from '@app/framework'; import { FieldDto, FieldRuleDto, NestedFieldDto, SchemaDto } from './../model'; diff --git a/frontend/src/app/shared/state/contents.forms-helpers.ts b/frontend/src/app/shared/state/contents.forms-helpers.ts index 758f5b328..11a7d95f6 100644 --- a/frontend/src/app/shared/state/contents.forms-helpers.ts +++ b/frontend/src/app/shared/state/contents.forms-helpers.ts @@ -5,9 +5,6 @@ * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ -/* eslint-disable @typescript-eslint/no-implied-eval */ -/* eslint-disable no-useless-return */ - import { AbstractControl, ValidatorFn } from '@angular/forms'; import { BehaviorSubject, Observable } from 'rxjs'; import { map } from 'rxjs/operators'; @@ -276,7 +273,7 @@ export abstract class AbstractContentForm { const languages = [ @@ -1026,7 +1026,7 @@ describe('ContentForm', () => { const component = createSchema({ id: 1, fields: [ - createField({ id: 11, properties: createProperties('String'), partitioning: 'invariant' }) + createField({ id: 11, properties: createProperties('String'), partitioning: 'invariant' }), ], }); @@ -1177,8 +1177,7 @@ describe('ContentForm', () => { expect(valueActual, `Expected ${key} of ${path} to be <${valueExpected}>, but found <${valueActual}>.`).toEqual(valueExpected); } } - } - else { + } else { expect(form, `Expected to find form ${path}, but form not found.`).not.toBeNull(); } } diff --git a/frontend/src/app/shared/state/contents.forms.visitors.spec.ts b/frontend/src/app/shared/state/contents.forms.visitors.spec.ts index c6ef56fec..b77d59a82 100644 --- a/frontend/src/app/shared/state/contents.forms.visitors.spec.ts +++ b/frontend/src/app/shared/state/contents.forms.visitors.spec.ts @@ -9,7 +9,7 @@ import { DateHelper } from '@app/framework'; import { createProperties, DateTime, FieldDefaultValue, FieldFormatter, FieldsValidators, HtmlValue } from '@app/shared/internal'; import { TestValues } from './_test-helpers'; -const { createField, } = TestValues; +const { createField } = TestValues; const now = DateTime.parseISO('2017-10-12T16:30:10Z'); diff --git a/frontend/src/app/shared/state/contents.forms.visitors.ts b/frontend/src/app/shared/state/contents.forms.visitors.ts index 16983e6a0..41ce9fffc 100644 --- a/frontend/src/app/shared/state/contents.forms.visitors.ts +++ b/frontend/src/app/shared/state/contents.forms.visitors.ts @@ -177,7 +177,7 @@ export class FieldFormatter implements FieldPropertiesVisitor { } else { return parsed.toStringFormat(properties.format ?? 'Ppp'); } - } catch (ex) { + } catch { return this.value; } } diff --git a/frontend/src/app/shared/state/contents.state.ts b/frontend/src/app/shared/state/contents.state.ts index 264ad36c5..b18460c97 100644 --- a/frontend/src/app/shared/state/contents.state.ts +++ b/frontend/src/app/shared/state/contents.state.ts @@ -16,8 +16,6 @@ import { AppsState } from './apps.state'; import { SavedQuery } from './queries'; import { SchemasState } from './schemas.state'; -/* eslint-disable @typescript-eslint/no-throw-literal */ - interface Snapshot extends ListState { // The current contents. contents: ReadonlyArray; diff --git a/frontend/src/app/shared/state/contributors.forms.ts b/frontend/src/app/shared/state/contributors.forms.ts index 9b766f6f8..b62077bda 100644 --- a/frontend/src/app/shared/state/contributors.forms.ts +++ b/frontend/src/app/shared/state/contributors.forms.ts @@ -82,5 +82,5 @@ function extractEmails(value: string) { return result; } -// eslint-disable-next-line no-useless-escape + const EMAIL_REGEX = /(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+\/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+\/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*/gim; diff --git a/frontend/src/app/shared/state/contributors.state.spec.ts b/frontend/src/app/shared/state/contributors.state.spec.ts index 01421d767..abbf0fa33 100644 --- a/frontend/src/app/shared/state/contributors.state.spec.ts +++ b/frontend/src/app/shared/state/contributors.state.spec.ts @@ -13,7 +13,7 @@ import { createContributors } from '../services/contributors.service.spec'; import { TestValues } from './_test-helpers'; describe('ContributorsState', () => { - const { app, appsState, newVersion, version, } = TestValues; + const { app, appsState, newVersion, version } = TestValues; const allIds: number[] = []; diff --git a/frontend/src/app/shared/state/indexes.state.spec.ts b/frontend/src/app/shared/state/indexes.state.spec.ts index 404a2dccb..070b14e3d 100644 --- a/frontend/src/app/shared/state/indexes.state.spec.ts +++ b/frontend/src/app/shared/state/indexes.state.spec.ts @@ -12,7 +12,7 @@ import { createIndex } from '../services/indexes.service.spec'; import { TestValues } from './_test-helpers'; describe('IndexesState', () => { - const { app, appsState, } = TestValues; + const { app, appsState } = TestValues; const index1 = createIndex(12); const index2 = createIndex(13); diff --git a/frontend/src/app/shared/state/jobs.state.spec.ts b/frontend/src/app/shared/state/jobs.state.spec.ts index 5deca8d70..b8c03025e 100644 --- a/frontend/src/app/shared/state/jobs.state.spec.ts +++ b/frontend/src/app/shared/state/jobs.state.spec.ts @@ -12,7 +12,7 @@ import { createJob } from '../services/jobs.service.spec'; import { TestValues } from './_test-helpers'; describe('JobsState', () => { - const { app, appsState, } = TestValues; + const { app, appsState } = TestValues; const job1 = createJob(12); const job2 = createJob(13); diff --git a/frontend/src/app/shared/state/languages.state.spec.ts b/frontend/src/app/shared/state/languages.state.spec.ts index e72dc6e2f..bc64a1df2 100644 --- a/frontend/src/app/shared/state/languages.state.spec.ts +++ b/frontend/src/app/shared/state/languages.state.spec.ts @@ -12,7 +12,7 @@ import { createLanguages } from '../services/app-languages.service.spec'; import { TestValues } from './_test-helpers'; describe('LanguagesState', () => { - const { app, appsState, newVersion, version, } = TestValues; + const { app, appsState, newVersion, version } = TestValues; const languageDE = new LanguageDto({ iso2Code: 'de', englishName: 'German' }); const languageEN = new LanguageDto({ iso2Code: 'en', englishName: 'English' }); diff --git a/frontend/src/app/shared/state/plans.state.spec.ts b/frontend/src/app/shared/state/plans.state.spec.ts index f455cbd8c..f627aeec5 100644 --- a/frontend/src/app/shared/state/plans.state.spec.ts +++ b/frontend/src/app/shared/state/plans.state.spec.ts @@ -11,7 +11,7 @@ import { DialogService, PlanChangedDto, PlanDto, PlansDto, PlansService, PlansSt import { TestValues } from './_test-helpers'; describe('PlansState', () => { - const { app, appsState, creator, newVersion, version, } = TestValues; + const { app, appsState, creator, newVersion, version } = TestValues; const oldPlans = new PlansDto({ currentPlanId: 'free', diff --git a/frontend/src/app/shared/state/resolvers.spec.ts b/frontend/src/app/shared/state/resolvers.spec.ts index 9879089e0..19f1af0a3 100644 --- a/frontend/src/app/shared/state/resolvers.spec.ts +++ b/frontend/src/app/shared/state/resolvers.spec.ts @@ -15,7 +15,7 @@ import { TestValues } from './_test-helpers'; import { ResolveContents } from './resolvers'; describe('ResolveContents', () => { - const { app, appsState, } = TestValues; + const { app, appsState } = TestValues; const uiOptions = new UIOptions({ referencesDropdownItemCount: 100, @@ -48,7 +48,7 @@ describe('ResolveContents', () => { const promise = firstValueFrom(contentsResolver.resolveMany(ids)); const result = await Promise.race([ promise.then(() => 'resolved'), - new Promise(resolve => setTimeout(() => resolve('pending'), 1)) + new Promise(resolve => setTimeout(() => resolve('pending'), 1)), ]); expect(result).toBe('pending'); diff --git a/frontend/src/app/shared/state/roles.state.spec.ts b/frontend/src/app/shared/state/roles.state.spec.ts index a79a8184c..36da9f0b1 100644 --- a/frontend/src/app/shared/state/roles.state.spec.ts +++ b/frontend/src/app/shared/state/roles.state.spec.ts @@ -12,7 +12,7 @@ import { createRoles } from '../services/roles.service.spec'; import { TestValues } from './_test-helpers'; describe('RolesState', () => { - const { app, appsState, newVersion, version, } = TestValues; + const { app, appsState, newVersion, version } = TestValues; const oldRoles = createRoles(1, 2); diff --git a/frontend/src/app/shared/state/rule-events.state.spec.ts b/frontend/src/app/shared/state/rule-events.state.spec.ts index 5542a3dbb..b373d809a 100644 --- a/frontend/src/app/shared/state/rule-events.state.spec.ts +++ b/frontend/src/app/shared/state/rule-events.state.spec.ts @@ -12,7 +12,7 @@ import { createRuleEvent } from '../services/rules.service.spec'; import { TestValues } from './_test-helpers'; describe('RuleEventsState', () => { - const { app, appsState, } = TestValues; + const { app, appsState } = TestValues; const oldRuleEvents = new RuleEventsDto({ total: 200, diff --git a/frontend/src/app/shared/state/rule-simulator.state.spec.ts b/frontend/src/app/shared/state/rule-simulator.state.spec.ts index 897f30f6d..4e6307674 100644 --- a/frontend/src/app/shared/state/rule-simulator.state.spec.ts +++ b/frontend/src/app/shared/state/rule-simulator.state.spec.ts @@ -13,7 +13,7 @@ import { TestValues } from './_test-helpers'; import { RuleSimulatorState } from './rule-simulator.state'; describe('RuleSimulatorState', () => { - const { app, appsState, } = TestValues; + const { app, appsState } = TestValues; const oldSimulatedRuleEvents = new SimulatedRuleEventsDto({ total: 200, diff --git a/frontend/src/app/shared/state/rules.state.spec.ts b/frontend/src/app/shared/state/rules.state.spec.ts index b1ebfaec5..5877b11ed 100644 --- a/frontend/src/app/shared/state/rules.state.spec.ts +++ b/frontend/src/app/shared/state/rules.state.spec.ts @@ -13,7 +13,7 @@ import { TestValues } from './_test-helpers'; import { FlowView, RulesState } from './rules.state'; describe('RulesState', () => { - const { app, appsState, newVersion, } = TestValues; + const { app, appsState, newVersion } = TestValues; const rule1 = createRule(1); const rule2 = createRule(2); @@ -737,8 +737,7 @@ function cleanup(value: T) { for (const item of value) { cleanup(item); } - } - else { + } else { for (const [key, nested] of Object.entries(value as any)) { if (nested === value) { continue; @@ -754,8 +753,7 @@ function cleanup(value: T) { if (Types.isNull(nested) || Types.isUndefined(nested)) { delete (value as any)[key]; - } - else { + } else { cleanup(nested); } } diff --git a/frontend/src/app/shared/state/schemas.forms.ts b/frontend/src/app/shared/state/schemas.forms.ts index 59942f87e..76ef31e5a 100644 --- a/frontend/src/app/shared/state/schemas.forms.ts +++ b/frontend/src/app/shared/state/schemas.forms.ts @@ -5,8 +5,6 @@ * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ -/* eslint-disable no-useless-escape */ - import { AbstractControl, UntypedFormControl, Validators } from '@angular/forms'; import { map } from 'rxjs/operators'; import { ExtendedFormGroup, Form, TemplatedFormArray, ValidatorsEx, value$ } from '@app/framework'; diff --git a/frontend/src/app/shared/state/schemas.state.spec.ts b/frontend/src/app/shared/state/schemas.state.spec.ts index d0b2b4883..23d19b6ad 100644 --- a/frontend/src/app/shared/state/schemas.state.spec.ts +++ b/frontend/src/app/shared/state/schemas.state.spec.ts @@ -14,7 +14,7 @@ import { getCategoryTree, SchemasState } from './schemas.state'; import 'src/spec/matchers'; describe('SchemasState', () => { - const { app, appsState, newVersion, } = TestValues; + const { app, appsState, newVersion } = TestValues; const schema1 = createSchema(1); const schema2 = createSchema(2); diff --git a/frontend/src/app/shared/state/table-settings.spec.ts b/frontend/src/app/shared/state/table-settings.spec.ts index 055649f70..63a91a7ce 100644 --- a/frontend/src/app/shared/state/table-settings.spec.ts +++ b/frontend/src/app/shared/state/table-settings.spec.ts @@ -14,7 +14,7 @@ import { TestValues } from './_test-helpers'; describe('TableSettings', () => { let uiState: IMock; - const { createSchema, createField, } = TestValues; + const { createSchema, createField } = TestValues; const schema = createSchema({ name: 'my-schema', diff --git a/frontend/src/app/shared/state/teams.forms.ts b/frontend/src/app/shared/state/teams.forms.ts index d9a99553f..ec96340ae 100644 --- a/frontend/src/app/shared/state/teams.forms.ts +++ b/frontend/src/app/shared/state/teams.forms.ts @@ -5,8 +5,6 @@ * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ -/* eslint-disable no-useless-escape */ - import { UntypedFormControl, Validators } from '@angular/forms'; import { ExtendedFormGroup, Form } from '@app/framework'; import { CreateTeamDto, TeamDto, UpdateTeamDto } from '../model'; diff --git a/frontend/src/app/shared/state/tour.state.ts b/frontend/src/app/shared/state/tour.state.ts index 05cff8569..742c78187 100644 --- a/frontend/src/app/shared/state/tour.state.ts +++ b/frontend/src/app/shared/state/tour.state.ts @@ -75,8 +75,6 @@ export class TourState extends State { }); } }); - - this.tourService.setDefaults(this.definition.defaults); } public complete() { diff --git a/frontend/src/app/shared/state/ui.state.spec.ts b/frontend/src/app/shared/state/ui.state.spec.ts index 6e1db890b..750194486 100644 --- a/frontend/src/app/shared/state/ui.state.spec.ts +++ b/frontend/src/app/shared/state/ui.state.spec.ts @@ -11,7 +11,7 @@ import { IResourceDto, ResourceLinkDto, UIService, UIState, UsersService } from import { TestValues } from './_test-helpers'; describe('UIState', () => { - const { app, } = TestValues; + const { app } = TestValues; const common = { key: 'xx', diff --git a/frontend/src/app/shared/utils/editor-utils.spec.ts b/frontend/src/app/shared/utils/editor-utils.spec.ts index d0c6ea7bc..0788b4cc7 100644 --- a/frontend/src/app/shared/utils/editor-utils.spec.ts +++ b/frontend/src/app/shared/utils/editor-utils.spec.ts @@ -5,8 +5,6 @@ * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ -/* eslint-disable no-template-curly-in-string */ - import { AppSettingsDto, EditorDto } from '../model'; import { computeEditorUrl } from './editor-utils'; diff --git a/frontend/src/main.ts b/frontend/src/main.ts index 900757b5b..587a23466 100644 --- a/frontend/src/main.ts +++ b/frontend/src/main.ts @@ -89,6 +89,8 @@ if (environment.production) { enableProdMode(); } +const TASKS = buildTasks(); + bootstrapApplication(AppComponent, { providers: [ provideCharts(withDefaultRegisterables()), @@ -126,7 +128,7 @@ bootstrapApplication(AppComponent, { }, { provide: UI_TOUR_OPTIONS, - useValue: {}, + useValue: TASKS.defaults, }, { provide: BaseTourService,