{ "name": "front", "version": "0.1.0", "type": "module", "private": true, "description": "Funkwhale front-end", "author": "Funkwhale Collective ", "scripts": { "dev": "vite", "dev:docs": "VP_DOCS=true vitepress dev ui-docs", "build": "vite build --mode development", "build:deployment": "vite build", "build:docs": "VP_DOCS=true vitepress build ui-docs", "serve:docs": "VP_DOCS=true vitepress serve ui-docs", "serve": "vite preview", "test": "vitest run", "test:unit": "vitest run --coverage", "test:generate-mock-server": "msw-auto-mock ../docs/schema.yml -o test/msw-server.ts --node", "lint": "eslint --cache --cache-strategy content --ext .ts,.js,.vue,.json,.html src test cypress public/embed.html", "lint:tsc": "vue-tsc --noEmit --incremental && tsc --noEmit --incremental -p cypress" }, "dependencies": { "@sentry/tracing": "7.47.0", "@sentry/vue": "7.47.0", "@tauri-apps/api": "2.0.0-beta.1", "@types/jsmediatags": "3.9.6", "@vue/runtime-core": "3.3.11", "@vueuse/components": "10.6.1", "@vueuse/core": "10.6.1", "@vueuse/integrations": "10.6.1", "@vueuse/math": "10.6.1", "@vueuse/router": "10.6.1", "axios": "1.7.2", "axios-auth-refresh": "3.3.6", "butterchurn": "3.0.0-beta.4", "butterchurn-presets": "3.0.0-beta.4", "diff": "5.1.0", "dompurify": "3.0.8", "focus-trap": "7.2.0", "idb-keyval": "6.2.1", "jquery": "3.7.1", "jsmediatags": "3.9.7", "lodash-es": "4.17.21", "lru-cache": "10.2.0", "magic-regexp": "0.8.0", "moment": "2.29.4", "music-metadata-browser": "2.5.10", "nanoid": "5.0.4", "pinia": "2.1.7", "showdown": "2.1.0", "stacktrace-js": "2.0.2", "standardized-audio-context": "25.3.60", "text-clipper": "2.2.0", "transliteration": "2.3.5", "type-fest": "4.30.1", "universal-cookie": "4.0.4", "vite-plugin-pwa": "0.14.4", "vue": "3.5.13", "vue-gettext": "2.1.12", "vue-i18n": "9.9.1", "vue-router": "4.2.5", "vue-upload-component": "3.1.8", "vue-virtual-scroller": "2.0.0-beta.8", "vue3-gettext": "2.3.4", "vue3-lazyload": "0.3.8", "vuedraggable": "4.1.0", "vuex": "4.1.0", "vuex-persistedstate": "4.1.0", "vuex-router-sync": "5.0.0" }, "devDependencies": { "@faker-js/faker": "8.4.1", "@iconify/vue": "4.1.1", "@intlify/eslint-plugin-vue-i18n": "2.0.0", "@intlify/unplugin-vue-i18n": "2.0.0", "@tauri-apps/cli": "2.0.0-beta.2", "@types/diff": "5.0.9", "@types/dompurify": "3.0.5", "@types/jquery": "3.5.29", "@types/lodash-es": "4.17.12", "@types/moxios": "0.4.17", "@types/qs": "6.9.10", "@types/semantic-ui": "2.2.9", "@types/showdown": "2.0.6", "@types/vue-virtual-scroller": "npm:@earltp/vue-virtual-scroller", "@typescript-eslint/eslint-plugin": "7.1.0", "@vitejs/plugin-vue": "5.1.4", "@vitest/coverage-v8": "1.3.1", "@vue-macros/volar": "0.17.2", "@vue/compiler-sfc": "3.3.11", "@vue/eslint-config-standard": "8.0.1", "@vue/eslint-config-typescript": "12.0.0", "@vue/test-utils": "2.4.1", "@vue/tsconfig": "0.6.0", "cypress": "13.6.4", "eslint": "8.57.0", "eslint-config-standard": "17.1.0", "eslint-plugin-html": "8.0.0", "eslint-plugin-import": "2.29.1", "eslint-plugin-n": "16.6.2", "eslint-plugin-node": "11.1.0", "eslint-plugin-promise": "6.1.1", "eslint-plugin-vue": "9.22.0", "jsdom": "24.0.0", "jsonc-eslint-parser": "2.4.0", "msw": "2.2.1", "msw-auto-mock": "0.18.0", "patch-package": "8.0.0", "rollup-plugin-visualizer": "5.9.0", "sass": "1.68.0", "sinon": "15.0.2", "standardized-audio-context-mock": "9.6.32", "typescript": "5.3.3", "unocss": "0.58.0", "unplugin-vue-macros": "2.6.2", "utility-types": "3.10.0", "vite": "5.2.12", "vite-plugin-node-polyfills": "0.17.0", "vite-plugin-pwa": "0.14.4", "vite-plugin-vue-devtools": "^7.5.2", "vitepress": "1.5.0", "vitest": "1.3.1", "vue-tsc": "1.8.27", "workbox-core": "6.5.4", "workbox-precaching": "6.5.4", "workbox-routing": "6.5.4", "workbox-strategies": "6.5.4" } }