diff --git a/web/storagenode/.eslintignore b/web/storagenode/.eslintignore new file mode 100644 index 000000000..007ea8a7c --- /dev/null +++ b/web/storagenode/.eslintignore @@ -0,0 +1,3 @@ +dist +node_modules +coverage diff --git a/web/storagenode/.eslintrc.js b/web/storagenode/.eslintrc.js index cad871f45..d64cd49e9 100644 --- a/web/storagenode/.eslintrc.js +++ b/web/storagenode/.eslintrc.js @@ -4,48 +4,108 @@ module.exports = { root: true, env: { - node: true + node: true, }, extends: [ 'plugin:vue/recommended', 'eslint:recommended', '@vue/typescript/recommended', + 'plugin:import/recommended', + 'plugin:import/typescript', ], + parser: 'vue-eslint-parser', parserOptions: { - ecmaVersion: 2020 + parser: '@typescript-eslint/parser', + sourceType: 'module', + ecmaVersion: 2020, + vueFeatures: { + filter: true, + }, }, - plugins: ["storj"], + plugins: ['storj', 'eslint-plugin-import'], rules: { - "linebreak-style": ["error", "unix"], + 'linebreak-style': ['error', 'unix'], 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', - "indent": ["warn", 4], - "vue/html-indent": ["warn", 4], + 'indent': ['warn', 4], + 'vue/html-indent': ['warn', 4], - "@typescript-eslint/no-unused-vars": [ - "warn", { - "vars": "all", - "args": "all", - "argsIgnorePattern": "^_" + '@typescript-eslint/no-unused-vars': [ + 'warn', { + 'vars': 'all', + 'args': 'all', + 'argsIgnorePattern': '^_', }], - '@typescript-eslint/no-empty-function': "off", - '@typescript-eslint/no-var-requires': "off", + '@typescript-eslint/no-empty-function': 'off', + '@typescript-eslint/no-var-requires': 'off', - "vue/multi-word-component-names": ["off"], - "vue/max-attributes-per-line": ["off"], - "vue/singleline-html-element-content-newline": ["off"], + 'no-multiple-empty-lines': ['error', { 'max': 1 }], - "vue/block-lang": ["error", {"script": {"lang": "ts"}}], - "vue/html-button-has-type": ["error"], - "vue/no-unused-properties": ["warn"], - "vue/no-unused-refs": ["warn"], - "vue/no-useless-v-bind": ["warn"], + 'import/order': ['error', { + 'pathGroups': [ + { + 'group': 'external', + 'pattern': 'vue-property-decorator', + 'position': 'before', + }, + { + 'group': 'internal', + 'pattern': '@/app/components/**', + 'position': 'after', + }, + { + 'group': 'internal', + 'pattern': '@/../static/**', + 'position': 'after', + }, + ], + 'newlines-between': 'always', + }], + 'no-duplicate-imports': 'error', + 'object-curly-spacing': ['error', 'always'], + 'quotes': ['error', 'single', { 'allowTemplateLiterals': true }], + 'semi': ['error', 'always'], + 'keyword-spacing': ['error'], + 'comma-dangle': ['error', 'always-multiline'], + + 'vue/multi-word-component-names': ['off'], + 'vue/max-attributes-per-line': ['off'], + 'vue/singleline-html-element-content-newline': ['off'], + + 'vue/block-lang': ['error', { 'script': { 'lang': 'ts' } }], + 'vue/html-button-has-type': ['error'], + 'vue/no-unused-properties': ['warn'], + 'vue/no-unused-refs': ['warn'], + 'vue/no-useless-v-bind': ['warn'], + + 'vue/no-useless-template-attributes': ['off'], // TODO: fix later 'vue/no-unregistered-components': ['warn', { ignorePatterns: ['router-link', 'router-view'] }], 'storj/vue/require-annotation': 'warn', + + 'vue/no-v-html': 0, }, -} \ No newline at end of file + settings: { + 'import/resolver': { + 'eslint-import-resolver-custom-alias': { + 'alias': { + '@': './src', + }, + extensions: ['.ts', '.spec.ts', '.vue'], + }, + typescript: { + alwaysTryTypes: true, + project: './tsconfig.json', + }, + node: true, + }, + 'import/parsers': { + '@typescript-eslint/parser': ['.ts'], + 'vue-eslint-parser': ['.vue'], + }, + }, +}; \ No newline at end of file diff --git a/web/storagenode/.stylelintrc.js b/web/storagenode/.stylelintrc.js index d353911dd..ee9f6b785 100644 --- a/web/storagenode/.stylelintrc.js +++ b/web/storagenode/.stylelintrc.js @@ -2,52 +2,52 @@ // See LICENSE for copying information. module.exports = { - "env": { - "es2020": true, - "node": true, - "jest": true + 'env': { + 'es2020': true, + 'node': true, + 'jest': true, }, - "plugins": [ - "stylelint-scss" + 'plugins': [ + 'stylelint-scss', ], - "extends": "stylelint-config-standard-vue/scss", - "customSyntax": "postcss-html", - "rules": { - "indentation": 4, - "string-quotes": "single", - "no-duplicate-selectors": true, - "selector-max-attribute": 1, - "selector-combinator-space-after": "always", - "selector-attribute-operator-space-before": "never", - "selector-attribute-operator-space-after": "never", - "selector-attribute-brackets-space-inside": "never", - "declaration-block-trailing-semicolon": "always", - "declaration-colon-space-before": "never", - "declaration-colon-space-after": "always", - "number-leading-zero": "always", - "function-url-quotes": "always", - "font-family-name-quotes": "always-unless-keyword", - "comment-whitespace-inside": "always", - "comment-empty-line-before": "always", - "rule-empty-line-before": "always-multi-line", - "selector-pseudo-element-colon-notation": "single", - "selector-pseudo-class-parentheses-space-inside": "never", - "selector-max-type": 3, - "font-family-no-missing-generic-family-keyword": true, - "at-rule-no-unknown": null, - "scss/at-rule-no-unknown": true, - "media-feature-range-operator-space-before": "always", - "media-feature-range-operator-space-after": "always", - "media-feature-parentheses-space-inside": "never", - "media-feature-colon-space-before": "never", - "media-feature-colon-space-after": "always", - "selector-pseudo-element-no-unknown": [ + 'extends': 'stylelint-config-standard-vue/scss', + 'customSyntax': 'postcss-html', + 'rules': { + 'indentation': 4, + 'string-quotes': 'single', + 'no-duplicate-selectors': true, + 'selector-max-attribute': 1, + 'selector-combinator-space-after': 'always', + 'selector-attribute-operator-space-before': 'never', + 'selector-attribute-operator-space-after': 'never', + 'selector-attribute-brackets-space-inside': 'never', + 'declaration-block-trailing-semicolon': 'always', + 'declaration-colon-space-before': 'never', + 'declaration-colon-space-after': 'always', + 'number-leading-zero': 'always', + 'function-url-quotes': 'always', + 'font-family-name-quotes': 'always-unless-keyword', + 'comment-whitespace-inside': 'always', + 'comment-empty-line-before': 'always', + 'rule-empty-line-before': 'always-multi-line', + 'selector-pseudo-element-colon-notation': 'single', + 'selector-pseudo-class-parentheses-space-inside': 'never', + 'selector-max-type': 3, + 'font-family-no-missing-generic-family-keyword': true, + 'at-rule-no-unknown': null, + 'scss/at-rule-no-unknown': true, + 'media-feature-range-operator-space-before': 'always', + 'media-feature-range-operator-space-after': 'always', + 'media-feature-parentheses-space-inside': 'never', + 'media-feature-colon-space-before': 'never', + 'media-feature-colon-space-after': 'always', + 'selector-pseudo-element-no-unknown': [ true, { - "ignorePseudoElements": ["v-deep"] - } + 'ignorePseudoElements': ['v-deep'], + }, ], - "selector-class-pattern": ".*", - "custom-property-pattern": ".*", - } -} + 'selector-class-pattern': '.*', + 'custom-property-pattern': '.*', + }, +}; diff --git a/web/storagenode/jest.config.js b/web/storagenode/jest.config.js index c5437e449..1a85a39b7 100644 --- a/web/storagenode/jest.config.js +++ b/web/storagenode/jest.config.js @@ -3,9 +3,9 @@ module.exports = { preset: '@vue/cli-plugin-unit-jest/presets/typescript', - setupFiles: ["./jest.setup.ts"], + setupFiles: ['./jest.setup.ts'], testEnvironment: 'jsdom', transform: { - "^.+\\.svg$": "/tests/unit/mock/svgTransform.js" - } -} \ No newline at end of file + '^.+\\.svg$': '/tests/unit/mock/svgTransform.js', + }, +}; \ No newline at end of file diff --git a/web/storagenode/package-lock.json b/web/storagenode/package-lock.json index 2a351bf0c..5f06ce820 100644 --- a/web/storagenode/package-lock.json +++ b/web/storagenode/package-lock.json @@ -34,7 +34,9 @@ "babel-jest": "27.5.1", "compression-webpack-plugin": "9.2.0", "eslint": "8.14.0", - "eslint-plugin-import": "2.25.4", + "eslint-import-resolver-custom-alias": "1.3.0", + "eslint-import-resolver-typescript": "2.7.1", + "eslint-plugin-import": "2.26.0", "eslint-plugin-storj": "0.0.2", "eslint-plugin-vue": "8.7.1", "jest": "27.5.1", @@ -49,6 +51,7 @@ "stylelint-scss": "4.2.0", "ts-jest": "27.1.4", "typescript": "4.6.4", + "vue-eslint-parser": "9.0.3", "vue-svg-loader": "0.17.0-beta.2", "vue-template-compiler": "2.7.10" } @@ -3893,6 +3896,67 @@ "eslint-plugin-vue": "^8.0.1" } }, + "node_modules/@vue/eslint-config-typescript/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@vue/eslint-config-typescript/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@vue/eslint-config-typescript/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/eslint-config-typescript/node_modules/vue-eslint-parser": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz", + "integrity": "sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==", + "dev": true, + "dependencies": { + "debug": "^4.3.2", + "eslint-scope": "^7.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.0.0", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, "node_modules/@vue/test-utils": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-1.3.0.tgz", @@ -7083,6 +7147,31 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint-import-resolver-custom-alias": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-custom-alias/-/eslint-import-resolver-custom-alias-1.3.0.tgz", + "integrity": "sha512-9rrpduF6/SZHFXrJgjeA+edJek6xulplYfo/UJvLPrY38O9UY00rAq76dHRnZ289yftc5NIfx3THi0IILRQ3dg==", + "dev": true, + "dependencies": { + "glob-parent": "^5.1.0", + "resolve": "^1.3.0" + }, + "peerDependencies": { + "eslint-plugin-import": ">=2.2.0" + } + }, + "node_modules/eslint-import-resolver-custom-alias/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/eslint-import-resolver-node": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", @@ -7102,6 +7191,26 @@ "ms": "^2.1.1" } }, + "node_modules/eslint-import-resolver-typescript": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz", + "integrity": "sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "glob": "^7.2.0", + "is-glob": "^4.0.3", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" + } + }, "node_modules/eslint-module-utils": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", @@ -7192,9 +7301,9 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", - "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==", + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", "dev": true, "dependencies": { "array-includes": "^3.1.4", @@ -7202,14 +7311,14 @@ "debug": "^2.6.9", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.2", + "eslint-module-utils": "^2.7.3", "has": "^1.0.3", - "is-core-module": "^2.8.0", + "is-core-module": "^2.8.1", "is-glob": "^4.0.3", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "object.values": "^1.1.5", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.12.0" + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" }, "engines": { "node": ">=4" @@ -7270,6 +7379,28 @@ "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/eslint-plugin-vue/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-plugin-vue/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/eslint-plugin-vue/node_modules/semver": { "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", @@ -7285,6 +7416,30 @@ "node": ">=10" } }, + "node_modules/eslint-plugin-vue/node_modules/vue-eslint-parser": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz", + "integrity": "sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==", + "dev": true, + "dependencies": { + "debug": "^4.3.2", + "eslint-scope": "^7.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.0.0", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -16728,21 +16883,21 @@ } }, "node_modules/vue-eslint-parser": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz", - "integrity": "sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.0.3.tgz", + "integrity": "sha512-yL+ZDb+9T0ELG4VIFo/2anAOz8SvBdlqEnQnvJ3M7Scq56DvtjY0VY88bByRZB0D4J0u8olBcfrXTVONXsh4og==", "dev": true, "dependencies": { - "debug": "^4.3.2", - "eslint-scope": "^7.0.0", - "eslint-visitor-keys": "^3.1.0", - "espree": "^9.0.0", + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", "esquery": "^1.4.0", "lodash": "^4.17.21", - "semver": "^7.3.5" + "semver": "^7.3.6" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^14.17.0 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/mysticatea" @@ -20799,6 +20954,48 @@ "@typescript-eslint/eslint-plugin": "^5.0.0", "@typescript-eslint/parser": "^5.0.0", "vue-eslint-parser": "^8.0.0" + }, + "dependencies": { + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "vue-eslint-parser": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz", + "integrity": "sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==", + "dev": true, + "requires": { + "debug": "^4.3.2", + "eslint-scope": "^7.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.0.0", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.5" + } + } } }, "@vue/test-utils": { @@ -23319,6 +23516,27 @@ } } }, + "eslint-import-resolver-custom-alias": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-custom-alias/-/eslint-import-resolver-custom-alias-1.3.0.tgz", + "integrity": "sha512-9rrpduF6/SZHFXrJgjeA+edJek6xulplYfo/UJvLPrY38O9UY00rAq76dHRnZ289yftc5NIfx3THi0IILRQ3dg==", + "dev": true, + "requires": { + "glob-parent": "^5.1.0", + "resolve": "^1.3.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, "eslint-import-resolver-node": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", @@ -23340,6 +23558,19 @@ } } }, + "eslint-import-resolver-typescript": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz", + "integrity": "sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==", + "dev": true, + "requires": { + "debug": "^4.3.4", + "glob": "^7.2.0", + "is-glob": "^4.0.3", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + } + }, "eslint-module-utils": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", @@ -23411,9 +23642,9 @@ } }, "eslint-plugin-import": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", - "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==", + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", "dev": true, "requires": { "array-includes": "^3.1.4", @@ -23421,14 +23652,14 @@ "debug": "^2.6.9", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.2", + "eslint-module-utils": "^2.7.3", "has": "^1.0.3", - "is-core-module": "^2.8.0", + "is-core-module": "^2.8.1", "is-glob": "^4.0.3", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "object.values": "^1.1.5", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.12.0" + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" }, "dependencies": { "debug": { @@ -23476,6 +23707,22 @@ "vue-eslint-parser": "^8.0.1" }, "dependencies": { + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, "semver": { "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", @@ -23484,6 +23731,21 @@ "requires": { "lru-cache": "^6.0.0" } + }, + "vue-eslint-parser": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz", + "integrity": "sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==", + "dev": true, + "requires": { + "debug": "^4.3.2", + "eslint-scope": "^7.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.0.0", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.5" + } } } }, @@ -30354,18 +30616,18 @@ } }, "vue-eslint-parser": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz", - "integrity": "sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.0.3.tgz", + "integrity": "sha512-yL+ZDb+9T0ELG4VIFo/2anAOz8SvBdlqEnQnvJ3M7Scq56DvtjY0VY88bByRZB0D4J0u8olBcfrXTVONXsh4og==", "dev": true, "requires": { - "debug": "^4.3.2", - "eslint-scope": "^7.0.0", - "eslint-visitor-keys": "^3.1.0", - "espree": "^9.0.0", + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", "esquery": "^1.4.0", "lodash": "^4.17.21", - "semver": "^7.3.5" + "semver": "^7.3.6" }, "dependencies": { "eslint-scope": { diff --git a/web/storagenode/package.json b/web/storagenode/package.json index 54e376357..2d93200d7 100644 --- a/web/storagenode/package.json +++ b/web/storagenode/package.json @@ -37,7 +37,9 @@ "babel-jest": "27.5.1", "compression-webpack-plugin": "9.2.0", "eslint": "8.14.0", - "eslint-plugin-import": "2.25.4", + "eslint-import-resolver-custom-alias": "1.3.0", + "eslint-import-resolver-typescript": "2.7.1", + "eslint-plugin-import": "2.26.0", "eslint-plugin-storj": "0.0.2", "eslint-plugin-vue": "8.7.1", "jest": "27.5.1", @@ -52,6 +54,7 @@ "stylelint-scss": "4.2.0", "ts-jest": "27.1.4", "typescript": "4.6.4", + "vue-eslint-parser": "9.0.3", "vue-svg-loader": "0.17.0-beta.2", "vue-template-compiler": "2.7.10" }, diff --git a/web/storagenode/src/app/components/AllSatellitesAuditsArea.vue b/web/storagenode/src/app/components/AllSatellitesAuditsArea.vue index e9def33fe..eb44995fa 100644 --- a/web/storagenode/src/app/components/AllSatellitesAuditsArea.vue +++ b/web/storagenode/src/app/components/AllSatellitesAuditsArea.vue @@ -33,10 +33,10 @@ diff --git a/web/storagenode/src/app/components/SNOContentFilling.vue b/web/storagenode/src/app/components/SNOContentFilling.vue index f4751c670..316d0fce6 100644 --- a/web/storagenode/src/app/components/SNOContentFilling.vue +++ b/web/storagenode/src/app/components/SNOContentFilling.vue @@ -163,6 +163,11 @@ diff --git a/web/storagenode/src/app/components/payments/HeldHistoryMonthlyBreakdownTable.vue b/web/storagenode/src/app/components/payments/HeldHistoryMonthlyBreakdownTable.vue index 422e096ca..dde2d6182 100644 --- a/web/storagenode/src/app/components/payments/HeldHistoryMonthlyBreakdownTable.vue +++ b/web/storagenode/src/app/components/payments/HeldHistoryMonthlyBreakdownTable.vue @@ -47,11 +47,11 @@ diff --git a/web/storagenode/src/app/components/payments/PayoutHistoryPeriodCalendar.vue b/web/storagenode/src/app/components/payments/PayoutHistoryPeriodCalendar.vue index 9fd1e49af..75dfaf115 100644 --- a/web/storagenode/src/app/components/payments/PayoutHistoryPeriodCalendar.vue +++ b/web/storagenode/src/app/components/payments/PayoutHistoryPeriodCalendar.vue @@ -35,8 +35,6 @@