diff --git a/components/ContentSection.vue b/components/ContentSection.vue index 0dc4d036..6ed5d76c 100644 --- a/components/ContentSection.vue +++ b/components/ContentSection.vue @@ -1,11 +1,10 @@ + + + + + + + {{ album.title }} + {{ album?.children?.length }} tracks + + + + + {{ track.id }} + + + + + diff --git a/components/playlist/PlaylistCarousel.vue b/components/playlist/PlaylistCarousel.vue index a20f4fa1..bb608b5a 100644 --- a/components/playlist/PlaylistCarousel.vue +++ b/components/playlist/PlaylistCarousel.vue @@ -11,7 +11,7 @@ defineProps<{ diff --git a/components/sidebar/SidebarElement.vue b/components/sidebar/SidebarElement.vue index 03396309..360dcd95 100644 --- a/components/sidebar/SidebarElement.vue +++ b/components/sidebar/SidebarElement.vue @@ -1,8 +1,13 @@ diff --git a/components/track/TrackList.vue b/components/track/TrackList.vue index 2ef2b459..c38e396c 100644 --- a/components/track/TrackList.vue +++ b/components/track/TrackList.vue @@ -24,8 +24,8 @@ const toggleDropdownForTrack = (trackReference: string) => { } }; -const dropdownMenuItemsForTrack = (track: TrackModel): DropdownMenuItem[] => { - const items = []; +const dropdownMenuItemsForTrack = (track: TrackModel) => { + const items: DropdownMenuItem[] = []; items.push({ icon: "icon.play", @@ -37,7 +37,7 @@ const dropdownMenuItemsForTrack = (track: TrackModel): DropdownMenuItem[] => { items.push({ icon: "icon.category.album", text: "Go to album", - link: `/album/${track.meta.parent.id}`, + link: { name: "album-id", params: { id: track.meta.parent.id } }, }); } @@ -47,21 +47,25 @@ const dropdownMenuItemsForTrack = (track: TrackModel): DropdownMenuItem[] => { clickFunction: () => addTrackToQueue(track), }); - // TODO: change links + // TODO: add link items.push({ icon: "icon.category.playlist", text: "Add to Playlist", }); - items.push({ icon: "icon.share", text: "Share track", link: "/browse" }); + items.push({ + icon: "icon.share", + text: "Share track", + link: { name: "browse" }, // TODO: change link + }); items.push({ icon: "icon.person", text: "Go to contributors", - link: "/browse", + link: { name: "browse" }, // TODO: change link }); items.push({ icon: "icon.information", text: "More information", - link: "/browse", + link: { name: "browse" }, // TODO: change link }); return items; diff --git a/composables/album.ts b/composables/album.ts new file mode 100644 index 00000000..aac090b3 --- /dev/null +++ b/composables/album.ts @@ -0,0 +1,23 @@ +import { AlbumApi, AlbumModel } from "@bcc-code/bmm-sdk-fetch"; + +interface UseAlbumOptions { + id: number; +} + +/** + * Get playlist with the specified id + */ +export function useAlbum(options: UseAlbumOptions) { + const { id } = options; + + return useAsyncData(`album-${id}`, () => + new AlbumApi().albumIdGet({ id }) + ); +} + +/** + * Get all albums + */ +export function useAlbums() { + return useAsyncData("albums", () => new AlbumApi().albumGet()); +} diff --git a/i18n.config.ts b/i18n.config.ts index d6568036..4cb04e86 100644 --- a/i18n.config.ts +++ b/i18n.config.ts @@ -28,7 +28,6 @@ import zh from "./locales/zh.json"; const i18nConfig = { legacy: false, - locale: "en", messages: { af, bg, diff --git a/nuxt.config.ts b/nuxt.config.ts index 9bc07070..af6cd7ad 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -1,34 +1,8 @@ // https://nuxt.com/docs/api/configuration/nuxt-config - -// Due to a bug in @nuxtjs/i18n@8.0.0-beta.11 we have to use beta.10 with inline configuration. See: https://github.com/nuxt-modules/i18n/issues/1990 -// Hopefully when beta.12 is available this can be removed again. -import af from "./locales/af.json"; -import bg from "./locales/bg.json"; -import cs from "./locales/cs.json"; -import da from "./locales/da.json"; -import de from "./locales/de.json"; -import el from "./locales/el.json"; -import en from "./locales/en.json"; -import es from "./locales/es.json"; -import et from "./locales/et.json"; -import fi from "./locales/fi.json"; -import fr from "./locales/fr.json"; -import he from "./locales/he.json"; -import hr from "./locales/hr.json"; -import hu from "./locales/hu.json"; -import it from "./locales/it.json"; -import nb from "./locales/nb.json"; -import nl from "./locales/nl.json"; -import pl from "./locales/pl.json"; -import pt from "./locales/pt.json"; -import ro from "./locales/ro.json"; -import ru from "./locales/ru.json"; -import sl from "./locales/sl.json"; -import tr from "./locales/tr.json"; -import uk from "./locales/uk.json"; -import zh from "./locales/zh.json"; +import vueI18n from "./i18n.config"; const modules: (string | any)[] = [ + ["nuxt-typed-router", { strict: true }], "@nuxt/devtools", "@nuxtjs/tailwindcss", "@nuxtjs/i18n", @@ -47,39 +21,10 @@ export default defineNuxtConfig({ }, }, i18n: { + strategy: "no_prefix", defaultLocale: "en", - vueI18n: { - legacy: false, - locale: "en", - fallbackLocale: "fr", - messages: { - af, - bg, - cs, - da, - de, - el, - en, - es, - et, - fi, - fr, - he, - hr, - hu, - it, - nb, - nl, - pl, - pt, - ro, - ru, - sl, - tr, - uk, - zh, - }, - }, + // Due to a bug in @nuxtjs/i18n@8.0.0-beta.11 we have to use beta.10 with inline configuration. See: https://github.com/nuxt-modules/i18n/issues/1990 + vueI18n, }, imports: { dirs: ["stores"], diff --git a/package.json b/package.json index 8f2b4953..64965dbb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,5 @@ { "name": "bmm-web", - "version": "0.0.1", "author": "BCC", "description": "BCC audio player", "license": "AGPL-3.0", @@ -14,14 +13,14 @@ "preview": "PORT=9001 nuxt preview", "coverage": "vitest run --coverage", "e2e": "cypress open", - "lint": "stylelint '**/*.{vue,scss}' && prettier . --check && eslint --ext ts,js,vue,json . && nuxi typecheck", + "lint": "stylelint \"**/*.{vue,scss}\" && prettier . --check && eslint --ext ts,js,vue,json . && nuxi typecheck", "test": "vitest", "postinstall": "nuxt prepare", "tokens:build": "node ./scripts/convertToTailwind.cjs" }, "dependencies": { "@auth0/auth0-vue": "^2.2.0", - "@bcc-code/bmm-sdk-fetch": "^4.0.0", + "@bcc-code/bmm-sdk-fetch": "^5.0.0", "@pinia/nuxt": "^0.4.9", "class-variance-authority": "^0.5.2" }, @@ -44,12 +43,14 @@ "happy-dom": "^9.9.2", "nuxt": "^3.4.1", "nuxt-electron": "^0.4.5", + "nuxt-typed-router": "^3.2.0", "prettier": "^2.8.7", "stylelint": "^15.5.0", "stylelint-config-recommended-scss": "^10.0.0", "stylelint-config-recommended-vue": "^1.4.0", "vite-electron-plugin": "^0.8.2", "vite-plugin-electron-renderer": "^0.14.1", - "vitest": "^0.30.1" + "vitest": "^0.30.1", + "vue-tsc": "^1.6.0" } } \ No newline at end of file diff --git a/pages/not-found.vue b/pages/[...error].vue similarity index 81% rename from pages/not-found.vue rename to pages/[...error].vue index 476b91c6..c49a9311 100644 --- a/pages/not-found.vue +++ b/pages/[...error].vue @@ -1,5 +1,5 @@ diff --git a/pages/album/[id].vue b/pages/album/[id].vue new file mode 100644 index 00000000..076b265d --- /dev/null +++ b/pages/album/[id].vue @@ -0,0 +1,48 @@ + + + + + + + + + {{ album.title }} + + + F + + + + {{ album.children.length }} albums + + + + + diff --git a/pages/index.vue b/pages/index.vue index c20c3dda..750f1ed9 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -9,14 +9,14 @@ const newestPlaylists = computed(() => playlists.value?.splice(0, 4) || null); // Speeches const { data: speeches, pending: speechesPending } = useTracks({ contentType2: ["speech"], + size: 5, }); -const newestSpeeches = computed(() => speeches.value?.splice(0, 5) || null); // Audiobooks const { data: audiobooks, pending: audiobooksPending } = useTracks({ contentType2: ["audiobook"], + size: 5, }); -const newestAudiobooks = computed(() => audiobooks.value?.splice(0, 5) || null); @@ -34,19 +34,19 @@ const newestAudiobooks = computed(() => audiobooks.value?.splice(0, 5) || null); :playlists="newestPlaylists" /> - + - + diff --git a/pages/playlist/curated/[id].vue b/pages/playlist/curated/[id].vue index 60c8873e..20f5b713 100644 --- a/pages/playlist/curated/[id].vue +++ b/pages/playlist/curated/[id].vue @@ -2,7 +2,7 @@ const { t } = useI18n(); toolbarTitleStore().setReactiveToolbarTitle(() => t("nav.playlist")); -const { id } = useRoute().params; +const { id } = useRoute<"playlist-curated-id">().params; const playlistId = Number(id); const { data: playlist } = usePlaylist({ id: playlistId }); diff --git a/pages/playlist/private/[id].vue b/pages/playlist/private/[id].vue index f1fc19a7..a098429e 100644 --- a/pages/playlist/private/[id].vue +++ b/pages/playlist/private/[id].vue @@ -2,7 +2,7 @@ const { t } = useI18n(); toolbarTitleStore().setReactiveToolbarTitle(() => t("nav.playlist")); -const { id } = useRoute().params; +const { id } = useRoute<"playlist-private-id">().params; const collectionId = Number(id); const { data: collection, pending } = useTrackCollection({ id: collectionId }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 14ba385a..48157140 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,8 +5,8 @@ dependencies: specifier: ^2.2.0 version: 2.2.0 '@bcc-code/bmm-sdk-fetch': - specifier: ^4.0.0 - version: 4.0.0 + specifier: ^5.0.0 + version: 5.0.0 '@pinia/nuxt': specifier: ^0.4.9 version: 0.4.9(typescript@4.9.5)(vue@3.2.47) @@ -65,10 +65,13 @@ devDependencies: version: 9.9.2 nuxt: specifier: ^3.4.1 - version: 3.4.2(@types/node@18.15.13)(eslint@8.39.0)(stylelint@15.5.0)(typescript@4.9.5) + version: 3.4.2(@types/node@18.15.13)(eslint@8.39.0)(stylelint@15.5.0)(typescript@4.9.5)(vue-tsc@1.6.4) nuxt-electron: specifier: ^0.4.5 version: 0.4.5(esbuild@0.17.17)(vite-electron-plugin@0.8.2)(vite-plugin-electron-renderer@0.14.1) + nuxt-typed-router: + specifier: ^3.2.0 + version: 3.2.0 prettier: specifier: ^2.8.7 version: 2.8.7 @@ -90,6 +93,9 @@ devDependencies: vitest: specifier: ^0.30.1 version: 0.30.1(happy-dom@9.9.2) + vue-tsc: + specifier: ^1.6.0 + version: 1.6.4(typescript@4.9.5) packages: @@ -149,7 +155,7 @@ packages: '@babel/traverse': 7.21.4 '@babel/types': 7.21.4 convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.0 @@ -406,7 +412,7 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.21.4 '@babel/types': 7.21.4 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -419,8 +425,8 @@ packages: '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 - /@bcc-code/bmm-sdk-fetch@4.0.0: - resolution: {integrity: sha512-CQSDwDG260Z6EbUBMSxWfj9XrhSLpVVq82nBmykB++/pWxcNSUuA3Z6PcGMyynbozBs4w1L8auanjUjDl4cNxQ==} + /@bcc-code/bmm-sdk-fetch@5.0.0: + resolution: {integrity: sha512-EcIqLS22CS6MoKy/ijscE/OApDtco7HSGnO8cIGRMXX2XPseXH09/CJN9utDOYEeC6Ru3xB38h9OSZiaEKARjA==} dev: false /@bcoe/v8-coverage@0.2.3: @@ -530,7 +536,7 @@ packages: resolution: {integrity: sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==} engines: {node: '>=12'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 env-paths: 2.2.1 fs-extra: 8.1.0 got: 11.8.6 @@ -549,7 +555,7 @@ packages: dependencies: '@malept/cross-spawn-promise': 1.1.1 asar: 3.2.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 dir-compare: 2.4.0 fs-extra: 9.1.0 minimatch: 3.1.2 @@ -797,7 +803,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 espree: 9.5.1 globals: 13.20.0 ignore: 5.2.4 @@ -814,7 +820,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 espree: 9.5.1 globals: 13.20.0 ignore: 5.2.4 @@ -850,7 +856,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -928,7 +934,7 @@ packages: '@eslint/eslintrc': 1.4.1 '@intlify/core-base': 9.2.2 '@intlify/message-compiler': 9.2.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 eslint: 8.39.0 glob: 8.1.0 ignore: 5.2.4 @@ -1003,7 +1009,7 @@ packages: '@intlify/shared': 9.3.0-beta.17 '@rollup/pluginutils': 4.2.1 '@vue/compiler-sfc': 3.2.47 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 fast-glob: 3.2.12 js-yaml: 4.1.0 json5: 2.2.3 @@ -1119,7 +1125,7 @@ packages: resolution: {integrity: sha512-dOOXgzqaDoHu5qqMEPLKEgLz5CeIA7q8+1W62mCvFVCOqeC71UoTGJ4u1xUSOpIl2J1x2pqrNULkFteUeZW3/A==} engines: {node: '>= 8.0.0'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 http-errors: 1.8.1 koa-compose: 4.1.0 methods: 1.1.2 @@ -1139,7 +1145,7 @@ packages: resolution: {integrity: sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==} engines: {node: '>= 10.0.0'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 fs-extra: 9.1.0 lodash: 4.17.21 tmp-promise: 3.0.3 @@ -1278,7 +1284,7 @@ packages: '@nuxt/kit': 3.4.2 '@nuxt/schema': 3.4.2 execa: 7.1.1 - nuxt: 3.4.2(@types/node@18.15.13)(eslint@8.39.0)(stylelint@15.5.0)(typescript@4.9.5) + nuxt: 3.4.2(@types/node@18.15.13)(eslint@8.39.0)(stylelint@15.5.0)(typescript@4.9.5)(vue-tsc@1.6.4) vite: 4.3.1(@types/node@18.15.13) transitivePeerDependencies: - rollup @@ -1324,7 +1330,7 @@ packages: is-installed-globally: 0.4.0 launch-editor: 2.6.0 local-pkg: 0.4.3 - nuxt: 3.4.2(@types/node@18.15.13)(eslint@8.39.0)(stylelint@15.5.0)(typescript@4.9.5) + nuxt: 3.4.2(@types/node@18.15.13)(eslint@8.39.0)(stylelint@15.5.0)(typescript@4.9.5)(vue-tsc@1.6.4) nypm: 0.2.0 pacote: 15.1.2 pathe: 1.1.0 @@ -1334,7 +1340,7 @@ packages: semver: 7.5.0 sirv: 2.0.2 tinyws: 0.1.0(ws@8.13.0) - unimport: 3.0.6(rollup@3.20.7) + unimport: 3.0.6 vite: 4.3.1(@types/node@18.15.13) vite-plugin-inspect: 0.7.24(vite@4.3.1) vite-plugin-vue-inspector: 3.4.0(vite@4.3.1) @@ -1370,7 +1376,7 @@ packages: scule: 1.0.0 semver: 7.5.0 unctx: 2.3.0 - unimport: 3.0.6(rollup@3.20.7) + unimport: 3.0.6 untyped: 1.3.2 transitivePeerDependencies: - rollup @@ -1402,7 +1408,7 @@ packages: postcss-import-resolver: 2.0.0 std-env: 3.3.2 ufo: 1.1.1 - unimport: 3.0.6(rollup@3.20.7) + unimport: 3.0.6 untyped: 1.3.2 transitivePeerDependencies: - rollup @@ -1473,14 +1479,14 @@ packages: resolution: {integrity: sha512-PjVETP7+iZXAs5Q8O4ivl4t6qjWZMZqwiTVogUXHoHGZZcw7GZW3u3tzfYfE1HbzyYJfr236IXqQ02MeR8Fz2w==} dev: true - /@nuxt/vite-builder@3.4.2(@types/node@18.15.13)(eslint@8.39.0)(stylelint@15.5.0)(typescript@4.9.5)(vue@3.2.47): + /@nuxt/vite-builder@3.4.2(@types/node@18.15.13)(eslint@8.39.0)(stylelint@15.5.0)(typescript@4.9.5)(vue-tsc@1.6.4)(vue@3.2.47): resolution: {integrity: sha512-uLyy0sklOvGqj+yHAxSBE+wxyHvHZmYEfFjx03UEdMbYwpJlhPcqrt0pnWFJAkPWf8ZgpKymr8LNngsyYtNtAA==} engines: {node: ^14.18.0 || ^16.10.0 || ^17.0.0 || ^18.0.0 || ^19.0.0} peerDependencies: vue: ^3.2.47 dependencies: '@nuxt/kit': 3.4.2 - '@rollup/plugin-replace': 5.0.2(rollup@3.20.7) + '@rollup/plugin-replace': 5.0.2 '@vitejs/plugin-vue': 4.1.0(vite@4.3.1)(vue@3.2.47) '@vitejs/plugin-vue-jsx': 3.0.1(vite@4.3.1)(vue@3.2.47) autoprefixer: 10.4.14(postcss@8.4.23) @@ -1504,14 +1510,14 @@ packages: postcss: 8.4.23 postcss-import: 15.1.0(postcss@8.4.23) postcss-url: 10.1.3(postcss@8.4.23) - rollup-plugin-visualizer: 5.9.0(rollup@3.20.7) + rollup-plugin-visualizer: 5.9.0 std-env: 3.3.2 strip-literal: 1.0.1 ufo: 1.1.1 unplugin: 1.3.1 vite: 4.3.1(@types/node@18.15.13) vite-node: 0.30.1(@types/node@18.15.13) - vite-plugin-checker: 0.5.6(eslint@8.39.0)(stylelint@15.5.0)(typescript@4.9.5)(vite@4.3.1) + vite-plugin-checker: 0.5.6(eslint@8.39.0)(stylelint@15.5.0)(typescript@4.9.5)(vite@4.3.1)(vue-tsc@1.6.4) vue: 3.2.47 vue-bundle-renderer: 1.0.3 transitivePeerDependencies: @@ -1583,7 +1589,7 @@ packages: '@nuxt/kit': 3.4.2 '@vue/compiler-sfc': 3.2.47 cookie-es: 0.5.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 estree-walker: 3.0.3 is-https: 4.0.0 js-cookie: 3.0.1 @@ -1742,6 +1748,19 @@ packages: rollup: 3.20.7 dev: true + /@rollup/plugin-replace@5.0.2: + resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2 + magic-string: 0.27.0 + dev: true + /@rollup/plugin-replace@5.0.2(rollup@3.20.7): resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} engines: {node: '>=14.0.0'} @@ -1791,6 +1810,19 @@ packages: picomatch: 2.3.1 dev: true + /@rollup/pluginutils@5.0.2: + resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.1 + estree-walker: 2.0.2 + picomatch: 2.3.1 + /@rollup/pluginutils@5.0.2(rollup@3.20.7): resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} @@ -1804,6 +1836,7 @@ packages: estree-walker: 2.0.2 picomatch: 2.3.1 rollup: 3.20.7 + dev: true /@sideway/address@4.1.4: resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} @@ -2036,7 +2069,7 @@ packages: '@typescript-eslint/scope-manager': 5.59.0 '@typescript-eslint/type-utils': 5.59.0(eslint@8.39.0)(typescript@4.9.5) '@typescript-eslint/utils': 5.59.0(eslint@8.39.0)(typescript@4.9.5) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 eslint: 8.39.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 @@ -2061,7 +2094,7 @@ packages: '@typescript-eslint/scope-manager': 5.59.0 '@typescript-eslint/types': 5.59.0 '@typescript-eslint/typescript-estree': 5.59.0(typescript@4.9.5) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 eslint: 8.39.0 typescript: 4.9.5 transitivePeerDependencies: @@ -2088,7 +2121,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 5.59.0(typescript@4.9.5) '@typescript-eslint/utils': 5.59.0(eslint@8.39.0)(typescript@4.9.5) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 eslint: 8.39.0 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 @@ -2112,7 +2145,7 @@ packages: dependencies: '@typescript-eslint/types': 5.59.0 '@typescript-eslint/visitor-keys': 5.59.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.0 @@ -2287,6 +2320,51 @@ packages: pretty-format: 27.5.1 dev: true + /@volar/language-core@1.4.1: + resolution: {integrity: sha512-EIY+Swv+TjsWpxOxujjMf1ZXqOjg9MT2VMXZ+1dKva0wD8W0L6EtptFFcCJdBbcKmGMFkr57Qzz9VNMWhs3jXQ==} + dependencies: + '@volar/source-map': 1.4.1 + dev: true + + /@volar/source-map@1.4.1: + resolution: {integrity: sha512-bZ46ad72dsbzuOWPUtJjBXkzSQzzSejuR3CT81+GvTEI2E994D8JPXzM3tl98zyCNnjgs4OkRyliImL1dvJ5BA==} + dependencies: + muggle-string: 0.2.2 + dev: true + + /@volar/typescript@1.4.1(typescript@4.9.5): + resolution: {integrity: sha512-phTy6p9yG6bgMIKQWEeDOi/aeT0njZsb1a/G1mrEuDsLmAn24Le4gDwSsGNhea6Uhu+3gdpUZn2PmZXa+WG2iQ==} + peerDependencies: + typescript: '*' + dependencies: + '@volar/language-core': 1.4.1 + typescript: 4.9.5 + dev: true + + /@volar/vue-language-core@1.6.4: + resolution: {integrity: sha512-1o+cAtN2DIDNAX/HS8rkjZc8wTMTK+zCab/qtYbvEVlmokhZiDrQeoD9/l0Ug7YCNg+mVuMNHKNBY7pX8U2/Jw==} + dependencies: + '@volar/language-core': 1.4.1 + '@volar/source-map': 1.4.1 + '@vue/compiler-dom': 3.3.0-beta.3 + '@vue/compiler-sfc': 3.3.0-beta.3 + '@vue/reactivity': 3.3.0-beta.3 + '@vue/shared': 3.3.0-beta.3 + minimatch: 9.0.0 + muggle-string: 0.2.2 + vue-template-compiler: 2.7.14 + dev: true + + /@volar/vue-typescript@1.6.4(typescript@4.9.5): + resolution: {integrity: sha512-qKwgP0KVQR/aaH/SN3AP7RB8NnXPWDn3tjyXP6IT6etxkDeZLBLsXWUD9KMak/RvV1DgbXDuz4F9yuZlbt29rA==} + peerDependencies: + typescript: '*' + dependencies: + '@volar/typescript': 1.4.1(typescript@4.9.5) + '@volar/vue-language-core': 1.6.4 + typescript: 4.9.5 + dev: true + /@vue/babel-helper-vue-transform-on@1.0.2: resolution: {integrity: sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==} dev: true @@ -2316,12 +2394,28 @@ packages: estree-walker: 2.0.2 source-map: 0.6.1 + /@vue/compiler-core@3.3.0-beta.3: + resolution: {integrity: sha512-mv2rPo4JHou6ebm7+U/wO1HpA6W1zDfTqbt4fqjoXrMwU4DWNgRcLKTXG6G3cXV4mOe+2YgWspfxEzo7fPTMKg==} + dependencies: + '@babel/parser': 7.21.4 + '@vue/shared': 3.3.0-beta.3 + estree-walker: 2.0.2 + source-map-js: 1.0.2 + dev: true + /@vue/compiler-dom@3.2.47: resolution: {integrity: sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==} dependencies: '@vue/compiler-core': 3.2.47 '@vue/shared': 3.2.47 + /@vue/compiler-dom@3.3.0-beta.3: + resolution: {integrity: sha512-e7VpjN9wYiuJdJos6Uoe501CzdMkfaEr/27Ks4Ss7Irtcj5YA/S1OROZ35Xl2Pc3ctx6beq5RpcOvnMqh0hcaA==} + dependencies: + '@vue/compiler-core': 3.3.0-beta.3 + '@vue/shared': 3.3.0-beta.3 + dev: true + /@vue/compiler-sfc@3.2.47: resolution: {integrity: sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==} dependencies: @@ -2336,12 +2430,34 @@ packages: postcss: 8.4.23 source-map: 0.6.1 + /@vue/compiler-sfc@3.3.0-beta.3: + resolution: {integrity: sha512-6shZNooetShjSMHJvgVoE0EM8pOMV5vnrzsHoCU06stzV+kqRJQpbN7xf2s9wK2fgHMIBSMINrM9AuZiQnNCJg==} + dependencies: + '@babel/parser': 7.21.4 + '@vue/compiler-core': 3.3.0-beta.3 + '@vue/compiler-dom': 3.3.0-beta.3 + '@vue/compiler-ssr': 3.3.0-beta.3 + '@vue/reactivity-transform': 3.3.0-beta.3 + '@vue/shared': 3.3.0-beta.3 + estree-walker: 2.0.2 + magic-string: 0.30.0 + postcss: 8.4.23 + source-map-js: 1.0.2 + dev: true + /@vue/compiler-ssr@3.2.47: resolution: {integrity: sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==} dependencies: '@vue/compiler-dom': 3.2.47 '@vue/shared': 3.2.47 + /@vue/compiler-ssr@3.3.0-beta.3: + resolution: {integrity: sha512-egJ0lEVAod3Hpnw96cJ/0a9qv5f5h5/VCBpKYT8scqkzoMsikh8AJant2omokBCL/Ut5UAMLVQlA5b66+2Ys/g==} + dependencies: + '@vue/compiler-dom': 3.3.0-beta.3 + '@vue/shared': 3.3.0-beta.3 + dev: true + /@vue/devtools-api@6.5.0: resolution: {integrity: sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==} @@ -2354,11 +2470,27 @@ packages: estree-walker: 2.0.2 magic-string: 0.25.9 + /@vue/reactivity-transform@3.3.0-beta.3: + resolution: {integrity: sha512-aM3TgBca9QMMu/9B9ASRVvckeZpAdJO9nmQh5UCznhoDYjVxQPS+sCQvH6TLOjPB1MDQMVQYg4ZiPqfVVo7NbA==} + dependencies: + '@babel/parser': 7.21.4 + '@vue/compiler-core': 3.3.0-beta.3 + '@vue/shared': 3.3.0-beta.3 + estree-walker: 2.0.2 + magic-string: 0.30.0 + dev: true + /@vue/reactivity@3.2.47: resolution: {integrity: sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==} dependencies: '@vue/shared': 3.2.47 + /@vue/reactivity@3.3.0-beta.3: + resolution: {integrity: sha512-9VjWfWgZJ18YXEkfnDfZr33RyLBa6zc0RARLkMqMApWvM26eusZAZ4hhyxlgODBU/mEFk4XOGIAtwwSQedA0MQ==} + dependencies: + '@vue/shared': 3.3.0-beta.3 + dev: true + /@vue/runtime-core@3.2.47: resolution: {integrity: sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==} dependencies: @@ -2384,6 +2516,10 @@ packages: /@vue/shared@3.2.47: resolution: {integrity: sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==} + /@vue/shared@3.3.0-beta.3: + resolution: {integrity: sha512-st1SnB/Bkbb9TsieeI4TRX9TqHYIR5wvIma3ZtEben55EYSWa1q5u2BhTNgABSdH+rv3Xwfrvpwh5PmCw6Y53g==} + dev: true + /@vue/test-utils@2.3.2(vue@3.2.47): resolution: {integrity: sha512-hJnVaYhbrIm0yBS0+e1Y0Sj85cMyAi+PAbK4JHqMRUZ6S622Goa+G7QzkRSyvCteG8wop7tipuEbHoZo26wsSA==} peerDependencies: @@ -2566,7 +2702,7 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -2574,7 +2710,7 @@ packages: resolution: {integrity: sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==} engines: {node: '>= 8.0.0'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 depd: 2.0.0 humanize-ms: 1.2.1 transitivePeerDependencies: @@ -2695,7 +2831,7 @@ packages: builder-util: 23.6.0 builder-util-runtime: 9.1.1 chromium-pickle-js: 0.2.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 ejs: 3.1.9 electron-osx-sign: 0.6.0 electron-publish: 23.6.0 @@ -3095,7 +3231,7 @@ packages: resolution: {integrity: sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==} engines: {node: '>=12.0.0'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 sax: 1.2.4 transitivePeerDependencies: - supports-color @@ -3112,7 +3248,7 @@ packages: builder-util-runtime: 9.1.1 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 fs-extra: 10.1.0 http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 @@ -3956,6 +4092,10 @@ packages: resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} dev: true + /de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + dev: true + /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -3967,6 +4107,17 @@ packages: ms: 2.0.0 dev: true + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: true + /debug@3.2.7(supports-color@8.1.1): resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -3979,6 +4130,17 @@ packages: supports-color: 8.1.1 dev: true + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -3990,6 +4152,7 @@ packages: dependencies: ms: 2.1.2 supports-color: 8.1.1 + dev: true /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} @@ -4330,7 +4493,7 @@ packages: dependencies: '@electron/get': 2.0.2 '@types/node': 18.15.13 - extract-zip: 2.0.1(supports-color@8.1.1) + extract-zip: 2.0.1 transitivePeerDependencies: - supports-color dev: true @@ -4553,7 +4716,7 @@ packages: dependencies: confusing-browser-globals: 1.0.11 eslint: 8.39.0 - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.0)(eslint@8.39.0) object.assign: 4.1.4 object.entries: 1.1.6 semver: 6.3.0 @@ -4571,7 +4734,7 @@ packages: '@typescript-eslint/parser': 5.59.0(eslint@8.39.0)(typescript@4.9.5) eslint: 8.39.0 eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.27.5)(eslint@8.39.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.0)(eslint@8.39.0) dev: true /eslint-config-prettier@8.8.0(eslint@8.39.0): @@ -4600,7 +4763,7 @@ packages: /eslint-import-resolver-node@0.3.7: resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} dependencies: - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7 is-core-module: 2.12.0 resolve: 1.22.2 transitivePeerDependencies: @@ -4614,10 +4777,10 @@ packages: eslint: '*' eslint-plugin-import: '*' dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 enhanced-resolve: 5.13.0 eslint: 8.39.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) get-tsconfig: 4.5.0 globby: 13.1.4 @@ -4653,7 +4816,7 @@ packages: optional: true dependencies: '@typescript-eslint/parser': 5.59.0(eslint@8.39.0)(typescript@4.9.5) - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7 eslint: 8.39.0 eslint-import-resolver-node: 0.3.7 eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.0)(eslint-plugin-import@2.27.5)(eslint@8.39.0) @@ -4661,6 +4824,64 @@ packages: - supports-color dev: true + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-node@0.3.7)(eslint@8.39.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 5.59.0(eslint@8.39.0)(typescript@4.9.5) + debug: 3.2.7 + eslint: 8.39.0 + eslint-import-resolver-node: 0.3.7 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 5.59.0(eslint@8.39.0)(typescript@4.9.5) + debug: 3.2.7 + eslint: 8.39.0 + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.0)(eslint-plugin-import@2.27.5)(eslint@8.39.0) + transitivePeerDependencies: + - supports-color + dev: true + /eslint-plugin-es@3.0.1(eslint@8.39.0): resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} engines: {node: '>=8.10.0'} @@ -4697,7 +4918,7 @@ packages: array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7 doctrine: 2.1.0 eslint: 8.39.0 eslint-import-resolver-node: 0.3.7 @@ -4716,6 +4937,39 @@ packages: - supports-color dev: true + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.0)(eslint@8.39.0): + resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 5.59.0(eslint@8.39.0)(typescript@4.9.5) + array-includes: 3.1.6 + array.prototype.flat: 1.3.1 + array.prototype.flatmap: 1.3.1 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.39.0 + eslint-import-resolver-node: 0.3.7 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-node@0.3.7)(eslint@8.39.0) + has: 1.0.3 + is-core-module: 2.12.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.6 + resolve: 1.22.2 + semver: 6.3.0 + tsconfig-paths: 3.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + /eslint-plugin-n@15.7.0(eslint@8.39.0): resolution: {integrity: sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==} engines: {node: '>=12.22.0'} @@ -4861,7 +5115,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.0 @@ -5055,6 +5309,20 @@ packages: ufo: 1.1.1 dev: true + /extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + dependencies: + debug: 4.3.4 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.0 + transitivePeerDependencies: + - supports-color + dev: true + /extract-zip@2.0.1(supports-color@8.1.1): resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} engines: {node: '>= 10.17.0'} @@ -5690,6 +5958,7 @@ packages: /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + dev: true /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} @@ -5822,7 +6091,7 @@ packages: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -5865,7 +6134,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -6029,7 +6298,7 @@ packages: dependencies: '@ioredis/commands': 1.2.0 cluster-key-slot: 1.1.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 denque: 2.1.0 lodash.defaults: 4.2.0 lodash.isarguments: 3.1.0 @@ -6602,7 +6871,7 @@ packages: resolution: {integrity: sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==} engines: {node: '>= 8'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 http-errors: 1.8.1 resolve-path: 1.4.0 transitivePeerDependencies: @@ -6613,7 +6882,7 @@ packages: resolution: {integrity: sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==} engines: {node: '>= 7.6.0'} dependencies: - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7 koa-send: 5.0.1 transitivePeerDependencies: - supports-color @@ -6628,7 +6897,7 @@ packages: content-disposition: 0.5.4 content-type: 1.0.5 cookies: 0.8.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 delegates: 1.0.0 depd: 2.0.0 destroy: 1.2.0 @@ -6763,6 +7032,10 @@ packages: p-locate: 5.0.0 dev: true + /lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + dev: true + /lodash._reinterpolate@3.0.0: resolution: {integrity: sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==} @@ -7161,6 +7434,13 @@ packages: brace-expansion: 2.0.1 dev: true + /minimatch@9.0.0: + resolution: {integrity: sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} @@ -7265,6 +7545,12 @@ packages: engines: {node: '>=10'} hasBin: true + /mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + dev: true + /mlly@1.2.0: resolution: {integrity: sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww==} dependencies: @@ -7293,6 +7579,10 @@ packages: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true + /muggle-string@0.2.2: + resolution: {integrity: sha512-YVE1mIJ4VpUMqZObFndk9CJu6DBJR/GB13p3tXuNbwD4XExaI5EOuRl6BHeIDxIqXZVxSfAC+y6U1Z/IxCfKUg==} + dev: true + /mute-stream@1.0.0: resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -7674,7 +7964,24 @@ packages: vite-plugin-electron-renderer: 0.14.1 dev: true - /nuxt@3.4.2(@types/node@18.15.13)(eslint@8.39.0)(stylelint@15.5.0)(typescript@4.9.5): + /nuxt-typed-router@3.2.0: + resolution: {integrity: sha512-f8CSfiAsm6mImeRDaWVVOvd22NlBbVeNRKCOWrU/HbGR4QemRVTj/SGJ/pjc7EPQrJRFMqpfqTKOUkiUwRdkAQ==} + dependencies: + '@nuxt/kit': 3.4.2 + chalk: 5.2.0 + defu: 6.1.2 + lodash-es: 4.17.21 + log-symbols: 5.1.0 + mkdirp: 3.0.1 + nanoid: 4.0.2 + pathe: 1.1.0 + prettier: 2.8.8 + transitivePeerDependencies: + - rollup + - supports-color + dev: true + + /nuxt@3.4.2(@types/node@18.15.13)(eslint@8.39.0)(stylelint@15.5.0)(typescript@4.9.5)(vue-tsc@1.6.4): resolution: {integrity: sha512-4v+oeBL4ZI8nHzF0Dm1p5kF9VCNlzrpvOt7wu3BnmzlueXsu4A/LfmFvpfZLxws+r5U74eM5Ut/LMD8B8LrZIw==} engines: {node: ^14.18.0 || ^16.10.0 || ^17.0.0 || ^18.0.0 || ^19.0.0} hasBin: true @@ -7690,7 +7997,7 @@ packages: '@nuxt/schema': 3.4.2 '@nuxt/telemetry': 2.2.0 '@nuxt/ui-templates': 1.1.1 - '@nuxt/vite-builder': 3.4.2(@types/node@18.15.13)(eslint@8.39.0)(stylelint@15.5.0)(typescript@4.9.5)(vue@3.2.47) + '@nuxt/vite-builder': 3.4.2(@types/node@18.15.13)(eslint@8.39.0)(stylelint@15.5.0)(typescript@4.9.5)(vue-tsc@1.6.4)(vue@3.2.47) '@types/node': 18.15.13 '@unhead/ssr': 1.1.26 '@unhead/vue': 1.1.26(vue@3.2.47) @@ -7725,7 +8032,7 @@ packages: ufo: 1.1.1 unctx: 2.3.0 unenv: 1.4.1 - unimport: 3.0.6(rollup@3.20.7) + unimport: 3.0.6 unplugin: 1.3.1 untyped: 1.3.2 vue: 3.2.47 @@ -8169,7 +8476,7 @@ packages: engines: {node: '>= 0.12.0'} dependencies: async: 2.6.4 - debug: 3.2.7(supports-color@8.1.1) + debug: 3.2.7 mkdirp: 0.5.6 transitivePeerDependencies: - supports-color @@ -8695,6 +9002,12 @@ packages: hasBin: true dev: true + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + /pretty-bytes@5.6.0: resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} engines: {node: '>=6'} @@ -9089,6 +9402,22 @@ packages: dev: true optional: true + /rollup-plugin-visualizer@5.9.0: + resolution: {integrity: sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + rollup: 2.x || 3.x + peerDependenciesMeta: + rollup: + optional: true + dependencies: + open: 8.4.2 + picomatch: 2.3.1 + source-map: 0.7.4 + yargs: 17.7.1 + dev: true + /rollup-plugin-visualizer@5.9.0(rollup@3.20.7): resolution: {integrity: sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg==} engines: {node: '>=14'} @@ -9112,6 +9441,7 @@ packages: hasBin: true optionalDependencies: fsevents: 2.3.2 + dev: true /run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} @@ -9377,7 +9707,7 @@ packages: engines: {node: '>= 10'} dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 socks: 2.7.1 transitivePeerDependencies: - supports-color @@ -9704,7 +10034,7 @@ packages: cosmiconfig: 8.1.3 css-functions-list: 3.1.0 css-tree: 2.3.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 fast-glob: 3.2.12 fastest-levenshtein: 1.0.16 file-entry-cache: 6.0.1 @@ -9759,7 +10089,7 @@ packages: resolution: {integrity: sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==} engines: {node: '>= 8.0'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -9782,6 +10112,7 @@ packages: engines: {node: '>=10'} dependencies: has-flag: 4.0.0 + dev: true /supports-hyperlinks@3.0.0: resolution: {integrity: sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==} @@ -10281,6 +10612,23 @@ packages: hookable: 5.5.3 dev: true + /unimport@3.0.6: + resolution: {integrity: sha512-GYxGJ1Bri1oqx8VFDjdgooGzeK7jBk3bvhXmamTIpu3nONOcUMGwZbX7X0L5RA7OWMXpR4vzpSQP7pXUzJg1/Q==} + dependencies: + '@rollup/pluginutils': 5.0.2 + escape-string-regexp: 5.0.0 + fast-glob: 3.2.12 + local-pkg: 0.4.3 + magic-string: 0.30.0 + mlly: 1.2.0 + pathe: 1.1.0 + pkg-types: 1.0.2 + scule: 1.0.0 + strip-literal: 1.0.1 + unplugin: 1.3.1 + transitivePeerDependencies: + - rollup + /unimport@3.0.6(rollup@3.20.7): resolution: {integrity: sha512-GYxGJ1Bri1oqx8VFDjdgooGzeK7jBk3bvhXmamTIpu3nONOcUMGwZbX7X0L5RA7OWMXpR4vzpSQP7pXUzJg1/Q==} dependencies: @@ -10297,6 +10645,7 @@ packages: unplugin: 1.3.1 transitivePeerDependencies: - rollup + dev: true /unique-filename@2.0.1: resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} @@ -10507,7 +10856,7 @@ packages: hasBin: true dependencies: cac: 6.7.14 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 mlly: 1.2.0 pathe: 1.1.0 picocolors: 1.0.0 @@ -10522,7 +10871,7 @@ packages: - terser dev: true - /vite-plugin-checker@0.5.6(eslint@8.39.0)(stylelint@15.5.0)(typescript@4.9.5)(vite@4.3.1): + /vite-plugin-checker@0.5.6(eslint@8.39.0)(stylelint@15.5.0)(typescript@4.9.5)(vite@4.3.1)(vue-tsc@1.6.4): resolution: {integrity: sha512-ftRyON0gORUHDxcDt2BErmsikKSkfvl1i2DoP6Jt2zDO9InfvM6tqO1RkXhSjkaXEhKPea6YOnhFaZxW3BzudQ==} engines: {node: '>=14.16'} peerDependencies: @@ -10573,6 +10922,7 @@ packages: vscode-languageserver: 7.0.0 vscode-languageserver-textdocument: 1.0.8 vscode-uri: 3.0.7 + vue-tsc: 1.6.4(typescript@4.9.5) dev: true /vite-plugin-electron-renderer@0.14.1: @@ -10592,8 +10942,8 @@ packages: vite: ^3.1.0 || ^4.0.0 dependencies: '@antfu/utils': 0.7.2 - '@rollup/pluginutils': 5.0.2(rollup@3.20.7) - debug: 4.3.4(supports-color@8.1.1) + '@rollup/pluginutils': 5.0.2 + debug: 4.3.4 fs-extra: 11.1.1 picocolors: 1.0.0 sirv: 2.0.2 @@ -10699,7 +11049,7 @@ packages: cac: 6.7.14 chai: 4.3.7 concordance: 5.0.4 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 happy-dom: 9.9.2 local-pkg: 0.4.3 magic-string: 0.30.0 @@ -10808,7 +11158,7 @@ packages: peerDependencies: eslint: '>=6.0.0' dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 eslint: 8.39.0 eslint-scope: 7.2.0 eslint-visitor-keys: 3.4.0 @@ -10872,6 +11222,25 @@ packages: vue: 3.2.47 dev: true + /vue-template-compiler@2.7.14: + resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==} + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + dev: true + + /vue-tsc@1.6.4(typescript@4.9.5): + resolution: {integrity: sha512-8rg8S1AhRJ6/WriENQEhyqH5wsxSxuD5iaD+QnkZn2ArZ6evlhqfBAIcVN8mfSyCV9DeLkQXkOSv/MaeJiJPAQ==} + hasBin: true + peerDependencies: + typescript: '*' + dependencies: + '@volar/vue-language-core': 1.6.4 + '@volar/vue-typescript': 1.6.4(typescript@4.9.5) + semver: 7.5.0 + typescript: 4.9.5 + dev: true + /vue@3.2.47: resolution: {integrity: sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==} dependencies:
{{ album.title }}
{{ album?.children?.length }} tracks
+ {{ track.id }} +
{{ album.children.length }} albums