{ "name": "frontend", "private": true, "type": "module", "scripts": { "watch": "vite", "dev": "vite --config vite.config.local-dev.ts --debug hmr", "build": "vite build", "storybook-dev": "nodemon --verbose --watch src --ext \"mdx,ts,vue\" --ignore \"*.stories.ts\" --exec \"pnpm build-storybook-pre && pnpm exec storybook dev -p 6006 --ci\"", "build-storybook-pre": "(tsc -p .storybook || echo done.) && node .storybook/generate.js && node .storybook/preload-locale.js && node .storybook/preload-theme.js", "build-storybook": "pnpm build-storybook-pre && storybook build --webpack-stats-json storybook-static", "chromatic": "chromatic", "test": "vitest --run --globals", "test-and-coverage": "vitest --run --coverage --globals", "typecheck": "vue-tsc --noEmit", "eslint": "eslint --quiet \"src/**/*.{ts,vue}\"", "lint": "pnpm typecheck && pnpm eslint" }, "dependencies": { "@caed0/webp-conv": "^1.1.0", "@discordapp/twemoji": "15.0.3", "@github/webauthn-json": "2.1.1", "@mcaptcha/vanilla-glue": "0.1.0-alpha-3", "@meersagor/wavesurfer-vue": "^0.1.0", "@misskey-dev/browser-image-resizer": "2024.1.0", "@rollup/plugin-json": "6.1.0", "@rollup/plugin-replace": "5.0.5", "@rollup/pluginutils": "5.1.0", "@syuilo/aiscript": "0.18.0", "@tabler/icons-webfont": "3.3.0", "@twemoji/parser": "15.1.1", "@vitejs/plugin-vue": "5.0.4", "@vue/compiler-sfc": "3.4.26", "aiscript-vscode": "github:aiscript-dev/aiscript-vscode#v0.1.4", "apng-js": "^1.1.1", "astring": "1.8.6", "broadcast-channel": "7.0.0", "buraha": "0.0.1", "canvas-confetti": "1.9.3", "chart.js": "4.4.2", "chartjs-adapter-date-fns": "3.0.0", "chartjs-chart-matrix": "2.0.1", "chartjs-plugin-gradient": "0.6.1", "chartjs-plugin-zoom": "2.0.1", "chromatic": "11.3.0", "compare-versions": "6.1.0", "cropperjs": "2.0.0-beta.5", "date-fns": "2.30.0", "escape-regexp": "0.0.1", "estree-walker": "3.0.3", "eventemitter3": "5.0.1", "gif-frames": "^1.0.1", "gifshot": "^0.4.5", "gifuct-js": "^2.1.2", "idb-keyval": "6.2.1", "insert-text-at-cursor": "0.3.0", "is-file-animated": "1.0.2", "json5": "2.2.3", "libwebpjs": "^0.0.1", "matter-js": "0.19.0", "mfm-js": "0.24.0", "misskey-bubble-game": "workspace:*", "misskey-js": "workspace:*", "misskey-reversi": "workspace:*", "photoswipe": "5.4.3", "punycode": "2.3.1", "rollup": "4.17.2", "sanitize-html": "2.13.0", "sass": "1.76.0", "shiki": "1.4.0", "strict-event-emitter-types": "2.0.0", "textarea-caret": "3.1.0", "three": "0.164.1", "throttle-debounce": "5.0.0", "tinycolor2": "1.6.0", "tsc-alias": "1.8.8", "tsconfig-paths": "4.2.0", "typescript": "5.4.5", "uuid": "9.0.1", "v-code-diff": "1.11.0", "vite": "5.2.11", "vue": "3.4.26", "vuedraggable": "next", "wavesurfer.js": "^7.7.14", "webm-wasm": "^0.4.1", "webp-hero": "^0.0.2" }, "devDependencies": { "@misskey-dev/eslint-plugin": "1.0.0", "@misskey-dev/summaly": "5.1.0", "@storybook/addon-actions": "8.0.9", "@storybook/addon-essentials": "8.0.9", "@storybook/addon-interactions": "8.0.9", "@storybook/addon-links": "8.0.9", "@storybook/addon-mdx-gfm": "8.0.9", "@storybook/addon-storysource": "8.0.9", "@storybook/blocks": "8.0.9", "@storybook/components": "8.0.9", "@storybook/core-events": "8.0.9", "@storybook/manager-api": "8.0.9", "@storybook/preview-api": "8.0.9", "@storybook/react": "8.0.9", "@storybook/react-vite": "8.0.9", "@storybook/test": "8.0.9", "@storybook/theming": "8.0.9", "@storybook/types": "8.0.9", "@storybook/vue3": "8.0.9", "@storybook/vue3-vite": "8.0.9", "@testing-library/vue": "8.0.3", "@types/escape-regexp": "0.0.3", "@types/estree": "1.0.5", "@types/matter-js": "0.19.6", "@types/micromatch": "4.0.7", "@types/node": "20.12.7", "@types/punycode": "2.1.4", "@types/sanitize-html": "2.11.0", "@types/throttle-debounce": "5.0.2", "@types/tinycolor2": "1.4.6", "@types/uuid": "9.0.8", "@types/ws": "8.5.10", "@typescript-eslint/eslint-plugin": "7.7.1", "@typescript-eslint/parser": "7.7.1", "@vitest/coverage-v8": "0.34.6", "@vue/runtime-core": "3.4.26", "acorn": "8.11.3", "cross-env": "7.0.3", "cypress": "13.8.1", "eslint": "8.57.0", "eslint-plugin-import": "2.29.1", "eslint-plugin-vue": "9.25.0", "fast-glob": "3.3.2", "happy-dom": "14.7.1", "intersection-observer": "0.12.2", "micromatch": "4.0.5", "msw": "2.2.14", "msw-storybook-addon": "2.0.1", "nodemon": "3.1.0", "prettier": "3.2.5", "react": "18.3.1", "react-dom": "18.3.1", "start-server-and-test": "2.0.3", "storybook": "8.0.9", "storybook-addon-misskey-theme": "github:misskey-dev/storybook-addon-misskey-theme", "vite-plugin-turbosnap": "1.0.3", "vitest": "0.34.6", "vitest-fetch-mock": "0.2.2", "vue-component-type-helpers": "2.0.16", "vue-eslint-parser": "9.4.2", "vue-tsc": "2.0.16" } }