{ "name": "frontend", "private": true, "type": "module", "scripts": { "watch": "vite", "build": "tsx build.ts", "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": "(tsgo -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": { "@analytics/google-analytics": "1.1.0", "@discordapp/twemoji": "16.0.1", "@github/webauthn-json": "2.1.1", "@mcaptcha/vanilla-glue": "0.1.0-rc2", "i18n": "workspace:*", "@misskey-dev/browser-image-resizer": "2024.1.0", "@rollup/plugin-json": "6.1.0", "@rollup/plugin-replace": "6.0.3", "@rollup/pluginutils": "5.3.0", "@sentry/vue": "10.29.0", "@syuilo/aiscript": "1.2.0", "@syuilo/aiscript-0-19-0": "npm:@syuilo/aiscript@^0.19.0", "@twemoji/parser": "16.0.0", "@vitejs/plugin-vue": "6.0.2", "aiscript-vscode": "github:aiscript-dev/aiscript-vscode#v0.1.16", "analytics": "0.8.19", "broadcast-channel": "7.2.0", "buraha": "0.0.1", "canvas-confetti": "1.9.4", "chart.js": "4.5.1", "chartjs-adapter-date-fns": "3.0.0", "chartjs-chart-matrix": "3.0.0", "chartjs-plugin-gradient": "0.6.1", "chartjs-plugin-zoom": "2.2.0", "chromatic": "13.3.4", "compare-versions": "6.1.1", "cropperjs": "2.1.0", "date-fns": "4.1.0", "eventemitter3": "5.0.1", "execa": "9.6.1", "exifreader": "4.33.1", "frontend-shared": "workspace:*", "icons-subsetter": "workspace:*", "idb-keyval": "6.2.2", "insert-text-at-cursor": "0.3.0", "ios-haptics": "0.1.4", "is-file-animated": "1.0.2", "json5": "2.2.3", "matter-js": "0.20.0", "mediabunny": "1.25.8", "mfm-js": "0.25.0", "misskey-bubble-game": "workspace:*", "misskey-js": "workspace:*", "misskey-reversi": "workspace:*", "photoswipe": "5.4.4", "punycode.js": "2.3.1", "qr-code-styling": "1.9.2", "qr-scanner": "1.4.2", "rollup": "4.53.3", "sanitize-html": "2.17.0", "sass": "1.95.1", "shiki": "3.19.0", "textarea-caret": "3.1.0", "three": "0.181.2", "throttle-debounce": "5.0.2", "tinycolor2": "1.6.0", "v-code-diff": "1.13.1", "vite": "7.2.7", "vue": "3.5.25", "vuedraggable": "next", "wanakana": "5.3.1" }, "devDependencies": { "@misskey-dev/summaly": "5.2.5", "@storybook/addon-essentials": "8.6.14", "@storybook/addon-interactions": "8.6.14", "@storybook/addon-links": "10.1.5", "@storybook/addon-mdx-gfm": "8.6.14", "@storybook/addon-storysource": "8.6.14", "@storybook/blocks": "8.6.14", "@storybook/components": "8.6.14", "@storybook/core-events": "8.6.14", "@storybook/manager-api": "8.6.14", "@storybook/preview-api": "8.6.14", "@storybook/react": "10.1.5", "@storybook/react-vite": "10.1.5", "@storybook/test": "8.6.14", "@storybook/theming": "8.6.14", "@storybook/types": "8.6.14", "@storybook/vue3": "10.1.5", "@storybook/vue3-vite": "10.1.5", "@tabler/icons-webfont": "3.35.0", "@testing-library/vue": "8.1.0", "@types/canvas-confetti": "1.9.0", "@types/estree": "1.0.8", "@types/matter-js": "0.20.2", "@types/micromatch": "4.0.10", "@types/node": "24.10.2", "@types/punycode.js": "npm:@types/punycode@2.1.4", "@types/sanitize-html": "2.16.0", "@types/seedrandom": "3.0.8", "@types/throttle-debounce": "5.0.2", "@types/tinycolor2": "1.4.6", "@typescript-eslint/eslint-plugin": "8.49.0", "@typescript-eslint/parser": "8.49.0", "@vitest/coverage-v8": "4.0.15", "@vue/compiler-core": "3.5.25", "acorn": "8.15.0", "astring": "1.9.0", "cross-env": "10.1.0", "cypress": "15.7.1", "eslint-plugin-import": "2.32.0", "eslint-plugin-vue": "10.6.2", "estree-walker": "3.0.3", "happy-dom": "20.0.11", "intersection-observer": "0.12.2", "magic-string": "0.30.21", "micromatch": "4.0.8", "minimatch": "10.1.1", "msw": "2.12.4", "msw-storybook-addon": "2.0.6", "nodemon": "3.1.11", "prettier": "3.7.4", "react": "19.2.1", "react-dom": "19.2.1", "seedrandom": "3.0.5", "start-server-and-test": "2.1.3", "storybook": "10.1.5", "storybook-addon-misskey-theme": "github:misskey-dev/storybook-addon-misskey-theme", "tsx": "4.21.0", "vite-plugin-glsl": "1.5.5", "vite-plugin-turbosnap": "1.0.3", "vitest": "4.0.15", "vitest-fetch-mock": "0.4.5", "vue-component-type-helpers": "3.1.8", "vue-eslint-parser": "10.2.0", "vue-tsc": "3.1.8" } }