From 33c9b6643f58a6930043f460d5bfdca4bc1f7222 Mon Sep 17 00:00:00 2001 From: Corentin Thomasset Date: Sun, 28 May 2023 23:13:24 +0200 Subject: [PATCH] chore(lint): switched to a better lint config --- .eslintrc.cjs | 41 +- components.d.ts | 14 - package.json | 7 +- pnpm-lock.yaml | 859 ++++++++++++++---- src/App.vue | 16 +- src/components/CollapsibleToolMenu.vue | 98 +- src/components/ColoredCard.vue | 14 +- src/components/FavoriteButton.vue | 39 +- src/components/FormatTransformer.vue | 78 +- src/components/InputCopyable.vue | 32 +- src/components/MenuIconItem.vue | 16 +- src/components/MenuLayout.vue | 18 +- src/components/NavbarButtons.vue | 36 +- src/components/SearchBar.vue | 28 +- src/components/SearchBarItem.vue | 10 +- src/components/SpanCopyable.vue | 18 +- src/components/TextareaCopyable.vue | 96 +- src/components/ToolCard.vue | 32 +- src/composable/computedRefreshable.ts | 3 +- src/composable/copy.ts | 2 +- src/composable/downloadBase64.ts | 4 +- src/composable/fuzzySearch.ts | 8 +- src/composable/validation.test.ts | 3 +- src/composable/validation.ts | 37 +- src/layouts/base.layout.vue | 46 +- src/layouts/tool.layout.vue | 8 +- src/main.ts | 6 +- src/modules/tracker/tracker.services.ts | 2 +- src/pages/404.page.vue | 16 +- src/pages/About.vue | 10 +- src/pages/Home.page.vue | 20 +- src/plugins/plausible.plugin.ts | 12 +- src/router.ts | 2 +- src/stores/style.store.ts | 4 +- .../base64-file-converter.vue | 101 +- src/tools/base64-file-converter/index.ts | 2 +- .../base64-string-converter.vue | 62 +- .../basic-auth-generator.vue | 28 +- src/tools/bcrypt/bcrypt.vue | 40 +- .../benchmark-builder.models.ts | 8 +- .../benchmark-builder/benchmark-builder.vue | 173 ++-- .../benchmark-builder/dynamic-values.vue | 62 +- src/tools/bip39-generator/bip39-generator.vue | 164 ++-- src/tools/camera-recorder/camera-recorder.vue | 233 ++--- src/tools/camera-recorder/useMediaRecorder.ts | 82 +- src/tools/case-converter/case-converter.vue | 104 +-- .../chmod-calculator.service.test.ts | 2 +- .../chmod-calculator/chmod-calculator.vue | 70 +- src/tools/chronometer/chronometer.vue | 36 +- src/tools/color-converter/color-converter.vue | 101 +- .../crontab-generator/crontab-generator.vue | 177 ++-- .../date-time-converter.e2e.spec.ts | 2 +- .../date-time-converter.models.test.ts | 6 +- .../date-time-converter.models.ts | 15 +- .../date-time-converter.types.ts | 12 +- .../date-time-converter.vue | 281 +++--- .../device-information/device-information.vue | 40 +- ...docker-run-to-docker-compose-converter.vue | 81 +- src/tools/encryption/encryption.vue | 38 +- src/tools/eta-calculator/eta-calculator.vue | 60 +- src/tools/git-memo/git-memo.vue | 12 +- src/tools/hash-text/hash-text.service.ts | 2 +- src/tools/hash-text/hash-text.vue | 77 +- src/tools/hmac-generator/hmac-generator.vue | 98 +- src/tools/html-entities/html-entities.vue | 36 +- .../html-wysiwyg-editor/editor/editor.vue | 24 +- .../editor/menu-bar-item.vue | 16 +- .../html-wysiwyg-editor/editor/menu-bar.vue | 32 +- .../html-wysiwyg-editor.vue | 12 +- .../http-status-codes.constants.ts | 14 +- .../http-status-codes.e2e.spec.ts | 2 +- .../http-status-codes/http-status-codes.vue | 58 +- src/tools/index.ts | 2 +- .../integer-base-converter.model.test.ts | 2 +- .../integer-base-converter.model.ts | 4 +- .../integer-base-converter.vue | 105 ++- .../ipv4-address-converter.service.test.ts | 4 +- .../ipv4-address-converter.service.ts | 10 +- .../ipv4-address-converter.vue | 44 +- .../ipv4-range-expander.e2e.spec.ts | 2 +- .../ipv4-range-expander.service.test.ts | 2 +- .../ipv4-range-expander.service.ts | 17 +- .../ipv4-range-expander.types.ts | 14 +- .../ipv4-range-expander.vue | 131 +-- src/tools/ipv4-range-expander/result-row.vue | 30 +- .../ipv4-subnet-calculator.vue | 96 +- .../ipv6-ula-generator/ipv6-ula-generator.vue | 68 +- .../diff-viewer/diff-viewer.models.tsx | 42 +- .../json-diff/diff-viewer/diff-viewer.vue | 38 +- src/tools/json-diff/json-diff.e2e.spec.ts | 6 +- src/tools/json-diff/json-diff.models.test.ts | 2 +- src/tools/json-diff/json-diff.models.ts | 6 +- src/tools/json-diff/json-diff.types.ts | 46 +- src/tools/json-diff/json-diff.vue | 42 +- src/tools/json-minify/json-minify.vue | 26 +- .../json-to-yaml.e2e.spec.ts | 4 +- .../json-to-yaml-converter/json-to-yaml.vue | 26 +- src/tools/json-viewer/json-viewer.vue | 56 +- src/tools/json-viewer/json.models.ts | 8 +- src/tools/jwt-parser/jwt-parser.service.ts | 8 +- src/tools/jwt-parser/jwt-parser.vue | 66 +- src/tools/keycode-info/keycode-info.vue | 38 +- .../list-converter/list-converter.e2e.spec.ts | 8 +- .../list-converter.models.test.ts | 2 +- .../list-converter/list-converter.models.ts | 16 +- .../list-converter/list-converter.types.ts | 26 +- src/tools/list-converter/list-converter.vue | 76 +- .../lorem-ipsum-generator.service.ts | 20 +- .../lorem-ipsum-generator.vue | 52 +- .../mac-address-lookup/mac-address-lookup.vue | 44 +- src/tools/math-evaluator/index.ts | 2 +- src/tools/math-evaluator/math-evaluator.vue | 20 +- .../meta-tag-generator/OGSchemaType.type.ts | 18 +- .../meta-tag-generator/meta-tag-generator.vue | 110 +-- .../og-schemas/videoMovie.ts | 2 +- src/tools/mime-types/mime-types.vue | 66 +- .../otp-code-generator-and-validator.vue | 156 ++-- .../otp-code-generator.e2e.spec.ts | 4 +- .../otp.service.test.ts | 6 +- .../otp.service.ts | 50 +- .../token-display.vue | 44 +- .../phone-parser-and-formatter.e2e.spec.ts | 2 +- .../phone-parser-and-formatter.models.ts | 12 +- .../phone-parser-and-formatter.vue | 86 +- .../qr-code-generator/qr-code-generator.vue | 56 +- src/tools/qr-code-generator/useQRCode.ts | 15 +- .../random-port-generator.vue | 28 +- .../roman-numeral-converter.service.test.ts | 2 +- .../roman-numeral-converter.service.ts | 6 +- .../roman-numeral-converter.vue | 88 +- .../rsa-key-pair-generator.vue | 52 +- src/tools/slugify-string/slugify-string.vue | 44 +- src/tools/sql-prettify/sql-prettify.vue | 42 +- .../svg-placeholder-generator.vue | 86 +- .../temperature-converter.vue | 156 ++-- src/tools/text-statistics/index.ts | 2 +- .../text-statistics.service.test.ts | 2 +- src/tools/text-statistics/text-statistics.vue | 16 +- .../text-to-nato-alphabet.vue | 30 +- .../token-generator.e2e.spec.ts | 2 +- .../token-generator.service.test.ts | 2 +- .../token-generator.service.ts | 18 +- .../token-generator/token-generator.tool.vue | 58 +- src/tools/tools.store.ts | 10 +- src/tools/tools.types.ts | 30 +- src/tools/url-encoder/url-encoder.vue | 84 +- src/tools/url-parser/url-parser.vue | 86 +- .../user-agent-parser.types.ts | 18 +- .../user-agent-parser/user-agent-parser.vue | 211 +++-- .../user-agent-result-cards.vue | 24 +- src/tools/uuid-generator/uuid-generator.vue | 36 +- .../yaml-to-json.e2e.spec.ts | 2 +- .../yaml-to-json-converter/yaml-to-json.vue | 43 +- src/ui/c-alert/c-alert.demo.vue | 8 +- src/ui/c-alert/c-alert.theme.ts | 1 - src/ui/c-alert/c-alert.vue | 20 +- src/ui/c-button/c-button.demo.vue | 18 +- src/ui/c-button/c-button.theme.ts | 32 +- src/ui/c-button/c-button.vue | 48 +- src/ui/c-card/c-card.demo.vue | 2 - src/ui/c-card/c-card.vue | 24 +- src/ui/c-input-text/c-input-text.demo.vue | 32 +- src/ui/c-input-text/c-input-text.test.ts | 8 +- src/ui/c-input-text/c-input-text.vue | 178 ++-- src/ui/c-link/c-link.demo.vue | 16 +- src/ui/c-link/c-link.vue | 18 +- src/ui/color/color.models.test.ts | 2 +- src/ui/demo/demo-wrapper.vue | 20 +- src/utils/base64.ts | 8 +- src/utils/boolean.test.ts | 2 +- src/utils/boolean.ts | 3 +- src/utils/convert.ts | 2 +- src/utils/defaults.test.ts | 2 +- src/utils/defaults.ts | 6 +- src/utils/error.test.ts | 3 +- src/utils/error.ts | 3 +- src/utils/macAddress.ts | 2 +- src/utils/random.ts | 4 +- 178 files changed, 4105 insertions(+), 3371 deletions(-) diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 5f9c7417..8155910c 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -1,39 +1,14 @@ -/* eslint-env node */ -require('@rushstack/eslint-patch/modern-module-resolution'); - +/** + * @type {import('eslint').Linter.Config} + */ module.exports = { root: true, - extends: [ - 'plugin:vue/vue3-essential', - 'eslint:recommended', - 'plugin:vue/vue3-recommended', - '@vue/eslint-config-typescript/recommended', - '@vue/eslint-config-prettier', - 'plugin:import/recommended', - './.eslintrc-auto-import.json', - '@unocss', - ], + extends: ['@antfu', './.eslintrc-auto-import.json', '@unocss'], - settings: { - 'import/resolver': { typescript: { project: './tsconfig.app.json' } }, - }, - env: { - 'vue/setup-compiler-macros': true, - }, rules: { - 'vue/multi-word-component-names': ['off'], - 'prettier/prettier': ['error'], - 'import/no-duplicates': ['error', { considerQueryString: true }], - 'import/order': ['error', { groups: [['builtin', 'external', 'internal']] }], - 'import/extensions': [ - 'error', - 'ignorePackages', - { - js: 'never', - ts: 'never', - tsx: 'never', - }, - ], - 'import/no-unresolved': ['error', { ignore: ['^virtual:'] }], + 'curly': ['error', 'all'], + '@typescript-eslint/semi': ['error', 'always'], + '@typescript-eslint/no-use-before-define': ['error', { allowNamedExports: true, functions: false }], + 'vue/no-empty-component-block': ['error'], }, }; diff --git a/components.d.ts b/components.d.ts index f4d98ac8..212a3bca 100644 --- a/components.d.ts +++ b/components.d.ts @@ -31,17 +31,13 @@ declare module '@vue/runtime-core' { Chronometer: typeof import('./src/tools/chronometer/chronometer.vue')['default'] CInputText: typeof import('./src/ui/c-input-text/c-input-text.vue')['default'] 'CInputText.demo': typeof import('./src/ui/c-input-text/c-input-text.demo.vue')['default'] - 'CInputText.theme': typeof import('./src/ui/c-input-text/c-input-text.theme.vue')['default'] CLink: typeof import('./src/ui/c-link/c-link.vue')['default'] 'CLink.demo': typeof import('./src/ui/c-link/c-link.demo.vue')['default'] CollapsibleToolMenu: typeof import('./src/components/CollapsibleToolMenu.vue')['default'] ColorConverter: typeof import('./src/tools/color-converter/color-converter.vue')['default'] ColoredCard: typeof import('./src/components/ColoredCard.vue')['default'] - copy: typeof import('./src/ui/c-input-text/c-input-text copy.vue')['default'] - CopyableIpLike: typeof import('./src/tools/ipv4-subnet-calculator/copyable-ip-like.vue')['default'] CrontabGenerator: typeof import('./src/tools/crontab-generator/crontab-generator.vue')['default'] DateTimeConverter: typeof import('./src/tools/date-time-converter/date-time-converter.vue')['default'] - 'Demo.routes': typeof import('./src/ui/demo/demo.routes.vue')['default'] DemoWrapper: typeof import('./src/ui/demo/demo-wrapper.vue')['default'] DeviceInformation: typeof import('./src/tools/device-information/device-information.vue')['default'] DiffViewer: typeof import('./src/tools/json-diff/diff-viewer/diff-viewer.vue')['default'] @@ -61,22 +57,16 @@ declare module '@vue/runtime-core' { HttpStatusCodes: typeof import('./src/tools/http-status-codes/http-status-codes.vue')['default'] IconMdiArrowRightBottom: typeof import('~icons/mdi/arrow-right-bottom')['default'] IconMdiCamera: typeof import('~icons/mdi/camera')['default'] - IconMdiCameraOutline: typeof import('~icons/mdi/camera-outline')['default'] - IconMdiCameraVideoOff: typeof import('~icons/mdi/camera-video-off')['default'] IconMdiClose: typeof import('~icons/mdi/close')['default'] IconMdiContentCopy: typeof import('~icons/mdi/content-copy')['default'] - IconMdiDelete: typeof import('~icons/mdi/delete')['default'] IconMdiDeleteOutline: typeof import('~icons/mdi/delete-outline')['default'] - IconMdiDeleteOutlined: typeof import('~icons/mdi/delete-outlined')['default'] IconMdiDownload: typeof import('~icons/mdi/download')['default'] IconMdiEye: typeof import('~icons/mdi/eye')['default'] IconMdiEyeOff: typeof import('~icons/mdi/eye-off')['default'] IconMdiPause: typeof import('~icons/mdi/pause')['default'] IconMdiPlay: typeof import('~icons/mdi/play')['default'] IconMdiRecord: typeof import('~icons/mdi/record')['default'] - IconMdiRecordRec: typeof import('~icons/mdi/record-rec')['default'] IconMdiRefresh: typeof import('~icons/mdi/refresh')['default'] - IconMdiStopCircle: typeof import('~icons/mdi/stop-circle')['default'] IconMdiVideo: typeof import('~icons/mdi/video')['default'] InputCopyable: typeof import('./src/components/InputCopyable.vue')['default'] IntegerBaseConverter: typeof import('./src/tools/integer-base-converter/integer-base-converter.vue')['default'] @@ -103,8 +93,6 @@ declare module '@vue/runtime-core' { NAlert: typeof import('naive-ui')['NAlert'] NAutoComplete: typeof import('naive-ui')['NAutoComplete'] NavbarButtons: typeof import('./src/components/NavbarButtons.vue')['default'] - NButton: typeof import('naive-ui')['NButton'] - NCard: typeof import('naive-ui')['NCard'] NCheckbox: typeof import('naive-ui')['NCheckbox'] NCode: typeof import('naive-ui')['NCode'] NCollapseTransition: typeof import('naive-ui')['NCollapseTransition'] @@ -116,7 +104,6 @@ declare module '@vue/runtime-core' { NEllipsis: typeof import('naive-ui')['NEllipsis'] NForm: typeof import('naive-ui')['NForm'] NFormItem: typeof import('naive-ui')['NFormItem'] - NFormItemGi: typeof import('naive-ui')['NFormItemGi'] NGi: typeof import('naive-ui')['NGi'] NGrid: typeof import('naive-ui')['NGrid'] NH1: typeof import('naive-ui')['NH1'] @@ -137,7 +124,6 @@ declare module '@vue/runtime-core' { NScrollbar: typeof import('naive-ui')['NScrollbar'] NSelect: typeof import('naive-ui')['NSelect'] NSlider: typeof import('naive-ui')['NSlider'] - NSpace: typeof import('naive-ui')['NSpace'] NStatistic: typeof import('naive-ui')['NStatistic'] NSwitch: typeof import('naive-ui')['NSwitch'] NTable: typeof import('naive-ui')['NTable'] diff --git a/package.json b/package.json index c8db5723..26a3d5d3 100644 --- a/package.json +++ b/package.json @@ -79,6 +79,7 @@ "yaml": "^2.2.1" }, "devDependencies": { + "@antfu/eslint-config": "^0.39.3", "@iconify-json/mdi": "^1.1.50", "@playwright/test": "^1.32.3", "@rushstack/eslint-patch": "^1.2.0", @@ -100,18 +101,12 @@ "@vitejs/plugin-vue": "^2.3.4", "@vitejs/plugin-vue-jsx": "^1.3.10", "@vue/compiler-sfc": "^3.2.47", - "@vue/eslint-config-prettier": "^7.1.0", - "@vue/eslint-config-typescript": "^10.0.0", "@vue/runtime-core": "^3.2.47", "@vue/test-utils": "^2.3.2", "@vue/tsconfig": "^0.1.3", "c8": "^7.13.0", "consola": "^3.0.2", "eslint": "^8.38.0", - "eslint-config-prettier": "^8.8.0", - "eslint-import-resolver-typescript": "^3.5.5", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-vue": "^8.7.1", "jsdom": "^19.0.0", "less": "^4.1.3", "prettier": "^2.8.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bb943484..914a9e12 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -135,6 +135,9 @@ dependencies: version: 2.2.1 devDependencies: + '@antfu/eslint-config': + specifier: ^0.39.3 + version: 0.39.3(eslint@8.38.0)(typescript@4.5.5) '@iconify-json/mdi': specifier: ^1.1.50 version: 1.1.50 @@ -198,12 +201,6 @@ devDependencies: '@vue/compiler-sfc': specifier: ^3.2.47 version: 3.2.47 - '@vue/eslint-config-prettier': - specifier: ^7.1.0 - version: 7.1.0(eslint@8.38.0)(prettier@2.8.7) - '@vue/eslint-config-typescript': - specifier: ^10.0.0 - version: 10.0.0(eslint-plugin-vue@8.7.1)(eslint@8.38.0)(typescript@4.5.5) '@vue/runtime-core': specifier: ^3.2.47 version: 3.2.47 @@ -222,18 +219,6 @@ devDependencies: eslint: specifier: ^8.38.0 version: 8.38.0 - eslint-config-prettier: - specifier: ^8.8.0 - version: 8.8.0(eslint@8.38.0) - eslint-import-resolver-typescript: - specifier: ^3.5.5 - version: 3.5.5(@typescript-eslint/parser@5.58.0)(eslint-plugin-import@2.27.5)(eslint@8.38.0) - eslint-plugin-import: - specifier: ^2.27.5 - version: 2.27.5(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) - eslint-plugin-vue: - specifier: ^8.7.1 - version: 8.7.1(eslint@8.38.0) jsdom: specifier: ^19.0.0 version: 19.0.0 @@ -296,6 +281,102 @@ packages: '@jridgewell/trace-mapping': 0.3.18 dev: true + /@antfu/eslint-config-basic@0.39.3(@typescript-eslint/eslint-plugin@5.59.7)(@typescript-eslint/parser@5.59.7)(eslint@8.38.0)(typescript@4.5.5): + resolution: {integrity: sha512-cxV2jcVbLeTbZFgFXETAg2+Lbs0r2k/bU4FSEA9lQV7hVpJvfnfJvqph2w/CQllnIa7zoMmlUZN5JHapk11M9Q==} + peerDependencies: + eslint: '>=7.4.0' + dependencies: + eslint: 8.38.0 + eslint-plugin-antfu: 0.39.3(eslint@8.38.0)(typescript@4.5.5) + eslint-plugin-eslint-comments: 3.2.0(eslint@8.38.0) + eslint-plugin-html: 7.1.0 + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.7)(eslint@8.38.0) + eslint-plugin-jsonc: 2.8.0(eslint@8.38.0) + eslint-plugin-markdown: 3.0.0(eslint@8.38.0) + eslint-plugin-n: 16.0.0(eslint@8.38.0) + eslint-plugin-no-only-tests: 3.1.0 + eslint-plugin-promise: 6.1.1(eslint@8.38.0) + eslint-plugin-unicorn: 47.0.0(eslint@8.38.0) + eslint-plugin-unused-imports: 2.0.0(@typescript-eslint/eslint-plugin@5.59.7)(eslint@8.38.0) + eslint-plugin-yml: 1.7.0(eslint@8.38.0) + jsonc-eslint-parser: 2.3.0 + yaml-eslint-parser: 1.2.2 + transitivePeerDependencies: + - '@typescript-eslint/eslint-plugin' + - '@typescript-eslint/parser' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + - typescript + dev: true + + /@antfu/eslint-config-ts@0.39.3(eslint@8.38.0)(typescript@4.5.5): + resolution: {integrity: sha512-c9lSYr3eWu+IImzYmUs1YrvMFZC98Xk9rlhX2JGf49SnUrAj2rOPzrmLmGG9VWYKiay5k8DiL57IuLFIkGWy9w==} + peerDependencies: + eslint: '>=7.4.0' + typescript: '>=3.9' + dependencies: + '@antfu/eslint-config-basic': 0.39.3(@typescript-eslint/eslint-plugin@5.59.7)(@typescript-eslint/parser@5.59.7)(eslint@8.38.0)(typescript@4.5.5) + '@typescript-eslint/eslint-plugin': 5.59.7(@typescript-eslint/parser@5.59.7)(eslint@8.38.0)(typescript@4.5.5) + '@typescript-eslint/parser': 5.59.7(eslint@8.38.0)(typescript@4.5.5) + eslint: 8.38.0 + eslint-plugin-jest: 27.2.1(@typescript-eslint/eslint-plugin@5.59.7)(eslint@8.38.0)(typescript@4.5.5) + typescript: 4.5.5 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - jest + - supports-color + dev: true + + /@antfu/eslint-config-vue@0.39.3(@typescript-eslint/eslint-plugin@5.59.7)(@typescript-eslint/parser@5.59.7)(eslint@8.38.0)(typescript@4.5.5): + resolution: {integrity: sha512-Q3qOobJHfqq/tZg5aBDylA96oEUfb54UWdovSFhn8s6FjJMIO7Otecxe8fTynpHKrEHmx38jnnx3JvTLAR+BAg==} + peerDependencies: + eslint: '>=7.4.0' + dependencies: + '@antfu/eslint-config-basic': 0.39.3(@typescript-eslint/eslint-plugin@5.59.7)(@typescript-eslint/parser@5.59.7)(eslint@8.38.0)(typescript@4.5.5) + '@antfu/eslint-config-ts': 0.39.3(eslint@8.38.0)(typescript@4.5.5) + eslint: 8.38.0 + eslint-plugin-vue: 9.14.1(eslint@8.38.0) + local-pkg: 0.4.3 + transitivePeerDependencies: + - '@typescript-eslint/eslint-plugin' + - '@typescript-eslint/parser' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - jest + - supports-color + - typescript + dev: true + + /@antfu/eslint-config@0.39.3(eslint@8.38.0)(typescript@4.5.5): + resolution: {integrity: sha512-0z6PKnK/H88ECd3Qq4vKWyi7ptUhGM9C6Rp28edJVQIA4305ofOXlo6O7v8eyD3sT72PCWUB85k54lo8slwWDw==} + peerDependencies: + eslint: '>=7.4.0' + dependencies: + '@antfu/eslint-config-vue': 0.39.3(@typescript-eslint/eslint-plugin@5.59.7)(@typescript-eslint/parser@5.59.7)(eslint@8.38.0)(typescript@4.5.5) + '@typescript-eslint/eslint-plugin': 5.59.7(@typescript-eslint/parser@5.59.7)(eslint@8.38.0)(typescript@4.5.5) + '@typescript-eslint/parser': 5.59.7(eslint@8.38.0)(typescript@4.5.5) + eslint: 8.38.0 + eslint-plugin-eslint-comments: 3.2.0(eslint@8.38.0) + eslint-plugin-html: 7.1.0 + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.7)(eslint@8.38.0) + eslint-plugin-jsonc: 2.8.0(eslint@8.38.0) + eslint-plugin-n: 16.0.0(eslint@8.38.0) + eslint-plugin-promise: 6.1.1(eslint@8.38.0) + eslint-plugin-unicorn: 47.0.0(eslint@8.38.0) + eslint-plugin-vue: 9.14.1(eslint@8.38.0) + eslint-plugin-yml: 1.7.0(eslint@8.38.0) + jsonc-eslint-parser: 2.3.0 + yaml-eslint-parser: 1.2.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - jest + - supports-color + - typescript + dev: true + /@antfu/install-pkg@0.1.1: resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==} dependencies: @@ -2263,6 +2344,12 @@ packages: '@types/mdurl': 1.0.2 dev: true + /@types/mdast@3.0.11: + resolution: {integrity: sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==} + dependencies: + '@types/unist': 2.0.6 + dev: true + /@types/mdurl@1.0.2: resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==} dev: true @@ -2293,6 +2380,10 @@ packages: resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} dev: true + /@types/normalize-package-data@2.4.1: + resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + dev: true + /@types/object.omit@3.0.0: resolution: {integrity: sha512-I27IoPpH250TUzc9FzXd0P1BV/BMJuzqD3jOz98ehf9dQqGkxlq+hO1bIqZGWqCg5bVOy0g4AUVJtnxe0klDmw==} dev: false @@ -2351,6 +2442,10 @@ packages: resolution: {integrity: sha512-N1rW+njavs70y2cApeIw1vLMYXRwfBy+7trgavGuuTfOd7j1Yh7QTRc/yqsPl6ncokt72ZXuxEU0PiCp9bSwNQ==} dev: true + /@types/unist@2.0.6: + resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} + dev: true + /@types/uuid@8.3.4: resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} dev: true @@ -2362,8 +2457,8 @@ packages: resolution: {integrity: sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw==} dev: true - /@typescript-eslint/eslint-plugin@5.58.0(@typescript-eslint/parser@5.58.0)(eslint@8.38.0)(typescript@4.5.5): - resolution: {integrity: sha512-vxHvLhH0qgBd3/tW6/VccptSfc8FxPQIkmNTVLWcCOVqSBvqpnKkBTYrhcGlXfSnd78azwe+PsjYFj0X34/njA==} + /@typescript-eslint/eslint-plugin@5.59.7(@typescript-eslint/parser@5.59.7)(eslint@8.38.0)(typescript@4.5.5): + resolution: {integrity: sha512-BL+jYxUFIbuYwy+4fF86k5vdT9lT0CNJ6HtwrIvGh0PhH8s0yy5rjaKH2fDCrz5ITHy07WCzVGNvAmjJh4IJFA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -2374,10 +2469,10 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.5.0 - '@typescript-eslint/parser': 5.58.0(eslint@8.38.0)(typescript@4.5.5) - '@typescript-eslint/scope-manager': 5.58.0 - '@typescript-eslint/type-utils': 5.58.0(eslint@8.38.0)(typescript@4.5.5) - '@typescript-eslint/utils': 5.58.0(eslint@8.38.0)(typescript@4.5.5) + '@typescript-eslint/parser': 5.59.7(eslint@8.38.0)(typescript@4.5.5) + '@typescript-eslint/scope-manager': 5.59.7 + '@typescript-eslint/type-utils': 5.59.7(eslint@8.38.0)(typescript@4.5.5) + '@typescript-eslint/utils': 5.59.7(eslint@8.38.0)(typescript@4.5.5) debug: 4.3.4 eslint: 8.38.0 grapheme-splitter: 1.0.4 @@ -2410,6 +2505,26 @@ packages: - supports-color dev: true + /@typescript-eslint/parser@5.59.7(eslint@8.38.0)(typescript@4.5.5): + resolution: {integrity: sha512-VhpsIEuq/8i5SF+mPg9jSdIwgMBBp0z9XqjiEay+81PYLJuroN+ET1hM5IhkiYMJd9MkTz8iJLt7aaGAgzWUbQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.59.7 + '@typescript-eslint/types': 5.59.7 + '@typescript-eslint/typescript-estree': 5.59.7(typescript@4.5.5) + debug: 4.3.4 + eslint: 8.38.0 + typescript: 4.5.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/scope-manager@5.58.0: resolution: {integrity: sha512-b+w8ypN5CFvrXWQb9Ow9T4/6LC2MikNf1viLkYTiTbkQl46CnR69w7lajz1icW0TBsYmlpg+mRzFJ4LEJ8X9NA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2418,8 +2533,16 @@ packages: '@typescript-eslint/visitor-keys': 5.58.0 dev: true - /@typescript-eslint/type-utils@5.58.0(eslint@8.38.0)(typescript@4.5.5): - resolution: {integrity: sha512-FF5vP/SKAFJ+LmR9PENql7fQVVgGDOS+dq3j+cKl9iW/9VuZC/8CFmzIP0DLKXfWKpRHawJiG70rVH+xZZbp8w==} + /@typescript-eslint/scope-manager@5.59.7: + resolution: {integrity: sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.59.7 + '@typescript-eslint/visitor-keys': 5.59.7 + dev: true + + /@typescript-eslint/type-utils@5.59.7(eslint@8.38.0)(typescript@4.5.5): + resolution: {integrity: sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -2428,8 +2551,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.58.0(typescript@4.5.5) - '@typescript-eslint/utils': 5.58.0(eslint@8.38.0)(typescript@4.5.5) + '@typescript-eslint/typescript-estree': 5.59.7(typescript@4.5.5) + '@typescript-eslint/utils': 5.59.7(eslint@8.38.0)(typescript@4.5.5) debug: 4.3.4 eslint: 8.38.0 tsutils: 3.21.0(typescript@4.5.5) @@ -2443,6 +2566,11 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /@typescript-eslint/types@5.59.7: + resolution: {integrity: sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + /@typescript-eslint/typescript-estree@5.58.0(typescript@4.5.5): resolution: {integrity: sha512-cRACvGTodA+UxnYM2uwA2KCwRL7VAzo45syNysqlMyNyjw0Z35Icc9ihPJZjIYuA5bXJYiJ2YGUB59BqlOZT1Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2464,6 +2592,27 @@ packages: - supports-color dev: true + /@typescript-eslint/typescript-estree@5.59.7(typescript@4.5.5): + resolution: {integrity: sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.59.7 + '@typescript-eslint/visitor-keys': 5.59.7 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.1 + tsutils: 3.21.0(typescript@4.5.5) + typescript: 4.5.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/utils@5.58.0(eslint@8.38.0)(typescript@4.5.5): resolution: {integrity: sha512-gAmLOTFXMXOC+zP1fsqm3VceKSBQJNzV385Ok3+yzlavNHZoedajjS4UyS21gabJYcobuigQPs/z71A9MdJFqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2484,6 +2633,26 @@ packages: - typescript dev: true + /@typescript-eslint/utils@5.59.7(eslint@8.38.0)(typescript@4.5.5): + resolution: {integrity: sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.38.0) + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.13 + '@typescript-eslint/scope-manager': 5.59.7 + '@typescript-eslint/types': 5.59.7 + '@typescript-eslint/typescript-estree': 5.59.7(typescript@4.5.5) + eslint: 8.38.0 + eslint-scope: 5.1.1 + semver: 7.4.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@typescript-eslint/visitor-keys@5.58.0: resolution: {integrity: sha512-/fBraTlPj0jwdyTwLyrRTxv/3lnU2H96pNTVM6z3esTWLtA5MZ9ghSMJ7Rb+TtUAdtEw9EyJzJ0EydIMKxQ9gA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2492,6 +2661,14 @@ packages: eslint-visitor-keys: 3.4.0 dev: true + /@typescript-eslint/visitor-keys@5.59.7: + resolution: {integrity: sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.59.7 + eslint-visitor-keys: 3.4.0 + dev: true + /@unocss/astro@0.50.8(rollup@2.79.1)(vite@2.9.15): resolution: {integrity: sha512-kphNlr0PWGzvkCgKx7RaZWQ45khieCCt9OffUnxbRRft+jodsVXIwzHn+bOhGtIKpEpZiOzxRzTYjfW/R6XnTw==} dependencies: @@ -2854,39 +3031,6 @@ packages: resolution: {integrity: sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==} dev: false - /@vue/eslint-config-prettier@7.1.0(eslint@8.38.0)(prettier@2.8.7): - resolution: {integrity: sha512-Pv/lVr0bAzSIHLd9iz0KnvAr4GKyCEl+h52bc4e5yWuDVtLgFwycF7nrbWTAQAS+FU6q1geVd07lc6EWfJiWKQ==} - peerDependencies: - eslint: '>= 7.28.0' - prettier: '>= 2.0.0' - dependencies: - eslint: 8.38.0 - eslint-config-prettier: 8.8.0(eslint@8.38.0) - eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.38.0)(prettier@2.8.7) - prettier: 2.8.7 - dev: true - - /@vue/eslint-config-typescript@10.0.0(eslint-plugin-vue@8.7.1)(eslint@8.38.0)(typescript@4.5.5): - 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 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/eslint-plugin': 5.58.0(@typescript-eslint/parser@5.58.0)(eslint@8.38.0)(typescript@4.5.5) - '@typescript-eslint/parser': 5.58.0(eslint@8.38.0)(typescript@4.5.5) - eslint: 8.38.0 - eslint-plugin-vue: 8.7.1(eslint@8.38.0) - typescript: 4.5.5 - vue-eslint-parser: 8.3.0(eslint@8.38.0) - transitivePeerDependencies: - - supports-color - dev: true - /@vue/reactivity-transform@3.2.47: resolution: {integrity: sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==} dependencies: @@ -3326,6 +3470,12 @@ packages: engines: {node: '>=6'} dev: true + /builtins@5.0.1: + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + dependencies: + semver: 7.5.1 + dev: true + /c8@7.13.0: resolution: {integrity: sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA==} engines: {node: '>=10.12.0'} @@ -3452,12 +3602,24 @@ packages: resolution: {integrity: sha512-acv43vqJ0+N0rD+Uw3pDHSxP30FHrywu2NO6/wBaHChJIizpDeBUd6NjqhNhy9LGaEAhZAXn46QzmlAvIWd16g==} dev: false + /character-entities-legacy@1.1.4: + resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + dev: true + + /character-entities@1.2.4: + resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} + dev: true + /character-parser@2.2.0: resolution: {integrity: sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==} dependencies: is-regex: 1.1.4 dev: true + /character-reference-invalid@1.1.4: + resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} + dev: true + /check-error@1.0.2: resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} dev: true @@ -3482,6 +3644,18 @@ packages: fsevents: 2.3.2 dev: true + /ci-info@3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + engines: {node: '>=8'} + dev: true + + /clean-regexp@1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + /cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} dependencies: @@ -3884,6 +4058,14 @@ packages: entities: 2.2.0 dev: true + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + dev: true + /domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} dev: true @@ -3902,6 +4084,13 @@ packages: domelementtype: 2.3.0 dev: true + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + /domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} dependencies: @@ -3910,6 +4099,14 @@ packages: domhandler: 4.3.1 dev: true + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dev: true + /dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: @@ -3957,14 +4154,6 @@ packages: resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} dev: false - /enhanced-resolve@5.12.0: - resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} - engines: {node: '>=10.13.0'} - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - dev: true - /entities@2.1.0: resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==} dev: true @@ -3977,6 +4166,11 @@ packages: resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} engines: {node: '>=0.12'} + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: true + /errno@0.1.8: resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} hasBin: true @@ -3986,6 +4180,12 @@ packages: dev: true optional: true + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + /es-abstract@1.21.2: resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} engines: {node: '>= 0.4'} @@ -4294,15 +4494,6 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-prettier@8.8.0(eslint@8.38.0): - resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - dependencies: - eslint: 8.38.0 - dev: true - /eslint-import-resolver-node@0.3.7: resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} dependencies: @@ -4313,31 +4504,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.58.0)(eslint-plugin-import@2.27.5)(eslint@8.38.0): - resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '*' - eslint-plugin-import: '*' - dependencies: - debug: 4.3.4 - enhanced-resolve: 5.12.0 - eslint: 8.38.0 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) - get-tsconfig: 4.5.0 - globby: 13.1.4 - is-core-module: 2.12.0 - is-glob: 4.0.3 - synckit: 0.8.5 - transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-node - - eslint-import-resolver-webpack - - supports-color - dev: true - - /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0): + /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.59.7)(eslint-import-resolver-node@0.3.7)(eslint@8.38.0): resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -4358,16 +4525,53 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.58.0(eslint@8.38.0)(typescript@4.5.5) + '@typescript-eslint/parser': 5.59.7(eslint@8.38.0)(typescript@4.5.5) debug: 3.2.7 eslint: 8.38.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.58.0)(eslint-plugin-import@2.27.5)(eslint@8.38.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0): + /eslint-plugin-antfu@0.39.3(eslint@8.38.0)(typescript@4.5.5): + resolution: {integrity: sha512-aHOwS1ou+1xWKhxMVjR2/ScXEYGs5qAXHiHbYD+Ps9Ld1+G0OyjZDKT7w+vXLAgGb1bPV8abwJ8XBaJMoQ6qOA==} + dependencies: + '@typescript-eslint/utils': 5.59.7(eslint@8.38.0)(typescript@4.5.5) + transitivePeerDependencies: + - eslint + - supports-color + - typescript + dev: true + + /eslint-plugin-es-x@6.2.1(eslint@8.38.0): + resolution: {integrity: sha512-uR34zUhZ9EBoiSD2DdV5kHLpydVEvwWqjteUr9sXRgJknwbKZJZhdJ7uFnaTtd+Nr/2G3ceJHnHXrFhJ67n3Tw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '>=8' + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.38.0) + '@eslint-community/regexpp': 4.5.0 + eslint: 8.38.0 + dev: true + + /eslint-plugin-eslint-comments@3.2.0(eslint@8.38.0): + resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} + engines: {node: '>=6.5.0'} + peerDependencies: + eslint: '>=4.19.1' + dependencies: + escape-string-regexp: 1.0.5 + eslint: 8.38.0 + ignore: 5.2.4 + dev: true + + /eslint-plugin-html@7.1.0: + resolution: {integrity: sha512-fNLRraV/e6j8e3XYOC9xgND4j+U7b1Rq+OygMlLcMg+wI/IpVbF+ubQa3R78EjKB9njT6TQOlcK5rFKBVVtdfg==} + dependencies: + htmlparser2: 8.0.2 + dev: true + + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.7)(eslint@8.38.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -4377,7 +4581,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.58.0(eslint@8.38.0)(typescript@4.5.5) + '@typescript-eslint/parser': 5.59.7(eslint@8.38.0)(typescript@4.5.5) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -4385,7 +4589,7 @@ packages: doctrine: 2.1.0 eslint: 8.38.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.59.7)(eslint-import-resolver-node@0.3.7)(eslint@8.38.0) has: 1.0.3 is-core-module: 2.12.0 is-glob: 4.0.3 @@ -4400,40 +4604,160 @@ packages: - supports-color dev: true - /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.38.0)(prettier@2.8.7): - resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} - engines: {node: '>=12.0.0'} + /eslint-plugin-jest@27.2.1(@typescript-eslint/eslint-plugin@5.59.7)(eslint@8.38.0)(typescript@4.5.5): + resolution: {integrity: sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: - eslint: '>=7.28.0' - eslint-config-prettier: '*' - prettier: '>=2.0.0' + '@typescript-eslint/eslint-plugin': ^5.0.0 + eslint: ^7.0.0 || ^8.0.0 + jest: '*' peerDependenciesMeta: - eslint-config-prettier: + '@typescript-eslint/eslint-plugin': + optional: true + jest: optional: true dependencies: + '@typescript-eslint/eslint-plugin': 5.59.7(@typescript-eslint/parser@5.59.7)(eslint@8.38.0)(typescript@4.5.5) + '@typescript-eslint/utils': 5.59.7(eslint@8.38.0)(typescript@4.5.5) eslint: 8.38.0 - eslint-config-prettier: 8.8.0(eslint@8.38.0) - prettier: 2.8.7 - prettier-linter-helpers: 1.0.0 + transitivePeerDependencies: + - supports-color + - typescript dev: true - /eslint-plugin-vue@8.7.1(eslint@8.38.0): - resolution: {integrity: sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg==} + /eslint-plugin-jsonc@2.8.0(eslint@8.38.0): + resolution: {integrity: sha512-K4VsnztnNwpm+V49CcCu5laq8VjclJpuhfI9LFkOrOyK+BKdQHMzkWo43B4X4rYaVrChm4U9kw/tTU5RHh5Wtg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.38.0) + eslint: 8.38.0 + jsonc-eslint-parser: 2.3.0 + natural-compare: 1.4.0 + dev: true + + /eslint-plugin-markdown@3.0.0(eslint@8.38.0): + resolution: {integrity: sha512-hRs5RUJGbeHDLfS7ELanT0e29Ocyssf/7kBM+p7KluY5AwngGkDf8Oyu4658/NZSGTTq05FZeWbkxXtbVyHPwg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + eslint: 8.38.0 + mdast-util-from-markdown: 0.8.5 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-n@16.0.0(eslint@8.38.0): + resolution: {integrity: sha512-akkZTE3hsHBrq6CwmGuYCzQREbVUrA855kzcHqe6i0FLBkeY7Y/6tThCVkjUnjhvRBAlc+8lILcSe5QvvDpeZQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + eslint: '>=7.0.0' + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.38.0) + builtins: 5.0.1 + eslint: 8.38.0 + eslint-plugin-es-x: 6.2.1(eslint@8.38.0) + ignore: 5.2.4 + is-core-module: 2.12.0 + minimatch: 3.1.2 + resolve: 1.22.2 + semver: 7.5.1 + dev: true + + /eslint-plugin-no-only-tests@3.1.0: + resolution: {integrity: sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==} + engines: {node: '>=5.0.0'} + dev: true + + /eslint-plugin-promise@6.1.1(eslint@8.38.0): + resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + eslint: 8.38.0 + dev: true + + /eslint-plugin-unicorn@47.0.0(eslint@8.38.0): + resolution: {integrity: sha512-ivB3bKk7fDIeWOUmmMm9o3Ax9zbMz1Bsza/R2qm46ufw4T6VBFBaJIR1uN3pCKSmSXm8/9Nri8V+iUut1NhQGA==} + engines: {node: '>=16'} + peerDependencies: + eslint: '>=8.38.0' + dependencies: + '@babel/helper-validator-identifier': 7.19.1 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.38.0) + ci-info: 3.8.0 + clean-regexp: 1.0.0 + eslint: 8.38.0 + esquery: 1.5.0 + indent-string: 4.0.0 + is-builtin-module: 3.2.1 + jsesc: 3.0.2 + lodash: 4.17.21 + pluralize: 8.0.0 + read-pkg-up: 7.0.1 + regexp-tree: 0.1.27 + regjsparser: 0.10.0 + safe-regex: 2.1.1 + semver: 7.4.0 + strip-indent: 3.0.0 + dev: true + + /eslint-plugin-unused-imports@2.0.0(@typescript-eslint/eslint-plugin@5.59.7)(eslint@8.38.0): + resolution: {integrity: sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.0.0 + eslint: ^8.0.0 + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 5.59.7(@typescript-eslint/parser@5.59.7)(eslint@8.38.0)(typescript@4.5.5) + eslint: 8.38.0 + eslint-rule-composer: 0.3.0 + dev: true + + /eslint-plugin-vue@9.14.1(eslint@8.38.0): + resolution: {integrity: sha512-LQazDB1qkNEKejLe/b5a9VfEbtbczcOaui5lQ4Qw0tbRBbQYREyxxOV5BQgNDTqGPs9pxqiEpbMi9ywuIaF7vw==} + engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.38.0) eslint: 8.38.0 - eslint-utils: 3.0.0(eslint@8.38.0) natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.0.11 semver: 7.4.0 - vue-eslint-parser: 8.3.0(eslint@8.38.0) + vue-eslint-parser: 9.3.0(eslint@8.38.0) + xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color dev: true + /eslint-plugin-yml@1.7.0(eslint@8.38.0): + resolution: {integrity: sha512-qq61FQJk+qIgWl0R06bec7UQQEIBrUH22jS+MroTbFUKu+3/iVlGRpZd8mjpOAm/+H/WEDFwy4x/+kKgVGbsWw==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + debug: 4.3.4 + eslint: 8.38.0 + lodash: 4.17.21 + natural-compare: 1.4.0 + yaml-eslint-parser: 1.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-rule-composer@0.3.0: + resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} + engines: {node: '>=4.0.0'} + dev: true + /eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -4450,21 +4774,6 @@ packages: estraverse: 5.3.0 dev: true - /eslint-utils@3.0.0(eslint@8.38.0): - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint: 8.38.0 - eslint-visitor-keys: 2.1.0 - dev: true - - /eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: true - /eslint-visitor-keys@3.4.0: resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4611,10 +4920,6 @@ packages: /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - /fast-diff@1.2.0: - resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} - dev: true - /fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} @@ -4693,7 +4998,6 @@ packages: dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - dev: false /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} @@ -4860,10 +5164,6 @@ packages: get-intrinsic: 1.2.0 dev: true - /get-tsconfig@4.5.0: - resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} - dev: true - /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -5040,6 +5340,10 @@ packages: engines: {node: '>=12.0.0'} dev: false + /hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: true + /html-encoding-sniffer@3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} @@ -5065,6 +5369,15 @@ packages: entities: 3.0.1 dev: true + /htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + dev: true + /http-proxy-agent@4.0.1: resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} engines: {node: '>= 6'} @@ -5144,6 +5457,11 @@ packages: engines: {node: '>=0.8.19'} dev: true + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: @@ -5182,6 +5500,17 @@ packages: jsbn: 1.1.0 dev: false + /is-alphabetical@1.0.4: + resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} + dev: true + + /is-alphanumerical@1.0.4: + resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} + dependencies: + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + dev: true + /is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: @@ -5190,6 +5519,10 @@ packages: is-typed-array: 1.1.10 dev: true + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: @@ -5211,6 +5544,13 @@ packages: has-tostringtag: 1.0.0 dev: true + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -5229,6 +5569,10 @@ packages: has-tostringtag: 1.0.0 dev: true + /is-decimal@1.0.4: + resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} + dev: true + /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} @@ -5270,6 +5614,10 @@ packages: is-extglob: 2.1.1 dev: true + /is-hexadecimal@1.0.4: + resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} + dev: true + /is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} dev: true @@ -5556,6 +5904,16 @@ packages: hasBin: true dev: true + /jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true @@ -5590,6 +5948,16 @@ packages: engines: {node: '>=6'} hasBin: true + /jsonc-eslint-parser@2.3.0: + resolution: {integrity: sha512-9xZPKVYp9DxnM3sd1yAsh/d59iIaswDkai8oTxbursfKYbg/ibjX0IzFt35+VZ8iEW453TVTXztnRvYUQlAfUQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.8.2 + eslint-visitor-keys: 3.4.0 + espree: 9.5.1 + semver: 7.4.0 + dev: true + /jsonc-parser@2.3.1: resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} dev: true @@ -5685,6 +6053,10 @@ packages: resolution: {integrity: sha512-1eAgjLrZA0+2Wgw4hs+4Q/kEBycxQo8ZLYnmOvZ3AlM8ImAVAJgDPlZtISLEzD1vunc2q8s2Pn7XwB7I8U3Kzw==} dev: false + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + /linkify-it@3.0.3: resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==} dependencies: @@ -5707,7 +6079,6 @@ packages: engines: {node: '>=8'} dependencies: p-locate: 4.1.0 - dev: false /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} @@ -5842,6 +6213,22 @@ packages: typed-function: 2.1.0 dev: false + /mdast-util-from-markdown@0.8.5: + resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} + dependencies: + '@types/mdast': 3.0.11 + mdast-util-to-string: 2.0.0 + micromark: 2.11.4 + parse-entities: 2.0.0 + unist-util-stringify-position: 2.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-to-string@2.0.0: + resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} + dev: true + /mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} dev: true @@ -5862,6 +6249,15 @@ packages: engines: {node: '>= 8'} dev: true + /micromark@2.11.4: + resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} + dependencies: + debug: 4.3.4 + parse-entities: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: true + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -5893,6 +6289,11 @@ packages: engines: {node: '>=6'} dev: true + /min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -6047,6 +6448,15 @@ packages: abbrev: 1.1.1 dev: true + /normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.2 + semver: 5.7.1 + validate-npm-package-license: 3.0.4 + dev: true + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -6195,7 +6605,6 @@ packages: engines: {node: '>=6'} dependencies: p-try: 2.2.0 - dev: false /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} @@ -6209,7 +6618,6 @@ packages: engines: {node: '>=8'} dependencies: p-limit: 2.3.0 - dev: false /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} @@ -6221,7 +6629,6 @@ packages: /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - dev: false /param-case@3.0.4: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} @@ -6237,6 +6644,27 @@ packages: callsites: 3.1.0 dev: true + /parse-entities@2.0.0: + resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} + dependencies: + character-entities: 1.2.4 + character-entities-legacy: 1.1.4 + character-reference-invalid: 1.1.4 + is-alphanumerical: 1.0.4 + is-decimal: 1.0.4 + is-hexadecimal: 1.0.4 + dev: true + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.21.4 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + /parse-node-version@1.0.1: resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} engines: {node: '>= 0.10'} @@ -6351,6 +6779,11 @@ packages: hasBin: true dev: true + /pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + dev: true + /pngjs@5.0.0: resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} engines: {node: '>=10.13.0'} @@ -6382,13 +6815,6 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} - dependencies: - fast-diff: 1.2.0 - dev: true - /prettier@2.8.7: resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==} engines: {node: '>=10.13.0'} @@ -6703,6 +7129,25 @@ packages: dependencies: safe-buffer: 5.2.1 + /read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + dev: true + + /read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + dependencies: + '@types/normalize-package-data': 2.4.1 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + dev: true + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -6730,6 +7175,11 @@ packages: '@babel/runtime': 7.21.0 dev: true + /regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + dev: true + /regexp.prototype.flags@1.4.3: resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} engines: {node: '>= 0.4'} @@ -6751,6 +7201,13 @@ packages: unicode-match-property-value-ecmascript: 2.1.0 dev: true + /regjsparser@0.10.0: + resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + /regjsparser@0.9.1: resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} hasBin: true @@ -6857,6 +7314,12 @@ packages: is-regex: 1.1.4 dev: true + /safe-regex@2.1.1: + resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} + dependencies: + regexp-tree: 0.1.27 + dev: true + /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true @@ -6911,6 +7374,14 @@ packages: lru-cache: 6.0.0 dev: true + /semver@7.5.1: + resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + /sentence-case@3.0.4: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} dependencies: @@ -7017,6 +7488,28 @@ packages: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} deprecated: Please use @jridgewell/sourcemap-codec instead + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.13 + dev: true + + /spdx-exceptions@2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + dev: true + + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.13 + dev: true + + /spdx-license-ids@3.0.13: + resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} + dev: true + /split@0.3.3: resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} dependencies: @@ -7146,6 +7639,13 @@ packages: engines: {node: '>=6'} dev: true + /strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + dependencies: + min-indent: 1.0.1 + dev: true + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -7206,11 +7706,6 @@ packages: tslib: 2.5.0 dev: true - /tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - dev: true - /temp-dir@2.0.0: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} @@ -7395,6 +7890,16 @@ packages: engines: {node: '>=10'} dev: true + /type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + dev: true + + /type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + dev: true + /type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} @@ -7498,6 +8003,12 @@ packages: crypto-random-string: 2.0.0 dev: true + /unist-util-stringify-position@2.0.3: + resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} + dependencies: + '@types/unist': 2.0.6 + dev: true + /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} @@ -7698,6 +8209,13 @@ packages: convert-source-map: 1.9.0 dev: true + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + dev: true + /vdirs@0.1.8(vue@3.2.47): resolution: {integrity: sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==} peerDependencies: @@ -7959,9 +8477,9 @@ packages: dependencies: vue: 3.2.47 - /vue-eslint-parser@8.3.0(eslint@8.38.0): - resolution: {integrity: sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /vue-eslint-parser@9.3.0(eslint@8.38.0): + resolution: {integrity: sha512-48IxT9d0+wArT1+3wNIy0tascRoywqSUe2E1YalIC1L8jsUGe5aJQItWfRok7DVFGz3UYvzEI7n5wiTXsCMAcQ==} + engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: @@ -7972,7 +8490,7 @@ packages: espree: 9.5.1 esquery: 1.5.0 lodash: 4.17.21 - semver: 7.4.0 + semver: 7.5.1 transitivePeerDependencies: - supports-color dev: true @@ -8395,6 +8913,15 @@ packages: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true + /yaml-eslint-parser@1.2.2: + resolution: {integrity: sha512-pEwzfsKbTrB8G3xc/sN7aw1v6A6c/pKxLAkjclnAyo5g5qOh6eL9WGu0o3cSDQZKrTNk4KL4lQSwZW+nBkANEg==} + engines: {node: ^14.17.0 || >=16.0.0} + dependencies: + eslint-visitor-keys: 3.4.0 + lodash: 4.17.21 + yaml: 2.2.1 + dev: true + /yaml@2.2.1: resolution: {integrity: sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==} engines: {node: '>= 14'} diff --git a/src/App.vue b/src/App.vue index 98199afb..6bd9a36b 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,7 +1,7 @@ + - - diff --git a/src/components/InputCopyable.vue b/src/components/InputCopyable.vue index cf7a42a7..27c0657f 100644 --- a/src/components/InputCopyable.vue +++ b/src/components/InputCopyable.vue @@ -1,20 +1,5 @@ - - + + diff --git a/src/components/MenuIconItem.vue b/src/components/MenuIconItem.vue index a08fe241..ed1b8881 100644 --- a/src/components/MenuIconItem.vue +++ b/src/components/MenuIconItem.vue @@ -1,14 +1,7 @@ - - + + + diff --git a/src/tools/benchmark-builder/dynamic-values.vue b/src/tools/benchmark-builder/dynamic-values.vue index 5e349fc8..975a545c 100644 --- a/src/tools/benchmark-builder/dynamic-values.vue +++ b/src/tools/benchmark-builder/dynamic-values.vue @@ -1,7 +1,37 @@ + + - - - - diff --git a/src/tools/bip39-generator/bip39-generator.vue b/src/tools/bip39-generator/bip39-generator.vue index 1aaa6e9c..5f005edf 100644 --- a/src/tools/bip39-generator/bip39-generator.vue +++ b/src/tools/bip39-generator/bip39-generator.vue @@ -1,3 +1,85 @@ + + - - diff --git a/src/tools/camera-recorder/camera-recorder.vue b/src/tools/camera-recorder/camera-recorder.vue index 81fec42c..19fe30b4 100644 --- a/src/tools/camera-recorder/camera-recorder.vue +++ b/src/tools/camera-recorder/camera-recorder.vue @@ -1,111 +1,9 @@ - - - + diff --git a/src/tools/camera-recorder/useMediaRecorder.ts b/src/tools/camera-recorder/useMediaRecorder.ts index eed0edda..a21328c2 100644 --- a/src/tools/camera-recorder/useMediaRecorder.ts +++ b/src/tools/camera-recorder/useMediaRecorder.ts @@ -1,15 +1,15 @@ -import { computed, ref, type Ref } from 'vue'; +import { type Ref, computed, ref } from 'vue'; export { useMediaRecorder }; function useMediaRecorder({ stream }: { stream: Ref }): { - isRecordingSupported: Ref; - recordingState: Ref<'stopped' | 'recording' | 'paused'>; - startRecording: () => void; - stopRecording: () => void; - pauseRecording: () => void; - resumeRecording: () => void; - onRecordAvailable: (cb: (url: string) => void) => void; + isRecordingSupported: Ref + recordingState: Ref<'stopped' | 'recording' | 'paused'> + startRecording: () => void + stopRecording: () => void + pauseRecording: () => void + resumeRecording: () => void + onRecordAvailable: (cb: (url: string) => void) => void } { const isRecordingSupported = computed(() => MediaRecorder.isTypeSupported('video/webm')); const mediaRecorder = ref(null); @@ -17,10 +17,23 @@ function useMediaRecorder({ stream }: { stream: Ref }): const recordAvailable = createEventHook(); const recordingState = ref<'stopped' | 'recording' | 'paused'>('stopped'); + const createVideo = () => { + const blob = new Blob(recordedChunks.value, { type: 'video/webm' }); + const url = URL.createObjectURL(blob); + recordedChunks.value = []; + return url; + }; + const startRecording = () => { - if (!isRecordingSupported.value) return; - if (!stream.value) return; - if (recordingState.value !== 'stopped') return; + if (!isRecordingSupported.value) { + return; + } + if (!stream.value) { + return; + } + if (recordingState.value !== 'stopped') { + return; + } mediaRecorder.value = new MediaRecorder(stream.value, { mimeType: 'video/webm' }); @@ -34,47 +47,60 @@ function useMediaRecorder({ stream }: { stream: Ref }): recordAvailable.trigger(createVideo()); }; - if (mediaRecorder.value.state !== 'inactive') return; + if (mediaRecorder.value.state !== 'inactive') { + return; + } mediaRecorder.value.start(); recordingState.value = 'recording'; }; const stopRecording = () => { - if (!isRecordingSupported.value) return; - if (!mediaRecorder.value) return; - if (recordingState.value === 'stopped') return; + if (!isRecordingSupported.value) { + return; + } + if (!mediaRecorder.value) { + return; + } + if (recordingState.value === 'stopped') { + return; + } mediaRecorder.value.stop(); recordingState.value = 'stopped'; }; const pauseRecording = () => { - if (!isRecordingSupported.value) return; - if (!mediaRecorder.value) return; - if (recordingState.value !== 'recording') return; + if (!isRecordingSupported.value) { + return; + } + if (!mediaRecorder.value) { + return; + } + if (recordingState.value !== 'recording') { + return; + } mediaRecorder.value.pause(); recordingState.value = 'paused'; }; const resumeRecording = () => { - if (!isRecordingSupported.value) return; - if (!mediaRecorder.value) return; + if (!isRecordingSupported.value) { + return; + } + if (!mediaRecorder.value) { + return; + } - if (recordingState.value !== 'paused') return; + if (recordingState.value !== 'paused') { + return; + } mediaRecorder.value.resume(); recordingState.value = 'recording'; }; - const createVideo = () => { - const blob = new Blob(recordedChunks.value, { type: 'video/webm' }); - const url = URL.createObjectURL(blob); - recordedChunks.value = []; - return url; - }; - return { isRecordingSupported, startRecording, diff --git a/src/tools/case-converter/case-converter.vue b/src/tools/case-converter/case-converter.vue index 2ad36568..4cf6507d 100644 --- a/src/tools/case-converter/case-converter.vue +++ b/src/tools/case-converter/case-converter.vue @@ -1,55 +1,3 @@ - - + + diff --git a/src/tools/html-wysiwyg-editor/editor/menu-bar.vue b/src/tools/html-wysiwyg-editor/editor/menu-bar.vue index b54d97b6..01ba9c70 100644 --- a/src/tools/html-wysiwyg-editor/editor/menu-bar.vue +++ b/src/tools/html-wysiwyg-editor/editor/menu-bar.vue @@ -1,12 +1,3 @@ - - - + diff --git a/src/tools/html-wysiwyg-editor/html-wysiwyg-editor.vue b/src/tools/html-wysiwyg-editor/html-wysiwyg-editor.vue index 7cd12566..69238215 100644 --- a/src/tools/html-wysiwyg-editor/html-wysiwyg-editor.vue +++ b/src/tools/html-wysiwyg-editor/html-wysiwyg-editor.vue @@ -1,16 +1,14 @@ - - - + diff --git a/src/tools/http-status-codes/http-status-codes.constants.ts b/src/tools/http-status-codes/http-status-codes.constants.ts index c64bda06..279cd7ce 100644 --- a/src/tools/http-status-codes/http-status-codes.constants.ts +++ b/src/tools/http-status-codes/http-status-codes.constants.ts @@ -1,11 +1,11 @@ export const codesByCategories: { - category: string; + category: string codes: { - code: number; - name: string; - description: string; - type: 'HTTP' | 'WebDav'; - }[]; + code: number + name: string + description: string + type: 'HTTP' | 'WebDav' + }[] }[] = [ { category: '1xx informational response', @@ -286,7 +286,7 @@ export const codesByCategories: { }, { code: 418, - name: "I'm a teapot", + name: 'I\'m a teapot', description: 'The server refuses the attempt to brew coffee with a teapot.', type: 'HTTP', }, diff --git a/src/tools/http-status-codes/http-status-codes.e2e.spec.ts b/src/tools/http-status-codes/http-status-codes.e2e.spec.ts index 59979cd2..cf6eae9d 100644 --- a/src/tools/http-status-codes/http-status-codes.e2e.spec.ts +++ b/src/tools/http-status-codes/http-status-codes.e2e.spec.ts @@ -1,4 +1,4 @@ -import { test, expect } from '@playwright/test'; +import { expect, test } from '@playwright/test'; test.describe('Tool - Http status codes', () => { test.beforeEach(async ({ page }) => { diff --git a/src/tools/http-status-codes/http-status-codes.vue b/src/tools/http-status-codes/http-status-codes.vue index 9f827f5a..0fb11251 100644 --- a/src/tools/http-status-codes/http-status-codes.vue +++ b/src/tools/http-status-codes/http-status-codes.vue @@ -1,3 +1,27 @@ + + - - - - diff --git a/src/tools/index.ts b/src/tools/index.ts index 44ef8a3f..211a8a81 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -140,5 +140,5 @@ export const toolsByCategory: ToolCategory[] = [ export const tools = toolsByCategory.flatMap(({ components }) => components); export const toolsWithCategory = toolsByCategory.flatMap(({ components, name }) => - components.map((tool) => ({ category: name, ...tool })), + components.map(tool => ({ category: name, ...tool })), ); diff --git a/src/tools/integer-base-converter/integer-base-converter.model.test.ts b/src/tools/integer-base-converter/integer-base-converter.model.test.ts index e9d91f6f..d0387b64 100644 --- a/src/tools/integer-base-converter/integer-base-converter.model.test.ts +++ b/src/tools/integer-base-converter/integer-base-converter.model.test.ts @@ -1,4 +1,4 @@ -import { expect, describe, it } from 'vitest'; +import { describe, expect, it } from 'vitest'; import { convertBase } from './integer-base-converter.model'; describe('integer-base-converter', () => { diff --git a/src/tools/integer-base-converter/integer-base-converter.model.ts b/src/tools/integer-base-converter/integer-base-converter.model.ts index cfe15bd1..b4470e57 100644 --- a/src/tools/integer-base-converter/integer-base-converter.model.ts +++ b/src/tools/integer-base-converter/integer-base-converter.model.ts @@ -7,9 +7,9 @@ export function convertBase({ value, fromBase, toBase }: { value: string; fromBa .reverse() .reduce((carry: number, digit: string, index: number) => { if (!fromRange.includes(digit)) { - throw new Error('Invalid digit "' + digit + '" for base ' + fromBase + '.'); + throw new Error(`Invalid digit "${digit}" for base ${fromBase}.`); } - return (carry += fromRange.indexOf(digit) * Math.pow(fromBase, index)); + return (carry += fromRange.indexOf(digit) * fromBase ** index); }, 0); let newValue = ''; while (decValue > 0) { diff --git a/src/tools/integer-base-converter/integer-base-converter.vue b/src/tools/integer-base-converter/integer-base-converter.vue index 058d8319..01f6401a 100644 --- a/src/tools/integer-base-converter/integer-base-converter.vue +++ b/src/tools/integer-base-converter/integer-base-converter.vue @@ -1,56 +1,103 @@ + + - - + diff --git a/src/tools/ipv4-range-expander/ipv4-range-expander.e2e.spec.ts b/src/tools/ipv4-range-expander/ipv4-range-expander.e2e.spec.ts index b9198275..7d9a4a8f 100644 --- a/src/tools/ipv4-range-expander/ipv4-range-expander.e2e.spec.ts +++ b/src/tools/ipv4-range-expander/ipv4-range-expander.e2e.spec.ts @@ -1,4 +1,4 @@ -import { test, expect } from '@playwright/test'; +import { expect, test } from '@playwright/test'; test.describe('Tool - IPv4 range expander', () => { test.beforeEach(async ({ page }) => { diff --git a/src/tools/ipv4-range-expander/ipv4-range-expander.service.test.ts b/src/tools/ipv4-range-expander/ipv4-range-expander.service.test.ts index 6888ac12..51046232 100644 --- a/src/tools/ipv4-range-expander/ipv4-range-expander.service.test.ts +++ b/src/tools/ipv4-range-expander/ipv4-range-expander.service.test.ts @@ -1,4 +1,4 @@ -import { expect, describe, it } from 'vitest'; +import { describe, expect, it } from 'vitest'; import { calculateCidr } from './ipv4-range-expander.service'; describe('ipv4RangeExpander', () => { diff --git a/src/tools/ipv4-range-expander/ipv4-range-expander.service.ts b/src/tools/ipv4-range-expander/ipv4-range-expander.service.ts index 7dd2c644..78fbde5b 100644 --- a/src/tools/ipv4-range-expander/ipv4-range-expander.service.ts +++ b/src/tools/ipv4-range-expander/ipv4-range-expander.service.ts @@ -1,20 +1,25 @@ -import type { Ipv4RangeExpanderResult } from './ipv4-range-expander.types'; import { convertBase } from '../integer-base-converter/integer-base-converter.model'; import { ipv4ToInt } from '../ipv4-address-converter/ipv4-address-converter.service'; +import type { Ipv4RangeExpanderResult } from './ipv4-range-expander.types'; + export { calculateCidr }; function bits2ip(ipInt: number) { - return (ipInt >>> 24) + '.' + ((ipInt >> 16) & 255) + '.' + ((ipInt >> 8) & 255) + '.' + (ipInt & 255); + return `${ipInt >>> 24}.${(ipInt >> 16) & 255}.${(ipInt >> 8) & 255}.${ipInt & 255}`; } function getRangesize(start: string, end: string) { - if (start == null || end == null) return -1; + if (start == null || end == null) { + return -1; + } return 1 + parseInt(end, 2) - parseInt(start, 2); } function getCidr(start: string, end: string) { - if (start == null || end == null) return null; + if (start == null || end == null) { + return null; + } const range = getRangesize(start, end); if (range < 1) { @@ -32,7 +37,7 @@ function getCidr(start: string, end: string) { const newStart = start.substring(0, mask) + '0'.repeat(32 - mask); const newEnd = end.substring(0, mask) + '1'.repeat(32 - mask); - return { start: newStart, end: newEnd, mask: mask }; + return { start: newStart, end: newEnd, mask }; } function calculateCidr({ startIp, endIp }: { startIp: string; endIp: string }) { @@ -52,7 +57,7 @@ function calculateCidr({ startIp, endIp }: { startIp: string; endIp: string }) { const result: Ipv4RangeExpanderResult = {}; result.newEnd = bits2ip(parseInt(cidr.end, 2)); result.newStart = bits2ip(parseInt(cidr.start, 2)); - result.newCidr = result.newStart + '/' + cidr.mask; + result.newCidr = `${result.newStart}/${cidr.mask}`; result.newSize = getRangesize(cidr.start, cidr.end); result.oldSize = getRangesize(start, end); diff --git a/src/tools/ipv4-range-expander/ipv4-range-expander.types.ts b/src/tools/ipv4-range-expander/ipv4-range-expander.types.ts index 9172fed0..d5d2b45e 100644 --- a/src/tools/ipv4-range-expander/ipv4-range-expander.types.ts +++ b/src/tools/ipv4-range-expander/ipv4-range-expander.types.ts @@ -1,7 +1,7 @@ -export type Ipv4RangeExpanderResult = { - oldSize?: number; - newStart?: string; - newEnd?: string; - newCidr?: string; - newSize?: number; -}; +export interface Ipv4RangeExpanderResult { + oldSize?: number + newStart?: string + newEnd?: string + newCidr?: string + newSize?: number +} diff --git a/src/tools/ipv4-range-expander/ipv4-range-expander.vue b/src/tools/ipv4-range-expander/ipv4-range-expander.vue index f1b8dc68..16ce62fb 100644 --- a/src/tools/ipv4-range-expander/ipv4-range-expander.vue +++ b/src/tools/ipv4-range-expander/ipv4-range-expander.vue @@ -1,3 +1,61 @@ + + - - - - diff --git a/src/tools/ipv4-range-expander/result-row.vue b/src/tools/ipv4-range-expander/result-row.vue index b1782fea..efa0b648 100644 --- a/src/tools/ipv4-range-expander/result-row.vue +++ b/src/tools/ipv4-range-expander/result-row.vue @@ -1,18 +1,6 @@ - - - + diff --git a/src/tools/ipv4-subnet-calculator/ipv4-subnet-calculator.vue b/src/tools/ipv4-subnet-calculator/ipv4-subnet-calculator.vue index ca9f424f..d16e5573 100644 --- a/src/tools/ipv4-subnet-calculator/ipv4-subnet-calculator.vue +++ b/src/tools/ipv4-subnet-calculator/ipv4-subnet-calculator.vue @@ -1,51 +1,12 @@ - - - + diff --git a/src/tools/ipv6-ula-generator/ipv6-ula-generator.vue b/src/tools/ipv6-ula-generator/ipv6-ula-generator.vue index 8f1b1302..66c69c6c 100644 --- a/src/tools/ipv6-ula-generator/ipv6-ula-generator.vue +++ b/src/tools/ipv6-ula-generator/ipv6-ula-generator.vue @@ -1,36 +1,3 @@ - - - + diff --git a/src/tools/json-diff/diff-viewer/diff-viewer.models.tsx b/src/tools/json-diff/diff-viewer/diff-viewer.models.tsx index 5a19febf..d2117dfb 100644 --- a/src/tools/json-diff/diff-viewer/diff-viewer.models.tsx +++ b/src/tools/json-diff/diff-viewer/diff-viewer.models.tsx @@ -1,16 +1,16 @@ import _ from 'lodash'; +import type { ArrayDifference, Difference, ObjectDifference } from '../json-diff.types'; import { useCopy } from '@/composable/copy'; -import type { Difference, ArrayDifference, ObjectDifference } from '../json-diff.types'; -export const DiffRootViewer = ({ diff }: { diff: Difference }) => { +export function DiffRootViewer({ diff }: { diff: Difference }) { return (
    {DiffViewer({ diff, showKeys: false })}
); -}; +} -const DiffViewer = ({ diff, showKeys = true }: { diff: Difference; showKeys?: boolean }) => { +function DiffViewer({ diff, showKeys = true }: { diff: Difference; showKeys?: boolean }) { const { type, status } = diff; if (status === 'updated') { @@ -26,9 +26,9 @@ const DiffViewer = ({ diff, showKeys = true }: { diff: Difference; showKeys?: bo } return LineDiffViewer({ diff, showKeys }); -}; +} -const LineDiffViewer = ({ diff, showKeys }: { diff: Difference; showKeys?: boolean }) => { +function LineDiffViewer({ diff, showKeys }: { diff: Difference; showKeys?: boolean }) { const { value, key, status, oldValue } = diff; const valueToDisplay = status === 'removed' ? oldValue : value; @@ -46,9 +46,9 @@ const LineDiffViewer = ({ diff, showKeys }: { diff: Difference; showKeys?: boole , ); -}; +} -const ComparisonViewer = ({ diff, showKeys }: { diff: Difference; showKeys?: boolean }) => { +function ComparisonViewer({ diff, showKeys }: { diff: Difference; showKeys?: boolean }) { const { value, key, oldValue } = diff; return ( @@ -63,21 +63,21 @@ const ComparisonViewer = ({ diff, showKeys }: { diff: Difference; showKeys?: boo {Value({ value, status: 'added' })}, ); -}; +} -const ChildrenViewer = ({ +function ChildrenViewer({ diff, openTag, closeTag, showKeys, showChildrenKeys = true, }: { - diff: ArrayDifference | ObjectDifference; - showKeys: boolean; - showChildrenKeys?: boolean; - openTag: string; - closeTag: string; -}) => { + diff: ArrayDifference | ObjectDifference + showKeys: boolean + showChildrenKeys?: boolean + openTag: string + closeTag: string +}) { const { children, key, status, type } = diff; return ( @@ -91,12 +91,12 @@ const ChildrenViewer = ({ )} {openTag} - {children.length > 0 &&
    {children.map((diff) => DiffViewer({ diff, showKeys: showChildrenKeys }))}
} - {closeTag + ','} + {children.length > 0 &&
    {children.map(diff => DiffViewer({ diff, showKeys: showChildrenKeys }))}
} + {`${closeTag},`} ); -}; +} function formatValue(value: unknown) { if (_.isNull(value)) { @@ -106,7 +106,7 @@ function formatValue(value: unknown) { return JSON.stringify(value); } -const Value = ({ value, status }: { value: unknown; status: string }) => { +function Value({ value, status }: { value: unknown; status: string }) { const formatedValue = formatValue(value); const { copy } = useCopy({ source: formatedValue }); @@ -116,4 +116,4 @@ const Value = ({ value, status }: { value: unknown; status: string }) => { {formatedValue} ); -}; +} diff --git a/src/tools/json-diff/diff-viewer/diff-viewer.vue b/src/tools/json-diff/diff-viewer/diff-viewer.vue index 8d17e6bc..08c47848 100644 --- a/src/tools/json-diff/diff-viewer/diff-viewer.vue +++ b/src/tools/json-diff/diff-viewer/diff-viewer.vue @@ -1,26 +1,11 @@ - - + + + diff --git a/src/tools/json-viewer/json-viewer.vue b/src/tools/json-viewer/json-viewer.vue index 7e95db1f..5fa3d361 100644 --- a/src/tools/json-viewer/json-viewer.vue +++ b/src/tools/json-viewer/json-viewer.vue @@ -1,3 +1,30 @@ + + - - + diff --git a/src/tools/list-converter/list-converter.e2e.spec.ts b/src/tools/list-converter/list-converter.e2e.spec.ts index a5ac8c6d..4accbf06 100644 --- a/src/tools/list-converter/list-converter.e2e.spec.ts +++ b/src/tools/list-converter/list-converter.e2e.spec.ts @@ -1,4 +1,4 @@ -import { test, expect } from '@playwright/test'; +import { expect, test } from '@playwright/test'; test.describe('Tool - List converter', () => { test.beforeEach(async ({ page }) => { @@ -30,10 +30,10 @@ test.describe('Tool - List converter', () => { 3 5`); await page.getByTestId('removeDuplicates').check(); - await page.getByTestId('itemPrefix').fill("'"); - await page.getByTestId('itemSuffix').fill("'"); + await page.getByTestId('itemPrefix').fill('\''); + await page.getByTestId('itemSuffix').fill('\''); const result = await page.getByTestId('area-content').innerText(); - expect(result.trim()).toEqual("'1', '2', '4', '3', '5'"); + expect(result.trim()).toEqual('\'1\', \'2\', \'4\', \'3\', \'5\''); }); }); diff --git a/src/tools/list-converter/list-converter.models.test.ts b/src/tools/list-converter/list-converter.models.test.ts index 944f0f3b..abbc43c2 100644 --- a/src/tools/list-converter/list-converter.models.test.ts +++ b/src/tools/list-converter/list-converter.models.test.ts @@ -1,4 +1,4 @@ -import { expect, describe, it } from 'vitest'; +import { describe, expect, it } from 'vitest'; import { convert } from './list-converter.models'; import type { ConvertOptions } from './list-converter.types'; diff --git a/src/tools/list-converter/list-converter.models.ts b/src/tools/list-converter/list-converter.models.ts index 1df9b38a..548baa28 100644 --- a/src/tools/list-converter/list-converter.models.ts +++ b/src/tools/list-converter/list-converter.models.ts @@ -1,27 +1,27 @@ import _ from 'lodash'; -import { byOrder } from '@/utils/array'; import type { ConvertOptions } from './list-converter.types'; +import { byOrder } from '@/utils/array'; export { convert }; -const whenever = - (condition: boolean, fn: (value: T) => R) => - (value: T) => +function whenever(condition: boolean, fn: (value: T) => R) { + return (value: T) => condition ? fn(value) : value; +} function convert(list: string, options: ConvertOptions): string { const lineBreak = options.keepLineBreaks ? '\n' : ''; return _.chain(list) - .thru(whenever(options.lowerCase, (text) => text.toLowerCase())) + .thru(whenever(options.lowerCase, text => text.toLowerCase())) .split('\n') .thru(whenever(options.removeDuplicates, _.uniq)) .thru(whenever(options.reverseList, _.reverse)) - .thru(whenever(!_.isNull(options.sortList), (parts) => parts.sort(byOrder({ order: options.sortList })))) + .thru(whenever(!_.isNull(options.sortList), parts => parts.sort(byOrder({ order: options.sortList })))) .map(whenever(options.trimItems, _.trim)) .without('') - .map((p) => options.itemPrefix + p + options.itemSuffix) + .map(p => options.itemPrefix + p + options.itemSuffix) .join(options.separator + lineBreak) - .thru((text) => [options.listPrefix, text, options.listSuffix].join(lineBreak)) + .thru(text => [options.listPrefix, text, options.listSuffix].join(lineBreak)) .value(); } diff --git a/src/tools/list-converter/list-converter.types.ts b/src/tools/list-converter/list-converter.types.ts index cfcaeade..3f9ea3f8 100644 --- a/src/tools/list-converter/list-converter.types.ts +++ b/src/tools/list-converter/list-converter.types.ts @@ -1,15 +1,15 @@ export type SortOrder = 'asc' | 'desc' | null; -export type ConvertOptions = { - lowerCase: boolean; - trimItems: boolean; - itemPrefix: string; - itemSuffix: string; - listPrefix: string; - listSuffix: string; - reverseList: boolean; - sortList: SortOrder; - removeDuplicates: boolean; - separator: string; - keepLineBreaks: boolean; -}; +export interface ConvertOptions { + lowerCase: boolean + trimItems: boolean + itemPrefix: string + itemSuffix: string + listPrefix: string + listSuffix: string + reverseList: boolean + sortList: SortOrder + removeDuplicates: boolean + separator: string + keepLineBreaks: boolean +} diff --git a/src/tools/list-converter/list-converter.vue b/src/tools/list-converter/list-converter.vue index 7258dc36..2e6d2b3a 100644 --- a/src/tools/list-converter/list-converter.vue +++ b/src/tools/list-converter/list-converter.vue @@ -1,3 +1,40 @@ + + - - - - diff --git a/src/tools/lorem-ipsum-generator/lorem-ipsum-generator.service.ts b/src/tools/lorem-ipsum-generator/lorem-ipsum-generator.service.ts index 4122a7bb..b21a302b 100644 --- a/src/tools/lorem-ipsum-generator/lorem-ipsum-generator.service.ts +++ b/src/tools/lorem-ipsum-generator/lorem-ipsum-generator.service.ts @@ -179,13 +179,13 @@ const vocabulary = [ ]; const firstSentence = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'; -const generateSentence = (length: number) => { +function generateSentence(length: number) { const sentence = Array.from({ length }) .map(() => randFromArray(vocabulary)) .join(' '); - return sentence.charAt(0).toUpperCase() + sentence.slice(1) + '.'; -}; + return `${sentence.charAt(0).toUpperCase() + sentence.slice(1)}.`; +} export function generateLoremIpsum({ paragraphCount = 1, @@ -194,11 +194,11 @@ export function generateLoremIpsum({ startWithLoremIpsum = true, asHTML = false, }: { - paragraphCount?: number; - sentencePerParagraph?: number; - wordCount?: number; - startWithLoremIpsum?: boolean; - asHTML?: boolean; + paragraphCount?: number + sentencePerParagraph?: number + wordCount?: number + startWithLoremIpsum?: boolean + asHTML?: boolean }) { const paragraphs = Array.from({ length: paragraphCount }).map(() => Array.from({ length: sentencePerParagraph }).map(() => generateSentence(wordCount)), @@ -209,8 +209,8 @@ export function generateLoremIpsum({ } if (asHTML) { - return `

${paragraphs.map((s) => s.join(' ')).join('

\n\n

')}

`; + return `

${paragraphs.map(s => s.join(' ')).join('

\n\n

')}

`; } - return paragraphs.map((s) => s.join(' ')).join('\n\n'); + return paragraphs.map(s => s.join(' ')).join('\n\n'); } diff --git a/src/tools/lorem-ipsum-generator/lorem-ipsum-generator.vue b/src/tools/lorem-ipsum-generator/lorem-ipsum-generator.vue index 9e3b1866..4423eb4e 100644 --- a/src/tools/lorem-ipsum-generator/lorem-ipsum-generator.vue +++ b/src/tools/lorem-ipsum-generator/lorem-ipsum-generator.vue @@ -1,3 +1,27 @@ + + - - diff --git a/src/tools/mac-address-lookup/mac-address-lookup.vue b/src/tools/mac-address-lookup/mac-address-lookup.vue index 095a0ee0..05382ebf 100644 --- a/src/tools/mac-address-lookup/mac-address-lookup.vue +++ b/src/tools/mac-address-lookup/mac-address-lookup.vue @@ -1,3 +1,16 @@ + + - - - - diff --git a/src/tools/math-evaluator/index.ts b/src/tools/math-evaluator/index.ts index ad783d25..3dc15f4f 100644 --- a/src/tools/math-evaluator/index.ts +++ b/src/tools/math-evaluator/index.ts @@ -4,7 +4,7 @@ import { defineTool } from '../tool'; export const tool = defineTool({ name: 'Math evaluator', path: '/math-evaluator', - description: `Evaluate math expression, like a calculator on steroid (you can use function like sqrt, cos, sin, abs, ...)`, + description: 'Evaluate math expression, like a calculator on steroid (you can use function like sqrt, cos, sin, abs, ...)', keywords: [ 'math', 'evaluator', diff --git a/src/tools/math-evaluator/math-evaluator.vue b/src/tools/math-evaluator/math-evaluator.vue index a8b359b4..0429e6eb 100644 --- a/src/tools/math-evaluator/math-evaluator.vue +++ b/src/tools/math-evaluator/math-evaluator.vue @@ -1,3 +1,13 @@ + + - - diff --git a/src/tools/meta-tag-generator/OGSchemaType.type.ts b/src/tools/meta-tag-generator/OGSchemaType.type.ts index 8d09013b..64387b8c 100644 --- a/src/tools/meta-tag-generator/OGSchemaType.type.ts +++ b/src/tools/meta-tag-generator/OGSchemaType.type.ts @@ -3,25 +3,25 @@ import type { SelectGroupOption, SelectOption } from 'naive-ui'; export type { OGSchemaType, OGSchemaTypeElementInput, OGSchemaTypeElementSelect, OGSchemaTypeElementInputMultiple }; interface OGSchemaTypeElementBase { - key: string; - label: string; - placeholder: string; + key: string + label: string + placeholder: string } interface OGSchemaTypeElementInput extends OGSchemaTypeElementBase { - type: 'input'; + type: 'input' } interface OGSchemaTypeElementInputMultiple extends OGSchemaTypeElementBase { - type: 'input-multiple'; + type: 'input-multiple' } interface OGSchemaTypeElementSelect extends OGSchemaTypeElementBase { - type: 'select'; - options: Array; + type: 'select' + options: Array } interface OGSchemaType { - name: string; - elements: (OGSchemaTypeElementSelect | OGSchemaTypeElementInput | OGSchemaTypeElementInputMultiple)[]; + name: string + elements: (OGSchemaTypeElementSelect | OGSchemaTypeElementInput | OGSchemaTypeElementInputMultiple)[] } diff --git a/src/tools/meta-tag-generator/meta-tag-generator.vue b/src/tools/meta-tag-generator/meta-tag-generator.vue index 73fad8b4..12e660e4 100644 --- a/src/tools/meta-tag-generator/meta-tag-generator.vue +++ b/src/tools/meta-tag-generator/meta-tag-generator.vue @@ -1,10 +1,65 @@ + + - - + diff --git a/src/tools/qr-code-generator/qr-code-generator.vue b/src/tools/qr-code-generator/qr-code-generator.vue index 12fcf113..f6ea7c8e 100644 --- a/src/tools/qr-code-generator/qr-code-generator.vue +++ b/src/tools/qr-code-generator/qr-code-generator.vue @@ -1,3 +1,29 @@ + + - - diff --git a/src/tools/qr-code-generator/useQRCode.ts b/src/tools/qr-code-generator/useQRCode.ts index 64ee90a1..5aa54500 100644 --- a/src/tools/qr-code-generator/useQRCode.ts +++ b/src/tools/qr-code-generator/useQRCode.ts @@ -1,6 +1,6 @@ -import { get, type MaybeRef } from '@vueuse/core'; +import { type MaybeRef, get } from '@vueuse/core'; import QRCode, { type QRCodeErrorCorrectionLevel, type QRCodeToDataURLOptions } from 'qrcode'; -import { ref, watch, isRef } from 'vue'; +import { isRef, ref, watch } from 'vue'; export function useQRCode({ text, @@ -8,17 +8,17 @@ export function useQRCode({ errorCorrectionLevel, options, }: { - text: MaybeRef; - color: { foreground: MaybeRef; background: MaybeRef }; - errorCorrectionLevel?: MaybeRef; - options?: QRCodeToDataURLOptions; + text: MaybeRef + color: { foreground: MaybeRef; background: MaybeRef } + errorCorrectionLevel?: MaybeRef + options?: QRCodeToDataURLOptions }) { const qrcode = ref(''); watch( [text, background, foreground, errorCorrectionLevel].filter(isRef), async () => { - if (get(text)) + if (get(text)) { qrcode.value = await QRCode.toDataURL(get(text).trim(), { color: { dark: get(foreground), @@ -28,6 +28,7 @@ export function useQRCode({ errorCorrectionLevel: get(errorCorrectionLevel) ?? 'M', ...options, }); + } }, { immediate: true }, ); diff --git a/src/tools/random-port-generator/random-port-generator.vue b/src/tools/random-port-generator/random-port-generator.vue index 8e3ecb63..e4ac609c 100644 --- a/src/tools/random-port-generator/random-port-generator.vue +++ b/src/tools/random-port-generator/random-port-generator.vue @@ -1,25 +1,29 @@ + + - - + diff --git a/src/tools/slugify-string/slugify-string.vue b/src/tools/slugify-string/slugify-string.vue index c140e21e..0f5ddc2f 100644 --- a/src/tools/slugify-string/slugify-string.vue +++ b/src/tools/slugify-string/slugify-string.vue @@ -1,24 +1,3 @@ - - - + diff --git a/src/tools/sql-prettify/sql-prettify.vue b/src/tools/sql-prettify/sql-prettify.vue index b8d4aa4f..2ee93da8 100644 --- a/src/tools/sql-prettify/sql-prettify.vue +++ b/src/tools/sql-prettify/sql-prettify.vue @@ -1,3 +1,23 @@ + + - - + diff --git a/src/tools/text-statistics/index.ts b/src/tools/text-statistics/index.ts index def0b6d6..0e54b71b 100644 --- a/src/tools/text-statistics/index.ts +++ b/src/tools/text-statistics/index.ts @@ -4,7 +4,7 @@ import { defineTool } from '../tool'; export const tool = defineTool({ name: 'Text statistics', path: '/text-statistics', - description: "Get information about a text, the amount of characters, the amount of words, it's size, ...", + description: 'Get information about a text, the amount of characters, the amount of words, it\'s size, ...', keywords: ['text', 'statistics', 'length', 'characters', 'count', 'size', 'bytes'], component: () => import('./text-statistics.vue'), icon: FileText, diff --git a/src/tools/text-statistics/text-statistics.service.test.ts b/src/tools/text-statistics/text-statistics.service.test.ts index 52606834..18ffc399 100644 --- a/src/tools/text-statistics/text-statistics.service.test.ts +++ b/src/tools/text-statistics/text-statistics.service.test.ts @@ -1,4 +1,4 @@ -import { expect, describe, it } from 'vitest'; +import { describe, expect, it } from 'vitest'; import { getStringSizeInBytes } from './text-statistics.service'; describe('text-statistics', () => { diff --git a/src/tools/text-statistics/text-statistics.vue b/src/tools/text-statistics/text-statistics.vue index a03915c7..ec543faf 100644 --- a/src/tools/text-statistics/text-statistics.vue +++ b/src/tools/text-statistics/text-statistics.vue @@ -1,3 +1,11 @@ + + - - diff --git a/src/tools/text-to-nato-alphabet/text-to-nato-alphabet.vue b/src/tools/text-to-nato-alphabet/text-to-nato-alphabet.vue index 9ded4ff6..75b23344 100644 --- a/src/tools/text-to-nato-alphabet/text-to-nato-alphabet.vue +++ b/src/tools/text-to-nato-alphabet/text-to-nato-alphabet.vue @@ -1,3 +1,13 @@ + + - - - - diff --git a/src/tools/token-generator/token-generator.e2e.spec.ts b/src/tools/token-generator/token-generator.e2e.spec.ts index 905a81cc..444c5384 100644 --- a/src/tools/token-generator/token-generator.e2e.spec.ts +++ b/src/tools/token-generator/token-generator.e2e.spec.ts @@ -1,4 +1,4 @@ -import { test, expect } from '@playwright/test'; +import { expect, test } from '@playwright/test'; test.describe('Tool - Token generator', () => { test.beforeEach(async ({ page }) => { diff --git a/src/tools/token-generator/token-generator.service.test.ts b/src/tools/token-generator/token-generator.service.test.ts index ed9dab31..604f5a89 100644 --- a/src/tools/token-generator/token-generator.service.test.ts +++ b/src/tools/token-generator/token-generator.service.test.ts @@ -1,4 +1,4 @@ -import { expect, describe, it } from 'vitest'; +import { describe, expect, it } from 'vitest'; import { createToken } from './token-generator.service'; describe('token-generator', () => { diff --git a/src/tools/token-generator/token-generator.service.ts b/src/tools/token-generator/token-generator.service.ts index f48a4deb..1885d249 100644 --- a/src/tools/token-generator/token-generator.service.ts +++ b/src/tools/token-generator/token-generator.service.ts @@ -8,16 +8,16 @@ export function createToken({ length = 64, alphabet, }: { - withUppercase?: boolean; - withLowercase?: boolean; - withNumbers?: boolean; - withSymbols?: boolean; - length?: number; - alphabet?: string; + withUppercase?: boolean + withLowercase?: boolean + withNumbers?: boolean + withSymbols?: boolean + length?: number + alphabet?: string }) { - const allAlphabet = - alphabet ?? - [ + const allAlphabet + = alphabet + ?? [ ...(withUppercase ? 'ABCDEFGHIJKLMOPQRSTUVWXYZ' : ''), ...(withLowercase ? 'abcdefghijklmopqrstuvwxyz' : ''), ...(withNumbers ? '0123456789' : ''), diff --git a/src/tools/token-generator/token-generator.tool.vue b/src/tools/token-generator/token-generator.tool.vue index bdfb4da2..81b7b583 100644 --- a/src/tools/token-generator/token-generator.tool.vue +++ b/src/tools/token-generator/token-generator.tool.vue @@ -1,3 +1,28 @@ + + - - diff --git a/src/tools/tools.store.ts b/src/tools/tools.store.ts index 2b0826c1..769b4d8b 100644 --- a/src/tools/tools.store.ts +++ b/src/tools/tools.store.ts @@ -1,8 +1,8 @@ -import { get, useStorage, type MaybeRef } from '@vueuse/core'; +import { type MaybeRef, get, useStorage } from '@vueuse/core'; import { defineStore } from 'pinia'; import type { Ref } from 'vue'; -import { toolsWithCategory } from './index'; import type { Tool, ToolWithCategory } from './tools.types'; +import { toolsWithCategory } from './index'; export const useToolStore = defineStore('tools', { state: () => ({ @@ -11,12 +11,12 @@ export const useToolStore = defineStore('tools', { getters: { favoriteTools(state) { return state.favoriteToolsName - .map((favoriteName) => toolsWithCategory.find(({ name }) => name === favoriteName)) + .map(favoriteName => toolsWithCategory.find(({ name }) => name === favoriteName)) .filter(Boolean) as ToolWithCategory[]; // cast because .filter(Boolean) does not remove undefined from type }, notFavoriteTools(state): ToolWithCategory[] { - return toolsWithCategory.filter((tool) => !state.favoriteToolsName.includes(tool.name)); + return toolsWithCategory.filter(tool => !state.favoriteToolsName.includes(tool.name)); }, tools(): ToolWithCategory[] { @@ -34,7 +34,7 @@ export const useToolStore = defineStore('tools', { }, removeToolFromFavorites({ tool }: { tool: MaybeRef }) { - this.favoriteToolsName = this.favoriteToolsName.filter((name) => get(tool).name !== name); + this.favoriteToolsName = this.favoriteToolsName.filter(name => get(tool).name !== name); }, isToolFavorite({ tool }: { tool: MaybeRef }) { diff --git a/src/tools/tools.types.ts b/src/tools/tools.types.ts index 48f60629..dcef8543 100644 --- a/src/tools/tools.types.ts +++ b/src/tools/tools.types.ts @@ -1,20 +1,20 @@ import type { Component } from 'vue'; -export type Tool = { - name: string; - path: string; - description: string; - keywords: string[]; - component: () => Promise; - icon: Component; - redirectFrom?: string[]; - isNew: boolean; - createdAt?: Date; -}; +export interface Tool { + name: string + path: string + description: string + keywords: string[] + component: () => Promise + icon: Component + redirectFrom?: string[] + isNew: boolean + createdAt?: Date +} -export type ToolCategory = { - name: string; - components: Tool[]; -}; +export interface ToolCategory { + name: string + components: Tool[] +} export type ToolWithCategory = Tool & { category: string }; diff --git a/src/tools/url-encoder/url-encoder.vue b/src/tools/url-encoder/url-encoder.vue index 4f89986a..5fdcade9 100644 --- a/src/tools/url-encoder/url-encoder.vue +++ b/src/tools/url-encoder/url-encoder.vue @@ -1,3 +1,41 @@ + + - - diff --git a/src/tools/url-parser/url-parser.vue b/src/tools/url-parser/url-parser.vue index 04ab9395..cadd07ef 100644 --- a/src/tools/url-parser/url-parser.vue +++ b/src/tools/url-parser/url-parser.vue @@ -1,49 +1,8 @@ - - + + diff --git a/src/tools/user-agent-parser/user-agent-result-cards.vue b/src/tools/user-agent-parser/user-agent-result-cards.vue index 20226c1d..b3901ac2 100644 --- a/src/tools/user-agent-parser/user-agent-result-cards.vue +++ b/src/tools/user-agent-parser/user-agent-result-cards.vue @@ -1,3 +1,15 @@ + + - - diff --git a/src/tools/uuid-generator/uuid-generator.vue b/src/tools/uuid-generator/uuid-generator.vue index de9cbf2f..f1265e15 100644 --- a/src/tools/uuid-generator/uuid-generator.vue +++ b/src/tools/uuid-generator/uuid-generator.vue @@ -1,3 +1,17 @@ + + - - diff --git a/src/tools/yaml-to-json-converter/yaml-to-json.e2e.spec.ts b/src/tools/yaml-to-json-converter/yaml-to-json.e2e.spec.ts index 10db4495..7b2a2d18 100644 --- a/src/tools/yaml-to-json-converter/yaml-to-json.e2e.spec.ts +++ b/src/tools/yaml-to-json-converter/yaml-to-json.e2e.spec.ts @@ -1,4 +1,4 @@ -import { test, expect } from '@playwright/test'; +import { expect, test } from '@playwright/test'; test.describe('Tool - Yaml to json', () => { test.beforeEach(async ({ page }) => { diff --git a/src/tools/yaml-to-json-converter/yaml-to-json.vue b/src/tools/yaml-to-json-converter/yaml-to-json.vue index c066bdd5..39c9297f 100644 --- a/src/tools/yaml-to-json-converter/yaml-to-json.vue +++ b/src/tools/yaml-to-json-converter/yaml-to-json.vue @@ -1,3 +1,24 @@ + + - - - - diff --git a/src/ui/c-alert/c-alert.demo.vue b/src/ui/c-alert/c-alert.demo.vue index 5d8d1f2d..546c7852 100644 --- a/src/ui/c-alert/c-alert.demo.vue +++ b/src/ui/c-alert/c-alert.demo.vue @@ -1,3 +1,7 @@ + + - - diff --git a/src/ui/c-alert/c-alert.theme.ts b/src/ui/c-alert/c-alert.theme.ts index b974c374..36d5d348 100644 --- a/src/ui/c-alert/c-alert.theme.ts +++ b/src/ui/c-alert/c-alert.theme.ts @@ -2,7 +2,6 @@ import { darken } from '../color/color.models'; import { defineThemes } from '../theme/theme.models'; import { appThemes } from '../theme/themes'; -// eslint-disable-next-line import WarningIcon from '~icons/mdi/alert-circle-outline'; export const { useTheme } = defineThemes({ diff --git a/src/ui/c-alert/c-alert.vue b/src/ui/c-alert/c-alert.vue index 1fedbb0b..607acb9f 100644 --- a/src/ui/c-alert/c-alert.vue +++ b/src/ui/c-alert/c-alert.vue @@ -1,3 +1,13 @@ + + - - diff --git a/src/ui/c-button/c-button.theme.ts b/src/ui/c-button/c-button.theme.ts index e2e1591f..926cd110 100644 --- a/src/ui/c-button/c-button.theme.ts +++ b/src/ui/c-button/c-button.theme.ts @@ -2,7 +2,7 @@ import { darken, lighten } from '../color/color.models'; import { defineThemes } from '../theme/theme.models'; import { appThemes } from '../theme/themes'; -const createState = ({ +function createState({ textColor, backgroundColor, hoverBackground, @@ -10,20 +10,22 @@ const createState = ({ pressedBackground, pressedTextColor = textColor, }: { - textColor: string; - backgroundColor: string; - hoverBackground: string; - hoveredTextColor?: string; - pressedBackground: string; - pressedTextColor?: string; -}) => ({ - textColor, - backgroundColor, - hover: { textColor: hoveredTextColor, backgroundColor: hoverBackground }, - pressed: { textColor: pressedTextColor, backgroundColor: pressedBackground }, -}); + textColor: string + backgroundColor: string + hoverBackground: string + hoveredTextColor?: string + pressedBackground: string + pressedTextColor?: string +}) { + return { + textColor, + backgroundColor, + hover: { textColor: hoveredTextColor, backgroundColor: hoverBackground }, + pressed: { textColor: pressedTextColor, backgroundColor: pressedBackground }, + }; +} -const createTheme = ({ style }: { style: 'light' | 'dark' }) => { +function createTheme({ style }: { style: 'light' | 'dark' }) { const theme = appThemes[style]; return { @@ -95,7 +97,7 @@ const createTheme = ({ style }: { style: 'light' | 'dark' }) => { }), }, }; -}; +} export const { useTheme } = defineThemes({ dark: createTheme({ style: 'dark' }), diff --git a/src/ui/c-button/c-button.vue b/src/ui/c-button/c-button.vue index 24b91b84..06a4786d 100644 --- a/src/ui/c-button/c-button.vue +++ b/src/ui/c-button/c-button.vue @@ -1,31 +1,18 @@ - - + + + diff --git a/src/ui/c-link/c-link.vue b/src/ui/c-link/c-link.vue index a7d1b831..828d56f1 100644 --- a/src/ui/c-link/c-link.vue +++ b/src/ui/c-link/c-link.vue @@ -1,16 +1,10 @@ - - + + diff --git a/src/utils/base64.ts b/src/utils/base64.ts index 44fda1ed..16912ee3 100644 --- a/src/utils/base64.ts +++ b/src/utils/base64.ts @@ -6,7 +6,7 @@ function textToBase64(str: string, { makeUrlSafe = false }: { makeUrlSafe?: bool } function base64ToText(str: string, { makeUrlSafe = false }: { makeUrlSafe?: boolean } = {}) { - if (!isValidBase64(str, { makeUrlSafe: makeUrlSafe })) { + if (!isValidBase64(str, { makeUrlSafe })) { throw new Error('Incorrect base64 string'); } @@ -17,7 +17,8 @@ function base64ToText(str: string, { makeUrlSafe = false }: { makeUrlSafe?: bool try { return window.atob(cleanStr); - } catch (_) { + } + catch (_) { throw new Error('Incorrect base64 string'); } } @@ -37,7 +38,8 @@ function isValidBase64(str: string, { makeUrlSafe = false }: { makeUrlSafe?: boo return removePotentialPadding(window.btoa(window.atob(cleanStr))) === cleanStr; } return window.btoa(window.atob(cleanStr)) === cleanStr; - } catch (err) { + } + catch (err) { return false; } } diff --git a/src/utils/boolean.test.ts b/src/utils/boolean.test.ts index 52bda9e2..07daa056 100644 --- a/src/utils/boolean.test.ts +++ b/src/utils/boolean.test.ts @@ -8,7 +8,7 @@ describe('boolean utils', () => { expect(isNotThrowing(_.noop)).to.eql(true); expect( isNotThrowing(() => { - throw new Error(); + throw new Error('message'); }), ).to.eql(false); }); diff --git a/src/utils/boolean.ts b/src/utils/boolean.ts index cf10b377..8dca5e9b 100644 --- a/src/utils/boolean.ts +++ b/src/utils/boolean.ts @@ -4,7 +4,8 @@ function isNotThrowing(cb: () => unknown): boolean { try { cb(); return true; - } catch (_) { + } + catch (_) { return false; } } diff --git a/src/utils/convert.ts b/src/utils/convert.ts index c8c325fe..c897543c 100644 --- a/src/utils/convert.ts +++ b/src/utils/convert.ts @@ -7,5 +7,5 @@ export function formatBytes(bytes: number, decimals = 2) { const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; const i = Math.floor(Math.log(bytes) / Math.log(k)); - return parseFloat((bytes / Math.pow(k, i)).toFixed(decimals)) + ' ' + sizes[i]; + return `${parseFloat((bytes / k ** i).toFixed(decimals))} ${sizes[i]}`; } diff --git a/src/utils/defaults.test.ts b/src/utils/defaults.test.ts index b322968c..50017980 100644 --- a/src/utils/defaults.test.ts +++ b/src/utils/defaults.test.ts @@ -9,7 +9,7 @@ describe('defaults util', () => { expect( withDefaultOnError(() => { - throw ''; + throw new Error('message'); }, 'default'), ).to.eql('default'); }); diff --git a/src/utils/defaults.ts b/src/utils/defaults.ts index 1e52b495..c988af58 100644 --- a/src/utils/defaults.ts +++ b/src/utils/defaults.ts @@ -3,7 +3,8 @@ export { withDefaultOnError, withDefaultOnErrorAsync }; function withDefaultOnError(cb: () => A, defaultValue: B): A | B { try { return cb(); - } catch (_) { + } + catch (_) { return defaultValue; } } @@ -11,7 +12,8 @@ function withDefaultOnError(cb: () => A, defaultValue: B): A | B { async function withDefaultOnErrorAsync(cb: () => A, defaultValue: B): Promise | B> { try { return await cb(); - } catch (_) { + } + catch (_) { return defaultValue; } } diff --git a/src/utils/error.test.ts b/src/utils/error.test.ts index 02728049..62bf272e 100644 --- a/src/utils/error.test.ts +++ b/src/utils/error.test.ts @@ -6,6 +6,7 @@ describe('error util', () => { it('get an error message if the callback throws, undefined instead', () => { expect( getErrorMessageIfThrows(() => { + // eslint-disable-next-line no-throw-literal throw 'message'; }), ).to.equal('message'); @@ -18,11 +19,11 @@ describe('error util', () => { expect( getErrorMessageIfThrows(() => { + // eslint-disable-next-line no-throw-literal throw { message: 'message' }; }), ).to.equal('message'); - // eslint-disable-next-line @typescript-eslint/no-empty-function expect(getErrorMessageIfThrows(() => {})).to.equal(undefined); }); }); diff --git a/src/utils/error.ts b/src/utils/error.ts index 681db912..297edd98 100644 --- a/src/utils/error.ts +++ b/src/utils/error.ts @@ -6,7 +6,8 @@ function getErrorMessageIfThrows(cb: () => unknown) { try { cb(); return undefined; - } catch (err) { + } + catch (err) { if (_.isString(err)) { return err; } diff --git a/src/utils/macAddress.ts b/src/utils/macAddress.ts index 89f12d32..4488b329 100644 --- a/src/utils/macAddress.ts +++ b/src/utils/macAddress.ts @@ -1,5 +1,5 @@ -import { useValidation } from '@/composable/validation'; import type { Ref } from 'vue'; +import { useValidation } from '@/composable/validation'; const macAddressValidationRules = [ { diff --git a/src/utils/random.ts b/src/utils/random.ts index 3a13be50..02df9479 100644 --- a/src/utils/random.ts +++ b/src/utils/random.ts @@ -5,14 +5,14 @@ const randFromArray = (array: unknown[]) => array[Math.floor(random() * array.le const randIntFromInterval = (min: number, max: number) => Math.floor(random() * (max - min) + min); // Durstenfeld shuffle -const shuffleArrayMutate = (array: T[]): T[] => { +function shuffleArrayMutate(array: T[]): T[] { for (let i = array.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [array[i], array[j]] = [array[j], array[i]]; } return array; -}; +} const shuffleArray = (array: T[]): T[] => shuffleArrayMutate([...array]);