a comparison of tools within the JavaScript ecosystem

chore: setup ESLint (#48)

authored by samanthanguyen.me and committed by

GitHub 6121dad7 00069650

+1470 -61
+15
.github/workflows/node.yml
··· 18 18 workflow_dispatch: 19 19 20 20 jobs: 21 + lint: 22 + runs-on: ubuntu-latest 23 + steps: 24 + - name: Checkout repository 25 + uses: actions/checkout@v4 26 + - name: Install Node.js (latest) 27 + uses: actions/setup-node@v4 28 + with: 29 + node-version: latest 30 + cache: 'npm' 31 + - name: Install dependencies 32 + run: npm ci 33 + - name: Lint 34 + run: npm run lint 35 + 21 36 build-library: 22 37 name: build (${{ matrix.workspace }}) 23 38 runs-on: ubuntu-latest
+60
eslint.config.js
··· 1 + import eslint from '@eslint/js' 2 + import stylistic from '@stylistic/eslint-plugin' 3 + import globals from 'globals' 4 + import tseslint from 'typescript-eslint' 5 + 6 + export default tseslint.config( 7 + { 8 + ignores: ['**/dist/'], 9 + }, 10 + stylistic.configs.customize({ 11 + indent: 'tab', 12 + quotes: 'single', 13 + semi: false, 14 + jsx: false, 15 + }), 16 + // JavaScript 17 + { 18 + files: [ 19 + './*.js', 20 + 'libs/**/*.js', 21 + ], 22 + rules: eslint.configs.recommended.rules, 23 + languageOptions: { 24 + globals: { 25 + ...globals.node, 26 + }, 27 + }, 28 + linterOptions: { 29 + reportUnusedDisableDirectives: 'error', 30 + }, 31 + }, 32 + // TypeScript 33 + { 34 + files: [ 35 + 'libs/node-esbuild-ts-esm/', 36 + 'libs/node-tsc-ts-esm/', 37 + 'libs/node-vite-ts-esm/', 38 + 'libs/node-webpack-ts-esm/', 39 + ], 40 + plugins: { 41 + '@typescript-eslint': tseslint.plugin, 42 + }, 43 + rules: { 44 + ...tseslint.configs.eslintRecommended.rules, 45 + ...tseslint.configs.recommended.rules, 46 + }, 47 + languageOptions: { 48 + globals: { 49 + ...globals.node, 50 + }, 51 + parser: tseslint.parser, 52 + parserOptions: { 53 + project: true, 54 + }, 55 + }, 56 + linterOptions: { 57 + reportUnusedDisableDirectives: 'error', 58 + }, 59 + }, 60 + )
+3 -3
libs/node-esbuild-js-cjs/build.js
··· 1 - const esbuild = require('esbuild'); 2 - const build = esbuild.build; 1 + const esbuild = require('esbuild') 2 + const build = esbuild.build 3 3 4 4 build({ 5 5 entryPoints: ['src/index.js'], ··· 7 7 format: 'cjs', 8 8 external: [], 9 9 sourcemap: true, 10 - }); 10 + })
+1 -1
libs/node-esbuild-js-cjs/src/index.js
··· 2 2 * @param {string} name 3 3 * @returns string 4 4 */ 5 - exports.greet = function(name) { 5 + exports.greet = function (name) { 6 6 return `Hello ${name}` 7 7 }
+2 -2
libs/node-esbuild-js-esm/build.js
··· 1 - import { build } from 'esbuild'; 1 + import { build } from 'esbuild' 2 2 3 3 build({ 4 4 entryPoints: ['src/index.js'], ··· 6 6 format: 'esm', 7 7 external: [], 8 8 sourcemap: true, 9 - }); 9 + })
+2 -2
libs/node-esbuild-ts-esm/build.js
··· 1 - import { build } from 'esbuild'; 1 + import { build } from 'esbuild' 2 2 3 3 build({ 4 4 entryPoints: ['src/index.ts'], ··· 6 6 format: 'esm', 7 7 external: [], 8 8 sourcemap: true, 9 - }); 9 + })
+1 -1
libs/node-parcel-js-cjs/src/index.js
··· 2 2 * @param {string} name 3 3 * @returns string 4 4 */ 5 - exports.greet = function(name) { 5 + exports.greet = function (name) { 6 6 return `Hello ${name}` 7 7 }
+5 -5
libs/node-rollup-js-cjs/rollup.config.js
··· 1 - const commonjs = require('@rollup/plugin-commonjs').default; 2 - const { nodeResolve } = require('@rollup/plugin-node-resolve'); 3 - const { defineConfig } = require('rollup'); 4 - const { dts } = require('rollup-plugin-dts'); 1 + const commonjs = require('@rollup/plugin-commonjs').default 2 + const { nodeResolve } = require('@rollup/plugin-node-resolve') 3 + const { defineConfig } = require('rollup') 4 + const { dts } = require('rollup-plugin-dts') 5 5 6 6 module.exports = defineConfig([ 7 7 { ··· 13 13 input: 'src/index.js', 14 14 output: [{ file: 'dist/index.d.ts', format: 'cjs' }], 15 15 plugins: [dts()], 16 - } 16 + }, 17 17 ])
+1 -1
libs/node-rollup-js-cjs/src/index.js
··· 2 2 * @param {string} name 3 3 * @returns string 4 4 */ 5 - exports.greet = function(name) { 5 + exports.greet = function (name) { 6 6 return `Hello ${name}` 7 7 }
+3 -3
libs/node-rollup-js-esm/rollup.config.js
··· 1 - import { defineConfig } from 'rollup'; 2 - import { dts } from 'rollup-plugin-dts'; 1 + import { defineConfig } from 'rollup' 2 + import { dts } from 'rollup-plugin-dts' 3 3 4 4 export default defineConfig([ 5 5 { ··· 10 10 input: 'src/index.js', 11 11 output: [{ file: 'dist/index.d.ts', format: 'esm' }], 12 12 plugins: [dts()], 13 - } 13 + }, 14 14 ])
+1 -1
libs/node-tsc-js-cjs/src/index.js
··· 2 2 * @param {string} name 3 3 * @returns string 4 4 */ 5 - exports.greet = function(name) { 5 + exports.greet = function (name) { 6 6 return `Hello ${name}` 7 7 }
+1 -1
libs/node-vite-js-cjs/src/index.js
··· 2 2 * @param {string} name 3 3 * @returns string 4 4 */ 5 - exports.greet = function(name) { 5 + exports.greet = function (name) { 6 6 return `Hello ${name}` 7 7 }
+2 -2
libs/node-vite-js-cjs/vite.config.mjs
··· 1 - import { defineConfig } from 'vite'; 2 - import dts from 'vite-plugin-dts'; 1 + import { defineConfig } from 'vite' 2 + import dts from 'vite-plugin-dts' 3 3 4 4 export default defineConfig({ 5 5 build: {
+2 -2
libs/node-vite-js-esm/vite.config.js
··· 1 - import { defineConfig } from 'vite'; 2 - import dts from 'vite-plugin-dts'; 1 + import { defineConfig } from 'vite' 2 + import dts from 'vite-plugin-dts' 3 3 4 4 export default defineConfig({ 5 5 build: {
+1 -1
libs/node-webpack-js-cjs/src/index.js
··· 2 2 * @param {string} name 3 3 * @returns string 4 4 */ 5 - exports.greet = function(name) { 5 + exports.greet = function (name) { 6 6 return `Hello ${name}` 7 7 }
+4 -4
libs/node-webpack-js-cjs/webpack.config.js
··· 1 - const path = require('path'); 1 + const path = require('path') 2 2 3 3 /** @type {import('webpack').Configuration} */ 4 4 module.exports = { ··· 8 8 filename: 'bundle.js', 9 9 library: { 10 10 name: 'greeting', 11 - type: 'commonjs' 12 - } 11 + type: 'commonjs', 12 + }, 13 13 }, 14 - }; 14 + }
+8 -8
libs/node-webpack-js-esm/webpack.config.cjs
··· 1 - const path = require('path'); 2 - const isProduction = process.env.NODE_ENV == 'production'; 1 + const path = require('path') 2 + const isProduction = process.env.NODE_ENV == 'production' 3 3 4 4 /** @type {import('webpack').Configuration} */ 5 5 const config = { ··· 13 13 filename: 'index.js', 14 14 clean: true, 15 15 library: { 16 - type: 'module' 17 - } 16 + type: 'module', 17 + }, 18 18 }, 19 - }; 19 + } 20 20 21 21 module.exports = () => { 22 - config.mode = isProduction ? 'production' : 'development'; 23 - return config; 24 - }; 22 + config.mode = isProduction ? 'production' : 'development' 23 + return config 24 + }
+12 -12
libs/node-webpack-ts-esm/webpack.config.cjs
··· 1 - const path = require('path'); 2 - const isProduction = process.env.NODE_ENV == 'production'; 1 + const path = require('path') 2 + const isProduction = process.env.NODE_ENV == 'production' 3 3 4 4 /** @type {import('webpack').Configuration} */ 5 5 const config = { ··· 13 13 filename: 'index.js', 14 14 clean: true, 15 15 library: { 16 - type: 'module' 17 - } 16 + type: 'module', 17 + }, 18 18 }, 19 19 module: { 20 20 rules: [ ··· 28 28 resolve: { 29 29 extensions: ['.tsx', '.ts', '.jsx', '.js'], 30 30 extensionAlias: { 31 - ".js": [".js", ".ts"], 32 - ".cjs": [".cjs", ".cts"], 33 - ".mjs": [".mjs", ".mts"] 34 - } 31 + '.js': ['.js', '.ts'], 32 + '.cjs': ['.cjs', '.cts'], 33 + '.mjs': ['.mjs', '.mts'], 34 + }, 35 35 }, 36 - }; 36 + } 37 37 38 38 module.exports = () => { 39 - config.mode = isProduction ? 'production' : 'development'; 40 - return config; 41 - }; 39 + config.mode = isProduction ? 'production' : 'development' 40 + return config 41 + }
+1337 -11
package-lock.json
··· 8 8 "libs/*" 9 9 ], 10 10 "devDependencies": { 11 - "publint": "^0.2.7" 11 + "@eslint/js": "^9.1.1", 12 + "@stylistic/eslint-plugin": "^1.7.2", 13 + "eslint": "^8.57.0", 14 + "globals": "^15.0.0", 15 + "publint": "^0.2.7", 16 + "typescript-eslint": "^7.7.1" 12 17 } 13 18 }, 14 19 "libs/node-esbuild-js-cjs": { ··· 164 169 "typescript": "^5.3.3", 165 170 "webpack": "^5.90.0", 166 171 "webpack-cli": "^5.1.4" 172 + } 173 + }, 174 + "node_modules/@aashutoshrathi/word-wrap": { 175 + "version": "1.2.6", 176 + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", 177 + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", 178 + "dev": true, 179 + "engines": { 180 + "node": ">=0.10.0" 167 181 } 168 182 }, 169 183 "node_modules/@babel/code-frame": { ··· 714 728 "engines": { 715 729 "node": ">=12" 716 730 } 731 + }, 732 + "node_modules/@eslint-community/eslint-utils": { 733 + "version": "4.4.0", 734 + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", 735 + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", 736 + "dev": true, 737 + "dependencies": { 738 + "eslint-visitor-keys": "^3.3.0" 739 + }, 740 + "engines": { 741 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 742 + }, 743 + "peerDependencies": { 744 + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" 745 + } 746 + }, 747 + "node_modules/@eslint-community/regexpp": { 748 + "version": "4.10.0", 749 + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", 750 + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", 751 + "dev": true, 752 + "engines": { 753 + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" 754 + } 755 + }, 756 + "node_modules/@eslint/eslintrc": { 757 + "version": "2.1.4", 758 + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", 759 + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", 760 + "dev": true, 761 + "dependencies": { 762 + "ajv": "^6.12.4", 763 + "debug": "^4.3.2", 764 + "espree": "^9.6.0", 765 + "globals": "^13.19.0", 766 + "ignore": "^5.2.0", 767 + "import-fresh": "^3.2.1", 768 + "js-yaml": "^4.1.0", 769 + "minimatch": "^3.1.2", 770 + "strip-json-comments": "^3.1.1" 771 + }, 772 + "engines": { 773 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 774 + }, 775 + "funding": { 776 + "url": "https://opencollective.com/eslint" 777 + } 778 + }, 779 + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { 780 + "version": "1.1.11", 781 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 782 + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 783 + "dev": true, 784 + "dependencies": { 785 + "balanced-match": "^1.0.0", 786 + "concat-map": "0.0.1" 787 + } 788 + }, 789 + "node_modules/@eslint/eslintrc/node_modules/globals": { 790 + "version": "13.24.0", 791 + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", 792 + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", 793 + "dev": true, 794 + "dependencies": { 795 + "type-fest": "^0.20.2" 796 + }, 797 + "engines": { 798 + "node": ">=8" 799 + }, 800 + "funding": { 801 + "url": "https://github.com/sponsors/sindresorhus" 802 + } 803 + }, 804 + "node_modules/@eslint/eslintrc/node_modules/minimatch": { 805 + "version": "3.1.2", 806 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 807 + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 808 + "dev": true, 809 + "dependencies": { 810 + "brace-expansion": "^1.1.7" 811 + }, 812 + "engines": { 813 + "node": "*" 814 + } 815 + }, 816 + "node_modules/@eslint/js": { 817 + "version": "9.1.1", 818 + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.1.1.tgz", 819 + "integrity": "sha512-5WoDz3Y19Bg2BnErkZTp0en+c/i9PvgFS7MBe1+m60HjFr0hrphlAGp4yzI7pxpt4xShln4ZyYp4neJm8hmOkQ==", 820 + "dev": true, 821 + "engines": { 822 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 823 + } 824 + }, 825 + "node_modules/@humanwhocodes/config-array": { 826 + "version": "0.11.14", 827 + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", 828 + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", 829 + "dev": true, 830 + "dependencies": { 831 + "@humanwhocodes/object-schema": "^2.0.2", 832 + "debug": "^4.3.1", 833 + "minimatch": "^3.0.5" 834 + }, 835 + "engines": { 836 + "node": ">=10.10.0" 837 + } 838 + }, 839 + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { 840 + "version": "1.1.11", 841 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 842 + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 843 + "dev": true, 844 + "dependencies": { 845 + "balanced-match": "^1.0.0", 846 + "concat-map": "0.0.1" 847 + } 848 + }, 849 + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { 850 + "version": "3.1.2", 851 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 852 + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 853 + "dev": true, 854 + "dependencies": { 855 + "brace-expansion": "^1.1.7" 856 + }, 857 + "engines": { 858 + "node": "*" 859 + } 860 + }, 861 + "node_modules/@humanwhocodes/module-importer": { 862 + "version": "1.0.1", 863 + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 864 + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 865 + "dev": true, 866 + "engines": { 867 + "node": ">=12.22" 868 + }, 869 + "funding": { 870 + "type": "github", 871 + "url": "https://github.com/sponsors/nzakas" 872 + } 873 + }, 874 + "node_modules/@humanwhocodes/object-schema": { 875 + "version": "2.0.3", 876 + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", 877 + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", 878 + "dev": true 717 879 }, 718 880 "node_modules/@isaacs/cliui": { 719 881 "version": "8.0.2", ··· 1769 1931 "url": "https://opencollective.com/parcel" 1770 1932 } 1771 1933 }, 1934 + "node_modules/@parcel/packager-js/node_modules/globals": { 1935 + "version": "13.24.0", 1936 + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", 1937 + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", 1938 + "dev": true, 1939 + "dependencies": { 1940 + "type-fest": "^0.20.2" 1941 + }, 1942 + "engines": { 1943 + "node": ">=8" 1944 + }, 1945 + "funding": { 1946 + "url": "https://github.com/sponsors/sindresorhus" 1947 + } 1948 + }, 1772 1949 "node_modules/@parcel/packager-raw": { 1773 1950 "version": "2.11.0", 1774 1951 "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.11.0.tgz", ··· 3011 3188 "sprintf-js": "~1.0.2" 3012 3189 } 3013 3190 }, 3191 + "node_modules/@stylistic/eslint-plugin": { 3192 + "version": "1.7.2", 3193 + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-1.7.2.tgz", 3194 + "integrity": "sha512-TesaPR4AOCeD4unwu9gZCdTe8SsUpykriICuwXV8GFBgESuVbfVp+S8g6xTWe9ntVR803bNMtnr2UhxHW0iFqg==", 3195 + "dev": true, 3196 + "dependencies": { 3197 + "@stylistic/eslint-plugin-js": "1.7.2", 3198 + "@stylistic/eslint-plugin-jsx": "1.7.2", 3199 + "@stylistic/eslint-plugin-plus": "1.7.2", 3200 + "@stylistic/eslint-plugin-ts": "1.7.2", 3201 + "@types/eslint": "^8.56.8" 3202 + }, 3203 + "engines": { 3204 + "node": "^16.0.0 || >=18.0.0" 3205 + }, 3206 + "peerDependencies": { 3207 + "eslint": ">=8.40.0" 3208 + } 3209 + }, 3210 + "node_modules/@stylistic/eslint-plugin-js": { 3211 + "version": "1.7.2", 3212 + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-1.7.2.tgz", 3213 + "integrity": "sha512-ZYX7C5p7zlHbACwFLU+lISVh6tdcRP/++PWegh2Sy0UgMT5kU0XkPa2tKWEtJYzZmPhJxu9LxbnWcnE/tTwSDQ==", 3214 + "dev": true, 3215 + "dependencies": { 3216 + "@types/eslint": "^8.56.8", 3217 + "acorn": "^8.11.3", 3218 + "escape-string-regexp": "^4.0.0", 3219 + "eslint-visitor-keys": "^3.4.3", 3220 + "espree": "^9.6.1" 3221 + }, 3222 + "engines": { 3223 + "node": "^16.0.0 || >=18.0.0" 3224 + }, 3225 + "peerDependencies": { 3226 + "eslint": ">=8.40.0" 3227 + } 3228 + }, 3229 + "node_modules/@stylistic/eslint-plugin-js/node_modules/escape-string-regexp": { 3230 + "version": "4.0.0", 3231 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 3232 + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 3233 + "dev": true, 3234 + "engines": { 3235 + "node": ">=10" 3236 + }, 3237 + "funding": { 3238 + "url": "https://github.com/sponsors/sindresorhus" 3239 + } 3240 + }, 3241 + "node_modules/@stylistic/eslint-plugin-jsx": { 3242 + "version": "1.7.2", 3243 + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-jsx/-/eslint-plugin-jsx-1.7.2.tgz", 3244 + "integrity": "sha512-lNZR5PR0HLJPs+kY0y8fy6KroKlYqA5PwsYWpVYWzqZWiL5jgAeUo4s9yLFYjJjzildJ5MsTVMy/xP81Qz6GXg==", 3245 + "dev": true, 3246 + "dependencies": { 3247 + "@stylistic/eslint-plugin-js": "^1.7.2", 3248 + "@types/eslint": "^8.56.8", 3249 + "estraverse": "^5.3.0", 3250 + "picomatch": "^4.0.2" 3251 + }, 3252 + "engines": { 3253 + "node": "^16.0.0 || >=18.0.0" 3254 + }, 3255 + "peerDependencies": { 3256 + "eslint": ">=8.40.0" 3257 + } 3258 + }, 3259 + "node_modules/@stylistic/eslint-plugin-jsx/node_modules/estraverse": { 3260 + "version": "5.3.0", 3261 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 3262 + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 3263 + "dev": true, 3264 + "engines": { 3265 + "node": ">=4.0" 3266 + } 3267 + }, 3268 + "node_modules/@stylistic/eslint-plugin-jsx/node_modules/picomatch": { 3269 + "version": "4.0.2", 3270 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", 3271 + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", 3272 + "dev": true, 3273 + "engines": { 3274 + "node": ">=12" 3275 + }, 3276 + "funding": { 3277 + "url": "https://github.com/sponsors/jonschlinkert" 3278 + } 3279 + }, 3280 + "node_modules/@stylistic/eslint-plugin-plus": { 3281 + "version": "1.7.2", 3282 + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-plus/-/eslint-plugin-plus-1.7.2.tgz", 3283 + "integrity": "sha512-luUfRVbBVtt0+/FNt8/76BANJEzb/nHWasHD7UUjyMrch2U9xUKpObrkTCzqBuisKek+uFupwGjqXqDP07+fQw==", 3284 + "dev": true, 3285 + "dependencies": { 3286 + "@types/eslint": "^8.56.8", 3287 + "@typescript-eslint/utils": "^6.21.0" 3288 + }, 3289 + "peerDependencies": { 3290 + "eslint": "*" 3291 + } 3292 + }, 3293 + "node_modules/@stylistic/eslint-plugin-plus/node_modules/@typescript-eslint/scope-manager": { 3294 + "version": "6.21.0", 3295 + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", 3296 + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", 3297 + "dev": true, 3298 + "dependencies": { 3299 + "@typescript-eslint/types": "6.21.0", 3300 + "@typescript-eslint/visitor-keys": "6.21.0" 3301 + }, 3302 + "engines": { 3303 + "node": "^16.0.0 || >=18.0.0" 3304 + }, 3305 + "funding": { 3306 + "type": "opencollective", 3307 + "url": "https://opencollective.com/typescript-eslint" 3308 + } 3309 + }, 3310 + "node_modules/@stylistic/eslint-plugin-plus/node_modules/@typescript-eslint/types": { 3311 + "version": "6.21.0", 3312 + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", 3313 + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", 3314 + "dev": true, 3315 + "engines": { 3316 + "node": "^16.0.0 || >=18.0.0" 3317 + }, 3318 + "funding": { 3319 + "type": "opencollective", 3320 + "url": "https://opencollective.com/typescript-eslint" 3321 + } 3322 + }, 3323 + "node_modules/@stylistic/eslint-plugin-plus/node_modules/@typescript-eslint/typescript-estree": { 3324 + "version": "6.21.0", 3325 + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", 3326 + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", 3327 + "dev": true, 3328 + "dependencies": { 3329 + "@typescript-eslint/types": "6.21.0", 3330 + "@typescript-eslint/visitor-keys": "6.21.0", 3331 + "debug": "^4.3.4", 3332 + "globby": "^11.1.0", 3333 + "is-glob": "^4.0.3", 3334 + "minimatch": "9.0.3", 3335 + "semver": "^7.5.4", 3336 + "ts-api-utils": "^1.0.1" 3337 + }, 3338 + "engines": { 3339 + "node": "^16.0.0 || >=18.0.0" 3340 + }, 3341 + "funding": { 3342 + "type": "opencollective", 3343 + "url": "https://opencollective.com/typescript-eslint" 3344 + }, 3345 + "peerDependenciesMeta": { 3346 + "typescript": { 3347 + "optional": true 3348 + } 3349 + } 3350 + }, 3351 + "node_modules/@stylistic/eslint-plugin-plus/node_modules/@typescript-eslint/utils": { 3352 + "version": "6.21.0", 3353 + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", 3354 + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", 3355 + "dev": true, 3356 + "dependencies": { 3357 + "@eslint-community/eslint-utils": "^4.4.0", 3358 + "@types/json-schema": "^7.0.12", 3359 + "@types/semver": "^7.5.0", 3360 + "@typescript-eslint/scope-manager": "6.21.0", 3361 + "@typescript-eslint/types": "6.21.0", 3362 + "@typescript-eslint/typescript-estree": "6.21.0", 3363 + "semver": "^7.5.4" 3364 + }, 3365 + "engines": { 3366 + "node": "^16.0.0 || >=18.0.0" 3367 + }, 3368 + "funding": { 3369 + "type": "opencollective", 3370 + "url": "https://opencollective.com/typescript-eslint" 3371 + }, 3372 + "peerDependencies": { 3373 + "eslint": "^7.0.0 || ^8.0.0" 3374 + } 3375 + }, 3376 + "node_modules/@stylistic/eslint-plugin-plus/node_modules/@typescript-eslint/visitor-keys": { 3377 + "version": "6.21.0", 3378 + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", 3379 + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", 3380 + "dev": true, 3381 + "dependencies": { 3382 + "@typescript-eslint/types": "6.21.0", 3383 + "eslint-visitor-keys": "^3.4.1" 3384 + }, 3385 + "engines": { 3386 + "node": "^16.0.0 || >=18.0.0" 3387 + }, 3388 + "funding": { 3389 + "type": "opencollective", 3390 + "url": "https://opencollective.com/typescript-eslint" 3391 + } 3392 + }, 3393 + "node_modules/@stylistic/eslint-plugin-ts": { 3394 + "version": "1.7.2", 3395 + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-ts/-/eslint-plugin-ts-1.7.2.tgz", 3396 + "integrity": "sha512-szX89YPocwCe4T0eT3alj7MwEzDHt5+B+kb/vQfSSLIjI9CGgoWrgj50zU8PtaDctTh4ZieFBzU/lRmkSUo0RQ==", 3397 + "dev": true, 3398 + "dependencies": { 3399 + "@stylistic/eslint-plugin-js": "1.7.2", 3400 + "@types/eslint": "^8.56.8", 3401 + "@typescript-eslint/utils": "^6.21.0" 3402 + }, 3403 + "engines": { 3404 + "node": "^16.0.0 || >=18.0.0" 3405 + }, 3406 + "peerDependencies": { 3407 + "eslint": ">=8.40.0" 3408 + } 3409 + }, 3410 + "node_modules/@stylistic/eslint-plugin-ts/node_modules/@typescript-eslint/scope-manager": { 3411 + "version": "6.21.0", 3412 + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", 3413 + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", 3414 + "dev": true, 3415 + "dependencies": { 3416 + "@typescript-eslint/types": "6.21.0", 3417 + "@typescript-eslint/visitor-keys": "6.21.0" 3418 + }, 3419 + "engines": { 3420 + "node": "^16.0.0 || >=18.0.0" 3421 + }, 3422 + "funding": { 3423 + "type": "opencollective", 3424 + "url": "https://opencollective.com/typescript-eslint" 3425 + } 3426 + }, 3427 + "node_modules/@stylistic/eslint-plugin-ts/node_modules/@typescript-eslint/types": { 3428 + "version": "6.21.0", 3429 + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", 3430 + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", 3431 + "dev": true, 3432 + "engines": { 3433 + "node": "^16.0.0 || >=18.0.0" 3434 + }, 3435 + "funding": { 3436 + "type": "opencollective", 3437 + "url": "https://opencollective.com/typescript-eslint" 3438 + } 3439 + }, 3440 + "node_modules/@stylistic/eslint-plugin-ts/node_modules/@typescript-eslint/typescript-estree": { 3441 + "version": "6.21.0", 3442 + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", 3443 + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", 3444 + "dev": true, 3445 + "dependencies": { 3446 + "@typescript-eslint/types": "6.21.0", 3447 + "@typescript-eslint/visitor-keys": "6.21.0", 3448 + "debug": "^4.3.4", 3449 + "globby": "^11.1.0", 3450 + "is-glob": "^4.0.3", 3451 + "minimatch": "9.0.3", 3452 + "semver": "^7.5.4", 3453 + "ts-api-utils": "^1.0.1" 3454 + }, 3455 + "engines": { 3456 + "node": "^16.0.0 || >=18.0.0" 3457 + }, 3458 + "funding": { 3459 + "type": "opencollective", 3460 + "url": "https://opencollective.com/typescript-eslint" 3461 + }, 3462 + "peerDependenciesMeta": { 3463 + "typescript": { 3464 + "optional": true 3465 + } 3466 + } 3467 + }, 3468 + "node_modules/@stylistic/eslint-plugin-ts/node_modules/@typescript-eslint/utils": { 3469 + "version": "6.21.0", 3470 + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", 3471 + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", 3472 + "dev": true, 3473 + "dependencies": { 3474 + "@eslint-community/eslint-utils": "^4.4.0", 3475 + "@types/json-schema": "^7.0.12", 3476 + "@types/semver": "^7.5.0", 3477 + "@typescript-eslint/scope-manager": "6.21.0", 3478 + "@typescript-eslint/types": "6.21.0", 3479 + "@typescript-eslint/typescript-estree": "6.21.0", 3480 + "semver": "^7.5.4" 3481 + }, 3482 + "engines": { 3483 + "node": "^16.0.0 || >=18.0.0" 3484 + }, 3485 + "funding": { 3486 + "type": "opencollective", 3487 + "url": "https://opencollective.com/typescript-eslint" 3488 + }, 3489 + "peerDependencies": { 3490 + "eslint": "^7.0.0 || ^8.0.0" 3491 + } 3492 + }, 3493 + "node_modules/@stylistic/eslint-plugin-ts/node_modules/@typescript-eslint/visitor-keys": { 3494 + "version": "6.21.0", 3495 + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", 3496 + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", 3497 + "dev": true, 3498 + "dependencies": { 3499 + "@typescript-eslint/types": "6.21.0", 3500 + "eslint-visitor-keys": "^3.4.1" 3501 + }, 3502 + "engines": { 3503 + "node": "^16.0.0 || >=18.0.0" 3504 + }, 3505 + "funding": { 3506 + "type": "opencollective", 3507 + "url": "https://opencollective.com/typescript-eslint" 3508 + } 3509 + }, 3014 3510 "node_modules/@swc/core": { 3015 3511 "version": "1.3.103", 3016 3512 "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.103.tgz", ··· 3256 3752 "dev": true 3257 3753 }, 3258 3754 "node_modules/@types/eslint": { 3259 - "version": "8.56.2", 3260 - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.2.tgz", 3261 - "integrity": "sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==", 3755 + "version": "8.56.10", 3756 + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", 3757 + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", 3262 3758 "dev": true, 3263 3759 "dependencies": { 3264 3760 "@types/estree": "*", ··· 3302 3798 "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", 3303 3799 "dev": true 3304 3800 }, 3801 + "node_modules/@types/semver": { 3802 + "version": "7.5.8", 3803 + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", 3804 + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", 3805 + "dev": true 3806 + }, 3807 + "node_modules/@typescript-eslint/eslint-plugin": { 3808 + "version": "7.7.1", 3809 + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.7.1.tgz", 3810 + "integrity": "sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==", 3811 + "dev": true, 3812 + "dependencies": { 3813 + "@eslint-community/regexpp": "^4.10.0", 3814 + "@typescript-eslint/scope-manager": "7.7.1", 3815 + "@typescript-eslint/type-utils": "7.7.1", 3816 + "@typescript-eslint/utils": "7.7.1", 3817 + "@typescript-eslint/visitor-keys": "7.7.1", 3818 + "debug": "^4.3.4", 3819 + "graphemer": "^1.4.0", 3820 + "ignore": "^5.3.1", 3821 + "natural-compare": "^1.4.0", 3822 + "semver": "^7.6.0", 3823 + "ts-api-utils": "^1.3.0" 3824 + }, 3825 + "engines": { 3826 + "node": "^18.18.0 || >=20.0.0" 3827 + }, 3828 + "funding": { 3829 + "type": "opencollective", 3830 + "url": "https://opencollective.com/typescript-eslint" 3831 + }, 3832 + "peerDependencies": { 3833 + "@typescript-eslint/parser": "^7.0.0", 3834 + "eslint": "^8.56.0" 3835 + }, 3836 + "peerDependenciesMeta": { 3837 + "typescript": { 3838 + "optional": true 3839 + } 3840 + } 3841 + }, 3842 + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { 3843 + "version": "7.6.0", 3844 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", 3845 + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", 3846 + "dev": true, 3847 + "dependencies": { 3848 + "lru-cache": "^6.0.0" 3849 + }, 3850 + "bin": { 3851 + "semver": "bin/semver.js" 3852 + }, 3853 + "engines": { 3854 + "node": ">=10" 3855 + } 3856 + }, 3857 + "node_modules/@typescript-eslint/parser": { 3858 + "version": "7.7.1", 3859 + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.7.1.tgz", 3860 + "integrity": "sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==", 3861 + "dev": true, 3862 + "dependencies": { 3863 + "@typescript-eslint/scope-manager": "7.7.1", 3864 + "@typescript-eslint/types": "7.7.1", 3865 + "@typescript-eslint/typescript-estree": "7.7.1", 3866 + "@typescript-eslint/visitor-keys": "7.7.1", 3867 + "debug": "^4.3.4" 3868 + }, 3869 + "engines": { 3870 + "node": "^18.18.0 || >=20.0.0" 3871 + }, 3872 + "funding": { 3873 + "type": "opencollective", 3874 + "url": "https://opencollective.com/typescript-eslint" 3875 + }, 3876 + "peerDependencies": { 3877 + "eslint": "^8.56.0" 3878 + }, 3879 + "peerDependenciesMeta": { 3880 + "typescript": { 3881 + "optional": true 3882 + } 3883 + } 3884 + }, 3885 + "node_modules/@typescript-eslint/scope-manager": { 3886 + "version": "7.7.1", 3887 + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.7.1.tgz", 3888 + "integrity": "sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==", 3889 + "dev": true, 3890 + "dependencies": { 3891 + "@typescript-eslint/types": "7.7.1", 3892 + "@typescript-eslint/visitor-keys": "7.7.1" 3893 + }, 3894 + "engines": { 3895 + "node": "^18.18.0 || >=20.0.0" 3896 + }, 3897 + "funding": { 3898 + "type": "opencollective", 3899 + "url": "https://opencollective.com/typescript-eslint" 3900 + } 3901 + }, 3902 + "node_modules/@typescript-eslint/type-utils": { 3903 + "version": "7.7.1", 3904 + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.7.1.tgz", 3905 + "integrity": "sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==", 3906 + "dev": true, 3907 + "dependencies": { 3908 + "@typescript-eslint/typescript-estree": "7.7.1", 3909 + "@typescript-eslint/utils": "7.7.1", 3910 + "debug": "^4.3.4", 3911 + "ts-api-utils": "^1.3.0" 3912 + }, 3913 + "engines": { 3914 + "node": "^18.18.0 || >=20.0.0" 3915 + }, 3916 + "funding": { 3917 + "type": "opencollective", 3918 + "url": "https://opencollective.com/typescript-eslint" 3919 + }, 3920 + "peerDependencies": { 3921 + "eslint": "^8.56.0" 3922 + }, 3923 + "peerDependenciesMeta": { 3924 + "typescript": { 3925 + "optional": true 3926 + } 3927 + } 3928 + }, 3929 + "node_modules/@typescript-eslint/types": { 3930 + "version": "7.7.1", 3931 + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.7.1.tgz", 3932 + "integrity": "sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==", 3933 + "dev": true, 3934 + "engines": { 3935 + "node": "^18.18.0 || >=20.0.0" 3936 + }, 3937 + "funding": { 3938 + "type": "opencollective", 3939 + "url": "https://opencollective.com/typescript-eslint" 3940 + } 3941 + }, 3942 + "node_modules/@typescript-eslint/typescript-estree": { 3943 + "version": "7.7.1", 3944 + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.7.1.tgz", 3945 + "integrity": "sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==", 3946 + "dev": true, 3947 + "dependencies": { 3948 + "@typescript-eslint/types": "7.7.1", 3949 + "@typescript-eslint/visitor-keys": "7.7.1", 3950 + "debug": "^4.3.4", 3951 + "globby": "^11.1.0", 3952 + "is-glob": "^4.0.3", 3953 + "minimatch": "^9.0.4", 3954 + "semver": "^7.6.0", 3955 + "ts-api-utils": "^1.3.0" 3956 + }, 3957 + "engines": { 3958 + "node": "^18.18.0 || >=20.0.0" 3959 + }, 3960 + "funding": { 3961 + "type": "opencollective", 3962 + "url": "https://opencollective.com/typescript-eslint" 3963 + }, 3964 + "peerDependenciesMeta": { 3965 + "typescript": { 3966 + "optional": true 3967 + } 3968 + } 3969 + }, 3970 + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { 3971 + "version": "9.0.4", 3972 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", 3973 + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", 3974 + "dev": true, 3975 + "dependencies": { 3976 + "brace-expansion": "^2.0.1" 3977 + }, 3978 + "engines": { 3979 + "node": ">=16 || 14 >=14.17" 3980 + }, 3981 + "funding": { 3982 + "url": "https://github.com/sponsors/isaacs" 3983 + } 3984 + }, 3985 + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { 3986 + "version": "7.6.0", 3987 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", 3988 + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", 3989 + "dev": true, 3990 + "dependencies": { 3991 + "lru-cache": "^6.0.0" 3992 + }, 3993 + "bin": { 3994 + "semver": "bin/semver.js" 3995 + }, 3996 + "engines": { 3997 + "node": ">=10" 3998 + } 3999 + }, 4000 + "node_modules/@typescript-eslint/utils": { 4001 + "version": "7.7.1", 4002 + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.7.1.tgz", 4003 + "integrity": "sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==", 4004 + "dev": true, 4005 + "dependencies": { 4006 + "@eslint-community/eslint-utils": "^4.4.0", 4007 + "@types/json-schema": "^7.0.15", 4008 + "@types/semver": "^7.5.8", 4009 + "@typescript-eslint/scope-manager": "7.7.1", 4010 + "@typescript-eslint/types": "7.7.1", 4011 + "@typescript-eslint/typescript-estree": "7.7.1", 4012 + "semver": "^7.6.0" 4013 + }, 4014 + "engines": { 4015 + "node": "^18.18.0 || >=20.0.0" 4016 + }, 4017 + "funding": { 4018 + "type": "opencollective", 4019 + "url": "https://opencollective.com/typescript-eslint" 4020 + }, 4021 + "peerDependencies": { 4022 + "eslint": "^8.56.0" 4023 + } 4024 + }, 4025 + "node_modules/@typescript-eslint/utils/node_modules/semver": { 4026 + "version": "7.6.0", 4027 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", 4028 + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", 4029 + "dev": true, 4030 + "dependencies": { 4031 + "lru-cache": "^6.0.0" 4032 + }, 4033 + "bin": { 4034 + "semver": "bin/semver.js" 4035 + }, 4036 + "engines": { 4037 + "node": ">=10" 4038 + } 4039 + }, 4040 + "node_modules/@typescript-eslint/visitor-keys": { 4041 + "version": "7.7.1", 4042 + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.7.1.tgz", 4043 + "integrity": "sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==", 4044 + "dev": true, 4045 + "dependencies": { 4046 + "@typescript-eslint/types": "7.7.1", 4047 + "eslint-visitor-keys": "^3.4.3" 4048 + }, 4049 + "engines": { 4050 + "node": "^18.18.0 || >=20.0.0" 4051 + }, 4052 + "funding": { 4053 + "type": "opencollective", 4054 + "url": "https://opencollective.com/typescript-eslint" 4055 + } 4056 + }, 4057 + "node_modules/@ungap/structured-clone": { 4058 + "version": "1.2.0", 4059 + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", 4060 + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", 4061 + "dev": true 4062 + }, 3305 4063 "node_modules/@volar/language-core": { 3306 4064 "version": "1.11.1", 3307 4065 "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.11.1.tgz", ··· 3623 4381 "dev": true, 3624 4382 "peerDependencies": { 3625 4383 "acorn": "^8" 4384 + } 4385 + }, 4386 + "node_modules/acorn-jsx": { 4387 + "version": "5.3.2", 4388 + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 4389 + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 4390 + "dev": true, 4391 + "peerDependencies": { 4392 + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 3626 4393 } 3627 4394 }, 3628 4395 "node_modules/ajv": { ··· 4000 4767 "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", 4001 4768 "dev": true 4002 4769 }, 4770 + "node_modules/concat-map": { 4771 + "version": "0.0.1", 4772 + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 4773 + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 4774 + "dev": true 4775 + }, 4003 4776 "node_modules/cosmiconfig": { 4004 4777 "version": "8.3.6", 4005 4778 "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", ··· 4210 4983 } 4211 4984 } 4212 4985 }, 4986 + "node_modules/deep-is": { 4987 + "version": "0.1.4", 4988 + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 4989 + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 4990 + "dev": true 4991 + }, 4213 4992 "node_modules/deepmerge": { 4214 4993 "version": "4.3.1", 4215 4994 "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", ··· 4243 5022 "node": ">=8" 4244 5023 } 4245 5024 }, 5025 + "node_modules/doctrine": { 5026 + "version": "3.0.0", 5027 + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 5028 + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 5029 + "dev": true, 5030 + "dependencies": { 5031 + "esutils": "^2.0.2" 5032 + }, 5033 + "engines": { 5034 + "node": ">=6.0.0" 5035 + } 5036 + }, 4246 5037 "node_modules/dom-serializer": { 4247 5038 "version": "1.4.1", 4248 5039 "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", ··· 4448 5239 "node": ">=0.8.0" 4449 5240 } 4450 5241 }, 5242 + "node_modules/eslint": { 5243 + "version": "8.57.0", 5244 + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", 5245 + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", 5246 + "dev": true, 5247 + "dependencies": { 5248 + "@eslint-community/eslint-utils": "^4.2.0", 5249 + "@eslint-community/regexpp": "^4.6.1", 5250 + "@eslint/eslintrc": "^2.1.4", 5251 + "@eslint/js": "8.57.0", 5252 + "@humanwhocodes/config-array": "^0.11.14", 5253 + "@humanwhocodes/module-importer": "^1.0.1", 5254 + "@nodelib/fs.walk": "^1.2.8", 5255 + "@ungap/structured-clone": "^1.2.0", 5256 + "ajv": "^6.12.4", 5257 + "chalk": "^4.0.0", 5258 + "cross-spawn": "^7.0.2", 5259 + "debug": "^4.3.2", 5260 + "doctrine": "^3.0.0", 5261 + "escape-string-regexp": "^4.0.0", 5262 + "eslint-scope": "^7.2.2", 5263 + "eslint-visitor-keys": "^3.4.3", 5264 + "espree": "^9.6.1", 5265 + "esquery": "^1.4.2", 5266 + "esutils": "^2.0.2", 5267 + "fast-deep-equal": "^3.1.3", 5268 + "file-entry-cache": "^6.0.1", 5269 + "find-up": "^5.0.0", 5270 + "glob-parent": "^6.0.2", 5271 + "globals": "^13.19.0", 5272 + "graphemer": "^1.4.0", 5273 + "ignore": "^5.2.0", 5274 + "imurmurhash": "^0.1.4", 5275 + "is-glob": "^4.0.0", 5276 + "is-path-inside": "^3.0.3", 5277 + "js-yaml": "^4.1.0", 5278 + "json-stable-stringify-without-jsonify": "^1.0.1", 5279 + "levn": "^0.4.1", 5280 + "lodash.merge": "^4.6.2", 5281 + "minimatch": "^3.1.2", 5282 + "natural-compare": "^1.4.0", 5283 + "optionator": "^0.9.3", 5284 + "strip-ansi": "^6.0.1", 5285 + "text-table": "^0.2.0" 5286 + }, 5287 + "bin": { 5288 + "eslint": "bin/eslint.js" 5289 + }, 5290 + "engines": { 5291 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 5292 + }, 5293 + "funding": { 5294 + "url": "https://opencollective.com/eslint" 5295 + } 5296 + }, 4451 5297 "node_modules/eslint-scope": { 4452 5298 "version": "5.1.1", 4453 5299 "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", ··· 4461 5307 "node": ">=8.0.0" 4462 5308 } 4463 5309 }, 5310 + "node_modules/eslint-visitor-keys": { 5311 + "version": "3.4.3", 5312 + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", 5313 + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", 5314 + "dev": true, 5315 + "engines": { 5316 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 5317 + }, 5318 + "funding": { 5319 + "url": "https://opencollective.com/eslint" 5320 + } 5321 + }, 5322 + "node_modules/eslint/node_modules/@eslint/js": { 5323 + "version": "8.57.0", 5324 + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", 5325 + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", 5326 + "dev": true, 5327 + "engines": { 5328 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 5329 + } 5330 + }, 5331 + "node_modules/eslint/node_modules/brace-expansion": { 5332 + "version": "1.1.11", 5333 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 5334 + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 5335 + "dev": true, 5336 + "dependencies": { 5337 + "balanced-match": "^1.0.0", 5338 + "concat-map": "0.0.1" 5339 + } 5340 + }, 5341 + "node_modules/eslint/node_modules/escape-string-regexp": { 5342 + "version": "4.0.0", 5343 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 5344 + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 5345 + "dev": true, 5346 + "engines": { 5347 + "node": ">=10" 5348 + }, 5349 + "funding": { 5350 + "url": "https://github.com/sponsors/sindresorhus" 5351 + } 5352 + }, 5353 + "node_modules/eslint/node_modules/eslint-scope": { 5354 + "version": "7.2.2", 5355 + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", 5356 + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", 5357 + "dev": true, 5358 + "dependencies": { 5359 + "esrecurse": "^4.3.0", 5360 + "estraverse": "^5.2.0" 5361 + }, 5362 + "engines": { 5363 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 5364 + }, 5365 + "funding": { 5366 + "url": "https://opencollective.com/eslint" 5367 + } 5368 + }, 5369 + "node_modules/eslint/node_modules/estraverse": { 5370 + "version": "5.3.0", 5371 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 5372 + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 5373 + "dev": true, 5374 + "engines": { 5375 + "node": ">=4.0" 5376 + } 5377 + }, 5378 + "node_modules/eslint/node_modules/find-up": { 5379 + "version": "5.0.0", 5380 + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 5381 + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 5382 + "dev": true, 5383 + "dependencies": { 5384 + "locate-path": "^6.0.0", 5385 + "path-exists": "^4.0.0" 5386 + }, 5387 + "engines": { 5388 + "node": ">=10" 5389 + }, 5390 + "funding": { 5391 + "url": "https://github.com/sponsors/sindresorhus" 5392 + } 5393 + }, 5394 + "node_modules/eslint/node_modules/glob-parent": { 5395 + "version": "6.0.2", 5396 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 5397 + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 5398 + "dev": true, 5399 + "dependencies": { 5400 + "is-glob": "^4.0.3" 5401 + }, 5402 + "engines": { 5403 + "node": ">=10.13.0" 5404 + } 5405 + }, 5406 + "node_modules/eslint/node_modules/globals": { 5407 + "version": "13.24.0", 5408 + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", 5409 + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", 5410 + "dev": true, 5411 + "dependencies": { 5412 + "type-fest": "^0.20.2" 5413 + }, 5414 + "engines": { 5415 + "node": ">=8" 5416 + }, 5417 + "funding": { 5418 + "url": "https://github.com/sponsors/sindresorhus" 5419 + } 5420 + }, 5421 + "node_modules/eslint/node_modules/locate-path": { 5422 + "version": "6.0.0", 5423 + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 5424 + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 5425 + "dev": true, 5426 + "dependencies": { 5427 + "p-locate": "^5.0.0" 5428 + }, 5429 + "engines": { 5430 + "node": ">=10" 5431 + }, 5432 + "funding": { 5433 + "url": "https://github.com/sponsors/sindresorhus" 5434 + } 5435 + }, 5436 + "node_modules/eslint/node_modules/minimatch": { 5437 + "version": "3.1.2", 5438 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 5439 + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 5440 + "dev": true, 5441 + "dependencies": { 5442 + "brace-expansion": "^1.1.7" 5443 + }, 5444 + "engines": { 5445 + "node": "*" 5446 + } 5447 + }, 5448 + "node_modules/eslint/node_modules/p-limit": { 5449 + "version": "3.1.0", 5450 + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 5451 + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 5452 + "dev": true, 5453 + "dependencies": { 5454 + "yocto-queue": "^0.1.0" 5455 + }, 5456 + "engines": { 5457 + "node": ">=10" 5458 + }, 5459 + "funding": { 5460 + "url": "https://github.com/sponsors/sindresorhus" 5461 + } 5462 + }, 5463 + "node_modules/eslint/node_modules/p-locate": { 5464 + "version": "5.0.0", 5465 + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 5466 + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 5467 + "dev": true, 5468 + "dependencies": { 5469 + "p-limit": "^3.0.2" 5470 + }, 5471 + "engines": { 5472 + "node": ">=10" 5473 + }, 5474 + "funding": { 5475 + "url": "https://github.com/sponsors/sindresorhus" 5476 + } 5477 + }, 5478 + "node_modules/espree": { 5479 + "version": "9.6.1", 5480 + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", 5481 + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", 5482 + "dev": true, 5483 + "dependencies": { 5484 + "acorn": "^8.9.0", 5485 + "acorn-jsx": "^5.3.2", 5486 + "eslint-visitor-keys": "^3.4.1" 5487 + }, 5488 + "engines": { 5489 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 5490 + }, 5491 + "funding": { 5492 + "url": "https://opencollective.com/eslint" 5493 + } 5494 + }, 5495 + "node_modules/esquery": { 5496 + "version": "1.5.0", 5497 + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", 5498 + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", 5499 + "dev": true, 5500 + "dependencies": { 5501 + "estraverse": "^5.1.0" 5502 + }, 5503 + "engines": { 5504 + "node": ">=0.10" 5505 + } 5506 + }, 5507 + "node_modules/esquery/node_modules/estraverse": { 5508 + "version": "5.3.0", 5509 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 5510 + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 5511 + "dev": true, 5512 + "engines": { 5513 + "node": ">=4.0" 5514 + } 5515 + }, 4464 5516 "node_modules/esrecurse": { 4465 5517 "version": "4.3.0", 4466 5518 "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", ··· 4496 5548 "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 4497 5549 "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 4498 5550 "dev": true 5551 + }, 5552 + "node_modules/esutils": { 5553 + "version": "2.0.3", 5554 + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 5555 + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 5556 + "dev": true, 5557 + "engines": { 5558 + "node": ">=0.10.0" 5559 + } 4499 5560 }, 4500 5561 "node_modules/events": { 4501 5562 "version": "3.3.0", ··· 4555 5616 "version": "2.1.0", 4556 5617 "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 4557 5618 "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 5619 + "dev": true 5620 + }, 5621 + "node_modules/fast-levenshtein": { 5622 + "version": "2.0.6", 5623 + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 5624 + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 4558 5625 "dev": true 4559 5626 }, 4560 5627 "node_modules/fastest-levenshtein": { ··· 4575 5642 "reusify": "^1.0.4" 4576 5643 } 4577 5644 }, 5645 + "node_modules/file-entry-cache": { 5646 + "version": "6.0.1", 5647 + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 5648 + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 5649 + "dev": true, 5650 + "dependencies": { 5651 + "flat-cache": "^3.0.4" 5652 + }, 5653 + "engines": { 5654 + "node": "^10.12.0 || >=12.0.0" 5655 + } 5656 + }, 4578 5657 "node_modules/fill-range": { 4579 5658 "version": "7.0.1", 4580 5659 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", ··· 4609 5688 "flat": "cli.js" 4610 5689 } 4611 5690 }, 5691 + "node_modules/flat-cache": { 5692 + "version": "3.2.0", 5693 + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", 5694 + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", 5695 + "dev": true, 5696 + "dependencies": { 5697 + "flatted": "^3.2.9", 5698 + "keyv": "^4.5.3", 5699 + "rimraf": "^3.0.2" 5700 + }, 5701 + "engines": { 5702 + "node": "^10.12.0 || >=12.0.0" 5703 + } 5704 + }, 5705 + "node_modules/flatted": { 5706 + "version": "3.3.1", 5707 + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", 5708 + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", 5709 + "dev": true 5710 + }, 4612 5711 "node_modules/foreground-child": { 4613 5712 "version": "3.1.1", 4614 5713 "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", ··· 4751 5850 } 4752 5851 }, 4753 5852 "node_modules/globals": { 4754 - "version": "13.24.0", 4755 - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", 4756 - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", 5853 + "version": "15.0.0", 5854 + "resolved": "https://registry.npmjs.org/globals/-/globals-15.0.0.tgz", 5855 + "integrity": "sha512-m/C/yR4mjO6pXDTm9/R/SpYTAIyaUB4EOzcaaMEl7mds7Mshct9GfejiJNQGjHHbdMPey13Kpu4TMbYi9ex1pw==", 4757 5856 "dev": true, 4758 - "dependencies": { 4759 - "type-fest": "^0.20.2" 4760 - }, 4761 5857 "engines": { 4762 - "node": ">=8" 5858 + "node": ">=18" 4763 5859 }, 4764 5860 "funding": { 4765 5861 "url": "https://github.com/sponsors/sindresorhus" ··· 4789 5885 "version": "4.2.11", 4790 5886 "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 4791 5887 "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 5888 + "dev": true 5889 + }, 5890 + "node_modules/graphemer": { 5891 + "version": "1.4.0", 5892 + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", 5893 + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", 4792 5894 "dev": true 4793 5895 }, 4794 5896 "node_modules/has-flag": { ··· 4973 6075 "url": "https://github.com/sponsors/sindresorhus" 4974 6076 } 4975 6077 }, 6078 + "node_modules/imurmurhash": { 6079 + "version": "0.1.4", 6080 + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 6081 + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 6082 + "dev": true, 6083 + "engines": { 6084 + "node": ">=0.8.19" 6085 + } 6086 + }, 4976 6087 "node_modules/inflight": { 4977 6088 "version": "1.0.6", 4978 6089 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", ··· 5094 6205 "node": ">=0.12.0" 5095 6206 } 5096 6207 }, 6208 + "node_modules/is-path-inside": { 6209 + "version": "3.0.3", 6210 + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 6211 + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", 6212 + "dev": true, 6213 + "engines": { 6214 + "node": ">=8" 6215 + } 6216 + }, 5097 6217 "node_modules/is-plain-object": { 5098 6218 "version": "2.0.4", 5099 6219 "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", ··· 5222 6342 "js-yaml": "bin/js-yaml.js" 5223 6343 } 5224 6344 }, 6345 + "node_modules/json-buffer": { 6346 + "version": "3.0.1", 6347 + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 6348 + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", 6349 + "dev": true 6350 + }, 5225 6351 "node_modules/json-parse-even-better-errors": { 5226 6352 "version": "2.3.1", 5227 6353 "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", ··· 5234 6360 "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 5235 6361 "dev": true 5236 6362 }, 6363 + "node_modules/json-stable-stringify-without-jsonify": { 6364 + "version": "1.0.1", 6365 + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 6366 + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 6367 + "dev": true 6368 + }, 5237 6369 "node_modules/json5": { 5238 6370 "version": "2.2.3", 5239 6371 "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", ··· 5255 6387 "graceful-fs": "^4.1.6" 5256 6388 } 5257 6389 }, 6390 + "node_modules/keyv": { 6391 + "version": "4.5.4", 6392 + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", 6393 + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", 6394 + "dev": true, 6395 + "dependencies": { 6396 + "json-buffer": "3.0.1" 6397 + } 6398 + }, 5258 6399 "node_modules/kind-of": { 5259 6400 "version": "6.0.3", 5260 6401 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", ··· 5269 6410 "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", 5270 6411 "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", 5271 6412 "dev": true 6413 + }, 6414 + "node_modules/levn": { 6415 + "version": "0.4.1", 6416 + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 6417 + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 6418 + "dev": true, 6419 + "dependencies": { 6420 + "prelude-ls": "^1.2.1", 6421 + "type-check": "~0.4.0" 6422 + }, 6423 + "engines": { 6424 + "node": ">= 0.8.0" 6425 + } 5272 6426 }, 5273 6427 "node_modules/lightningcss": { 5274 6428 "version": "1.23.0", ··· 5580 6734 "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", 5581 6735 "dev": true 5582 6736 }, 6737 + "node_modules/lodash.merge": { 6738 + "version": "4.6.2", 6739 + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 6740 + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 6741 + "dev": true 6742 + }, 5583 6743 "node_modules/lodash.sortby": { 5584 6744 "version": "4.7.0", 5585 6745 "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", ··· 5792 6952 "engines": { 5793 6953 "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 5794 6954 } 6955 + }, 6956 + "node_modules/natural-compare": { 6957 + "version": "1.4.0", 6958 + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 6959 + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 6960 + "dev": true 5795 6961 }, 5796 6962 "node_modules/neo-async": { 5797 6963 "version": "2.6.2", ··· 6021 7187 "url": "https://github.com/sponsors/sindresorhus" 6022 7188 } 6023 7189 }, 7190 + "node_modules/optionator": { 7191 + "version": "0.9.3", 7192 + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", 7193 + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", 7194 + "dev": true, 7195 + "dependencies": { 7196 + "@aashutoshrathi/word-wrap": "^1.2.3", 7197 + "deep-is": "^0.1.3", 7198 + "fast-levenshtein": "^2.0.6", 7199 + "levn": "^0.4.1", 7200 + "prelude-ls": "^1.2.1", 7201 + "type-check": "^0.4.0" 7202 + }, 7203 + "engines": { 7204 + "node": ">= 0.8.0" 7205 + } 7206 + }, 6024 7207 "node_modules/ordered-binary": { 6025 7208 "version": "1.5.1", 6026 7209 "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.5.1.tgz", ··· 6138 7321 "dev": true, 6139 7322 "engines": { 6140 7323 "node": ">=8" 7324 + } 7325 + }, 7326 + "node_modules/path-is-absolute": { 7327 + "version": "1.0.1", 7328 + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 7329 + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 7330 + "dev": true, 7331 + "engines": { 7332 + "node": ">=0.10.0" 6141 7333 } 6142 7334 }, 6143 7335 "node_modules/path-key": { ··· 6346 7538 "node": ">=12" 6347 7539 } 6348 7540 }, 7541 + "node_modules/prelude-ls": { 7542 + "version": "1.2.1", 7543 + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 7544 + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 7545 + "dev": true, 7546 + "engines": { 7547 + "node": ">= 0.8.0" 7548 + } 7549 + }, 6349 7550 "node_modules/publint": { 6350 7551 "version": "0.2.7", 6351 7552 "resolved": "https://registry.npmjs.org/publint/-/publint-0.2.7.tgz", ··· 6517 7718 "node": ">=0.10.0" 6518 7719 } 6519 7720 }, 7721 + "node_modules/rimraf": { 7722 + "version": "3.0.2", 7723 + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 7724 + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 7725 + "dev": true, 7726 + "dependencies": { 7727 + "glob": "^7.1.3" 7728 + }, 7729 + "bin": { 7730 + "rimraf": "bin.js" 7731 + }, 7732 + "funding": { 7733 + "url": "https://github.com/sponsors/isaacs" 7734 + } 7735 + }, 7736 + "node_modules/rimraf/node_modules/brace-expansion": { 7737 + "version": "1.1.11", 7738 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 7739 + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 7740 + "dev": true, 7741 + "dependencies": { 7742 + "balanced-match": "^1.0.0", 7743 + "concat-map": "0.0.1" 7744 + } 7745 + }, 7746 + "node_modules/rimraf/node_modules/glob": { 7747 + "version": "7.2.3", 7748 + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 7749 + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 7750 + "dev": true, 7751 + "dependencies": { 7752 + "fs.realpath": "^1.0.0", 7753 + "inflight": "^1.0.4", 7754 + "inherits": "2", 7755 + "minimatch": "^3.1.1", 7756 + "once": "^1.3.0", 7757 + "path-is-absolute": "^1.0.0" 7758 + }, 7759 + "engines": { 7760 + "node": "*" 7761 + }, 7762 + "funding": { 7763 + "url": "https://github.com/sponsors/isaacs" 7764 + } 7765 + }, 7766 + "node_modules/rimraf/node_modules/minimatch": { 7767 + "version": "3.1.2", 7768 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 7769 + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 7770 + "dev": true, 7771 + "dependencies": { 7772 + "brace-expansion": "^1.1.7" 7773 + }, 7774 + "engines": { 7775 + "node": "*" 7776 + } 7777 + }, 6520 7778 "node_modules/rollup": { 6521 7779 "version": "4.9.5", 6522 7780 "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.5.tgz", ··· 7036 8294 "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 7037 8295 "dev": true 7038 8296 }, 8297 + "node_modules/text-table": { 8298 + "version": "0.2.0", 8299 + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 8300 + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 8301 + "dev": true 8302 + }, 7039 8303 "node_modules/thenify": { 7040 8304 "version": "3.3.1", 7041 8305 "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", ··· 7091 8355 "dev": true, 7092 8356 "bin": { 7093 8357 "tree-kill": "cli.js" 8358 + } 8359 + }, 8360 + "node_modules/ts-api-utils": { 8361 + "version": "1.3.0", 8362 + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", 8363 + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", 8364 + "dev": true, 8365 + "engines": { 8366 + "node": ">=16" 8367 + }, 8368 + "peerDependencies": { 8369 + "typescript": ">=4.2.0" 7094 8370 } 7095 8371 }, 7096 8372 "node_modules/ts-interface-checker": { ··· 7204 8480 "node": ">= 8" 7205 8481 } 7206 8482 }, 8483 + "node_modules/type-check": { 8484 + "version": "0.4.0", 8485 + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 8486 + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 8487 + "dev": true, 8488 + "dependencies": { 8489 + "prelude-ls": "^1.2.1" 8490 + }, 8491 + "engines": { 8492 + "node": ">= 0.8.0" 8493 + } 8494 + }, 7207 8495 "node_modules/type-fest": { 7208 8496 "version": "0.20.2", 7209 8497 "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", ··· 7227 8515 }, 7228 8516 "engines": { 7229 8517 "node": ">=14.17" 8518 + } 8519 + }, 8520 + "node_modules/typescript-eslint": { 8521 + "version": "7.7.1", 8522 + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-7.7.1.tgz", 8523 + "integrity": "sha512-ykEBfa3xx3odjZy6GRED4SCPrjo0rgHwstLlEgLX4EMEuv7QeIDSmfV+S6Kk+XkbsYn4BDEcPvsci1X26lRpMQ==", 8524 + "dev": true, 8525 + "dependencies": { 8526 + "@typescript-eslint/eslint-plugin": "7.7.1", 8527 + "@typescript-eslint/parser": "7.7.1", 8528 + "@typescript-eslint/utils": "7.7.1" 8529 + }, 8530 + "engines": { 8531 + "node": "^18.18.0 || >=20.0.0" 8532 + }, 8533 + "funding": { 8534 + "type": "opencollective", 8535 + "url": "https://opencollective.com/typescript-eslint" 8536 + }, 8537 + "peerDependencies": { 8538 + "eslint": "^8.56.0" 8539 + }, 8540 + "peerDependenciesMeta": { 8541 + "typescript": { 8542 + "optional": true 8543 + } 7230 8544 } 7231 8545 }, 7232 8546 "node_modules/undici-types": { ··· 7706 9020 "dev": true, 7707 9021 "engines": { 7708 9022 "node": ">= 14" 9023 + } 9024 + }, 9025 + "node_modules/yocto-queue": { 9026 + "version": "0.1.0", 9027 + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 9028 + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 9029 + "dev": true, 9030 + "engines": { 9031 + "node": ">=10" 9032 + }, 9033 + "funding": { 9034 + "url": "https://github.com/sponsors/sindresorhus" 7709 9035 } 7710 9036 }, 7711 9037 "node_modules/z-schema": {
+9 -1
package.json
··· 1 1 { 2 2 "private": true, 3 + "type": "module", 3 4 "workspaces": [ 4 5 "libs/*" 5 6 ], 6 7 "scripts": { 7 8 "build": "npm run build -ws --if-present", 8 9 "clean": "rm -rf ./node_modules && rm -rf ./package-lock.json", 10 + "lint": "eslint .", 11 + "lint:fix": "npm run lint -- --fix", 9 12 "publint": "npm run publint -ws --if-present" 10 13 }, 11 14 "devDependencies": { 12 - "publint": "^0.2.7" 15 + "@eslint/js": "^9.1.1", 16 + "@stylistic/eslint-plugin": "^1.7.2", 17 + "eslint": "^8.57.0", 18 + "globals": "^15.0.0", 19 + "publint": "^0.2.7", 20 + "typescript-eslint": "^7.7.1" 13 21 } 14 22 }