From 18e8297abf398439e65fa9ab61a10b1d58e9b1ca Mon Sep 17 00:00:00 2001 From: Dominik Pschenitschni Date: Wed, 11 May 2022 01:31:31 +0200 Subject: [PATCH 01/10] chore: remove unused import --- src/composables/useNamespaceSearch.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/composables/useNamespaceSearch.ts b/src/composables/useNamespaceSearch.ts index bce739405..35c8b54f7 100644 --- a/src/composables/useNamespaceSearch.ts +++ b/src/composables/useNamespaceSearch.ts @@ -1,4 +1,4 @@ -import {ref, computed, Ref} from 'vue' +import {ref, computed} from 'vue' import {useStore} from 'vuex' export function useNameSpaceSearch() { -- 2.40.1 From df866b30f09bc3b9b86bb9b54c5ca49463e3197d Mon Sep 17 00:00:00 2001 From: Dominik Pschenitschni Date: Tue, 8 Feb 2022 12:03:53 +0100 Subject: [PATCH 02/10] feat: move eslint config to external file to support comments --- .eslintrc.js | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 46 ---------------------------------------------- 2 files changed, 51 insertions(+), 46 deletions(-) create mode 100644 .eslintrc.js diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 000000000..01274e105 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,51 @@ +module.exports = { + 'root': true, + 'env': { + 'browser': true, + 'es2021': true, + 'node': true, + 'vue/setup-compiler-macros': true, + }, + 'extends': [ + 'eslint:recommended', + 'plugin:vue/vue3-essential', + '@vue/typescript', + ], + 'rules': { + 'vue/html-quotes': [ + 'error', + 'double', + ], + 'quotes': [ + 'error', + 'single', + ], + 'comma-dangle': [ + 'error', + 'always-multiline', + ], + 'semi': [ + 'error', + 'never', + ], + 'vue/script-setup-uses-vars': 'error', + + // see https://segmentfault.com/q/1010000040813116/a-1020000041134455 (original in chinese) + 'no-unused-vars': 'off', + '@typescript-eslint/no-unused-vars': ['error', { vars: 'all', args: 'after-used', ignoreRestSiblings: true }], + + 'vue/multi-word-component-names': 0, + }, + 'parser': 'vue-eslint-parser', + 'parserOptions': { + 'parser': '@typescript-eslint/parser', + 'ecmaVersion': 2022, + }, + 'ignorePatterns': [ + '*.test.*', + 'cypress/*', + ], + 'globals': { + 'defineProps': 'readonly', + }, +} \ No newline at end of file diff --git a/package.json b/package.json index 4a881168e..57ead223e 100644 --- a/package.json +++ b/package.json @@ -92,52 +92,6 @@ "wait-on": "6.0.1", "workbox-cli": "6.5.3" }, - "eslintConfig": { - "root": true, - "env": { - "browser": true, - "es2021": true, - "node": true, - "vue/setup-compiler-macros": true - }, - "extends": [ - "eslint:recommended", - "plugin:vue/vue3-essential", - "@vue/typescript" - ], - "rules": { - "vue/html-quotes": [ - "error", - "double" - ], - "quotes": [ - "error", - "single" - ], - "comma-dangle": [ - "error", - "always-multiline" - ], - "semi": [ - "error", - "never" - ], - "vue/script-setup-uses-vars": "error", - "vue/multi-word-component-names": 0 - }, - "parser": "vue-eslint-parser", - "parserOptions": { - "parser": "@typescript-eslint/parser", - "ecmaVersion": 2022 - }, - "ignorePatterns": [ - "*.test.*", - "cypress/*" - ], - "globals": { - "defineProps": "readonly" - } - }, "postcss": { "plugins": { "autoprefixer": {} -- 2.40.1 From 3f1caebcd915da8e9a9804e780afeb5fff1fafe3 Mon Sep 17 00:00:00 2001 From: Dominik Pschenitschni Date: Sun, 10 Apr 2022 02:40:15 +0200 Subject: [PATCH 03/10] feat: improve ts setup --- .vscode.example/settings.json | 4 +- crowdin.cli | 0 env.d.ts | 2 + package.json | 6 +- src/main.ts | 8 -- src/types/vite-svg-loader.d.ts | 1 - src/types/vite.d.ts | 1 - src/types/window.d.ts | 7 ++ tsconfig.app.json | 19 +++ tsconfig.json | 51 ++------- tsconfig.vite-config.json | 8 ++ tsconfig.vitest.json | 9 ++ vite.config.ts | 20 ++-- yarn.lock | 203 ++++++++++++++++++++------------- 14 files changed, 195 insertions(+), 144 deletions(-) create mode 100644 crowdin.cli create mode 100644 env.d.ts delete mode 100644 src/types/vite-svg-loader.d.ts delete mode 100644 src/types/vite.d.ts create mode 100644 tsconfig.app.json create mode 100644 tsconfig.vite-config.json create mode 100644 tsconfig.vitest.json diff --git a/.vscode.example/settings.json b/.vscode.example/settings.json index 110c8221a..9a7ba8709 100644 --- a/.vscode.example/settings.json +++ b/.vscode.example/settings.json @@ -18,13 +18,11 @@ "javascriptreact", "vue" ], - "vetur.validation.template": false, - // i18n ally "i18n-ally.localesPaths": [ "src/i18n/lang" ], "i18n-ally.sortKeys": true, "i18n-ally.keepFulfilled": true, - "i18n-ally.keystyle": "nested", + "i18n-ally.keystyle": "nested" } \ No newline at end of file diff --git a/crowdin.cli b/crowdin.cli new file mode 100644 index 000000000..e69de29bb diff --git a/env.d.ts b/env.d.ts new file mode 100644 index 000000000..8cee15171 --- /dev/null +++ b/env.d.ts @@ -0,0 +1,2 @@ +/// +/// diff --git a/package.json b/package.json index 57ead223e..1b9f581d8 100644 --- a/package.json +++ b/package.json @@ -9,12 +9,12 @@ "build": "vite build && workbox copyLibraries dist/", "build:modern-only": "BUILD_MODERN_ONLY=true vite build && workbox copyLibraries dist/", "build:dev": "vite build -m development --outDir dist-dev/", - "typecheck": "vue-tsc --noEmit", "lint": "eslint --ignore-pattern '*.test.*' ./src --ext .vue,.js,.ts", "cypress:open": "cypress open", - "test:unit": "vitest run", + "test:unit": "vitest", "test:unit-watch": "vitest watch", "test:frontend": "cypress run", + "typecheck": "vue-tsc --noEmit && vue-tsc --noEmit -p tsconfig.vitest.json --composite false", "browserslist:update": "npx browserslist@latest --update-db" }, "dependencies": { @@ -67,6 +67,8 @@ "@vitejs/plugin-legacy": "1.8.2", "@vitejs/plugin-vue": "2.3.3", "@vue/eslint-config-typescript": "11.0.0", + "@vue/test-utils": "2.0.0-rc.18", + "@vue/tsconfig": "0.1.3", "autoprefixer": "10.4.7", "axios": "0.27.2", "browserslist": "4.21.1", diff --git a/src/main.ts b/src/main.ts index 783fd9ecc..70f908956 100644 --- a/src/main.ts +++ b/src/main.ts @@ -5,14 +5,6 @@ import router from './router' import {error, success} from './message' -declare global { - interface Window { - API_URL: string; - SENTRY_ENABLED: boolean; - SENTRY_DSN: string; - } -} - import {formatDate, formatDateShort, formatDateLong, formatDateSince, formatISO} from '@/helpers/time/formatDate' // @ts-ignore import {VERSION} from './version.json' diff --git a/src/types/vite-svg-loader.d.ts b/src/types/vite-svg-loader.d.ts deleted file mode 100644 index 53b8d1d6d..000000000 --- a/src/types/vite-svg-loader.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// \ No newline at end of file diff --git a/src/types/vite.d.ts b/src/types/vite.d.ts deleted file mode 100644 index 151aa6856..000000000 --- a/src/types/vite.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// \ No newline at end of file diff --git a/src/types/window.d.ts b/src/types/window.d.ts index e69de29bb..a4ce4358e 100644 --- a/src/types/window.d.ts +++ b/src/types/window.d.ts @@ -0,0 +1,7 @@ +declare global { + interface Window { + API_URL: string; + SENTRY_ENABLED: boolean; + SENTRY_DSN: string; + } +} \ No newline at end of file diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 000000000..28b6e4ce0 --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,19 @@ +{ + "extends": "@vue/tsconfig/tsconfig.web.json", + "include": ["env.d.ts", "src/**/*", "src/**/*.vue"], + "exclude": ["src/**/__tests__/*"], + "compilerOptions": { + "composite": true, + "baseUrl": ".", + + // "importHelpers": true, + // "allowJs": true, + // "allowSyntheticDefaultImports": true, + // "sourceMap": true, + // "strictNullChecks": true, + + "paths": { + "@/*": ["./src/*"] + } + } +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 87945600e..24f21b069 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,43 +1,14 @@ { - "compilerOptions": { - "target": "esnext", - "module": "esnext", - "strict": true, - "jsx": "preserve", - "importHelpers": true, - "moduleResolution": "node", - "allowJs": true, - "skipLibCheck": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "resolveJsonModule": true, - "sourceMap": true, - "baseUrl": ".", - "strictNullChecks": true, - "isolatedModules": true, - "types": [ - "vite/client" - ], - "paths": { - "@/*": [ - "src/*" - ], - "*": [ - "types/*.d.ts" - ] + "files": [], + "references": [ + { + "path": "./tsconfig.vite-config.json" }, - "lib": [ - "esnext", - "dom", - "dom.iterable", - "scripthost" - ] - }, - "include": [ - "src/**/*.ts", - "src/**/*.tsx", - "src/**/*.vue", - "tests/**/*.ts", - "tests/**/*.tsx" - ], + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.vitest.json" + } + ] } diff --git a/tsconfig.vite-config.json b/tsconfig.vite-config.json new file mode 100644 index 000000000..1067b3e55 --- /dev/null +++ b/tsconfig.vite-config.json @@ -0,0 +1,8 @@ +{ + "extends": "@vue/tsconfig/tsconfig.node.json", + "include": ["vite.config.*"], + "compilerOptions": { + "composite": true, + "types": ["node", "vitest"] + } +} \ No newline at end of file diff --git a/tsconfig.vitest.json b/tsconfig.vitest.json new file mode 100644 index 000000000..eb35a1187 --- /dev/null +++ b/tsconfig.vitest.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.app.json", + "exclude": [], + "compilerOptions": { + "composite": true, + "lib": [], + "types": ["node"] + } +} \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts index 55b45f427..2ddc30dda 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -3,12 +3,12 @@ import {defineConfig} from 'vite' import vue from '@vitejs/plugin-vue' import legacyFn from '@vitejs/plugin-legacy' -const {VitePWA} = require('vite-plugin-pwa') -const path = require('path') -const {visualizer} = require('rollup-plugin-visualizer') +import {VitePWA} from 'vite-plugin-pwa' +import {visualizer} from 'rollup-plugin-visualizer' import svgLoader from 'vite-svg-loader' +import { fileURLToPath, URL } from 'url' -const pathSrc = path.resolve(__dirname, './src') +const pathSrc = fileURLToPath(new URL('./src', import.meta.url)) // the @use rules have to be the first in the compiled stylesheets const PREFIXED_SCSS_STYLES = `@use "sass:math"; @@ -22,12 +22,12 @@ const legacy = isModernBuild targets: ['defaults', 'not IE 11'], }) -if (isModernBuild) { - console.log('Building "modern-only" build') -} else { - console.log('Building "legacy" build with "@vitejs/plugin-legacy"') -} +console.log(isModernBuild + ? 'Building "modern-only" build' + : 'Building "legacy" build with "@vitejs/plugin-legacy"' +) +// https://vitejs.dev/config/ export default defineConfig({ // https://vitest.dev/config/ test: { @@ -115,7 +115,7 @@ export default defineConfig({ alias: [ { find: '@', - replacement: path.resolve(__dirname, 'src'), + replacement: pathSrc, }, ], extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'], diff --git a/yarn.lock b/yarn.lock index 3c20ed7b0..b70eace35 100644 --- a/yarn.lock +++ b/yarn.lock @@ -871,9 +871,9 @@ regenerator-runtime "^0.13.4" "@babel/standalone@^7.17.11": - version "7.17.11" - resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.17.11.tgz#9cc17674da762332b2e40d469ce37725a6136487" - integrity sha512-47wVYBeTktYHwtzlFuK7qqV/H5X6mU4MUNqpQ9iiJOqnP8rWL0eX0GWLKRsv8D8suYzhuS1K/dtwgGr+26U7Gg== + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.18.5.tgz#69aeb99edacb55c509895d7fa6131ec9dbda7c6d" + integrity sha512-3RlzTl3JSvbY1bvaRmuHf3fM2BSy7IbX0zqpVFjsiGO7678KE/LytwvJN+f5MGrarnUFUz2DNcCdetumWdIAKA== "@babel/template@^7.14.5": version "7.14.5" @@ -955,6 +955,11 @@ resolved "https://registry.yarnpkg.com/@bugsnag/safe-json-stringify/-/safe-json-stringify-6.0.0.tgz#22abdcd83e008c369902976730c34c150148a758" integrity sha512-htzFO1Zc57S8kgdRK9mLcPVTW1BY2ijfH7Dk2CeZmspTWKdKqSo1iwmqrq2WtRjFlo8aRZYgLX0wFrDXF/9DLA== +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + "@cspotcode/source-map-consumer@0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" @@ -2306,9 +2311,9 @@ integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== "@types/node@^14.14.31": - version "14.17.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.17.6.tgz#cc61c8361c89e70c468cda464d1fa3dd7e5ebd62" - integrity sha512-iBxsxU7eswQDGhlr3AiamBxOssaYxbM+NKXVil8jg9yFXvrfEFbDumLD/2dMTB+zYyg7w+Xjt8yuxfdbUHAtcQ== + version "14.18.21" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.21.tgz#0155ee46f6be28b2ff0342ca1a9b9fd4468bef41" + integrity sha512-x5W9s+8P4XteaxT/jKF0PSb7XEvo5VmqEWgsMlyeY4ZlLK8I6aH6g5TPPyDlLAep+GYf4kefb7HFyc7PAO3m+Q== "@types/node@^16.0.0": version "16.11.21" @@ -2401,9 +2406,9 @@ "@types/yargs-parser" "*" "@types/yauzl@^2.9.1": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.2.tgz#c48e5d56aff1444409e39fa164b0b4d4552a7b7a" - integrity sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA== + version "2.10.0" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599" + integrity sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw== dependencies: "@types/node" "*" @@ -2843,6 +2848,16 @@ resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.37.tgz#8e6adc3f2759af52f0e85863dfb0b711ecc5c702" integrity sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw== +"@vue/test-utils@2.0.0-rc.18": + version "2.0.0-rc.18" + resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-2.0.0-rc.18.tgz#ff22b252424fe72e5462cbb3a8e7405cef11ffb6" + integrity sha512-aifolXjVdsogjaLmDoZ0FU8vN+R67aWmg9OuVeED4w5Ij5GFQLrlhM19uhWe/r5xXUL4fXMk3pX5wW6FJP1NcQ== + +"@vue/tsconfig@0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@vue/tsconfig/-/tsconfig-0.1.3.tgz#4a61dbd29783d01ddab504276dcf0c2b6988654f" + integrity sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg== + "@vueuse/core@8.7.5": version "8.7.5" resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-8.7.5.tgz#e74a888251ea11a9d432068ce18cbdfc4f810251" @@ -3008,9 +3023,9 @@ ansi-align@^3.0.0: string-width "^3.0.0" ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: version "3.2.0" @@ -3258,16 +3273,16 @@ ascii-table@0.0.9: integrity sha1-BqZgTWpV1L9BqaR9mHLXp42jHnM= asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + version "0.2.6" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== dependencies: safer-buffer "~2.1.0" assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== assertion-error@^1.1.0: version "1.1.0" @@ -3339,7 +3354,7 @@ autoprefixer@10.4.7, autoprefixer@^10.4.7: aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== aws4@^1.8.0: version "1.11.0" @@ -3425,7 +3440,7 @@ base@^0.11.1: bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== dependencies: tweetnacl "^0.14.3" @@ -3943,7 +3958,7 @@ check-error@^1.0.2: check-more-types@^2.24.0: version "2.24.0" resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" - integrity sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA= + integrity sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA== "chokidar@>=3.0.0 <4.0.0", chokidar@^3.0.2, chokidar@^3.5.2: version "3.5.2" @@ -3975,11 +3990,16 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -ci-info@^3.0.0, ci-info@^3.1.1: +ci-info@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6" integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A== +ci-info@^3.2.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.2.tgz#6d2967ffa407466481c6c90b6e16b3098f080128" + integrity sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg== + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -4056,13 +4076,13 @@ cli-spinners@^2.5.0: integrity sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q== cli-table3@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.1.tgz#36ce9b7af4847f288d3cdd081fbd09bf7bd237b8" - integrity sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA== + version "0.6.2" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.2.tgz#aaf5df9d8b5bf12634dc8b3040806a0c07120d2a" + integrity sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw== dependencies: string-width "^4.2.0" optionalDependencies: - colors "1.4.0" + "@colors/colors" "1.5.0" cli-truncate@^0.2.1: version "0.2.1" @@ -4186,6 +4206,11 @@ colorette@^1.2.2: resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== +colorette@^2.0.16: + version "2.0.19" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== + colors-option@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/colors-option/-/colors-option-3.0.0.tgz#51f5d0d2b511a01859cdd70eaa9ed43ca4abf108" @@ -4196,7 +4221,7 @@ colors-option@^3.0.0: is-plain-obj "^4.0.0" jest-validate "^27.3.1" -colors@1.4.0, colors@^1.1.2, colors@^1.2.1: +colors@^1.1.2, colors@^1.2.1: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== @@ -4392,14 +4417,14 @@ core-js-compat@^3.14.0, core-js-compat@^3.15.0: semver "7.0.0" core-js@^3.22.3: - version "3.22.3" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.22.3.tgz#498c41d997654cb00e81c7a54b44f0ab21ab01d5" - integrity sha512-1t+2a/d2lppW1gkLXx3pKPVGbBdxXAkqztvWb1EJ8oF8O2gIGiytzflNiFEehYwVK/t2ryUsGBoOFFvNx95mbg== + version "3.23.2" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.23.2.tgz#e07a60ca8b14dd129cabdc3d2551baf5a01c76f0" + integrity sha512-ELJOWxNrJfOH/WK4VJ3Qd+fOqZuOuDNDJz0xG6Bt4mGg2eO/UT9CljCrbqDGovjLKUrGajEEBcoTOc0w+yBYeQ== core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== core-util-is@~1.0.0: version "1.0.3" @@ -4616,7 +4641,7 @@ cypress@10.3.0: dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== dependencies: assert-plus "^1.0.0" @@ -4643,9 +4668,9 @@ date-time@^3.1.0: time-zone "^1.0.0" dayjs@^1.10.4: - version "1.10.6" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.6.tgz#288b2aa82f2d8418a6c9d4df5898c0737ad02a63" - integrity sha512-AztC/IOW4L1Q41A86phW5Thhcrco3xuAA+YX/BLpLWWjRcTj5TOt/QImBLmCKlrF7u7k47arTnOyL6GnbG8Hvw== + version "1.11.3" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.3.tgz#4754eb694a624057b9ad2224b67b15d552589258" + integrity sha512-xxwlswWOlGhzgQ4TKzASQkUhqERI3egRNqgV4ScR8wlANA/A9tZ7miXa44vTTKEq5l7vWoL5G57bG3zA+Kow0A== debounce@^1.2.0: version "1.2.1" @@ -5143,7 +5168,7 @@ easymde@2.16.1: ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== dependencies: jsbn "~0.1.0" safer-buffer "^2.1.0" @@ -5775,9 +5800,9 @@ etag@^1.8.1, etag@~1.8.1: integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= eventemitter2@^6.4.3: - version "6.4.4" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.4.tgz#aa96e8275c4dbeb017a5d0e03780c65612a1202b" - integrity sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw== + version "6.4.5" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.5.tgz#97380f758ae24ac15df8353e0cc27f8b95644655" + integrity sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw== eventemitter3@^4.0.0: version "4.0.7" @@ -6006,12 +6031,12 @@ extract-zip@2.0.1: extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" @@ -6362,7 +6387,7 @@ for-in@^1.0.2: forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== form-data@^2.2.0: version "2.5.1" @@ -6629,7 +6654,7 @@ getos@^3.2.1: getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== dependencies: assert-plus "^1.0.0" @@ -7440,11 +7465,11 @@ is-ci@^2.0.0: ci-info "^2.0.0" is-ci@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" - integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== + version "3.0.1" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" + integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== dependencies: - ci-info "^3.1.1" + ci-info "^3.2.0" is-core-module@^2.2.0: version "2.5.0" @@ -7758,7 +7783,7 @@ is-touch-device@1.0.1: is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== is-unicode-supported@^0.1.0: version "0.1.0" @@ -7834,7 +7859,7 @@ isobject@^3.0.0, isobject@^3.0.1: isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== isurl@^1.0.0-alpha5: version "1.0.0" @@ -7928,7 +7953,7 @@ js-yaml@^4.0.0, js-yaml@^4.1.0: jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== jsesc@^2.5.1: version "2.5.2" @@ -7978,7 +8003,7 @@ json-stable-stringify-without-jsonify@^1.0.1: json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== json5@^2.1.2, json5@^2.2.0: version "2.2.0" @@ -8130,7 +8155,7 @@ latest-version@^5.0.0, latest-version@^5.1.0: lazy-ass@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" - integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM= + integrity sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw== lazystream@^1.0.0: version "1.0.1" @@ -8195,15 +8220,16 @@ listr-verbose-renderer@^0.5.0: figures "^2.0.0" listr2@^3.8.3: - version "3.11.0" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.11.0.tgz#9771b02407875aa78e73d6e0ff6541bbec0aaee9" - integrity sha512-XLJVe2JgXCyQTa3FbSv11lkKExYmEyA4jltVo8z4FX10Vt1Yj8IMekBfwim0BSOM9uj1QMTJvDQQpHyuPbB/dQ== + version "3.14.0" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e" + integrity sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g== dependencies: cli-truncate "^2.1.0" - colorette "^1.2.2" + colorette "^2.0.16" log-update "^4.0.0" p-map "^4.0.0" - rxjs "^6.6.7" + rfdc "^1.3.0" + rxjs "^7.5.1" through "^2.3.8" wrap-ansi "^7.0.0" @@ -8326,7 +8352,7 @@ lodash.merge@^4.6.2: lodash.once@^4.0.0, lodash.once@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" - integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= + integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== lodash.sortby@^4.7.0: version "4.7.0" @@ -8470,9 +8496,9 @@ magic-string@^0.25.0, magic-string@^0.25.7: sourcemap-codec "^1.4.4" magic-string@^0.26.1: - version "0.26.1" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.1.tgz#ba9b651354fa9512474199acecf9c6dbe93f97fd" - integrity sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg== + version "0.26.2" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.2.tgz#5331700e4158cd6befda738bb6b0c7b93c0d4432" + integrity sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A== dependencies: sourcemap-codec "^1.4.8" @@ -8668,13 +8694,25 @@ mime-db@1.51.0, mime-db@^1.28.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== -mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@~2.1.24: version "2.1.31" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b" integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg== dependencies: mime-db "1.48.0" +mime-types@~2.1.19: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + mime-types@~2.1.34: version "2.1.34" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" @@ -9558,7 +9596,7 @@ osenv@^0.1.4: ospath@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" - integrity sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs= + integrity sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA== p-all@^2.1.0: version "2.1.0" @@ -9889,7 +9927,7 @@ pend@~1.2.0: performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== picocolors@^1.0.0: version "1.0.0" @@ -9904,7 +9942,7 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: pify@^2.2.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== pify@^3.0.0: version "3.0.0" @@ -10366,7 +10404,7 @@ proxy-addr@~2.0.5, proxy-addr@~2.0.7: proxy-from-env@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" - integrity sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4= + integrity sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A== ps-list@^8.0.0: version "8.1.0" @@ -10433,9 +10471,9 @@ qs@^6.9.6: side-channel "^1.0.4" qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== query-string@^5.0.1: version "5.1.1" @@ -10728,7 +10766,7 @@ repeat-string@^1.6.1: request-progress@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe" - integrity sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4= + integrity sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg== dependencies: throttleit "^1.0.0" @@ -10919,13 +10957,20 @@ run-parallel@^1.1.4, run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.6.0, rxjs@^6.6.2, rxjs@^6.6.7: +rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.6.0, rxjs@^6.6.2: version "6.6.7" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== dependencies: tslib "^1.9.0" +rxjs@^7.5.1: + version "7.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" + integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== + dependencies: + tslib "^2.1.0" + rxjs@^7.5.4: version "7.5.4" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.4.tgz#3d6bd407e6b7ce9a123e76b1e770dc5761aa368d" @@ -11375,9 +11420,9 @@ split2@^1.0.0: through2 "~2.0.0" sshpk@^1.14.1: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + version "1.17.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -11897,7 +11942,7 @@ then-request@^6.0.0: throttleit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" - integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw= + integrity sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g== through2-filter@^3.0.0: version "3.0.0" @@ -12121,14 +12166,14 @@ tsutils@^3.21.0: tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== dependencies: safe-buffer "^5.0.1" tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" @@ -12486,7 +12531,7 @@ vary@~1.1.2: verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== dependencies: assert-plus "^1.0.0" core-util-is "1.0.2" @@ -13085,7 +13130,7 @@ yargs@^17.3.1: yauzl@^2.10.0, yauzl@^2.4.2: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== dependencies: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" -- 2.40.1 From 10a7b7b09f678c4eeb07319c86602d0cfbcb8319 Mon Sep 17 00:00:00 2001 From: Dominik Pschenitschni Date: Mon, 11 Apr 2022 22:08:28 +0200 Subject: [PATCH 04/10] fix import type --- src/components/misc/keyboard-shortcuts/shortcuts.ts | 2 +- src/composables/useColorScheme.ts | 3 ++- src/composables/useOnline.ts | 4 ++-- src/composables/useTitle.ts | 4 ++-- src/directives/cypress.ts | 2 +- src/directives/shortcut.ts | 2 +- src/helpers/getListTitle.ts | 2 +- src/router/index.ts | 3 ++- 8 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/components/misc/keyboard-shortcuts/shortcuts.ts b/src/components/misc/keyboard-shortcuts/shortcuts.ts index 758207ff6..b51e4f8c5 100644 --- a/src/components/misc/keyboard-shortcuts/shortcuts.ts +++ b/src/components/misc/keyboard-shortcuts/shortcuts.ts @@ -1,4 +1,4 @@ -import {RouteLocation} from 'vue-router' +import type {RouteLocation} from 'vue-router' import {isAppleDevice} from '@/helpers/isAppleDevice' diff --git a/src/composables/useColorScheme.ts b/src/composables/useColorScheme.ts index f9b1cb94f..e15948dd3 100644 --- a/src/composables/useColorScheme.ts +++ b/src/composables/useColorScheme.ts @@ -1,5 +1,6 @@ import {computed, watch, readonly} from 'vue' -import {useStorage, createSharedComposable, BasicColorSchema, usePreferredColorScheme, tryOnMounted} from '@vueuse/core' +import {useStorage, createSharedComposable, usePreferredColorScheme, tryOnMounted} from '@vueuse/core' +import type {BasicColorSchema} from '@vueuse/core' const STORAGE_KEY = 'color-scheme' diff --git a/src/composables/useOnline.ts b/src/composables/useOnline.ts index b92d8a6b1..da3263422 100644 --- a/src/composables/useOnline.ts +++ b/src/composables/useOnline.ts @@ -1,6 +1,6 @@ import {ref} from 'vue' -import {useOnline as useNetworkOnline, ConfigurableWindow} from '@vueuse/core' - +import {useOnline as useNetworkOnline} from '@vueuse/core' +import type {ConfigurableWindow} from '@vueuse/core' export function useOnline(options?: ConfigurableWindow) { const fakeOnlineState = !!import.meta.env.VITE_IS_ONLINE diff --git a/src/composables/useTitle.ts b/src/composables/useTitle.ts index addbbb288..62d30623a 100644 --- a/src/composables/useTitle.ts +++ b/src/composables/useTitle.ts @@ -1,7 +1,7 @@ import { computed, watchEffect } from 'vue' -import { setTitle } from '@/helpers/setTitle' +import type { ComputedGetter } from 'vue' -import { ComputedGetter } from 'vue' +import { setTitle } from '@/helpers/setTitle' export function useTitle(titleGetter: ComputedGetter) { const titleRef = computed(titleGetter) diff --git a/src/directives/cypress.ts b/src/directives/cypress.ts index 0945b5fc5..31092cc31 100644 --- a/src/directives/cypress.ts +++ b/src/directives/cypress.ts @@ -1,4 +1,4 @@ -import {Directive} from 'vue' +import type {Directive} from 'vue' declare global { interface Window { diff --git a/src/directives/shortcut.ts b/src/directives/shortcut.ts index c1ff8a679..842e05ece 100644 --- a/src/directives/shortcut.ts +++ b/src/directives/shortcut.ts @@ -1,4 +1,4 @@ -import {Directive} from 'vue' +import type {Directive} from 'vue' import {install, uninstall} from '@github/hotkey' import {isAppleDevice} from '@/helpers/isAppleDevice' diff --git a/src/helpers/getListTitle.ts b/src/helpers/getListTitle.ts index fc24d2911..7d74507bd 100644 --- a/src/helpers/getListTitle.ts +++ b/src/helpers/getListTitle.ts @@ -1,6 +1,6 @@ import {i18n} from '@/i18n' -import ListModal from '@/modals/list' +import type ListModal from '@/models/list' export function getListTitle(l: ListModal) { if (l.id === -1) { diff --git a/src/router/index.ts b/src/router/index.ts index 69795df67..01f9c6ca2 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -1,4 +1,5 @@ -import { createRouter, createWebHistory, RouteLocation } from 'vue-router' +import { createRouter, createWebHistory } from 'vue-router' +import type { RouteLocation } from 'vue-router' import {saveLastVisited} from '@/helpers/saveLastVisited' import {store} from '@/store' -- 2.40.1 From 235dbb959ee7da1318e76bc9ee2bde43ac8eb14e Mon Sep 17 00:00:00 2001 From: Dominik Pschenitschni Date: Sun, 13 Feb 2022 13:49:00 +0100 Subject: [PATCH 05/10] feat: setup cypress --- cypress/plugins/{index.js => index.ts} | 18 +++++++++++++---- cypress/plugins/tsconfig.json | 9 +++++++++ cypress/tsconfig.json | 10 +++++++++ env.d.ts | 1 + package.json | 2 ++ yarn.lock | 28 +++++++++++++++++++++++++- 6 files changed, 63 insertions(+), 5 deletions(-) rename cypress/plugins/{index.js => index.ts} (56%) create mode 100644 cypress/plugins/tsconfig.json create mode 100644 cypress/tsconfig.json diff --git a/cypress/plugins/index.js b/cypress/plugins/index.ts similarity index 56% rename from cypress/plugins/index.js rename to cypress/plugins/index.ts index aa9918d21..e158cbbd8 100644 --- a/cypress/plugins/index.js +++ b/cypress/plugins/index.ts @@ -1,4 +1,3 @@ -/// // *********************************************************** // This example plugins/index.js can be used to load plugins // @@ -12,10 +11,21 @@ // This function is called when a project is opened or re-opened (e.g. due to // the project's config changing) +import path from 'path' +import { startDevServer } from '@cypress/vite-dev-server' + /** * @type {Cypress.PluginConfig} */ -module.exports = (on, config) => { - // `on` is used to hook into various events Cypress emits - // `config` is the resolved Cypress config +export default (on, config) => { + // `on` is used to hook into various events Cypress emits + // `config` is the resolved Cypress config + on('dev-server:start', (options) => { + return startDevServer({ + options, + viteConfig: { + configFile: path.resolve(__dirname, '..', '..', 'vite.config.ts'), + }, + }) + }) } diff --git a/cypress/plugins/tsconfig.json b/cypress/plugins/tsconfig.json new file mode 100644 index 000000000..a164a2264 --- /dev/null +++ b/cypress/plugins/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@vue/tsconfig/tsconfig.node.json", + "include": ["./**/*"], + "compilerOptions": { + "module": "CommonJS", + "preserveValueImports": false, + "types": ["node", "cypress/types/cypress"] + } +} \ No newline at end of file diff --git a/cypress/tsconfig.json b/cypress/tsconfig.json new file mode 100644 index 000000000..e0f01636c --- /dev/null +++ b/cypress/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@vue/tsconfig/tsconfig.web.json", + "include": ["./integration/**/*", "./support/**/*"], + "compilerOptions": { + "isolatedModules": false, + "target": "es5", + "lib": ["es5", "dom"], + "types": ["cypress"] + } +} \ No newline at end of file diff --git a/env.d.ts b/env.d.ts index 8cee15171..2d7de3f6a 100644 --- a/env.d.ts +++ b/env.d.ts @@ -1,2 +1,3 @@ /// /// +/// \ No newline at end of file diff --git a/package.json b/package.json index 1b9f581d8..e2ae9bcf5 100644 --- a/package.json +++ b/package.json @@ -56,6 +56,8 @@ }, "devDependencies": { "@4tw/cypress-drag-drop": "2.2.1", + "@cypress/vite-dev-server": "2.2.2", + "@cypress/vue": "3.1.1", "@faker-js/faker": "7.3.0", "@fortawesome/fontawesome-svg-core": "6.1.1", "@fortawesome/free-regular-svg-icons": "6.1.1", diff --git a/yarn.lock b/yarn.lock index b70eace35..93ff34394 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1071,6 +1071,11 @@ resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.0.1.tgz#b6b8d81780b9a9f6459f4bfe9226ac6aefaefe87" integrity sha512-aG20vknL4/YjQF9BSV7ts4EWm/yrjagAN7OWBNmlbEOUiu0llj4OGrFoOKK3g2vey4/p2omKCoHrWtPxSwV3HA== +"@cypress/mount-utils@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@cypress/mount-utils/-/mount-utils-1.0.2.tgz#afbc4f8c350b7cd86edc5ad0db0cbe1e0181edc8" + integrity sha512-Fn3fdTiyayHoy8Ol0RSu4MlBH2maQ2ZEXeEVKl/zHHXEQpld5HX3vdNLhK5YLij8cLynA4DxOT/nO9iEnIiOXw== + "@cypress/request@^2.88.10": version "2.88.10" resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.10.tgz#b66d76b07f860d3a4b8d7a0604d020c662752cce" @@ -1095,6 +1100,22 @@ tunnel-agent "^0.6.0" uuid "^8.3.2" +"@cypress/vite-dev-server@2.2.2": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@cypress/vite-dev-server/-/vite-dev-server-2.2.2.tgz#dd16b7470ddd1ff095678b61c56da52ac02f44ed" + integrity sha512-02y/Fm0N+CQjKbSjjRtktPgPbp91kOvtc8+WW2l2odIYQkKlG6IOCpmgc898muW0lBAcCszdEIHR/ItdZDiYPw== + dependencies: + debug "^4.3.2" + get-port "^5.1.1" + +"@cypress/vue@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@cypress/vue/-/vue-3.1.1.tgz#0e6b4a1cb972d2f271ba05209c55e9101a96d0a4" + integrity sha512-wD1vunuPFPLC8FZtgwdq+mcSEOs27qquuJJdGcY8aAN0y38rqYuuaj+N4UxKoAjhkSwthaOeZehjBtvDvv9C6w== + dependencies: + "@cypress/mount-utils" "1.0.2" + "@vue/test-utils" "^2.0.0-rc.10" + "@cypress/xvfb@^1.2.4": version "1.2.4" resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a" @@ -2853,6 +2874,11 @@ resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-2.0.0-rc.18.tgz#ff22b252424fe72e5462cbb3a8e7405cef11ffb6" integrity sha512-aifolXjVdsogjaLmDoZ0FU8vN+R67aWmg9OuVeED4w5Ij5GFQLrlhM19uhWe/r5xXUL4fXMk3pX5wW6FJP1NcQ== +"@vue/test-utils@^2.0.0-rc.10": + version "2.0.0-rc.17" + resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-2.0.0-rc.17.tgz#e6dcf5b5bd3ae23595bdb154b9b578ebcdffd698" + integrity sha512-7LHZKsFRV/HqDoMVY+cJamFzgHgsrmQFalROHC5FMWrzPzd+utG5e11krj1tVsnxYufGA2ABShX4nlcHXED+zQ== + "@vue/tsconfig@0.1.3": version "0.1.3" resolved "https://registry.yarnpkg.com/@vue/tsconfig/-/tsconfig-0.1.3.tgz#4a61dbd29783d01ddab504276dcf0c2b6988654f" @@ -6594,7 +6620,7 @@ get-port@^3.1.0: resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw= -get-port@^5.1.0: +get-port@^5.1.0, get-port@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== -- 2.40.1 From 2224babe7c937eb07dc6ae1a2a134ff59d497c6d Mon Sep 17 00:00:00 2001 From: Dominik Pschenitschni Date: Mon, 11 Apr 2022 22:37:56 +0200 Subject: [PATCH 06/10] chore: rename js files to ts --- cypress/e2e/list/{list-history.spec.js => list-history.spec.ts} | 0 .../e2e/list/{list-view-gantt.spec.js => list-view-gantt.spec.ts} | 0 .../list/{list-view-kanban.spec.js => list-view-kanban.spec.ts} | 0 .../e2e/list/{list-view-list.spec.js => list-view-list.spec.ts} | 0 .../e2e/list/{list-view-table.spec.js => list-view-table.spec.ts} | 0 cypress/e2e/list/{list.spec.js => list.spec.ts} | 0 cypress/e2e/list/{namespaces.spec.js => namespaces.spec.ts} | 0 cypress/e2e/list/{prepareLists.js => prepareLists.ts} | 0 cypress/e2e/misc/{editor.spec.js => editor.spec.ts} | 0 cypress/e2e/misc/{menu.spec.js => menu.spec.ts} | 0 cypress/e2e/sharing/{linkShare.spec.js => linkShare.spec.ts} | 0 cypress/e2e/sharing/{team.spec.js => team.spec.ts} | 0 cypress/e2e/task/{overview.spec.js => overview.spec.ts} | 0 cypress/e2e/task/{task.spec.js => task.spec.ts} | 0 cypress/e2e/user/{login.spec.js => login.spec.ts} | 0 cypress/e2e/user/{logout.spec.js => logout.spec.ts} | 0 cypress/e2e/user/{registration.spec.js => registration.spec.ts} | 0 cypress/e2e/user/{settings.spec.js => settings.spec.ts} | 0 cypress/factories/{bucket.js => bucket.ts} | 0 cypress/factories/{label_task.js => label_task.ts} | 0 cypress/factories/{labels.js => labels.ts} | 0 cypress/factories/{link_sharing.js => link_sharing.ts} | 0 cypress/factories/{list.js => list.ts} | 0 cypress/factories/{namespace.js => namespace.ts} | 0 cypress/factories/{task.js => task.ts} | 0 cypress/factories/{task_assignee.js => task_assignee.ts} | 0 cypress/factories/{task_comment.js => task_comment.ts} | 0 cypress/factories/{team.js => team.ts} | 0 cypress/factories/{team_member.js => team_member.ts} | 0 cypress/factories/{user.js => user.ts} | 0 cypress/factories/{users_list.js => users_list.ts} | 0 cypress/support/{authenticateUser.js => authenticateUser.ts} | 0 cypress/support/{commands.js => commands.ts} | 0 cypress/support/{e2e.js => e2e.ts} | 0 cypress/support/{factory.js => factory.ts} | 0 cypress/support/{seed.js => seed.ts} | 0 36 files changed, 0 insertions(+), 0 deletions(-) rename cypress/e2e/list/{list-history.spec.js => list-history.spec.ts} (100%) rename cypress/e2e/list/{list-view-gantt.spec.js => list-view-gantt.spec.ts} (100%) rename cypress/e2e/list/{list-view-kanban.spec.js => list-view-kanban.spec.ts} (100%) rename cypress/e2e/list/{list-view-list.spec.js => list-view-list.spec.ts} (100%) rename cypress/e2e/list/{list-view-table.spec.js => list-view-table.spec.ts} (100%) rename cypress/e2e/list/{list.spec.js => list.spec.ts} (100%) rename cypress/e2e/list/{namespaces.spec.js => namespaces.spec.ts} (100%) rename cypress/e2e/list/{prepareLists.js => prepareLists.ts} (100%) rename cypress/e2e/misc/{editor.spec.js => editor.spec.ts} (100%) rename cypress/e2e/misc/{menu.spec.js => menu.spec.ts} (100%) rename cypress/e2e/sharing/{linkShare.spec.js => linkShare.spec.ts} (100%) rename cypress/e2e/sharing/{team.spec.js => team.spec.ts} (100%) rename cypress/e2e/task/{overview.spec.js => overview.spec.ts} (100%) rename cypress/e2e/task/{task.spec.js => task.spec.ts} (100%) rename cypress/e2e/user/{login.spec.js => login.spec.ts} (100%) rename cypress/e2e/user/{logout.spec.js => logout.spec.ts} (100%) rename cypress/e2e/user/{registration.spec.js => registration.spec.ts} (100%) rename cypress/e2e/user/{settings.spec.js => settings.spec.ts} (100%) rename cypress/factories/{bucket.js => bucket.ts} (100%) rename cypress/factories/{label_task.js => label_task.ts} (100%) rename cypress/factories/{labels.js => labels.ts} (100%) rename cypress/factories/{link_sharing.js => link_sharing.ts} (100%) rename cypress/factories/{list.js => list.ts} (100%) rename cypress/factories/{namespace.js => namespace.ts} (100%) rename cypress/factories/{task.js => task.ts} (100%) rename cypress/factories/{task_assignee.js => task_assignee.ts} (100%) rename cypress/factories/{task_comment.js => task_comment.ts} (100%) rename cypress/factories/{team.js => team.ts} (100%) rename cypress/factories/{team_member.js => team_member.ts} (100%) rename cypress/factories/{user.js => user.ts} (100%) rename cypress/factories/{users_list.js => users_list.ts} (100%) rename cypress/support/{authenticateUser.js => authenticateUser.ts} (100%) rename cypress/support/{commands.js => commands.ts} (100%) rename cypress/support/{e2e.js => e2e.ts} (100%) rename cypress/support/{factory.js => factory.ts} (100%) rename cypress/support/{seed.js => seed.ts} (100%) diff --git a/cypress/e2e/list/list-history.spec.js b/cypress/e2e/list/list-history.spec.ts similarity index 100% rename from cypress/e2e/list/list-history.spec.js rename to cypress/e2e/list/list-history.spec.ts diff --git a/cypress/e2e/list/list-view-gantt.spec.js b/cypress/e2e/list/list-view-gantt.spec.ts similarity index 100% rename from cypress/e2e/list/list-view-gantt.spec.js rename to cypress/e2e/list/list-view-gantt.spec.ts diff --git a/cypress/e2e/list/list-view-kanban.spec.js b/cypress/e2e/list/list-view-kanban.spec.ts similarity index 100% rename from cypress/e2e/list/list-view-kanban.spec.js rename to cypress/e2e/list/list-view-kanban.spec.ts diff --git a/cypress/e2e/list/list-view-list.spec.js b/cypress/e2e/list/list-view-list.spec.ts similarity index 100% rename from cypress/e2e/list/list-view-list.spec.js rename to cypress/e2e/list/list-view-list.spec.ts diff --git a/cypress/e2e/list/list-view-table.spec.js b/cypress/e2e/list/list-view-table.spec.ts similarity index 100% rename from cypress/e2e/list/list-view-table.spec.js rename to cypress/e2e/list/list-view-table.spec.ts diff --git a/cypress/e2e/list/list.spec.js b/cypress/e2e/list/list.spec.ts similarity index 100% rename from cypress/e2e/list/list.spec.js rename to cypress/e2e/list/list.spec.ts diff --git a/cypress/e2e/list/namespaces.spec.js b/cypress/e2e/list/namespaces.spec.ts similarity index 100% rename from cypress/e2e/list/namespaces.spec.js rename to cypress/e2e/list/namespaces.spec.ts diff --git a/cypress/e2e/list/prepareLists.js b/cypress/e2e/list/prepareLists.ts similarity index 100% rename from cypress/e2e/list/prepareLists.js rename to cypress/e2e/list/prepareLists.ts diff --git a/cypress/e2e/misc/editor.spec.js b/cypress/e2e/misc/editor.spec.ts similarity index 100% rename from cypress/e2e/misc/editor.spec.js rename to cypress/e2e/misc/editor.spec.ts diff --git a/cypress/e2e/misc/menu.spec.js b/cypress/e2e/misc/menu.spec.ts similarity index 100% rename from cypress/e2e/misc/menu.spec.js rename to cypress/e2e/misc/menu.spec.ts diff --git a/cypress/e2e/sharing/linkShare.spec.js b/cypress/e2e/sharing/linkShare.spec.ts similarity index 100% rename from cypress/e2e/sharing/linkShare.spec.js rename to cypress/e2e/sharing/linkShare.spec.ts diff --git a/cypress/e2e/sharing/team.spec.js b/cypress/e2e/sharing/team.spec.ts similarity index 100% rename from cypress/e2e/sharing/team.spec.js rename to cypress/e2e/sharing/team.spec.ts diff --git a/cypress/e2e/task/overview.spec.js b/cypress/e2e/task/overview.spec.ts similarity index 100% rename from cypress/e2e/task/overview.spec.js rename to cypress/e2e/task/overview.spec.ts diff --git a/cypress/e2e/task/task.spec.js b/cypress/e2e/task/task.spec.ts similarity index 100% rename from cypress/e2e/task/task.spec.js rename to cypress/e2e/task/task.spec.ts diff --git a/cypress/e2e/user/login.spec.js b/cypress/e2e/user/login.spec.ts similarity index 100% rename from cypress/e2e/user/login.spec.js rename to cypress/e2e/user/login.spec.ts diff --git a/cypress/e2e/user/logout.spec.js b/cypress/e2e/user/logout.spec.ts similarity index 100% rename from cypress/e2e/user/logout.spec.js rename to cypress/e2e/user/logout.spec.ts diff --git a/cypress/e2e/user/registration.spec.js b/cypress/e2e/user/registration.spec.ts similarity index 100% rename from cypress/e2e/user/registration.spec.js rename to cypress/e2e/user/registration.spec.ts diff --git a/cypress/e2e/user/settings.spec.js b/cypress/e2e/user/settings.spec.ts similarity index 100% rename from cypress/e2e/user/settings.spec.js rename to cypress/e2e/user/settings.spec.ts diff --git a/cypress/factories/bucket.js b/cypress/factories/bucket.ts similarity index 100% rename from cypress/factories/bucket.js rename to cypress/factories/bucket.ts diff --git a/cypress/factories/label_task.js b/cypress/factories/label_task.ts similarity index 100% rename from cypress/factories/label_task.js rename to cypress/factories/label_task.ts diff --git a/cypress/factories/labels.js b/cypress/factories/labels.ts similarity index 100% rename from cypress/factories/labels.js rename to cypress/factories/labels.ts diff --git a/cypress/factories/link_sharing.js b/cypress/factories/link_sharing.ts similarity index 100% rename from cypress/factories/link_sharing.js rename to cypress/factories/link_sharing.ts diff --git a/cypress/factories/list.js b/cypress/factories/list.ts similarity index 100% rename from cypress/factories/list.js rename to cypress/factories/list.ts diff --git a/cypress/factories/namespace.js b/cypress/factories/namespace.ts similarity index 100% rename from cypress/factories/namespace.js rename to cypress/factories/namespace.ts diff --git a/cypress/factories/task.js b/cypress/factories/task.ts similarity index 100% rename from cypress/factories/task.js rename to cypress/factories/task.ts diff --git a/cypress/factories/task_assignee.js b/cypress/factories/task_assignee.ts similarity index 100% rename from cypress/factories/task_assignee.js rename to cypress/factories/task_assignee.ts diff --git a/cypress/factories/task_comment.js b/cypress/factories/task_comment.ts similarity index 100% rename from cypress/factories/task_comment.js rename to cypress/factories/task_comment.ts diff --git a/cypress/factories/team.js b/cypress/factories/team.ts similarity index 100% rename from cypress/factories/team.js rename to cypress/factories/team.ts diff --git a/cypress/factories/team_member.js b/cypress/factories/team_member.ts similarity index 100% rename from cypress/factories/team_member.js rename to cypress/factories/team_member.ts diff --git a/cypress/factories/user.js b/cypress/factories/user.ts similarity index 100% rename from cypress/factories/user.js rename to cypress/factories/user.ts diff --git a/cypress/factories/users_list.js b/cypress/factories/users_list.ts similarity index 100% rename from cypress/factories/users_list.js rename to cypress/factories/users_list.ts diff --git a/cypress/support/authenticateUser.js b/cypress/support/authenticateUser.ts similarity index 100% rename from cypress/support/authenticateUser.js rename to cypress/support/authenticateUser.ts diff --git a/cypress/support/commands.js b/cypress/support/commands.ts similarity index 100% rename from cypress/support/commands.js rename to cypress/support/commands.ts diff --git a/cypress/support/e2e.js b/cypress/support/e2e.ts similarity index 100% rename from cypress/support/e2e.js rename to cypress/support/e2e.ts diff --git a/cypress/support/factory.js b/cypress/support/factory.ts similarity index 100% rename from cypress/support/factory.js rename to cypress/support/factory.ts diff --git a/cypress/support/seed.js b/cypress/support/seed.ts similarity index 100% rename from cypress/support/seed.js rename to cypress/support/seed.ts -- 2.40.1 From 60d29617f2204787e20076c5efd7dda05ee3d890 Mon Sep 17 00:00:00 2001 From: Dominik Pschenitschni Date: Wed, 13 Apr 2022 19:40:50 +0200 Subject: [PATCH 07/10] fix linting --- src/indexes/index.ts | 2 +- src/main.ts | 12 ++++++++++-- src/types/shims-vue.d.ts | 1 - src/types/window.d.ts | 7 ------- src/views/tasks/ShowTasks.vue | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) delete mode 100644 src/types/window.d.ts diff --git a/src/indexes/index.ts b/src/indexes/index.ts index 6d3aecfde..14709cad8 100644 --- a/src/indexes/index.ts +++ b/src/indexes/index.ts @@ -1,4 +1,4 @@ -import {Document, SimpleDocumentSearchResultSetUnit} from 'flexsearch' +import {Document} from 'flexsearch' export interface withId { id: number, diff --git a/src/main.ts b/src/main.ts index 70f908956..3752d5de7 100644 --- a/src/main.ts +++ b/src/main.ts @@ -6,7 +6,7 @@ import router from './router' import {error, success} from './message' import {formatDate, formatDateShort, formatDateLong, formatDateSince, formatISO} from '@/helpers/time/formatDate' -// @ts-ignore + import {VERSION} from './version.json' // Notifications @@ -20,6 +20,14 @@ import {store} from './store' // i18n import {i18n} from './i18n' +declare global { + interface Window { + API_URL: string; + SENTRY_ENABLED: boolean; + SENTRY_DSN: string; + } +} + console.info(`Vikunja frontend version ${VERSION}`) // Check if we have an api url in local storage and use it if that's the case @@ -87,7 +95,7 @@ app.config.errorHandler = (err, vm, info) => { } if (import.meta.env.DEV) { - app.config.warnHandler = (msg, vm, info) => { + app.config.warnHandler = (msg) => { error(msg) throw(msg) } diff --git a/src/types/shims-vue.d.ts b/src/types/shims-vue.d.ts index 5c48818b1..af426f99c 100644 --- a/src/types/shims-vue.d.ts +++ b/src/types/shims-vue.d.ts @@ -1,5 +1,4 @@ // https://next.vuex.vuejs.org/guide/migrating-to-4-0-from-3-x.html#typescript-support -import { ComponentCustomProperties } from 'vue' import { Store } from 'vuex' declare module '@vue/runtime-core' { diff --git a/src/types/window.d.ts b/src/types/window.d.ts deleted file mode 100644 index a4ce4358e..000000000 --- a/src/types/window.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -declare global { - interface Window { - API_URL: string; - SENTRY_ENABLED: boolean; - SENTRY_DSN: string; - } -} \ No newline at end of file diff --git a/src/views/tasks/ShowTasks.vue b/src/views/tasks/ShowTasks.vue index 914c6080d..48872b836 100644 --- a/src/views/tasks/ShowTasks.vue +++ b/src/views/tasks/ShowTasks.vue @@ -90,7 +90,7 @@ const pageTitle = computed(() => { // We need to define "key" because it is the first parameter in the array and we need the second const predefinedRange = Object.entries(DATE_RANGES) // eslint-disable-next-line no-unused-vars - .find(([key, value]) => dateFrom === value[0] && dateTo === value[1]) + .find(([, value]) => dateFrom === value[0] && dateTo === value[1]) ?.[0] if (typeof predefinedRange !== 'undefined') { return t(`input.datepickerRange.ranges.${predefinedRange}`) -- 2.40.1 From 997b1bcedf131b5516cc55eaa8ac7e89f159da87 Mon Sep 17 00:00:00 2001 From: Dominik Pschenitschni Date: Sat, 23 Apr 2022 13:15:19 +0200 Subject: [PATCH 08/10] fix: reenable some compilerOptions --- tsconfig.app.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tsconfig.app.json b/tsconfig.app.json index 28b6e4ce0..5205363de 100644 --- a/tsconfig.app.json +++ b/tsconfig.app.json @@ -6,12 +6,12 @@ "composite": true, "baseUrl": ".", - // "importHelpers": true, + "importHelpers": true, + "sourceMap": true, + "strictNullChecks": true, // "allowJs": true, // "allowSyntheticDefaultImports": true, - // "sourceMap": true, - // "strictNullChecks": true, - + "paths": { "@/*": ["./src/*"] } -- 2.40.1 From 043a896f713231fc3e2f0b6e15a51408af0b4882 Mon Sep 17 00:00:00 2001 From: Dominik Pschenitschni Date: Tue, 21 Jun 2022 23:16:05 +0200 Subject: [PATCH 09/10] fix: cypress plugins import --- cypress.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cypress.config.ts b/cypress.config.ts index 4b233b3b6..77ab2db8b 100644 --- a/cypress.config.ts +++ b/cypress.config.ts @@ -14,7 +14,7 @@ export default defineConfig({ // We've imported your old cypress plugins here. // You may want to clean this up later by importing these. setupNodeEvents(on, config) { - return require('./cypress/plugins/index.js')(on, config) + return require('./cypress/plugins/index.ts')(on, config) }, baseUrl: 'http://localhost:4173', specPattern: 'cypress/e2e/**/*.{js,jsx,ts,tsx}', -- 2.40.1 From 345cb07605810be183dd964af98c67f146f365c4 Mon Sep 17 00:00:00 2001 From: Dominik Pschenitschni Date: Tue, 21 Jun 2022 23:51:58 +0200 Subject: [PATCH 10/10] fix: cypress plugins --- cypress.config.ts | 11 ++++---- cypress/plugins/index.ts | 31 ----------------------- cypress/plugins/tsconfig.json | 9 ------- cypress/support/commands.ts | 38 ++++++++++++++++++++++++++++ cypress/support/component.index.html | 12 +++++++++ cypress/support/component.ts | 29 +++++++++++++++++++++ src/types/cypress.d.ts | 12 +++++++++ 7 files changed, 97 insertions(+), 45 deletions(-) delete mode 100644 cypress/plugins/index.ts delete mode 100644 cypress/plugins/tsconfig.json create mode 100644 cypress/support/component.index.html create mode 100644 cypress/support/component.ts create mode 100644 src/types/cypress.d.ts diff --git a/cypress.config.ts b/cypress.config.ts index 77ab2db8b..93c311af1 100644 --- a/cypress.config.ts +++ b/cypress.config.ts @@ -11,12 +11,13 @@ export default defineConfig({ }, projectId: '181c7x', e2e: { - // We've imported your old cypress plugins here. - // You may want to clean this up later by importing these. - setupNodeEvents(on, config) { - return require('./cypress/plugins/index.ts')(on, config) - }, baseUrl: 'http://localhost:4173', specPattern: 'cypress/e2e/**/*.{js,jsx,ts,tsx}', + }, + component: { + devServer: { + framework: 'vue', + bundler: 'vite', + }, }, }) diff --git a/cypress/plugins/index.ts b/cypress/plugins/index.ts deleted file mode 100644 index e158cbbd8..000000000 --- a/cypress/plugins/index.ts +++ /dev/null @@ -1,31 +0,0 @@ -// *********************************************************** -// This example plugins/index.js can be used to load plugins -// -// You can change the location of this file or turn off loading -// the plugins file with the 'pluginsFile' configuration option. -// -// You can read more here: -// https://on.cypress.io/plugins-guide -// *********************************************************** - -// This function is called when a project is opened or re-opened (e.g. due to -// the project's config changing) - -import path from 'path' -import { startDevServer } from '@cypress/vite-dev-server' - -/** - * @type {Cypress.PluginConfig} - */ -export default (on, config) => { - // `on` is used to hook into various events Cypress emits - // `config` is the resolved Cypress config - on('dev-server:start', (options) => { - return startDevServer({ - options, - viteConfig: { - configFile: path.resolve(__dirname, '..', '..', 'vite.config.ts'), - }, - }) - }) -} diff --git a/cypress/plugins/tsconfig.json b/cypress/plugins/tsconfig.json deleted file mode 100644 index a164a2264..000000000 --- a/cypress/plugins/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "@vue/tsconfig/tsconfig.node.json", - "include": ["./**/*"], - "compilerOptions": { - "module": "CommonJS", - "preserveValueImports": false, - "types": ["node", "cypress/types/cypress"] - } -} \ No newline at end of file diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts index 4bc18b684..aa0c8be97 100644 --- a/cypress/support/commands.ts +++ b/cypress/support/commands.ts @@ -1,3 +1,41 @@ +/// +// *********************************************** +// This example commands.ts shows you how to +// create various custom commands and overwrite +// existing commands. +// +// For more comprehensive examples of custom +// commands please read more here: +// https://on.cypress.io/custom-commands +// *********************************************** +// +// +// -- This is a parent command -- +// Cypress.Commands.add('login', (email, password) => { ... }) +// +// +// -- This is a child command -- +// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... }) +// +// +// -- This is a dual command -- +// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... }) +// +// +// -- This will overwrite an existing command -- +// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... }) +// +// declare global { +// namespace Cypress { +// interface Chainable { +// login(email: string, password: string): Chainable +// drag(subject: string, options?: Partial): Chainable +// dismiss(subject: string, options?: Partial): Chainable +// visit(originalFn: CommandOriginalFn, url: string, options: Partial): Chainable +// } +// } +// } + /** * Recursively gets an element, returning only after it's determined to be attached to the DOM for good. * diff --git a/cypress/support/component.index.html b/cypress/support/component.index.html new file mode 100644 index 000000000..ac6e79fd8 --- /dev/null +++ b/cypress/support/component.index.html @@ -0,0 +1,12 @@ + + + + + + + Components App + + +
+ + \ No newline at end of file diff --git a/cypress/support/component.ts b/cypress/support/component.ts new file mode 100644 index 000000000..c0b98aa83 --- /dev/null +++ b/cypress/support/component.ts @@ -0,0 +1,29 @@ +// *********************************************************** +// This example support/component.ts is processed and +// loaded automatically before your test files. +// +// This is a great place to put global configuration and +// behavior that modifies Cypress. +// +// You can change the location of this file or turn off +// automatically serving support files with the +// 'supportFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** + +// Import commands.js using ES2015 syntax: +import './commands' + +// Alternatively you can use CommonJS syntax: +// require('./commands') + +import { mount } from 'cypress/vue' +// Ensure global styles are loaded +import '../../src/styles/global.scss'; + +Cypress.Commands.add('mount', mount) + +// Example use: +// cy.mount(MyComponent) \ No newline at end of file diff --git a/src/types/cypress.d.ts b/src/types/cypress.d.ts new file mode 100644 index 000000000..911324a7d --- /dev/null +++ b/src/types/cypress.d.ts @@ -0,0 +1,12 @@ +import { mount } from 'cypress/vue' + +type MountParams = Parameters; +type OptionsParam = MountParams[1]; + +declare global { + namespace Cypress { + interface Chainable { + mount: typeof mount; + } + } +} \ No newline at end of file -- 2.40.1