diff --git a/.editorconfig b/.editorconfig index 594054244..57b87318e 100644 --- a/.editorconfig +++ b/.editorconfig @@ -15,9 +15,6 @@ ij_javascript_use_double_quotes = false ij_sass_use_double_quotes = false ij_html_quote_style = double -[**/locales/*.ts] -indent_size = 2 - [*.java] ij_java_insert_inner_class_imports = false ij_java_use_fq_class_names = false diff --git a/frontend-new/.editorconfig b/frontend-new/.editorconfig new file mode 100644 index 000000000..e036d1b3d --- /dev/null +++ b/frontend-new/.editorconfig @@ -0,0 +1,8 @@ +[*] +indent_size = 2 + +[{*.js, *.ts, *.vue}] +ij_javascript_use_double_quotes = true +ij_typescript_use_double_quotes = true +ij_javascript_enforce_trailing_comma = whenmultiline +ij_typescript_enforce_trailing_comma = whenmultiline diff --git a/frontend-new/.eslintrc-auto-import.json b/frontend-new/.eslintrc-auto-import.json deleted file mode 100644 index 7ea4564ac..000000000 --- a/frontend-new/.eslintrc-auto-import.json +++ /dev/null @@ -1,222 +0,0 @@ -{ - "globals": { - "acceptHMRUpdate": true, - "asyncComputed": true, - "autoResetRef": true, - "axios": true, - "biSyncRef": true, - "computed": true, - "computedInject": true, - "controlledComputed": true, - "controlledRef": true, - "createApp": true, - "createEventHook": true, - "createGlobalState": true, - "createPinia": true, - "createReactiveFn": true, - "createSharedComposable": true, - "createUnrefFn": true, - "customRef": true, - "debouncedRef": true, - "debouncedWatch": true, - "defineAsyncComponent": true, - "defineComponent": true, - "defineStore": true, - "eagerComputed": true, - "effectScope": true, - "EffectScope": true, - "extendRef": true, - "getActivePinia": true, - "getCurrentInstance": true, - "getCurrentScope": true, - "h": true, - "ignorableWatch": true, - "inject": true, - "isDefined": true, - "isReadonly": true, - "isRef": true, - "makeDestructurable": true, - "mapActions": true, - "mapGetters": true, - "mapState": true, - "mapStores": true, - "mapWritableState": true, - "markRaw": true, - "nextTick": true, - "onActivated": true, - "onBeforeMount": true, - "onBeforeUnmount": true, - "onBeforeUpdate": true, - "onClickOutside": true, - "onDeactivated": true, - "onErrorCaptured": true, - "onKeyStroke": true, - "onMounted": true, - "onRenderTracked": true, - "onRenderTriggered": true, - "onScopeDispose": true, - "onServerPrefetch": true, - "onStartTyping": true, - "onUnmounted": true, - "onUpdated": true, - "pausableWatch": true, - "provide": true, - "reactify": true, - "reactifyObject": true, - "reactive": true, - "reactivePick": true, - "readonly": true, - "ref": true, - "refDefault": true, - "resolveComponent": true, - "setActivePinia": true, - "setMapStoreSuffix": true, - "shallowReactive": true, - "shallowReadonly": true, - "shallowRef": true, - "storeToRefs": true, - "syncRef": true, - "templateRef": true, - "throttledRef": true, - "throttledWatch": true, - "toRaw": true, - "toReactive": true, - "toRef": true, - "toRefs": true, - "triggerRef": true, - "tryOnBeforeUnmount": true, - "tryOnMounted": true, - "tryOnScopeDispose": true, - "tryOnUnmounted": true, - "unref": true, - "unrefElement": true, - "until": true, - "useActiveElement": true, - "useAsyncQueue": true, - "useAsyncState": true, - "useAttrs": true, - "useBase64": true, - "useBattery": true, - "useBreakpoints": true, - "useBroadcastChannel": true, - "useBrowserLocation": true, - "useClamp": true, - "useClipboard": true, - "useColorMode": true, - "useConfirmDialog": true, - "useCounter": true, - "useCssModule": true, - "useCssVar": true, - "useCssVars": true, - "useCycleList": true, - "useDark": true, - "useDebounce": true, - "useDebouncedRefHistory": true, - "useDebounceFn": true, - "useDeviceMotion": true, - "useDeviceOrientation": true, - "useDevicePixelRatio": true, - "useDevicesList": true, - "useDisplayMedia": true, - "useDocumentVisibility": true, - "useDraggable": true, - "useElementBounding": true, - "useElementByPoint": true, - "useElementHover": true, - "useElementSize": true, - "useElementVisibility": true, - "useEventBus": true, - "useEventListener": true, - "useEventSource": true, - "useEyeDropper": true, - "useFavicon": true, - "useFetch": true, - "useFocus": true, - "useFocusWithin": true, - "useFps": true, - "useFullscreen": true, - "useGeolocation": true, - "useHead": true, - "useI18n": true, - "useIdle": true, - "useIntersectionObserver": true, - "useInterval": true, - "useIntervalFn": true, - "useKeyModifier": true, - "useLastChanged": true, - "useLocalStorage": true, - "useMagicKeys": true, - "useManualRefHistory": true, - "useMediaControls": true, - "useMediaQuery": true, - "useMemoize": true, - "useMemory": true, - "useMounted": true, - "useMouse": true, - "useMouseInElement": true, - "useMousePressed": true, - "useMutationObserver": true, - "useNavigatorLanguage": true, - "useNetwork": true, - "useNow": true, - "useOnline": true, - "usePageLeave": true, - "useParallax": true, - "usePermission": true, - "usePointer": true, - "usePointerSwipe": true, - "usePreferredColorScheme": true, - "usePreferredDark": true, - "usePreferredLanguages": true, - "useRafFn": true, - "useRefHistory": true, - "useResizeObserver": true, - "useRoute": true, - "useRouter": true, - "useScreenSafeArea": true, - "useScriptTag": true, - "useScroll": true, - "useScrollLock": true, - "useSessionStorage": true, - "useShare": true, - "useSlots": true, - "useSpeechRecognition": true, - "useSpeechSynthesis": true, - "useStorage": true, - "useStorageAsync": true, - "useStyleTag": true, - "useSwipe": true, - "useTemplateRefsList": true, - "useTextSelection": true, - "useThrottle": true, - "useThrottledRefHistory": true, - "useThrottleFn": true, - "useTimeAgo": true, - "useTimeout": true, - "useTimeoutFn": true, - "useTimestamp": true, - "useTitle": true, - "useToggle": true, - "useTransition": true, - "useUrlSearchParams": true, - "useUserMedia": true, - "useVibrate": true, - "useVirtualList": true, - "useVModel": true, - "useVModels": true, - "useWakeLock": true, - "useWebNotification": true, - "useWebSocket": true, - "useWebWorker": true, - "useWebWorkerFn": true, - "useWindowFocus": true, - "useWindowScroll": true, - "useWindowSize": true, - "watch": true, - "watchAtMost": true, - "watchEffect": true, - "watchOnce": true, - "watchWithFilter": true, - "whenever": true - } -} \ No newline at end of file diff --git a/frontend-new/.eslintrc.js b/frontend-new/.eslintrc.js new file mode 100644 index 000000000..5c9d05b3b --- /dev/null +++ b/frontend-new/.eslintrc.js @@ -0,0 +1,91 @@ +module.exports = { + root: true, + env: { + node: true, + browser: true, + "vue/setup-compiler-macros": true, + }, + parser: "vue-eslint-parser", + parserOptions: { + parser: "@typescript-eslint/parser", + }, + extends: [ + "plugin:vue/vue3-recommended", + "eslint:recommended", + "plugin:import/recommended", + "plugin:import/typescript", + "@vue/typescript/recommended", + "plugin:eslint-comments/recommended", + "prettier", + ], + plugins: ["unicorn"], + settings: { + "import/resolver": { + node: { + extensions: [".js", ".ts", ".d.ts"], + }, + alias: { + map: [["~", "./src/"]], + extensions: [".js", ".ts", ".d.ts", ".vue"], + }, + }, + "import/core-modules": ["windi.css", "virtual:generated-layouts", "virtual:generated-pages"], + }, + rules: { + "eol-last": ["error", "always"], + + "vue/multi-word-component-names": "off", + + // TS + "@typescript-eslint/no-empty-interface": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-unused-vars": "off", + "no-unused-vars": "off", + + // unicorn + "unicorn/better-regex": "error", + "unicorn/empty-brace-spaces": "error", + "unicorn/escape-case": "error", + "unicorn/new-for-builtins": "error", + "unicorn/no-array-for-each": "error", + "unicorn/no-array-push-push": "error", + "unicorn/no-console-spaces": "error", + "unicorn/no-instanceof-array": "error", + "unicorn/no-new-buffer": "error", + "unicorn/no-unsafe-regex": "error", + "unicorn/no-useless-promise-resolve-reject": "error", + "unicorn/prefer-array-find": "error", + "unicorn/prefer-array-flat": "error", + "unicorn/prefer-array-flat-map": "error", + "unicorn/prefer-array-index-of": "error", + "unicorn/prefer-array-some": "error", + "unicorn/prefer-at": "error", + "unicorn/prefer-date-now": "error", + "unicorn/prefer-default-parameters": "error", + "unicorn/prefer-dom-node-append": "error", + "unicorn/prefer-export-from": "error", + "unicorn/prefer-includes": "error", + "unicorn/prefer-modern-dom-apis": "error", + "unicorn/prefer-set-has": "error", + "unicorn/prefer-spread": "error", + "unicorn/prefer-string-replace-all": "error", + "unicorn/prefer-switch": "error", + "unicorn/prefer-ternary": "error", + "unicorn/relative-url-style": "error", + "unicorn/throw-new-error": "error", + }, + overrides: [ + { + files: ".eslintrc.js", + rules: { + "unicorn/prefer-module": "off", + }, + }, + { + files: ["*.html"], + rules: { + "vue/comment-directive": "off", + }, + }, + ], +}; diff --git a/frontend-new/.husky/pre-commit b/frontend-new/.husky/pre-commit new file mode 100755 index 000000000..d5c79e359 --- /dev/null +++ b/frontend-new/.husky/pre-commit @@ -0,0 +1,6 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +cd frontend-new +pnpm lint-staged + diff --git a/frontend-new/.prettierignore b/frontend-new/.prettierignore index 5fa6442ad..0edee117f 100644 --- a/frontend-new/.prettierignore +++ b/frontend-new/.prettierignore @@ -2,4 +2,7 @@ /.cache/** /dist/** /tests/unit/coverage/** -**/.temp/** \ No newline at end of file +**/.temp/** +pnpm-lock.yaml +.vscode/** +.idea/** diff --git a/frontend-new/.prettierrc b/frontend-new/.prettierrc index bc50fa4f9..af8ffc805 100644 --- a/frontend-new/.prettierrc +++ b/frontend-new/.prettierrc @@ -3,5 +3,6 @@ "semi": true, "singleQuote": false, "printWidth": 160, - "arrowParens": "always" + "arrowParens": "always", + "trailingComma": "es5" } diff --git a/frontend-new/package.json b/frontend-new/package.json index 436bbfd8a..a3f036429 100644 --- a/frontend-new/package.json +++ b/frontend-new/package.json @@ -1,78 +1,77 @@ { - "private": true, - "engines": { - "node": ">=16" - }, - "scripts": { - "dev": "vite-ssr dev --port 3333", - "dev:spa": "vite --port 3333", - "build": "cross-env NODE_ENV=production vite-ssr build", - "preview": "vite-ssr --port 1337 --open", - "lint": "eslint --ext \".js,.vue,.ts,.json\" --ignore-path .gitignore --fix .", - "format": "prettier . --write" - }, - "dependencies": { - "@headlessui/vue": "^1.5.0", - "@vueuse/core": "^7.5.5", - "@vueuse/head": "^0.7.5", - "@vueuse/integrations": "^7.5.5", - "axios": "^0.26.0", - "jwt-decode": "^3.1.2", - "nprogress": "^0.2.0", - "pinia": "^2.0.11", - "prism-theme-vars": "^0.2.2", - "qs": "^6.10.3", - "universal-cookie": "^4.0.4", - "vite-ssr": "^0.15.0", - "vue": "^3.2.31", - "vue-i18n": "^9.1.9", - "vue-router": "^4.0.12" - }, - "devDependencies": { - "@antfu/eslint-config": "^0.16.1", - "@iconify/json": "^2.1.7", - "@intlify/vite-plugin-vue-i18n": "^3.3.0", - "@types/markdown-it-link-attributes": "^3.0.1", - "@types/nprogress": "^0.2.0", - "@types/qs": "^6.9.7", - "@typescript-eslint/eslint-plugin": "^5.12.0", - "@vitejs/plugin-vue": "^2.2.0", - "@vue/compiler-sfc": "^3.2.31", - "@vue/server-renderer": "^3.2.31", - "cross-env": "^7.0.3", - "eslint": "^8.10.0", - "eslint-config-prettier": "^8.4.0", - "eslint-plugin-vue": "^8.5.0", - "markdown-it-link-attributes": "^4.0.0", - "markdown-it-prism": "^2.2.3", - "node-fetch": "^3.2.0", - "pnpm": "^6.32.1", - "prettier": "2.5.1", - "typescript": "^4.5.5", - "unplugin-auto-import": "^0.6.1", - "unplugin-icons": "^0.13.2", - "unplugin-vue-components": "^0.17.21", - "vite": "^2.7.13", - "vite-plugin-eslint": "^1.3.0", - "vite-plugin-md": "^0.11.8", - "vite-plugin-pages": "^0.20.2", - "vite-plugin-pwa": "^0.11.13", - "vite-plugin-vue-layouts": "^0.6.0", - "vite-plugin-windicss": "^1.7.1" - }, - "//": "TODO steal from work", - "eslintConfig": { - "extends": [ - "@antfu/eslint-config", - "prettier" - ], - "env": { - "shared-node-browser": true - }, - "rules": { - "no-unused-vars": "off", - "@typescript-eslint/no-unused-vars": "off", - "no-console": "off" - } - } + "private": true, + "engines": { + "node": ">=16" + }, + "scripts": { + "dev": "vite-ssr dev --port 3333", + "dev:spa": "vite --port 3333", + "build": "cross-env NODE_ENV=production vite-ssr build", + "preview": "vite-ssr --port 1337 --open", + "lint:eslint": "eslint --ext \".js,.vue,.ts,.json,.html\" --ignore-path .gitignore --fix .", + "lint:prettier": "prettier -w .", + "prepare": "cd .. && husky install frontend-new/.husky" + }, + "lint-staged": { + "*.{ts,js,vue,json,html}": [ + "prettier -c", + "eslint" + ] + }, + "dependencies": { + "@headlessui/vue": "^1.5.0", + "@vueuse/core": "^7.5.5", + "@vueuse/head": "^0.7.5", + "@vueuse/integrations": "^7.5.5", + "axios": "^0.25.0", + "jwt-decode": "^3.1.2", + "nprogress": "^0.2.0", + "pinia": "^2.0.11", + "prism-theme-vars": "^0.2.2", + "qs": "^6.10.3", + "swagger-ui-dist": "^4.5.2", + "universal-cookie": "^4.0.4", + "vite-ssr": "^0.15.0", + "vue": "^3.2.29", + "vue-i18n": "^9.1.9", + "vue-router": "^4.0.12" + }, + "devDependencies": { + "@iconify/json": "^2.0.33", + "@intlify/vite-plugin-vue-i18n": "^3.3.0", + "@types/markdown-it-link-attributes": "^3.0.1", + "@types/nprogress": "^0.2.0", + "@types/prettier": "^2.4.4", + "@types/qs": "^6.9.7", + "@vitejs/plugin-vue": "^2.1.0", + "@vue/compiler-sfc": "^3.2.29", + "@vue/eslint-config-typescript": "^10.0.0", + "@vue/server-renderer": "^3.2.29", + "cross-env": "^7.0.3", + "eslint": "^8.10.0", + "eslint-config-prettier": "^8.3.0", + "eslint-import-resolver-alias": "^1.1.2", + "eslint-plugin-eslint-comments": "^3.2.0", + "eslint-plugin-import": "^2.25.4", + "eslint-plugin-unicorn": "^41.0.0", + "eslint-plugin-vue": "^8.4.1", + "husky": "^7.0.4", + "lint-staged": "^12.3.4", + "markdown-it-link-attributes": "^4.0.0", + "markdown-it-prism": "^2.2.2", + "node-fetch": "^3.2.0", + "pnpm": "^6.29.1", + "prettier": "2.5.1", + "typescript": "^4.5.5", + "unplugin-auto-import": "^0.5.11", + "unplugin-icons": "^0.13.0", + "unplugin-vue-components": "^0.17.16", + "vite": "^2.7.13", + "vite-plugin-eslint": "^1.3.0", + "vite-plugin-md": "^0.11.7", + "vite-plugin-pages": "^0.20.1", + "vite-plugin-pwa": "^0.11.13", + "vite-plugin-vue-layouts": "^0.6.0", + "vite-plugin-windicss": "^1.6.3" + } } diff --git a/frontend-new/pnpm-lock.yaml b/frontend-new/pnpm-lock.yaml index 15112949a..5e858b5b6 100644 --- a/frontend-new/pnpm-lock.yaml +++ b/frontend-new/pnpm-lock.yaml @@ -1,49 +1,56 @@ lockfileVersion: 5.3 specifiers: - '@antfu/eslint-config': ^0.16.1 '@headlessui/vue': ^1.5.0 - '@iconify/json': ^2.1.7 + '@iconify/json': ^2.0.33 '@intlify/vite-plugin-vue-i18n': ^3.3.0 '@types/markdown-it-link-attributes': ^3.0.1 '@types/nprogress': ^0.2.0 + '@types/prettier': ^2.4.4 '@types/qs': ^6.9.7 - '@typescript-eslint/eslint-plugin': ^5.12.0 - '@vitejs/plugin-vue': ^2.2.0 - '@vue/compiler-sfc': ^3.2.31 - '@vue/server-renderer': ^3.2.31 + '@vitejs/plugin-vue': ^2.1.0 + '@vue/compiler-sfc': ^3.2.29 + '@vue/eslint-config-typescript': ^10.0.0 + '@vue/server-renderer': ^3.2.29 '@vueuse/core': ^7.5.5 '@vueuse/head': ^0.7.5 '@vueuse/integrations': ^7.5.5 - axios: ^0.26.0 + axios: ^0.25.0 cross-env: ^7.0.3 eslint: ^8.10.0 - eslint-config-prettier: ^8.4.0 - eslint-plugin-vue: ^8.5.0 + eslint-config-prettier: ^8.3.0 + eslint-import-resolver-alias: ^1.1.2 + eslint-plugin-eslint-comments: ^3.2.0 + eslint-plugin-import: ^2.25.4 + eslint-plugin-unicorn: ^41.0.0 + eslint-plugin-vue: ^8.4.1 + husky: ^7.0.4 jwt-decode: ^3.1.2 + lint-staged: ^12.3.4 markdown-it-link-attributes: ^4.0.0 - markdown-it-prism: ^2.2.3 + markdown-it-prism: ^2.2.2 node-fetch: ^3.2.0 nprogress: ^0.2.0 pinia: ^2.0.11 - pnpm: ^6.32.1 + pnpm: ^6.29.1 prettier: 2.5.1 prism-theme-vars: ^0.2.2 qs: ^6.10.3 + swagger-ui-dist: ^4.5.2 typescript: ^4.5.5 universal-cookie: ^4.0.4 - unplugin-auto-import: ^0.6.1 - unplugin-icons: ^0.13.2 - unplugin-vue-components: ^0.17.21 + unplugin-auto-import: ^0.5.11 + unplugin-icons: ^0.13.0 + unplugin-vue-components: ^0.17.16 vite: ^2.7.13 vite-plugin-eslint: ^1.3.0 - vite-plugin-md: ^0.11.8 - vite-plugin-pages: ^0.20.2 + vite-plugin-md: ^0.11.7 + vite-plugin-pages: ^0.20.1 vite-plugin-pwa: ^0.11.13 vite-plugin-vue-layouts: ^0.6.0 - vite-plugin-windicss: ^1.7.1 + vite-plugin-windicss: ^1.6.3 vite-ssr: ^0.15.0 - vue: ^3.2.31 + vue: ^3.2.29 vue-i18n: ^9.1.9 vue-router: ^4.0.12 @@ -52,12 +59,13 @@ dependencies: '@vueuse/core': 7.5.5_vue@3.2.31 '@vueuse/head': 0.7.5_vue@3.2.31 '@vueuse/integrations': 7.5.5_vue@3.2.31 - axios: 0.26.0 + axios: 0.25.0 jwt-decode: 3.1.2 nprogress: 0.2.0 pinia: 2.0.11_typescript@4.5.5+vue@3.2.31 prism-theme-vars: 0.2.2 qs: 6.10.3 + swagger-ui-dist: 4.5.2 universal-cookie: 4.0.4 vite-ssr: 0.15.0_6eb5242b33f46f5ec35e3b379e1eba22 vue: 3.2.31 @@ -65,27 +73,33 @@ dependencies: vue-router: 4.0.12_vue@3.2.31 devDependencies: - '@antfu/eslint-config': 0.16.1_eslint@8.10.0+typescript@4.5.5 '@iconify/json': 2.1.7 '@intlify/vite-plugin-vue-i18n': 3.3.0_vite@2.7.13+vue-i18n@9.1.9 '@types/markdown-it-link-attributes': 3.0.1 '@types/nprogress': 0.2.0 + '@types/prettier': 2.4.4 '@types/qs': 6.9.7 - '@typescript-eslint/eslint-plugin': 5.12.0_eslint@8.10.0+typescript@4.5.5 '@vitejs/plugin-vue': 2.2.0_vite@2.7.13+vue@3.2.31 '@vue/compiler-sfc': 3.2.31 + '@vue/eslint-config-typescript': 10.0.0_6bae48b99b40de9ce3e67c9c629a2961 '@vue/server-renderer': 3.2.31_vue@3.2.31 cross-env: 7.0.3 eslint: 8.10.0 eslint-config-prettier: 8.4.0_eslint@8.10.0 + eslint-import-resolver-alias: 1.1.2_eslint-plugin-import@2.25.4 + eslint-plugin-eslint-comments: 3.2.0_eslint@8.10.0 + eslint-plugin-import: 2.25.4_eslint@8.10.0 + eslint-plugin-unicorn: 41.0.0_eslint@8.10.0 eslint-plugin-vue: 8.5.0_eslint@8.10.0 + husky: 7.0.4 + lint-staged: 12.3.4 markdown-it-link-attributes: 4.0.0 markdown-it-prism: 2.2.3 node-fetch: 3.2.0 pnpm: 6.32.1 prettier: 2.5.1 typescript: 4.5.5 - unplugin-auto-import: 0.6.1_@vueuse+core@7.5.5+vite@2.7.13 + unplugin-auto-import: 0.5.11_@vueuse+core@7.5.5+vite@2.7.13 unplugin-icons: 0.13.2_29e18462d7f43629d5438959ea0c6bea unplugin-vue-components: 0.17.21_vite@2.7.13+vue@3.2.31 vite: 2.7.13 @@ -105,95 +119,6 @@ packages: '@jridgewell/trace-mapping': 0.3.2 dev: true - /@antfu/eslint-config-basic/0.16.1_eslint@8.10.0: - resolution: {integrity: sha512-kUA7UBD1W8FG2frH4pKfos4l5eUSxVH8oMK7+T9OxBAxpvXDAYUGU0KNZoMOdhWhu0dmE/7iHXYbnu6r9KXwUw==} - peerDependencies: - eslint: '>=7.4.0' - dependencies: - eslint: 8.10.0 - eslint-config-standard: 17.0.0-0_680bb9061bbf9d70cf0efe038dc38008 - eslint-plugin-eslint-comments: 3.2.0_eslint@8.10.0 - eslint-plugin-html: 6.2.0 - eslint-plugin-import: 2.25.4_eslint@8.10.0 - eslint-plugin-jsonc: 2.1.0_eslint@8.10.0 - eslint-plugin-n: 14.0.0_eslint@8.10.0 - eslint-plugin-promise: 6.0.0_eslint@8.10.0 - eslint-plugin-unicorn: 40.1.0_eslint@8.10.0 - eslint-plugin-yml: 0.12.0_eslint@8.10.0 - jsonc-eslint-parser: 2.1.0 - yaml-eslint-parser: 0.5.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@antfu/eslint-config-react/0.16.1_eslint@8.10.0+typescript@4.5.5: - resolution: {integrity: sha512-UU/KqDVRb6/XQVBsrL2a3fBwn2NRGWnZCBPAU9HbIqLY/zJ5p8CpBJTvvIvCC4p4aiO3unwnYhhf5SdCQtfOjw==} - peerDependencies: - eslint: '>=7.4.0' - dependencies: - '@antfu/eslint-config-ts': 0.16.1_eslint@8.10.0+typescript@4.5.5 - eslint: 8.10.0 - eslint-plugin-react: 7.28.0_eslint@8.10.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@antfu/eslint-config-ts/0.16.1_eslint@8.10.0+typescript@4.5.5: - resolution: {integrity: sha512-FrIosrYILXog7v8GcQkj8YyMKe6HxUvv8DFDHxQjR5liI77BQ9kmIqRu8JZ/6RwMEEpMWV5Ed+LDR7FDjJiTxg==} - peerDependencies: - eslint: '>=7.4.0' - typescript: '>=3.9' - dependencies: - '@antfu/eslint-config-basic': 0.16.1_eslint@8.10.0 - '@typescript-eslint/eslint-plugin': 5.12.0_226e0cd99c07ccb7b6d7a783a15c23f5 - '@typescript-eslint/parser': 5.10.2_eslint@8.10.0+typescript@4.5.5 - eslint: 8.10.0 - typescript: 4.5.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@antfu/eslint-config-vue/0.16.1_eslint@8.10.0+typescript@4.5.5: - resolution: {integrity: sha512-2BMQBTVQrElu2Pvmubgc1G3BrCbaQjBzcepZZvHNnK74Wq4ec1Cl5i9BMRVVwBGg5fIg5erRPzUWr17j5BLa0A==} - peerDependencies: - eslint: '>=7.4.0' - dependencies: - '@antfu/eslint-config-ts': 0.16.1_eslint@8.10.0+typescript@4.5.5 - eslint: 8.10.0 - eslint-plugin-vue: 8.5.0_eslint@8.10.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@antfu/eslint-config/0.16.1_eslint@8.10.0+typescript@4.5.5: - resolution: {integrity: sha512-GYJMtcEpHNNQA1A2acsRqSKGRkLEZ38Y9lvHBcX7HomJ+NsPFG4a3AJ5DW1CKpPTk5W3mOF0XBMiGA+pQOC37g==} - peerDependencies: - eslint: '>=7.4.0' - dependencies: - '@antfu/eslint-config-react': 0.16.1_eslint@8.10.0+typescript@4.5.5 - '@antfu/eslint-config-vue': 0.16.1_eslint@8.10.0+typescript@4.5.5 - '@typescript-eslint/eslint-plugin': 5.12.0_226e0cd99c07ccb7b6d7a783a15c23f5 - '@typescript-eslint/parser': 5.10.2_eslint@8.10.0+typescript@4.5.5 - eslint: 8.10.0 - eslint-config-standard: 17.0.0-0_680bb9061bbf9d70cf0efe038dc38008 - eslint-plugin-eslint-comments: 3.2.0_eslint@8.10.0 - eslint-plugin-html: 6.2.0 - eslint-plugin-import: 2.25.4_eslint@8.10.0 - eslint-plugin-jsonc: 2.1.0_eslint@8.10.0 - eslint-plugin-n: 14.0.0_eslint@8.10.0 - eslint-plugin-promise: 6.0.0_eslint@8.10.0 - eslint-plugin-unicorn: 40.1.0_eslint@8.10.0 - eslint-plugin-vue: 8.5.0_eslint@8.10.0 - eslint-plugin-yml: 0.12.0_eslint@8.10.0 - jsonc-eslint-parser: 2.1.0 - yaml-eslint-parser: 0.5.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - /@antfu/install-pkg/0.1.0: resolution: {integrity: sha512-VaIJd3d1o7irZfK1U0nvBsHMyjkuyMP3HKYVV53z8DKyulkHKmjhhtccXO51WSPeeSHIeoJEoNOKavYpS7jkZw==} dependencies: @@ -1749,6 +1674,10 @@ packages: resolution: {integrity: sha512-1cYJrqq9GezNFPsWTZpFut/d4CjpZqA0vhqDUPFWYKF1oIyBz5qnoYMzR+0C/T96t3ebLAC1SSnwrVOm5/j74A==} dev: true + /@types/prettier/2.4.4: + resolution: {integrity: sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==} + dev: true + /@types/qs/6.9.7: resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} dev: true @@ -1794,32 +1723,6 @@ packages: - supports-color dev: true - /@typescript-eslint/eslint-plugin/5.12.0_eslint@8.10.0+typescript@4.5.5: - resolution: {integrity: sha512-fwCMkDimwHVeIOKeBHiZhRUfJXU8n6xW1FL9diDxAyGAFvKcH4csy0v7twivOQdQdA0KC8TDr7GGRd3L4Lv0rQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 5.12.0 - '@typescript-eslint/type-utils': 5.12.0_eslint@8.10.0+typescript@4.5.5 - '@typescript-eslint/utils': 5.12.0_eslint@8.10.0+typescript@4.5.5 - debug: 4.3.3 - eslint: 8.10.0 - functional-red-black-tree: 1.0.1 - ignore: 5.2.0 - regexpp: 3.2.0 - semver: 7.3.5 - tsutils: 3.21.0_typescript@4.5.5 - typescript: 4.5.5 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/parser/5.10.2_eslint@8.10.0+typescript@4.5.5: resolution: {integrity: sha512-JaNYGkaQVhP6HNF+lkdOr2cAs2wdSZBoalE22uYWq8IEv/OVH0RksSGydk+sW8cLoSeYmC+OHvRyv2i4AQ7Czg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1958,7 +1861,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: '@typescript-eslint/types': 5.12.0 - eslint-visitor-keys: 3.2.0 + eslint-visitor-keys: 3.3.0 dev: true /@vitejs/plugin-vue/2.2.0_vite@2.7.13+vue@3.2.31: @@ -2010,6 +1913,23 @@ packages: resolution: {integrity: sha512-FqC4s3pm35qGVeXRGOjTsRzlkJjrBLriDS9YXbflHLsfA9FrcKzIyWnLXoNm+/7930E8rRakXuAc2QkC50swAw==} dev: false + /@vue/eslint-config-typescript/10.0.0_6bae48b99b40de9ce3e67c9c629a2961: + resolution: {integrity: sha512-F94cL8ug3FaYXlCfU5/wiGjk1qeadmoBpRGAOBq+qre3Smdupa59dd6ZJrsfRODpsMPyTG7330juMDsUvpZ3Rw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 + eslint-plugin-vue: ^8.0.1 + dependencies: + '@typescript-eslint/eslint-plugin': 5.12.0_226e0cd99c07ccb7b6d7a783a15c23f5 + '@typescript-eslint/parser': 5.10.2_eslint@8.10.0+typescript@4.5.5 + eslint: 8.10.0 + eslint-plugin-vue: 8.5.0_eslint@8.10.0 + vue-eslint-parser: 8.2.0_eslint@8.10.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@vue/reactivity-transform/3.2.31: resolution: {integrity: sha512-uS4l4z/W7wXdI+Va5pgVxBJ345wyGFKvpPYtdSgvfJfX/x2Ymm6ophQlXXB6acqGHtXuBqNyyO3zVp9b1r0MOA==} dependencies: @@ -2164,6 +2084,14 @@ packages: hasBin: true dev: true + /aggregate-error/3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + /ajv/6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -2187,10 +2115,22 @@ packages: engines: {node: '>=6'} dev: true + /ansi-escapes/4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + /ansi-regex/5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + /ansi-regex/6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + /ansi-styles/3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -2204,6 +2144,11 @@ packages: dependencies: color-convert: 2.0.1 + /ansi-styles/6.1.0: + resolution: {integrity: sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==} + engines: {node: '>=12'} + dev: true + /anymatch/3.1.2: resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} engines: {node: '>= 8'} @@ -2247,15 +2192,6 @@ packages: es-abstract: 1.19.1 dev: true - /array.prototype.flatmap/1.2.5: - resolution: {integrity: sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.3 - es-abstract: 1.19.1 - dev: true - /astral-regex/2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} @@ -2285,8 +2221,8 @@ packages: dev: false optional: true - /axios/0.26.0: - resolution: {integrity: sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==} + /axios/0.25.0: + resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==} dependencies: follow-redirects: 1.14.8 transitivePeerDependencies: @@ -2442,6 +2378,34 @@ packages: escape-string-regexp: 1.0.5 dev: true + /clean-stack/2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + dev: true + + /cli-cursor/3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + dev: true + + /cli-truncate/2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.3 + dev: true + + /cli-truncate/3.1.0: + resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + slice-ansi: 5.0.0 + string-width: 5.1.1 + dev: true + /cliui/6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} dependencies: @@ -2470,10 +2434,19 @@ packages: /color-name/1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + /colorette/2.0.16: + resolution: {integrity: sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==} + dev: true + /commander/2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: true + /commander/8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + dev: true + /common-tags/1.8.2: resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} engines: {node: '>=4.0.0'} @@ -2565,6 +2538,19 @@ packages: ms: 2.1.2 dev: true + /debug/4.3.3_supports-color@9.2.1: + resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + supports-color: 9.2.1 + dev: true + /decamelize/1.2.0: resolution: {integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=} engines: {node: '>=0.10.0'} @@ -2633,33 +2619,6 @@ packages: esutils: 2.0.3 dev: true - /dom-serializer/1.3.2: - resolution: {integrity: sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==} - dependencies: - domelementtype: 2.2.0 - domhandler: 4.3.0 - entities: 2.2.0 - dev: true - - /domelementtype/2.2.0: - resolution: {integrity: sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==} - dev: true - - /domhandler/4.3.0: - resolution: {integrity: sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==} - engines: {node: '>= 4'} - dependencies: - domelementtype: 2.2.0 - dev: true - - /domutils/2.8.0: - resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - dependencies: - dom-serializer: 1.3.2 - domelementtype: 2.2.0 - domhandler: 4.3.0 - dev: true - /drauu/0.2.1: resolution: {integrity: sha512-bGp/yplU9fXKB4S4utn63vQSCW6QAtN3mPTIpGvcaWhSwvFuBb34A33NkyT4bFGwTWdN9iu491507ObOXmd1ug==} requiresBuild: true @@ -2668,6 +2627,10 @@ packages: dev: false optional: true + /eastasianwidth/0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + /ee-first/1.1.1: resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} dev: false @@ -2687,6 +2650,10 @@ packages: /emoji-regex/8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + /emoji-regex/9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + /encode-utf8/1.0.3: resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} dev: false @@ -2708,15 +2675,6 @@ packages: resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==} dev: true - /entities/2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - dev: true - - /entities/3.0.1: - resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} - engines: {node: '>=0.12'} - dev: true - /error-ex/1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: @@ -2959,18 +2917,13 @@ packages: eslint: 8.10.0 dev: true - /eslint-config-standard/17.0.0-0_680bb9061bbf9d70cf0efe038dc38008: - resolution: {integrity: sha512-sf9udec8fkLTnH82SmhZQ3E31e4eJaMW09Mt9fbN3OccXFtvSSbGrltpQgGFVooGHoIdiMzDfp6ZNFd+I6Ob+w==} + /eslint-import-resolver-alias/1.1.2_eslint-plugin-import@2.25.4: + resolution: {integrity: sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w==} + engines: {node: '>= 4'} peerDependencies: - eslint: ^8.0.1 - eslint-plugin-import: ^2.25.2 - eslint-plugin-n: ^14.0.0 - eslint-plugin-promise: ^6.0.0 + eslint-plugin-import: '>=1.4.0' dependencies: - eslint: 8.10.0 eslint-plugin-import: 2.25.4_eslint@8.10.0 - eslint-plugin-n: 14.0.0_eslint@8.10.0 - eslint-plugin-promise: 6.0.0_eslint@8.10.0 dev: true /eslint-import-resolver-node/0.3.6: @@ -2988,17 +2941,6 @@ packages: find-up: 2.1.0 dev: true - /eslint-plugin-es/4.1.0_eslint@8.10.0: - resolution: {integrity: sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==} - engines: {node: '>=8.10.0'} - peerDependencies: - eslint: '>=4.19.1' - dependencies: - eslint: 8.10.0 - eslint-utils: 2.1.0 - regexpp: 3.2.0 - dev: true - /eslint-plugin-eslint-comments/3.2.0_eslint@8.10.0: resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} engines: {node: '>=6.5.0'} @@ -3010,12 +2952,6 @@ packages: ignore: 5.2.0 dev: true - /eslint-plugin-html/6.2.0: - resolution: {integrity: sha512-vi3NW0E8AJombTvt8beMwkL1R/fdRWl4QSNRNMhVQKWm36/X0KF0unGNAY4mqUF06mnwVWZcIcerrCnfn9025g==} - dependencies: - htmlparser2: 7.2.0 - dev: true - /eslint-plugin-import/2.25.4_eslint@8.10.0: resolution: {integrity: sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==} engines: {node: '>=4'} @@ -3038,71 +2974,11 @@ packages: tsconfig-paths: 3.12.0 dev: true - /eslint-plugin-jsonc/2.1.0_eslint@8.10.0: - resolution: {integrity: sha512-ueuFWW+u/hjU9+j5Ov+ZoWIukMlaWrB+MS/wfKYWqKkAVr7U9zYqUu4ZwLh2AHU3+FjvmS8+1Va5bP6J/ERVyg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '>=6.0.0' - dependencies: - eslint: 8.10.0 - eslint-utils: 3.0.0_eslint@8.10.0 - jsonc-eslint-parser: 2.1.0 - natural-compare: 1.4.0 - dev: true - - /eslint-plugin-n/14.0.0_eslint@8.10.0: - resolution: {integrity: sha512-mNwplPLsbaKhHyA0fa/cy8j+oF6bF6l81hzBTWa6JOvPcMNAuIogk2ih6d9tYvWYzyUG+7ZFeChqbzdFpg2QrQ==} - engines: {node: '>=12.22.0'} - peerDependencies: - eslint: '>=7.0.0' - dependencies: - eslint: 8.10.0 - eslint-plugin-es: 4.1.0_eslint@8.10.0 - eslint-utils: 3.0.0_eslint@8.10.0 - ignore: 5.2.0 - is-core-module: 2.8.1 - minimatch: 3.0.4 - resolve: 1.22.0 - semver: 6.3.0 - dev: true - - /eslint-plugin-promise/6.0.0_eslint@8.10.0: - resolution: {integrity: sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - dependencies: - eslint: 8.10.0 - dev: true - - /eslint-plugin-react/7.28.0_eslint@8.10.0: - resolution: {integrity: sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - array-includes: 3.1.4 - array.prototype.flatmap: 1.2.5 - doctrine: 2.1.0 - eslint: 8.10.0 - estraverse: 5.3.0 - jsx-ast-utils: 3.2.1 - minimatch: 3.0.4 - object.entries: 1.1.5 - object.fromentries: 2.0.5 - object.hasown: 1.1.0 - object.values: 1.1.5 - prop-types: 15.8.1 - resolve: 2.0.0-next.3 - semver: 6.3.0 - string.prototype.matchall: 4.0.6 - dev: true - - /eslint-plugin-unicorn/40.1.0_eslint@8.10.0: - resolution: {integrity: sha512-y5doK2DF9Sr5AqKEHbHxjFllJ167nKDRU01HDcWyv4Tnmaoe9iNxMrBnaybZvWZUaE3OC5Unu0lNIevYamloig==} + /eslint-plugin-unicorn/41.0.0_eslint@8.10.0: + resolution: {integrity: sha512-xoJCaRc1uy5REg9DkVga1BkZV57jJxoqOcrU28QHZB89Lk5LdSqdVyTIt9JQVfHNKaiyJ7X+3iLlIn+VEHWEzA==} engines: {node: '>=12'} peerDependencies: - eslint: '>=7.32.0' + eslint: '>=8.8.0' dependencies: '@babel/helper-validator-identifier': 7.16.7 ci-info: 3.3.0 @@ -3136,21 +3012,6 @@ packages: - supports-color dev: true - /eslint-plugin-yml/0.12.0_eslint@8.10.0: - resolution: {integrity: sha512-aS82M+diohZTusadiByzh/bKDrfi+Y6VBQkD3ym/7JH+KF9WUB9qKCizLfTaCACwtRrHpqaLz3G8GKmslshyiw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '>=6.0.0' - dependencies: - debug: 4.3.3 - eslint: 8.10.0 - lodash: 4.17.21 - natural-compare: 1.4.0 - yaml-eslint-parser: 0.5.0 - transitivePeerDependencies: - - supports-color - dev: true - /eslint-scope/5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -3194,11 +3055,6 @@ packages: engines: {node: '>=10'} dev: true - /eslint-visitor-keys/3.2.0: - resolution: {integrity: sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - /eslint-visitor-keys/3.3.0: resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3315,15 +3171,6 @@ packages: eslint-visitor-keys: 1.3.0 dev: true - /espree/9.3.0: - resolution: {integrity: sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - acorn: 8.7.0 - acorn-jsx: 5.3.2_acorn@8.7.0 - eslint-visitor-keys: 3.2.0 - dev: true - /espree/9.3.1: resolution: {integrity: sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3697,20 +3544,17 @@ packages: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true - /htmlparser2/7.2.0: - resolution: {integrity: sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==} - dependencies: - domelementtype: 2.2.0 - domhandler: 4.3.0 - domutils: 2.8.0 - entities: 3.0.1 - dev: true - /human-signals/2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} dev: true + /husky/7.0.4: + resolution: {integrity: sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==} + engines: {node: '>=12'} + hasBin: true + dev: true + /idb/6.1.5: resolution: {integrity: sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw==} dev: true @@ -3835,6 +3679,11 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + /is-fullwidth-code-point/4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + dev: true + /is-glob/4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -4048,16 +3897,6 @@ packages: semver: 6.3.0 dev: true - /jsonc-eslint-parser/2.1.0: - resolution: {integrity: sha512-qCRJWlbP2v6HbmKW7R3lFbeiVWHo+oMJ0j+MizwvauqnCV/EvtAeEeuCgoc/ErtsuoKgYB8U4Ih8AxJbXoE6/g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - acorn: 8.7.0 - eslint-visitor-keys: 3.2.0 - espree: 9.3.0 - semver: 7.3.5 - dev: true - /jsonfile/6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: @@ -4071,14 +3910,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /jsx-ast-utils/3.2.1: - resolution: {integrity: sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==} - engines: {node: '>=4.0'} - dependencies: - array-includes: 3.1.4 - object.assign: 4.1.2 - dev: true - /jwt-decode/3.1.2: resolution: {integrity: sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==} dev: false @@ -4105,6 +3936,11 @@ packages: type-check: 0.4.0 dev: true + /lilconfig/2.0.4: + resolution: {integrity: sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==} + engines: {node: '>=10'} + dev: true + /lines-and-columns/1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true @@ -4115,6 +3951,47 @@ packages: uc.micro: 1.0.6 dev: true + /lint-staged/12.3.4: + resolution: {integrity: sha512-yv/iK4WwZ7/v0GtVkNb3R82pdL9M+ScpIbJLJNyCXkJ1FGaXvRCOg/SeL59SZtPpqZhE7BD6kPKFLIDUhDx2/w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dependencies: + cli-truncate: 3.1.0 + colorette: 2.0.16 + commander: 8.3.0 + debug: 4.3.3_supports-color@9.2.1 + execa: 5.1.1 + lilconfig: 2.0.4 + listr2: 4.0.4 + micromatch: 4.0.4 + normalize-path: 3.0.0 + object-inspect: 1.12.0 + string-argv: 0.3.1 + supports-color: 9.2.1 + yaml: 1.10.2 + transitivePeerDependencies: + - enquirer + dev: true + + /listr2/4.0.4: + resolution: {integrity: sha512-vJOm5KD6uZXjSsrwajr+mNacIjf87gWvlBEltPWLbTkslUscWAzquyK4xfe9Zd4RDgO5nnwFyV06FC+uVR+5mg==} + engines: {node: '>=12'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + dependencies: + cli-truncate: 2.1.0 + colorette: 2.0.16 + log-update: 4.0.0 + p-map: 4.0.0 + rfdc: 1.3.0 + rxjs: 7.5.4 + through: 2.3.8 + wrap-ansi: 7.0.0 + dev: true + /local-pkg/0.4.1: resolution: {integrity: sha512-lL87ytIGP2FU5PWwNDo0w3WhIo2gopIAxPg9RxDYF7m4rr5ahuZxP22xnJHIvaLTe4Z9P6uKKY2UHiwyB4pcrw==} engines: {node: '>=14'} @@ -4161,11 +4038,14 @@ packages: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: true - /loose-envify/1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true + /log-update/4.0.0: + resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} + engines: {node: '>=10'} dependencies: - js-tokens: 4.0.0 + ansi-escapes: 4.3.2 + cli-cursor: 3.1.0 + slice-ansi: 4.0.0 + wrap-ansi: 6.2.0 dev: true /lru-cache/6.0.0: @@ -4318,11 +4198,6 @@ packages: resolution: {integrity: sha1-y480xTIT2JVyP8urkH6UIq28r7E=} dev: false - /object-assign/4.1.1: - resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=} - engines: {node: '>=0.10.0'} - dev: true - /object-inspect/1.12.0: resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==} @@ -4349,31 +4224,6 @@ packages: object-keys: 1.1.1 dev: true - /object.entries/1.1.5: - resolution: {integrity: sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.3 - es-abstract: 1.19.1 - dev: true - - /object.fromentries/2.0.5: - resolution: {integrity: sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.3 - es-abstract: 1.19.1 - dev: true - - /object.hasown/1.1.0: - resolution: {integrity: sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==} - dependencies: - define-properties: 1.1.3 - es-abstract: 1.19.1 - dev: true - /object.values/1.1.5: resolution: {integrity: sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==} engines: {node: '>= 0.4'} @@ -4455,6 +4305,13 @@ packages: p-limit: 3.1.0 dev: true + /p-map/4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + dependencies: + aggregate-error: 3.1.0 + dev: true + /p-try/1.0.0: resolution: {integrity: sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=} engines: {node: '>=4'} @@ -4603,14 +4460,6 @@ packages: engines: {node: '>=0.4.0'} dev: true - /prop-types/15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - dev: true - /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} @@ -4646,10 +4495,6 @@ packages: safe-buffer: 5.2.1 dev: true - /react-is/16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - dev: true - /react-ssr-prepass/1.5.0: resolution: {integrity: sha512-yFNHrlVEReVYKsLI5lF05tZoHveA5pGzjFbFJY/3pOqqjGOmMmqx83N4hIjN2n6E1AOa+eQEUxs3CgRnPmT0RQ==} peerDependencies: @@ -4774,11 +4619,12 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true - /resolve/2.0.0-next.3: - resolution: {integrity: sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==} + /restore-cursor/3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} dependencies: - is-core-module: 2.8.1 - path-parse: 1.0.7 + onetime: 5.1.2 + signal-exit: 3.0.7 dev: true /reusify/1.0.4: @@ -4786,6 +4632,10 @@ packages: engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: true + /rfdc/1.3.0: + resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + dev: true + /rimraf/3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true @@ -4821,6 +4671,12 @@ packages: queue-microtask: 1.2.3 dev: true + /rxjs/7.5.4: + resolution: {integrity: sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==} + dependencies: + tslib: 2.3.1 + dev: true + /safe-buffer/5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: true @@ -4905,6 +4761,15 @@ packages: engines: {node: '>=8'} dev: true + /slice-ansi/3.0.0: + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + /slice-ansi/4.0.0: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} @@ -4914,6 +4779,14 @@ packages: is-fullwidth-code-point: 3.0.0 dev: true + /slice-ansi/5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.1.0 + is-fullwidth-code-point: 4.0.0 + dev: true + /source-map-js/1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -4985,6 +4858,11 @@ packages: engines: {node: '>= 0.6'} dev: false + /string-argv/0.3.1: + resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} + engines: {node: '>=0.6.19'} + dev: true + /string-width/4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -4993,6 +4871,15 @@ packages: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + /string-width/5.1.1: + resolution: {integrity: sha512-V4jFFhDoJzUOpG491nUrDginBuZi+wKtG+omlT5hgdBLYGPNNVT/o75JWwsSqClbrYMEV9Dvm3fXjZzxyOjk2w==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.0.1 + dev: true + /string.prototype.matchall/4.0.6: resolution: {integrity: sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==} dependencies: @@ -5035,6 +4922,13 @@ packages: dependencies: ansi-regex: 5.0.1 + /strip-ansi/7.0.1: + resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + /strip-bom-string/1.0.0: resolution: {integrity: sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=} engines: {node: '>=0.10.0'} @@ -5080,11 +4974,20 @@ packages: dependencies: has-flag: 4.0.0 + /supports-color/9.2.1: + resolution: {integrity: sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ==} + engines: {node: '>=12'} + dev: true + /supports-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} dev: true + /swagger-ui-dist/4.5.2: + resolution: {integrity: sha512-wV4w54eW9z+VKbYJBJfULfqO05otCbM9jwgRIkwRl9CrfTVKelDzyhhEvdUQkGUzro+Ir8TOZPiZgKIdIdolWQ==} + dev: false + /tabbable/5.2.1: resolution: {integrity: sha512-40pEZ2mhjaZzK0BnI+QGNjJO8UYx9pP5v7BGe17SORTO0OEuuaAwQTkAp8whcZvqon44wKFOikD+Al11K3JICQ==} dev: false @@ -5135,6 +5038,10 @@ packages: resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} dev: true + /through/2.3.8: + resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=} + dev: true + /to-fast-properties/2.0.0: resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} engines: {node: '>=4'} @@ -5170,6 +5077,10 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true + /tslib/2.3.1: + resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} + dev: true + /tsutils/3.21.0_typescript@4.5.5: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} @@ -5197,6 +5108,11 @@ packages: engines: {node: '>=10'} dev: true + /type-fest/0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + /type-fest/0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} @@ -5273,8 +5189,8 @@ packages: engines: {node: '>= 0.8'} dev: false - /unplugin-auto-import/0.6.1_@vueuse+core@7.5.5+vite@2.7.13: - resolution: {integrity: sha512-rSukyyROmSkqL9tjkA88oLhpG4tXYkk2rTpqGaYKjXRNktHEKf03pit8bamPt95KPVfMLjT0+TPKi6ju0toOIw==} + /unplugin-auto-import/0.5.11_@vueuse+core@7.5.5+vite@2.7.13: + resolution: {integrity: sha512-MJ3POLe/IysRHF4yd32FkKDoxqSRoiuIHm89ys67B8FLuz2Pvh9poeqTVe6IhJsNxwv0+GSdFfj5Dpq24lhm4g==} engines: {node: '>=14'} peerDependencies: '@vueuse/core': '*' @@ -5282,7 +5198,7 @@ packages: '@vueuse/core': optional: true dependencies: - '@antfu/utils': 0.5.0 + '@antfu/utils': 0.4.0 '@rollup/pluginutils': 4.1.2 '@vueuse/core': 7.5.5_vue@3.2.31 local-pkg: 0.4.1 @@ -5886,8 +5802,15 @@ packages: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: false - optional: true + + /wrap-ansi/7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true /wrappy/1.0.2: resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} @@ -5910,15 +5833,6 @@ packages: yaml: 1.10.2 dev: true - /yaml-eslint-parser/0.5.0: - resolution: {integrity: sha512-nJeyLA3YHAzhBTZbRAbu3W6xrSCucyxExmA+ZDtEdUFpGllxAZpto2Zxo2IG0r0eiuEiBM4e+wiAdxTziTq94g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - eslint-visitor-keys: 3.2.0 - lodash: 4.17.21 - yaml: 1.10.2 - dev: true - /yaml/1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} diff --git a/frontend-new/src/App.vue b/frontend-new/src/App.vue index e03aac654..a0e7b0d89 100644 --- a/frontend-new/src/App.vue +++ b/frontend-new/src/App.vue @@ -1,75 +1,70 @@ diff --git a/frontend-new/src/components/Announcement.vue b/frontend-new/src/components/Announcement.vue index 974c7d604..3847c9cec 100644 --- a/frontend-new/src/components/Announcement.vue +++ b/frontend-new/src/components/Announcement.vue @@ -1,13 +1,13 @@ diff --git a/frontend-new/src/components/Footer.vue b/frontend-new/src/components/Footer.vue index 89942ead5..ad609a710 100644 --- a/frontend-new/src/components/Footer.vue +++ b/frontend-new/src/components/Footer.vue @@ -1,76 +1,61 @@ diff --git a/frontend-new/src/components/Header.vue b/frontend-new/src/components/Header.vue index 4936d053e..b15bd4b30 100644 --- a/frontend-new/src/components/Header.vue +++ b/frontend-new/src/components/Header.vue @@ -1,212 +1,171 @@ - diff --git a/frontend-new/src/composables/useApi.ts b/frontend-new/src/composables/useApi.ts index 4fbfb36a1..fd5e15697 100644 --- a/frontend-new/src/composables/useApi.ts +++ b/frontend-new/src/composables/useApi.ts @@ -1,7 +1,7 @@ -import type { HangarApiException } from "hangar-api"; -import type { AxiosError, AxiosRequestConfig } from "axios"; -import qs from "qs"; import { useCookies } from "@vueuse/integrations/useCookies"; +import type { AxiosError, AxiosRequestConfig } from "axios"; +import type { HangarApiException } from "hangar-api"; +import qs from "qs"; import Cookies from "universal-cookie"; import { useApiToken } from "~/composables/useApiToken"; import { useAxios } from "~/composables/useAxios"; @@ -75,21 +75,18 @@ export async function useInternalApi( headers: Record = {} ): Promise { const token = await useApiToken(authed); - if (authed && !token) { - // eslint-disable-next-line prefer-promise-reject-errors - return Promise.reject({ - isAxiosError: true, - response: { - data: { - isHangarApiException: true, - httpError: { - statusCode: 401, - }, - message: "You must be logged in", - } as HangarApiException, - }, - }); - } else { - return request(`internal/${url}`, token, method, data, headers); - } + return authed && !token + ? Promise.reject({ + isAxiosError: true, + response: { + data: { + isHangarApiException: true, + httpError: { + statusCode: 401, + }, + message: "You must be logged in", + } as HangarApiException, + }, + }) + : request(`internal/${url}`, token, method, data, headers); } diff --git a/frontend-new/src/composables/useApiToken.ts b/frontend-new/src/composables/useApiToken.ts index 866762bc5..6ee1570d8 100644 --- a/frontend-new/src/composables/useApiToken.ts +++ b/frontend-new/src/composables/useApiToken.ts @@ -35,11 +35,7 @@ function validateToken(token: string): boolean { export function useApiToken(forceFetch = true): Promise { const store = useAuthStore(); if (store.token) { - if (validateToken(store.token)) { - return Promise.resolve(store.token); - } else { - return refreshToken(); - } + return validateToken(store.token) ? Promise.resolve(store.token) : refreshToken(); } else if (forceFetch) { return refreshToken(); } else { diff --git a/frontend-new/src/composables/useInitialState.ts b/frontend-new/src/composables/useInitialState.ts index a91d8de71..c5cf2b105 100644 --- a/frontend-new/src/composables/useInitialState.ts +++ b/frontend-new/src/composables/useInitialState.ts @@ -2,13 +2,7 @@ import type { Ref } from "vue"; import { onDeactivated, onMounted, onUnmounted, ref } from "vue"; import { useContext } from "vite-ssr/vue"; - -export async function useInitialState( - key: string, - handler: (type: "server" | "client") => Promise, - blocking = false -) : Promise> { - +export async function useInitialState(key: string, handler: (type: "server" | "client") => Promise, blocking = false): Promise> { const { initialState } = useContext(); const responseValue = ref(initialState[key] || null) as Ref; @@ -19,7 +13,6 @@ export async function useInitialState( } }; - onUnmounted(removeState); onDeactivated(removeState); diff --git a/frontend-new/src/composables/useSeo.ts b/frontend-new/src/composables/useSeo.ts index c5523f3fb..03001b1ce 100644 --- a/frontend-new/src/composables/useSeo.ts +++ b/frontend-new/src/composables/useSeo.ts @@ -1,5 +1,5 @@ -import type { TranslateResult } from "vue-i18n"; import type { HeadObject } from "@vueuse/head"; +import type { TranslateResult } from "vue-i18n"; import type { RouteLocationNormalizedLoaded } from "vue-router"; export function useSeo( @@ -112,11 +112,7 @@ function generateBreadcrumbs(route: RouteLocationNormalizedLoaded) { } function guessTitle(segment: string): string { - if (segment === "/" || segment === "") { - return "Hangar"; - } else { - return segment; - } + return segment === "/" || segment === "" ? "Hangar" : segment; } function baseUrl(): string { diff --git a/frontend-new/src/i18n/locales.ts b/frontend-new/src/i18n/locales.ts index 074cf9093..c4c04bc25 100644 --- a/frontend-new/src/i18n/locales.ts +++ b/frontend-new/src/i18n/locales.ts @@ -37,6 +37,6 @@ export const DEFAULT_LANGUAGE = SUPPORTED_LANGUAGES.find((l) => l.default); export const DEFAULT_LOCALE = DEFAULT_LANGUAGE?.locale as string; export function extractLocaleFromPath(path = "") { - const [_, maybeLocale] = path.split("/"); + const maybeLocale = path.split("/")[1]; return SUPPORTED_LOCALES.includes(maybeLocale) ? maybeLocale : DEFAULT_LOCALE; } diff --git a/frontend-new/src/i18n/locales/en.json b/frontend-new/src/i18n/locales/en.json index 13438af55..2440c3346 100644 --- a/frontend-new/src/i18n/locales/en.json +++ b/frontend-new/src/i18n/locales/en.json @@ -103,7 +103,7 @@ "mostDownloads": "Most Downloads", "mostViews": "Most Views", "newest": "Newest", - "recentlyUpdated": "Recently Updated", + "recentlyUpdated": "Recently Updated" }, "category": { "info": "Category", diff --git a/frontend-new/src/layouts/default.vue b/frontend-new/src/layouts/default.vue index c7f7fbce1..b81a136dd 100644 --- a/frontend-new/src/layouts/default.vue +++ b/frontend-new/src/layouts/default.vue @@ -1,14 +1,14 @@ diff --git a/frontend-new/src/layouts/error.vue b/frontend-new/src/layouts/error.vue index 6ceb8fe1b..0c0d67a61 100644 --- a/frontend-new/src/layouts/error.vue +++ b/frontend-new/src/layouts/error.vue @@ -1,5 +1,5 @@ diff --git a/frontend-new/src/main.ts b/frontend-new/src/main.ts index f7f25c322..b316ba409 100644 --- a/frontend-new/src/main.ts +++ b/frontend-new/src/main.ts @@ -1,12 +1,12 @@ -import "windi.css"; -import "./styles/main.css"; -import viteSSR, { ClientOnly } from "vite-ssr"; import { createHead } from "@vueuse/head"; -import generatedRoutes from "virtual:generated-pages"; -import { setupLayouts } from "virtual:generated-layouts"; import { createPinia } from "pinia"; +import { setupLayouts } from "virtual:generated-layouts"; +import generatedRoutes from "virtual:generated-pages"; +import viteSSR, { ClientOnly } from "vite-ssr"; +import "windi.css"; import App from "~/App.vue"; import { installI18n } from "~/i18n"; +import "./styles/main.css"; const routes = setupLayouts(generatedRoutes); diff --git a/frontend-new/src/pages/index.vue b/frontend-new/src/pages/index.vue index 14d31ea67..f13b2e7a9 100644 --- a/frontend-new/src/pages/index.vue +++ b/frontend-new/src/pages/index.vue @@ -1,167 +1,152 @@ @@ -170,19 +155,18 @@ meta: diff --git a/frontend-new/src/pages/staff.vue b/frontend-new/src/pages/staff.vue index 56ddb9638..b980440fd 100644 --- a/frontend-new/src/pages/staff.vue +++ b/frontend-new/src/pages/staff.vue @@ -1,3 +1,3 @@ diff --git a/frontend-new/src/plugins/prettier.ts b/frontend-new/src/plugins/prettier.ts new file mode 100644 index 000000000..789b7f514 --- /dev/null +++ b/frontend-new/src/plugins/prettier.ts @@ -0,0 +1,52 @@ +import fs from "fs"; +import path from "node:path"; +import { getFileInfo, check, resolveConfig, format } from "prettier"; +import qs from "qs"; +import { Plugin } from "vite"; +import { createFilter } from "@rollup/pluginutils"; + +export default function prettier(): Plugin { + const defaults = { + include: ["src/**/*.js", "src/**/*.ts", "src/**/*.vue", "src/**/*.html", "src/**/*.css", "src/**/*.json"], + }; + + const filter = createFilter(defaults.include, /node_modules/); + + function normalize(id: string): string { + return path.relative(process.cwd(), id).split(path.sep).join("/"); + } + + function checkVueFile(id: string): boolean { + if (!id.includes("?")) return false; + + const rawQuery = id.split("?", 2)[1]; + + return qs.parse(rawQuery).vue !== null; + } + + return { + name: "vite:prettier", + async transform(_, id) { + const file = normalize(id); + const fileInfo = getFileInfo.sync(id); + if (!checkVueFile(id) && !fileInfo.ignored && filter(id)) { + const config = resolveConfig.sync(file); + if (config) { + if (!("parser" in config) && fileInfo.inferredParser) { + config.parser = fileInfo.inferredParser; + } + const source = fs.readFileSync(file, "utf-8"); + if (source && !check(source, config)) { + this.warn(`${file} has formatting errors, fixing...`); + fs.writeFile(file, format(source, config), (err) => { + if (err) { + this.error(err); + } + }); + } + } + } + return null; + }, + }; +} diff --git a/frontend-new/src/shims.d.ts b/frontend-new/src/shims.d.ts index de54dc969..61f21e294 100644 --- a/frontend-new/src/shims.d.ts +++ b/frontend-new/src/shims.d.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-duplicates */ - declare interface Window { // extend the window } diff --git a/frontend-new/src/store/api.ts b/frontend-new/src/store/api.ts index 0b9610367..f6f6dcf08 100644 --- a/frontend-new/src/store/api.ts +++ b/frontend-new/src/store/api.ts @@ -1,16 +1,16 @@ import { defineStore } from "pinia"; -import type { Ref} from "vue"; +import type { Ref } from "vue"; import { ref } from "vue"; -import type {Announcement as AnnouncementObject} from "hangar-api"; -import {useInternalApi} from '~/composables/useApi'; +import type { Announcement as AnnouncementObject } from "hangar-api"; +import { useInternalApi } from "~/composables/useApi"; export const useAPI = defineStore("api", () => { - const announcements: Ref = ref(); + const announcements: Ref = ref(); - async function getAnnouncements(): Promise { - return await useInternalApi("data/announcements", false) - } + async function getAnnouncements(): Promise { + return await useInternalApi("data/announcements", false); + } - return { announcements, getAnnouncements }; + return { announcements, getAnnouncements }; }); diff --git a/frontend-new/src/store/auth.ts b/frontend-new/src/store/auth.ts index b5bbc459c..b17328f4d 100644 --- a/frontend-new/src/store/auth.ts +++ b/frontend-new/src/store/auth.ts @@ -1,5 +1,5 @@ import type { HangarUser } from "hangar-internal"; -import { defineStore } from 'pinia'; +import { defineStore } from "pinia"; export const useAuthStore = defineStore("auth", { state: () => { diff --git a/frontend-new/src/store/theme.ts b/frontend-new/src/store/theme.ts index f2c7aa5ea..429a695ee 100644 --- a/frontend-new/src/store/theme.ts +++ b/frontend-new/src/store/theme.ts @@ -1,5 +1,5 @@ import { defineStore } from "pinia"; -import type { Ref} from "vue"; +import type { Ref } from "vue"; import { ref, unref } from "vue"; export const useThemeStore = defineStore("theme", () => { @@ -9,7 +9,6 @@ export const useThemeStore = defineStore("theme", () => { const mobileBreakPoint = 700; - function toggleDarkMode() { darkMode.value = !unref(darkMode); } @@ -22,17 +21,17 @@ export const useThemeStore = defineStore("theme", () => { darkMode.value = false; } -function toggleMobile() { + function toggleMobile() { mobile.value = !unref(mobile); -} + } -function enableMobile() { + function enableMobile() { mobile.value = true; -} + } -function disableMobile() { + function disableMobile() { mobile.value = false; -} + } return { darkMode, toggleDarkMode, enableDarkMode, disableDarkMode, mobile, toggleMobile, enableMobile, disableMobile, mobileBreakPoint }; }); diff --git a/frontend-new/src/styles/main.css b/frontend-new/src/styles/main.css index dece08534..903a7e33b 100644 --- a/frontend-new/src/styles/main.css +++ b/frontend-new/src/styles/main.css @@ -2,51 +2,51 @@ /* TODO do we need this? */ #nprogress { - pointer-events: none; + pointer-events: none; } #nprogress .bar { - @apply bg-teal-600 opacity-75; + @apply bg-teal-600 opacity-75; - position: fixed; - z-index: 1031; - top: 0; - left: 0; + position: fixed; + z-index: 1031; + top: 0; + left: 0; - width: 100%; - height: 2px; + width: 100%; + height: 2px; } html { - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; - font-weight: 400; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; + font-weight: 400; } .shadow1 { - box-shadow: 0 10px 20px rgb(0 0 0 / 15%), rgb(0 0 0 / 10%) 0 0 0 1px; + box-shadow: 0 10px 20px rgb(0 0 0 / 15%), rgb(0 0 0 / 10%) 0 0 0 1px; } .w-fit { - width: fit-content; + width: fit-content; } ::-webkit-scrollbar { - width: 10px; + width: 10px; } * { - scrollbar-color: #004ee9 #f8faff; - scrollbar-width: thin; + scrollbar-color: #004ee9 #f8faff; + scrollbar-width: thin; } ::-webkit-scrollbar-track { - background: #f8faff; + background: #f8faff; } ::-webkit-scrollbar-thumb { - background: #004ee9; + background: #004ee9; } ::-webkit-scrollbar-thumb:hover { - background: #111111; + background: #111111; } diff --git a/frontend-new/src/styles/markdown.css b/frontend-new/src/styles/markdown.css index a9b145b22..7fcb90546 100644 --- a/frontend-new/src/styles/markdown.css +++ b/frontend-new/src/styles/markdown.css @@ -2,47 +2,47 @@ @import "prism-theme-vars/base.css"; :root { - --prism-font-family: "Input Mono", monospace; + --prism-font-family: "Input Mono", monospace; } html:not(.dark) { - --prism-foreground: #393a34; - --prism-background: #fbfbfb; - --prism-comment: #8e8f8e; - --prism-string: #a1644c; - --prism-literal: #3a9c9b; - --prism-keyword: #248358; - --prism-function: #7e8a42; - --prism-deleted: #a14f55; - --prism-class: #2b91af; - --prism-builtin: #a52727; - --prism-property: #ad502b; - --prism-namespace: #c96880; - --prism-punctuation: #8e8f8b; - --prism-decorator: #bd8f8f; - --prism-json-property: #698c96; + --prism-foreground: #393a34; + --prism-background: #fbfbfb; + --prism-comment: #8e8f8e; + --prism-string: #a1644c; + --prism-literal: #3a9c9b; + --prism-keyword: #248358; + --prism-function: #7e8a42; + --prism-deleted: #a14f55; + --prism-class: #2b91af; + --prism-builtin: #a52727; + --prism-property: #ad502b; + --prism-namespace: #c96880; + --prism-punctuation: #8e8f8b; + --prism-decorator: #bd8f8f; + --prism-json-property: #698c96; } html.dark { - --prism-scheme: dark; - --prism-foreground: #d4cfbf; - --prism-background: #1e1e1e; - --prism-comment: #758575; - --prism-string: #ce9178; - --prism-literal: #4fb09d; - --prism-keyword: #4d9375; - --prism-function: #c2c275; - --prism-deleted: #a14f55; - --prism-class: #5ebaa8; - --prism-builtin: #cb7676; - --prism-property: #dd8e6e; - --prism-namespace: #c96880; - --prism-punctuation: #d4d4d4; - --prism-decorator: #bd8f8f; - --prism-regex: #ab5e3f; - --prism-json-property: #6b8b9e; - --prism-line-number: #888888; - --prism-line-number-gutter: #eeeeee; - --prism-line-highlight-background: #444444; - --prism-selection-background: #444444; + --prism-scheme: dark; + --prism-foreground: #d4cfbf; + --prism-background: #1e1e1e; + --prism-comment: #758575; + --prism-string: #ce9178; + --prism-literal: #4fb09d; + --prism-keyword: #4d9375; + --prism-function: #c2c275; + --prism-deleted: #a14f55; + --prism-class: #5ebaa8; + --prism-builtin: #cb7676; + --prism-property: #dd8e6e; + --prism-namespace: #c96880; + --prism-punctuation: #d4d4d4; + --prism-decorator: #bd8f8f; + --prism-regex: #ab5e3f; + --prism-json-property: #6b8b9e; + --prism-line-number: #888888; + --prism-line-number-gutter: #eeeeee; + --prism-line-highlight-background: #444444; + --prism-selection-background: #444444; } diff --git a/frontend-new/src/types/api.d.ts b/frontend-new/src/types/api.d.ts index 261df6ef7..73afa413c 100644 --- a/frontend-new/src/types/api.d.ts +++ b/frontend-new/src/types/api.d.ts @@ -26,14 +26,14 @@ declare module "hangar-api" { } interface Announcement { - text: String; - color: String; + text: string; + color: string; } interface Sponsor { - image: String; - name: String; - link: String; + image: string; + name: string; + link: string; } interface Visible { diff --git a/frontend-new/src/types/api/.gitkeep b/frontend-new/src/types/api/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/frontend-new/src/types/api/versions.d.ts b/frontend-new/src/types/api/versions.d.ts index 773199f38..3167c7b8f 100644 --- a/frontend-new/src/types/api/versions.d.ts +++ b/frontend-new/src/types/api/versions.d.ts @@ -33,7 +33,7 @@ declare module "hangar-api" { stats: VersionStats; fileInfo: FileInfo; externalUrl: string | null; - author: String; + author: string; reviewState: ReviewState; tags: Tag[]; recommended: Platform[]; diff --git a/frontend-new/src/types/enums.ts b/frontend-new/src/types/enums.ts index 35026aca4..177cb988d 100644 --- a/frontend-new/src/types/enums.ts +++ b/frontend-new/src/types/enums.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ export enum RoleCategory { GLOBAL = "global", PROJECT = "project", diff --git a/frontend-new/src/types/generated/icons.d.ts b/frontend-new/src/types/generated/icons.d.ts new file mode 100644 index 000000000..23604cc79 --- /dev/null +++ b/frontend-new/src/types/generated/icons.d.ts @@ -0,0 +1,25 @@ +// generated by unplugin-vue-components +// We suggest you to commit this file into source control +// Read more: https://github.com/vuejs/vue-next/pull/3399 + +declare module "vue" { + export interface GlobalComponents { + IconMdiAccountGroup: typeof import("~icons/mdi/account-group")["default"]; + IconMdiBookOpen: typeof import("~icons/mdi/book-open")["default"]; + IconMdiClipboardOutline: typeof import("~icons/mdi/clipboard-outline")["default"]; + IconMdiCodeBraces: typeof import("~icons/mdi/code-braces")["default"]; + IconMdiDownloadCircle: typeof import("~icons/mdi/download-circle")["default"]; + IconMdiForum: typeof import("~icons/mdi/forum")["default"]; + IconMdiHome: typeof import("~icons/mdi/home")["default"]; + IconMdiKey: typeof import("~icons/mdi/key")["default"]; + IconMdiKeyOutline: typeof import("~icons/mdi/key-outline")["default"]; + IconMdiLanguageJava: typeof import("~icons/mdi/language-java")["default"]; + IconMdiMenu: typeof import("~icons/mdi/menu")["default"]; + IconMdiPuzzle: typeof import("~icons/mdi/puzzle")["default"]; + IconMdiSortVariant: typeof import("~icons/mdi/sort-variant")["default"]; + IconMdiWeatherNight: typeof import("~icons/mdi/weather-night")["default"]; + IconMdiWhiteBalanceSunny: typeof import("~icons/mdi/white-balance-sunny")["default"]; + } +} + +export {}; diff --git a/frontend-new/src/types/icons.d.ts b/frontend-new/src/types/icons.d.ts deleted file mode 100644 index c91e6779f..000000000 --- a/frontend-new/src/types/icons.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -// generated by unplugin-vue-components -// We suggest you to commit this file into source control -// Read more: https://github.com/vuejs/vue-next/pull/3399 - -declare module 'vue' { - export interface GlobalComponents { - IconMdiAccountGroup: typeof import('~icons/mdi/account-group')['default'] - IconMdiBookOpen: typeof import('~icons/mdi/book-open')['default'] - IconMdiClipboardOutline: typeof import('~icons/mdi/clipboard-outline')['default'] - IconMdiCodeBraces: typeof import('~icons/mdi/code-braces')['default'] - IconMdiDownloadCircle: typeof import('~icons/mdi/download-circle')['default'] - IconMdiForum: typeof import('~icons/mdi/forum')['default'] - IconMdiHome: typeof import('~icons/mdi/home')['default'] - IconMdiKey: typeof import('~icons/mdi/key')['default'] - IconMdiKeyOutline: typeof import('~icons/mdi/key-outline')['default'] - IconMdiLanguageJava: typeof import('~icons/mdi/language-java')['default'] - IconMdiMenu: typeof import('~icons/mdi/menu')['default'] - IconMdiPuzzle: typeof import('~icons/mdi/puzzle')['default'] - IconMdiSortVariant: typeof import('~icons/mdi/sort-variant')['default'] - IconMdiWeatherNight: typeof import('~icons/mdi/weather-night')['default'] - IconMdiWhiteBalanceSunny: typeof import('~icons/mdi/white-balance-sunny')['default'] - } -} - -export { } diff --git a/frontend-new/src/types/swagger-ui.d.ts b/frontend-new/src/types/swagger-ui.d.ts index 614c437fa..6acd1f971 100644 --- a/frontend-new/src/types/swagger-ui.d.ts +++ b/frontend-new/src/types/swagger-ui.d.ts @@ -1,5 +1,3 @@ -declare module "swagger-ui" { - import { SwaggerUIBundle } from "swagger-ui-dist"; +declare module "swagger-ui" {} - export default SwaggerUIBundle; -} +export { SwaggerUIBundle as default } from "swagger-ui-dist"; diff --git a/frontend-new/tailwind.config.js b/frontend-new/tailwind.config.js deleted file mode 100644 index e69de29bb..000000000 diff --git a/frontend-new/tsconfig.json b/frontend-new/tsconfig.json index d879955a2..d939832f4 100644 --- a/frontend-new/tsconfig.json +++ b/frontend-new/tsconfig.json @@ -13,7 +13,7 @@ "noUnusedLocals": true, "strictNullChecks": true, "forceConsistentCasingInFileNames": true, - "types": ["vite/client", "vite-plugin-pages/client", "vite-plugin-vue-layouts/client"], + "types": ["vite/client", "vite-plugin-pages/client", "vite-plugin-vue-layouts/client", "prettier"], "paths": { "~/*": ["src/*"] } diff --git a/frontend-new/vite.config.ts b/frontend-new/vite.config.ts index 4b86e0818..daf510319 100644 --- a/frontend-new/vite.config.ts +++ b/frontend-new/vite.config.ts @@ -1,20 +1,20 @@ -import path from "path"; -import { defineConfig } from "vite"; -import Vue from "@vitejs/plugin-vue"; -import Pages from "vite-plugin-pages"; -import Layouts from "vite-plugin-vue-layouts"; -import AutoImport from "unplugin-auto-import/vite"; -import Components from "unplugin-vue-components/vite"; -import Icons from "unplugin-icons/vite"; -import IconsResolver from "unplugin-icons/resolver"; -import Markdown from "vite-plugin-md"; -import WindiCSS from "vite-plugin-windicss"; -import { VitePWA } from "vite-plugin-pwa"; import VueI18n from "@intlify/vite-plugin-vue-i18n"; -import Prism from "markdown-it-prism"; +import Vue from "@vitejs/plugin-vue"; import LinkAttributes from "markdown-it-link-attributes"; -import viteSSR from "vite-ssr/plugin"; +import Prism from "markdown-it-prism"; +import path from "node:path"; +import IconsResolver from "unplugin-icons/resolver"; +import Icons from "unplugin-icons/vite"; +import Components from "unplugin-vue-components/vite"; +import { defineConfig } from "vite"; import EslintPlugin from "vite-plugin-eslint"; +import Markdown from "vite-plugin-md"; +import Pages from "vite-plugin-pages"; +import { VitePWA } from "vite-plugin-pwa"; +import Layouts from "vite-plugin-vue-layouts"; +import WindiCSS from "vite-plugin-windicss"; +import viteSSR from "vite-ssr/plugin"; +import prettier from "./src/plugins/prettier"; const proxyHost = process.env.proxyHost || "http://localhost:8080"; const authHost = process.env.authHost || "http://localhost:3001"; @@ -57,7 +57,7 @@ export default defineConfig({ }, }), - // https://github.com/antfu/vite-plugin-components + // https://github.com/antfu/unplugin-vue-components Components({ // we don't want to import components, just icons dirs: ["none"], @@ -66,18 +66,18 @@ export default defineConfig({ // https://github.com/antfu/vite-plugin-icons IconsResolver({ componentPrefix: "icon", - enabledCollections: ["mdi"] + enabledCollections: ["mdi"], }), ], - dts: "src/types/icons.d.ts", + dts: "src/types/generated/icons.d.ts", }), - // https://github.com/antfu/vite-plugin-icons + // https://github.com/antfu/unplugin-icons Icons({ autoInstall: true, }), - // https://github.com/antfu/vite-plugin-windicss + // https://github.com/windicss/vite-plugin-windicss WindiCSS({ safelist: "prose prose-sm m-auto", }), @@ -111,7 +111,7 @@ export default defineConfig({ }, }), - // https://github.com/intlify/vite-plugin-vue-i18n + // https://github.com/intlify/bundle-tools/tree/main/packages/vite-plugin-vue-i18n VueI18n({ include: [path.resolve(__dirname, "src/i18n/locales/*.json")], }), @@ -119,6 +119,7 @@ export default defineConfig({ EslintPlugin({ fix: true, }), + prettier(), ], optimizeDeps: { diff --git a/frontend-new/windi.config.ts b/frontend-new/windi.config.ts index 01aca7451..ccedd4094 100644 --- a/frontend-new/windi.config.ts +++ b/frontend-new/windi.config.ts @@ -35,20 +35,20 @@ export default defineConfig({ }, }, colors: { - 'background-dark-90': '#111111', - 'background-dark-80': '#181a1b', - 'background-light-10': '#f8faff', - 'background-light-0': '#ffffff', - 'primary-100': '#004ee9', - 'primary-70': '#aec9ff', - 'primary-50': '#ecf2fb' + "background-dark-90": "#111111", + "background-dark-80": "#181a1b", + "background-light-10": "#f8faff", + "background-light-0": "#ffffff", + "primary-100": "#004ee9", + "primary-70": "#aec9ff", + "primary-50": "#ecf2fb", }, }, }, shortcuts: { - 'background-header': 'bg-background-light-0 dark:bg-background-dark-90', - 'background-body': 'bg-background-light-10 dark:bg-background-dark-80', - 'color-primary': 'text-primary-100 dark:text-primary-70', - 'border-top-primary': 'border-solid border-t-4 border-t-primary-100', + "background-header": "bg-background-light-0 dark:bg-background-dark-90", + "background-body": "bg-background-light-10 dark:bg-background-dark-80", + "color-primary": "text-primary-100 dark:text-primary-70", + "border-top-primary": "border-solid border-t-4 border-t-primary-100", }, });