From 149ddebf165b7df4bf372a1461df5fa47cc4f5d6 Mon Sep 17 00:00:00 2001 From: Chocolate Pie <106949016+chocolate-pie@users.noreply.github.com> Date: Sat, 29 Apr 2023 23:36:28 +0900 Subject: [PATCH] =?UTF-8?q?fix(frontend):=20=E3=83=AD=E3=83=BC=E3=83=AB?= =?UTF-8?q?=E3=81=AE=E3=82=BF=E3=82=A4=E3=83=88=E3=83=AB=E3=81=AE=E3=83=90?= =?UTF-8?q?=E3=82=B0=E3=82=92=E8=A7=A3=E6=B1=BA=E3=80=81Reactivity=20Trans?= =?UTF-8?q?form=E3=81=A7=E5=9E=8B=E3=82=A8=E3=83=A9=E3=83=BC=E3=82=92?= =?UTF-8?q?=E5=87=BA=E3=81=95=E3=81=AA=E3=81=84=E3=82=88=E3=81=86=E3=81=AB?= =?UTF-8?q?=20(#10729)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: #10569を解決 * fix: ロールが存在しない場合、タイトルにエラーメッセージを表示させる * fix: Reactivity Transformで型エラーを出さないように * feat: i18n対応 * feat: タブでエラー表示 * fix: エラーメッセージを分ける * fix: 使う変数の間違えを修正 * productionビルドできない問題を修正 --------- Co-authored-by: tamaina --- locales/ja-JP.yml | 1 + packages/frontend/package.json | 1 + packages/frontend/src/pages/role.vue | 42 +++++++- packages/frontend/tsconfig.json | 2 + packages/frontend/vite.config.ts | 3 + pnpm-lock.yaml | 146 ++++++++++++++++++++++++--- 6 files changed, 177 insertions(+), 18 deletions(-) diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 02ebacbca0..6a164b67b0 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -943,6 +943,7 @@ didYouLikeMisskey: "Misskeyを気に入っていただけましたか?" pleaseDonate: "Misskeyは{host}が使用している無料のソフトウェアです。これからも開発を続けられるように、ぜひ寄付をお願いします!" roles: "ロール" role: "ロール" +noRole: "ロールはありません" normalUser: "一般ユーザー" undefined: "未定義" assign: "アサイン" diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 09ddfa4c51..5b1318fb1d 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -22,6 +22,7 @@ "@syuilo/aiscript": "0.13.1", "@tabler/icons-webfont": "2.16.0", "@vitejs/plugin-vue": "4.1.0", + "@vue-macros/reactivity-transform": "^0.3.5", "@vue/compiler-sfc": "3.2.47", "autosize": "5.0.2", "blurhash": "2.0.5", diff --git a/packages/frontend/src/pages/role.vue b/packages/frontend/src/pages/role.vue index f2645394a2..fe39c594ba 100644 --- a/packages/frontend/src/pages/role.vue +++ b/packages/frontend/src/pages/role.vue @@ -1,8 +1,16 @@ - + diff --git a/packages/frontend/tsconfig.json b/packages/frontend/tsconfig.json index 4d582daa3c..514b304246 100644 --- a/packages/frontend/tsconfig.json +++ b/packages/frontend/tsconfig.json @@ -27,10 +27,12 @@ }, "typeRoots": [ "node_modules/@types", + "node_modules/@vue-macros", "@types", ], "types": [ "vite/client", + "reactivity-transform/macros-global" ], "lib": [ "esnext", diff --git a/packages/frontend/vite.config.ts b/packages/frontend/vite.config.ts index 003a1fe4df..295380af82 100644 --- a/packages/frontend/vite.config.ts +++ b/packages/frontend/vite.config.ts @@ -2,6 +2,8 @@ import path from 'path'; import pluginReplace from '@rollup/plugin-replace'; import pluginVue from '@vitejs/plugin-vue'; import { type UserConfig, defineConfig } from 'vite'; +// @ts-expect-error https://github.com/sxzz/unplugin-vue-macros/issues/257#issuecomment-1410752890 +import ReactivityTransform from '@vue-macros/reactivity-transform/vite'; import locales from '../../locales'; import meta from '../../package.json'; @@ -46,6 +48,7 @@ export function getConfig(): UserConfig { pluginVue({ reactivityTransform: true, }), + ReactivityTransform(), pluginJson5(), ...process.env.NODE_ENV === 'production' ? [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c64ee66021..b183ff0785 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -609,6 +609,9 @@ importers: '@vitejs/plugin-vue': specifier: 4.1.0 version: 4.1.0(vite@4.2.2)(vue@3.2.47) + '@vue-macros/reactivity-transform': + specifier: ^0.3.5 + version: 0.3.5(rollup@3.20.6)(vue@3.2.47) '@vue/compiler-sfc': specifier: 3.2.47 version: 3.2.47 @@ -2057,7 +2060,7 @@ packages: '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.3) '@babel/helper-module-transforms': 7.21.2 '@babel/helpers': 7.21.0 - '@babel/parser': 7.21.3 + '@babel/parser': 7.21.4 '@babel/template': 7.20.7 '@babel/traverse': 7.21.3 '@babel/types': 7.21.4 @@ -2332,6 +2335,14 @@ packages: hasBin: true dependencies: '@babel/types': 7.21.4 + dev: true + + /@babel/parser@7.21.4: + resolution: {integrity: sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.21.4 /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.21.3): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} @@ -3308,7 +3319,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/parser': 7.21.3 + '@babel/parser': 7.21.4 '@babel/types': 7.21.4 dev: true @@ -3322,7 +3333,7 @@ packages: '@babel/helper-function-name': 7.21.0 '@babel/helper-hoist-variables': 7.18.6 '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.21.3 + '@babel/parser': 7.21.4 '@babel/types': 7.21.4 debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 @@ -5483,7 +5494,7 @@ packages: resolution: {integrity: sha512-xKOjuAlFuUOWO6JmhcEqUGTSGds9hbGSLYg0bh2BueWRvqhT3kvHqE4OKWmEfhfl4UDxIKbfEbJOxxVNni14gg==} dependencies: '@babel/generator': 7.21.3 - '@babel/parser': 7.21.3 + '@babel/parser': 7.21.4 '@babel/traverse': 7.21.3 '@babel/types': 7.21.4 '@storybook/csf': 0.1.0 @@ -6269,7 +6280,7 @@ packages: /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.21.3 + '@babel/parser': 7.21.4 '@babel/types': 7.21.4 dev: true @@ -7163,24 +7174,76 @@ packages: - typescript dev: true + /@vue-macros/common@1.3.0(rollup@3.20.6)(vue@3.2.47): + resolution: {integrity: sha512-oRK9vdKryXtJbfucRla8XdnQiWVVNHEBid0waacdfMJn+LOunWeU/3k8VoZZc328HmmZj69MGkUoMWixsHCHGg==} + engines: {node: '>=14.19.0'} + peerDependencies: + vue: ^2.7.0 || ^3.2.25 + peerDependenciesMeta: + vue: + optional: true + dependencies: + '@babel/types': 7.21.4 + '@rollup/pluginutils': 5.0.2(rollup@3.20.6) + '@vue/compiler-sfc': 3.3.0-beta.2 + local-pkg: 0.4.3 + magic-string-ast: 0.1.2 + vue: 3.2.47 + transitivePeerDependencies: + - rollup + dev: false + + /@vue-macros/reactivity-transform@0.3.5(rollup@3.20.6)(vue@3.2.47): + resolution: {integrity: sha512-HDWPMytAp32uC4aXuLITsBkxGI8yppmthGSSYJENXPvovnIctGV7q6mMNkr9cJMjyr6pjE1rv0y0Vc7SUhx/Xw==} + engines: {node: '>=14.19.0'} + peerDependencies: + vue: ^2.7.0 || ^3.2.25 + dependencies: + '@babel/parser': 7.21.4 + '@vue-macros/common': 1.3.0(rollup@3.20.6)(vue@3.2.47) + '@vue/compiler-core': 3.3.0-beta.2 + '@vue/shared': 3.3.0-beta.2 + magic-string: 0.30.0 + unplugin: 1.3.1 + vue: 3.2.47 + transitivePeerDependencies: + - rollup + dev: false + /@vue/compiler-core@3.2.47: resolution: {integrity: sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==} dependencies: - '@babel/parser': 7.21.3 + '@babel/parser': 7.21.4 '@vue/shared': 3.2.47 estree-walker: 2.0.2 source-map: 0.6.1 + /@vue/compiler-core@3.3.0-beta.2: + resolution: {integrity: sha512-Z2VZCL9Rr1gVgyALHIRP+lNFjgfs/K4aTxvJYQ2vhgEAaI0/L6wtG5sr/gOP+MgxwGQV0PvA+iDG3Y3PC7rTEg==} + dependencies: + '@babel/parser': 7.21.4 + '@vue/shared': 3.3.0-beta.2 + estree-walker: 2.0.2 + source-map-js: 1.0.2 + dev: false + /@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.2: + resolution: {integrity: sha512-9LPRdCj66OwmUiPa9nuKiaoyKxlFT56j+io8nK/aW5OLl1UkY//Lj661fmDkTY20oLmArt73fAuHD913w4hRqA==} + dependencies: + '@vue/compiler-core': 3.3.0-beta.2 + '@vue/shared': 3.3.0-beta.2 + dev: false + /@vue/compiler-sfc@2.7.14: resolution: {integrity: sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==} dependencies: - '@babel/parser': 7.21.3 + '@babel/parser': 7.21.4 postcss: 8.4.21 source-map: 0.6.1 dev: false @@ -7199,21 +7262,53 @@ packages: postcss: 8.4.21 source-map: 0.6.1 + /@vue/compiler-sfc@3.3.0-beta.2: + resolution: {integrity: sha512-5FmcQ5LIpM/Y22dTxnxWPD04jC2gr6XSVVqQNY0y776F1P9x4f06fIpMibL58aKU07Th2z4Ab3oPg/Cg1QNVmA==} + dependencies: + '@babel/parser': 7.21.4 + '@vue/compiler-core': 3.3.0-beta.2 + '@vue/compiler-dom': 3.3.0-beta.2 + '@vue/compiler-ssr': 3.3.0-beta.2 + '@vue/reactivity-transform': 3.3.0-beta.2 + '@vue/shared': 3.3.0-beta.2 + estree-walker: 2.0.2 + magic-string: 0.30.0 + postcss: 8.4.21 + source-map-js: 1.0.2 + dev: false + /@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.2: + resolution: {integrity: sha512-Xg9od6GvHwfEpnTxMQR+KlKG1nbOHWRLHCiSA0FENiSDTjCDHh0ClzZLhIZUZJD75miyE9ia5ZQF6vpw680rCw==} + dependencies: + '@vue/compiler-dom': 3.3.0-beta.2 + '@vue/shared': 3.3.0-beta.2 + dev: false + /@vue/reactivity-transform@3.2.47: resolution: {integrity: sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==} dependencies: - '@babel/parser': 7.21.3 + '@babel/parser': 7.21.4 '@vue/compiler-core': 3.2.47 '@vue/shared': 3.2.47 estree-walker: 2.0.2 magic-string: 0.25.9 + /@vue/reactivity-transform@3.3.0-beta.2: + resolution: {integrity: sha512-EUL53/rsd+hrqhCa/SrhXQ6PzMZJfLQt39xQlzr0Sxsdv/bg5lqbcK9YtGkjYohRuSp1QneFU78LEsQ9j4B2Dw==} + dependencies: + '@babel/parser': 7.21.4 + '@vue/compiler-core': 3.3.0-beta.2 + '@vue/shared': 3.3.0-beta.2 + estree-walker: 2.0.2 + magic-string: 0.30.0 + dev: false + /@vue/reactivity@3.2.47: resolution: {integrity: sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==} dependencies: @@ -7244,6 +7339,10 @@ packages: /@vue/shared@3.2.47: resolution: {integrity: sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==} + /@vue/shared@3.3.0-beta.2: + resolution: {integrity: sha512-AsHYKYiYUnL/LHog6iV/G9tctFZYOsaxHDbSnfeyip94rjndO46XSDbHek7wDlcj3NHGaf8jAQQKfva/7mypjA==} + dev: false + /@vue/test-utils@2.3.2(vue@3.2.47): resolution: {integrity: sha512-hJnVaYhbrIm0yBS0+e1Y0Sj85cMyAi+PAbK4JHqMRUZ6S622Goa+G7QzkRSyvCteG8wop7tipuEbHoZo26wsSA==} peerDependencies: @@ -9270,7 +9369,7 @@ packages: /constantinople@4.0.1: resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} dependencies: - '@babel/parser': 7.21.3 + '@babel/parser': 7.21.4 '@babel/types': 7.21.4 /content-disposition@0.5.4: @@ -12899,7 +12998,7 @@ packages: engines: {node: '>=8'} dependencies: '@babel/core': 7.21.3 - '@babel/parser': 7.21.3 + '@babel/parser': 7.21.4 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 @@ -13541,7 +13640,7 @@ packages: '@babel/preset-env': ^7.1.6 dependencies: '@babel/core': 7.21.3 - '@babel/parser': 7.21.3 + '@babel/parser': 7.21.4 '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.21.3) '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.21.3) '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.21.3) @@ -13938,7 +14037,6 @@ packages: /local-pkg@0.4.3: resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} - dev: true /locate-path@3.0.0: resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} @@ -14172,6 +14270,13 @@ packages: hasBin: true dev: true + /magic-string-ast@0.1.2: + resolution: {integrity: sha512-P53AZrzq7hclCU6HWj88xNZHmP15DKjMmK/vBytO1qnpYP3ul4IEZlyCE0aU3JRnmgWmZPmoTKj4Bls7v0pMyA==} + engines: {node: '>=14.19.0'} + dependencies: + magic-string: 0.30.0 + dev: false + /magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: @@ -14188,7 +14293,6 @@ packages: engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.14 - dev: true /mailcheck@1.1.1: resolution: {integrity: sha512-3WjL8+ZDouZwKlyJBMp/4LeziLFXgleOdsYu87piGcMLqhBzCsy2QFdbtAwv757TFC/rtqd738fgJw1tFQCSgA==} @@ -19021,6 +19125,15 @@ packages: webpack-virtual-modules: 0.4.6 dev: true + /unplugin@1.3.1: + resolution: {integrity: sha512-h4uUTIvFBQRxUKS2Wjys6ivoeofGhxzTe2sRWlooyjHXVttcVfV/JiavNd3d4+jty0SVV0dxGw9AkY9MwiaCEw==} + dependencies: + acorn: 8.8.2 + chokidar: 3.5.3 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.5.0 + dev: false + /unset-value@1.0.0: resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} engines: {node: '>=0.10.0'} @@ -19571,12 +19684,15 @@ packages: /webpack-sources@3.2.3: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} - dev: true /webpack-virtual-modules@0.4.6: resolution: {integrity: sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==} dev: true + /webpack-virtual-modules@0.5.0: + resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} + dev: false + /websocket@1.0.34: resolution: {integrity: sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==} engines: {node: '>=4.0.0'} @@ -19702,7 +19818,7 @@ packages: resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} engines: {node: '>= 10.0.0'} dependencies: - '@babel/parser': 7.21.3 + '@babel/parser': 7.21.4 '@babel/types': 7.21.4 assert-never: 1.2.1 babel-walk: 3.0.0-canary-5