This commit is contained in:
Corentin Thomasset 2023-04-15 02:10:28 +02:00
parent f7a1383da5
commit 0fd99deca9
No known key found for this signature in database
GPG key ID: DBD997E935996158
18 changed files with 602 additions and 325 deletions

View file

@ -136,7 +136,6 @@
"useDeviceOrientation": true,
"useDevicePixelRatio": true,
"useDevicesList": true,
"useDialog": true,
"useDisplayMedia": true,
"useDocumentVisibility": true,
"useDraggable": true,
@ -169,7 +168,6 @@
"useKeyModifier": true,
"useLastChanged": true,
"useLink": true,
"useLoadingBar": true,
"useLocalStorage": true,
"useMagicKeys": true,
"useManualRefHistory": true,
@ -177,7 +175,6 @@
"useMediaQuery": true,
"useMemoize": true,
"useMemory": true,
"useMessage": true,
"useMounted": true,
"useMouse": true,
"useMouseInElement": true,
@ -185,7 +182,6 @@
"useMutationObserver": true,
"useNavigatorLanguage": true,
"useNetwork": true,
"useNotification": true,
"useNow": true,
"useObjectUrl": true,
"useOffsetPagination": true,

2
.gitignore vendored
View file

@ -31,3 +31,5 @@ coverage
/test-results/
/playwright-report/
/playwright/.cache/
.vite-ssg-temp

8
auto-imports.d.ts vendored
View file

@ -133,7 +133,6 @@ declare global {
const useDeviceOrientation: typeof import('@vueuse/core')['useDeviceOrientation']
const useDevicePixelRatio: typeof import('@vueuse/core')['useDevicePixelRatio']
const useDevicesList: typeof import('@vueuse/core')['useDevicesList']
const useDialog: typeof import('naive-ui')['useDialog']
const useDisplayMedia: typeof import('@vueuse/core')['useDisplayMedia']
const useDocumentVisibility: typeof import('@vueuse/core')['useDocumentVisibility']
const useDraggable: typeof import('@vueuse/core')['useDraggable']
@ -166,7 +165,6 @@ declare global {
const useKeyModifier: typeof import('@vueuse/core')['useKeyModifier']
const useLastChanged: typeof import('@vueuse/core')['useLastChanged']
const useLink: typeof import('vue-router')['useLink']
const useLoadingBar: typeof import('naive-ui')['useLoadingBar']
const useLocalStorage: typeof import('@vueuse/core')['useLocalStorage']
const useMagicKeys: typeof import('@vueuse/core')['useMagicKeys']
const useManualRefHistory: typeof import('@vueuse/core')['useManualRefHistory']
@ -174,7 +172,6 @@ declare global {
const useMediaQuery: typeof import('@vueuse/core')['useMediaQuery']
const useMemoize: typeof import('@vueuse/core')['useMemoize']
const useMemory: typeof import('@vueuse/core')['useMemory']
const useMessage: typeof import('naive-ui')['useMessage']
const useMounted: typeof import('@vueuse/core')['useMounted']
const useMouse: typeof import('@vueuse/core')['useMouse']
const useMouseInElement: typeof import('@vueuse/core')['useMouseInElement']
@ -182,7 +179,6 @@ declare global {
const useMutationObserver: typeof import('@vueuse/core')['useMutationObserver']
const useNavigatorLanguage: typeof import('@vueuse/core')['useNavigatorLanguage']
const useNetwork: typeof import('@vueuse/core')['useNetwork']
const useNotification: typeof import('naive-ui')['useNotification']
const useNow: typeof import('@vueuse/core')['useNow']
const useObjectUrl: typeof import('@vueuse/core')['useObjectUrl']
const useOffsetPagination: typeof import('@vueuse/core')['useOffsetPagination']
@ -396,7 +392,6 @@ declare module 'vue' {
readonly useDeviceOrientation: UnwrapRef<typeof import('@vueuse/core')['useDeviceOrientation']>
readonly useDevicePixelRatio: UnwrapRef<typeof import('@vueuse/core')['useDevicePixelRatio']>
readonly useDevicesList: UnwrapRef<typeof import('@vueuse/core')['useDevicesList']>
readonly useDialog: UnwrapRef<typeof import('naive-ui')['useDialog']>
readonly useDisplayMedia: UnwrapRef<typeof import('@vueuse/core')['useDisplayMedia']>
readonly useDocumentVisibility: UnwrapRef<typeof import('@vueuse/core')['useDocumentVisibility']>
readonly useDraggable: UnwrapRef<typeof import('@vueuse/core')['useDraggable']>
@ -429,7 +424,6 @@ declare module 'vue' {
readonly useKeyModifier: UnwrapRef<typeof import('@vueuse/core')['useKeyModifier']>
readonly useLastChanged: UnwrapRef<typeof import('@vueuse/core')['useLastChanged']>
readonly useLink: UnwrapRef<typeof import('vue-router')['useLink']>
readonly useLoadingBar: UnwrapRef<typeof import('naive-ui')['useLoadingBar']>
readonly useLocalStorage: UnwrapRef<typeof import('@vueuse/core')['useLocalStorage']>
readonly useMagicKeys: UnwrapRef<typeof import('@vueuse/core')['useMagicKeys']>
readonly useManualRefHistory: UnwrapRef<typeof import('@vueuse/core')['useManualRefHistory']>
@ -437,7 +431,6 @@ declare module 'vue' {
readonly useMediaQuery: UnwrapRef<typeof import('@vueuse/core')['useMediaQuery']>
readonly useMemoize: UnwrapRef<typeof import('@vueuse/core')['useMemoize']>
readonly useMemory: UnwrapRef<typeof import('@vueuse/core')['useMemory']>
readonly useMessage: UnwrapRef<typeof import('naive-ui')['useMessage']>
readonly useMounted: UnwrapRef<typeof import('@vueuse/core')['useMounted']>
readonly useMouse: UnwrapRef<typeof import('@vueuse/core')['useMouse']>
readonly useMouseInElement: UnwrapRef<typeof import('@vueuse/core')['useMouseInElement']>
@ -445,7 +438,6 @@ declare module 'vue' {
readonly useMutationObserver: UnwrapRef<typeof import('@vueuse/core')['useMutationObserver']>
readonly useNavigatorLanguage: UnwrapRef<typeof import('@vueuse/core')['useNavigatorLanguage']>
readonly useNetwork: UnwrapRef<typeof import('@vueuse/core')['useNetwork']>
readonly useNotification: UnwrapRef<typeof import('naive-ui')['useNotification']>
readonly useNow: UnwrapRef<typeof import('@vueuse/core')['useNow']>
readonly useObjectUrl: UnwrapRef<typeof import('@vueuse/core')['useObjectUrl']>
readonly useOffsetPagination: UnwrapRef<typeof import('@vueuse/core')['useOffsetPagination']>

34
components.d.ts vendored
View file

@ -16,53 +16,19 @@ declare module '@vue/runtime-core' {
InputCopyable: typeof import('./src/components/InputCopyable.vue')['default']
MenuIconItem: typeof import('./src/components/MenuIconItem.vue')['default']
MenuLayout: typeof import('./src/components/MenuLayout.vue')['default']
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']
NColorPicker: typeof import('naive-ui')['NColorPicker']
NConfigProvider: typeof import('naive-ui')['NConfigProvider']
NDatePicker: typeof import('naive-ui')['NDatePicker']
NDivider: typeof import('naive-ui')['NDivider']
NDynamicInput: typeof import('naive-ui')['NDynamicInput']
NEllipsis: typeof import('naive-ui')['NEllipsis']
NForm: typeof import('naive-ui')['NForm']
NFormItem: typeof import('naive-ui')['NFormItem']
NGi: typeof import('naive-ui')['NGi']
NGrid: typeof import('naive-ui')['NGrid']
NH1: typeof import('naive-ui')['NH1']
NH2: typeof import('naive-ui')['NH2']
NH3: typeof import('naive-ui')['NH3']
NH4: typeof import('naive-ui')['NH4']
NIcon: typeof import('naive-ui')['NIcon']
NImage: typeof import('naive-ui')['NImage']
NInput: typeof import('naive-ui')['NInput']
NInputGroup: typeof import('naive-ui')['NInputGroup']
NInputGroupLabel: typeof import('naive-ui')['NInputGroupLabel']
NInputNumber: typeof import('naive-ui')['NInputNumber']
NLayout: typeof import('naive-ui')['NLayout']
NLayoutSider: typeof import('naive-ui')['NLayoutSider']
NMenu: typeof import('naive-ui')['NMenu']
NP: typeof import('naive-ui')['NP']
NPageHeader: typeof import('naive-ui')['NPageHeader']
NProgress: typeof import('naive-ui')['NProgress']
NResult: typeof import('naive-ui')['NResult']
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']
NTag: typeof import('naive-ui')['NTag']
NText: typeof import('naive-ui')['NText']
NTooltip: typeof import('naive-ui')['NTooltip']
NUpload: typeof import('naive-ui')['NUpload']
NUploadDragger: typeof import('naive-ui')['NUploadDragger']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
SearchBar: typeof import('./src/components/SearchBar.vue')['default']

View file

@ -22,7 +22,7 @@
},
"scripts": {
"dev": "vite",
"build": "vue-tsc --noEmit && vite build",
"build": "vue-tsc --noEmit && vite-ssg build",
"preview": "vite preview --port 5050",
"test": "npm run test:unit",
"test:unit": "vitest --environment jsdom",
@ -43,7 +43,6 @@
"@vicons/material": "^0.12.0",
"@vicons/tabler": "^0.12.0",
"@vueuse/core": "^8.9.4",
"@vueuse/head": "^0.7.13",
"@vueuse/router": "^9.13.0",
"bcryptjs": "^2.4.3",
"change-case": "^4.1.2",
@ -74,7 +73,6 @@
"ua-parser-js": "^1.0.35",
"uuid": "^8.3.2",
"vue": "^3.2.47",
"vue-router": "^4.1.6",
"yaml": "^2.2.1"
},
"devDependencies": {
@ -101,6 +99,7 @@
"@vue/eslint-config-typescript": "^10.0.0",
"@vue/test-utils": "^2.3.2",
"@vue/tsconfig": "^0.1.3",
"@vueuse/head": "^1.1.23",
"c8": "^7.13.0",
"consola": "^3.0.2",
"eslint": "^8.38.0",
@ -112,15 +111,17 @@
"less": "^4.1.3",
"prettier": "^2.8.7",
"start-server-and-test": "^1.15.4",
"typescript": "~4.5.5",
"typescript": "~4.9.5",
"unocss": "^0.50.8",
"unplugin-auto-import": "^0.15.3",
"unplugin-vue-components": "^0.24.1",
"vite": "^4.2.1",
"vite-plugin-md": "^0.21.5",
"vite-plugin-pwa": "^0.14.7",
"vite-ssg": "^0.22.2",
"vite-svg-loader": "^3.6.0",
"vitest": "^0.30.1",
"vue-router": "^4.1.6",
"vue-tsc": "^1.2.0",
"workbox-window": "^6.5.4",
"zx": "^7.2.1"

425
pnpm-lock.yaml generated
View file

@ -28,9 +28,6 @@ dependencies:
'@vueuse/core':
specifier: ^8.9.4
version: 8.9.4(vue@3.2.47)
'@vueuse/head':
specifier: ^0.7.13
version: 0.7.13(vue@3.2.47)
'@vueuse/router':
specifier: ^9.13.0
version: 9.13.0(vue-router@4.1.6)(vue@3.2.47)
@ -96,7 +93,7 @@ dependencies:
version: 12.0.52
pinia:
specifier: ^2.0.34
version: 2.0.34(typescript@4.5.5)(vue@3.2.47)
version: 2.0.34(typescript@4.9.5)(vue@3.2.47)
plausible-tracker:
specifier: ^0.3.8
version: 0.3.8
@ -121,9 +118,6 @@ dependencies:
vue:
specifier: ^3.2.47
version: 3.2.47
vue-router:
specifier: ^4.1.6
version: 4.1.6(vue@3.2.47)
yaml:
specifier: ^2.2.1
version: 2.2.1
@ -176,10 +170,10 @@ devDependencies:
version: 8.3.4
'@typescript-eslint/parser':
specifier: ^5.58.0
version: 5.58.0(eslint@8.38.0)(typescript@4.5.5)
version: 5.58.0(eslint@8.38.0)(typescript@4.9.5)
'@unocss/eslint-config':
specifier: ^0.50.8
version: 0.50.8(eslint@8.38.0)(typescript@4.5.5)
version: 0.50.8(eslint@8.38.0)(typescript@4.9.5)
'@vitejs/plugin-vue':
specifier: ^4.1.0
version: 4.1.0(vite@4.2.1)(vue@3.2.47)
@ -191,13 +185,16 @@ devDependencies:
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)
version: 10.0.0(eslint-plugin-vue@8.7.1)(eslint@8.38.0)(typescript@4.9.5)
'@vue/test-utils':
specifier: ^2.3.2
version: 2.3.2(vue@3.2.47)
'@vue/tsconfig':
specifier: ^0.1.3
version: 0.1.3(@types/node@16.18.23)
'@vueuse/head':
specifier: ^1.1.23
version: 1.1.23(vue@3.2.47)
c8:
specifier: ^7.13.0
version: 7.13.0
@ -232,8 +229,8 @@ devDependencies:
specifier: ^1.15.4
version: 1.15.4
typescript:
specifier: ~4.5.5
version: 4.5.5
specifier: ~4.9.5
version: 4.9.5
unocss:
specifier: ^0.50.8
version: 0.50.8(postcss@8.4.21)(rollup@2.79.1)(vite@4.2.1)
@ -252,15 +249,21 @@ devDependencies:
vite-plugin-pwa:
specifier: ^0.14.7
version: 0.14.7(vite@4.2.1)(workbox-build@6.5.4)(workbox-window@6.5.4)
vite-ssg:
specifier: ^0.22.2
version: 0.22.2(@vueuse/head@1.1.23)(vite@4.2.1)(vue-router@4.1.6)(vue@3.2.47)
vite-svg-loader:
specifier: ^3.6.0
version: 3.6.0
vitest:
specifier: ^0.30.1
version: 0.30.1(jsdom@19.0.0)(less@4.1.3)
vue-router:
specifier: ^4.1.6
version: 4.1.6(vue@3.2.47)
vue-tsc:
specifier: ^1.2.0
version: 1.2.0(typescript@4.5.5)
version: 1.2.0(typescript@4.9.5)
workbox-window:
specifier: ^6.5.4
version: 6.5.4
@ -2550,7 +2553,7 @@ 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):
/@typescript-eslint/eslint-plugin@5.58.0(@typescript-eslint/parser@5.58.0)(eslint@8.38.0)(typescript@4.9.5):
resolution: {integrity: sha512-vxHvLhH0qgBd3/tW6/VccptSfc8FxPQIkmNTVLWcCOVqSBvqpnKkBTYrhcGlXfSnd78azwe+PsjYFj0X34/njA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@ -2562,23 +2565,23 @@ 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/parser': 5.58.0(eslint@8.38.0)(typescript@4.9.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/type-utils': 5.58.0(eslint@8.38.0)(typescript@4.9.5)
'@typescript-eslint/utils': 5.58.0(eslint@8.38.0)(typescript@4.9.5)
debug: 4.3.4
eslint: 8.38.0
grapheme-splitter: 1.0.4
ignore: 5.2.4
natural-compare-lite: 1.4.0
semver: 7.4.0
tsutils: 3.21.0(typescript@4.5.5)
typescript: 4.5.5
tsutils: 3.21.0(typescript@4.9.5)
typescript: 4.9.5
transitivePeerDependencies:
- supports-color
dev: true
/@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.9.5):
resolution: {integrity: sha512-ixaM3gRtlfrKzP8N6lRhBbjTow1t6ztfBvQNGuRM8qH1bjFFXIJ35XY+FC0RRBKn3C6cT+7VW1y8tNm7DwPHDQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@ -2590,10 +2593,10 @@ packages:
dependencies:
'@typescript-eslint/scope-manager': 5.58.0
'@typescript-eslint/types': 5.58.0
'@typescript-eslint/typescript-estree': 5.58.0(typescript@4.5.5)
'@typescript-eslint/typescript-estree': 5.58.0(typescript@4.9.5)
debug: 4.3.4
eslint: 8.38.0
typescript: 4.5.5
typescript: 4.9.5
transitivePeerDependencies:
- supports-color
dev: true
@ -2606,7 +2609,7 @@ 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):
/@typescript-eslint/type-utils@5.58.0(eslint@8.38.0)(typescript@4.9.5):
resolution: {integrity: sha512-FF5vP/SKAFJ+LmR9PENql7fQVVgGDOS+dq3j+cKl9iW/9VuZC/8CFmzIP0DLKXfWKpRHawJiG70rVH+xZZbp8w==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@ -2616,12 +2619,12 @@ 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.58.0(typescript@4.9.5)
'@typescript-eslint/utils': 5.58.0(eslint@8.38.0)(typescript@4.9.5)
debug: 4.3.4
eslint: 8.38.0
tsutils: 3.21.0(typescript@4.5.5)
typescript: 4.5.5
tsutils: 3.21.0(typescript@4.9.5)
typescript: 4.9.5
transitivePeerDependencies:
- supports-color
dev: true
@ -2631,7 +2634,7 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/@typescript-eslint/typescript-estree@5.58.0(typescript@4.5.5):
/@typescript-eslint/typescript-estree@5.58.0(typescript@4.9.5):
resolution: {integrity: sha512-cRACvGTodA+UxnYM2uwA2KCwRL7VAzo45syNysqlMyNyjw0Z35Icc9ihPJZjIYuA5bXJYiJ2YGUB59BqlOZT1Q==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@ -2646,13 +2649,13 @@ packages:
globby: 11.1.0
is-glob: 4.0.3
semver: 7.4.0
tsutils: 3.21.0(typescript@4.5.5)
typescript: 4.5.5
tsutils: 3.21.0(typescript@4.9.5)
typescript: 4.9.5
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/utils@5.58.0(eslint@8.38.0)(typescript@4.5.5):
/@typescript-eslint/utils@5.58.0(eslint@8.38.0)(typescript@4.9.5):
resolution: {integrity: sha512-gAmLOTFXMXOC+zP1fsqm3VceKSBQJNzV385Ok3+yzlavNHZoedajjS4UyS21gabJYcobuigQPs/z71A9MdJFqQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@ -2663,7 +2666,7 @@ packages:
'@types/semver': 7.3.13
'@typescript-eslint/scope-manager': 5.58.0
'@typescript-eslint/types': 5.58.0
'@typescript-eslint/typescript-estree': 5.58.0(typescript@4.5.5)
'@typescript-eslint/typescript-estree': 5.58.0(typescript@4.9.5)
eslint: 8.38.0
eslint-scope: 5.1.1
semver: 7.4.0
@ -2680,6 +2683,45 @@ packages:
eslint-visitor-keys: 3.4.0
dev: true
/@unhead/dom@1.1.25:
resolution: {integrity: sha512-kJ5jhJFNQCyNENSw+mtmzgulA0kqUuXS3SRPl1umpofc8PH8tblSzXwqStxTj9r6E4wxJbEuygT/aHFJVioizw==}
dependencies:
'@unhead/schema': 1.1.25
'@unhead/shared': 1.1.25
dev: true
/@unhead/schema@1.1.25:
resolution: {integrity: sha512-ygmaxWgGTAq9CcB6zGY4+0HlGdQt/oMq+CM18tTnvOBY0Og/uPGt7roW8eH717GpTPibKRTpagSYzZYdL0tWeg==}
dependencies:
hookable: 5.5.3
zhead: 2.0.4
dev: true
/@unhead/shared@1.1.25:
resolution: {integrity: sha512-KptKbk4py1MFYHYwDJ/0kPOs+95dYMrWIT1fCV9lGcVAwu20wIHh+WX18s+iEWhc66xkGRxgC/xsl4wJJFPE+w==}
dependencies:
'@unhead/schema': 1.1.25
dev: true
/@unhead/ssr@1.1.25:
resolution: {integrity: sha512-2S3tiajy6n3D1WY2pVkRLr74WGaHD08w0+nFaQGNy0LszPlkWUuAmYYqDCXdh03ijEl+Tjwqjn+E9w1e3QakuQ==}
dependencies:
'@unhead/schema': 1.1.25
'@unhead/shared': 1.1.25
dev: true
/@unhead/vue@1.1.25(vue@3.2.47):
resolution: {integrity: sha512-ujincFHftg2N2i3G/gVkMyJ7CFzVyZ8SMb5cJCWZEnDBQGjgy3uvWT6EaM0d2jnaeXiYbB+iyY0O1o/H+XlpKQ==}
peerDependencies:
vue: '>=2.7 || >=3'
dependencies:
'@unhead/schema': 1.1.25
'@unhead/shared': 1.1.25
hookable: 5.5.3
unhead: 1.1.25
vue: 3.2.47
dev: true
/@unocss/astro@0.50.8(rollup@2.79.1)(vite@4.2.1):
resolution: {integrity: sha512-kphNlr0PWGzvkCgKx7RaZWQ45khieCCt9OffUnxbRRft+jodsVXIwzHn+bOhGtIKpEpZiOzxRzTYjfW/R6XnTw==}
dependencies:
@ -2725,22 +2767,22 @@ packages:
resolution: {integrity: sha512-rWmyeNE0Na8dJPDynLVar0X22qMHFNhO+/F2FZDpG4tubTavXJJo9uvhZr/D381kiWxt+XZ38y6EAD4UMdBqMA==}
dev: true
/@unocss/eslint-config@0.50.8(eslint@8.38.0)(typescript@4.5.5):
/@unocss/eslint-config@0.50.8(eslint@8.38.0)(typescript@4.9.5):
resolution: {integrity: sha512-dZyXT/LaIioHH1zpHXMo+LyvDNVJq2ZuqhB5x8O70qlhz9jqExiIkTRZyYu68r8SEgZFqjcEBsExTdeuO0Cs3g==}
engines: {node: '>=14'}
dependencies:
'@unocss/eslint-plugin': 0.50.8(eslint@8.38.0)(typescript@4.5.5)
'@unocss/eslint-plugin': 0.50.8(eslint@8.38.0)(typescript@4.9.5)
transitivePeerDependencies:
- eslint
- supports-color
- typescript
dev: true
/@unocss/eslint-plugin@0.50.8(eslint@8.38.0)(typescript@4.5.5):
/@unocss/eslint-plugin@0.50.8(eslint@8.38.0)(typescript@4.9.5):
resolution: {integrity: sha512-ks8qyPlGHAec96QA6WjTXkpUHs+sgwE5OA7To4MbKrpnKZXdkA7OvNKykkYi/pogV7GKlfQvbKUqELeTig53gQ==}
engines: {node: '>=14'}
dependencies:
'@typescript-eslint/utils': 5.58.0(eslint@8.38.0)(typescript@4.5.5)
'@typescript-eslint/utils': 5.58.0(eslint@8.38.0)(typescript@4.9.5)
'@unocss/config': 0.50.8
'@unocss/core': 0.50.8
magic-string: 0.30.0
@ -3056,7 +3098,6 @@ packages:
/@vue/devtools-api@6.5.0:
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==}
@ -3070,7 +3111,7 @@ packages:
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):
/@vue/eslint-config-typescript@10.0.0(eslint-plugin-vue@8.7.1)(eslint@8.38.0)(typescript@4.9.5):
resolution: {integrity: sha512-F94cL8ug3FaYXlCfU5/wiGjk1qeadmoBpRGAOBq+qre3Smdupa59dd6ZJrsfRODpsMPyTG7330juMDsUvpZ3Rw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@ -3081,11 +3122,11 @@ packages:
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)
'@typescript-eslint/eslint-plugin': 5.58.0(@typescript-eslint/parser@5.58.0)(eslint@8.38.0)(typescript@4.9.5)
'@typescript-eslint/parser': 5.58.0(eslint@8.38.0)(typescript@4.9.5)
eslint: 8.38.0
eslint-plugin-vue: 8.7.1(eslint@8.38.0)
typescript: 4.5.5
typescript: 4.9.5
vue-eslint-parser: 8.3.0(eslint@8.38.0)
transitivePeerDependencies:
- supports-color
@ -3170,16 +3211,17 @@ packages:
vue: 3.2.47
vue-demi: 0.14.0(vue@3.2.47)
/@vueuse/head@0.7.13(vue@3.2.47):
resolution: {integrity: sha512-VHSla/0uOAUii/mz+NWLFKMrMbz/lQoYxEcpS/ri7drepYjdB5QdbTnD2KdOX8EmQM/b07qpjKanr7erGrd3XA==}
/@vueuse/head@1.1.23(vue@3.2.47):
resolution: {integrity: sha512-bJiiQXrICvCI740jR2CLK+FhXyvMx2dIfyeF3FdOsYJn6OtexdBI2wchyuKNYmiAQ8cibAHxmDUytAFqIdIRJg==}
peerDependencies:
vue: '>=2.7 || >=3'
dependencies:
'@zhead/schema-vue': 0.7.4(vue@3.2.47)
'@unhead/dom': 1.1.25
'@unhead/schema': 1.1.25
'@unhead/ssr': 1.1.25
'@unhead/vue': 1.1.25(vue@3.2.47)
vue: 3.2.47
transitivePeerDependencies:
- '@vue/composition-api'
dev: false
dev: true
/@vueuse/metadata@8.9.4:
resolution: {integrity: sha512-IwSfzH80bnJMzqhaapqJl9JRIiyQU0zsRGEgnxN6jhq7992cPUJIRfV+JHRIZXjYqbwt07E1gTEp0R0zPJ1aqw==}
@ -3290,22 +3332,6 @@ packages:
- terser
dev: true
/@zhead/schema-vue@0.7.4(vue@3.2.47):
resolution: {integrity: sha512-Q7wPUly3ZWbPYQ5SEJBUuD6Mw3wiUfPMPquGfqsR2KF6sxQKRF8oaHnRLuu2uxpjuXjkzpBlZBPu1JgQX+Lf6Q==}
peerDependencies:
vue: '>=2.7 || >=3'
dependencies:
'@vueuse/shared': 9.13.0(vue@3.2.47)
'@zhead/schema': 0.7.4
vue: 3.2.47
transitivePeerDependencies:
- '@vue/composition-api'
dev: false
/@zhead/schema@0.7.4:
resolution: {integrity: sha512-18gfgmZL8gM64JdcT11d1rYLnCaY2mOtbDDSAXtCySanPGpkA1r+w01LCssEI/OfLdoZPS/kYCIW09d1PmUFfQ==}
dev: false
/abab@2.0.6:
resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==}
dev: true
@ -3321,6 +3347,13 @@ packages:
acorn-walk: 7.2.0
dev: true
/acorn-globals@7.0.1:
resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==}
dependencies:
acorn: 8.8.2
acorn-walk: 8.2.0
dev: true
/acorn-jsx@5.3.2(acorn@8.8.2):
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
@ -3692,6 +3725,13 @@ packages:
engines: {node: '>=12.20'}
dev: true
/camel-case@3.0.0:
resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==}
dependencies:
no-case: 2.3.2
upper-case: 1.1.3
dev: true
/camel-case@4.1.2:
resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==}
dependencies:
@ -3806,6 +3846,13 @@ packages:
fsevents: 2.3.2
dev: true
/clean-css@4.2.4:
resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==}
engines: {node: '>= 4.0'}
dependencies:
source-map: 0.6.1
dev: true
/cliui@6.0.0:
resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==}
dependencies:
@ -3822,6 +3869,15 @@ packages:
wrap-ansi: 7.0.0
dev: true
/cliui@8.0.1:
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
engines: {node: '>=12'}
dependencies:
string-width: 4.2.3
strip-ansi: 6.0.1
wrap-ansi: 7.0.0
dev: true
/color-convert@1.9.3:
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
dependencies:
@ -4055,6 +4111,13 @@ packages:
cssom: 0.3.8
dev: true
/cssstyle@3.0.0:
resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==}
engines: {node: '>=14'}
dependencies:
rrweb-cssom: 0.6.0
dev: true
/csstype@2.6.21:
resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==}
@ -4084,6 +4147,15 @@ packages:
whatwg-url: 11.0.0
dev: true
/data-urls@4.0.0:
resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==}
engines: {node: '>=14'}
dependencies:
abab: 2.0.6
whatwg-mimetype: 3.0.0
whatwg-url: 12.0.1
dev: true
/date-fns-tz@1.3.8(date-fns@2.29.3):
resolution: {integrity: sha512-qwNXUFtMHTTU6CFSFjoJ80W8Fzzp24LntbjFFBgL/faqds4e5mo9mftoRLgr3Vi1trISsg4awSpYVsOQCRnapQ==}
peerDependencies:
@ -4304,6 +4376,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
@ -4506,7 +4583,7 @@ 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.58.0(eslint@8.38.0)(typescript@4.9.5)
debug: 3.2.7
eslint: 8.38.0
eslint-import-resolver-node: 0.3.7
@ -4525,7 +4602,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.58.0(eslint@8.38.0)(typescript@4.9.5)
array-includes: 3.1.6
array.prototype.flat: 1.3.1
array.prototype.flatmap: 1.3.1
@ -5201,6 +5278,10 @@ packages:
engines: {node: '>=12.0.0'}
dev: false
/hookable@5.5.3:
resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==}
dev: true
/html-encoding-sniffer@3.0.0:
resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==}
engines: {node: '>=12'}
@ -5212,11 +5293,31 @@ packages:
resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
dev: true
/html-minifier@4.0.0:
resolution: {integrity: sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==}
engines: {node: '>=6'}
hasBin: true
dependencies:
camel-case: 3.0.0
clean-css: 4.2.4
commander: 2.20.3
he: 1.2.0
param-case: 2.1.1
relateurl: 0.2.7
uglify-js: 3.17.4
dev: true
/html-tags@3.3.1:
resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==}
engines: {node: '>=8'}
dev: true
/html5parser@2.0.2:
resolution: {integrity: sha512-L0y+IdTVxHsovmye8MBtFgBvWZnq1C9WnI/SmJszxoQjmUH1psX2uzDk21O5k5et6udxdGjwxkbmT9eVRoG05w==}
dependencies:
tslib: 2.5.0
dev: true
/http-proxy-agent@4.0.1:
resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==}
engines: {node: '>= 6'}
@ -5697,6 +5798,47 @@ packages:
- utf-8-validate
dev: true
/jsdom@21.1.1:
resolution: {integrity: sha512-Jjgdmw48RKcdAIQyUD1UdBh2ecH7VqwaXPN3ehoZN6MqgVbMn+lRm1aAT1AsdJRAJpwfa4IpwgzySn61h2qu3w==}
engines: {node: '>=14'}
peerDependencies:
canvas: ^2.5.0
peerDependenciesMeta:
canvas:
optional: true
dependencies:
abab: 2.0.6
acorn: 8.8.2
acorn-globals: 7.0.1
cssstyle: 3.0.0
data-urls: 4.0.0
decimal.js: 10.4.3
domexception: 4.0.0
escodegen: 2.0.0
form-data: 4.0.0
html-encoding-sniffer: 3.0.0
http-proxy-agent: 5.0.0
https-proxy-agent: 5.0.1
is-potential-custom-element-name: 1.0.1
nwsapi: 2.2.4
parse5: 7.1.2
rrweb-cssom: 0.6.0
saxes: 6.0.0
symbol-tree: 3.2.4
tough-cookie: 4.1.2
w3c-xmlserializer: 4.0.0
webidl-conversions: 7.0.0
whatwg-encoding: 2.0.0
whatwg-mimetype: 3.0.0
whatwg-url: 12.0.1
ws: 8.13.0
xml-name-validator: 4.0.0
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
dev: true
/jsesc@0.5.0:
resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==}
hasBin: true
@ -5881,6 +6023,10 @@ packages:
get-func-name: 2.0.0
dev: true
/lower-case@1.1.4:
resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==}
dev: true
/lower-case@2.0.2:
resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
dependencies:
@ -6172,6 +6318,12 @@ packages:
engines: {node: '>= 0.4.0'}
dev: false
/no-case@2.3.2:
resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==}
dependencies:
lower-case: 1.1.4
dev: true
/no-case@3.0.4:
resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
dependencies:
@ -6403,6 +6555,12 @@ packages:
engines: {node: '>=6'}
dev: false
/param-case@2.1.1:
resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==}
dependencies:
no-case: 2.3.2
dev: true
/param-case@3.0.4:
resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==}
dependencies:
@ -6426,6 +6584,12 @@ packages:
resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==}
dev: true
/parse5@7.1.2:
resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==}
dependencies:
entities: 4.5.0
dev: true
/pascal-case@3.1.2:
resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
dependencies:
@ -6494,7 +6658,7 @@ packages:
dev: true
optional: true
/pinia@2.0.34(typescript@4.5.5)(vue@3.2.47):
/pinia@2.0.34(typescript@4.9.5)(vue@3.2.47):
resolution: {integrity: sha512-cgOoGUiyqX0SSgX8XelK9+Ri4XA2/YyNtgjogwfzIx1g7iZTaZPxm7/bZYMCLU2qHRiHhxG7SuQO0eBacFNc2Q==}
peerDependencies:
'@vue/composition-api': ^1.4.0
@ -6507,7 +6671,7 @@ packages:
optional: true
dependencies:
'@vue/devtools-api': 6.5.0
typescript: 4.5.5
typescript: 4.9.5
vue: 3.2.47
vue-demi: 0.14.0(vue@3.2.47)
dev: false
@ -6867,6 +7031,11 @@ packages:
jsesc: 0.5.0
dev: true
/relateurl@0.2.7:
resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==}
engines: {node: '>= 0.10'}
dev: true
/require-directory@2.1.1:
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
engines: {node: '>=0.10.0'}
@ -6943,6 +7112,10 @@ packages:
resolution: {integrity: sha512-85aZYCxweiD5J8yTEbw+E6A27zSnLPNDL0WfPdw3YYodq7WjnTKo0q4dtyQ2gz23iPT8Q9CUyJtAaUNcTxRf5Q==}
dev: false
/rrweb-cssom@0.6.0:
resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==}
dev: true
/run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
dependencies:
@ -6982,6 +7155,13 @@ packages:
xmlchars: 2.2.0
dev: true
/saxes@6.0.0:
resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==}
engines: {node: '>=v12.22.7'}
dependencies:
xmlchars: 2.2.0
dev: true
/scule@1.0.0:
resolution: {integrity: sha512-4AsO/FrViE/iDNEPaAQlb77tf0csuq27EsVpy6ett584EcRTp6pTDLoGWVxCD77y5iU5FauOvhsI4o1APwPoSQ==}
dev: true
@ -7477,6 +7657,13 @@ packages:
punycode: 2.3.0
dev: true
/tr46@4.1.1:
resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==}
engines: {node: '>=14'}
dependencies:
punycode: 2.3.0
dev: true
/treemate@0.3.11:
resolution: {integrity: sha512-M8RGFoKtZ8dF+iwJfAJTOH/SM4KluKOKRJpjCMhI8bG3qB74zrFoArKZ62ll0Fr3mqkMJiQOmWYkdYgDeITYQg==}
dev: false
@ -7501,14 +7688,14 @@ packages:
/tslib@2.5.0:
resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==}
/tsutils@3.21.0(typescript@4.5.5):
/tsutils@3.21.0(typescript@4.9.5):
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
engines: {node: '>= 6'}
peerDependencies:
typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
dependencies:
tslib: 1.14.1
typescript: 4.5.5
typescript: 4.9.5
dev: true
/type-check@0.3.2:
@ -7558,8 +7745,8 @@ packages:
engines: {node: '>= 10'}
dev: false
/typescript@4.5.5:
resolution: {integrity: sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==}
/typescript@4.9.5:
resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
engines: {node: '>=4.2.0'}
hasBin: true
@ -7574,6 +7761,12 @@ packages:
resolution: {integrity: sha512-MvlCc4GHrmZdAllBc0iUDowff36Q9Ndw/UzqmEKyrfSzokTd9ZCy1i+IIk5hrYKkjoYVQyNbrw7/F8XJ2rEwTg==}
dev: true
/uglify-js@3.17.4:
resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==}
engines: {node: '>=0.8.0'}
hasBin: true
dev: true
/unbox-primitive@1.0.2:
resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
dependencies:
@ -7595,6 +7788,15 @@ packages:
resolution: {integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==}
dev: false
/unhead@1.1.25:
resolution: {integrity: sha512-KtTBgtQjxICoOjA4dyxJfj5fYoYJeYFUt/J8ulaTzbvTsXM9K+ztYjI65nf2CPYYXRCRz/iEt8trqcsGlsB5TQ==}
dependencies:
'@unhead/dom': 1.1.25
'@unhead/schema': 1.1.25
'@unhead/shared': 1.1.25
hookable: 5.5.3
dev: true
/unicode-canonical-property-names-ecmascript@2.0.0:
resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==}
engines: {node: '>=4'}
@ -7772,6 +7974,10 @@ packages:
tslib: 2.5.0
dev: false
/upper-case@1.1.3:
resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==}
dev: true
/upper-case@2.0.2:
resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==}
dependencies:
@ -7913,6 +8119,41 @@ packages:
- supports-color
dev: true
/vite-ssg@0.22.2(@vueuse/head@1.1.23)(vite@4.2.1)(vue-router@4.1.6)(vue@3.2.47):
resolution: {integrity: sha512-eSlp/WiT7dkpZ6TIkZuALUcOnCJlVfqj38OdpFVZHtHFcwCH9b95edu5Hgti5WnGrq33iVfGOK67zWpt9ClroA==}
engines: {node: '>=14.0.0'}
hasBin: true
peerDependencies:
'@vueuse/head': ^1.0.0
critters: ^0.0.16
vite: ^2.0.0 || ^3.0.0 || ^4.0.0
vue: ^3.2.10
vue-router: ^4.0.1
peerDependenciesMeta:
critters:
optional: true
vue-router:
optional: true
dependencies:
'@unhead/dom': 1.1.25
'@vueuse/head': 1.1.23(vue@3.2.47)
fs-extra: 11.1.1
html-minifier: 4.0.0
html5parser: 2.0.2
jsdom: 21.1.1
kolorist: 1.7.0
prettier: 2.8.7
vite: 4.2.1(@types/node@16.18.23)(less@4.1.3)
vue: 3.2.47
vue-router: 4.1.6(vue@3.2.47)
yargs: 17.7.1
transitivePeerDependencies:
- bufferutil
- canvas
- supports-color
- utf-8-validate
dev: true
/vite-svg-loader@3.6.0:
resolution: {integrity: sha512-bZJffcgCREW57kNkgMhuNqeDznWXyQwJ3wKrRhHLMMzwDnP5jr3vXW3cqsmquRR7VTP5mLdKj1/zzPPooGUuPw==}
dependencies:
@ -8117,7 +8358,6 @@ packages:
dependencies:
'@vue/devtools-api': 6.5.0
vue: 3.2.47
dev: false
/vue-template-compiler@2.7.14:
resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==}
@ -8126,7 +8366,7 @@ packages:
he: 1.2.0
dev: true
/vue-tsc@1.2.0(typescript@4.5.5):
/vue-tsc@1.2.0(typescript@4.9.5):
resolution: {integrity: sha512-rIlzqdrhyPYyLG9zxsVRa+JEseeS9s8F2BbVVVWRRsTZvJO2BbhLEb2HW3MY+DFma0378tnIqs+vfTzbcQtRFw==}
hasBin: true
peerDependencies:
@ -8134,7 +8374,7 @@ packages:
dependencies:
'@volar/vue-language-core': 1.2.0
'@volar/vue-typescript': 1.2.0
typescript: 4.5.5
typescript: 4.9.5
dev: true
/vue@3.2.47:
@ -8179,6 +8419,13 @@ packages:
xml-name-validator: 4.0.0
dev: true
/w3c-xmlserializer@4.0.0:
resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==}
engines: {node: '>=14'}
dependencies:
xml-name-validator: 4.0.0
dev: true
/wait-on@7.0.1(debug@4.3.4):
resolution: {integrity: sha512-9AnJE9qTjRQOlTZIldAaf/da2eW0eSRSgcqq85mXQja/DW3MriHxkpODDSUEg+Gri/rKEcXUZHe+cevvYItaog==}
engines: {node: '>=12.0.0'}
@ -8257,6 +8504,14 @@ packages:
webidl-conversions: 7.0.0
dev: true
/whatwg-url@12.0.1:
resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==}
engines: {node: '>=14'}
dependencies:
tr46: 4.1.1
webidl-conversions: 7.0.0
dev: true
/whatwg-url@5.0.0:
resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
dependencies:
@ -8562,6 +8817,11 @@ packages:
engines: {node: '>=10'}
dev: true
/yargs-parser@21.1.1:
resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
engines: {node: '>=12'}
dev: true
/yargs@15.4.1:
resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==}
engines: {node: '>=8'}
@ -8592,6 +8852,19 @@ packages:
yargs-parser: 20.2.9
dev: true
/yargs@17.7.1:
resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==}
engines: {node: '>=12'}
dependencies:
cliui: 8.0.1
escalade: 3.1.1
get-caller-file: 2.0.5
require-directory: 2.1.1
string-width: 4.2.3
y18n: 5.0.8
yargs-parser: 21.1.1
dev: true
/yocto-queue@0.1.0:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
@ -8602,6 +8875,10 @@ packages:
engines: {node: '>=12.20'}
dev: true
/zhead@2.0.4:
resolution: {integrity: sha512-V4R94t3ifk9AURym6OskbKcnowzgp5Z88tkoL/NF67vyryNxC62u6mx5F1Ux4oh4+YN7FFmKYEyWy6m5kfPH6g==}
dev: true
/zx@7.2.1:
resolution: {integrity: sha512-TgKwppaMLMNAXHhlhbBh7rMoOSx3/9qqnkv8frmhVlSomEuWkDijh/BCmYntkoS7ZQyemApAUyEi24jIrrS+hA==}
engines: {node: '>= 16.0.0'}

View file

@ -1,30 +1,30 @@
<script setup lang="ts">
import { computed } from 'vue';
import { useRoute, RouterView } from 'vue-router';
import { darkTheme, NGlobalStyle, NMessageProvider, NNotificationProvider } from 'naive-ui';
import { darkThemeOverrides, lightThemeOverrides } from './themes';
import { layouts } from './layouts';
import { useStyleStore } from './stores/style.store';
// import { computed } from 'vue';
// import { darkTheme, NGlobalStyle, NMessageProvider, NNotificationProvider } from 'naive-ui';
// import { useRoute, RouterView } from 'vue-router';
// import { darkThemeOverrides, lightThemeOverrides } from './themes';
// import { layouts } from './layouts';
// import { useStyleStore } from './stores/style.store';
const route = useRoute();
const layout = computed(() => route?.meta?.layout ?? layouts.base);
const styleStore = useStyleStore();
// const route = useRoute();
// const layout = computed(() => route?.meta?.layout ?? layouts.base);
// const styleStore = useStyleStore();
const theme = computed(() => (styleStore.isDarkTheme ? darkTheme : null));
const themeOverrides = computed(() => (styleStore.isDarkTheme ? darkThemeOverrides : lightThemeOverrides));
// const theme = computed(() => (styleStore.isDarkTheme ? darkTheme : null));
// const themeOverrides = computed(() => (styleStore.isDarkTheme ? darkThemeOverrides : lightThemeOverrides));
</script>
<template>
<n-config-provider :theme="theme" :theme-overrides="themeOverrides">
<!-- <n-config-provider :theme="theme" :theme-overrides="themeOverrides">
<n-global-style />
<n-message-provider placement="bottom">
<n-notification-provider placement="bottom-right">
<component :is="layout">
<router-view />
</component>
<component :is="layout"> -->
<router-view />
<!-- </component>
</n-notification-provider>
</n-message-provider>
</n-config-provider>
</n-config-provider> -->
</template>
<style>

View file

@ -14,7 +14,6 @@
<n-menu
class="menu"
:value="(route.name as string)"
:collapsed-width="64"
:collapsed-icon-size="22"
:options="tools"
@ -32,7 +31,7 @@ import { ChevronRight } from '@vicons/tabler';
import { useStorage } from '@vueuse/core';
import { useThemeVars } from 'naive-ui';
import { toRefs, computed, h } from 'vue';
import { RouterLink, useRoute } from 'vue-router';
import { RouterLink } from 'vue-router';
import MenuIconItem from './MenuIconItem.vue';
const props = withDefaults(defineProps<{ toolsByCategory?: ToolCategory[] }>(), { toolsByCategory: () => [] });

View file

@ -6,12 +6,12 @@
<n-h3 class="title">
<n-ellipsis>{{ title }}</n-ellipsis>
</n-h3>
<!--
<div class="description">
<n-ellipsis :line-clamp="2" :tooltip="false">
<slot />
</n-ellipsis>
</div>
</div> -->
</n-card>
</template>

View file

@ -7,7 +7,6 @@ import { SearchRound } from '@vicons/material';
import { useMagicKeys, whenever } from '@vueuse/core';
import type { NInput } from 'naive-ui';
import { computed, h, ref } from 'vue';
import { useRouter } from 'vue-router';
import SearchBarItem from './SearchBarItem.vue';
const toolToOption = (tool: Tool) => ({ label: tool.name, value: tool.path, tool });

View file

@ -1,7 +1,6 @@
<script lang="ts" setup>
import { NIcon, useThemeVars } from 'naive-ui';
import { computed } from 'vue';
import { RouterLink } from 'vue-router';
import { Heart, Menu2, Home2 } from '@vicons/tabler';
import { toolsByCategory } from '@/tools';
import { useStyleStore } from '@/stores/style.store';

View file

@ -1,5 +1,4 @@
<script lang="ts" setup>
import { useRoute } from 'vue-router';
import { useHead } from '@vueuse/head';
import type { HeadObject } from '@vueuse/head';
import { computed } from 'vue';

View file

@ -1,25 +1,30 @@
import { createApp } from 'vue';
import { createPinia } from 'pinia';
import { createHead } from '@vueuse/head';
// eslint-disable-next-line import/no-unresolved
import { registerSW } from 'virtual:pwa-register';
import { ViteSSG } from 'vite-ssg';
import { plausible } from './plugins/plausible.plugin';
import 'virtual:uno.css';
registerSW();
import { naive } from './plugins/naive.plugin';
// import { naive } from './plugins/naive.plugin';
import App from './App.vue';
import router from './router';
import { routes } from './router';
import { config } from './config';
// import { useToolStore } from './tools/tools.store';
const app = createApp(App);
export const createApp = ViteSSG(
// the root component
App,
// vue-router options
{ routes, base: config.app.baseUrl },
// function to have custom setups
async ({ app, router, routes, isClient, initialState }) => {
// install plugins etc.
const pinia = createPinia();
app.use(pinia);
app.use(createPinia());
app.use(createHead());
app.use(router);
app.use(naive);
app.use(plausible);
app.mount('#app');
app.use(plausible);
// import { registerSW } from 'virtual:pwa-register';
// registerSW();
},
);

View file

@ -12,6 +12,38 @@ useHead({ title: 'IT Tools - Handy online tools for developers' });
</script>
<template>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Earum voluptatibus, voluptatum excepturi quidem ipsam
dignissimos sit eius illo corrupti, provident aliquam quaerat nostrum obcaecati velit ratione neque possimus beatae
quod?
<n-grid v-if="config.showBanner" x-gap="12" y-gap="12" cols="1 400:2 800:3 1200:4 2000:8">
<n-gi>
aa
<colored-card title="You like it-tools?" :icon="Heart">
Give us a star on
<!-- <a
href="https://github.com/CorentinTh/it-tools"
rel="noopener"
target="_blank"
aria-label="IT-Tools' GitHub repository"
>GitHub</a
>
or follow us on
<a
href="https://twitter.com/ittoolsdottech"
rel="noopener"
target="_blank"
aria-label="IT-Tools' Twitter account"
>Twitter</a
>! Thank you
<n-icon :component="Heart" /> -->
</colored-card>
</n-gi>
</n-grid>
<n-button>a</n-button>
<!--
<div class="home-page">
<div class="grid-wrapper">
<n-grid v-if="config.showBanner" x-gap="12" y-gap="12" cols="1 400:2 800:3 1200:4 2000:8">
@ -67,7 +99,7 @@ useHead({ title: 'IT Tools - Handy online tools for developers' });
</n-gi>
</n-grid>
</div>
</div>
</div> -->
</template>
<style scoped lang="less">

View file

@ -21,7 +21,7 @@ function createPlausibleInstance({
trackLocalhost: boolean;
};
}) {
if (config.isTrackerEnabled) {
if (config.isTrackerEnabled && !import.meta.env.SSR) {
return Plausible(config);
}

View file

@ -1,39 +1,38 @@
import { createRouter, createWebHistory } from 'vue-router';
import { layouts } from './layouts/index';
import type { RouteRecordRaw } from 'vue-router';
import HomePage from './pages/Home.page.vue';
// import { layouts } from './layouts/index';
import NotFound from './pages/404.page.vue';
import { tools } from './tools';
import { config } from './config';
// import { tools } from './tools';
const toolsRoutes = tools.map(({ path, name, component, ...config }) => ({
path,
name,
component,
meta: { isTool: true, layout: layouts.toolLayout, name, ...config },
}));
const toolsRedirectRoutes = tools
.filter(({ redirectFrom }) => redirectFrom && redirectFrom.length > 0)
.flatMap(
({ path, redirectFrom }) => redirectFrom?.map((redirectSource) => ({ path: redirectSource, redirect: path })) ?? [],
);
// const toolsRoutes = tools.map(({ path, name, component, ...config }) => ({
// path,
// name,
// component,
// meta: { isTool: true, layout: layouts.toolLayout, name, ...config },
// }));
// const toolsRedirectRoutes = tools
// .filter(({ redirectFrom }) => redirectFrom && redirectFrom.length > 0)
// .flatMap(
// ({ path, redirectFrom }) => redirectFrom?.map((redirectSource) => ({ path: redirectSource, redirect: path })) ?? [],
// );
//
// console.log({ toolsRoutes, toolsRedirectRoutes });
const router = createRouter({
history: createWebHistory(config.app.baseUrl),
routes: [
{
path: '/',
name: 'home',
component: HomePage,
},
{
path: '/about',
name: 'about',
component: () => import('./pages/About.vue'),
},
...toolsRoutes,
...toolsRedirectRoutes,
{ path: '/:pathMatch(.*)*', name: 'NotFound', component: NotFound },
],
});
const routes: RouteRecordRaw[] = [
// ...toolsRoutes,
// ...toolsRedirectRoutes,
{
path: '/',
name: 'home',
component: HomePage,
},
// {
// path: '/about',
// name: 'about',
// component: () => import('./pages/About.vue'),
// },
export default router;
// { path: '/:pathMatch(.*)*', name: 'NotFound', component: NotFound },
];
export { routes };

View file

@ -1,130 +1,132 @@
import { tool as base64FileConverter } from './base64-file-converter';
import { tool as base64StringConverter } from './base64-string-converter';
import { tool as basicAuthGenerator } from './basic-auth-generator';
import { tool as httpStatusCodes } from './http-status-codes';
import { tool as yamlToJson } from './yaml-to-json-converter';
import { tool as jsonToYaml } from './json-to-yaml-converter';
import { tool as ipv6UlaGenerator } from './ipv6-ula-generator';
import { tool as ipv4AddressConverter } from './ipv4-address-converter';
import { tool as benchmarkBuilder } from './benchmark-builder';
import { tool as userAgentParser } from './user-agent-parser';
import { tool as ipv4SubnetCalculator } from './ipv4-subnet-calculator';
import { tool as dockerRunToDockerComposeConverter } from './docker-run-to-docker-compose-converter';
import { tool as htmlWysiwygEditor } from './html-wysiwyg-editor';
import { tool as rsaKeyPairGenerator } from './rsa-key-pair-generator';
import { tool as textToNatoAlphabet } from './text-to-nato-alphabet';
import { tool as slugifyString } from './slugify-string';
import { tool as keycodeInfo } from './keycode-info';
import { tool as jsonMinify } from './json-minify';
import { tool as bcrypt } from './bcrypt';
import { tool as bip39 } from './bip39-generator';
import { tool as caseConverter } from './case-converter';
import { tool as chmodCalculator } from './chmod-calculator';
import { tool as chronometer } from './chronometer';
import { tool as colorConverter } from './color-converter';
import { tool as crontabGenerator } from './crontab-generator';
import { tool as dateTimeConverter } from './date-time-converter';
import { tool as deviceInformation } from './device-information';
import { tool as cypher } from './encryption';
import { tool as etaCalculator } from './eta-calculator';
import { tool as gitMemo } from './git-memo';
import { tool as hashText } from './hash-text';
import { tool as hmacGenerator } from './hmac-generator';
import { tool as htmlEntities } from './html-entities';
import { tool as baseConverter } from './integer-base-converter';
import { tool as jsonViewer } from './json-viewer';
import { tool as jwtParser } from './jwt-parser';
import { tool as loremIpsumGenerator } from './lorem-ipsum-generator';
import { tool as mathEvaluator } from './math-evaluator';
import { tool as metaTagGenerator } from './meta-tag-generator';
import { tool as mimeTypes } from './mime-types';
import { tool as otpCodeGeneratorAndValidator } from './otp-code-generator-and-validator';
import { tool as qrCodeGenerator } from './qr-code-generator';
import { tool as randomPortGenerator } from './random-port-generator';
import { tool as romanNumeralConverter } from './roman-numeral-converter';
import { tool as sqlPrettify } from './sql-prettify';
import { tool as svgPlaceholderGenerator } from './svg-placeholder-generator';
import { tool as temperatureConverter } from './temperature-converter';
import { tool as textStatistics } from './text-statistics';
import { tool as tokenGenerator } from './token-generator';
// import { tool as base64FileConverter } from './base64-file-converter';
// import { tool as base64StringConverter } from './base64-string-converter';
// import { tool as basicAuthGenerator } from './basic-auth-generator';
// import { tool as httpStatusCodes } from './http-status-codes';
// import { tool as yamlToJson } from './yaml-to-json-converter';
// import { tool as jsonToYaml } from './json-to-yaml-converter';
// import { tool as ipv6UlaGenerator } from './ipv6-ula-generator';
// import { tool as ipv4AddressConverter } from './ipv4-address-converter';
// import { tool as benchmarkBuilder } from './benchmark-builder';
// import { tool as userAgentParser } from './user-agent-parser';
// import { tool as ipv4SubnetCalculator } from './ipv4-subnet-calculator';
// import { tool as dockerRunToDockerComposeConverter } from './docker-run-to-docker-compose-converter';
// import { tool as htmlWysiwygEditor } from './html-wysiwyg-editor';
// import { tool as rsaKeyPairGenerator } from './rsa-key-pair-generator';
// import { tool as textToNatoAlphabet } from './text-to-nato-alphabet';
// import { tool as slugifyString } from './slugify-string';
// import { tool as keycodeInfo } from './keycode-info';
// import { tool as jsonMinify } from './json-minify';
// import { tool as bcrypt } from './bcrypt';
// import { tool as bip39 } from './bip39-generator';
// import { tool as caseConverter } from './case-converter';
// import { tool as chmodCalculator } from './chmod-calculator';
// import { tool as chronometer } from './chronometer';
// import { tool as colorConverter } from './color-converter';
// import { tool as crontabGenerator } from './crontab-generator';
// import { tool as dateTimeConverter } from './date-time-converter';
// import { tool as deviceInformation } from './device-information';
// import { tool as cypher } from './encryption';
// import { tool as etaCalculator } from './eta-calculator';
// import { tool as gitMemo } from './git-memo';
// import { tool as hashText } from './hash-text';
// import { tool as hmacGenerator } from './hmac-generator';
// import { tool as htmlEntities } from './html-entities';
// import { tool as baseConverter } from './integer-base-converter';
// import { tool as jsonViewer } from './json-viewer';
// import { tool as jwtParser } from './jwt-parser';
// import { tool as loremIpsumGenerator } from './lorem-ipsum-generator';
// import { tool as mathEvaluator } from './math-evaluator';
// import { tool as metaTagGenerator } from './meta-tag-generator';
// import { tool as mimeTypes } from './mime-types';
// import { tool as otpCodeGeneratorAndValidator } from './otp-code-generator-and-validator';
// import { tool as qrCodeGenerator } from './qr-code-generator';
// import { tool as randomPortGenerator } from './random-port-generator';
// import { tool as romanNumeralConverter } from './roman-numeral-converter';
// import { tool as sqlPrettify } from './sql-prettify';
// import { tool as svgPlaceholderGenerator } from './svg-placeholder-generator';
// import { tool as temperatureConverter } from './temperature-converter';
// import { tool as textStatistics } from './text-statistics';
// import { tool as tokenGenerator } from './token-generator';
import type { ToolCategory } from './tools.types';
import { tool as urlEncoder } from './url-encoder';
import { tool as urlParser } from './url-parser';
import { tool as uuidGenerator } from './uuid-generator';
import { tool as macAddressLookup } from './mac-address-lookup';
// import { tool as urlEncoder } from './url-encoder';
// import { tool as urlParser } from './url-parser';
// import { tool as uuidGenerator } from './uuid-generator';
// import { tool as macAddressLookup } from './mac-address-lookup';
export const toolsByCategory: ToolCategory[] = [
{
name: 'Crypto',
components: [tokenGenerator, hashText, bcrypt, uuidGenerator, cypher, bip39, hmacGenerator, rsaKeyPairGenerator],
},
{
name: 'Converter',
components: [
dateTimeConverter,
baseConverter,
romanNumeralConverter,
base64StringConverter,
base64FileConverter,
colorConverter,
caseConverter,
textToNatoAlphabet,
yamlToJson,
jsonToYaml,
/* tokenGenerator, hashText, bcrypt, uuidGenerator, cypher, bip39, hmacGenerator, rsaKeyPairGenerator*/
],
},
{
name: 'Web',
components: [
urlEncoder,
htmlEntities,
urlParser,
deviceInformation,
basicAuthGenerator,
metaTagGenerator,
otpCodeGeneratorAndValidator,
mimeTypes,
jwtParser,
keycodeInfo,
slugifyString,
htmlWysiwygEditor,
userAgentParser,
httpStatusCodes,
],
},
{
name: 'Images',
components: [qrCodeGenerator, svgPlaceholderGenerator],
},
{
name: 'Development',
components: [
gitMemo,
randomPortGenerator,
crontabGenerator,
jsonViewer,
jsonMinify,
sqlPrettify,
chmodCalculator,
dockerRunToDockerComposeConverter,
],
},
{
name: 'Network',
components: [ipv4SubnetCalculator, ipv4AddressConverter, macAddressLookup, ipv6UlaGenerator],
},
{
name: 'Math',
components: [mathEvaluator, etaCalculator],
},
{
name: 'Measurement',
components: [chronometer, temperatureConverter, benchmarkBuilder],
},
{
name: 'Text',
components: [loremIpsumGenerator, textStatistics],
},
// {
// name: 'Converter',
// components: [
// dateTimeConverter,
// baseConverter,
// romanNumeralConverter,
// base64StringConverter,
// base64FileConverter,
// colorConverter,
// caseConverter,
// textToNatoAlphabet,
// yamlToJson,
// jsonToYaml,
// ],
// },
// {
// name: 'Web',
// components: [
// urlEncoder,
// htmlEntities,
// urlParser,
// deviceInformation,
// basicAuthGenerator,
// metaTagGenerator,
// otpCodeGeneratorAndValidator,
// mimeTypes,
// jwtParser,
// keycodeInfo,
// slugifyString,
// htmlWysiwygEditor,
// userAgentParser,
// httpStatusCodes,
// ],
// },
// {
// name: 'Images',
// components: [qrCodeGenerator, svgPlaceholderGenerator],
// },
// {
// name: 'Development',
// components: [
// gitMemo,
// randomPortGenerator,
// crontabGenerator,
// jsonViewer,
// jsonMinify,
// sqlPrettify,
// chmodCalculator,
// dockerRunToDockerComposeConverter,
// ],
// },
// {
// name: 'Network',
// components: [ipv4SubnetCalculator, ipv4AddressConverter, macAddressLookup, ipv6UlaGenerator],
// },
// {
// name: 'Math',
// components: [mathEvaluator, etaCalculator],
// },
// {
// name: 'Measurement',
// components: [chronometer, temperatureConverter, benchmarkBuilder],
// },
// {
// name: 'Text',
// components: [loremIpsumGenerator, textStatistics],
// },
];
export const tools = toolsByCategory.flatMap(({ components }) => components);

View file

@ -15,15 +15,9 @@ import Unocss from 'unocss/vite';
export default defineConfig({
plugins: [
AutoImport({
imports: [
'vue',
'vue-router',
'@vueuse/core',
{
'naive-ui': ['useDialog', 'useMessage', 'useNotification', 'useLoadingBar'],
},
],
imports: ['vue', 'vue-router', '@vueuse/core'],
vueTemplate: true,
dts: true,
eslintrc: {
enabled: true,
},
@ -77,6 +71,21 @@ export default defineConfig({
}),
Unocss(),
],
ssgOptions: {
script: 'async',
format: 'cjs',
formatting: 'prettify',
},
ssr: {
noExternal: ['lodash', 'date-fns'],
// noExternal: Object.keys(pkg.dependencies || {}),
},
optimizeDeps: {
include: ['naive-ui'],
},
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url)),