{
  "name": "front",
  "version": "0.1.0",
  "type": "module",
  "private": true,
  "description": "Funkwhale front-end",
  "author": "Funkwhale Collective <contact@funkwhale.audio>",
  "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": "yarn lint:es && yarn lint:tsc",
    "lint:es": "eslint --max-warnings 0 --cache --cache-strategy content --ext .ts,.js,.vue,.json,.html,.cjs . cypress public/embed.html src test ui-docs",
    "lint:tsc": "vue-tsc --noEmit --incremental && tsc --noEmit --incremental --project tsconfig.json",
    "generate-types-from-local-schema": "yarn run openapi-typescript ../api/funkwhale_api/common/schema.yml -o src/generated/types.ts",
    "generate-types-from-remote-schema": "yarn run openapi-typescript https://docs.funkwhale.audio/develop/swagger/schema.yml -o src/generated/types.ts",
    "fmt:es": "yarn lint:es --fix",
    "fmt:html": "node --experimental-strip-types node_modules/prettier/bin/prettier.cjs index.html public/embed.html --write"
  },
  "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.2.4",
    "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-dompurify-html": "5.2.0",
    "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.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/common": "1.15.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.1.2",
    "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",
    "openapi-typescript": "7.6.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"
  },
  "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
}
